{
  "id": "7d96c8fb904557eac1fad33010176724",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.8.7",
  "solcLongVersion": "0.8.7+commit.e28d00a7",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/deployer/MasterDeployer.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"../interfaces/IPoolFactory.sol\";\nimport \"../utils/TridentOwnable.sol\";\n\n/// @notice Trident pool deployer contract with template factory whitelist.\n/// @author Mudit Gupta.\ncontract MasterDeployer is TridentOwnable {\n    event DeployPool(address indexed factory, address indexed pool, bytes deployData);\n    event AddToWhitelist(address indexed factory);\n    event RemoveFromWhitelist(address indexed factory);\n    event BarFeeUpdated(uint256 indexed barFee);\n\n    uint256 public barFee;\n    address public immutable barFeeTo;\n    address public immutable bento;\n\n    uint256 internal constant MAX_FEE = 10000; // @dev 100%.\n\n    mapping(address => bool) public pools;\n    mapping(address => bool) public whitelistedFactories;\n\n    constructor(\n        uint256 _barFee,\n        address _barFeeTo,\n        address _bento\n    ) {\n        require(_barFee <= MAX_FEE, \"INVALID_BAR_FEE\");\n        require(_barFeeTo != address(0), \"ZERO_ADDRESS\");\n        require(_bento != address(0), \"ZERO_ADDRESS\");\n\n        barFee = _barFee;\n        barFeeTo = _barFeeTo;\n        bento = _bento;\n    }\n\n    function deployPool(address _factory, bytes calldata _deployData) external returns (address pool) {\n        require(whitelistedFactories[_factory], \"FACTORY_NOT_WHITELISTED\");\n        pool = IPoolFactory(_factory).deployPool(_deployData);\n        pools[pool] = true;\n        emit DeployPool(_factory, pool, _deployData);\n    }\n\n    function addToWhitelist(address _factory) external onlyOwner {\n        whitelistedFactories[_factory] = true;\n        emit AddToWhitelist(_factory);\n    }\n\n    function removeFromWhitelist(address _factory) external onlyOwner {\n        whitelistedFactories[_factory] = false;\n        emit RemoveFromWhitelist(_factory);\n    }\n\n    function setBarFee(uint256 _barFee) external onlyOwner {\n        require(_barFee <= MAX_FEE, \"INVALID_BAR_FEE\");\n        barFee = _barFee;\n        emit BarFeeUpdated(_barFee);\n    }\n}\n"
      },
      "contracts/interfaces/IPoolFactory.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\n/// @notice Trident pool deployment interface.\ninterface IPoolFactory {\n    function deployPool(bytes calldata _deployData) external returns (address pool);\n\n    function configAddress(bytes32 data) external returns (address pool);\n}\n"
      },
      "contracts/utils/TridentOwnable.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\n/// @notice Trident access control contract.\n/// @author Adapted from https://github.com/boringcrypto/BoringSolidity/blob/master/contracts/BoringOwnable.sol, License-Identifier: MIT.\ncontract TridentOwnable {\n    address public owner;\n    address public pendingOwner;\n\n    event TransferOwner(address indexed sender, address indexed recipient);\n    event TransferOwnerClaim(address indexed sender, address indexed recipient);\n\n    /// @notice Initialize and grant deployer account (`msg.sender`) `owner` access role.\n    constructor() {\n        owner = msg.sender;\n        emit TransferOwner(address(0), msg.sender);\n    }\n\n    /// @notice Access control modifier that requires modified function to be called by `owner` account.\n    modifier onlyOwner() {\n        require(msg.sender == owner, \"NOT_OWNER\");\n        _;\n    }\n\n    /// @notice `pendingOwner` can claim `owner` account.\n    function claimOwner() external {\n        require(msg.sender == pendingOwner, \"NOT_PENDING_OWNER\");\n        emit TransferOwner(owner, msg.sender);\n        owner = msg.sender;\n        pendingOwner = address(0);\n    }\n\n    /// @notice Transfer `owner` account.\n    /// @param recipient Account granted `owner` access control.\n    /// @param direct If 'true', ownership is directly transferred.\n    function transferOwner(address recipient, bool direct) external onlyOwner {\n        require(recipient != address(0), \"ZERO_ADDRESS\");\n        if (direct) {\n            owner = recipient;\n            emit TransferOwner(msg.sender, recipient);\n        } else {\n            pendingOwner = recipient;\n            emit TransferOwnerClaim(msg.sender, recipient);\n        }\n    }\n}\n"
      },
      "contracts/migration/TridentSushiRollCP.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity 0.8.7;\n\nimport \"../utils/TridentBatchable.sol\";\nimport \"../utils/TridentPermit.sol\";\nimport \"../interfaces/IBentoBoxMinimal.sol\";\nimport \"../interfaces/ITridentRouter.sol\";\nimport \"../interfaces/IMasterDeployer.sol\";\nimport \"../interfaces/IPoolFactory.sol\";\nimport \"../interfaces/IUniswapV2Minimal.sol\";\nimport \"../interfaces/IPool.sol\";\n\n/// @notice Liquidity migrator from UniV2 style pool to Trident Constant product pool.\ncontract TridentSushiRollCP is TridentBatchable, TridentPermit {\n    error MinimumOutput();\n\n    IBentoBoxMinimal internal immutable bentoBox;\n    IPoolFactory internal immutable poolFactory;\n    IMasterDeployer internal immutable masterDeployer;\n\n    constructor(\n        IBentoBoxMinimal _bentoBox,\n        IPoolFactory _poolFactory,\n        IMasterDeployer _masterDeployer\n    ) {\n        bentoBox = _bentoBox;\n        poolFactory = _poolFactory;\n        masterDeployer = _masterDeployer;\n    }\n\n    /** @notice Function to migrate existing Sushiswap or other Uniswap V2 style pools to Trident.\n        @param pair Uniswap V2 style liquidity pool address.\n        @param amount Liquidity amount (Lp token balance) to be migrated.\n        @param swapFee Swap fee of the Trident CP pool we are migrating into.\n        @param twapSupport Whether the Trident CP pool we are migrating into supports twap oracles.\n        @param minReceived Slippage protection for minting liquidity on the Trident CP pool.\n        @dev If the pool with the current conditions doesn't exist it will be deployed. */\n    function migrate(\n        IUniswapV2Minimal pair,\n        uint256 amount,\n        uint256 swapFee,\n        bool twapSupport,\n        uint256 minReceived\n    ) external returns (uint256 liquidity) {\n        address token0 = pair.token0();\n        address token1 = pair.token1();\n\n        bytes memory poolData = abi.encode(token0, token1, swapFee, twapSupport);\n        address tridentPool = poolFactory.configAddress(keccak256(poolData));\n\n        if (tridentPool == address(0)) {\n            tridentPool = masterDeployer.deployPool(address(poolFactory), poolData);\n        }\n\n        pair.transferFrom(msg.sender, address(pair), amount);\n        (uint256 amount0, uint256 amount1) = pair.burn(address(bentoBox));\n\n        bentoBox.deposit(token0, address(bentoBox), tridentPool, amount0, 0);\n        bentoBox.deposit(token1, address(bentoBox), tridentPool, amount1, 0);\n\n        liquidity = IPool(tridentPool).mint(abi.encode(msg.sender));\n\n        if (liquidity < minReceived) revert MinimumOutput();\n    }\n}\n"
      },
      "contracts/utils/TridentBatchable.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\n/// @notice Generic contract exposing the batch call functionality.\nabstract contract TridentBatchable {\n    /// @notice Provides batch function calls for this contract and returns the data from all of them if they all succeed.\n    /// Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\n    /// @dev The `msg.value` should not be trusted for any method callable from this function.\n    /// @param data ABI-encoded params for each of the calls to make to this contract.\n    /// @return results The results from each of the calls passed in via `data`.\n    function batch(bytes[] calldata data) external payable returns (bytes[] memory results) {\n        results = new bytes[](data.length);\n\n        for (uint256 i = 0; i < data.length; i++) {\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\n\n            if (!success) {\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577\n                if (result.length < 68) revert();\n                assembly {\n                    result := add(result, 0x04)\n                }\n                revert(abi.decode(result, (string)));\n            }\n\n            results[i] = result;\n        }\n    }\n}\n"
      },
      "contracts/utils/TridentPermit.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\n/// @notice Generic contract exposing the permit functionality.\nabstract contract TridentPermit {\n    error PermitFailed();\n\n    /// @notice Provides EIP-2612 signed approval for this contract to spend user tokens.\n    /// @param token Address of ERC-20 token.\n    /// @param amount Token amount to grant spending right over.\n    /// @param deadline Termination for signed approval (UTC timestamp in seconds).\n    /// @param v The recovery byte of the signature.\n    /// @param r Half of the ECDSA signature pair.\n    /// @param s Half of the ECDSA signature pair.\n    function permitThis(\n        address token,\n        uint256 amount,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external {\n        (bool success, ) = token.call(abi.encodeWithSelector(0xd505accf, msg.sender, address(this), amount, deadline, v, r, s)); // permit(address,address,uint256,uint256,uint8,bytes32,bytes32).\n        if (!success) revert PermitFailed();\n    }\n\n    /// @notice Provides DAI-derived signed approval for this contract to spend user tokens.\n    /// @param token Address of ERC-20 token.\n    /// @param nonce Token owner's nonce - increases at each call to {permit}.\n    /// @param expiry Termination for signed approval - UTC timestamp in seconds.\n    /// @param v The recovery byte of the signature.\n    /// @param r Half of the ECDSA signature pair.\n    /// @param s Half of the ECDSA signature pair.\n    function permitThisAllowed(\n        address token,\n        uint256 nonce,\n        uint256 expiry,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external {\n        (bool success, ) = token.call(abi.encodeWithSelector(0x8fcbaf0c, msg.sender, address(this), nonce, expiry, true, v, r, s)); // permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32).\n        if (!success) revert PermitFailed();\n    }\n}\n"
      },
      "contracts/interfaces/IBentoBoxMinimal.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\nimport \"../libraries/RebaseLibrary.sol\";\n\n/// @notice Minimal BentoBox vault interface.\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\ninterface IBentoBoxMinimal {\n    /// @notice Balance per ERC-20 token per account in shares.\n    function balanceOf(address, address) external view returns (uint256);\n\n    /// @dev Helper function to represent an `amount` of `token` in shares.\n    /// @param token The ERC-20 token.\n    /// @param amount The `token` amount.\n    /// @param roundUp If the result `share` should be rounded up.\n    /// @return share The token amount represented in shares.\n    function toShare(\n        address token,\n        uint256 amount,\n        bool roundUp\n    ) external view returns (uint256 share);\n\n    /// @dev Helper function to represent shares back into the `token` amount.\n    /// @param token The ERC-20 token.\n    /// @param share The amount of shares.\n    /// @param roundUp If the result should be rounded up.\n    /// @return amount The share amount back into native representation.\n    function toAmount(\n        address token,\n        uint256 share,\n        bool roundUp\n    ) external view returns (uint256 amount);\n\n    /// @notice Registers this contract so that users can approve it for BentoBox.\n    function registerProtocol() external;\n\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\n    /// @param token The ERC-20 token to deposit.\n    /// @param from which account to pull the tokens.\n    /// @param to which account to push the tokens.\n    /// @param amount Token amount in native representation to deposit.\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\n    /// @return amountOut The amount deposited.\n    /// @return shareOut The deposited amount represented in shares.\n    function deposit(\n        address token,\n        address from,\n        address to,\n        uint256 amount,\n        uint256 share\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\n\n    /// @notice Withdraws an amount of `token` from a user account.\n    /// @param token_ The ERC-20 token to withdraw.\n    /// @param from which user to pull the tokens.\n    /// @param to which user to push the tokens.\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\n    /// @param share Like above, but `share` takes precedence over `amount`.\n    function withdraw(\n        address token_,\n        address from,\n        address to,\n        uint256 amount,\n        uint256 share\n    ) external returns (uint256 amountOut, uint256 shareOut);\n\n    /// @notice Transfer shares from a user account to another one.\n    /// @param token The ERC-20 token to transfer.\n    /// @param from which user to pull the tokens.\n    /// @param to which user to push the tokens.\n    /// @param share The amount of `token` in shares.\n    function transfer(\n        address token,\n        address from,\n        address to,\n        uint256 share\n    ) external;\n\n    /// @dev Reads the Rebase `totals`from storage for a given token\n    function totals(address token) external view returns (Rebase memory total);\n\n    /// @dev Approves users' BentoBox assets to a \"master\" contract.\n    function setMasterContractApproval(\n        address user,\n        address masterContract,\n        bool approved,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external;\n}\n"
      },
      "contracts/interfaces/ITridentRouter.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\n/// @notice Trident pool router interface.\ninterface ITridentRouter {\n    struct Path {\n        address pool;\n        bytes data;\n    }\n\n    struct ExactInputSingleParams {\n        uint256 amountIn;\n        uint256 amountOutMinimum;\n        address pool;\n        address tokenIn;\n        bytes data;\n    }\n\n    struct ExactInputParams {\n        address tokenIn;\n        uint256 amountIn;\n        uint256 amountOutMinimum;\n        Path[] path;\n    }\n\n    struct TokenInput {\n        address token;\n        bool native;\n        uint256 amount;\n    }\n\n    struct InitialPath {\n        address tokenIn;\n        address pool;\n        bool native;\n        uint256 amount;\n        bytes data;\n    }\n\n    struct PercentagePath {\n        address tokenIn;\n        address pool;\n        uint64 balancePercentage; // Multiplied by 10^6. 100% = 100_000_000\n        bytes data;\n    }\n\n    struct Output {\n        address token;\n        address to;\n        bool unwrapBento;\n        uint256 minAmount;\n    }\n\n    struct ComplexPathParams {\n        InitialPath[] initialPath;\n        PercentagePath[] percentagePath;\n        Output[] output;\n    }\n}\n"
      },
      "contracts/interfaces/IMasterDeployer.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\n/// @notice Trident pool deployer interface.\ninterface IMasterDeployer {\n    function barFee() external view returns (uint256);\n\n    function barFeeTo() external view returns (address);\n\n    function bento() external view returns (address);\n\n    function migrator() external view returns (address);\n\n    function pools(address pool) external view returns (bool);\n\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\n}\n"
      },
      "contracts/interfaces/IUniswapV2Minimal.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"./IERC20.sol\";\n\n/// @notice Minimal Uniswap V2 LP interface.\ninterface IUniswapV2Minimal is IERC20 {\n    function token0() external view returns (address);\n\n    function token1() external view returns (address);\n\n    function burn(address to) external returns (uint256 amount0, uint256 amount1);\n}\n"
      },
      "contracts/interfaces/IPool.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.5.0;\npragma experimental ABIEncoderV2;\n\n/// @notice Trident pool interface.\ninterface IPool {\n    /// @notice Executes a swap from one token to another.\n    /// @dev The input tokens must've already been sent to the pool.\n    /// @param data ABI-encoded params that the pool requires.\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\n\n    /// @notice Executes a swap from one token to another with a callback.\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\n    /// @param data ABI-encoded params that the pool requires.\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\n\n    /// @notice Mints liquidity tokens.\n    /// @param data ABI-encoded params that the pool requires.\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\n    function mint(bytes calldata data) external returns (uint256 liquidity);\n\n    /// @notice Burns liquidity tokens.\n    /// @dev The input LP tokens must've already been sent to the pool.\n    /// @param data ABI-encoded params that the pool requires.\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\n\n    /// @notice Burns liquidity tokens for a single output token.\n    /// @dev The input LP tokens must've already been sent to the pool.\n    /// @param data ABI-encoded params that the pool requires.\n    /// @return amountOut The amount of output tokens that were sent to the user.\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\n\n    /// @return A unique identifier for the pool type.\n    function poolIdentifier() external pure returns (bytes32);\n\n    /// @return An array of tokens supported by the pool.\n    function getAssets() external view returns (address[] memory);\n\n    /// @notice Simulates a trade and returns the expected output.\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\n    /// @param data ABI-encoded params that the pool requires.\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\n\n    /// @notice Simulates a trade and returns the expected output.\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\n    /// @param data ABI-encoded params that the pool requires.\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\n\n    /// @dev This event must be emitted on all swaps.\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\n\n    /// @dev This struct frames output tokens for burns.\n    struct TokenAmount {\n        address token;\n        uint256 amount;\n    }\n}\n"
      },
      "contracts/libraries/RebaseLibrary.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8;\n\nstruct Rebase {\n    uint128 elastic;\n    uint128 base;\n}\n\n/// @notice A rebasing library\nlibrary RebaseLibrary {\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\n        if (total.elastic == 0) {\n            base = elastic;\n        } else {\n            base = (elastic * total.base) / total.elastic;\n        }\n    }\n\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\n        if (total.base == 0) {\n            elastic = base;\n        } else {\n            elastic = (base * total.elastic) / total.base;\n        }\n    }\n}\n"
      },
      "contracts/interfaces/IERC20.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\n/// @dev Use a library or custom safeTransfer{From} functions when dealing with unknown tokens!\ninterface IERC20 {\n    function balanceOf(address account) external view returns (uint256);\n\n    function totalSupply() external view returns (uint256);\n\n    function transferFrom(\n        address sender,\n        address recipient,\n        uint256 amount\n    ) external returns (bool);\n\n    function transfer(address recipient, uint256 amount) external returns (bool);\n\n    function approve(address spender, uint256 amount) external returns (bool);\n}\n"
      },
      "contracts/TridentRouter.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"./interfaces/IPool.sol\";\nimport \"./interfaces/ITridentRouter.sol\";\nimport \"./utils/RouterHelper.sol\";\n\n/// @notice Router contract that helps in swapping across Trident pools.\ncontract TridentRouter is ITridentRouter, RouterHelper {\n    /// @dev Used to ensure that `tridentSwapCallback` is called only by the authorized address.\n    /// These are set when someone calls a flash swap and reset afterwards.\n    address internal cachedMsgSender;\n    address internal cachedPool;\n\n    mapping(address => bool) internal whitelistedPools;\n\n    constructor(\n        IBentoBoxMinimal bento,\n        IMasterDeployer masterDeployer,\n        address wETH\n    ) RouterHelper(bento, masterDeployer, wETH) {}\n\n    receive() external payable {\n        require(msg.sender == wETH);\n    }\n\n    /// @notice Swaps token A to token B directly. Swaps are done on `bento` tokens.\n    /// @param params This includes the address of token A, pool, amount of token A to swap,\n    /// minimum amount of token B after the swap and data required by the pool for the swap.\n    /// @dev Ensure that the pool is trusted before calling this function. The pool can steal users' tokens.\n    function exactInputSingle(ExactInputSingleParams calldata params) public payable returns (uint256 amountOut) {\n        // @dev Prefund the pool with token A.\n        bento.transfer(params.tokenIn, msg.sender, params.pool, params.amountIn);\n        // @dev Trigger the swap in the pool.\n        amountOut = IPool(params.pool).swap(params.data);\n        // @dev Ensure that the slippage wasn't too much. This assumes that the pool is honest.\n        require(amountOut >= params.amountOutMinimum, \"TOO_LITTLE_RECEIVED\");\n    }\n\n    /// @notice Swaps token A to token B indirectly by using multiple hops.\n    /// @param params This includes the addresses of the tokens, pools, amount of token A to swap,\n    /// minimum amount of token B after the swap and data required by the pools for the swaps.\n    /// @dev Ensure that the pools are trusted before calling this function. The pools can steal users' tokens.\n    function exactInput(ExactInputParams calldata params) public payable returns (uint256 amountOut) {\n        // @dev Pay the first pool directly.\n        bento.transfer(params.tokenIn, msg.sender, params.path[0].pool, params.amountIn);\n        // @dev Call every pool in the path.\n        // Pool `N` should transfer its output tokens to pool `N+1` directly.\n        // The last pool should transfer its output tokens to the user.\n        // If the user wants to unwrap `wETH`, the final destination should be this contract and\n        // a batch call should be made to `unwrapWETH`.\n        for (uint256 i; i < params.path.length; i++) {\n            // We don't necessarily need this check but saving users from themselves.\n            isWhiteListed(params.path[i].pool);\n            amountOut = IPool(params.path[i].pool).swap(params.path[i].data);\n        }\n        // @dev Ensure that the slippage wasn't too much. This assumes that the pool is honest.\n        require(amountOut >= params.amountOutMinimum, \"TOO_LITTLE_RECEIVED\");\n    }\n\n    /// @notice Swaps token A to token B by using callbacks.\n    /// @param path Addresses of the pools and data required by the pools for the swaps.\n    /// @param amountOutMinimum Minimum amount of token B after the swap.\n    /// @dev Ensure that the pools are trusted before calling this function. The pools can steal users' tokens.\n    /// This function will unlikely be used in production but it shows how to use callbacks. One use case will be arbitrage.\n    function exactInputLazy(uint256 amountOutMinimum, Path[] calldata path) public payable returns (uint256 amountOut) {\n        // @dev Call every pool in the path.\n        // Pool `N` should transfer its output tokens to pool `N+1` directly.\n        // The last pool should transfer its output tokens to the user.\n        for (uint256 i; i < path.length; i++) {\n            isWhiteListed(path[i].pool);\n            // @dev The cached `msg.sender` is used as the funder when the callback happens.\n            cachedMsgSender = msg.sender;\n            // @dev The cached pool must be the address that calls the callback.\n            cachedPool = path[i].pool;\n            amountOut = IPool(path[i].pool).flashSwap(path[i].data);\n        }\n        // @dev Resets the `cachedPool` to get a refund.\n        // `1` is used as the default value to avoid the storage slot being released.\n        cachedMsgSender = address(1);\n        cachedPool = address(1);\n        require(amountOut >= amountOutMinimum, \"TOO_LITTLE_RECEIVED\");\n    }\n\n    /// @notice Swaps token A to token B directly. It's the same as `exactInputSingle` except\n    /// it takes raw ERC-20 tokens from the users and deposits them into `bento`.\n    /// @param params This includes the address of token A, pool, amount of token A to swap,\n    /// minimum amount of token B after the swap and data required by the pool for the swap.\n    /// @dev Ensure that the pool is trusted before calling this function. The pool can steal users' tokens.\n    function exactInputSingleWithNativeToken(ExactInputSingleParams calldata params) public payable returns (uint256 amountOut) {\n        // @dev Deposits the native ERC-20 token from the user into the pool's `bento`.\n        _depositToBentoBox(params.tokenIn, params.pool, params.amountIn);\n        // @dev Trigger the swap in the pool.\n        amountOut = IPool(params.pool).swap(params.data);\n        // @dev Ensure that the slippage wasn't too much. This assumes that the pool is honest.\n        require(amountOut >= params.amountOutMinimum, \"TOO_LITTLE_RECEIVED\");\n    }\n\n    /// @notice Swaps token A to token B indirectly by using multiple hops. It's the same as `exactInput` except\n    /// it takes raw ERC-20 tokens from the users and deposits them into `bento`.\n    /// @param params This includes the addresses of the tokens, pools, amount of token A to swap,\n    /// minimum amount of token B after the swap and data required by the pools for the swaps.\n    /// @dev Ensure that the pools are trusted before calling this function. The pools can steal users' tokens.\n    function exactInputWithNativeToken(ExactInputParams calldata params) public payable returns (uint256 amountOut) {\n        // @dev Deposits the native ERC-20 token from the user into the pool's `bento`.\n        _depositToBentoBox(params.tokenIn, params.path[0].pool, params.amountIn);\n        // @dev Call every pool in the path.\n        // Pool `N` should transfer its output tokens to pool `N+1` directly.\n        // The last pool should transfer its output tokens to the user.\n        for (uint256 i; i < params.path.length; i++) {\n            isWhiteListed(params.path[i].pool);\n            amountOut = IPool(params.path[i].pool).swap(params.path[i].data);\n        }\n        // @dev Ensure that the slippage wasn't too much. This assumes that the pool is honest.\n        require(amountOut >= params.amountOutMinimum, \"TOO_LITTLE_RECEIVED\");\n    }\n\n    /// @notice Swaps multiple input tokens to multiple output tokens using multiple paths, in different percentages.\n    /// For example, you can swap 50 DAI + 100 USDC into 60% ETH and 40% BTC.\n    /// @param params This includes everything needed for the swap. Look at the `ComplexPathParams` struct for more details.\n    /// @dev This function is not optimized for single swaps and should only be used in complex cases where\n    /// the amounts are large enough that minimizing slippage by using multiple paths is worth the extra gas.\n    function complexPath(ComplexPathParams calldata params) public payable {\n        // @dev Deposit all initial tokens to respective pools and initiate the swaps.\n        // Input tokens come from the user - output goes to following pools.\n        for (uint256 i; i < params.initialPath.length; i++) {\n            if (params.initialPath[i].native) {\n                _depositToBentoBox(params.initialPath[i].tokenIn, params.initialPath[i].pool, params.initialPath[i].amount);\n            } else {\n                bento.transfer(params.initialPath[i].tokenIn, msg.sender, params.initialPath[i].pool, params.initialPath[i].amount);\n            }\n            isWhiteListed(params.initialPath[i].pool);\n            IPool(params.initialPath[i].pool).swap(params.initialPath[i].data);\n        }\n        // @dev Do all the middle swaps. Input comes from previous pools - output goes to following pools.\n        for (uint256 i; i < params.percentagePath.length; i++) {\n            uint256 balanceShares = bento.balanceOf(params.percentagePath[i].tokenIn, address(this));\n            uint256 transferShares = (balanceShares * params.percentagePath[i].balancePercentage) / uint256(10)**8;\n            bento.transfer(params.percentagePath[i].tokenIn, address(this), params.percentagePath[i].pool, transferShares);\n            isWhiteListed(params.percentagePath[i].pool);\n            IPool(params.percentagePath[i].pool).swap(params.percentagePath[i].data);\n        }\n        // @dev Do all the final swaps. Input comes from previous pools - output goes to the user.\n        for (uint256 i; i < params.output.length; i++) {\n            uint256 balanceShares = bento.balanceOf(params.output[i].token, address(this));\n            require(balanceShares >= params.output[i].minAmount, \"TOO_LITTLE_RECEIVED\");\n            if (params.output[i].unwrapBento) {\n                bento.withdraw(params.output[i].token, address(this), params.output[i].to, 0, balanceShares);\n            } else {\n                bento.transfer(params.output[i].token, address(this), params.output[i].to, balanceShares);\n            }\n        }\n    }\n\n    /// @notice Add liquidity to a pool.\n    /// @param tokenInput Token address and amount to add as liquidity.\n    /// @param pool Pool address to add liquidity to.\n    /// @param minLiquidity Minimum output liquidity - caps slippage.\n    /// @param data Data required by the pool to add liquidity.\n    function addLiquidity(\n        TokenInput[] memory tokenInput,\n        address pool,\n        uint256 minLiquidity,\n        bytes calldata data\n    ) public payable returns (uint256 liquidity) {\n        isWhiteListed(pool);\n        // @dev Send all input tokens to the pool.\n        for (uint256 i; i < tokenInput.length; i++) {\n            if (tokenInput[i].native) {\n                _depositToBentoBox(tokenInput[i].token, pool, tokenInput[i].amount);\n            } else {\n                bento.transfer(tokenInput[i].token, msg.sender, pool, tokenInput[i].amount);\n            }\n        }\n        liquidity = IPool(pool).mint(data);\n        require(liquidity >= minLiquidity, \"NOT_ENOUGH_LIQUIDITY_MINTED\");\n    }\n\n    /// @notice Add liquidity to a pool using callbacks - same as `addLiquidity`, but now with callbacks.\n    /// @dev The input tokens are sent to the pool during the callback.\n    function addLiquidityLazy(\n        address pool,\n        uint256 minLiquidity,\n        bytes calldata data\n    ) public payable returns (uint256 liquidity) {\n        isWhiteListed(pool);\n        cachedMsgSender = msg.sender;\n        cachedPool = pool;\n        liquidity = IPool(pool).mint(data);\n        cachedMsgSender = address(1);\n        cachedPool = address(1);\n        require(liquidity >= minLiquidity, \"NOT_ENOUGH_LIQUIDITY_MINTED\");\n    }\n\n    /// @notice Burn liquidity tokens to get back `bento` tokens.\n    /// @param pool Pool address.\n    /// @param liquidity Amount of liquidity tokens to burn.\n    /// @param data Data required by the pool to burn liquidity.\n    /// @param minWithdrawals Minimum amount of `bento` tokens to be returned.\n    function burnLiquidity(\n        address pool,\n        uint256 liquidity,\n        bytes calldata data,\n        IPool.TokenAmount[] memory minWithdrawals\n    ) public {\n        isWhiteListed(pool);\n        safeTransferFrom(pool, msg.sender, pool, liquidity);\n        IPool.TokenAmount[] memory withdrawnLiquidity = IPool(pool).burn(data);\n        for (uint256 i; i < minWithdrawals.length; i++) {\n            uint256 j;\n            for (; j < withdrawnLiquidity.length; j++) {\n                if (withdrawnLiquidity[j].token == minWithdrawals[i].token) {\n                    require(withdrawnLiquidity[j].amount >= minWithdrawals[i].amount, \"TOO_LITTLE_RECEIVED\");\n                    break;\n                }\n            }\n            // @dev A token that is present in `minWithdrawals` is missing from `withdrawnLiquidity`.\n            require(j < withdrawnLiquidity.length, \"INCORRECT_TOKEN_WITHDRAWN\");\n        }\n    }\n\n    /// @notice Burn liquidity tokens to get back `bento` tokens.\n    /// @dev The tokens are swapped automatically and the output is in a single token.\n    /// @param pool Pool address.\n    /// @param liquidity Amount of liquidity tokens to burn.\n    /// @param data Data required by the pool to burn liquidity.\n    /// @param minWithdrawal Minimum amount of tokens to be returned.\n    function burnLiquiditySingle(\n        address pool,\n        uint256 liquidity,\n        bytes calldata data,\n        uint256 minWithdrawal\n    ) public {\n        isWhiteListed(pool);\n        // @dev Use 'liquidity = 0' for prefunding.\n        safeTransferFrom(pool, msg.sender, pool, liquidity);\n        uint256 withdrawn = IPool(pool).burnSingle(data);\n        require(withdrawn >= minWithdrawal, \"TOO_LITTLE_RECEIVED\");\n    }\n\n    /// @notice Used by the pool 'flashSwap' functionality to take input tokens from the user.\n    function tridentSwapCallback(bytes calldata data) external {\n        require(msg.sender == cachedPool, \"UNAUTHORIZED_CALLBACK\");\n        TokenInput memory tokenInput = abi.decode(data, (TokenInput));\n        // @dev Transfer the requested tokens to the pool.\n        if (tokenInput.native) {\n            _depositFromUserToBentoBox(tokenInput.token, cachedMsgSender, msg.sender, tokenInput.amount);\n        } else {\n            bento.transfer(tokenInput.token, cachedMsgSender, msg.sender, tokenInput.amount);\n        }\n        // @dev Resets the `msg.sender`'s authorization.\n        cachedMsgSender = address(1);\n    }\n\n    /// @notice Can be used by the pool 'mint' functionality to take tokens from the user.\n    function tridentMintCallback(bytes calldata data) external {\n        require(msg.sender == cachedPool, \"UNAUTHORIZED_CALLBACK\");\n        TokenInput[] memory tokenInput = abi.decode(data, (TokenInput[]));\n        // @dev Transfer the requested tokens to the pool.\n        for (uint256 i; i < tokenInput.length; i++) {\n            if (tokenInput[i].native) {\n                _depositFromUserToBentoBox(tokenInput[i].token, cachedMsgSender, msg.sender, tokenInput[i].amount);\n            } else {\n                bento.transfer(tokenInput[i].token, cachedMsgSender, msg.sender, tokenInput[i].amount);\n            }\n        }\n        // @dev Resets the `msg.sender`'s authorization.\n        cachedMsgSender = address(1);\n    }\n\n    /// @notice Recover mistakenly sent `bento` tokens.\n    function sweepBentoBoxToken(\n        address token,\n        uint256 amount,\n        address recipient\n    ) external {\n        bento.transfer(token, address(this), recipient, amount);\n    }\n\n    /// @notice Recover mistakenly sent ERC-20 tokens.\n    function sweepNativeToken(\n        address token,\n        uint256 amount,\n        address recipient\n    ) external {\n        safeTransfer(token, recipient, amount);\n    }\n\n    /// @notice Recover mistakenly sent ETH.\n    function refundETH() external payable {\n        if (address(this).balance != 0) safeTransferETH(msg.sender, address(this).balance);\n    }\n\n    /// @notice Unwrap this contract's `wETH` into ETH\n    function unwrapWETH(uint256 amountMinimum, address recipient) external {\n        uint256 balanceWETH = balanceOfThis(wETH);\n        require(balanceWETH >= amountMinimum, \"INSUFFICIENT_WETH\");\n        if (balanceWETH != 0) {\n            withdrawFromWETH(balanceWETH);\n            safeTransferETH(recipient, balanceWETH);\n        }\n    }\n\n    /// @notice Deposit from the user's wallet into BentoBox.\n    /// @dev Amount is the native token amount. We let BentoBox do the conversion into shares.\n    function _depositToBentoBox(\n        address token,\n        address recipient,\n        uint256 amount\n    ) internal {\n        bento.deposit{value: token == USE_ETHEREUM ? amount : 0}(token, msg.sender, recipient, amount, 0);\n    }\n\n    /// @notice Same effect as _depositToBentoBox() but with a sender parameter.\n    function _depositFromUserToBentoBox(\n        address token,\n        address sender,\n        address recipient,\n        uint256 amount\n    ) internal {\n        bento.deposit{value: token == USE_ETHEREUM ? amount : 0}(token, sender, recipient, amount, 0);\n    }\n\n    function isWhiteListed(address pool) internal {\n        if (!whitelistedPools[pool]) {\n            require(masterDeployer.pools(pool), \"INVALID POOL\");\n            whitelistedPools[pool] = true;\n        }\n    }\n}\n"
      },
      "contracts/utils/RouterHelper.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"../interfaces/IBentoBoxMinimal.sol\";\nimport \"../interfaces/IMasterDeployer.sol\";\nimport \"../TridentRouter.sol\";\nimport \"./TridentPermit.sol\";\n\n/// @notice Trident router helper contract.\ncontract RouterHelper is TridentPermit {\n    /// @notice BentoBox token vault.\n    IBentoBoxMinimal public immutable bento;\n    /// @notice Trident AMM master deployer contract.\n    IMasterDeployer public immutable masterDeployer;\n    /// @notice ERC-20 token for wrapped ETH (v9).\n    address internal immutable wETH;\n    /// @notice The user should use 0x0 if they want to deposit ETH\n    address constant USE_ETHEREUM = address(0);\n\n    constructor(\n        IBentoBoxMinimal _bento,\n        IMasterDeployer _masterDeployer,\n        address _wETH\n    ) {\n        bento = _bento;\n        masterDeployer = _masterDeployer;\n        wETH = _wETH;\n        _bento.registerProtocol();\n    }\n\n    /// @notice Provides batch function calls for this contract and returns the data from all of them if they all succeed.\n    /// Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\n    /// @dev The `msg.value` should not be trusted for any method callable from this function.\n    /// @dev Uses a modified version of the batch function - preventing multiple calls of the single input swap functions\n    /// @param data ABI-encoded params for each of the calls to make to this contract.\n    /// @return results The results from each of the calls passed in via `data`.\n    function batch(bytes[] calldata data) external payable returns (bytes[] memory results) {\n        results = new bytes[](data.length);\n        // We only allow one exactInputSingle call to be made in a single batch call.\n        // This is not really needed but we want to save users from signing malicious payloads.\n        // We also don't want nested batch calls.\n        bool swapCalled;\n        for (uint256 i = 0; i < data.length; i++) {\n            bytes4 selector = getSelector(data[i]);\n            if (selector == TridentRouter.exactInputSingle.selector || selector == TridentRouter.exactInputSingleWithNativeToken.selector) {\n                require(!swapCalled, \"Swap called twice\");\n                swapCalled = true;\n            } else {\n                require(selector != this.batch.selector, \"Nested Batch\");\n            }\n\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\n            if (!success) {\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577.\n                if (result.length < 68) revert();\n                assembly {\n                    result := add(result, 0x04)\n                }\n                revert(abi.decode(result, (string)));\n            }\n            results[i] = result;\n        }\n    }\n\n    function deployPool(address factory, bytes calldata deployData) external payable returns (address) {\n        return masterDeployer.deployPool(factory, deployData);\n    }\n\n    /// @notice Helper function to allow batching of BentoBox master contract approvals so the first trade can happen in one transaction.\n    function approveMasterContract(\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external payable {\n        bento.setMasterContractApproval(msg.sender, address(this), true, v, r, s);\n    }\n\n    /// @notice Provides gas-optimized balance check on this contract to avoid redundant extcodesize check in addition to returndatasize check.\n    /// @param token Address of ERC-20 token.\n    /// @return balance Token amount held by this contract.\n    function balanceOfThis(address token) internal view returns (uint256 balance) {\n        (bool success, bytes memory data) = token.staticcall(abi.encodeWithSelector(0x70a08231, address(this))); // @dev balanceOf(address).\n        require(success && data.length >= 32, \"BALANCE_OF_FAILED\");\n        balance = abi.decode(data, (uint256));\n    }\n\n    /// @notice Provides 'safe' ERC-20 {transfer} for tokens that don't consistently return true/false.\n    /// @param token Address of ERC-20 token.\n    /// @param recipient Account to send tokens to.\n    /// @param amount Token amount to send.\n    function safeTransfer(\n        address token,\n        address recipient,\n        uint256 amount\n    ) internal {\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, recipient, amount)); // @dev transfer(address,uint256).\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \"TRANSFER_FAILED\");\n    }\n\n    /// @notice Provides 'safe' ERC-20 {transferFrom} for tokens that don't consistently return true/false.\n    /// @param token Address of ERC-20 token.\n    /// @param sender Account to send tokens from.\n    /// @param recipient Account to send tokens to.\n    /// @param amount Token amount to send.\n    function safeTransferFrom(\n        address token,\n        address sender,\n        address recipient,\n        uint256 amount\n    ) internal {\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, sender, recipient, amount)); // @dev transferFrom(address,address,uint256).\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \"TRANSFER_FROM_FAILED\");\n    }\n\n    /// @notice Provides low-level `wETH` {withdraw}.\n    /// @param amount Token amount to unwrap into ETH.\n    function withdrawFromWETH(uint256 amount) internal {\n        (bool success, ) = wETH.call(abi.encodeWithSelector(0x2e1a7d4d, amount)); // @dev withdraw(uint256).\n        require(success, \"WITHDRAW_FROM_WETH_FAILED\");\n    }\n\n    /// @notice Provides 'safe' ETH transfer.\n    /// @param recipient Account to send ETH to.\n    /// @param amount ETH amount to send.\n    function safeTransferETH(address recipient, uint256 amount) internal {\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        require(success, \"ETH_TRANSFER_FAILED\");\n    }\n\n    /**\n     * @notice function to extract the selector of a bytes calldata\n     * @param _data the calldata bytes\n     */\n    function getSelector(bytes memory _data) internal pure returns (bytes4 sig) {\n        assembly {\n            sig := mload(add(_data, 32))\n        }\n    }\n}\n"
      },
      "contracts/migration/TridentSushiRollReference.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"../utils/TridentBatchable.sol\";\nimport \"../utils/TridentPermit.sol\";\n\n/// @notice Interface for handling Balancer V1 LP.\ninterface IBalancerV1 {\n    function getFinalTokens() external view returns (address[] memory);\n\n    function exitPool(uint256 poolAmountIn, uint256[] calldata minAmountsOut) external;\n}\n\n/// @notice Interface for handling Balancer V2 LP - `assets` aliased to address for code simplicity.\ninterface IBalancerV2 {\n    struct ExitPoolRequest {\n        address[] assets;\n        uint256[] minAmountsOut;\n        bytes userData;\n        bool toInternalBalance;\n    }\n\n    /// @notice Returns asset tokens from a Balancer V2 pool.\n    function getPoolTokens(bytes32 poolId) external view returns (address[] memory);\n\n    /// @notice Exits liquidity tokens from a Balancer V2 pool.\n    function exitPool(\n        bytes32 poolId,\n        address sender,\n        address recipient,\n        ExitPoolRequest calldata request\n    ) external;\n}\n\n/// @notice Minimal Uniswap V2 LP interface.\ninterface IUniswapV2Minimal {\n    function token0() external view returns (address);\n\n    function token1() external view returns (address);\n\n    function burn(address to) external returns (uint256 amount0, uint256 amount1);\n}\n\n/// @notice Interface for handling Uniswap V3 LP.\ninterface IUniswapV3 {\n    /// @notice Returns the position information associated with a given token ID.\n    /// @dev Throws if the token ID is not valid.\n    /// @param tokenId The ID of the token that represents the position\n    /// @return nonce The nonce for permits\n    /// @return operator The address that is approved for spending\n    /// @return token0 The address of the token0 for a specific pool\n    /// @return token1 The address of the token1 for a specific pool\n    /// @return fee The fee associated with the pool\n    /// @return tickLower The lower end of the tick range for the position\n    /// @return tickUpper The higher end of the tick range for the position\n    /// @return liquidity The liquidity of the position\n    /// @return feeGrowthInside0LastX128 The fee growth of token0 as of the last action on the individual position\n    /// @return feeGrowthInside1LastX128 The fee growth of token1 as of the last action on the individual position\n    /// @return tokensOwed0 The uncollected amount of token0 owed to the position as of the last computation\n    /// @return tokensOwed1 The uncollected amount of token1 owed to the position as of the last computation\n    function positions(uint256 tokenId)\n        external\n        view\n        returns (\n            uint96 nonce,\n            address operator,\n            address token0,\n            address token1,\n            uint24 fee,\n            int24 tickLower,\n            int24 tickUpper,\n            uint128 liquidity,\n            uint256 feeGrowthInside0LastX128,\n            uint256 feeGrowthInside1LastX128,\n            uint128 tokensOwed0,\n            uint128 tokensOwed1\n        );\n\n    struct DecreaseLiquidityParams {\n        uint256 tokenId;\n        uint128 liquidity;\n        uint256 amount0Min;\n        uint256 amount1Min;\n        uint256 deadline;\n    }\n\n    struct CollectParams {\n        uint256 tokenId;\n        address recipient;\n        uint128 amount0Max;\n        uint128 amount1Max;\n    }\n\n    // @notice Decreases the amount of liquidity in a position and accounts it to the position\n    /// @param params tokenId The ID of the token for which liquidity is being decreased,\n    /// amount The amount by which liquidity will be decreased,\n    /// amount0Min The minimum amount of token0 that should be accounted for the burned liquidity,\n    /// amount1Min The minimum amount of token1 that should be accounted for the burned liquidity,\n    /// deadline The time by which the transaction must be included to effect the change\n    /// @return amount0 The amount of token0 accounted to the position's tokens owed\n    /// @return amount1 The amount of token1 accounted to the position's tokens owed\n    function decreaseLiquidity(DecreaseLiquidityParams calldata params) external payable returns (uint256 amount0, uint256 amount1);\n\n    /// @notice Collects up to a maximum amount of fees owed to a specific position to the recipient\n    /// @param params tokenId The ID of the NFT for which tokens are being collected,\n    /// recipient The account that should receive the tokens,\n    /// amount0Max The maximum amount of token0 to collect,\n    /// amount1Max The maximum amount of token1 to collect\n    /// @return amount0 The amount of fees collected in token0\n    /// @return amount1 The amount of fees collected in token1\n    function collect(CollectParams calldata params) external payable returns (uint256 amount0, uint256 amount1);\n}\n\n/// @notice Minimal Trident pool router interface.\ninterface ITridentRouterMinimal {\n    struct TokenInput {\n        address token;\n        bool native;\n        uint256 amount;\n    }\n\n    /// @notice Add liquidity to a pool.\n    /// @param tokenInput Token address and amount to add as liquidity.\n    /// @param pool Pool address to add liquidity to.\n    /// @param minLiquidity Minimum output liquidity - caps slippage.\n    /// @param data Data required by the pool to add liquidity.\n    function addLiquidity(\n        TokenInput[] calldata tokenInput,\n        address pool,\n        uint256 minLiquidity,\n        bytes calldata data\n    ) external payable returns (uint256 liquidity);\n}\n\n/// @notice Liquidity migrator for Trident from popular pool types.\ncontract TridentSushiRoll {\n    /* IBalancerV2 internal immutable balancerVault;\n    IUniswapV3 internal immutable uniNonfungiblePositionManager;\n    ITridentRouterMinimal internal immutable tridentRouter;\n\n    constructor(\n        IBalancerV2 _balancerVault,\n        IUniswapV3 _uniNonfungiblePositionManager,\n        ITridentRouterMinimal _tridentRouter\n    ) {\n        balancerVault = _balancerVault;\n        uniNonfungiblePositionManager = _uniNonfungiblePositionManager;\n        tridentRouter = _tridentRouter;\n    }\n\n    // **** BAL MIGRATOR **** //\n    // --------------------- //\n\n    function migrateFromBalancerV1toTrident(\n        IBalancerV1 bPool,\n        uint256 poolAmountIn,\n        uint256[] calldata minAmountsOut,\n        address tridentPool,\n        uint256 minLiquidity,\n        bytes calldata data\n    ) external returns (uint256 liquidity) {\n        address[] memory tokens = bPool.getFinalTokens();\n\n        bPool.exitPool(poolAmountIn, minAmountsOut);\n\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](tokens.length);\n\n        unchecked {\n            for (uint256 i; i < tokens.length; i++) {\n                input[i].token = tokens[i];\n                input[i].native = true;\n                input[i].amount = IERC20(tokens[i]).balanceOf(address(this));\n                IERC20(tokens[i]).approve(address(tridentRouter), input[i].amount);\n            }\n        }\n\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\n    }\n\n    function migrateFromBalancerV2toTrident(\n        bytes32 poolId,\n        IBalancerV2.ExitPoolRequest calldata request,\n        address tridentPool,\n        uint256 minLiquidity,\n        bytes calldata data\n    ) external returns (uint256 liquidity) {\n        address[] memory tokens = balancerVault.getPoolTokens(poolId);\n\n        balancerVault.exitPool(poolId, msg.sender, address(this), request);\n\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](tokens.length);\n\n        unchecked {\n            for (uint256 i; i < tokens.length; i++) {\n                input[i].token = tokens[i];\n                input[i].native = true;\n                input[i].amount = IERC20(tokens[i]).balanceOf(address(this));\n                IERC20(tokens[i]).approve(address(tridentRouter), input[i].amount);\n            }\n        }\n\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\n    }\n\n    // **** UNI MIGRATOR **** //\n    // --------------------- //\n\n    function migrateFromUniswapV2toTrident(\n        address pair,\n        uint256 _liquidity,\n        address pool,\n        uint256 minLiquidity,\n        bytes calldata data\n    ) external returns (uint256 liquidity) {\n        IERC20(pair).transferFrom(msg.sender, address(pair), _liquidity);\n\n        IUniswapV2Minimal(pair).burn(address(this));\n\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](2);\n\n        IERC20 token0 = IERC20(IUniswapV2Minimal(pair).token0());\n        IERC20 token1 = IERC20(IUniswapV2Minimal(pair).token1());\n\n        input[0].token = address(token0);\n        input[0].native = true;\n        input[0].amount = token0.balanceOf(address(this));\n\n        input[1].token = address(token1);\n        input[1].native = true;\n        input[1].amount = token1.balanceOf(address(this));\n\n        token0.approve(address(tridentRouter), input[0].amount);\n        token1.approve(address(tridentRouter), input[1].amount);\n\n        liquidity = ITridentRouterMinimal(tridentRouter).addLiquidity(input, pool, minLiquidity, data);\n    }\n\n    function migrateFromUniswapV3toTrident(\n        IUniswapV3.DecreaseLiquidityParams calldata decreaseLiqParams,\n        IUniswapV3.CollectParams calldata collectParams,\n        address tridentPool,\n        uint256 minLiquidity,\n        bytes calldata data\n    ) external returns (uint256 liquidity) {\n        uniNonfungiblePositionManager.decreaseLiquidity(decreaseLiqParams);\n        uniNonfungiblePositionManager.collect(collectParams);\n\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](2);\n\n        (, , address token0, , , , , , , , , ) = uniNonfungiblePositionManager.positions(decreaseLiqParams.tokenId);\n        (, , , address token1, , , , , , , , ) = uniNonfungiblePositionManager.positions(decreaseLiqParams.tokenId);\n\n        input[0].token = token0;\n        input[0].native = true;\n        input[0].amount = IERC20(token0).balanceOf(address(this));\n\n        input[1].token = token1;\n        input[1].native = true;\n        input[1].amount = IERC20(token1).balanceOf(address(this));\n\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\n    } */\n}\n"
      },
      "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n    /**\n     * @dev Returns the amount of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address recipient, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\n     * allowance mechanism. `amount` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(\n        address sender,\n        address recipient,\n        uint256 amount\n    ) external returns (bool);\n\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n"
      },
      "contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"../../interfaces/concentratedPool/IConcentratedLiquidityPoolManager.sol\";\nimport \"../../interfaces/concentratedPool/IPositionManager.sol\";\nimport \"../../interfaces/IMasterDeployer.sol\";\nimport \"../../interfaces/IBentoBoxMinimal.sol\";\nimport \"../../interfaces/ITridentRouter.sol\";\nimport \"../../libraries/concentratedPool/FullMath.sol\";\nimport \"../../libraries/concentratedPool/TickMath.sol\";\nimport \"../../libraries/concentratedPool/DyDxMath.sol\";\nimport \"../../utils/TridentBatchable.sol\";\nimport \"./TridentNFT.sol\";\n\n/// @notice Trident Concentrated Liquidity Pool periphery contract that combines non-fungible position management and staking.\ncontract ConcentratedLiquidityPoolManager is IPositionManager, IConcentratedLiquidityPoolManagerStruct, TridentNFT, TridentBatchable {\n    event IncreaseLiquidity(address indexed pool, address indexed owner, uint256 indexed positionId, uint128 liquidity);\n    event DecreaseLiquidity(address indexed pool, address indexed owner, uint256 indexed positionId, uint128 liquidity);\n\n    IBentoBoxMinimal public immutable bento;\n    IMasterDeployer public immutable masterDeployer;\n\n    mapping(uint256 => Position) public positions;\n\n    constructor(address _masterDeployer) {\n        masterDeployer = IMasterDeployer(_masterDeployer);\n        IBentoBoxMinimal _bento = IBentoBoxMinimal(IMasterDeployer(_masterDeployer).bento());\n        _bento.registerProtocol();\n        bento = _bento;\n        _mint(address(0));\n    }\n\n    function positionMintCallback(\n        address recipient,\n        int24 lower,\n        int24 upper,\n        uint128 amount,\n        uint256 feeGrowthInside0,\n        uint256 feeGrowthInside1,\n        uint256 _positionId\n    ) external override returns (uint256 positionId) {\n        require(IMasterDeployer(masterDeployer).pools(msg.sender), \"NOT_POOL\");\n\n        if (_positionId == 0) {\n            // We mint a new NFT.\n            positions[totalSupply] = Position({\n                pool: IConcentratedLiquidityPool(msg.sender),\n                liquidity: amount,\n                lower: lower,\n                upper: upper,\n                latestAddition: uint32(block.timestamp),\n                feeGrowthInside0: feeGrowthInside0,\n                feeGrowthInside1: feeGrowthInside1\n            });\n            positionId = totalSupply;\n            _mint(recipient);\n            emit IncreaseLiquidity(msg.sender, recipient, positionId, amount);\n        } else if (amount > 0) {\n            // We increase liquidity for an existing NFT.\n            Position storage position = positions[_positionId];\n            require(_positionId < totalSupply, \"INVALID_POSITION\");\n            require(position.lower == lower && position.upper == upper, \"RANGE_MIS_MATCH\");\n            require(position.feeGrowthInside0 == feeGrowthInside0 && position.feeGrowthInside1 == feeGrowthInside1, \"UNCLAIMED\");\n            position.liquidity += amount;\n            position.latestAddition = uint32(block.timestamp);\n            emit IncreaseLiquidity(msg.sender, recipient, positionId, amount);\n        }\n    }\n\n    function decreaseLiquidity(\n        uint256 tokenId,\n        uint128 amount,\n        address recipient,\n        bool unwrapBento\n    ) external {\n        require(msg.sender == ownerOf[tokenId], \"NOT_ID_OWNER\");\n        Position storage position = positions[tokenId];\n\n        IPool.TokenAmount[] memory withdrawAmounts;\n        IPool.TokenAmount[] memory feeAmounts;\n        uint256 oldLiquidity;\n\n        if (amount < position.liquidity) {\n            (withdrawAmounts, feeAmounts, oldLiquidity) = position.pool.decreaseLiquidity(\n                position.lower,\n                position.upper,\n                amount,\n                address(this),\n                false\n            );\n\n            (position.feeGrowthInside0, position.feeGrowthInside1) = position.pool.rangeFeeGrowth(position.lower, position.upper);\n\n            position.liquidity -= amount;\n        } else {\n            (withdrawAmounts, feeAmounts, oldLiquidity) = position.pool.decreaseLiquidity(\n                position.lower,\n                position.upper,\n                position.liquidity,\n                address(this),\n                false\n            );\n\n            delete positions[tokenId];\n\n            _burn(tokenId);\n        }\n\n        uint256 token0Amount = withdrawAmounts[0].amount + ((feeAmounts[0].amount * amount) / oldLiquidity);\n        uint256 token1Amount = withdrawAmounts[1].amount + ((feeAmounts[1].amount * amount) / oldLiquidity);\n\n        _transfer(withdrawAmounts[0].token, address(this), recipient, token0Amount, unwrapBento);\n        _transfer(withdrawAmounts[1].token, address(this), recipient, token1Amount, unwrapBento);\n\n        emit DecreaseLiquidity(address(position.pool), msg.sender, tokenId, amount);\n    }\n\n    function collect(\n        uint256 tokenId,\n        address recipient,\n        bool unwrapBento\n    ) public returns (uint256 token0amount, uint256 token1amount) {\n        require(msg.sender == ownerOf[tokenId], \"NOT_ID_OWNER\");\n        Position storage position = positions[tokenId];\n\n        address[] memory tokens = position.pool.getAssets();\n        address token0 = tokens[0];\n        address token1 = tokens[1];\n\n        (token0amount, token1amount, position.feeGrowthInside0, position.feeGrowthInside1) = positionFees(tokenId);\n\n        uint256 balance0 = bento.balanceOf(token0, address(this));\n        uint256 balance1 = bento.balanceOf(token1, address(this));\n\n        if (balance0 < token0amount || balance1 < token1amount) {\n            (uint256 amount0fees, uint256 amount1fees) = position.pool.collect(position.lower, position.upper, address(this), false);\n\n            uint256 newBalance0 = amount0fees + balance0;\n            uint256 newBalance1 = amount1fees + balance1;\n\n            /// @dev Rounding errors due to frequent claiming of other users in the same position may cost us some wei units\n            if (token0amount > newBalance0) token0amount = newBalance0;\n            if (token1amount > newBalance1) token1amount = newBalance1;\n        }\n\n        _transfer(token0, address(this), recipient, token0amount, unwrapBento);\n        _transfer(token1, address(this), recipient, token1amount, unwrapBento);\n    }\n\n    /// @notice Returns the claimable fees and the fee growth accumulators of a given position.\n    function positionFees(uint256 tokenId)\n        public\n        view\n        returns (\n            uint256 token0amount,\n            uint256 token1amount,\n            uint256 feeGrowthInside0,\n            uint256 feeGrowthInside1\n        )\n    {\n        Position memory position = positions[tokenId];\n\n        (feeGrowthInside0, feeGrowthInside1) = position.pool.rangeFeeGrowth(position.lower, position.upper);\n\n        token0amount = FullMath.mulDiv(\n            feeGrowthInside0 - position.feeGrowthInside0,\n            position.liquidity,\n            0x100000000000000000000000000000000\n        );\n\n        token1amount = FullMath.mulDiv(\n            feeGrowthInside1 - position.feeGrowthInside1,\n            position.liquidity,\n            0x100000000000000000000000000000000\n        );\n    }\n\n    function _transfer(\n        address token,\n        address from,\n        address to,\n        uint256 shares,\n        bool unwrapBento\n    ) internal {\n        if (unwrapBento) {\n            bento.withdraw(token, from, to, 0, shares);\n        } else {\n            bento.transfer(token, from, to, shares);\n        }\n    }\n}\n"
      },
      "contracts/interfaces/concentratedPool/IConcentratedLiquidityPoolManager.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"./IConcentratedLiquidityPool.sol\";\nimport \"./../ITridentNFT.sol\";\n\n/// @notice Trident concentrated liquidity manager contract Struct.\n/// @dev Split out struct and function declarations due to solidity quirks.\ninterface IConcentratedLiquidityPoolManagerStruct {\n    struct Position {\n        IConcentratedLiquidityPool pool;\n        uint128 liquidity;\n        int24 lower;\n        int24 upper;\n        uint32 latestAddition;\n        uint256 feeGrowthInside0; /// @dev Per unit of liquidity.\n        uint256 feeGrowthInside1;\n    }\n}\n\n/// @notice Trident concentrated liquidity manager contract interface.\ninterface IConcentratedLiquidityPoolManager is IConcentratedLiquidityPoolManagerStruct, ITridentNFT {\n    function positions(uint256) external view returns (Position memory);\n\n    function bento() external view returns (IBentoBoxMinimal);\n}\n"
      },
      "contracts/interfaces/concentratedPool/IPositionManager.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\n/// @notice Trident concentrated Liquidity pool mint callback receiver.\ninterface IPositionManager {\n    function positionMintCallback(\n        address recipient,\n        int24 lower,\n        int24 upper,\n        uint128 amount,\n        uint256 feeGrowthInside0,\n        uint256 feeGrowthInside1,\n        uint256 positionId\n    ) external returns (uint256 _positionId);\n}\n"
      },
      "contracts/libraries/concentratedPool/FullMath.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\n/// @notice Math library that facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision.\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/FullMath.sol.\n/// @dev Handles \"phantom overflow\", i.e., allows multiplication and division where an intermediate value overflows 256 bits.\nlibrary FullMath {\n    /// @notice Calculates floor(a×b÷denominator) with full precision - throws if result overflows an uint256 or denominator == 0.\n    /// @param a The multiplicand.\n    /// @param b The multiplier.\n    /// @param denominator The divisor.\n    /// @return result The 256-bit result.\n    /// @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv.\n    function mulDiv(\n        uint256 a,\n        uint256 b,\n        uint256 denominator\n    ) internal pure returns (uint256 result) {\n        unchecked {\n            // 512-bit multiply [prod1 prod0] = a * b.\n            // Compute the product mod 2**256 and mod 2**256 - 1,\n            // then use the Chinese Remainder Theorem to reconstruct\n            // the 512 bit result. The result is stored in two 256\n            // variables such that product = prod1 * 2**256 + prod0.\n            uint256 prod0; // Least significant 256 bits of the product.\n            uint256 prod1; // Most significant 256 bits of the product.\n            assembly {\n                let mm := mulmod(a, b, not(0))\n                prod0 := mul(a, b)\n                prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n            }\n            // Handle non-overflow cases, 256 by 256 division.\n            if (prod1 == 0) {\n                require(denominator > 0);\n                assembly {\n                    result := div(prod0, denominator)\n                }\n                return result;\n            }\n            // Make sure the result is less than 2**256 -\n            // also prevents denominator == 0.\n            require(denominator > prod1);\n            ///////////////////////////////////////////////\n            // 512 by 256 division.\n            ///////////////////////////////////////////////\n            // Make division exact by subtracting the remainder from [prod1 prod0] -\n            // compute remainder using mulmod.\n            uint256 remainder;\n            assembly {\n                remainder := mulmod(a, b, denominator)\n            }\n            // Subtract 256 bit number from 512 bit number.\n            assembly {\n                prod1 := sub(prod1, gt(remainder, prod0))\n                prod0 := sub(prod0, remainder)\n            }\n            // Factor powers of two out of denominator -\n            // compute largest power of two divisor of denominator\n            // (always >= 1).\n            uint256 twos = uint256(-int256(denominator)) & denominator;\n            // Divide denominator by power of two.\n            assembly {\n                denominator := div(denominator, twos)\n            }\n            // Divide [prod1 prod0] by the factors of two.\n            assembly {\n                prod0 := div(prod0, twos)\n            }\n            // Shift in bits from prod1 into prod0. For this we need\n            // to flip `twos` such that it is 2**256 / twos -\n            // if twos is zero, then it becomes one.\n            assembly {\n                twos := add(div(sub(0, twos), twos), 1)\n            }\n            prod0 |= prod1 * twos;\n            // Invert denominator mod 2**256 -\n            // now that denominator is an odd number, it has an inverse\n            // modulo 2**256 such that denominator * inv = 1 mod 2**256.\n            // Compute the inverse by starting with a seed that is correct\n            // for four bits. That is, denominator * inv = 1 mod 2**4.\n            uint256 inv = (3 * denominator) ^ 2;\n            // Now use Newton-Raphson iteration to improve the precision.\n            // Thanks to Hensel's lifting lemma, this also works in modular\n            // arithmetic, doubling the correct bits in each step.\n            inv *= 2 - denominator * inv; // Inverse mod 2**8.\n            inv *= 2 - denominator * inv; // Inverse mod 2**16.\n            inv *= 2 - denominator * inv; // Inverse mod 2**32.\n            inv *= 2 - denominator * inv; // Inverse mod 2**64.\n            inv *= 2 - denominator * inv; // Inverse mod 2**128.\n            inv *= 2 - denominator * inv; // Inverse mod 2**256.\n            // Because the division is now exact we can divide by multiplying\n            // with the modular inverse of denominator. This will give us the\n            // correct result modulo 2**256. Since the precoditions guarantee\n            // that the outcome is less than 2**256, this is the final result.\n            // We don't need to compute the high bits of the result and prod1\n            // is no longer required.\n            result = prod0 * inv;\n            return result;\n        }\n    }\n\n    /// @notice Calculates ceil(a×b÷denominator) with full precision - throws if result overflows an uint256 or denominator == 0.\n    /// @param a The multiplicand.\n    /// @param b The multiplier.\n    /// @param denominator The divisor.\n    /// @return result The 256-bit result.\n    function mulDivRoundingUp(\n        uint256 a,\n        uint256 b,\n        uint256 denominator\n    ) internal pure returns (uint256 result) {\n        result = mulDiv(a, b, denominator);\n        unchecked {\n            if (mulmod(a, b, denominator) != 0) {\n                require(result < type(uint256).max);\n                result++;\n            }\n        }\n    }\n}\n"
      },
      "contracts/libraries/concentratedPool/TickMath.sol": {
        "content": "// SPDX-License-Identifier: GPL-2.0-or-later\n\npragma solidity >=0.8.0;\n\n/// @notice Math library for computing sqrt price for ticks of size 1.0001, i.e., sqrt(1.0001^tick) as fixed point Q64.96 numbers - supports\n/// prices between 2**-128 and 2**128 - 1.\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/TickMath.sol.\nlibrary TickMath {\n    /// @dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128.\n    int24 internal constant MIN_TICK = -887272;\n    /// @dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128 - 1.\n    int24 internal constant MAX_TICK = -MIN_TICK;\n    /// @dev The minimum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MIN_TICK).\n    uint160 internal constant MIN_SQRT_RATIO = 4295128739;\n    /// @dev The maximum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MAX_TICK).\n    uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;\n\n    error TickOutOfBounds();\n    error PriceOutOfBounds();\n\n    /// @notice Calculates sqrt(1.0001^tick) * 2^96.\n    /// @dev Throws if |tick| > max tick.\n    /// @param tick The input tick for the above formula.\n    /// @return sqrtPriceX96 Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\n    /// at the given tick.\n    function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {\n        uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));\n        if (absTick > uint256(uint24(MAX_TICK))) revert TickOutOfBounds();\n        unchecked {\n            uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;\n            if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;\n            if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;\n            if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;\n            if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;\n            if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;\n            if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;\n            if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;\n            if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;\n            if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;\n            if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;\n            if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;\n            if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;\n            if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;\n            if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;\n            if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;\n            if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;\n            if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;\n            if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;\n            if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;\n\n            if (tick > 0) ratio = type(uint256).max / ratio;\n            // This divides by 1<<32 rounding up to go from a Q128.128 to a Q128.96.\n            // We then downcast because we know the result always fits within 160 bits due to our tick input constraint.\n            // We round up in the division so getTickAtSqrtRatio of the output price is always consistent.\n            sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));\n        }\n    }\n\n    /// @notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio.\n    /// @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\n    /// ever return.\n    /// @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96.\n    /// @return tick The greatest tick for which the ratio is less than or equal to the input ratio.\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {\n        // Second inequality must be < because the price can never reach the price at the max tick.\n        if (sqrtPriceX96 < MIN_SQRT_RATIO || sqrtPriceX96 >= MAX_SQRT_RATIO) revert PriceOutOfBounds();\n        uint256 ratio = uint256(sqrtPriceX96) << 32;\n\n        uint256 r = ratio;\n        uint256 msb;\n\n        assembly {\n            let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(5, gt(r, 0xFFFFFFFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(4, gt(r, 0xFFFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(3, gt(r, 0xFF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(2, gt(r, 0xF))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := shl(1, gt(r, 0x3))\n            msb := or(msb, f)\n            r := shr(f, r)\n        }\n        assembly {\n            let f := gt(r, 0x1)\n            msb := or(msb, f)\n        }\n        unchecked {\n            if (msb >= 128) r = ratio >> (msb - 127);\n            else r = ratio << (127 - msb);\n\n            int256 log_2 = (int256(msb) - 128) << 64;\n\n            assembly {\n                r := shr(127, mul(r, r))\n                let f := shr(128, r)\n                log_2 := or(log_2, shl(63, f))\n                r := shr(f, r)\n            }\n            assembly {\n                r := shr(127, mul(r, r))\n                let f := shr(128, r)\n                log_2 := or(log_2, shl(62, f))\n                r := shr(f, r)\n            }\n            assembly {\n                r := shr(127, mul(r, r))\n                let f := shr(128, r)\n                log_2 := or(log_2, shl(61, f))\n                r := shr(f, r)\n            }\n            assembly {\n                r := shr(127, mul(r, r))\n                let f := shr(128, r)\n                log_2 := or(log_2, shl(60, f))\n                r := shr(f, r)\n            }\n            assembly {\n                r := shr(127, mul(r, r))\n                let f := shr(128, r)\n                log_2 := or(log_2, shl(59, f))\n                r := shr(f, r)\n            }\n            assembly {\n                r := shr(127, mul(r, r))\n                let f := shr(128, r)\n                log_2 := or(log_2, shl(58, f))\n                r := shr(f, r)\n            }\n            assembly {\n                r := shr(127, mul(r, r))\n                let f := shr(128, r)\n                log_2 := or(log_2, shl(57, f))\n                r := shr(f, r)\n            }\n            assembly {\n                r := shr(127, mul(r, r))\n                let f := shr(128, r)\n                log_2 := or(log_2, shl(56, f))\n                r := shr(f, r)\n            }\n            assembly {\n                r := shr(127, mul(r, r))\n                let f := shr(128, r)\n                log_2 := or(log_2, shl(55, f))\n                r := shr(f, r)\n            }\n            assembly {\n                r := shr(127, mul(r, r))\n                let f := shr(128, r)\n                log_2 := or(log_2, shl(54, f))\n                r := shr(f, r)\n            }\n            assembly {\n                r := shr(127, mul(r, r))\n                let f := shr(128, r)\n                log_2 := or(log_2, shl(53, f))\n                r := shr(f, r)\n            }\n            assembly {\n                r := shr(127, mul(r, r))\n                let f := shr(128, r)\n                log_2 := or(log_2, shl(52, f))\n                r := shr(f, r)\n            }\n            assembly {\n                r := shr(127, mul(r, r))\n                let f := shr(128, r)\n                log_2 := or(log_2, shl(51, f))\n                r := shr(f, r)\n            }\n            assembly {\n                r := shr(127, mul(r, r))\n                let f := shr(128, r)\n                log_2 := or(log_2, shl(50, f))\n            }\n\n            int256 log_sqrt10001 = log_2 * 255738958999603826347141; // 128.128 number.\n\n            int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);\n            int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);\n\n            tick = tickLow == tickHi ? tickLow : getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;\n        }\n    }\n}\n"
      },
      "contracts/libraries/concentratedPool/DyDxMath.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"./FullMath.sol\";\nimport \"./UnsafeMath.sol\";\n\n/// @notice Math library that facilitates ranged liquidity calculations.\nlibrary DyDxMath {\n    function getDy(\n        uint256 liquidity,\n        uint256 priceLower,\n        uint256 priceUpper,\n        bool roundUp\n    ) internal pure returns (uint256 dy) {\n        unchecked {\n            if (roundUp) {\n                dy = FullMath.mulDivRoundingUp(liquidity, priceUpper - priceLower, 0x1000000000000000000000000);\n            } else {\n                dy = FullMath.mulDiv(liquidity, priceUpper - priceLower, 0x1000000000000000000000000);\n            }\n        }\n    }\n\n    function getDx(\n        uint256 liquidity,\n        uint256 priceLower,\n        uint256 priceUpper,\n        bool roundUp\n    ) internal pure returns (uint256 dx) {\n        unchecked {\n            if (roundUp) {\n                dx = UnsafeMath.divRoundingUp(FullMath.mulDivRoundingUp(liquidity << 96, priceUpper - priceLower, priceUpper), priceLower);\n            } else {\n                dx = FullMath.mulDiv(liquidity << 96, priceUpper - priceLower, priceUpper) / priceLower;\n            }\n        }\n    }\n\n    function getLiquidityForAmounts(\n        uint256 priceLower,\n        uint256 priceUpper,\n        uint256 currentPrice,\n        uint256 dy,\n        uint256 dx\n    ) public pure returns (uint256 liquidity) {\n        unchecked {\n            if (priceUpper <= currentPrice) {\n                liquidity = FullMath.mulDiv(dy, 0x1000000000000000000000000, priceUpper - priceLower);\n            } else if (currentPrice <= priceLower) {\n                liquidity = FullMath.mulDiv(\n                    dx,\n                    FullMath.mulDiv(priceLower, priceUpper, 0x1000000000000000000000000),\n                    priceUpper - priceLower\n                );\n            } else {\n                uint256 liquidity0 = FullMath.mulDiv(\n                    dx,\n                    FullMath.mulDiv(priceUpper, currentPrice, 0x1000000000000000000000000),\n                    priceUpper - currentPrice\n                );\n                uint256 liquidity1 = FullMath.mulDiv(dy, 0x1000000000000000000000000, currentPrice - priceLower);\n                liquidity = liquidity0 < liquidity1 ? liquidity0 : liquidity1;\n            }\n        }\n    }\n\n    function getAmountsForLiquidity(\n        uint256 priceLower,\n        uint256 priceUpper,\n        uint256 currentPrice,\n        uint256 liquidityAmount,\n        bool roundUp\n    ) internal pure returns (uint128 token0amount, uint128 token1amount) {\n        if (priceUpper <= currentPrice) {\n            // Only supply `token1` (`token1` is Y).\n            token1amount = uint128(DyDxMath.getDy(liquidityAmount, priceLower, priceUpper, roundUp));\n        } else if (currentPrice <= priceLower) {\n            // Only supply `token0` (`token0` is X).\n            token0amount = uint128(DyDxMath.getDx(liquidityAmount, priceLower, priceUpper, roundUp));\n        } else {\n            // Supply both tokens.\n            token0amount = uint128(DyDxMath.getDx(liquidityAmount, currentPrice, priceUpper, roundUp));\n            token1amount = uint128(DyDxMath.getDy(liquidityAmount, priceLower, currentPrice, roundUp));\n        }\n    }\n}\n"
      },
      "contracts/pool/concentrated/TridentNFT.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\n/// @notice Trident Concentrated Liquidity Pool ERC-721 implementation with ERC-20/EIP-2612-like extensions,\n// as well as partially, MetaData and Enumerable extensions.\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc721/ERC721.sol,\n// License-Identifier: AGPL-3.0-only, and Shoyu, https://github.com/sushiswap/shoyu/blob/master/contracts/base/BaseNFT721.sol,\n// License-Identifier: MIT.\nabstract contract TridentNFT {\n    event Transfer(address indexed sender, address indexed recipient, uint256 indexed tokenId);\n    event Approval(address indexed owner, address indexed spender, uint256 indexed tokenId);\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n    string public constant name = \"TridentNFT\";\n    string public constant symbol = \"tNFT\";\n    /// @notice Tracks total liquidity range positions.\n    uint256 public totalSupply;\n    /// @notice 'owner' -> balance mapping.\n    mapping(address => uint256) public balanceOf;\n    /// @notice `tokenId` -> 'owner' mapping.\n    mapping(uint256 => address) public ownerOf;\n    /// @notice `tokenId` -> 'spender' mapping.\n    mapping(uint256 => address) public getApproved;\n    /// @notice 'owner' -> 'operator' status mapping.\n    mapping(address => mapping(address => bool)) public isApprovedForAll;\n\n    /// @notice EIP-712 typehash for this contract's {permit} struct for {approve}.\n    bytes32 public constant PERMIT_TYPEHASH = keccak256(\"Permit(address spender,uint256 tokenId,uint256 nonce,uint256 deadline)\");\n    /// @notice EIP-712 typehash for this contract's {permitAll} struct for {setApprovalForAll}.\n    bytes32 public constant PERMIT_ALL_TYPEHASH = keccak256(\"Permit(address owner,address spender,uint256 nonce,uint256 deadline)\");\n\n    /// @notice Chain Id at this contract's deployment.\n    uint256 internal immutable DOMAIN_SEPARATOR_CHAIN_ID;\n    /// @notice EIP-712 typehash for this contract's domain at deployment.\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\n    /// @notice 'tokenId' -> `nonce` mapping used in {permit} for {approve}.\n    mapping(uint256 => uint256) public nonces;\n    /// @notice 'owner' -> `tokenId` mapping used in {permitAll} for {setApprovalForAll}.\n    mapping(address => uint256) public noncesForAll;\n\n    constructor() {\n        DOMAIN_SEPARATOR_CHAIN_ID = block.chainid;\n        _DOMAIN_SEPARATOR = _calculateDomainSeparator();\n    }\n\n    function _calculateDomainSeparator() internal view returns (bytes32 domainSeperator) {\n        domainSeperator = keccak256(\n            abi.encode(\n                keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"),\n                keccak256(bytes(name)),\n                keccak256(bytes(\"1\")),\n                block.chainid,\n                address(this)\n            )\n        );\n    }\n\n    /// @notice EIP-712 typehash for this contract's domain.\n    function DOMAIN_SEPARATOR() public view returns (bytes32 domainSeperator) {\n        domainSeperator = block.chainid == DOMAIN_SEPARATOR_CHAIN_ID ? _DOMAIN_SEPARATOR : _calculateDomainSeparator();\n    }\n\n    /// @notice Provides ERC-165-compatible confirmation for ERC-721 interfaces supported by this contract.\n    /// @param interfaceId XOR of all function selectors in the reference interface.\n    /// @return supported Returns 'true' if `interfaceId` is flagged as implemented.\n    function supportsInterface(bytes4 interfaceId) external pure returns (bool supported) {\n        supported = interfaceId == 0x80ac58cd || interfaceId == 0x5b5e139f;\n    }\n\n    /// @notice Approves `tokenId` from `msg.sender` 'owner' or 'operator' to be spent by `spender`.\n    /// @param spender Address of the party that can pull `tokenId` from 'owner''s account.\n    /// @param tokenId The Id to approve for `spender`.\n    function approve(address spender, uint256 tokenId) external {\n        address owner = ownerOf[tokenId];\n        require(msg.sender == owner || isApprovedForAll[owner][msg.sender], \"NOT_APPROVED\");\n        getApproved[tokenId] = spender;\n        emit Approval(owner, spender, tokenId);\n    }\n\n    /// @notice Approves an 'operator' for `msg.sender` 'owner' that can spend or {approve} spends of 'owner''s `tokenId`s.\n    /// @param operator Address of the party that can pull `tokenId`s from 'owner''s account or approve others to do same.\n    /// @param approved The approval status of `operator`.\n    function setApprovalForAll(address operator, bool approved) external {\n        require(operator != address(0), \"INVALID_OPERATOR\");\n        isApprovedForAll[msg.sender][operator] = approved;\n        emit ApprovalForAll(msg.sender, operator, approved);\n    }\n\n    /// @notice Transfers `tokenId` from 'owner' to `recipient`. Caller needs ownership.\n    /// @param recipient The address to move `tokenId` to.\n    /// @param tokenId The Id to move.\n    function transfer(address recipient, uint256 tokenId) external {\n        require(msg.sender == ownerOf[tokenId], \"NOT_OWNER\");\n        _transfer(msg.sender, recipient, tokenId);\n    }\n\n    /// @notice Transfers `tokenId` from 'owner' to `recipient`. Caller needs ownership or approval from 'owner'.\n    /// @param recipient The address to move `tokenId` to.\n    /// @param tokenId The Id to move.\n    function transferFrom(\n        address,\n        address recipient,\n        uint256 tokenId\n    ) public {\n        address owner = ownerOf[tokenId];\n        require(msg.sender == owner || msg.sender == getApproved[tokenId] || isApprovedForAll[owner][msg.sender], \"NOT_APPROVED\");\n        _transfer(owner, recipient, tokenId);\n    }\n\n    /// @notice Transfers `tokenId` from 'owner' to `recipient` with no data. Caller needs ownership or approval from 'owner',\n    /// and `recipient` must have compatible {onERC721Received} function.\n    /// @param recipient The address to move `tokenId` to.\n    /// @param tokenId The Id to move.\n    function safeTransferFrom(\n        address,\n        address recipient,\n        uint256 tokenId\n    ) external {\n        safeTransferFrom(address(0), recipient, tokenId, \"\");\n    }\n\n    /// @notice Transfers `tokenId` from 'owner' to `recipient` with data. Caller needs ownership or approval from 'owner',\n    /// and `recipient` must have compatible {onERC721Received} function.\n    /// @param recipient The address to move `tokenId` to.\n    /// @param tokenId The Id to move.\n    function safeTransferFrom(\n        address,\n        address recipient,\n        uint256 tokenId,\n        bytes memory data\n    ) public {\n        transferFrom(address(0), recipient, tokenId);\n        if (recipient.code.length != 0) {\n            /// @dev `onERC721Received(address,address,uint,bytes)`.\n            (, bytes memory returned) = recipient.staticcall(abi.encodeWithSelector(0x150b7a02, msg.sender, address(0), tokenId, data));\n            bytes4 selector = abi.decode(returned, (bytes4));\n            require(selector == 0x150b7a02, \"NOT_ERC721_RECEIVER\");\n        }\n    }\n\n    /// @notice Triggers an approval from 'owner' to `spender` for a given `tokenId`.\n    /// @param spender The address to be approved.\n    /// @param tokenId The Id that is approved for `spender`.\n    /// @param deadline The time at which to expire the signature.\n    /// @param v The recovery byte of the signature.\n    /// @param r Half of the ECDSA signature pair.\n    /// @param s Half of the ECDSA signature pair.\n    function permit(\n        address spender,\n        uint256 tokenId,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external {\n        require(deadline >= block.timestamp, \"PERMIT_DEADLINE_EXPIRED\");\n        address owner = ownerOf[tokenId];\n        /// @dev This is reasonably safe from overflow - incrementing `nonces` beyond\n        // 'type(uint256).max' is exceedingly unlikely compared to optimization benefits.\n        unchecked {\n            bytes32 digest = keccak256(\n                abi.encodePacked(\n                    \"\\x19\\x01\",\n                    DOMAIN_SEPARATOR(),\n                    keccak256(abi.encode(PERMIT_TYPEHASH, spender, tokenId, nonces[tokenId]++, deadline))\n                )\n            );\n            address recoveredAddress = ecrecover(digest, v, r, s);\n            require(recoveredAddress != address(0), \"INVALID_PERMIT_SIGNATURE\");\n            require(recoveredAddress == owner || isApprovedForAll[owner][recoveredAddress], \"INVALID_SIGNER\");\n        }\n        getApproved[tokenId] = spender;\n        emit Approval(owner, spender, tokenId);\n    }\n\n    /// @notice Triggers an approval from 'owner' to `operator` that can spend or {approve} spends of 'owner''s `tokenId`s.\n    /// @param owner The address to be approved.\n    /// @param operator Address of the party that can pull `tokenId`s from 'owner''s account or approve others to do same.\n    /// @param deadline The time at which to expire the signature.\n    /// @param v The recovery byte of the signature.\n    /// @param r Half of the ECDSA signature pair.\n    /// @param s Half of the ECDSA signature pair.\n    function permitAll(\n        address owner,\n        address operator,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external {\n        require(deadline >= block.timestamp, \"PERMIT_DEADLINE_EXPIRED\");\n        /// @dev This is reasonably safe from overflow - incrementing `nonces` beyond\n        // 'type(uint256).max' is exceedingly unlikely compared to optimization benefits.\n        unchecked {\n            bytes32 digest = keccak256(\n                abi.encodePacked(\n                    \"\\x19\\x01\",\n                    DOMAIN_SEPARATOR(),\n                    keccak256(abi.encode(PERMIT_ALL_TYPEHASH, owner, operator, noncesForAll[owner]++, deadline))\n                )\n            );\n            address recoveredAddress = ecrecover(digest, v, r, s);\n            require(\n                (recoveredAddress != address(0) && recoveredAddress == owner) || isApprovedForAll[owner][recoveredAddress],\n                \"INVALID_PERMIT_SIGNATURE\"\n            );\n        }\n        isApprovedForAll[owner][operator] = true;\n        emit ApprovalForAll(owner, operator, true);\n    }\n\n    function _mint(address recipient) internal {\n        /// @dev This is reasonably safe from overflow - incrementing beyond\n        // 'type(uint256).max' is exceedingly unlikely compared to optimization benefits.\n        unchecked {\n            uint256 tokenId = totalSupply++;\n            require(ownerOf[tokenId] == address(0), \"ALREADY_MINTED\");\n            balanceOf[recipient]++;\n            ownerOf[tokenId] = recipient;\n            emit Transfer(address(0), recipient, tokenId);\n        }\n    }\n\n    function _burn(uint256 tokenId) internal {\n        // @dev We tranfer the NFT to address(0) rather than burning to keep Total Supply static.\n        address owner = ownerOf[tokenId];\n        require(owner != address(0), \"NOT_MINTED\");\n        _transfer(owner, address(0), tokenId);\n    }\n\n    function _transfer(\n        address from,\n        address to,\n        uint256 tokenId\n    ) internal {\n        /// @dev This is safe from under/overflow -\n        // ownership is checked against decrement,\n        // and sum of all user balances can't reasonably exceed type(uint256).max (see {_mint}).\n        unchecked {\n            balanceOf[from]--;\n            balanceOf[to]++;\n        }\n        delete getApproved[tokenId];\n        ownerOf[tokenId] = to;\n        emit Transfer(from, to, tokenId);\n    }\n}\n"
      },
      "contracts/interfaces/concentratedPool/IConcentratedLiquidityPool.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"./../IPool.sol\";\nimport \"./../IBentoBoxMinimal.sol\";\nimport \"./../IMasterDeployer.sol\";\nimport \"../../libraries/concentratedPool/Ticks.sol\";\n\n/// @notice Trident Concentrated Liquidity Pool interface.\ninterface IConcentratedLiquidityPool is IPool {\n    function price() external view returns (uint160);\n\n    function token0() external view returns (address);\n\n    function token1() external view returns (address);\n\n    function ticks(int24 _tick) external view returns (Ticks.Tick memory tick);\n\n    function feeGrowthGlobal0() external view returns (uint256);\n\n    function feeGrowthGlobal1() external view returns (uint256);\n\n    function rangeFeeGrowth(int24 lowerTick, int24 upperTick) external view returns (uint256 feeGrowthInside0, uint256 feeGrowthInside1);\n\n    function collect(\n        int24,\n        int24,\n        address,\n        bool\n    ) external returns (uint256 amount0fees, uint256 amount1fees);\n\n    function decreaseLiquidity(\n        int24 lower,\n        int24 upper,\n        uint128 amount,\n        address recipient,\n        bool unwrapBento\n    )\n        external\n        returns (\n            TokenAmount[] memory withdrawnAmounts,\n            TokenAmount[] memory feesWithdrawn,\n            uint256 oldLiquidity\n        );\n\n    function getImmutables()\n        external\n        view\n        returns (\n            uint128 _MAX_TICK_LIQUIDITY,\n            uint24 _tickSpacing,\n            uint24 _swapFee,\n            address _barFeeTo,\n            IBentoBoxMinimal _bento,\n            IMasterDeployer _masterDeployer,\n            address _token0,\n            address _token1\n        );\n\n    function getPriceAndNearestTicks() external view returns (uint160 _price, int24 _nearestTick);\n\n    function getTokenProtocolFees() external view returns (uint128 _token0ProtocolFee, uint128 _token1ProtocolFee);\n\n    function getReserves() external view returns (uint128 _reserve0, uint128 _reserve1);\n\n    function getSecondsGrowthAndLastObservation() external view returns (uint160 _secondGrowthGlobal, uint32 _lastObservation);\n}\n"
      },
      "contracts/interfaces/ITridentNFT.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\n/// @notice Trident NFT interface.\ninterface ITridentNFT {\n    function ownerOf(uint256) external view returns (address);\n}\n"
      },
      "contracts/libraries/concentratedPool/Ticks.sol": {
        "content": "// SPDX-License-Identifier: GPL-2.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"./TickMath.sol\";\nimport \"hardhat/console.sol\";\n\n/// @notice Tick management library for ranged liquidity.\nlibrary Ticks {\n    struct Tick {\n        int24 previousTick;\n        int24 nextTick;\n        uint128 liquidity;\n        uint256 feeGrowthOutside0; // Per unit of liquidity.\n        uint256 feeGrowthOutside1;\n        uint160 secondsGrowthOutside;\n    }\n\n    function getMaxLiquidity(uint24 _tickSpacing) public pure returns (uint128) {\n        return type(uint128).max / uint128(uint24(TickMath.MAX_TICK) / (2 * uint24(_tickSpacing)));\n    }\n\n    function cross(\n        mapping(int24 => Tick) storage ticks,\n        int24 nextTickToCross,\n        uint160 secondsGrowthGlobal,\n        uint256 currentLiquidity,\n        uint256 feeGrowthGlobalA,\n        uint256 feeGrowthGlobalB,\n        bool zeroForOne,\n        uint24 tickSpacing\n    ) internal returns (uint256, int24) {\n        ticks[nextTickToCross].secondsGrowthOutside = secondsGrowthGlobal - ticks[nextTickToCross].secondsGrowthOutside;\n\n        if (zeroForOne) {\n            // Moving forward through the linked list.\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\n                currentLiquidity -= ticks[nextTickToCross].liquidity; // todo wrap in unchecked {}\n            } else {\n                currentLiquidity += ticks[nextTickToCross].liquidity;\n            }\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside0;\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside1;\n            nextTickToCross = ticks[nextTickToCross].previousTick;\n        } else {\n            // Moving backwards through the linked list.\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\n                currentLiquidity += ticks[nextTickToCross].liquidity;\n            } else {\n                currentLiquidity -= ticks[nextTickToCross].liquidity;\n            }\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside1;\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside0;\n            nextTickToCross = ticks[nextTickToCross].nextTick;\n        }\n        return (currentLiquidity, nextTickToCross);\n    }\n\n    function insert(\n        mapping(int24 => Tick) storage ticks,\n        uint256 feeGrowthGlobal0,\n        uint256 feeGrowthGlobal1,\n        uint160 secondsGrowthGlobal,\n        int24 lowerOld,\n        int24 lower,\n        int24 upperOld,\n        int24 upper,\n        uint128 amount,\n        int24 nearestTick,\n        uint160 currentPrice\n    ) public returns (int24) {\n        require(lower < upper, \"WRONG_ORDER\");\n        require(TickMath.MIN_TICK <= lower, \"LOWER_RANGE\");\n        require(upper <= TickMath.MAX_TICK, \"UPPER_RANGE\");\n\n        {\n            // Stack overflow.\n            uint128 currentLowerLiquidity = ticks[lower].liquidity;\n            if (currentLowerLiquidity != 0 || lower == TickMath.MIN_TICK) {\n                // We are adding liquidity to an existing tick.\n                ticks[lower].liquidity = currentLowerLiquidity + amount;\n            } else {\n                // We are inserting a new tick.\n                Ticks.Tick storage old = ticks[lowerOld];\n                int24 oldNextTick = old.nextTick;\n\n                require((old.liquidity != 0 || lowerOld == TickMath.MIN_TICK) && lowerOld < lower && lower < oldNextTick, \"LOWER_ORDER\");\n\n                if (lower <= nearestTick) {\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\n                } else {\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, 0, 0, 0);\n                }\n\n                old.nextTick = lower;\n                ticks[oldNextTick].previousTick = lower;\n            }\n        }\n\n        uint128 currentUpperLiquidity = ticks[upper].liquidity;\n        if (currentUpperLiquidity != 0 || upper == TickMath.MAX_TICK) {\n            // We are adding liquidity to an existing tick.\n            ticks[upper].liquidity = currentUpperLiquidity + amount;\n        } else {\n            // Inserting a new tick.\n            Ticks.Tick storage old = ticks[upperOld];\n            int24 oldNextTick = old.nextTick;\n\n            require(old.liquidity != 0 && oldNextTick > upper && upperOld < upper, \"UPPER_ORDER\");\n\n            if (upper <= nearestTick) {\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\n            } else {\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, 0, 0, 0);\n            }\n            old.nextTick = upper;\n            ticks[oldNextTick].previousTick = upper;\n        }\n\n        int24 actualNearestTick = TickMath.getTickAtSqrtRatio(currentPrice);\n\n        if (nearestTick < upper && upper <= actualNearestTick) {\n            nearestTick = upper;\n        } else if (nearestTick < lower && lower <= actualNearestTick) {\n            nearestTick = lower;\n        }\n\n        return nearestTick;\n    }\n\n    function remove(\n        mapping(int24 => Tick) storage ticks,\n        int24 lower,\n        int24 upper,\n        uint128 amount,\n        int24 nearestTick\n    ) public returns (int24) {\n        Ticks.Tick storage current = ticks[lower];\n\n        if (lower != TickMath.MIN_TICK && current.liquidity == amount) {\n            // Delete lower tick.\n            Ticks.Tick storage previous = ticks[current.previousTick];\n            Ticks.Tick storage next = ticks[current.nextTick];\n\n            previous.nextTick = current.nextTick;\n            next.previousTick = current.previousTick;\n\n            if (nearestTick == lower) nearestTick = current.previousTick;\n\n            delete ticks[lower];\n        } else {\n            unchecked {\n                current.liquidity -= amount;\n            }\n        }\n\n        current = ticks[upper];\n\n        if (upper != TickMath.MAX_TICK && current.liquidity == amount) {\n            // Delete upper tick.\n            Ticks.Tick storage previous = ticks[current.previousTick];\n            Ticks.Tick storage next = ticks[current.nextTick];\n\n            previous.nextTick = current.nextTick;\n            next.previousTick = current.previousTick;\n\n            if (nearestTick == upper) nearestTick = current.previousTick;\n\n            delete ticks[upper];\n        } else {\n            unchecked {\n                current.liquidity -= amount;\n            }\n        }\n\n        return nearestTick;\n    }\n}\n"
      },
      "hardhat/console.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >= 0.4.22 <0.9.0;\n\nlibrary console {\n\taddress constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);\n\n\tfunction _sendLogPayload(bytes memory payload) private view {\n\t\tuint256 payloadLength = payload.length;\n\t\taddress consoleAddress = CONSOLE_ADDRESS;\n\t\tassembly {\n\t\t\tlet payloadStart := add(payload, 32)\n\t\t\tlet r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)\n\t\t}\n\t}\n\n\tfunction log() internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log()\"));\n\t}\n\n\tfunction logInt(int p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(int)\", p0));\n\t}\n\n\tfunction logUint(uint p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint)\", p0));\n\t}\n\n\tfunction logString(string memory p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string)\", p0));\n\t}\n\n\tfunction logBool(bool p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool)\", p0));\n\t}\n\n\tfunction logAddress(address p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address)\", p0));\n\t}\n\n\tfunction logBytes(bytes memory p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes)\", p0));\n\t}\n\n\tfunction logBytes1(bytes1 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes1)\", p0));\n\t}\n\n\tfunction logBytes2(bytes2 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes2)\", p0));\n\t}\n\n\tfunction logBytes3(bytes3 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes3)\", p0));\n\t}\n\n\tfunction logBytes4(bytes4 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes4)\", p0));\n\t}\n\n\tfunction logBytes5(bytes5 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes5)\", p0));\n\t}\n\n\tfunction logBytes6(bytes6 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes6)\", p0));\n\t}\n\n\tfunction logBytes7(bytes7 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes7)\", p0));\n\t}\n\n\tfunction logBytes8(bytes8 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes8)\", p0));\n\t}\n\n\tfunction logBytes9(bytes9 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes9)\", p0));\n\t}\n\n\tfunction logBytes10(bytes10 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes10)\", p0));\n\t}\n\n\tfunction logBytes11(bytes11 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes11)\", p0));\n\t}\n\n\tfunction logBytes12(bytes12 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes12)\", p0));\n\t}\n\n\tfunction logBytes13(bytes13 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes13)\", p0));\n\t}\n\n\tfunction logBytes14(bytes14 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes14)\", p0));\n\t}\n\n\tfunction logBytes15(bytes15 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes15)\", p0));\n\t}\n\n\tfunction logBytes16(bytes16 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes16)\", p0));\n\t}\n\n\tfunction logBytes17(bytes17 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes17)\", p0));\n\t}\n\n\tfunction logBytes18(bytes18 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes18)\", p0));\n\t}\n\n\tfunction logBytes19(bytes19 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes19)\", p0));\n\t}\n\n\tfunction logBytes20(bytes20 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes20)\", p0));\n\t}\n\n\tfunction logBytes21(bytes21 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes21)\", p0));\n\t}\n\n\tfunction logBytes22(bytes22 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes22)\", p0));\n\t}\n\n\tfunction logBytes23(bytes23 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes23)\", p0));\n\t}\n\n\tfunction logBytes24(bytes24 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes24)\", p0));\n\t}\n\n\tfunction logBytes25(bytes25 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes25)\", p0));\n\t}\n\n\tfunction logBytes26(bytes26 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes26)\", p0));\n\t}\n\n\tfunction logBytes27(bytes27 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes27)\", p0));\n\t}\n\n\tfunction logBytes28(bytes28 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes28)\", p0));\n\t}\n\n\tfunction logBytes29(bytes29 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes29)\", p0));\n\t}\n\n\tfunction logBytes30(bytes30 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes30)\", p0));\n\t}\n\n\tfunction logBytes31(bytes31 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes31)\", p0));\n\t}\n\n\tfunction logBytes32(bytes32 p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bytes32)\", p0));\n\t}\n\n\tfunction log(uint p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint)\", p0));\n\t}\n\n\tfunction log(string memory p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string)\", p0));\n\t}\n\n\tfunction log(bool p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool)\", p0));\n\t}\n\n\tfunction log(address p0) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address)\", p0));\n\t}\n\n\tfunction log(uint p0, uint p1) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint)\", p0, p1));\n\t}\n\n\tfunction log(uint p0, string memory p1) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string)\", p0, p1));\n\t}\n\n\tfunction log(uint p0, bool p1) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool)\", p0, p1));\n\t}\n\n\tfunction log(uint p0, address p1) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address)\", p0, p1));\n\t}\n\n\tfunction log(string memory p0, uint p1) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint)\", p0, p1));\n\t}\n\n\tfunction log(string memory p0, string memory p1) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string)\", p0, p1));\n\t}\n\n\tfunction log(string memory p0, bool p1) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool)\", p0, p1));\n\t}\n\n\tfunction log(string memory p0, address p1) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address)\", p0, p1));\n\t}\n\n\tfunction log(bool p0, uint p1) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint)\", p0, p1));\n\t}\n\n\tfunction log(bool p0, string memory p1) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string)\", p0, p1));\n\t}\n\n\tfunction log(bool p0, bool p1) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool)\", p0, p1));\n\t}\n\n\tfunction log(bool p0, address p1) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address)\", p0, p1));\n\t}\n\n\tfunction log(address p0, uint p1) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint)\", p0, p1));\n\t}\n\n\tfunction log(address p0, string memory p1) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string)\", p0, p1));\n\t}\n\n\tfunction log(address p0, bool p1) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool)\", p0, p1));\n\t}\n\n\tfunction log(address p0, address p1) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address)\", p0, p1));\n\t}\n\n\tfunction log(uint p0, uint p1, uint p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,uint)\", p0, p1, p2));\n\t}\n\n\tfunction log(uint p0, uint p1, string memory p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,string)\", p0, p1, p2));\n\t}\n\n\tfunction log(uint p0, uint p1, bool p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,bool)\", p0, p1, p2));\n\t}\n\n\tfunction log(uint p0, uint p1, address p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,address)\", p0, p1, p2));\n\t}\n\n\tfunction log(uint p0, string memory p1, uint p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,uint)\", p0, p1, p2));\n\t}\n\n\tfunction log(uint p0, string memory p1, string memory p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,string)\", p0, p1, p2));\n\t}\n\n\tfunction log(uint p0, string memory p1, bool p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,bool)\", p0, p1, p2));\n\t}\n\n\tfunction log(uint p0, string memory p1, address p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,address)\", p0, p1, p2));\n\t}\n\n\tfunction log(uint p0, bool p1, uint p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,uint)\", p0, p1, p2));\n\t}\n\n\tfunction log(uint p0, bool p1, string memory p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,string)\", p0, p1, p2));\n\t}\n\n\tfunction log(uint p0, bool p1, bool p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,bool)\", p0, p1, p2));\n\t}\n\n\tfunction log(uint p0, bool p1, address p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,address)\", p0, p1, p2));\n\t}\n\n\tfunction log(uint p0, address p1, uint p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,uint)\", p0, p1, p2));\n\t}\n\n\tfunction log(uint p0, address p1, string memory p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,string)\", p0, p1, p2));\n\t}\n\n\tfunction log(uint p0, address p1, bool p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,bool)\", p0, p1, p2));\n\t}\n\n\tfunction log(uint p0, address p1, address p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,address)\", p0, p1, p2));\n\t}\n\n\tfunction log(string memory p0, uint p1, uint p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,uint)\", p0, p1, p2));\n\t}\n\n\tfunction log(string memory p0, uint p1, string memory p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,string)\", p0, p1, p2));\n\t}\n\n\tfunction log(string memory p0, uint p1, bool p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,bool)\", p0, p1, p2));\n\t}\n\n\tfunction log(string memory p0, uint p1, address p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,address)\", p0, p1, p2));\n\t}\n\n\tfunction log(string memory p0, string memory p1, uint p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,uint)\", p0, p1, p2));\n\t}\n\n\tfunction log(string memory p0, string memory p1, string memory p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,string)\", p0, p1, p2));\n\t}\n\n\tfunction log(string memory p0, string memory p1, bool p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,bool)\", p0, p1, p2));\n\t}\n\n\tfunction log(string memory p0, string memory p1, address p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,address)\", p0, p1, p2));\n\t}\n\n\tfunction log(string memory p0, bool p1, uint p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,uint)\", p0, p1, p2));\n\t}\n\n\tfunction log(string memory p0, bool p1, string memory p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,string)\", p0, p1, p2));\n\t}\n\n\tfunction log(string memory p0, bool p1, bool p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,bool)\", p0, p1, p2));\n\t}\n\n\tfunction log(string memory p0, bool p1, address p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,address)\", p0, p1, p2));\n\t}\n\n\tfunction log(string memory p0, address p1, uint p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,uint)\", p0, p1, p2));\n\t}\n\n\tfunction log(string memory p0, address p1, string memory p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,string)\", p0, p1, p2));\n\t}\n\n\tfunction log(string memory p0, address p1, bool p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,bool)\", p0, p1, p2));\n\t}\n\n\tfunction log(string memory p0, address p1, address p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,address)\", p0, p1, p2));\n\t}\n\n\tfunction log(bool p0, uint p1, uint p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,uint)\", p0, p1, p2));\n\t}\n\n\tfunction log(bool p0, uint p1, string memory p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,string)\", p0, p1, p2));\n\t}\n\n\tfunction log(bool p0, uint p1, bool p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,bool)\", p0, p1, p2));\n\t}\n\n\tfunction log(bool p0, uint p1, address p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,address)\", p0, p1, p2));\n\t}\n\n\tfunction log(bool p0, string memory p1, uint p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,uint)\", p0, p1, p2));\n\t}\n\n\tfunction log(bool p0, string memory p1, string memory p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,string)\", p0, p1, p2));\n\t}\n\n\tfunction log(bool p0, string memory p1, bool p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,bool)\", p0, p1, p2));\n\t}\n\n\tfunction log(bool p0, string memory p1, address p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,address)\", p0, p1, p2));\n\t}\n\n\tfunction log(bool p0, bool p1, uint p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,uint)\", p0, p1, p2));\n\t}\n\n\tfunction log(bool p0, bool p1, string memory p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,string)\", p0, p1, p2));\n\t}\n\n\tfunction log(bool p0, bool p1, bool p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,bool)\", p0, p1, p2));\n\t}\n\n\tfunction log(bool p0, bool p1, address p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,address)\", p0, p1, p2));\n\t}\n\n\tfunction log(bool p0, address p1, uint p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,uint)\", p0, p1, p2));\n\t}\n\n\tfunction log(bool p0, address p1, string memory p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,string)\", p0, p1, p2));\n\t}\n\n\tfunction log(bool p0, address p1, bool p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,bool)\", p0, p1, p2));\n\t}\n\n\tfunction log(bool p0, address p1, address p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,address)\", p0, p1, p2));\n\t}\n\n\tfunction log(address p0, uint p1, uint p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,uint)\", p0, p1, p2));\n\t}\n\n\tfunction log(address p0, uint p1, string memory p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,string)\", p0, p1, p2));\n\t}\n\n\tfunction log(address p0, uint p1, bool p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,bool)\", p0, p1, p2));\n\t}\n\n\tfunction log(address p0, uint p1, address p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,address)\", p0, p1, p2));\n\t}\n\n\tfunction log(address p0, string memory p1, uint p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,uint)\", p0, p1, p2));\n\t}\n\n\tfunction log(address p0, string memory p1, string memory p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,string)\", p0, p1, p2));\n\t}\n\n\tfunction log(address p0, string memory p1, bool p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,bool)\", p0, p1, p2));\n\t}\n\n\tfunction log(address p0, string memory p1, address p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,address)\", p0, p1, p2));\n\t}\n\n\tfunction log(address p0, bool p1, uint p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,uint)\", p0, p1, p2));\n\t}\n\n\tfunction log(address p0, bool p1, string memory p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,string)\", p0, p1, p2));\n\t}\n\n\tfunction log(address p0, bool p1, bool p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,bool)\", p0, p1, p2));\n\t}\n\n\tfunction log(address p0, bool p1, address p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,address)\", p0, p1, p2));\n\t}\n\n\tfunction log(address p0, address p1, uint p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,uint)\", p0, p1, p2));\n\t}\n\n\tfunction log(address p0, address p1, string memory p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,string)\", p0, p1, p2));\n\t}\n\n\tfunction log(address p0, address p1, bool p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,bool)\", p0, p1, p2));\n\t}\n\n\tfunction log(address p0, address p1, address p2) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,address)\", p0, p1, p2));\n\t}\n\n\tfunction log(uint p0, uint p1, uint p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,uint,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, uint p1, uint p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,uint,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, uint p1, uint p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,uint,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, uint p1, uint p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,uint,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, uint p1, string memory p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,string,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, uint p1, string memory p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,string,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, uint p1, string memory p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,string,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, uint p1, string memory p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,string,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, uint p1, bool p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,bool,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, uint p1, bool p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,bool,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, uint p1, bool p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,bool,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, uint p1, bool p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,bool,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, uint p1, address p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,address,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, uint p1, address p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,address,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, uint p1, address p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,address,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, uint p1, address p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,uint,address,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, string memory p1, uint p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,uint,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, string memory p1, uint p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,uint,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, string memory p1, uint p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,uint,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, string memory p1, uint p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,uint,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, string memory p1, string memory p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,string,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, string memory p1, string memory p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,string,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, string memory p1, string memory p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,string,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, string memory p1, string memory p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,string,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, string memory p1, bool p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,bool,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, string memory p1, bool p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,bool,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, string memory p1, bool p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,bool,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, string memory p1, bool p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,bool,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, string memory p1, address p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,address,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, string memory p1, address p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,address,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, string memory p1, address p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,address,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, string memory p1, address p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,string,address,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, bool p1, uint p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,uint,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, bool p1, uint p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,uint,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, bool p1, uint p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,uint,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, bool p1, uint p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,uint,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, bool p1, string memory p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,string,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, bool p1, string memory p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,string,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, bool p1, string memory p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,string,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, bool p1, string memory p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,string,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, bool p1, bool p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,bool,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, bool p1, bool p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,bool,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, bool p1, bool p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,bool,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, bool p1, bool p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,bool,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, bool p1, address p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,address,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, bool p1, address p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,address,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, bool p1, address p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,address,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, bool p1, address p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,bool,address,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, address p1, uint p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,uint,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, address p1, uint p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,uint,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, address p1, uint p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,uint,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, address p1, uint p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,uint,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, address p1, string memory p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,string,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, address p1, string memory p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,string,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, address p1, string memory p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,string,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, address p1, string memory p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,string,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, address p1, bool p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,bool,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, address p1, bool p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,bool,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, address p1, bool p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,bool,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, address p1, bool p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,bool,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, address p1, address p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,address,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, address p1, address p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,address,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, address p1, address p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,address,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(uint p0, address p1, address p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(uint,address,address,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, uint p1, uint p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,uint,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, uint p1, uint p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,uint,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, uint p1, uint p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,uint,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, uint p1, uint p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,uint,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, uint p1, string memory p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,string,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, uint p1, string memory p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,string,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, uint p1, string memory p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,string,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, uint p1, string memory p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,string,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, uint p1, bool p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,bool,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, uint p1, bool p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,bool,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, uint p1, bool p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,bool,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, uint p1, bool p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,bool,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, uint p1, address p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,address,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, uint p1, address p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,address,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, uint p1, address p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,address,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, uint p1, address p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,uint,address,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, string memory p1, uint p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,uint,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, string memory p1, uint p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,uint,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, string memory p1, uint p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,uint,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, string memory p1, uint p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,uint,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, string memory p1, string memory p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,string,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, string memory p1, string memory p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,string,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, string memory p1, string memory p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,string,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, string memory p1, string memory p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,string,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, string memory p1, bool p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,bool,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, string memory p1, bool p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,bool,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, string memory p1, bool p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,bool,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, string memory p1, bool p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,bool,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, string memory p1, address p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,address,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, string memory p1, address p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,address,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, string memory p1, address p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,address,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, string memory p1, address p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,string,address,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, bool p1, uint p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,uint,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, bool p1, uint p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,uint,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, bool p1, uint p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,uint,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, bool p1, uint p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,uint,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, bool p1, string memory p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,string,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, bool p1, string memory p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,string,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, bool p1, string memory p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,string,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, bool p1, string memory p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,string,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, bool p1, bool p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,bool,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, bool p1, bool p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,bool,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, bool p1, bool p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,bool,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, bool p1, bool p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,bool,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, bool p1, address p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,address,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, bool p1, address p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,address,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, bool p1, address p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,address,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, bool p1, address p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,bool,address,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, address p1, uint p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,uint,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, address p1, uint p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,uint,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, address p1, uint p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,uint,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, address p1, uint p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,uint,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, address p1, string memory p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,string,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, address p1, string memory p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,string,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, address p1, string memory p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,string,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, address p1, string memory p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,string,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, address p1, bool p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,bool,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, address p1, bool p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,bool,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, address p1, bool p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,bool,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, address p1, bool p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,bool,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, address p1, address p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,address,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, address p1, address p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,address,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, address p1, address p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,address,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(string memory p0, address p1, address p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(string,address,address,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, uint p1, uint p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,uint,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, uint p1, uint p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,uint,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, uint p1, uint p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,uint,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, uint p1, uint p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,uint,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, uint p1, string memory p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,string,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, uint p1, string memory p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,string,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, uint p1, string memory p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,string,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, uint p1, string memory p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,string,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, uint p1, bool p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,bool,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, uint p1, bool p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,bool,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, uint p1, bool p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,bool,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, uint p1, bool p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,bool,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, uint p1, address p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,address,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, uint p1, address p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,address,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, uint p1, address p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,address,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, uint p1, address p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,uint,address,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, string memory p1, uint p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,uint,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, string memory p1, uint p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,uint,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, string memory p1, uint p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,uint,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, string memory p1, uint p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,uint,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, string memory p1, string memory p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,string,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, string memory p1, string memory p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,string,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, string memory p1, string memory p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,string,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, string memory p1, string memory p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,string,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, string memory p1, bool p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,bool,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, string memory p1, bool p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,bool,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, string memory p1, bool p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,bool,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, string memory p1, bool p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,bool,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, string memory p1, address p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,address,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, string memory p1, address p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,address,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, string memory p1, address p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,address,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, string memory p1, address p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,string,address,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, bool p1, uint p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,uint,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, bool p1, uint p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,uint,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, bool p1, uint p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,uint,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, bool p1, uint p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,uint,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, bool p1, string memory p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,string,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, bool p1, string memory p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,string,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, bool p1, string memory p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,string,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, bool p1, string memory p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,string,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, bool p1, bool p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,bool,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, bool p1, bool p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,bool,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, bool p1, bool p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,bool,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, bool p1, bool p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,bool,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, bool p1, address p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,address,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, bool p1, address p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,address,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, bool p1, address p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,address,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, bool p1, address p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,bool,address,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, address p1, uint p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,uint,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, address p1, uint p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,uint,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, address p1, uint p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,uint,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, address p1, uint p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,uint,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, address p1, string memory p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,string,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, address p1, string memory p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,string,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, address p1, string memory p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,string,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, address p1, string memory p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,string,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, address p1, bool p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,bool,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, address p1, bool p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,bool,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, address p1, bool p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,bool,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, address p1, bool p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,bool,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, address p1, address p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,address,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, address p1, address p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,address,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, address p1, address p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,address,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(bool p0, address p1, address p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(bool,address,address,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, uint p1, uint p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,uint,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, uint p1, uint p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,uint,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, uint p1, uint p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,uint,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, uint p1, uint p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,uint,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, uint p1, string memory p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,string,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, uint p1, string memory p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,string,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, uint p1, string memory p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,string,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, uint p1, string memory p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,string,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, uint p1, bool p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,bool,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, uint p1, bool p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,bool,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, uint p1, bool p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,bool,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, uint p1, bool p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,bool,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, uint p1, address p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,address,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, uint p1, address p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,address,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, uint p1, address p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,address,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, uint p1, address p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,uint,address,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, string memory p1, uint p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,uint,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, string memory p1, uint p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,uint,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, string memory p1, uint p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,uint,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, string memory p1, uint p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,uint,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, string memory p1, string memory p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,string,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, string memory p1, string memory p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,string,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, string memory p1, string memory p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,string,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, string memory p1, string memory p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,string,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, string memory p1, bool p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,bool,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, string memory p1, bool p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,bool,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, string memory p1, bool p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,bool,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, string memory p1, bool p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,bool,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, string memory p1, address p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,address,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, string memory p1, address p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,address,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, string memory p1, address p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,address,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, string memory p1, address p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,string,address,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, bool p1, uint p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,uint,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, bool p1, uint p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,uint,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, bool p1, uint p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,uint,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, bool p1, uint p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,uint,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, bool p1, string memory p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,string,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, bool p1, string memory p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,string,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, bool p1, string memory p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,string,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, bool p1, string memory p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,string,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, bool p1, bool p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,bool,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, bool p1, bool p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,bool,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, bool p1, bool p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,bool,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, bool p1, bool p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,bool,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, bool p1, address p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,address,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, bool p1, address p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,address,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, bool p1, address p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,address,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, bool p1, address p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,bool,address,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, address p1, uint p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,uint,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, address p1, uint p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,uint,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, address p1, uint p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,uint,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, address p1, uint p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,uint,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, address p1, string memory p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,string,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, address p1, string memory p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,string,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, address p1, string memory p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,string,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, address p1, string memory p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,string,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, address p1, bool p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,bool,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, address p1, bool p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,bool,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, address p1, bool p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,bool,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, address p1, bool p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,bool,address)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, address p1, address p2, uint p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,address,uint)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, address p1, address p2, string memory p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,address,string)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, address p1, address p2, bool p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,address,bool)\", p0, p1, p2, p3));\n\t}\n\n\tfunction log(address p0, address p1, address p2, address p3) internal view {\n\t\t_sendLogPayload(abi.encodeWithSignature(\"log(address,address,address,address)\", p0, p1, p2, p3));\n\t}\n\n}\n"
      },
      "contracts/libraries/concentratedPool/UnsafeMath.sol": {
        "content": "// SPDX-License-Identifier: GPL-2.0-or-later\n\npragma solidity >=0.5.0;\n\n/// @notice Math library that contains methods that perform common math functions but do not do any overflow or underflow checks.\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/UnsafeMath.sol.\nlibrary UnsafeMath {\n    /// @notice Returns ceil(x / y).\n    /// @dev Division by 0 has unspecified behavior, and must be checked externally.\n    /// @param x The dividend.\n    /// @param y The divisor.\n    /// @return z The quotient, ceil(x / y).\n    function divRoundingUp(uint256 x, uint256 y) internal pure returns (uint256 z) {\n        assembly {\n            z := add(div(x, y), gt(mod(x, y), 0))\n        }\n    }\n}\n"
      },
      "contracts/pool/concentrated/ConcentratedLiquidityPool.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"../../interfaces/IBentoBoxMinimal.sol\";\nimport \"../../interfaces/IMasterDeployer.sol\";\nimport \"../../interfaces/IPool.sol\";\nimport \"../../interfaces/concentratedPool/IPositionManager.sol\";\nimport \"../../interfaces/ITridentCallee.sol\";\nimport \"../../interfaces/ITridentRouter.sol\";\nimport \"../../libraries/concentratedPool/FullMath.sol\";\nimport \"../../libraries/concentratedPool/TickMath.sol\";\nimport \"../../libraries/concentratedPool/UnsafeMath.sol\";\nimport \"../../libraries/concentratedPool/DyDxMath.sol\";\nimport \"../../libraries/concentratedPool/SwapLib.sol\";\nimport \"../../libraries/concentratedPool/Ticks.sol\";\n\n/// @notice Trident exchange pool template implementing concentrated liquidity for swapping between an ERC-20 token pair.\n/// @dev Amounts are considered to be in Bentobox shared\ncontract ConcentratedLiquidityPool is IPool {\n    using Ticks for mapping(int24 => Ticks.Tick);\n\n    event Mint(address indexed owner, uint256 amount0, uint256 amount1);\n    event Burn(address indexed owner, uint256 amount0, uint256 amount1);\n    event Collect(address indexed sender, uint256 amount0, uint256 amount1);\n    event Sync(uint256 reserveShares0, uint256 reserveShares1);\n\n    bytes32 public constant override poolIdentifier = \"Trident:ConcentratedLiquidity\";\n\n    uint24 internal constant MAX_FEE = 100000; /// @dev Maximum `swapFee` is 10%.\n    /// @dev References for tickSpacing:\n    /// 100 tickSpacing -> 2% between ticks.\n    uint24 internal immutable tickSpacing;\n    uint24 internal immutable swapFee; /// @dev 1000 corresponds to 0.1% fee. Fee is measured in pips.\n    uint128 internal immutable MAX_TICK_LIQUIDITY;\n\n    address internal immutable barFeeTo;\n    IBentoBoxMinimal internal immutable bento;\n    IMasterDeployer internal immutable masterDeployer;\n\n    address internal immutable token0;\n    address internal immutable token1;\n\n    uint128 public liquidity;\n\n    uint160 internal secondsGrowthGlobal; /// @dev Multiplied by 2^128.\n    uint32 internal lastObservation;\n\n    uint256 public feeGrowthGlobal0; /// @dev All fee growth counters are multiplied by 2^128.\n    uint256 public feeGrowthGlobal1;\n\n    uint256 public barFee;\n\n    uint128 internal token0ProtocolFee;\n    uint128 internal token1ProtocolFee;\n\n    uint128 internal reserve0; /// @dev `bento` share balance tracker.\n    uint128 internal reserve1;\n\n    uint160 internal price; /// @dev Sqrt of price aka. √(y/x), multiplied by 2^96.\n    int24 internal nearestTick; /// @dev Tick that is just below the current price.\n\n    uint256 internal unlocked;\n\n    mapping(int24 => Ticks.Tick) public ticks;\n    mapping(address => mapping(int24 => mapping(int24 => Position))) public positions;\n\n    struct Position {\n        uint128 liquidity;\n        uint256 feeGrowthInside0Last;\n        uint256 feeGrowthInside1Last;\n    }\n\n    struct SwapCache {\n        uint256 feeAmount;\n        uint256 totalFeeAmount;\n        uint256 protocolFee;\n        uint256 feeGrowthGlobalA;\n        uint256 feeGrowthGlobalB;\n        uint256 currentPrice;\n        uint256 currentLiquidity;\n        uint256 input;\n        int24 nextTickToCross;\n    }\n\n    struct MintParams {\n        int24 lowerOld;\n        int24 lower;\n        int24 upperOld;\n        int24 upper;\n        uint256 amount0Desired;\n        uint256 amount1Desired;\n        bool token0native;\n        bool token1native;\n        address positionOwner; // To mint an NFT the positionOwner should be set to the positionManager contract.\n        address positionRecipient;\n        uint256 positionId;\n    }\n\n    /// @dev Error list to optimize around pool requirements.\n    error Locked();\n    error ZeroAddress();\n    error InvalidToken();\n    error InvalidSwapFee();\n    error LiquidityOverflow();\n    error Token0Missing();\n    error Token1Missing();\n    error InvalidTick();\n    error LowerEven();\n    error UpperOdd();\n    error MaxTickLiquidity();\n    error Overflow();\n\n    modifier lock() {\n        if (unlocked == 2) revert Locked();\n        unlocked = 2;\n        _;\n        unlocked = 1;\n    }\n\n    /// @dev Only set immutable variables here - state changes made here will not be used.\n    constructor(bytes memory _deployData, IMasterDeployer _masterDeployer) {\n        (address _token0, address _token1, uint24 _swapFee, uint160 _price, uint24 _tickSpacing) = abi.decode(\n            _deployData,\n            (address, address, uint24, uint160, uint24)\n        );\n\n        if (_token0 == address(0)) revert ZeroAddress();\n        if (_token0 == address(this)) revert InvalidToken();\n        if (_token1 == address(this)) revert InvalidToken();\n        if (_swapFee > MAX_FEE) revert InvalidSwapFee();\n\n        token0 = _token0;\n        token1 = _token1;\n        swapFee = _swapFee;\n        price = _price;\n        tickSpacing = _tickSpacing;\n        // Prevents global liquidity overflow in the case all ticks are initialised.\n        MAX_TICK_LIQUIDITY = Ticks.getMaxLiquidity(_tickSpacing);\n        ticks[TickMath.MIN_TICK] = Ticks.Tick(TickMath.MIN_TICK, TickMath.MAX_TICK, uint128(0), 0, 0, 0);\n        ticks[TickMath.MAX_TICK] = Ticks.Tick(TickMath.MIN_TICK, TickMath.MAX_TICK, uint128(0), 0, 0, 0);\n        nearestTick = TickMath.MIN_TICK;\n        bento = IBentoBoxMinimal(_masterDeployer.bento());\n        barFeeTo = _masterDeployer.barFeeTo();\n        barFee = _masterDeployer.barFee();\n        masterDeployer = _masterDeployer;\n        unlocked = 1;\n    }\n\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\n    /// The router must ensure that sufficient liquidity has been minted.\n    function mint(bytes calldata data) public override lock returns (uint256 _liquidity) {\n        MintParams memory mintParams = abi.decode(data, (MintParams));\n\n        uint256 priceLower = uint256(TickMath.getSqrtRatioAtTick(mintParams.lower));\n        uint256 priceUpper = uint256(TickMath.getSqrtRatioAtTick(mintParams.upper));\n        uint256 currentPrice = uint256(price);\n\n        _liquidity = DyDxMath.getLiquidityForAmounts(\n            priceLower,\n            priceUpper,\n            currentPrice,\n            mintParams.amount1Desired,\n            mintParams.amount0Desired\n        );\n\n        unchecked {\n            (uint256 amount0fees, uint256 amount1fees, ) = _updatePosition(\n                mintParams.positionOwner,\n                mintParams.lower,\n                mintParams.upper,\n                int128(uint128(_liquidity))\n            );\n            if (amount0fees > 0) {\n                _transfer(token0, amount0fees, mintParams.positionOwner, false);\n                reserve0 -= uint128(amount0fees);\n            }\n            if (amount1fees > 0) {\n                _transfer(token1, amount1fees, mintParams.positionOwner, false);\n                reserve1 -= uint128(amount1fees);\n            }\n        }\n\n        unchecked {\n            if (priceLower < currentPrice && currentPrice < priceUpper) liquidity += uint128(_liquidity);\n        }\n\n        _ensureTickSpacing(mintParams.lower, mintParams.upper);\n\n        nearestTick = Ticks.insert(\n            ticks,\n            feeGrowthGlobal0,\n            feeGrowthGlobal1,\n            secondsGrowthGlobal,\n            mintParams.lowerOld,\n            mintParams.lower,\n            mintParams.upperOld,\n            mintParams.upper,\n            uint128(_liquidity),\n            nearestTick,\n            uint160(currentPrice)\n        );\n\n        (uint128 amount0Actual, uint128 amount1Actual) = DyDxMath.getAmountsForLiquidity(\n            priceLower,\n            priceUpper,\n            currentPrice,\n            _liquidity,\n            true\n        );\n\n        {\n            ITridentRouter.TokenInput[] memory callbackData = new ITridentRouter.TokenInput[](2);\n            callbackData[0] = ITridentRouter.TokenInput(token0, mintParams.token0native, amount0Actual);\n            callbackData[1] = ITridentRouter.TokenInput(token1, mintParams.token1native, amount1Actual);\n            ITridentCallee(msg.sender).tridentMintCallback(abi.encode(callbackData));\n        }\n\n        unchecked {\n            if (amount0Actual != 0) {\n                if (amount0Actual + reserve0 > _balance(token0)) revert Token0Missing();\n                reserve0 += amount0Actual;\n            }\n\n            if (amount1Actual != 0) {\n                if (amount1Actual + reserve1 > _balance(token1)) revert Token1Missing();\n                reserve1 += amount1Actual;\n            }\n        }\n\n        (uint256 feeGrowth0, uint256 feeGrowth1) = rangeFeeGrowth(mintParams.lower, mintParams.upper);\n\n        if (mintParams.positionRecipient != address(0)) {\n            IPositionManager(mintParams.positionOwner).positionMintCallback(\n                mintParams.positionRecipient,\n                mintParams.lower,\n                mintParams.upper,\n                uint128(_liquidity),\n                feeGrowth0,\n                feeGrowth1,\n                mintParams.positionId\n            );\n        }\n\n        emit Mint(mintParams.positionOwner, amount0Actual, amount1Actual);\n    }\n\n    /// @notice Burn function that cannpt conform to the IPool interface due to having three return values.\n    /// @dev Burns LP tokens sent to this contract.\n    function decreaseLiquidity(\n        int24 lower,\n        int24 upper,\n        uint128 amount,\n        address recipient,\n        bool unwrapBento\n    )\n        public\n        returns (\n            IPool.TokenAmount[] memory withdrawnAmounts,\n            IPool.TokenAmount[] memory feesWithdrawn,\n            uint256 oldLiquidity\n        )\n    {\n        uint256 amount0;\n        uint256 amount1;\n\n        {\n            uint160 priceLower = TickMath.getSqrtRatioAtTick(lower);\n            uint160 priceUpper = TickMath.getSqrtRatioAtTick(upper);\n            uint160 currentPrice = price;\n\n            unchecked {\n                if (priceLower < currentPrice && currentPrice < priceUpper) liquidity -= amount;\n            }\n\n            (amount0, amount1) = DyDxMath.getAmountsForLiquidity(\n                uint256(priceLower),\n                uint256(priceUpper),\n                uint256(currentPrice),\n                uint256(amount),\n                false\n            );\n        }\n\n        {\n            // Ensure no overflow happens when we cast to int128.\n            if (amount > uint128(type(int128).max)) revert Overflow();\n\n            uint256 amount0fees;\n            uint256 amount1fees;\n            (amount0fees, amount1fees, oldLiquidity) = _updatePosition(msg.sender, lower, upper, -int128(amount));\n\n            withdrawnAmounts = new TokenAmount[](2);\n            withdrawnAmounts[0] = TokenAmount({token: token0, amount: amount0});\n            withdrawnAmounts[1] = TokenAmount({token: token1, amount: amount1});\n\n            feesWithdrawn = new TokenAmount[](2);\n            feesWithdrawn[0] = TokenAmount({token: token0, amount: amount0fees});\n            feesWithdrawn[1] = TokenAmount({token: token1, amount: amount1fees});\n\n            unchecked {\n                amount0 += amount0fees;\n                amount1 += amount1fees;\n            }\n        }\n\n        unchecked {\n            reserve0 -= uint128(amount0);\n            reserve1 -= uint128(amount1);\n        }\n\n        _transferBothTokens(recipient, amount0, amount1, unwrapBento);\n\n        nearestTick = Ticks.remove(ticks, lower, upper, amount, nearestTick);\n        emit Burn(msg.sender, amount0, amount1);\n    }\n\n    function burn(bytes calldata) public pure override returns (IPool.TokenAmount[] memory) {\n        revert();\n    }\n\n    function burnSingle(bytes calldata) public pure override returns (uint256) {\n        revert();\n    }\n\n    function collect(\n        int24 lower,\n        int24 upper,\n        address recipient,\n        bool unwrapBento\n    ) public lock returns (uint256 amount0fees, uint256 amount1fees) {\n        (amount0fees, amount1fees, ) = _updatePosition(msg.sender, lower, upper, 0);\n\n        _transferBothTokens(recipient, amount0fees, amount1fees, unwrapBento);\n\n        reserve0 -= uint128(amount0fees);\n        reserve1 -= uint128(amount1fees);\n\n        emit Collect(msg.sender, amount0fees, amount1fees);\n    }\n\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage\n    /// - price is √(y/x)\n    /// - x is token0\n    /// - zero for one -> price will move down.\n    function swap(bytes memory data) public override lock returns (uint256 amountOut) {\n        (bool zeroForOne, uint256 inAmount, address recipient, bool unwrapBento) = abi.decode(data, (bool, uint256, address, bool));\n\n        SwapCache memory cache = SwapCache({\n            feeAmount: 0,\n            totalFeeAmount: 0,\n            protocolFee: 0,\n            feeGrowthGlobalA: zeroForOne ? feeGrowthGlobal1 : feeGrowthGlobal0,\n            feeGrowthGlobalB: zeroForOne ? feeGrowthGlobal0 : feeGrowthGlobal1,\n            currentPrice: uint256(price),\n            currentLiquidity: uint256(liquidity),\n            input: inAmount,\n            nextTickToCross: zeroForOne ? nearestTick : ticks[nearestTick].nextTick\n        });\n\n        unchecked {\n            uint256 timestamp = block.timestamp;\n            uint256 diff = timestamp - uint256(lastObservation); // Underflow in 2106. Don't do staking rewards in the year 2106.\n            if (diff > 0 && liquidity > 0) {\n                lastObservation = uint32(timestamp);\n                secondsGrowthGlobal += uint160((diff << 128) / liquidity);\n            }\n        }\n\n        while (cache.input != 0) {\n            uint256 nextTickPrice = uint256(TickMath.getSqrtRatioAtTick(cache.nextTickToCross));\n            uint256 output = 0;\n            bool cross = false;\n\n            if (zeroForOne) {\n                // Trading token 0 (x) for token 1 (y).\n                // Price is decreasing.\n                // Maximum input amount within current tick range: Δx = Δ(1/√𝑃) · L.\n                uint256 maxDx = DyDxMath.getDx(cache.currentLiquidity, nextTickPrice, cache.currentPrice, false);\n\n                if (cache.input <= maxDx) {\n                    // We can swap within the current range.\n                    uint256 liquidityPadded = cache.currentLiquidity << 96;\n                    // Calculate new price after swap: √𝑃[new] =  L · √𝑃 / (L + Δx · √𝑃)\n                    // This is derrived from Δ(1/√𝑃) = Δx/L\n                    // where Δ(1/√𝑃) is 1/√𝑃[old] - 1/√𝑃[new] and we solve for √𝑃[new].\n                    // In case of an owerflow we can use: √𝑃[new] = L / (L / √𝑃 + Δx).\n                    // This is derrived by dividing the original fraction by √𝑃 on both sides.\n                    uint256 newPrice = uint256(\n                        FullMath.mulDivRoundingUp(liquidityPadded, cache.currentPrice, liquidityPadded + cache.currentPrice * cache.input)\n                    );\n\n                    if (!(nextTickPrice <= newPrice && newPrice < cache.currentPrice)) {\n                        // Overflow. We use a modified version of the formula.\n                        newPrice = uint160(UnsafeMath.divRoundingUp(liquidityPadded, liquidityPadded / cache.currentPrice + cache.input));\n                    }\n                    // Based on the price difference calculate the output of th swap: Δy = Δ√P · L.\n                    output = DyDxMath.getDy(cache.currentLiquidity, newPrice, cache.currentPrice, false);\n                    cache.currentPrice = newPrice;\n                    cache.input = 0;\n                } else {\n                    // Execute swap step and cross the tick.\n                    output = DyDxMath.getDy(cache.currentLiquidity, nextTickPrice, cache.currentPrice, false);\n                    cache.currentPrice = nextTickPrice;\n                    cross = true;\n                    cache.input -= maxDx;\n                }\n            } else {\n                // Price is increasing.\n                // Maximum swap amount within the current tick range: Δy = Δ√P · L.\n                uint256 maxDy = DyDxMath.getDy(cache.currentLiquidity, cache.currentPrice, nextTickPrice, false);\n\n                if (cache.input <= maxDy) {\n                    // We can swap within the current range.\n                    // Calculate new price after swap: ΔP = Δy/L.\n                    uint256 newPrice = cache.currentPrice +\n                        FullMath.mulDiv(cache.input, 0x1000000000000000000000000, cache.currentLiquidity);\n                    // Calculate output of swap\n                    // - Δx = Δ(1/√P) · L.\n                    output = DyDxMath.getDx(cache.currentLiquidity, cache.currentPrice, newPrice, false);\n                    cache.currentPrice = newPrice;\n                    cache.input = 0;\n                } else {\n                    // Swap & cross the tick.\n                    output = DyDxMath.getDx(cache.currentLiquidity, cache.currentPrice, nextTickPrice, false);\n                    cache.currentPrice = nextTickPrice;\n                    cross = true;\n                    cache.input -= maxDy;\n                }\n            }\n\n            // cache.feeGrowthGlobalA is the feeGrowthGlobal counter for the output token.\n            // It increases each swap step.\n            (cache.totalFeeAmount, amountOut, cache.protocolFee, cache.feeGrowthGlobalA) = SwapLib.handleFees(\n                output,\n                swapFee,\n                barFee,\n                cache.currentLiquidity,\n                cache.totalFeeAmount,\n                amountOut,\n                cache.protocolFee,\n                cache.feeGrowthGlobalA\n            );\n            if (cross) {\n                (cache.currentLiquidity, cache.nextTickToCross) = Ticks.cross(\n                    ticks,\n                    cache.nextTickToCross,\n                    secondsGrowthGlobal,\n                    cache.currentLiquidity,\n                    cache.feeGrowthGlobalA,\n                    cache.feeGrowthGlobalB,\n                    zeroForOne,\n                    tickSpacing\n                );\n                if (cache.currentLiquidity == 0) {\n                    // We step into a zone that has liquidity - or we reach the end of the linked list.\n                    cache.currentPrice = uint256(TickMath.getSqrtRatioAtTick(cache.nextTickToCross));\n                    (cache.currentLiquidity, cache.nextTickToCross) = Ticks.cross(\n                        ticks,\n                        cache.nextTickToCross,\n                        secondsGrowthGlobal,\n                        cache.currentLiquidity,\n                        cache.feeGrowthGlobalA,\n                        cache.feeGrowthGlobalB,\n                        zeroForOne,\n                        tickSpacing\n                    );\n                }\n            }\n        }\n\n        price = uint160(cache.currentPrice);\n\n        int24 newNearestTick = zeroForOne ? cache.nextTickToCross : ticks[cache.nextTickToCross].previousTick;\n\n        if (nearestTick != newNearestTick) {\n            nearestTick = newNearestTick;\n            liquidity = uint128(cache.currentLiquidity);\n        }\n\n        _updateReserves(zeroForOne, uint128(inAmount), amountOut);\n\n        _updateFees(zeroForOne, cache.feeGrowthGlobalA, uint128(cache.protocolFee));\n\n        if (zeroForOne) {\n            _transfer(token1, amountOut, recipient, unwrapBento);\n            emit Swap(recipient, token0, token1, inAmount, amountOut);\n        } else {\n            _transfer(token0, amountOut, recipient, unwrapBento);\n            emit Swap(recipient, token1, token0, inAmount, amountOut);\n        }\n    }\n\n    /// @dev Reserved for IPool.\n    function flashSwap(bytes calldata) public pure override returns (uint256) {\n        revert();\n    }\n\n    /// @dev Updates `barFee` for Trident protocol.\n    function updateBarFee() public {\n        barFee = IMasterDeployer(masterDeployer).barFee();\n    }\n\n    /// @dev Collects fees for Trident protocol.\n    function collectProtocolFee() public lock returns (uint128 amount0, uint128 amount1) {\n        if (token0ProtocolFee > 1) {\n            amount0 = token0ProtocolFee - 1;\n            token0ProtocolFee = 1;\n            reserve0 -= amount0;\n            _transfer(token0, amount0, barFeeTo, false);\n        }\n        if (token1ProtocolFee > 1) {\n            amount1 = token1ProtocolFee - 1;\n            token1ProtocolFee = 1;\n            reserve1 -= amount1;\n            _transfer(token1, amount1, barFeeTo, false);\n        }\n    }\n\n    function _ensureTickSpacing(int24 lower, int24 upper) internal view {\n        if (lower % int24(tickSpacing) != 0) revert InvalidTick();\n        if ((lower / int24(tickSpacing)) % 2 != 0) revert LowerEven();\n        if (upper % int24(tickSpacing) != 0) revert InvalidTick();\n        if ((upper / int24(tickSpacing)) % 2 == 0) revert UpperOdd();\n    }\n\n    function _updateReserves(\n        bool zeroForOne,\n        uint128 inAmount,\n        uint256 amountOut\n    ) internal {\n        if (zeroForOne) {\n            uint256 balance0 = _balance(token0);\n            uint128 newBalance = reserve0 + inAmount;\n            if (uint256(newBalance) > balance0) revert Token0Missing();\n            reserve0 = newBalance;\n            reserve1 -= uint128(amountOut); // todo wrap in unchecked {}\n        } else {\n            uint256 balance1 = _balance(token1);\n            uint128 newBalance = reserve1 + inAmount;\n            if (uint256(newBalance) > balance1) revert Token1Missing();\n            reserve1 = newBalance;\n            reserve0 -= uint128(amountOut);\n        }\n    }\n\n    function _updateFees(\n        bool zeroForOne,\n        uint256 feeGrowthGlobal,\n        uint128 protocolFee\n    ) internal {\n        if (zeroForOne) {\n            feeGrowthGlobal1 = feeGrowthGlobal;\n            token1ProtocolFee += protocolFee;\n        } else {\n            feeGrowthGlobal0 = feeGrowthGlobal;\n            token0ProtocolFee += protocolFee;\n        }\n    }\n\n    function _updatePosition(\n        address owner,\n        int24 lower,\n        int24 upper,\n        int128 amount\n    )\n        internal\n        returns (\n            uint256 amount0fees,\n            uint256 amount1fees,\n            uint256 oldLiquidity\n        )\n    {\n        Position storage position = positions[owner][lower][upper];\n\n        (uint256 growth0current, uint256 growth1current) = rangeFeeGrowth(lower, upper);\n        amount0fees = FullMath.mulDiv(\n            growth0current - position.feeGrowthInside0Last,\n            position.liquidity,\n            0x100000000000000000000000000000000\n        );\n\n        amount1fees = FullMath.mulDiv(\n            growth1current - position.feeGrowthInside1Last,\n            position.liquidity,\n            0x100000000000000000000000000000000\n        );\n\n        oldLiquidity = position.liquidity;\n\n        if (amount < 0) {\n            position.liquidity -= uint128(-amount);\n        }\n\n        if (amount > 0) {\n            position.liquidity += uint128(amount);\n            if (position.liquidity > MAX_TICK_LIQUIDITY) revert LiquidityOverflow();\n        }\n\n        position.feeGrowthInside0Last = growth0current;\n        position.feeGrowthInside1Last = growth1current;\n    }\n\n    function _balance(address token) internal view returns (uint256 balance) {\n        balance = bento.balanceOf(token, address(this));\n    }\n\n    function _transfer(\n        address token,\n        uint256 shares,\n        address to,\n        bool unwrapBento\n    ) internal {\n        if (unwrapBento) {\n            bento.withdraw(token, address(this), to, 0, shares);\n        } else {\n            bento.transfer(token, address(this), to, shares);\n        }\n    }\n\n    function _transferBothTokens(\n        address to,\n        uint256 shares0,\n        uint256 shares1,\n        bool unwrapBento\n    ) internal {\n        if (unwrapBento) {\n            bento.withdraw(token0, address(this), to, 0, shares0);\n            bento.withdraw(token1, address(this), to, 0, shares1);\n        } else {\n            bento.transfer(token0, address(this), to, shares0);\n            bento.transfer(token1, address(this), to, shares1);\n        }\n    }\n\n    /// @dev Generic formula for fee growth inside a range: (globalGrowth - growthBelow - growthAbove)\n    /// - available counters: global, outside u, outside v.\n\n    ///                  u         ▼         v\n    /// ----|----|-------|xxxxxxxxxxxxxxxxxxx|--------|--------- (global - feeGrowthOutside(u) - feeGrowthOutside(v))\n\n    ///             ▼    u                   v\n    /// ----|----|-------|xxxxxxxxxxxxxxxxxxx|--------|--------- (global - (global - feeGrowthOutside(u)) - feeGrowthOutside(v))\n\n    ///                  u                   v    ▼\n    /// ----|----|-------|xxxxxxxxxxxxxxxxxxx|--------|--------- (global - feeGrowthOutside(u) - (global - feeGrowthOutside(v)))\n\n    /// @notice Calculates the fee growth inside a range (per unit of liquidity).\n    /// @dev Multiply `rangeFeeGrowth` delta by the provided liquidity to get accrued fees for some period.\n    function rangeFeeGrowth(int24 lowerTick, int24 upperTick) public view returns (uint256 feeGrowthInside0, uint256 feeGrowthInside1) {\n        int24 currentTick = nearestTick;\n\n        Ticks.Tick storage lower = ticks[lowerTick];\n        Ticks.Tick storage upper = ticks[upperTick];\n\n        // Calculate fee growth below & above.\n        uint256 _feeGrowthGlobal0 = feeGrowthGlobal0;\n        uint256 _feeGrowthGlobal1 = feeGrowthGlobal1;\n        uint256 feeGrowthBelow0;\n        uint256 feeGrowthBelow1;\n        uint256 feeGrowthAbove0;\n        uint256 feeGrowthAbove1;\n\n        if (lowerTick <= currentTick) {\n            feeGrowthBelow0 = lower.feeGrowthOutside0;\n            feeGrowthBelow1 = lower.feeGrowthOutside1;\n        } else {\n            feeGrowthBelow0 = _feeGrowthGlobal0 - lower.feeGrowthOutside0;\n            feeGrowthBelow1 = _feeGrowthGlobal1 - lower.feeGrowthOutside1;\n        }\n\n        if (currentTick < upperTick) {\n            feeGrowthAbove0 = upper.feeGrowthOutside0;\n            feeGrowthAbove1 = upper.feeGrowthOutside1;\n        } else {\n            feeGrowthAbove0 = _feeGrowthGlobal0 - upper.feeGrowthOutside0;\n            feeGrowthAbove1 = _feeGrowthGlobal1 - upper.feeGrowthOutside1;\n        }\n\n        feeGrowthInside0 = _feeGrowthGlobal0 - feeGrowthBelow0 - feeGrowthAbove0;\n        feeGrowthInside1 = _feeGrowthGlobal1 - feeGrowthBelow1 - feeGrowthAbove1;\n    }\n\n    function getAssets() public view override returns (address[] memory assets) {\n        assets = new address[](2);\n        assets[0] = token0;\n        assets[1] = token1;\n    }\n\n    /// @dev Reserved for IPool.\n    function getAmountOut(bytes calldata) public pure override returns (uint256) {\n        revert();\n    }\n\n    /// @dev Reserved for IPool.\n    function getAmountIn(bytes calldata) public pure override returns (uint256) {\n        revert();\n    }\n\n    function getImmutables()\n        public\n        view\n        returns (\n            uint128 _MAX_TICK_LIQUIDITY,\n            uint24 _tickSpacing,\n            uint24 _swapFee,\n            address _barFeeTo,\n            IBentoBoxMinimal _bento,\n            IMasterDeployer _masterDeployer,\n            address _token0,\n            address _token1\n        )\n    {\n        _MAX_TICK_LIQUIDITY = MAX_TICK_LIQUIDITY;\n        _tickSpacing = tickSpacing;\n        _swapFee = swapFee; // 1000 corresponds to 0.1% fee.\n        _barFeeTo = barFeeTo;\n        _bento = bento;\n        _masterDeployer = masterDeployer;\n        _token0 = token0;\n        _token1 = token1;\n    }\n\n    function getPriceAndNearestTicks() public view returns (uint160 _price, int24 _nearestTick) {\n        _price = price;\n        _nearestTick = nearestTick;\n    }\n\n    function getTokenProtocolFees() public view returns (uint128 _token0ProtocolFee, uint128 _token1ProtocolFee) {\n        _token0ProtocolFee = token0ProtocolFee;\n        _token1ProtocolFee = token1ProtocolFee;\n    }\n\n    function getReserves() public view returns (uint128 _reserve0, uint128 _reserve1) {\n        _reserve0 = reserve0;\n        _reserve1 = reserve1;\n    }\n\n    function getSecondsGrowthAndLastObservation() public view returns (uint160 _secondsGrowthGlobal, uint32 _lastObservation) {\n        _secondsGrowthGlobal = secondsGrowthGlobal;\n        _lastObservation = lastObservation;\n    }\n}\n"
      },
      "contracts/interfaces/ITridentCallee.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\n/// @notice Trident pool callback interface.\ninterface ITridentCallee {\n    function tridentSwapCallback(bytes calldata data) external;\n\n    function tridentMintCallback(bytes calldata data) external;\n}\n"
      },
      "contracts/libraries/concentratedPool/SwapLib.sol": {
        "content": "// SPDX-License-Identifier: GPL-2.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"./FullMath.sol\";\n\n/// @notice Math library that facilitates fee handling for Trident Concentrated Liquidity Pools.\nlibrary SwapLib {\n    function handleFees(\n        uint256 output,\n        uint24 swapFee,\n        uint256 barFee,\n        uint256 currentLiquidity,\n        uint256 totalFeeAmount,\n        uint256 amountOut,\n        uint256 protocolFee,\n        uint256 feeGrowthGlobal\n    )\n        internal\n        pure\n        returns (\n            uint256,\n            uint256,\n            uint256,\n            uint256\n        )\n    {\n        uint256 feeAmount = FullMath.mulDivRoundingUp(output, swapFee, 1e6);\n\n        totalFeeAmount += feeAmount;\n\n        amountOut += output - feeAmount;\n\n        // Calculate `protocolFee` and convert pips to bips.\n        uint256 feeDelta = FullMath.mulDivRoundingUp(feeAmount, barFee, 1e4);\n\n        protocolFee += feeDelta;\n\n        // Updating `feeAmount` based on the protocolFee.\n        feeAmount -= feeDelta;\n\n        feeGrowthGlobal += FullMath.mulDiv(feeAmount, 0x100000000000000000000000000000000, currentLiquidity);\n\n        return (totalFeeAmount, amountOut, protocolFee, feeGrowthGlobal);\n    }\n}\n"
      },
      "contracts/pool/concentrated/ConcentratedLiquidityPoolFactory.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"./ConcentratedLiquidityPool.sol\";\nimport \"../PoolDeployer.sol\";\n\n/// @notice Contract for deploying Trident exchange Concentrated Liquidity Pool with configurations.\n/// @author Mudit Gupta.\ncontract ConcentratedLiquidityPoolFactory is PoolDeployer {\n    constructor(address _masterDeployer) PoolDeployer(_masterDeployer) {}\n\n    function deployPool(bytes memory _deployData) external returns (address pool) {\n        (address tokenA, address tokenB, uint24 swapFee, uint160 price, uint24 tickSpacing) = abi.decode(\n            _deployData,\n            (address, address, uint24, uint160, uint24)\n        );\n        if (tokenA > tokenB) {\n            (tokenA, tokenB) = (tokenB, tokenA);\n        }\n        // @dev Strips any extra data.\n        _deployData = abi.encode(tokenA, tokenB, swapFee, price, tickSpacing);\n\n        address[] memory tokens = new address[](2);\n        tokens[0] = tokenA;\n        tokens[1] = tokenB;\n\n        // @dev Salt is not actually needed since `_deployData` is part of creationCode and already contains the salt.\n        bytes32 salt = keccak256(_deployData);\n        pool = address(new ConcentratedLiquidityPool{salt: salt}(_deployData, IMasterDeployer(masterDeployer)));\n        _registerPool(pool, tokens, salt);\n    }\n}\n"
      },
      "contracts/pool/PoolDeployer.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\n/// @notice Trident pool deployer for whitelisted template factories.\n/// @author Mudit Gupta.\nabstract contract PoolDeployer {\n    address public immutable masterDeployer;\n\n    mapping(address => mapping(address => address[])) public pools;\n    mapping(bytes32 => address) public configAddress;\n\n    error UnauthorisedDeployer();\n    error ZeroAddress();\n    error InvalidTokenOrder();\n\n    modifier onlyMaster() {\n        if (msg.sender != masterDeployer) revert UnauthorisedDeployer();\n        _;\n    }\n\n    constructor(address _masterDeployer) {\n        if (_masterDeployer == address(0)) revert ZeroAddress();\n        masterDeployer = _masterDeployer;\n    }\n\n    function _registerPool(\n        address pool,\n        address[] memory tokens,\n        bytes32 salt\n    ) internal onlyMaster {\n        // @dev Store the address of the deployed contract.\n        configAddress[salt] = pool;\n        // @dev Attacker used underflow, it was not very effective. poolimon!\n        // null token array would cause deployment to fail via out of bounds memory axis/gas limit.\n        unchecked {\n            for (uint256 i; i < tokens.length - 1; i++) {\n                if (tokens[i] >= tokens[i + 1]) revert InvalidTokenOrder();\n                for (uint256 j = i + 1; j < tokens.length; j++) {\n                    pools[tokens[i]][tokens[j]].push(pool);\n                    pools[tokens[j]][tokens[i]].push(pool);\n                }\n            }\n        }\n    }\n\n    function poolsCount(address token0, address token1) external view returns (uint256 count) {\n        count = pools[token0][token1].length;\n    }\n\n    function getPools(\n        address token0,\n        address token1,\n        uint256 startIndex,\n        uint256 count\n    ) external view returns (address[] memory pairPools) {\n        pairPools = new address[](count);\n        for (uint256 i = 0; i < count; i++) {\n            pairPools[i] = pools[token0][token1][startIndex + i];\n        }\n    }\n}\n"
      },
      "contracts/pool/IndexPoolFactory.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"./IndexPool.sol\";\nimport \"./PoolDeployer.sol\";\n\n/// @notice Contract for deploying Trident exchange Index Pool with configurations.\n/// @author Mudit Gupta\ncontract IndexPoolFactory is PoolDeployer {\n    constructor(address _masterDeployer) PoolDeployer(_masterDeployer) {}\n\n    function deployPool(bytes memory _deployData) external returns (address pool) {\n        (address[] memory tokens, uint136[] memory weights, uint256 swapFee) = abi.decode(_deployData, (address[], uint136[], uint256));\n\n        // @dev Strips any extra data.\n        _deployData = abi.encode(tokens, weights, swapFee);\n\n        // @dev Salt is not actually needed since `_deployData` is part of creationCode and already contains the salt.\n        bytes32 salt = keccak256(_deployData);\n        pool = address(new IndexPool{salt: salt}(_deployData, masterDeployer));\n        _registerPool(pool, tokens, salt);\n    }\n}\n"
      },
      "contracts/pool/IndexPool.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"../interfaces/IBentoBoxMinimal.sol\";\nimport \"../interfaces/IMasterDeployer.sol\";\nimport \"../interfaces/IPool.sol\";\nimport \"../interfaces/ITridentCallee.sol\";\nimport \"./TridentERC20.sol\";\n\n/// @notice Trident exchange pool template with constant mean formula for swapping among an array of ERC-20 tokens.\n/// @dev The reserves are stored as bento shares.\n///      The curve is applied to shares as well. This pool does not care about the underlying amounts.\ncontract IndexPool is IPool, TridentERC20 {\n    event Mint(address indexed sender, address tokenIn, uint256 amountIn, address indexed recipient);\n    event Burn(address indexed sender, address tokenOut, uint256 amountOut, address indexed recipient);\n\n    uint256 public immutable swapFee;\n\n    address public immutable barFeeTo;\n    IBentoBoxMinimal public immutable bento;\n    IMasterDeployer public immutable masterDeployer;\n\n    uint256 internal constant BASE = 10**18;\n    uint256 internal constant MIN_TOKENS = 2;\n    uint256 internal constant MAX_TOKENS = 8;\n    uint256 internal constant MIN_FEE = BASE / 10**6;\n    uint256 internal constant MAX_FEE = BASE / 10;\n    uint256 internal constant MIN_WEIGHT = BASE;\n    uint256 internal constant MAX_WEIGHT = BASE * 50;\n    uint256 internal constant MAX_TOTAL_WEIGHT = BASE * 50;\n    uint256 internal constant MIN_BALANCE = BASE / 10**12;\n    uint256 internal constant INIT_POOL_SUPPLY = BASE * 100;\n    uint256 internal constant MIN_POW_BASE = 1;\n    uint256 internal constant MAX_POW_BASE = (2 * BASE) - 1;\n    uint256 internal constant POW_PRECISION = BASE / 10**10;\n    uint256 internal constant MAX_IN_RATIO = BASE / 2;\n    uint256 internal constant MAX_OUT_RATIO = (BASE / 3) + 1;\n\n    uint136 internal totalWeight;\n    address[] internal tokens;\n\n    uint256 public barFee;\n\n    bytes32 public constant override poolIdentifier = \"Trident:Index\";\n\n    uint256 internal unlocked;\n    modifier lock() {\n        require(unlocked == 1, \"LOCKED\");\n        unlocked = 2;\n        _;\n        unlocked = 1;\n    }\n\n    mapping(address => Record) public records;\n    struct Record {\n        uint120 reserve;\n        uint136 weight;\n    }\n\n    constructor(bytes memory _deployData, address _masterDeployer) {\n        (address[] memory _tokens, uint136[] memory _weights, uint256 _swapFee) = abi.decode(_deployData, (address[], uint136[], uint256));\n        // @dev Factory ensures that the tokens are sorted.\n        require(_tokens.length == _weights.length, \"INVALID_ARRAYS\");\n        require(MIN_FEE <= _swapFee && _swapFee <= MAX_FEE, \"INVALID_SWAP_FEE\");\n        require(MIN_TOKENS <= _tokens.length && _tokens.length <= MAX_TOKENS, \"INVALID_TOKENS_LENGTH\");\n\n        for (uint256 i = 0; i < _tokens.length; i++) {\n            require(_tokens[i] != address(0), \"ZERO_ADDRESS\");\n            require(MIN_WEIGHT <= _weights[i] && _weights[i] <= MAX_WEIGHT, \"INVALID_WEIGHT\");\n            records[_tokens[i]] = Record({reserve: 0, weight: _weights[i]});\n            tokens.push(_tokens[i]);\n            totalWeight += _weights[i];\n        }\n\n        require(totalWeight <= MAX_TOTAL_WEIGHT, \"MAX_TOTAL_WEIGHT\");\n        // @dev This burns initial LP supply.\n        _mint(address(0), INIT_POOL_SUPPLY);\n\n        swapFee = _swapFee;\n        barFee = IMasterDeployer(_masterDeployer).barFee();\n        barFeeTo = IMasterDeployer(_masterDeployer).barFeeTo();\n        bento = IBentoBoxMinimal(IMasterDeployer(_masterDeployer).bento());\n        masterDeployer = IMasterDeployer(_masterDeployer);\n        unlocked = 1;\n    }\n\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\n    /// The router must ensure that sufficient LP tokens are minted by using the return value.\n    function mint(bytes calldata data) public override lock returns (uint256 liquidity) {\n        (address recipient, uint256 toMint) = abi.decode(data, (address, uint256));\n\n        uint120 ratio = uint120(_div(toMint, totalSupply));\n\n        for (uint256 i = 0; i < tokens.length; i++) {\n            address tokenIn = tokens[i];\n            uint120 reserve = records[tokenIn].reserve;\n            // @dev If token balance is '0', initialize with `ratio`.\n            uint120 amountIn = reserve != 0 ? uint120(_mul(ratio, reserve)) : ratio;\n            require(amountIn >= MIN_BALANCE, \"MIN_BALANCE\");\n            // @dev Check Trident router has sent `amountIn` for skim into pool.\n            unchecked {\n                // @dev This is safe from overflow - only logged amounts handled.\n                require(_balance(tokenIn) >= amountIn + reserve, \"NOT_RECEIVED\");\n                records[tokenIn].reserve += amountIn;\n            }\n            emit Mint(msg.sender, tokenIn, amountIn, recipient);\n        }\n        _mint(recipient, toMint);\n        liquidity = toMint;\n    }\n\n    /// @dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\n    function burn(bytes calldata data) public override lock returns (IPool.TokenAmount[] memory withdrawnAmounts) {\n        (address recipient, bool unwrapBento, uint256 toBurn) = abi.decode(data, (address, bool, uint256));\n\n        uint256 ratio = _div(toBurn, totalSupply);\n\n        withdrawnAmounts = new TokenAmount[](tokens.length);\n\n        _burn(address(this), toBurn);\n\n        for (uint256 i = 0; i < tokens.length; i++) {\n            address tokenOut = tokens[i];\n            uint256 balance = records[tokenOut].reserve;\n            uint120 amountOut = uint120(_mul(ratio, balance));\n            require(amountOut != 0, \"ZERO_OUT\");\n            // @dev This is safe from underflow - only logged amounts handled.\n            unchecked {\n                records[tokenOut].reserve -= amountOut;\n            }\n            _transfer(tokenOut, amountOut, recipient, unwrapBento);\n            withdrawnAmounts[i] = TokenAmount({token: tokenOut, amount: amountOut});\n            emit Burn(msg.sender, tokenOut, amountOut, recipient);\n        }\n    }\n\n    /// @dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\n    /// - i.e., the user gets a single token out by burning LP tokens.\n    function burnSingle(bytes calldata data) public override lock returns (uint256 amountOut) {\n        (address tokenOut, address recipient, bool unwrapBento, uint256 toBurn) = abi.decode(data, (address, address, bool, uint256));\n\n        Record storage outRecord = records[tokenOut];\n\n        amountOut = _computeSingleOutGivenPoolIn(outRecord.reserve, outRecord.weight, totalSupply, totalWeight, toBurn, swapFee);\n\n        require(amountOut <= _mul(outRecord.reserve, MAX_OUT_RATIO), \"MAX_OUT_RATIO\");\n        // @dev This is safe from underflow - only logged amounts handled.\n        unchecked {\n            outRecord.reserve -= uint120(amountOut);\n        }\n        _burn(address(this), toBurn);\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\n        emit Burn(msg.sender, tokenOut, amountOut, recipient);\n    }\n\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\n    function swap(bytes calldata data) public override lock returns (uint256 amountOut) {\n        (address tokenIn, address tokenOut, address recipient, bool unwrapBento, uint256 amountIn) = abi.decode(\n            data,\n            (address, address, address, bool, uint256)\n        );\n\n        Record storage inRecord = records[tokenIn];\n        Record storage outRecord = records[tokenOut];\n\n        require(amountIn <= _mul(inRecord.reserve, MAX_IN_RATIO), \"MAX_IN_RATIO\");\n\n        amountOut = _getAmountOut(amountIn, inRecord.reserve, inRecord.weight, outRecord.reserve, outRecord.weight);\n        // @dev Check Trident router has sent `amountIn` for skim into pool.\n        unchecked {\n            // @dev This is safe from under/overflow - only logged amounts handled.\n            require(_balance(tokenIn) >= amountIn + inRecord.reserve, \"NOT_RECEIVED\");\n            inRecord.reserve += uint120(amountIn);\n            outRecord.reserve -= uint120(amountOut);\n        }\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\n    }\n\n    /// @dev Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage.\n    function flashSwap(bytes calldata data) public override lock returns (uint256 amountOut) {\n        (address tokenIn, address tokenOut, address recipient, bool unwrapBento, uint256 amountIn, bytes memory context) = abi.decode(\n            data,\n            (address, address, address, bool, uint256, bytes)\n        );\n\n        Record storage inRecord = records[tokenIn];\n        Record storage outRecord = records[tokenOut];\n\n        require(amountIn <= _mul(inRecord.reserve, MAX_IN_RATIO), \"MAX_IN_RATIO\");\n\n        amountOut = _getAmountOut(amountIn, inRecord.reserve, inRecord.weight, outRecord.reserve, outRecord.weight);\n\n        ITridentCallee(msg.sender).tridentSwapCallback(context);\n        // @dev Check Trident router has sent `amountIn` for skim into pool.\n        unchecked {\n            // @dev This is safe from under/overflow - only logged amounts handled.\n            require(_balance(tokenIn) >= amountIn + inRecord.reserve, \"NOT_RECEIVED\");\n            inRecord.reserve += uint120(amountIn);\n            outRecord.reserve -= uint120(amountOut);\n        }\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\n    }\n\n    /// @dev Updates `barFee` for Trident protocol.\n    function updateBarFee() public {\n        barFee = IMasterDeployer(masterDeployer).barFee();\n    }\n\n    function _balance(address token) internal view returns (uint256 balance) {\n        balance = bento.balanceOf(token, address(this));\n    }\n\n    function _getAmountOut(\n        uint256 tokenInAmount,\n        uint256 tokenInBalance,\n        uint256 tokenInWeight,\n        uint256 tokenOutBalance,\n        uint256 tokenOutWeight\n    ) internal view returns (uint256 amountOut) {\n        uint256 weightRatio = _div(tokenInWeight, tokenOutWeight);\n        // @dev This is safe from under/overflow - only logged amounts handled.\n        unchecked {\n            uint256 adjustedIn = _mul(tokenInAmount, (BASE - swapFee));\n            uint256 a = _div(tokenInBalance, tokenInBalance + adjustedIn);\n            uint256 b = _compute(a, weightRatio);\n            uint256 c = BASE - b;\n            amountOut = _mul(tokenOutBalance, c);\n        }\n    }\n\n    function _compute(uint256 base, uint256 exp) internal pure returns (uint256 output) {\n        require(MIN_POW_BASE <= base && base <= MAX_POW_BASE, \"INVALID_BASE\");\n\n        uint256 whole = (exp / BASE) * BASE;\n        uint256 remain = exp - whole;\n        uint256 wholePow = _pow(base, whole / BASE);\n\n        if (remain == 0) output = wholePow;\n\n        uint256 partialResult = _powApprox(base, remain, POW_PRECISION);\n        output = _mul(wholePow, partialResult);\n    }\n\n    function _computeSingleOutGivenPoolIn(\n        uint256 tokenOutBalance,\n        uint256 tokenOutWeight,\n        uint256 _totalSupply,\n        uint256 _totalWeight,\n        uint256 toBurn,\n        uint256 _swapFee\n    ) internal pure returns (uint256 amountOut) {\n        uint256 normalizedWeight = _div(tokenOutWeight, _totalWeight);\n        uint256 newPoolSupply = _totalSupply - toBurn;\n        uint256 poolRatio = _div(newPoolSupply, _totalSupply);\n        uint256 tokenOutRatio = _pow(poolRatio, _div(BASE, normalizedWeight));\n        uint256 newBalanceOut = _mul(tokenOutRatio, tokenOutBalance);\n        uint256 tokenAmountOutBeforeSwapFee = tokenOutBalance - newBalanceOut;\n        uint256 zaz = (BASE - normalizedWeight) * _swapFee;\n        amountOut = _mul(tokenAmountOutBeforeSwapFee, (BASE - zaz));\n    }\n\n    function _pow(uint256 a, uint256 n) internal pure returns (uint256 output) {\n        output = n % 2 != 0 ? a : BASE;\n        for (n /= 2; n != 0; n /= 2) a = a * a;\n        if (n % 2 != 0) output = output * a;\n    }\n\n    function _powApprox(\n        uint256 base,\n        uint256 exp,\n        uint256 precision\n    ) internal pure returns (uint256 sum) {\n        uint256 a = exp;\n        (uint256 x, bool xneg) = _subFlag(base, BASE);\n        uint256 term = BASE;\n        sum = term;\n        bool negative;\n\n        for (uint256 i = 1; term >= precision; i++) {\n            uint256 bigK = i * BASE;\n            (uint256 c, bool cneg) = _subFlag(a, (bigK - BASE));\n            term = _mul(term, _mul(c, x));\n            term = _div(term, bigK);\n            if (term == 0) break;\n            if (xneg) negative = !negative;\n            if (cneg) negative = !negative;\n            if (negative) {\n                sum = sum - term;\n            } else {\n                sum = sum + term;\n            }\n        }\n    }\n\n    function _subFlag(uint256 a, uint256 b) internal pure returns (uint256 difference, bool flag) {\n        // @dev This is safe from underflow - if/else flow performs checks.\n        unchecked {\n            if (a >= b) {\n                (difference, flag) = (a - b, false);\n            } else {\n                (difference, flag) = (b - a, true);\n            }\n        }\n    }\n\n    function _mul(uint256 a, uint256 b) internal pure returns (uint256 c2) {\n        uint256 c0 = a * b;\n        uint256 c1 = c0 + (BASE / 2);\n        c2 = c1 / BASE;\n    }\n\n    function _div(uint256 a, uint256 b) internal pure returns (uint256 c2) {\n        uint256 c0 = a * BASE;\n        uint256 c1 = c0 + (b / 2);\n        c2 = c1 / b;\n    }\n\n    function _transfer(\n        address token,\n        uint256 shares,\n        address to,\n        bool unwrapBento\n    ) internal {\n        if (unwrapBento) {\n            bento.withdraw(token, address(this), to, 0, shares);\n        } else {\n            bento.transfer(token, address(this), to, shares);\n        }\n    }\n\n    function getAssets() public view override returns (address[] memory assets) {\n        assets = tokens;\n    }\n\n    function getAmountOut(bytes calldata data) public view override returns (uint256 amountOut) {\n        (uint256 tokenInAmount, uint256 tokenInBalance, uint256 tokenInWeight, uint256 tokenOutBalance, uint256 tokenOutWeight) = abi\n            .decode(data, (uint256, uint256, uint256, uint256, uint256));\n        amountOut = _getAmountOut(tokenInAmount, tokenInBalance, tokenInWeight, tokenOutBalance, tokenOutWeight);\n    }\n\n    function getAmountIn(bytes calldata) public pure override returns (uint256) {\n        revert();\n    }\n\n    function getReservesAndWeights() public view returns (uint256[] memory reserves, uint136[] memory weights) {\n        uint256 length = tokens.length;\n        reserves = new uint256[](length);\n        weights = new uint136[](length);\n        // @dev This is safe from overflow - `tokens` `length` is bound to '8'.\n        unchecked {\n            for (uint256 i = 0; i < length; i++) {\n                reserves[i] = records[tokens[i]].reserve;\n                weights[i] = records[tokens[i]].weight;\n            }\n        }\n    }\n}\n"
      },
      "contracts/pool/TridentERC20.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\n/// @notice Trident pool ERC-20 with EIP-2612 extension.\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol,\n/// License-Identifier: AGPL-3.0-only.\nabstract contract TridentERC20 {\n    event Transfer(address indexed sender, address indexed recipient, uint256 amount);\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\n\n    string public constant name = \"Sushi LP Token\";\n    string public constant symbol = \"SLP\";\n    uint8 public constant decimals = 18;\n\n    uint256 public totalSupply;\n    /// @notice owner -> balance mapping.\n    mapping(address => uint256) public balanceOf;\n    /// @notice owner -> spender -> allowance mapping.\n    mapping(address => mapping(address => uint256)) public allowance;\n\n    /// @notice Chain Id at this contract's deployment.\n    uint256 internal immutable DOMAIN_SEPARATOR_CHAIN_ID;\n    /// @notice EIP-712 typehash for this contract's domain at deployment.\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\n    /// @notice EIP-712 typehash for this contract's {permit} struct.\n    bytes32 public constant PERMIT_TYPEHASH =\n        keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\");\n    /// @notice owner -> nonce mapping used in {permit}.\n    mapping(address => uint256) public nonces;\n\n    constructor() {\n        DOMAIN_SEPARATOR_CHAIN_ID = block.chainid;\n        _DOMAIN_SEPARATOR = _calculateDomainSeparator();\n    }\n\n    function _calculateDomainSeparator() internal view returns (bytes32 domainSeperator) {\n        domainSeperator = keccak256(\n            abi.encode(\n                keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"),\n                keccak256(bytes(name)),\n                keccak256(bytes(\"1\")),\n                block.chainid,\n                address(this)\n            )\n        );\n    }\n\n    /// @notice EIP-712 typehash for this contract's domain.\n    function DOMAIN_SEPARATOR() public view returns (bytes32 domainSeperator) {\n        domainSeperator = block.chainid == DOMAIN_SEPARATOR_CHAIN_ID ? _DOMAIN_SEPARATOR : _calculateDomainSeparator();\n    }\n\n    /// @notice Approves `amount` from `msg.sender` to be spent by `spender`.\n    /// @param spender Address of the party that can pull tokens from `msg.sender`'s account.\n    /// @param amount The maximum collective `amount` that `spender` can pull.\n    /// @return (bool) Returns 'true' if succeeded.\n    function approve(address spender, uint256 amount) external returns (bool) {\n        allowance[msg.sender][spender] = amount;\n        emit Approval(msg.sender, spender, amount);\n        return true;\n    }\n\n    /// @notice Transfers `amount` tokens from `msg.sender` to `recipient`.\n    /// @param recipient The address to move tokens to.\n    /// @param amount The token `amount` to move.\n    /// @return (bool) Returns 'true' if succeeded.\n    function transfer(address recipient, uint256 amount) external returns (bool) {\n        balanceOf[msg.sender] -= amount;\n        // @dev This is safe from overflow - the sum of all user\n        // balances can't exceed 'type(uint256).max'.\n        unchecked {\n            balanceOf[recipient] += amount;\n        }\n        emit Transfer(msg.sender, recipient, amount);\n        return true;\n    }\n\n    /// @notice Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\n    /// @param sender Address to pull tokens `from`.\n    /// @param recipient The address to move tokens to.\n    /// @param amount The token `amount` to move.\n    /// @return (bool) Returns 'true' if succeeded.\n    function transferFrom(\n        address sender,\n        address recipient,\n        uint256 amount\n    ) external returns (bool) {\n        if (allowance[sender][msg.sender] != type(uint256).max) {\n            allowance[sender][msg.sender] -= amount;\n        }\n        balanceOf[sender] -= amount;\n        // @dev This is safe from overflow - the sum of all user\n        // balances can't exceed 'type(uint256).max'.\n        unchecked {\n            balanceOf[recipient] += amount;\n        }\n        emit Transfer(sender, recipient, amount);\n        return true;\n    }\n\n    /// @notice Triggers an approval from `owner` to `spender`.\n    /// @param owner The address to approve from.\n    /// @param spender The address to be approved.\n    /// @param amount The number of tokens that are approved (2^256-1 means infinite).\n    /// @param deadline The time at which to expire the signature.\n    /// @param v The recovery byte of the signature.\n    /// @param r Half of the ECDSA signature pair.\n    /// @param s Half of the ECDSA signature pair.\n    function permit(\n        address owner,\n        address spender,\n        uint256 amount,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external {\n        require(deadline >= block.timestamp, \"PERMIT_DEADLINE_EXPIRED\");\n        bytes32 digest = keccak256(\n            abi.encodePacked(\n                \"\\x19\\x01\",\n                DOMAIN_SEPARATOR(),\n                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))\n            )\n        );\n        address recoveredAddress = ecrecover(digest, v, r, s);\n        require(recoveredAddress != address(0) && recoveredAddress == owner, \"INVALID_PERMIT_SIGNATURE\");\n        allowance[recoveredAddress][spender] = amount;\n        emit Approval(owner, spender, amount);\n    }\n\n    function _mint(address recipient, uint256 amount) internal {\n        totalSupply += amount;\n        // @dev This is safe from overflow - the sum of all user\n        // balances can't exceed 'type(uint256).max'.\n        unchecked {\n            balanceOf[recipient] += amount;\n        }\n        emit Transfer(address(0), recipient, amount);\n    }\n\n    function _burn(address sender, uint256 amount) internal {\n        balanceOf[sender] -= amount;\n        // @dev This is safe from underflow - users won't ever\n        // have a balance larger than `totalSupply`.\n        unchecked {\n            totalSupply -= amount;\n        }\n        emit Transfer(sender, address(0), amount);\n    }\n}\n"
      },
      "contracts/pool/HybridPool.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"../interfaces/IBentoBoxMinimal.sol\";\nimport \"../interfaces/IMasterDeployer.sol\";\nimport \"../interfaces/IPool.sol\";\nimport \"../interfaces/ITridentCallee.sol\";\nimport \"../libraries/MathUtils.sol\";\nimport \"./TridentERC20.sol\";\nimport \"../libraries/RebaseLibrary.sol\";\n\n/// @notice Trident exchange pool template with hybrid like-kind formula for swapping between an ERC-20 token pair.\n/// @dev The reserves are stored as bento shares. However, the stableswap invariant is applied to the underlying amounts.\n///      The API uses the underlying amounts.\ncontract HybridPool is IPool, TridentERC20 {\n    using MathUtils for uint256;\n    using RebaseLibrary for Rebase;\n\n    event Mint(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\n    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\n    event Sync(uint256 reserve0, uint256 reserve1);\n\n    uint256 internal constant MINIMUM_LIQUIDITY = 10**3;\n    uint8 internal constant PRECISION = 112;\n\n    /// @dev Constant value used as max loop limit.\n    uint256 private constant MAX_LOOP_LIMIT = 256;\n    uint256 internal constant MAX_FEE = 10000; // @dev 100%.\n    uint256 public immutable swapFee;\n\n    IBentoBoxMinimal public immutable bento;\n    IMasterDeployer public immutable masterDeployer;\n    address public immutable barFeeTo;\n    address public immutable token0;\n    address public immutable token1;\n    uint256 public immutable A;\n    uint256 internal immutable N_A; // @dev 2 * A.\n    uint256 internal constant A_PRECISION = 100;\n\n    /// @dev Multipliers for each pooled token's precision to get to POOL_PRECISION_DECIMALS.\n    /// For example, TBTC has 18 decimals, so the multiplier should be 1. WBTC\n    /// has 8, so the multiplier should be 10 ** 18 / 10 ** 8 => 10 ** 10.\n    uint256 public immutable token0PrecisionMultiplier;\n    uint256 public immutable token1PrecisionMultiplier;\n\n    uint256 public barFee;\n\n    uint128 internal reserve0;\n    uint128 internal reserve1;\n    uint256 internal dLast;\n\n    bytes32 public constant override poolIdentifier = \"Trident:HybridPool\";\n\n    uint256 internal unlocked;\n    modifier lock() {\n        require(unlocked == 1, \"LOCKED\");\n        unlocked = 2;\n        _;\n        unlocked = 1;\n    }\n\n    constructor(bytes memory _deployData, address _masterDeployer) {\n        (address _token0, address _token1, uint256 _swapFee, uint256 a) = abi.decode(_deployData, (address, address, uint256, uint256));\n\n        // @dev Factory ensures that the tokens are sorted.\n        require(_token0 != address(0), \"ZERO_ADDRESS\");\n        require(_token0 != _token1, \"IDENTICAL_ADDRESSES\");\n        require(_swapFee <= MAX_FEE, \"INVALID_SWAP_FEE\");\n        require(a != 0, \"ZERO_A\");\n\n        token0 = _token0;\n        token1 = _token1;\n        swapFee = _swapFee;\n        barFee = IMasterDeployer(_masterDeployer).barFee();\n        barFeeTo = IMasterDeployer(_masterDeployer).barFeeTo();\n        bento = IBentoBoxMinimal(IMasterDeployer(_masterDeployer).bento());\n        masterDeployer = IMasterDeployer(_masterDeployer);\n        A = a;\n        N_A = 2 * a;\n        token0PrecisionMultiplier = uint256(10)**(decimals - TridentERC20(_token0).decimals());\n        token1PrecisionMultiplier = uint256(10)**(decimals - TridentERC20(_token1).decimals());\n        unlocked = 1;\n    }\n\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\n    /// The router must ensure that sufficient LP tokens are minted by using the return value.\n    function mint(bytes calldata data) public override lock returns (uint256 liquidity) {\n        address recipient = abi.decode(data, (address));\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\n        (uint256 balance0, uint256 balance1) = _balance();\n\n        uint256 newLiq = _computeLiquidity(balance0, balance1);\n        uint256 amount0 = balance0 - _reserve0;\n        uint256 amount1 = balance1 - _reserve1;\n        (uint256 fee0, uint256 fee1) = _nonOptimalMintFee(amount0, amount1, _reserve0, _reserve1);\n        _reserve0 += uint112(fee0);\n        _reserve1 += uint112(fee1);\n\n        (uint256 _totalSupply, uint256 oldLiq) = _mintFee(_reserve0, _reserve1);\n\n        if (_totalSupply == 0) {\n            require(amount0 > 0 && amount1 > 0, \"INVALID_AMOUNTS\");\n            liquidity = newLiq - MINIMUM_LIQUIDITY;\n            _mint(address(0), MINIMUM_LIQUIDITY);\n        } else {\n            liquidity = ((newLiq - oldLiq) * _totalSupply) / oldLiq;\n        }\n        require(liquidity != 0, \"INSUFFICIENT_LIQUIDITY_MINTED\");\n        _mint(recipient, liquidity);\n        _updateReserves();\n\n        dLast = newLiq;\n        uint256 liquidityForEvent = liquidity;\n        emit Mint(msg.sender, amount0, amount1, recipient, liquidityForEvent);\n    }\n\n    /// @dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\n    function burn(bytes calldata data) public override lock returns (IPool.TokenAmount[] memory withdrawnAmounts) {\n        (address recipient, bool unwrapBento) = abi.decode(data, (address, bool));\n        (uint256 balance0, uint256 balance1) = _balance();\n        uint256 liquidity = balanceOf[address(this)];\n\n        (uint256 _totalSupply, ) = _mintFee(balance0, balance1);\n\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\n\n        _burn(address(this), liquidity);\n        _transfer(token0, amount0, recipient, unwrapBento);\n        _transfer(token1, amount1, recipient, unwrapBento);\n\n        _updateReserves();\n\n        withdrawnAmounts = new TokenAmount[](2);\n        withdrawnAmounts[0] = TokenAmount({token: token0, amount: amount0});\n        withdrawnAmounts[1] = TokenAmount({token: token1, amount: amount1});\n\n        dLast = _computeLiquidity(balance0 - amount0, balance1 - amount1);\n\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\n    }\n\n    /// @dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\n    /// - i.e., the user gets a single token out by burning LP tokens.\n    function burnSingle(bytes calldata data) public override lock returns (uint256 amountOut) {\n        (address tokenOut, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\n        (uint256 balance0, uint256 balance1) = _balance();\n        uint256 liquidity = balanceOf[address(this)];\n\n        (uint256 _totalSupply, ) = _mintFee(balance0, balance1);\n\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\n\n        _burn(address(this), liquidity);\n        dLast = _computeLiquidity(balance0 - amount0, balance1 - amount1);\n\n        // Swap tokens\n        if (tokenOut == token1) {\n            // @dev Swap `token0` for `token1`.\n            // @dev Calculate `amountOut` as if the user first withdrew balanced liquidity and then swapped `token0` for `token1`.\n            amount1 += _getAmountOut(amount0, balance0 - amount0, balance1 - amount1, true);\n            _transfer(token1, amount1, recipient, unwrapBento);\n            amountOut = amount1;\n            amount0 = 0;\n        } else {\n            // @dev Swap `token1` for `token0`.\n            require(tokenOut == token0, \"INVALID_OUTPUT_TOKEN\");\n            amount0 += _getAmountOut(amount1, balance0 - amount0, balance1 - amount1, false);\n            _transfer(token0, amount0, recipient, unwrapBento);\n            amountOut = amount0;\n            amount1 = 0;\n        }\n        _updateReserves();\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\n    }\n\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\n    function swap(bytes calldata data) public override lock returns (uint256 amountOut) {\n        (address tokenIn, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\n        (uint256 _reserve0, uint256 _reserve1, uint256 balance0, uint256 balance1) = _getReservesAndBalances();\n        uint256 amountIn;\n        address tokenOut;\n\n        if (tokenIn == token0) {\n            tokenOut = token1;\n            unchecked {\n                amountIn = balance0 - _reserve0;\n            }\n            amountOut = _getAmountOut(amountIn, _reserve0, _reserve1, true);\n        } else {\n            require(tokenIn == token1, \"INVALID_INPUT_TOKEN\");\n            tokenOut = token0;\n            unchecked {\n                amountIn = balance1 - _reserve1;\n            }\n            amountOut = _getAmountOut(amountIn, _reserve0, _reserve1, false);\n        }\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\n        _updateReserves();\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\n    }\n\n    /// @dev Swaps one token for another with payload. The router must support swap callbacks and ensure there isn't too much slippage.\n    function flashSwap(bytes calldata data) public override lock returns (uint256 amountOut) {\n        (address tokenIn, address recipient, bool unwrapBento, uint256 amountIn, bytes memory context) = abi.decode(\n            data,\n            (address, address, bool, uint256, bytes)\n        );\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\n        address tokenOut;\n\n        if (tokenIn == token0) {\n            tokenOut = token1;\n            amountIn = bento.toAmount(token0, amountIn, false);\n            amountOut = _getAmountOut(amountIn, _reserve0, _reserve1, true);\n            _processSwap(token1, recipient, amountOut, context, unwrapBento);\n            uint256 balance0 = bento.toAmount(token0, bento.balanceOf(token0, address(this)), false);\n            require(balance0 - _reserve0 >= amountIn, \"INSUFFICIENT_AMOUNT_IN\");\n        } else {\n            require(tokenIn == token1, \"INVALID_INPUT_TOKEN\");\n            tokenOut = token0;\n            amountIn = bento.toAmount(token1, amountIn, false);\n            amountOut = _getAmountOut(amountIn, _reserve0, _reserve1, false);\n            _processSwap(token0, recipient, amountOut, context, unwrapBento);\n            uint256 balance1 = bento.toAmount(token1, bento.balanceOf(token1, address(this)), false);\n            require(balance1 - _reserve1 >= amountIn, \"INSUFFICIENT_AMOUNT_IN\");\n        }\n        _updateReserves();\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\n    }\n\n    /// @dev Updates `barFee` for Trident protocol.\n    function updateBarFee() public {\n        barFee = masterDeployer.barFee();\n    }\n\n    function _processSwap(\n        address tokenOut,\n        address to,\n        uint256 amountOut,\n        bytes memory data,\n        bool unwrapBento\n    ) internal {\n        _transfer(tokenOut, amountOut, to, unwrapBento);\n        if (data.length != 0) ITridentCallee(msg.sender).tridentSwapCallback(data);\n    }\n\n    function _getReserves() internal view returns (uint256 _reserve0, uint256 _reserve1) {\n        (_reserve0, _reserve1) = (reserve0, reserve1);\n        _reserve0 = bento.toAmount(token0, _reserve0, false);\n        _reserve1 = bento.toAmount(token1, _reserve1, false);\n    }\n\n    function _getReservesAndBalances()\n        internal\n        view\n        returns (\n            uint256 _reserve0,\n            uint256 _reserve1,\n            uint256 balance0,\n            uint256 balance1\n        )\n    {\n        (_reserve0, _reserve1) = (reserve0, reserve1);\n        balance0 = bento.balanceOf(token0, address(this));\n        balance1 = bento.balanceOf(token1, address(this));\n        Rebase memory total0 = bento.totals(token0);\n        Rebase memory total1 = bento.totals(token1);\n\n        _reserve0 = total0.toElastic(_reserve0);\n        _reserve1 = total1.toElastic(_reserve1);\n        balance0 = total0.toElastic(balance0);\n        balance1 = total1.toElastic(balance1);\n    }\n\n    function _updateReserves() internal {\n        (uint256 _reserve0, uint256 _reserve1) = _balance();\n        require(_reserve0 <= type(uint128).max && _reserve1 <= type(uint128).max, \"OVERFLOW\");\n        reserve0 = uint128(_reserve0);\n        reserve1 = uint128(_reserve1);\n        emit Sync(_reserve0, _reserve1);\n    }\n\n    function _balance() internal view returns (uint256 balance0, uint256 balance1) {\n        balance0 = bento.toAmount(token0, bento.balanceOf(token0, address(this)), false);\n        balance1 = bento.toAmount(token1, bento.balanceOf(token1, address(this)), false);\n    }\n\n    function _getAmountOut(\n        uint256 amountIn,\n        uint256 _reserve0,\n        uint256 _reserve1,\n        bool token0In\n    ) internal view returns (uint256 dy) {\n        unchecked {\n            uint256 adjustedReserve0 = _reserve0 * token0PrecisionMultiplier;\n            uint256 adjustedReserve1 = _reserve1 * token1PrecisionMultiplier;\n            uint256 feeDeductedAmountIn = amountIn - (amountIn * swapFee) / MAX_FEE;\n            uint256 d = _computeLiquidityFromAdjustedBalances(adjustedReserve0, adjustedReserve1);\n\n            if (token0In) {\n                uint256 x = adjustedReserve0 + (feeDeductedAmountIn * token0PrecisionMultiplier);\n                uint256 y = _getY(x, d);\n                dy = adjustedReserve1 - y - 1;\n                dy /= token1PrecisionMultiplier;\n            } else {\n                uint256 x = adjustedReserve1 + (feeDeductedAmountIn * token1PrecisionMultiplier);\n                uint256 y = _getY(x, d);\n                dy = adjustedReserve0 - y - 1;\n                dy /= token0PrecisionMultiplier;\n            }\n        }\n    }\n\n    function _transfer(\n        address token,\n        uint256 amount,\n        address to,\n        bool unwrapBento\n    ) internal {\n        if (unwrapBento) {\n            bento.withdraw(token, address(this), to, amount, 0);\n        } else {\n            bento.transfer(token, address(this), to, bento.toShare(token, amount, false));\n        }\n    }\n\n    /// @notice Get D, the StableSwap invariant, based on a set of balances and a particular A.\n    /// See the StableSwap paper for details.\n    /// @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L319.\n    /// @return liquidity The invariant, at the precision of the pool.\n    function _computeLiquidity(uint256 _reserve0, uint256 _reserve1) internal view returns (uint256 liquidity) {\n        unchecked {\n            uint256 adjustedReserve0 = _reserve0 * token0PrecisionMultiplier;\n            uint256 adjustedReserve1 = _reserve1 * token1PrecisionMultiplier;\n            liquidity = _computeLiquidityFromAdjustedBalances(adjustedReserve0, adjustedReserve1);\n        }\n    }\n\n    function _computeLiquidityFromAdjustedBalances(uint256 xp0, uint256 xp1) internal view returns (uint256 computed) {\n        uint256 s = xp0 + xp1;\n\n        if (s == 0) {\n            computed = 0;\n        }\n        uint256 prevD;\n        uint256 D = s;\n        for (uint256 i = 0; i < MAX_LOOP_LIMIT; i++) {\n            uint256 dP = (((D * D) / xp0) * D) / xp1 / 4;\n            prevD = D;\n            D = (((N_A * s) / A_PRECISION + 2 * dP) * D) / ((N_A / A_PRECISION - 1) * D + 3 * dP);\n            if (D.within1(prevD)) {\n                break;\n            }\n        }\n        computed = D;\n    }\n\n    /// @notice Calculate the new balances of the tokens given the indexes of the token\n    /// that is swapped from (FROM) and the token that is swapped to (TO).\n    /// This function is used as a helper function to calculate how much TO token\n    /// the user should receive on swap.\n    /// @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L432.\n    /// @param x The new total amount of FROM token.\n    /// @return y The amount of TO token that should remain in the pool.\n    function _getY(uint256 x, uint256 D) internal view returns (uint256 y) {\n        uint256 c = (D * D) / (x * 2);\n        c = (c * D) / ((N_A * 2) / A_PRECISION);\n        uint256 b = x + ((D * A_PRECISION) / N_A);\n        uint256 yPrev;\n        y = D;\n        // @dev Iterative approximation.\n        for (uint256 i = 0; i < MAX_LOOP_LIMIT; i++) {\n            yPrev = y;\n            y = (y * y + c) / (y * 2 + b - D);\n            if (y.within1(yPrev)) {\n                break;\n            }\n        }\n    }\n\n    function _mintFee(uint256 _reserve0, uint256 _reserve1) internal returns (uint256 _totalSupply, uint256 d) {\n        _totalSupply = totalSupply;\n        uint256 _dLast = dLast;\n        if (_dLast != 0) {\n            d = _computeLiquidity(_reserve0, _reserve1);\n            if (d > _dLast) {\n                // @dev `barFee` % of increase in liquidity.\n                uint256 _barFee = barFee;\n                uint256 numerator = _totalSupply * (d - _dLast) * _barFee;\n                uint256 denominator = (MAX_FEE - _barFee) * d + _barFee * _dLast;\n                uint256 liquidity = numerator / denominator;\n\n                if (liquidity != 0) {\n                    _mint(barFeeTo, liquidity);\n                    _totalSupply += liquidity;\n                }\n            }\n        }\n    }\n\n    /// @dev This fee is charged to cover for `swapFee` when users add unbalanced liquidity.\n    function _nonOptimalMintFee(\n        uint256 _amount0,\n        uint256 _amount1,\n        uint256 _reserve0,\n        uint256 _reserve1\n    ) internal view returns (uint256 token0Fee, uint256 token1Fee) {\n        if (_reserve0 == 0 || _reserve1 == 0) return (0, 0);\n        uint256 amount1Optimal = (_amount0 * _reserve1) / _reserve0;\n\n        if (amount1Optimal <= _amount1) {\n            token1Fee = (swapFee * (_amount1 - amount1Optimal)) / (2 * MAX_FEE);\n        } else {\n            uint256 amount0Optimal = (_amount1 * _reserve0) / _reserve1;\n            token0Fee = (swapFee * (_amount0 - amount0Optimal)) / (2 * MAX_FEE);\n        }\n    }\n\n    function getAssets() public view override returns (address[] memory assets) {\n        assets = new address[](2);\n        assets[0] = token0;\n        assets[1] = token1;\n    }\n\n    function getAmountOut(bytes calldata data) public view override returns (uint256 finalAmountOut) {\n        (address tokenIn, uint256 amountIn) = abi.decode(data, (address, uint256));\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\n        amountIn = bento.toAmount(tokenIn, amountIn, false);\n\n        if (tokenIn == token0) {\n            finalAmountOut = bento.toShare(token1, _getAmountOut(amountIn, _reserve0, _reserve1, true), false);\n        } else {\n            require(tokenIn == token1, \"INVALID_INPUT_TOKEN\");\n            finalAmountOut = bento.toShare(token0, _getAmountOut(amountIn, _reserve0, _reserve1, false), false);\n        }\n    }\n\n    function getAmountIn(bytes calldata) public pure override returns (uint256) {\n        revert();\n    }\n\n    function getReserves() public view returns (uint256 _reserve0, uint256 _reserve1) {\n        (_reserve0, _reserve1) = _getReserves();\n    }\n\n    function getVirtualPrice() public view returns (uint256 virtualPrice) {\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\n        uint256 d = _computeLiquidity(_reserve0, _reserve1);\n        virtualPrice = (d * (uint256(10)**decimals)) / totalSupply;\n    }\n}\n"
      },
      "contracts/libraries/MathUtils.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\n/// @notice A library that contains functions for calculating differences between two uint256.\n/// @author Adapted from https://github.com/saddle-finance/saddle-contract/blob/master/contracts/MathUtils.sol.\nlibrary MathUtils {\n    /// @notice Compares a and b and returns 'true' if the difference between a and b\n    /// is less than 1 or equal to each other.\n    /// @param a uint256 to compare with.\n    /// @param b uint256 to compare with.\n    function within1(uint256 a, uint256 b) internal pure returns (bool) {\n        unchecked {\n            if (a > b) {\n                return a - b <= 1;\n            }\n            return b - a <= 1;\n        }\n    }\n}\n"
      },
      "contracts/pool/HybridPoolFactory.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"./HybridPool.sol\";\nimport \"./PoolDeployer.sol\";\n\n/// @notice Contract for deploying Trident exchange Hybrid Pool with configurations.\n/// @author Mudit Gupta.\ncontract HybridPoolFactory is PoolDeployer {\n    constructor(address _masterDeployer) PoolDeployer(_masterDeployer) {}\n\n    function deployPool(bytes memory _deployData) external returns (address pool) {\n        (address tokenA, address tokenB, uint256 swapFee, uint256 a) = abi.decode(_deployData, (address, address, uint256, uint256));\n\n        if (tokenA > tokenB) {\n            (tokenA, tokenB) = (tokenB, tokenA);\n        }\n\n        // @dev Strips any extra data.\n        _deployData = abi.encode(tokenA, tokenB, swapFee, a);\n        address[] memory tokens = new address[](2);\n        tokens[0] = tokenA;\n        tokens[1] = tokenB;\n\n        // @dev Salt is not actually needed since `_deployData` is part of creationCode and already contains the salt.\n        bytes32 salt = keccak256(_deployData);\n        pool = address(new HybridPool{salt: salt}(_deployData, masterDeployer));\n        _registerPool(pool, tokens, salt);\n    }\n}\n"
      },
      "contracts/pool/franchised/FranchisedIndexPool.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"../../interfaces/IBentoBoxMinimal.sol\";\nimport \"../../interfaces/IMasterDeployer.sol\";\nimport \"../../interfaces/IPool.sol\";\nimport \"../../interfaces/ITridentCallee.sol\";\nimport \"./TridentFranchisedERC20.sol\";\n\n/// @notice Trident exchange franchised pool template with constant mean formula for swapping among an array of ERC-20 tokens.\n/// @dev The reserves are stored as bento shares.\n///      The curve is applied to shares as well. This pool does not care about the underlying amounts.\ncontract FranchisedIndexPool is IPool, TridentFranchisedERC20 {\n    event Mint(address indexed sender, address tokenIn, uint256 amountIn, address indexed recipient);\n    event Burn(address indexed sender, address tokenOut, uint256 amountOut, address indexed recipient);\n\n    uint256 public immutable swapFee;\n\n    address public immutable barFeeTo;\n    address public immutable bento;\n    address public immutable masterDeployer;\n\n    uint256 internal constant BASE = 10**18;\n    uint256 internal constant MIN_TOKENS = 2;\n    uint256 internal constant MAX_TOKENS = 8;\n    uint256 internal constant MIN_FEE = BASE / 10**6;\n    uint256 internal constant MAX_FEE = BASE / 10;\n    uint256 internal constant MIN_WEIGHT = BASE;\n    uint256 internal constant MAX_WEIGHT = BASE * 50;\n    uint256 internal constant MAX_TOTAL_WEIGHT = BASE * 50;\n    uint256 internal constant MIN_BALANCE = BASE / 10**12;\n    uint256 internal constant INIT_POOL_SUPPLY = BASE * 100;\n    uint256 internal constant MIN_POW_BASE = 1;\n    uint256 internal constant MAX_POW_BASE = (2 * BASE) - 1;\n    uint256 internal constant POW_PRECISION = BASE / 10**10;\n    uint256 internal constant MAX_IN_RATIO = BASE / 2;\n    uint256 internal constant MAX_OUT_RATIO = (BASE / 3) + 1;\n\n    uint136 internal totalWeight;\n    address[] internal tokens;\n\n    uint256 public barFee;\n\n    bytes32 public constant override poolIdentifier = \"Trident:FranchisedIndex\";\n\n    uint256 internal unlocked;\n    modifier lock() {\n        require(unlocked == 1, \"LOCKED\");\n        unlocked = 2;\n        _;\n        unlocked = 1;\n    }\n\n    mapping(address => Record) public records;\n    struct Record {\n        uint120 reserve;\n        uint136 weight;\n    }\n\n    constructor(bytes memory _deployData, address _masterDeployer) {\n        (\n            address[] memory _tokens,\n            uint136[] memory _weights,\n            uint256 _swapFee,\n            address _whiteListManager,\n            address _operator,\n            bool _level2\n        ) = abi.decode(_deployData, (address[], uint136[], uint256, address, address, bool));\n        // @dev Factory ensures that the tokens are sorted.\n        require(_tokens.length == _weights.length, \"INVALID_ARRAYS\");\n        require(MIN_FEE <= _swapFee && _swapFee <= MAX_FEE, \"INVALID_SWAP_FEE\");\n        require(MIN_TOKENS <= _tokens.length && _tokens.length <= MAX_TOKENS, \"INVALID_TOKENS_LENGTH\");\n\n        TridentFranchisedERC20.initialize(_whiteListManager, _operator, _level2);\n\n        for (uint256 i = 0; i < _tokens.length; i++) {\n            require(_tokens[i] != address(0), \"ZERO_ADDRESS\");\n            require(MIN_WEIGHT <= _weights[i] && _weights[i] <= MAX_WEIGHT, \"INVALID_WEIGHT\");\n            records[_tokens[i]] = Record({reserve: 0, weight: _weights[i]});\n            tokens.push(_tokens[i]);\n            totalWeight += _weights[i];\n        }\n\n        require(totalWeight <= MAX_TOTAL_WEIGHT, \"MAX_TOTAL_WEIGHT\");\n        // @dev This burns initial LP supply.\n        _mint(address(0), INIT_POOL_SUPPLY);\n\n        (, bytes memory _barFee) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFee.selector));\n        (, bytes memory _barFeeTo) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFeeTo.selector));\n        (, bytes memory _bento) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.bento.selector));\n\n        swapFee = _swapFee;\n        barFee = abi.decode(_barFee, (uint256));\n        barFeeTo = abi.decode(_barFeeTo, (address));\n        bento = abi.decode(_bento, (address));\n        masterDeployer = _masterDeployer;\n        unlocked = 1;\n    }\n\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\n    /// The router must ensure that sufficient LP tokens are minted by using the return value.\n    function mint(bytes calldata data) public override lock returns (uint256 liquidity) {\n        (address recipient, uint256 toMint) = abi.decode(data, (address, uint256));\n        _checkWhiteList(recipient);\n        uint120 ratio = uint120(_div(toMint, totalSupply));\n\n        for (uint256 i = 0; i < tokens.length; i++) {\n            address tokenIn = tokens[i];\n            uint120 reserve = records[tokenIn].reserve;\n            // @dev If token balance is '0', initialize with `ratio`.\n            uint120 amountIn = reserve != 0 ? uint120(_mul(ratio, reserve)) : ratio;\n            require(amountIn >= MIN_BALANCE, \"MIN_BALANCE\");\n            // @dev Check Trident router has sent `amountIn` for skim into pool.\n            unchecked {\n                // @dev This is safe from overflow - only logged amounts handled.\n                require(_balance(tokenIn) >= amountIn + reserve, \"NOT_RECEIVED\");\n                records[tokenIn].reserve += amountIn;\n            }\n            emit Mint(msg.sender, tokenIn, amountIn, recipient);\n        }\n        _mint(recipient, toMint);\n        liquidity = toMint;\n    }\n\n    /// @dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\n    function burn(bytes calldata data) public override lock returns (IPool.TokenAmount[] memory withdrawnAmounts) {\n        (address recipient, bool unwrapBento, uint256 toBurn) = abi.decode(data, (address, bool, uint256));\n        _checkWhiteList(recipient);\n        uint256 ratio = _div(toBurn, totalSupply);\n\n        withdrawnAmounts = new TokenAmount[](tokens.length);\n\n        _burn(address(this), toBurn);\n\n        for (uint256 i = 0; i < tokens.length; i++) {\n            address tokenOut = tokens[i];\n            uint256 balance = records[tokenOut].reserve;\n            uint120 amountOut = uint120(_mul(ratio, balance));\n            require(amountOut != 0, \"ZERO_OUT\");\n            // @dev This is safe from underflow - only logged amounts handled.\n            unchecked {\n                records[tokenOut].reserve -= amountOut;\n            }\n            _transfer(tokenOut, amountOut, recipient, unwrapBento);\n            withdrawnAmounts[i] = TokenAmount({token: tokenOut, amount: amountOut});\n            emit Burn(msg.sender, tokenOut, amountOut, recipient);\n        }\n    }\n\n    /// @dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\n    /// - i.e., the user gets a single token out by burning LP tokens.\n    function burnSingle(bytes calldata data) public override lock returns (uint256 amountOut) {\n        (address tokenOut, address recipient, bool unwrapBento, uint256 toBurn) = abi.decode(data, (address, address, bool, uint256));\n        _checkWhiteList(recipient);\n        Record storage outRecord = records[tokenOut];\n\n        amountOut = _computeSingleOutGivenPoolIn(outRecord.reserve, outRecord.weight, totalSupply, totalWeight, toBurn, swapFee);\n\n        require(amountOut <= _mul(outRecord.reserve, MAX_OUT_RATIO), \"MAX_OUT_RATIO\");\n        // @dev This is safe from underflow - only logged amounts handled.\n        unchecked {\n            outRecord.reserve -= uint120(amountOut);\n        }\n        _burn(address(this), toBurn);\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\n        emit Burn(msg.sender, tokenOut, amountOut, recipient);\n    }\n\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\n    function swap(bytes calldata data) public override lock returns (uint256 amountOut) {\n        (address tokenIn, address tokenOut, address recipient, bool unwrapBento, uint256 amountIn) = abi.decode(\n            data,\n            (address, address, address, bool, uint256)\n        );\n        if (level2) _checkWhiteList(recipient);\n        Record storage inRecord = records[tokenIn];\n        Record storage outRecord = records[tokenOut];\n\n        require(amountIn <= _mul(inRecord.reserve, MAX_IN_RATIO), \"MAX_IN_RATIO\");\n\n        amountOut = _getAmountOut(amountIn, inRecord.reserve, inRecord.weight, outRecord.reserve, outRecord.weight);\n        // @dev Check Trident router has sent `amountIn` for skim into pool.\n        unchecked {\n            // @dev This is safe from under/overflow - only logged amounts handled.\n            require(_balance(tokenIn) >= amountIn + inRecord.reserve, \"NOT_RECEIVED\");\n            inRecord.reserve += uint120(amountIn);\n            outRecord.reserve -= uint120(amountOut);\n        }\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\n    }\n\n    /// @dev Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage.\n    function flashSwap(bytes calldata data) public override lock returns (uint256 amountOut) {\n        (address tokenIn, address tokenOut, address recipient, bool unwrapBento, uint256 amountIn, bytes memory context) = abi.decode(\n            data,\n            (address, address, address, bool, uint256, bytes)\n        );\n        if (level2) _checkWhiteList(recipient);\n        Record storage inRecord = records[tokenIn];\n        Record storage outRecord = records[tokenOut];\n\n        require(amountIn <= _mul(inRecord.reserve, MAX_IN_RATIO), \"MAX_IN_RATIO\");\n\n        amountOut = _getAmountOut(amountIn, inRecord.reserve, inRecord.weight, outRecord.reserve, outRecord.weight);\n\n        ITridentCallee(msg.sender).tridentSwapCallback(context);\n        // @dev Check Trident router has sent `amountIn` for skim into pool.\n        unchecked {\n            // @dev This is safe from under/overflow - only logged amounts handled.\n            require(_balance(tokenIn) >= amountIn + inRecord.reserve, \"NOT_RECEIVED\");\n            inRecord.reserve += uint120(amountIn);\n            outRecord.reserve -= uint120(amountOut);\n        }\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\n    }\n\n    /// @dev Updates `barFee` for Trident protocol.\n    function updateBarFee() public {\n        (, bytes memory _barFee) = masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFee.selector));\n        barFee = abi.decode(_barFee, (uint256));\n    }\n\n    function _balance(address token) internal view returns (uint256 balance) {\n        (, bytes memory data) = bento.staticcall(abi.encodeWithSelector(IBentoBoxMinimal.balanceOf.selector, token, address(this)));\n        balance = abi.decode(data, (uint256));\n    }\n\n    function _getAmountOut(\n        uint256 tokenInAmount,\n        uint256 tokenInBalance,\n        uint256 tokenInWeight,\n        uint256 tokenOutBalance,\n        uint256 tokenOutWeight\n    ) internal view returns (uint256 amountOut) {\n        uint256 weightRatio = _div(tokenInWeight, tokenOutWeight);\n        // @dev This is safe from under/overflow - only logged amounts handled.\n        unchecked {\n            uint256 adjustedIn = _mul(tokenInAmount, (BASE - swapFee));\n            uint256 a = _div(tokenInBalance, tokenInBalance + adjustedIn);\n            uint256 b = _compute(a, weightRatio);\n            uint256 c = BASE - b;\n            amountOut = _mul(tokenOutBalance, c);\n        }\n    }\n\n    function _compute(uint256 base, uint256 exp) internal pure returns (uint256 output) {\n        require(MIN_POW_BASE <= base && base <= MAX_POW_BASE, \"INVALID_BASE\");\n\n        uint256 whole = (exp / BASE) * BASE;\n        uint256 remain = exp - whole;\n        uint256 wholePow = _pow(base, whole / BASE);\n\n        if (remain == 0) output = wholePow;\n\n        uint256 partialResult = _powApprox(base, remain, POW_PRECISION);\n        output = _mul(wholePow, partialResult);\n    }\n\n    function _computeSingleOutGivenPoolIn(\n        uint256 tokenOutBalance,\n        uint256 tokenOutWeight,\n        uint256 _totalSupply,\n        uint256 _totalWeight,\n        uint256 toBurn,\n        uint256 _swapFee\n    ) internal pure returns (uint256 amountOut) {\n        uint256 normalizedWeight = _div(tokenOutWeight, _totalWeight);\n        uint256 newPoolSupply = _totalSupply - toBurn;\n        uint256 poolRatio = _div(newPoolSupply, _totalSupply);\n        uint256 tokenOutRatio = _pow(poolRatio, _div(BASE, normalizedWeight));\n        uint256 newBalanceOut = _mul(tokenOutRatio, tokenOutBalance);\n        uint256 tokenAmountOutBeforeSwapFee = tokenOutBalance - newBalanceOut;\n        uint256 zaz = (BASE - normalizedWeight) * _swapFee;\n        amountOut = _mul(tokenAmountOutBeforeSwapFee, (BASE - zaz));\n    }\n\n    function _pow(uint256 a, uint256 n) internal pure returns (uint256 output) {\n        output = n % 2 != 0 ? a : BASE;\n        for (n /= 2; n != 0; n /= 2) a = a * a;\n        if (n % 2 != 0) output = output * a;\n    }\n\n    function _powApprox(\n        uint256 base,\n        uint256 exp,\n        uint256 precision\n    ) internal pure returns (uint256 sum) {\n        uint256 a = exp;\n        (uint256 x, bool xneg) = _subFlag(base, BASE);\n        uint256 term = BASE;\n        sum = term;\n        bool negative;\n\n        for (uint256 i = 1; term >= precision; i++) {\n            uint256 bigK = i * BASE;\n            (uint256 c, bool cneg) = _subFlag(a, (bigK - BASE));\n            term = _mul(term, _mul(c, x));\n            term = _div(term, bigK);\n            if (term == 0) break;\n            if (xneg) negative = !negative;\n            if (cneg) negative = !negative;\n            if (negative) {\n                sum = sum - term;\n            } else {\n                sum = sum + term;\n            }\n        }\n    }\n\n    function _subFlag(uint256 a, uint256 b) internal pure returns (uint256 difference, bool flag) {\n        // @dev This is safe from underflow - if/else flow performs checks.\n        unchecked {\n            if (a >= b) {\n                (difference, flag) = (a - b, false);\n            } else {\n                (difference, flag) = (b - a, true);\n            }\n        }\n    }\n\n    function _mul(uint256 a, uint256 b) internal pure returns (uint256 c2) {\n        uint256 c0 = a * b;\n        uint256 c1 = c0 + (BASE / 2);\n        c2 = c1 / BASE;\n    }\n\n    function _div(uint256 a, uint256 b) internal pure returns (uint256 c2) {\n        uint256 c0 = a * BASE;\n        uint256 c1 = c0 + (b / 2);\n        c2 = c1 / b;\n    }\n\n    function _transfer(\n        address token,\n        uint256 shares,\n        address to,\n        bool unwrapBento\n    ) internal {\n        if (unwrapBento) {\n            (bool success, ) = bento.call(abi.encodeWithSelector(IBentoBoxMinimal.withdraw.selector, token, address(this), to, 0, shares));\n            require(success, \"WITHDRAW_FAILED\");\n        } else {\n            (bool success, ) = bento.call(abi.encodeWithSelector(IBentoBoxMinimal.transfer.selector, token, address(this), to, shares));\n            require(success, \"TRANSFER_FAILED\");\n        }\n    }\n\n    function getAssets() public view override returns (address[] memory assets) {\n        assets = tokens;\n    }\n\n    function getAmountOut(bytes calldata data) public view override returns (uint256 amountOut) {\n        (uint256 tokenInAmount, uint256 tokenInBalance, uint256 tokenInWeight, uint256 tokenOutBalance, uint256 tokenOutWeight) = abi\n            .decode(data, (uint256, uint256, uint256, uint256, uint256));\n        amountOut = _getAmountOut(tokenInAmount, tokenInBalance, tokenInWeight, tokenOutBalance, tokenOutWeight);\n    }\n\n    function getAmountIn(bytes calldata) public pure override returns (uint256) {\n        revert();\n    }\n\n    function getReservesAndWeights() public view returns (uint256[] memory reserves, uint136[] memory weights) {\n        uint256 length = tokens.length;\n        reserves = new uint256[](length);\n        weights = new uint136[](length);\n        // @dev This is safe from overflow - `tokens` `length` is bound to '8'.\n        unchecked {\n            for (uint256 i = 0; i < length; i++) {\n                reserves[i] = records[tokens[i]].reserve;\n                weights[i] = records[tokens[i]].weight;\n            }\n        }\n    }\n}\n"
      },
      "contracts/pool/franchised/TridentFranchisedERC20.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"../../interfaces/IWhiteListManager.sol\";\n\n/// @notice Trident franchised pool ERC-20 with EIP-2612 extension.\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol,\n/// License-Identifier: AGPL-3.0-only.\nabstract contract TridentFranchisedERC20 {\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\n    event Transfer(address indexed sender, address indexed recipient, uint256 amount);\n\n    string public constant name = \"Sushi Franchised LP Token\";\n    string public constant symbol = \"SLP\";\n    uint8 public constant decimals = 18;\n\n    address public whiteListManager;\n    address public operator;\n    bool public level2;\n\n    uint256 public totalSupply;\n    /// @notice owner -> balance mapping.\n    mapping(address => uint256) public balanceOf;\n    /// @notice owner -> spender -> allowance mapping.\n    mapping(address => mapping(address => uint256)) public allowance;\n\n    /// @notice The EIP-712 typehash for this contract's {permit} struct.\n    bytes32 public constant PERMIT_TYPEHASH =\n        keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\");\n    /// @notice The EIP-712 typehash for this contract's domain.\n    bytes32 public immutable DOMAIN_SEPARATOR;\n    /// @notice owner -> nonce mapping used in {permit}.\n    mapping(address => uint256) public nonces;\n\n    constructor() {\n        DOMAIN_SEPARATOR = keccak256(\n            abi.encode(\n                keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"),\n                keccak256(bytes(name)),\n                keccak256(bytes(\"1\")),\n                block.chainid,\n                address(this)\n            )\n        );\n    }\n\n    /// @dev Initializes whitelist settings from pool.\n    function initialize(\n        address _whiteListManager,\n        address _operator,\n        bool _level2\n    ) internal {\n        whiteListManager = _whiteListManager;\n        operator = _operator;\n        if (_level2) level2 = true;\n    }\n\n    /// @notice Approves `amount` from `msg.sender` to be spent by `spender`.\n    /// @param spender Address of the party that can pull tokens from `msg.sender`'s account.\n    /// @param amount The maximum collective `amount` that `spender` can pull.\n    /// @return (bool) Returns 'true' if succeeded.\n    function approve(address spender, uint256 amount) external returns (bool) {\n        allowance[msg.sender][spender] = amount;\n        emit Approval(msg.sender, spender, amount);\n        return true;\n    }\n\n    /// @notice Transfers `amount` tokens from `msg.sender` to `recipient`.\n    /// @param recipient The address to move tokens to.\n    /// @param amount The token `amount` to move.\n    /// @return (bool) Returns 'true' if succeeded.\n    function transfer(address recipient, uint256 amount) external returns (bool) {\n        if (level2) _checkWhiteList(recipient);\n        balanceOf[msg.sender] -= amount;\n        // @dev This is safe from overflow - the sum of all user\n        // balances can't exceed 'type(uint256).max'.\n        unchecked {\n            balanceOf[recipient] += amount;\n        }\n        emit Transfer(msg.sender, recipient, amount);\n        return true;\n    }\n\n    /// @notice Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\n    /// @param sender Address to pull tokens `from`.\n    /// @param recipient The address to move tokens to.\n    /// @param amount The token `amount` to move.\n    /// @return (bool) Returns 'true' if succeeded.\n    function transferFrom(\n        address sender,\n        address recipient,\n        uint256 amount\n    ) external returns (bool) {\n        if (level2) _checkWhiteList(recipient);\n        if (allowance[sender][msg.sender] != type(uint256).max) {\n            allowance[sender][msg.sender] -= amount;\n        }\n        balanceOf[sender] -= amount;\n        // @dev This is safe from overflow - the sum of all user\n        // balances can't exceed 'type(uint256).max'.\n        unchecked {\n            balanceOf[recipient] += amount;\n        }\n        emit Transfer(sender, recipient, amount);\n        return true;\n    }\n\n    /// @notice Triggers an approval from `owner` to `spender`.\n    /// @param owner The address to approve from.\n    /// @param spender The address to be approved.\n    /// @param amount The number of tokens that are approved (2^256-1 means infinite).\n    /// @param deadline The time at which to expire the signature.\n    /// @param v The recovery byte of the signature.\n    /// @param r Half of the ECDSA signature pair.\n    /// @param s Half of the ECDSA signature pair.\n    function permit(\n        address owner,\n        address spender,\n        uint256 amount,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external {\n        require(deadline >= block.timestamp, \"PERMIT_DEADLINE_EXPIRED\");\n        bytes32 digest = keccak256(\n            abi.encodePacked(\n                \"\\x19\\x01\",\n                DOMAIN_SEPARATOR,\n                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))\n            )\n        );\n        address recoveredAddress = ecrecover(digest, v, r, s);\n        require(recoveredAddress != address(0) && recoveredAddress == owner, \"INVALID_PERMIT_SIGNATURE\");\n        allowance[recoveredAddress][spender] = amount;\n        emit Approval(owner, spender, amount);\n    }\n\n    function _mint(address recipient, uint256 amount) internal {\n        totalSupply += amount;\n        // @dev This is safe from overflow - the sum of all user\n        // balances can't exceed 'type(uint256).max'.\n        unchecked {\n            balanceOf[recipient] += amount;\n        }\n        emit Transfer(address(0), recipient, amount);\n    }\n\n    function _burn(address sender, uint256 amount) internal {\n        balanceOf[sender] -= amount;\n        // @dev This is safe from underflow - users won't ever\n        // have a balance larger than `totalSupply`.\n        unchecked {\n            totalSupply -= amount;\n        }\n        emit Transfer(sender, address(0), amount);\n    }\n\n    /// @dev Checks `whiteListManager` for pool `operator` and given user `account`.\n    function _checkWhiteList(address account) internal view {\n        (, bytes memory _whitelisted) = whiteListManager.staticcall(\n            abi.encodeWithSelector(IWhiteListManager.whitelistedAccounts.selector, operator, account)\n        );\n        bool whitelisted = abi.decode(_whitelisted, (bool));\n        require(whitelisted, \"NOT_WHITELISTED\");\n    }\n}\n"
      },
      "contracts/interfaces/IWhiteListManager.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\n/// @notice Trident franchised pool whitelist manager interface.\ninterface IWhiteListManager {\n    function whitelistedAccounts(address operator, address account) external returns (bool);\n}\n"
      },
      "contracts/pool/franchised/FranchisedHybridPool.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"../../interfaces/IBentoBoxMinimal.sol\";\nimport \"../../interfaces/IMasterDeployer.sol\";\nimport \"../../interfaces/IPool.sol\";\nimport \"../../interfaces/ITridentCallee.sol\";\nimport \"../../libraries/MathUtils.sol\";\nimport \"./TridentFranchisedERC20.sol\";\n\n/// @notice Trident exchange franchised pool template with hybrid like-kind formula for swapping between an ERC-20 token pair.\n/// @dev The reserves are stored as bento shares. However, the stableswap invariant is applied to the underlying amounts.\n///      The API uses the underlying amounts.\ncontract FranchisedHybridPool is IPool, TridentFranchisedERC20 {\n    using MathUtils for uint256;\n\n    event Mint(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\n    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\n    event Sync(uint256 reserve0, uint256 reserve1);\n\n    uint256 internal constant MINIMUM_LIQUIDITY = 10**3;\n    uint8 internal constant PRECISION = 112;\n\n    /// @dev Constant value used as max loop limit.\n    uint256 internal constant MAX_LOOP_LIMIT = 256;\n    uint256 internal constant MAX_FEE = 10000; // @dev 100%.\n    uint256 public immutable swapFee;\n\n    address public immutable barFeeTo;\n    address public immutable bento;\n    address public immutable masterDeployer;\n    address public immutable token0;\n    address public immutable token1;\n    uint256 public immutable A;\n    uint256 internal immutable N_A; // @dev 2 * A.\n    uint256 internal constant A_PRECISION = 100;\n\n    /// @dev Multipliers for each pooled token's precision to get to POOL_PRECISION_DECIMALS.\n    /// For example, TBTC has 18 decimals, so the multiplier should be 1. WBTC\n    /// has 8, so the multiplier should be 10 ** 18 / 10 ** 8 => 10 ** 10.\n    uint256 public immutable token0PrecisionMultiplier;\n    uint256 public immutable token1PrecisionMultiplier;\n\n    uint256 public barFee;\n\n    uint128 internal reserve0;\n    uint128 internal reserve1;\n\n    bytes32 public constant override poolIdentifier = \"Trident:FranchisedHybrid\";\n\n    uint256 internal unlocked;\n    modifier lock() {\n        require(unlocked == 1, \"LOCKED\");\n        unlocked = 2;\n        _;\n        unlocked = 1;\n    }\n\n    constructor(bytes memory _deployData, address _masterDeployer) {\n        (address _token0, address _token1, uint256 _swapFee, uint256 a, address _whiteListManager, address _operator, bool _level2) = abi\n            .decode(_deployData, (address, address, uint256, uint256, address, address, bool));\n\n        // @dev Factory ensures that the tokens are sorted.\n        require(_token0 != address(0), \"ZERO_ADDRESS\");\n        require(_token0 != _token1, \"IDENTICAL_ADDRESSES\");\n        require(_swapFee <= MAX_FEE, \"INVALID_SWAP_FEE\");\n        require(a != 0, \"ZERO_A\");\n\n        TridentFranchisedERC20.initialize(_whiteListManager, _operator, _level2);\n\n        (, bytes memory _barFee) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFee.selector));\n        (, bytes memory _barFeeTo) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFeeTo.selector));\n        (, bytes memory _bento) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.bento.selector));\n        (, bytes memory _decimals0) = _token0.staticcall(abi.encodeWithSelector(0x313ce567)); // @dev 'decimals()'.\n        (, bytes memory _decimals1) = _token1.staticcall(abi.encodeWithSelector(0x313ce567)); // @dev 'decimals()'.\n\n        token0 = _token0;\n        token1 = _token1;\n        swapFee = _swapFee;\n        barFee = abi.decode(_barFee, (uint256));\n        barFeeTo = abi.decode(_barFeeTo, (address));\n        bento = abi.decode(_bento, (address));\n        masterDeployer = _masterDeployer;\n        A = a;\n        N_A = 2 * a;\n        token0PrecisionMultiplier = 10**(decimals - abi.decode(_decimals0, (uint8)));\n        token1PrecisionMultiplier = 10**(decimals - abi.decode(_decimals1, (uint8)));\n        unlocked = 1;\n    }\n\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\n    /// The router must ensure that sufficient LP tokens are minted by using the return value.\n    function mint(bytes calldata data) public override lock returns (uint256 liquidity) {\n        address recipient = abi.decode(data, (address));\n        _checkWhiteList(recipient);\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\n        (uint256 balance0, uint256 balance1) = _balance();\n        uint256 _totalSupply = totalSupply;\n\n        uint256 amount0 = balance0 - _reserve0;\n        uint256 amount1 = balance1 - _reserve1;\n        (uint256 fee0, uint256 fee1) = _nonOptimalMintFee(amount0, amount1, _reserve0, _reserve1);\n        uint256 newLiq = _computeLiquidity(balance0 - fee0, balance1 - fee1);\n\n        if (_totalSupply == 0) {\n            liquidity = newLiq - MINIMUM_LIQUIDITY;\n            _mint(address(0), MINIMUM_LIQUIDITY);\n        } else {\n            uint256 oldLiq = _computeLiquidity(_reserve0, _reserve1);\n            liquidity = ((newLiq - oldLiq) * _totalSupply) / oldLiq;\n        }\n        require(liquidity != 0, \"INSUFFICIENT_LIQUIDITY_MINTED\");\n        _mint(recipient, liquidity);\n        _updateReserves();\n        uint256 liquidityForEvent = liquidity;\n        emit Mint(msg.sender, amount0, amount1, recipient, liquidityForEvent);\n    }\n\n    /// @dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\n    function burn(bytes calldata data) public override lock returns (IPool.TokenAmount[] memory withdrawnAmounts) {\n        (address recipient, bool unwrapBento) = abi.decode(data, (address, bool));\n        _checkWhiteList(recipient);\n        (uint256 balance0, uint256 balance1) = _balance();\n        uint256 _totalSupply = totalSupply;\n        uint256 liquidity = balanceOf[address(this)];\n\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\n\n        _burn(address(this), liquidity);\n        _transfer(token0, amount0, recipient, unwrapBento);\n        _transfer(token1, amount1, recipient, unwrapBento);\n\n        balance0 -= _toShare(token0, amount0);\n        balance1 -= _toShare(token1, amount1);\n\n        _updateReserves();\n\n        withdrawnAmounts = new TokenAmount[](2);\n        withdrawnAmounts[0] = TokenAmount({token: token0, amount: amount0});\n        withdrawnAmounts[1] = TokenAmount({token: token1, amount: amount1});\n\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\n    }\n\n    /// @dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\n    /// - i.e., the user gets a single token out by burning LP tokens.\n    function burnSingle(bytes calldata data) public override lock returns (uint256 amountOut) {\n        (address tokenOut, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\n        _checkWhiteList(recipient);\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\n        (uint256 balance0, uint256 balance1) = _balance();\n        uint256 _totalSupply = totalSupply;\n        uint256 liquidity = balanceOf[address(this)];\n\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\n\n        _burn(address(this), liquidity);\n\n        if (tokenOut == token1) {\n            // @dev Swap `token0` for `token1`.\n            // @dev Calculate `amountOut` as if the user first withdrew balanced liquidity and then swapped `token0` for `token1`.\n            uint256 fee = _handleFee(token0, amount0);\n            amount1 += _getAmountOut(amount0 - fee, _reserve0 - amount0, _reserve1 - amount1, true);\n            _transfer(token1, amount1, recipient, unwrapBento);\n            balance0 -= _toShare(token0, amount0);\n            amountOut = amount1;\n            amount0 = 0;\n        } else {\n            // @dev Swap `token1` for `token0`.\n            require(tokenOut == token0, \"INVALID_OUTPUT_TOKEN\");\n            uint256 fee = _handleFee(token1, amount1);\n            amount0 += _getAmountOut(amount1 - fee, _reserve0 - amount0, _reserve1 - amount1, false);\n            _transfer(token0, amount0, recipient, unwrapBento);\n            balance1 -= _toShare(token1, amount1);\n            amountOut = amount0;\n            amount1 = 0;\n        }\n        _updateReserves();\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\n    }\n\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\n    function swap(bytes calldata data) public override lock returns (uint256 amountOut) {\n        (address tokenIn, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\n        if (level2) _checkWhiteList(recipient);\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\n        (uint256 balance0, uint256 balance1) = _balance();\n        uint256 amountIn;\n        address tokenOut;\n\n        if (tokenIn == token0) {\n            tokenOut = token1;\n            amountIn = balance0 - _reserve0;\n            uint256 fee = _handleFee(tokenIn, amountIn);\n            amountOut = _getAmountOut(amountIn - fee, _reserve0, _reserve1, true);\n        } else {\n            require(tokenIn == token1, \"INVALID_INPUT_TOKEN\");\n            tokenOut = token0;\n            amountIn = balance1 - _reserve1;\n            uint256 fee = _handleFee(tokenIn, amountIn);\n            amountOut = _getAmountOut(amountIn - fee, _reserve0, _reserve1, false);\n        }\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\n        _updateReserves();\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\n    }\n\n    /// @dev Swaps one token for another with payload. The router must support swap callbacks and ensure there isn't too much slippage.\n    function flashSwap(bytes calldata data) public override lock returns (uint256 amountOut) {\n        (address tokenIn, address recipient, bool unwrapBento, uint256 amountIn, bytes memory context) = abi.decode(\n            data,\n            (address, address, bool, uint256, bytes)\n        );\n        if (level2) _checkWhiteList(recipient);\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\n        address tokenOut;\n        uint256 fee;\n\n        if (tokenIn == token0) {\n            tokenOut = token1;\n            amountIn = _toAmount(token0, amountIn);\n            fee = (amountIn * swapFee) / MAX_FEE;\n            amountOut = _getAmountOut(amountIn - fee, _reserve0, _reserve1, true);\n            _processSwap(token1, recipient, amountOut, context, unwrapBento);\n            uint256 balance0 = _toAmount(token0, __balance(token0));\n            require(balance0 - _reserve0 >= amountIn, \"INSUFFICIENT_AMOUNT_IN\");\n        } else {\n            require(tokenIn == token1, \"INVALID_INPUT_TOKEN\");\n            tokenOut = token0;\n            amountIn = _toAmount(token1, amountIn);\n            fee = (amountIn * swapFee) / MAX_FEE;\n            amountOut = _getAmountOut(amountIn - fee, _reserve0, _reserve1, false);\n            _processSwap(token0, recipient, amountOut, context, unwrapBento);\n            uint256 balance1 = _toAmount(token1, __balance(token1));\n            require(balance1 - _reserve1 >= amountIn, \"INSUFFICIENT_AMOUNT_IN\");\n        }\n        _transfer(tokenIn, fee, barFeeTo, false);\n        _updateReserves();\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\n    }\n\n    /// @dev Updates `barFee` for Trident protocol.\n    function updateBarFee() public {\n        (, bytes memory _barFee) = masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFee.selector));\n        barFee = abi.decode(_barFee, (uint256));\n    }\n\n    function _processSwap(\n        address tokenOut,\n        address to,\n        uint256 amountOut,\n        bytes memory data,\n        bool unwrapBento\n    ) internal {\n        _transfer(tokenOut, amountOut, to, unwrapBento);\n        if (data.length != 0) ITridentCallee(msg.sender).tridentSwapCallback(data);\n    }\n\n    function _getReserves() internal view returns (uint256 _reserve0, uint256 _reserve1) {\n        (_reserve0, _reserve1) = (reserve0, reserve1);\n        _reserve0 = _toAmount(token0, _reserve0);\n        _reserve1 = _toAmount(token1, _reserve1);\n    }\n\n    function _updateReserves() internal {\n        (uint256 _reserve0, uint256 _reserve1) = _balance();\n        require(_reserve0 < type(uint128).max && _reserve1 < type(uint128).max, \"OVERFLOW\");\n        reserve0 = uint128(_reserve0);\n        reserve1 = uint128(_reserve1);\n        emit Sync(_reserve0, _reserve1);\n    }\n\n    function _balance() internal view returns (uint256 balance0, uint256 balance1) {\n        balance0 = _toAmount(token0, __balance(token0));\n        balance1 = _toAmount(token1, __balance(token1));\n    }\n\n    function __balance(address token) internal view returns (uint256 balance) {\n        // @dev balanceOf(address,address).\n        (, bytes memory ___balance) = bento.staticcall(abi.encodeWithSelector(IBentoBoxMinimal.balanceOf.selector, token, address(this)));\n        balance = abi.decode(___balance, (uint256));\n    }\n\n    function _toAmount(address token, uint256 input) internal view returns (uint256 output) {\n        // @dev toAmount(address,uint256,bool).\n        (, bytes memory _output) = bento.staticcall(abi.encodeWithSelector(IBentoBoxMinimal.toAmount.selector, token, input, false));\n        output = abi.decode(_output, (uint256));\n    }\n\n    function _toShare(address token, uint256 input) internal view returns (uint256 output) {\n        // @dev toShare(address,uint256,bool).\n        (, bytes memory _output) = bento.staticcall(abi.encodeWithSelector(IBentoBoxMinimal.toShare.selector, token, input, false));\n        output = abi.decode(_output, (uint256));\n    }\n\n    function _getAmountOut(\n        uint256 amountIn,\n        uint256 _reserve0,\n        uint256 _reserve1,\n        bool token0In\n    ) internal view returns (uint256 dy) {\n        uint256 xpIn;\n        uint256 xpOut;\n\n        if (token0In) {\n            xpIn = _reserve0 * token0PrecisionMultiplier;\n            xpOut = _reserve1 * token1PrecisionMultiplier;\n            amountIn *= token0PrecisionMultiplier;\n        } else {\n            xpIn = _reserve1 * token1PrecisionMultiplier;\n            xpOut = _reserve0 * token0PrecisionMultiplier;\n            amountIn *= token1PrecisionMultiplier;\n        }\n        uint256 d = _computeLiquidityFromAdjustedBalances(xpIn, xpOut);\n        uint256 x = xpIn + amountIn;\n        uint256 y = _getY(x, d);\n        dy = xpOut - y - 1;\n        dy /= (token0In ? token1PrecisionMultiplier : token0PrecisionMultiplier);\n    }\n\n    function _transfer(\n        address token,\n        uint256 amount,\n        address to,\n        bool unwrapBento\n    ) internal {\n        if (unwrapBento) {\n            // @dev withdraw(address,address,address,uint256,uint256).\n            (bool success, ) = bento.call(abi.encodeWithSelector(IBentoBoxMinimal.withdraw.selector, token, address(this), to, amount, 0));\n            require(success, \"WITHDRAW_FAILED\");\n        } else {\n            // @dev transfer(address,address,address,uint256).\n            (bool success, ) = bento.call(\n                abi.encodeWithSelector(IBentoBoxMinimal.transfer.selector, token, address(this), to, _toShare(token, amount))\n            );\n            require(success, \"TRANSFER_FAILED\");\n        }\n    }\n\n    /// @notice Get D, the StableSwap invariant, based on a set of balances and a particular A.\n    /// See the StableSwap paper for details.\n    /// @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L319.\n    /// @return liquidity The invariant, at the precision of the pool.\n    function _computeLiquidity(uint256 _reserve0, uint256 _reserve1) internal view returns (uint256 liquidity) {\n        uint256 xp0 = _reserve0 * token0PrecisionMultiplier;\n        uint256 xp1 = _reserve1 * token1PrecisionMultiplier;\n        liquidity = _computeLiquidityFromAdjustedBalances(xp0, xp1);\n    }\n\n    function _computeLiquidityFromAdjustedBalances(uint256 xp0, uint256 xp1) internal view returns (uint256 computed) {\n        uint256 s = xp0 + xp1;\n\n        if (s == 0) {\n            computed = 0;\n        }\n        uint256 prevD;\n        uint256 D = s;\n        for (uint256 i = 0; i < MAX_LOOP_LIMIT; i++) {\n            uint256 dP = (((D * D) / xp0) * D) / xp1 / 4;\n            prevD = D;\n            D = (((N_A * s) / A_PRECISION + 2 * dP) * D) / ((N_A / A_PRECISION - 1) * D + 3 * dP);\n            if (D.within1(prevD)) {\n                break;\n            }\n        }\n        computed = D;\n    }\n\n    /// @notice Calculate the new balances of the tokens given the indexes of the token\n    /// that is swapped from (FROM) and the token that is swapped to (TO).\n    /// This function is used as a helper function to calculate how much TO token\n    /// the user should receive on swap.\n    /// @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L432.\n    /// @param x The new total amount of FROM token.\n    /// @return y The amount of TO token that should remain in the pool.\n    function _getY(uint256 x, uint256 D) internal view returns (uint256 y) {\n        uint256 c = (D * D) / (x * 2);\n        c = (c * D) / ((N_A * 2) / A_PRECISION);\n        uint256 b = x + ((D * A_PRECISION) / N_A);\n        uint256 yPrev;\n        y = D;\n        // @dev Iterative approximation.\n        for (uint256 i = 0; i < MAX_LOOP_LIMIT; i++) {\n            yPrev = y;\n            y = (y * y + c) / (y * 2 + b - D);\n            if (y.within1(yPrev)) {\n                break;\n            }\n        }\n    }\n\n    /// @notice Calculate the price of a token in the pool given\n    /// precision-adjusted balances and a particular D and precision-adjusted\n    /// array of balances.\n    /// @dev This is accomplished via solving the quadratic equation iteratively.\n    /// See the StableSwap paper and Curve.fi implementation for further details.\n    /// x_1**2 + x1 * (sum' - (A*n**n - 1) * D / (A * n**n)) = D ** (n + 1) / (n ** (2 * n) * prod' * A)\n    /// x_1**2 + b*x_1 = c\n    /// x_1 = (x_1**2 + c) / (2*x_1 + b)\n    /// @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L276.\n    /// @return y The price of the token, in the same precision as in xp.\n    function _getYD(\n        uint256 s, // @dev xpOut.\n        uint256 d\n    ) internal view returns (uint256 y) {\n        uint256 c = (d * d) / (s * 2);\n        c = (c * d) / ((N_A * 2) / A_PRECISION);\n\n        uint256 b = s + ((d * A_PRECISION) / N_A);\n        uint256 yPrev;\n        y = d;\n\n        for (uint256 i = 0; i < MAX_LOOP_LIMIT; i++) {\n            yPrev = y;\n            y = (y * y + c) / (y * 2 + b - d);\n            if (y.within1(yPrev)) {\n                break;\n            }\n        }\n    }\n\n    function _handleFee(address tokenIn, uint256 amountIn) internal returns (uint256 fee) {\n        fee = (amountIn * swapFee) / MAX_FEE;\n        uint256 _barFee = (fee * barFee) / MAX_FEE;\n        _transfer(tokenIn, _barFee, barFeeTo, false);\n    }\n\n    /// @dev This fee is charged to cover for `swapFee` when users add unbalanced liquidity.\n    function _nonOptimalMintFee(\n        uint256 _amount0,\n        uint256 _amount1,\n        uint256 _reserve0,\n        uint256 _reserve1\n    ) internal view returns (uint256 token0Fee, uint256 token1Fee) {\n        if (_reserve0 == 0 || _reserve1 == 0) return (0, 0);\n        uint256 amount1Optimal = (_amount0 * _reserve1) / _reserve0;\n\n        if (amount1Optimal <= _amount1) {\n            token1Fee = (swapFee * (_amount1 - amount1Optimal)) / (2 * MAX_FEE);\n        } else {\n            uint256 amount0Optimal = (_amount1 * _reserve0) / _reserve1;\n            token0Fee = (swapFee * (_amount0 - amount0Optimal)) / (2 * MAX_FEE);\n        }\n    }\n\n    function getAssets() public view override returns (address[] memory assets) {\n        assets = new address[](2);\n        assets[0] = token0;\n        assets[1] = token1;\n    }\n\n    function getAmountOut(bytes calldata data) public view override returns (uint256 finalAmountOut) {\n        (address tokenIn, uint256 amountIn) = abi.decode(data, (address, uint256));\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\n        amountIn = _toAmount(tokenIn, amountIn);\n        amountIn -= (amountIn * swapFee) / MAX_FEE;\n\n        if (tokenIn == token0) {\n            finalAmountOut = _getAmountOut(amountIn, _reserve0, _reserve1, true);\n        } else {\n            require(tokenIn == token1, \"INVALID_INPUT_TOKEN\");\n            finalAmountOut = _getAmountOut(amountIn, _reserve0, _reserve1, false);\n        }\n    }\n\n    function getAmountIn(bytes calldata) public pure override returns (uint256) {\n        revert();\n    }\n\n    function getReserves() public view returns (uint256 _reserve0, uint256 _reserve1) {\n        (_reserve0, _reserve1) = _getReserves();\n    }\n}\n"
      },
      "contracts/pool/franchised/FranchisedHybridPoolFactory.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"./FranchisedHybridPool.sol\";\nimport \"../PoolDeployer.sol\";\n\n/// @notice Contract for deploying Trident exchange Franchised Hybrid Product Pool with configurations.\n/// @author Mudit Gupta.\ncontract FranchisedHybridPoolFactory is PoolDeployer {\n    constructor(address _masterDeployer) PoolDeployer(_masterDeployer) {}\n\n    function deployPool(bytes memory _deployData) external returns (address pool) {\n        (address tokenA, address tokenB, uint256 swapFee, uint256 a, address whiteListManager, address operator, bool level2) = abi.decode(\n            _deployData,\n            (address, address, uint256, uint256, address, address, bool)\n        );\n        if (tokenA > tokenB) {\n            (tokenA, tokenB) = (tokenB, tokenA);\n        }\n\n        // @dev Strips any extra data.\n        _deployData = abi.encode(tokenA, tokenB, swapFee, a, whiteListManager, operator, level2);\n        address[] memory tokens = new address[](2);\n        tokens[0] = tokenA;\n        tokens[1] = tokenB;\n\n        // @dev Salt is not actually needed since `_deployData` is part of creationCode and already contains the salt.\n        bytes32 salt = keccak256(_deployData);\n        pool = address(new FranchisedHybridPool{salt: salt}(_deployData, masterDeployer));\n        _registerPool(pool, tokens, salt);\n    }\n}\n"
      },
      "contracts/pool/franchised/FranchisedConstantProductPool.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"../../interfaces/IBentoBoxMinimal.sol\";\nimport \"../../interfaces/IMasterDeployer.sol\";\nimport \"../../interfaces/IPool.sol\";\nimport \"../../interfaces/ITridentCallee.sol\";\nimport \"../../libraries/TridentMath.sol\";\nimport \"./TridentFranchisedERC20.sol\";\n\n/// @notice Trident exchange franchised pool template with constant product formula for swapping between an ERC-20 token pair.\n/// @dev The reserves are stored as bento shares.\n///      The curve is applied to shares as well. This pool does not care about the underlying amounts.\ncontract FranchisedConstantProductPool is IPool, TridentFranchisedERC20 {\n    event Mint(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\n    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\n    event Sync(uint256 reserve0, uint256 reserve1);\n\n    uint256 internal constant MINIMUM_LIQUIDITY = 1000;\n\n    uint8 internal constant PRECISION = 112;\n    uint256 internal constant MAX_FEE = 10000; // @dev 100%.\n    uint256 internal constant MAX_FEE_SQUARE = 100000000;\n    uint256 internal constant E18 = uint256(10)**18;\n    uint256 public immutable swapFee;\n    uint256 internal immutable MAX_FEE_MINUS_SWAP_FEE;\n\n    address public immutable barFeeTo;\n    address public immutable bento;\n    address public immutable masterDeployer;\n    address public immutable token0;\n    address public immutable token1;\n\n    uint256 public barFee;\n    uint256 public price0CumulativeLast;\n    uint256 public price1CumulativeLast;\n    uint256 public kLast;\n\n    uint112 internal reserve0;\n    uint112 internal reserve1;\n    uint32 internal blockTimestampLast;\n\n    bytes32 public constant override poolIdentifier = \"Trident:FranchisedCP\";\n\n    uint256 internal unlocked;\n    modifier lock() {\n        require(unlocked == 1, \"LOCKED\");\n        unlocked = 2;\n        _;\n        unlocked = 1;\n    }\n\n    constructor(bytes memory _deployData, address _masterDeployer) {\n        (\n            address _token0,\n            address _token1,\n            uint256 _swapFee,\n            bool _twapSupport,\n            address _whiteListManager,\n            address _operator,\n            bool _level2\n        ) = abi.decode(_deployData, (address, address, uint256, bool, address, address, bool));\n\n        // @dev Factory ensures that the tokens are sorted.\n        require(_token0 != address(0), \"ZERO_ADDRESS\");\n        require(_token0 != _token1, \"IDENTICAL_ADDRESSES\");\n        require(_token0 != address(this), \"INVALID_TOKEN\");\n        require(_token1 != address(this), \"INVALID_TOKEN\");\n        require(_swapFee <= MAX_FEE, \"INVALID_SWAP_FEE\");\n\n        TridentFranchisedERC20.initialize(_whiteListManager, _operator, _level2);\n\n        (, bytes memory _barFee) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFee.selector));\n        (, bytes memory _barFeeTo) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFeeTo.selector));\n        (, bytes memory _bento) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.bento.selector));\n\n        token0 = _token0;\n        token1 = _token1;\n        swapFee = _swapFee;\n        // @dev This is safe from underflow - `swapFee` cannot exceed `MAX_FEE` per previous check.\n        unchecked {\n            MAX_FEE_MINUS_SWAP_FEE = MAX_FEE - _swapFee;\n        }\n        barFee = abi.decode(_barFee, (uint256));\n        barFeeTo = abi.decode(_barFeeTo, (address));\n        bento = abi.decode(_bento, (address));\n        masterDeployer = _masterDeployer;\n        unlocked = 1;\n        if (_twapSupport) blockTimestampLast = 1;\n    }\n\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\n    /// The router must ensure that sufficient LP tokens are minted by using the return value.\n    function mint(bytes calldata data) public override lock returns (uint256 liquidity) {\n        address recipient = abi.decode(data, (address));\n        _checkWhiteList(recipient);\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\n        (uint256 balance0, uint256 balance1) = _balance();\n        uint256 _totalSupply = totalSupply;\n\n        unchecked {\n            _totalSupply += _mintFee(_reserve0, _reserve1, _totalSupply);\n        }\n\n        uint256 amount0 = balance0 - _reserve0;\n        uint256 amount1 = balance1 - _reserve1;\n        (uint256 fee0, uint256 fee1) = _nonOptimalMintFee(amount0, amount1, _reserve0, _reserve1);\n        uint256 computed = TridentMath.sqrt((balance0 - fee0) * (balance1 - fee1));\n\n        if (_totalSupply == 0) {\n            _mint(address(0), MINIMUM_LIQUIDITY);\n            liquidity = computed - MINIMUM_LIQUIDITY;\n        } else {\n            uint256 k = TridentMath.sqrt(uint256(_reserve0) * _reserve1);\n            liquidity = ((computed - k) * _totalSupply) / k;\n        }\n        require(liquidity != 0, \"INSUFFICIENT_LIQUIDITY_MINTED\");\n        _mint(recipient, liquidity);\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\n        kLast = TridentMath.sqrt(balance0 * balance1);\n        uint256 liquidityForEvent = liquidity;\n        emit Mint(msg.sender, amount0, amount1, recipient, liquidityForEvent);\n    }\n\n    /// @dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\n    function burn(bytes calldata data) public override lock returns (IPool.TokenAmount[] memory withdrawnAmounts) {\n        (address recipient, bool unwrapBento) = abi.decode(data, (address, bool));\n        _checkWhiteList(recipient);\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\n        (uint256 balance0, uint256 balance1) = _balance();\n        uint256 _totalSupply = totalSupply;\n        uint256 liquidity = balanceOf[address(this)];\n\n        unchecked {\n            _totalSupply += _mintFee(_reserve0, _reserve1, _totalSupply);\n        }\n\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\n\n        _burn(address(this), liquidity);\n        _transfer(token0, amount0, recipient, unwrapBento);\n        _transfer(token1, amount1, recipient, unwrapBento);\n        // @dev This is safe from underflow - amounts are lesser figures derived from balances.\n        unchecked {\n            balance0 -= amount0;\n            balance1 -= amount1;\n        }\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\n        kLast = TridentMath.sqrt(balance0 * balance1);\n\n        withdrawnAmounts = new TokenAmount[](2);\n        withdrawnAmounts[0] = TokenAmount({token: address(token0), amount: amount0});\n        withdrawnAmounts[1] = TokenAmount({token: address(token1), amount: amount1});\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\n    }\n\n    /// @dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\n    /// - i.e., the user gets a single token out by burning LP tokens.\n    function burnSingle(bytes calldata data) public override lock returns (uint256 amountOut) {\n        (address tokenOut, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\n        _checkWhiteList(recipient);\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\n        (uint256 balance0, uint256 balance1) = _balance();\n        uint256 _totalSupply = totalSupply;\n        uint256 liquidity = balanceOf[address(this)];\n\n        unchecked {\n            _totalSupply += _mintFee(_reserve0, _reserve1, _totalSupply);\n        }\n\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\n\n        _burn(address(this), liquidity);\n        unchecked {\n            if (tokenOut == token1) {\n                // @dev Swap `token0` for `token1`\n                // - calculate `amountOut` as if the user first withdrew balanced liquidity and then swapped `token0` for `token1`.\n                amount1 += _getAmountOut(amount0, _reserve0 - amount0, _reserve1 - amount1);\n                _transfer(token1, amount1, recipient, unwrapBento);\n                balance1 -= amount1;\n                amountOut = amount1;\n                amount0 = 0;\n            } else {\n                // @dev Swap `token1` for `token0`.\n                require(tokenOut == token0, \"INVALID_OUTPUT_TOKEN\");\n                amount0 += _getAmountOut(amount1, _reserve1 - amount1, _reserve0 - amount0);\n                _transfer(token0, amount0, recipient, unwrapBento);\n                balance0 -= amount0;\n                amountOut = amount0;\n                amount1 = 0;\n            }\n        }\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\n        kLast = TridentMath.sqrt(balance0 * balance1);\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\n    }\n\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\n    function swap(bytes calldata data) public override lock returns (uint256 amountOut) {\n        (address tokenIn, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\n        if (level2) _checkWhiteList(recipient);\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\n        (uint256 balance0, uint256 balance1) = _balance();\n        uint256 amountIn;\n        address tokenOut;\n        unchecked {\n            if (tokenIn == token0) {\n                tokenOut = token1;\n                amountIn = balance0 - _reserve0;\n                amountOut = _getAmountOut(amountIn, _reserve0, _reserve1);\n                balance1 -= amountOut;\n            } else {\n                require(tokenIn == token1, \"INVALID_INPUT_TOKEN\");\n                tokenOut = token0;\n                amountIn = balance1 - reserve1;\n                amountOut = _getAmountOut(amountIn, _reserve1, _reserve0);\n                balance0 -= amountOut;\n            }\n        }\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\n    }\n\n    /// @dev Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage.\n    function flashSwap(bytes calldata data) public override lock returns (uint256 amountOut) {\n        (address tokenIn, address recipient, bool unwrapBento, uint256 amountIn, bytes memory context) = abi.decode(\n            data,\n            (address, address, bool, uint256, bytes)\n        );\n        if (level2) _checkWhiteList(recipient);\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\n        unchecked {\n            if (tokenIn == token0) {\n                amountOut = _getAmountOut(amountIn, _reserve0, _reserve1);\n                _transfer(token1, amountOut, recipient, unwrapBento);\n                ITridentCallee(msg.sender).tridentSwapCallback(context);\n                (uint256 balance0, uint256 balance1) = _balance();\n                require(balance0 - _reserve0 >= amountIn, \"INSUFFICIENT_AMOUNT_IN\");\n                _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\n                emit Swap(recipient, tokenIn, token1, amountIn, amountOut);\n            } else {\n                require(tokenIn == token1, \"INVALID_INPUT_TOKEN\");\n                amountOut = _getAmountOut(amountIn, _reserve1, _reserve0);\n                _transfer(token0, amountOut, recipient, unwrapBento);\n                ITridentCallee(msg.sender).tridentSwapCallback(context);\n                (uint256 balance0, uint256 balance1) = _balance();\n                require(balance1 - _reserve1 >= amountIn, \"INSUFFICIENT_AMOUNT_IN\");\n                _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\n                emit Swap(recipient, tokenIn, token0, amountIn, amountOut);\n            }\n        }\n    }\n\n    /// @dev Updates `barFee` for Trident protocol.\n    function updateBarFee() public {\n        (, bytes memory _barFee) = masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFee.selector));\n        barFee = abi.decode(_barFee, (uint256));\n    }\n\n    function _getReserves()\n        internal\n        view\n        returns (\n            uint112 _reserve0,\n            uint112 _reserve1,\n            uint32 _blockTimestampLast\n        )\n    {\n        _reserve0 = reserve0;\n        _reserve1 = reserve1;\n        _blockTimestampLast = blockTimestampLast;\n    }\n\n    function _balance() internal view returns (uint256 balance0, uint256 balance1) {\n        // @dev balanceOf(address,address).\n        (, bytes memory _balance0) = bento.staticcall(abi.encodeWithSelector(0xf7888aec, token0, address(this)));\n        balance0 = abi.decode(_balance0, (uint256));\n        // @dev balanceOf(address,address).\n        (, bytes memory _balance1) = bento.staticcall(abi.encodeWithSelector(0xf7888aec, token1, address(this)));\n        balance1 = abi.decode(_balance1, (uint256));\n    }\n\n    function _update(\n        uint256 balance0,\n        uint256 balance1,\n        uint112 _reserve0,\n        uint112 _reserve1,\n        uint32 _blockTimestampLast\n    ) internal {\n        require(balance0 <= type(uint112).max && balance1 <= type(uint112).max, \"OVERFLOW\");\n        if (blockTimestampLast == 0) {\n            // @dev TWAP support is disabled for gas efficiency.\n            reserve0 = uint112(balance0);\n            reserve1 = uint112(balance1);\n        } else {\n            uint32 blockTimestamp = uint32(block.timestamp);\n            if (blockTimestamp != _blockTimestampLast && _reserve0 != 0 && _reserve1 != 0) {\n                unchecked {\n                    uint32 timeElapsed = blockTimestamp - _blockTimestampLast;\n                    uint256 price0 = (uint256(_reserve1) << PRECISION) / _reserve0;\n                    price0CumulativeLast += price0 * timeElapsed;\n                    uint256 price1 = (uint256(_reserve0) << PRECISION) / _reserve1;\n                    price1CumulativeLast += price1 * timeElapsed;\n                }\n            }\n            reserve0 = uint112(balance0);\n            reserve1 = uint112(balance1);\n            blockTimestampLast = blockTimestamp;\n        }\n        emit Sync(balance0, balance1);\n    }\n\n    function _mintFee(\n        uint112 _reserve0,\n        uint112 _reserve1,\n        uint256 _totalSupply\n    ) internal returns (uint256 liquidity) {\n        uint256 _kLast = kLast;\n        if (_kLast != 0) {\n            uint256 computed = TridentMath.sqrt(uint256(_reserve0) * _reserve1);\n            if (computed > _kLast) {\n                // @dev `barFee` % of increase in liquidity.\n                // It's going to be slightly less than `barFee` % in reality due to the math.\n                liquidity = (_totalSupply * (computed - _kLast) * barFee) / computed / MAX_FEE;\n                if (liquidity != 0) {\n                    _mint(barFeeTo, liquidity);\n                }\n            }\n        }\n    }\n\n    function _getAmountOut(\n        uint256 amountIn,\n        uint256 reserveAmountIn,\n        uint256 reserveAmountOut\n    ) internal view returns (uint256 amountOut) {\n        uint256 amountInWithFee = amountIn * MAX_FEE_MINUS_SWAP_FEE;\n        amountOut = (amountInWithFee * reserveAmountOut) / (reserveAmountIn * MAX_FEE + amountInWithFee);\n    }\n\n    function _transfer(\n        address token,\n        uint256 shares,\n        address to,\n        bool unwrapBento\n    ) internal {\n        if (unwrapBento) {\n            (bool success, ) = bento.call(abi.encodeWithSelector(IBentoBoxMinimal.withdraw.selector, token, address(this), to, 0, shares));\n            require(success, \"WITHDRAW_FAILED\");\n        } else {\n            (bool success, ) = bento.call(abi.encodeWithSelector(IBentoBoxMinimal.transfer.selector, token, address(this), to, shares));\n            require(success, \"TRANSFER_FAILED\");\n        }\n    }\n\n    /// @dev This fee is charged to cover for `swapFee` when users add unbalanced liquidity.\n    function _nonOptimalMintFee(\n        uint256 _amount0,\n        uint256 _amount1,\n        uint256 _reserve0,\n        uint256 _reserve1\n    ) internal view returns (uint256 token0Fee, uint256 token1Fee) {\n        if (_reserve0 == 0 || _reserve1 == 0) return (0, 0);\n        uint256 amount1Optimal = (_amount0 * _reserve1) / _reserve0;\n        if (amount1Optimal <= _amount1) {\n            token1Fee = (swapFee * (_amount1 - amount1Optimal)) / (2 * MAX_FEE);\n        } else {\n            uint256 amount0Optimal = (_amount1 * _reserve0) / _reserve1;\n            token0Fee = (swapFee * (_amount0 - amount0Optimal)) / (2 * MAX_FEE);\n        }\n    }\n\n    function getAssets() public view override returns (address[] memory assets) {\n        assets = new address[](2);\n        assets[0] = token0;\n        assets[1] = token1;\n    }\n\n    function getAmountOut(bytes calldata data) public view override returns (uint256 finalAmountOut) {\n        (address tokenIn, uint256 amountIn) = abi.decode(data, (address, uint256));\n        (uint112 _reserve0, uint112 _reserve1, ) = _getReserves();\n        if (tokenIn == token0) {\n            finalAmountOut = _getAmountOut(amountIn, _reserve0, _reserve1);\n        } else {\n            require(tokenIn == token1, \"INVALID_INPUT_TOKEN\");\n            finalAmountOut = _getAmountOut(amountIn, _reserve1, _reserve0);\n        }\n    }\n\n    function getAmountIn(bytes calldata) public pure override returns (uint256) {\n        revert();\n    }\n\n    function getReserves()\n        public\n        view\n        returns (\n            uint112 _reserve0,\n            uint112 _reserve1,\n            uint32 _blockTimestampLast\n        )\n    {\n        return _getReserves();\n    }\n}\n"
      },
      "contracts/libraries/TridentMath.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\n/// @notice Trident sqrt helper library.\nlibrary TridentMath {\n    /// @notice Calculate sqrt (x) rounding down, where `x` is unsigned 256-bit integer number.\n    /// @dev Adapted from https://github.com/abdk-consulting/abdk-libraries-solidity/blob/master/ABDKMath64x64.sol, \n    /// © 2019 ABDK Consulting, License-Identifier: BSD-4-Clause.\n    /// @param x Unsigned 256-bit integer number.\n    /// @return result Sqrt result.\n    function sqrt(uint256 x) internal pure returns (uint256 result) {\n        unchecked {\n            if (x == 0) result = 0;\n            else {\n                uint256 xx = x;\n                uint256 r = 1;\n                if (xx >= 0x100000000000000000000000000000000) {\n                    xx >>= 128;\n                    r <<= 64;\n                }\n                if (xx >= 0x10000000000000000) {\n                    xx >>= 64;\n                    r <<= 32;\n                }\n                if (xx >= 0x100000000) {\n                    xx >>= 32;\n                    r <<= 16;\n                }\n                if (xx >= 0x10000) {\n                    xx >>= 16;\n                    r <<= 8;\n                }\n                if (xx >= 0x100) {\n                    xx >>= 8;\n                    r <<= 4;\n                }\n                if (xx >= 0x10) {\n                    xx >>= 4;\n                    r <<= 2;\n                }\n                if (xx >= 0x8) {\n                    r <<= 1;\n                }\n                r = (r + x / r) >> 1;\n                r = (r + x / r) >> 1;\n                r = (r + x / r) >> 1;\n                r = (r + x / r) >> 1;\n                r = (r + x / r) >> 1;\n                r = (r + x / r) >> 1;\n                r = (r + x / r) >> 1; // @dev Seven iterations should be enough.\n                uint256 r1 = x / r;\n                result = r < r1 ? r : r1;\n            }\n        }\n    }\n}\n"
      },
      "contracts/pool/franchised/FranchisedConstantProductPoolFactory.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"./FranchisedConstantProductPool.sol\";\nimport \"../PoolDeployer.sol\";\n\n/// @notice Contract for deploying Trident exchange Franchised Constant Product Pool with configurations.\n/// @author Mudit Gupta.\ncontract FranchisedConstantProductPoolFactory is PoolDeployer {\n    constructor(address _masterDeployer) PoolDeployer(_masterDeployer) {}\n\n    function deployPool(bytes memory _deployData) external returns (address pool) {\n        (address tokenA, address tokenB, uint256 swapFee, bool twapSupport, address whiteListManager, address operator, bool level2) = abi\n            .decode(_deployData, (address, address, uint256, bool, address, address, bool));\n        if (tokenA > tokenB) {\n            (tokenA, tokenB) = (tokenB, tokenA);\n        }\n\n        // @dev Strips any extra data.\n        _deployData = abi.encode(tokenA, tokenB, swapFee, twapSupport, whiteListManager, operator, level2);\n\n        address[] memory tokens = new address[](2);\n        tokens[0] = tokenA;\n        tokens[1] = tokenB;\n\n        // @dev Salt is not actually needed since `_deployData` is part of creationCode and already contains the salt.\n        bytes32 salt = keccak256(_deployData);\n        pool = address(new FranchisedConstantProductPool{salt: salt}(_deployData, masterDeployer));\n        _registerPool(pool, tokens, salt);\n    }\n}\n"
      },
      "contracts/pool/ConstantProductPool.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"../interfaces/IBentoBoxMinimal.sol\";\nimport \"../interfaces/IMasterDeployer.sol\";\nimport \"../interfaces/IPool.sol\";\nimport \"../interfaces/ITridentCallee.sol\";\nimport \"../libraries/TridentMath.sol\";\nimport \"./TridentERC20.sol\";\n\n/// @notice Trident exchange pool template with constant product formula for swapping between an ERC-20 token pair.\n/// @dev The reserves are stored as bento shares.\n///      The curve is applied to shares as well. This pool does not care about the underlying amounts.\ncontract ConstantProductPool is IPool, TridentERC20 {\n    event Mint(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\n    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\n    event Sync(uint256 reserve0, uint256 reserve1);\n\n    uint256 internal constant MINIMUM_LIQUIDITY = 1000;\n\n    uint8 internal constant PRECISION = 112;\n    uint256 internal constant MAX_FEE = 10000; // @dev 100%.\n    uint256 internal constant MAX_FEE_SQUARE = 100000000;\n    uint256 public immutable swapFee;\n    uint256 internal immutable MAX_FEE_MINUS_SWAP_FEE;\n\n    address public immutable barFeeTo;\n    IBentoBoxMinimal public immutable bento;\n    IMasterDeployer public immutable masterDeployer;\n    address public immutable token0;\n    address public immutable token1;\n\n    uint256 public barFee;\n    uint256 public price0CumulativeLast;\n    uint256 public price1CumulativeLast;\n    uint256 public kLast;\n\n    uint112 internal reserve0;\n    uint112 internal reserve1;\n    uint32 internal blockTimestampLast;\n\n    bytes32 public constant override poolIdentifier = \"Trident:ConstantProduct\";\n\n    uint256 internal unlocked;\n    modifier lock() {\n        require(unlocked == 1, \"LOCKED\");\n        unlocked = 2;\n        _;\n        unlocked = 1;\n    }\n\n    constructor(bytes memory _deployData, address _masterDeployer) {\n        (address _token0, address _token1, uint256 _swapFee, bool _twapSupport) = abi.decode(\n            _deployData,\n            (address, address, uint256, bool)\n        );\n\n        // @dev Factory ensures that the tokens are sorted.\n        require(_token0 != address(0), \"ZERO_ADDRESS\");\n        require(_token0 != _token1, \"IDENTICAL_ADDRESSES\");\n        require(_token0 != address(this), \"INVALID_TOKEN\");\n        require(_token1 != address(this), \"INVALID_TOKEN\");\n        require(_swapFee <= MAX_FEE, \"INVALID_SWAP_FEE\");\n\n        token0 = _token0;\n        token1 = _token1;\n        swapFee = _swapFee;\n        // @dev This is safe from underflow - `swapFee` cannot exceed `MAX_FEE` per previous check.\n        unchecked {\n            MAX_FEE_MINUS_SWAP_FEE = MAX_FEE - _swapFee;\n        }\n        barFee = IMasterDeployer(_masterDeployer).barFee();\n        barFeeTo = IMasterDeployer(_masterDeployer).barFeeTo();\n        bento = IBentoBoxMinimal(IMasterDeployer(_masterDeployer).bento());\n        masterDeployer = IMasterDeployer(_masterDeployer);\n        unlocked = 1;\n        if (_twapSupport) blockTimestampLast = uint32(block.timestamp);\n    }\n\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\n    /// The router must ensure that sufficient LP tokens are minted by using the return value.\n    function mint(bytes calldata data) public override lock returns (uint256 liquidity) {\n        address recipient = abi.decode(data, (address));\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\n        (uint256 balance0, uint256 balance1) = _balance();\n\n        uint256 computed = TridentMath.sqrt(balance0 * balance1);\n        uint256 amount0 = balance0 - _reserve0;\n        uint256 amount1 = balance1 - _reserve1;\n\n        (uint256 fee0, uint256 fee1) = _nonOptimalMintFee(amount0, amount1, _reserve0, _reserve1);\n        _reserve0 += uint112(fee0);\n        _reserve1 += uint112(fee1);\n\n        (uint256 _totalSupply, uint256 k) = _mintFee(_reserve0, _reserve1);\n\n        if (_totalSupply == 0) {\n            require(amount0 > 0 && amount1 > 0, \"INVALID_AMOUNTS\");\n            liquidity = computed - MINIMUM_LIQUIDITY;\n            _mint(address(0), MINIMUM_LIQUIDITY);\n        } else {\n            uint256 kIncrease;\n            unchecked {\n                kIncrease = computed - k;\n            }\n            liquidity = (kIncrease * _totalSupply) / k;\n        }\n        require(liquidity != 0, \"INSUFFICIENT_LIQUIDITY_MINTED\");\n        _mint(recipient, liquidity);\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\n        kLast = computed;\n        uint256 liquidityForEvent = liquidity;\n        emit Mint(msg.sender, amount0, amount1, recipient, liquidityForEvent);\n    }\n\n    /// @dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\n    function burn(bytes calldata data) public override lock returns (IPool.TokenAmount[] memory withdrawnAmounts) {\n        (address recipient, bool unwrapBento) = abi.decode(data, (address, bool));\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\n        (uint256 balance0, uint256 balance1) = _balance();\n        uint256 liquidity = balanceOf[address(this)];\n\n        (uint256 _totalSupply, ) = _mintFee(_reserve0, _reserve1);\n\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\n\n        _burn(address(this), liquidity);\n        _transfer(token0, amount0, recipient, unwrapBento);\n        _transfer(token1, amount1, recipient, unwrapBento);\n        // @dev This is safe from underflow - amounts are lesser figures derived from balances.\n        unchecked {\n            balance0 -= amount0;\n            balance1 -= amount1;\n        }\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\n        kLast = TridentMath.sqrt(balance0 * balance1);\n\n        withdrawnAmounts = new TokenAmount[](2);\n        withdrawnAmounts[0] = TokenAmount({token: address(token0), amount: amount0});\n        withdrawnAmounts[1] = TokenAmount({token: address(token1), amount: amount1});\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\n    }\n\n    /// @dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\n    /// - i.e., the user gets a single token out by burning LP tokens.\n    function burnSingle(bytes calldata data) public override lock returns (uint256 amountOut) {\n        (address tokenOut, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\n        uint256 liquidity = balanceOf[address(this)];\n\n        (uint256 _totalSupply, ) = _mintFee(_reserve0, _reserve1);\n\n        uint256 amount0 = (liquidity * _reserve0) / _totalSupply;\n        uint256 amount1 = (liquidity * _reserve1) / _totalSupply;\n\n        kLast = TridentMath.sqrt((_reserve0 - amount0) * (_reserve1 - amount1));\n\n        _burn(address(this), liquidity);\n\n        // Swap one token for another\n        unchecked {\n            if (tokenOut == token1) {\n                // @dev Swap `token0` for `token1`\n                // - calculate `amountOut` as if the user first withdrew balanced liquidity and then swapped `token0` for `token1`.\n                amount1 += _getAmountOut(amount0, _reserve0 - amount0, _reserve1 - amount1);\n                _transfer(token1, amount1, recipient, unwrapBento);\n                amountOut = amount1;\n                amount0 = 0;\n            } else {\n                // @dev Swap `token1` for `token0`.\n                require(tokenOut == token0, \"INVALID_OUTPUT_TOKEN\");\n                amount0 += _getAmountOut(amount1, _reserve1 - amount1, _reserve0 - amount0);\n                _transfer(token0, amount0, recipient, unwrapBento);\n                amountOut = amount0;\n                amount1 = 0;\n            }\n        }\n\n        (uint256 balance0, uint256 balance1) = _balance();\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\n\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\n    }\n\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\n    function swap(bytes calldata data) public override lock returns (uint256 amountOut) {\n        (address tokenIn, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\n        require(_reserve0 > 0, \"POOL_UNINITIALIZED\");\n        (uint256 balance0, uint256 balance1) = _balance();\n        uint256 amountIn;\n        address tokenOut;\n        unchecked {\n            if (tokenIn == token0) {\n                tokenOut = token1;\n                amountIn = balance0 - _reserve0;\n                amountOut = _getAmountOut(amountIn, _reserve0, _reserve1);\n                balance1 -= amountOut;\n            } else {\n                require(tokenIn == token1, \"INVALID_INPUT_TOKEN\");\n                tokenOut = token0;\n                amountIn = balance1 - reserve1;\n                amountOut = _getAmountOut(amountIn, _reserve1, _reserve0);\n                balance0 -= amountOut;\n            }\n        }\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\n    }\n\n    /// @dev Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage.\n    function flashSwap(bytes calldata data) public override lock returns (uint256 amountOut) {\n        (address tokenIn, address recipient, bool unwrapBento, uint256 amountIn, bytes memory context) = abi.decode(\n            data,\n            (address, address, bool, uint256, bytes)\n        );\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\n        require(_reserve0 > 0, \"POOL_UNINITIALIZED\");\n        unchecked {\n            if (tokenIn == token0) {\n                amountOut = _getAmountOut(amountIn, _reserve0, _reserve1);\n                _transfer(token1, amountOut, recipient, unwrapBento);\n                ITridentCallee(msg.sender).tridentSwapCallback(context);\n                (uint256 balance0, uint256 balance1) = _balance();\n                require(balance0 - _reserve0 >= amountIn, \"INSUFFICIENT_AMOUNT_IN\");\n                _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\n                emit Swap(recipient, tokenIn, token1, amountIn, amountOut);\n            } else {\n                require(tokenIn == token1, \"INVALID_INPUT_TOKEN\");\n                amountOut = _getAmountOut(amountIn, _reserve1, _reserve0);\n                _transfer(token0, amountOut, recipient, unwrapBento);\n                ITridentCallee(msg.sender).tridentSwapCallback(context);\n                (uint256 balance0, uint256 balance1) = _balance();\n                require(balance1 - _reserve1 >= amountIn, \"INSUFFICIENT_AMOUNT_IN\");\n                _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\n                emit Swap(recipient, tokenIn, token0, amountIn, amountOut);\n            }\n        }\n    }\n\n    /// @dev Updates `barFee` for Trident protocol.\n    function updateBarFee() public {\n        barFee = IMasterDeployer(masterDeployer).barFee();\n    }\n\n    function _getReserves()\n        internal\n        view\n        returns (\n            uint112 _reserve0,\n            uint112 _reserve1,\n            uint32 _blockTimestampLast\n        )\n    {\n        _reserve0 = reserve0;\n        _reserve1 = reserve1;\n        _blockTimestampLast = blockTimestampLast;\n    }\n\n    function _balance() internal view returns (uint256 balance0, uint256 balance1) {\n        balance0 = bento.balanceOf(token0, address(this));\n        balance1 = bento.balanceOf(token1, address(this));\n    }\n\n    function _update(\n        uint256 balance0,\n        uint256 balance1,\n        uint112 _reserve0,\n        uint112 _reserve1,\n        uint32 _blockTimestampLast\n    ) internal {\n        require(balance0 <= type(uint112).max && balance1 <= type(uint112).max, \"OVERFLOW\");\n        if (_blockTimestampLast == 0) {\n            // @dev TWAP support is disabled for gas efficiency.\n            reserve0 = uint112(balance0);\n            reserve1 = uint112(balance1);\n        } else {\n            uint32 blockTimestamp = uint32(block.timestamp);\n            if (blockTimestamp != _blockTimestampLast && _reserve0 != 0 && _reserve1 != 0) {\n                unchecked {\n                    uint32 timeElapsed = blockTimestamp - _blockTimestampLast;\n                    uint256 price0 = (uint256(_reserve1) << PRECISION) / _reserve0;\n                    price0CumulativeLast += price0 * timeElapsed;\n                    uint256 price1 = (uint256(_reserve0) << PRECISION) / _reserve1;\n                    price1CumulativeLast += price1 * timeElapsed;\n                }\n            }\n            reserve0 = uint112(balance0);\n            reserve1 = uint112(balance1);\n            blockTimestampLast = blockTimestamp;\n        }\n        emit Sync(balance0, balance1);\n    }\n\n    function _mintFee(uint112 _reserve0, uint112 _reserve1) internal returns (uint256 _totalSupply, uint256 computed) {\n        _totalSupply = totalSupply;\n        uint256 _kLast = kLast;\n        if (_kLast != 0) {\n            computed = TridentMath.sqrt(uint256(_reserve0) * _reserve1);\n            if (computed > _kLast) {\n                // @dev `barFee` % of increase in liquidity.\n                uint256 _barFee = barFee;\n                uint256 numerator = _totalSupply * (computed - _kLast) * _barFee;\n                uint256 denominator = (MAX_FEE - _barFee) * computed + _barFee * _kLast;\n                uint256 liquidity = numerator / denominator;\n\n                if (liquidity != 0) {\n                    _mint(barFeeTo, liquidity);\n                    _totalSupply += liquidity;\n                }\n            }\n        }\n    }\n\n    function _getAmountOut(\n        uint256 amountIn,\n        uint256 reserveAmountIn,\n        uint256 reserveAmountOut\n    ) internal view returns (uint256 amountOut) {\n        uint256 amountInWithFee = amountIn * MAX_FEE_MINUS_SWAP_FEE;\n        amountOut = (amountInWithFee * reserveAmountOut) / (reserveAmountIn * MAX_FEE + amountInWithFee);\n    }\n\n    function _getAmountIn(\n        uint256 amountOut,\n        uint256 reserveAmountIn,\n        uint256 reserveAmountOut\n    ) internal view returns (uint256 amountIn) {\n        amountIn = (reserveAmountIn * amountOut * MAX_FEE) / ((reserveAmountOut - amountOut) * MAX_FEE_MINUS_SWAP_FEE) + 1;\n    }\n\n    function _transfer(\n        address token,\n        uint256 shares,\n        address to,\n        bool unwrapBento\n    ) internal {\n        if (unwrapBento) {\n            bento.withdraw(token, address(this), to, 0, shares);\n        } else {\n            bento.transfer(token, address(this), to, shares);\n        }\n    }\n\n    /// @dev This fee is charged to cover for `swapFee` when users add unbalanced liquidity.\n    function _nonOptimalMintFee(\n        uint256 _amount0,\n        uint256 _amount1,\n        uint256 _reserve0,\n        uint256 _reserve1\n    ) internal view returns (uint256 token0Fee, uint256 token1Fee) {\n        if (_reserve0 == 0 || _reserve1 == 0) return (0, 0);\n        uint256 amount1Optimal = (_amount0 * _reserve1) / _reserve0;\n        if (amount1Optimal <= _amount1) {\n            token1Fee = (swapFee * (_amount1 - amount1Optimal)) / (2 * MAX_FEE);\n        } else {\n            uint256 amount0Optimal = (_amount1 * _reserve0) / _reserve1;\n            token0Fee = (swapFee * (_amount0 - amount0Optimal)) / (2 * MAX_FEE);\n        }\n    }\n\n    function getAssets() public view override returns (address[] memory assets) {\n        assets = new address[](2);\n        assets[0] = token0;\n        assets[1] = token1;\n    }\n\n    function getAmountOut(bytes calldata data) public view override returns (uint256 finalAmountOut) {\n        (address tokenIn, uint256 amountIn) = abi.decode(data, (address, uint256));\n        (uint112 _reserve0, uint112 _reserve1, ) = _getReserves();\n        if (tokenIn == token0) {\n            finalAmountOut = _getAmountOut(amountIn, _reserve0, _reserve1);\n        } else {\n            require(tokenIn == token1, \"INVALID_INPUT_TOKEN\");\n            finalAmountOut = _getAmountOut(amountIn, _reserve1, _reserve0);\n        }\n    }\n\n    function getAmountIn(bytes calldata data) public view override returns (uint256 finalAmountIn) {\n        (address tokenOut, uint256 amountOut) = abi.decode(data, (address, uint256));\n        (uint112 _reserve0, uint112 _reserve1, ) = _getReserves();\n        if (tokenOut == token1) {\n            finalAmountIn = _getAmountIn(amountOut, _reserve0, _reserve1);\n        } else {\n            require(tokenOut == token0, \"INVALID_OUTPUT_TOKEN\");\n            finalAmountIn = _getAmountIn(amountOut, _reserve1, _reserve0);\n        }\n    }\n\n    /// @dev returned values are in terms of BentoBox \"shares\".\n    function getReserves()\n        public\n        view\n        returns (\n            uint112 _reserve0,\n            uint112 _reserve1,\n            uint32 _blockTimestampLast\n        )\n    {\n        return _getReserves();\n    }\n\n    /// @dev returned values are the native ERC20 token amounts.\n    function getNativeReserves()\n        public\n        view\n        returns (\n            uint256 _nativeReserve0,\n            uint256 _nativeReserve1,\n            uint32 _blockTimestampLast\n        )\n    {\n        (uint112 _reserve0, uint112 _reserve1, uint32 __blockTimestampLast) = _getReserves();\n        _nativeReserve0 = bento.toAmount(token0, _reserve0, false);\n        _nativeReserve1 = bento.toAmount(token1, _reserve1, false);\n        _blockTimestampLast = __blockTimestampLast;\n    }\n}\n"
      },
      "contracts/pool/ConstantProductPoolFactory.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"./ConstantProductPool.sol\";\nimport \"./PoolDeployer.sol\";\n\n/// @notice Contract for deploying Trident exchange Constant Product Pool with configurations.\n/// @author Mudit Gupta.\ncontract ConstantProductPoolFactory is PoolDeployer {\n    constructor(address _masterDeployer) PoolDeployer(_masterDeployer) {}\n\n    function deployPool(bytes memory _deployData) external returns (address pool) {\n        (address tokenA, address tokenB, uint256 swapFee, bool twapSupport) = abi.decode(_deployData, (address, address, uint256, bool));\n\n        if (tokenA > tokenB) {\n            (tokenA, tokenB) = (tokenB, tokenA);\n        }\n\n        // @dev Strips any extra data.\n        _deployData = abi.encode(tokenA, tokenB, swapFee, twapSupport);\n\n        address[] memory tokens = new address[](2);\n        tokens[0] = tokenA;\n        tokens[1] = tokenB;\n\n        // @dev Salt is not actually needed since `_deployData` is part of creationCode and already contains the salt.\n        bytes32 salt = keccak256(_deployData);\n        pool = address(new ConstantProductPool{salt: salt}(_deployData, masterDeployer));\n        _registerPool(pool, tokens, salt);\n    }\n}\n"
      },
      "contracts/migration/Migrator.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"./IntermediaryToken.sol\";\nimport \"../interfaces/IMasterDeployer.sol\";\nimport \"../interfaces/IBentoBoxMinimal.sol\";\nimport \"../interfaces/IPoolFactory.sol\";\nimport \"../interfaces/IPool.sol\";\nimport \"../interfaces/IERC20.sol\";\nimport \"../interfaces/IConstantProductPool.sol\";\nimport \"../interfaces/IUniswapV2Minimal.sol\";\n\n/// @notice Trident pool migrator contract for legacy SushiSwap.\n/** Sushiswap's master chef contracts which distribute rewards to LP token holders have the option to migrate liquidity.\n    We can set this contract as the migrator on the master chef contracts to migrate LP positions from the legacy to the new Trident\n    constant product pools. After the migrator is set anyone can call the migrate() function (once per pool) on the master chef contract.\n    Used by MasterChef / MasterChefV2 / MiniChef. */\ncontract Migrator {\n    event Migrate(address indexed oldPool, address indexed newPool, address indexed intermediaryToken);\n\n    /// @dev Intermediary token to new LP token mapping.\n    /// @dev Used to prevent subsequent calls to masterchef's migrate function with the same PID.\n    mapping(address => address) public migrated;\n\n    IBentoBoxMinimal public immutable bento;\n    IMasterDeployer public immutable masterDeployer;\n    IPoolFactory public immutable constantProductPoolFactory;\n    address public immutable masterChef;\n\n    constructor(\n        IBentoBoxMinimal _bento,\n        IMasterDeployer _masterDeployer,\n        IPoolFactory _constantProductPoolFactory,\n        address _masterChef\n    ) {\n        bento = _bento;\n        masterDeployer = _masterDeployer;\n        constantProductPoolFactory = _constantProductPoolFactory;\n        masterChef = _masterChef;\n    }\n\n    /// @notice Method to migrate MasterChef's liquidity form the legacy SushiSwap AMM to the Trident constant product pool.\n    /// @param oldPool Legacy SushiSwap pool.\n    /// @dev Since MasterChef has a requierment to receive the same amount of \"LP\" tokens back after migration we use an\n    /// intermediary token so we can mint the desired balance. Anfer unstaking users can call redeem() on the intermediary\n    /// token to receive their share of the LP tokens of the new Trident constant product pool.\n    function migrate(IUniswapV2Minimal oldPool) external returns (address) {\n        require(msg.sender == address(masterChef), \"ONLY_CHEF\");\n        require(migrated[address(oldPool)] == address(0), \"ONLY_ONCE\");\n\n        address token0 = oldPool.token0();\n        address token1 = oldPool.token1();\n\n        bytes memory deployData = abi.encode(token0, token1, 30, false);\n\n        IConstantProductPool pool = IConstantProductPool(constantProductPoolFactory.configAddress(keccak256(deployData)));\n\n        // We deploy the pool if it doesn't exist yet.\n        if (address(pool) == address(0)) {\n            pool = IConstantProductPool(masterDeployer.deployPool(address(constantProductPoolFactory), deployData));\n        }\n\n        // We are migrating all of master chef's balance.\n        uint256 lpBalance = oldPool.balanceOf(address(masterChef));\n\n        if (lpBalance == 0) {\n            return address(pool);\n        }\n\n        // Remove the liquidity and send assets to BentoBox.\n        oldPool.transferFrom(address(masterChef), address(oldPool), lpBalance);\n        (uint256 amount0, uint256 amount1) = oldPool.burn(address(bento));\n\n        bento.deposit(token0, address(bento), address(pool), amount0, 0);\n        bento.deposit(token1, address(bento), address(pool), amount1, 0);\n\n        if (pool.totalSupply() != 0) {\n            // We require the pools' prices to differ by no more than 0.5%.\n            (uint256 _nativeReserve0, uint256 _nativeReserve1, ) = pool.getNativeReserves();\n            uint256 oldPoolPrice = (1e18 * amount0) / amount1;\n            uint256 newPoolPrice = (1e18 * _nativeReserve0) / _nativeReserve1;\n            uint256 priceChange = (1e3 * oldPoolPrice) / newPoolPrice;\n            require(priceChange < 1005 && priceChange >= 995, \"PRICE_DIFFERENCE\");\n        }\n\n        // We mint the intermediary token to Master Chef.\n        address intermediaryToken = address(new IntermediaryToken(address(pool), masterChef, lpBalance));\n\n        // The new Trident pool mints liquidity to the intermediary token.\n        pool.mint(abi.encode(intermediaryToken));\n\n        migrated[intermediaryToken] = address(pool);\n\n        emit Migrate(address(oldPool), address(pool), intermediaryToken);\n\n        return intermediaryToken;\n    }\n}\n"
      },
      "contracts/migration/IntermediaryToken.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"../pool/TridentERC20.sol\";\nimport \"../interfaces/IERC20.sol\";\n\n/// @notice Intermediary token users who are staked in MasterChef will receive after migration.\n/// Can be redeemed for the LP token of the new pool.\ncontract IntermediaryToken is TridentERC20 {\n    /// @dev Liquidity token of the Trident constant product pool.\n    IERC20 public immutable lpToken;\n\n    constructor(\n        address _lpToken,\n        address _recipient,\n        uint256 _amount\n    ) {\n        lpToken = IERC20(_lpToken);\n        _mint(_recipient, _amount);\n    }\n\n    /// @dev Since we might be rewarding the intermediary token for some time we allow users to mint it.\n    function deposit(uint256 amount) public returns (uint256 minted) {\n        uint256 availableLpTokens = lpToken.balanceOf(address(this));\n        if (availableLpTokens != 0) {\n            minted = (totalSupply * amount) / availableLpTokens;\n        } else {\n            minted = amount;\n        }\n        _mint(msg.sender, minted);\n        require(lpToken.transferFrom(msg.sender, address(this), amount), \"TRANSFER_FROM_FAILED\");\n    }\n\n    function redeem(uint256 amount) public returns (uint256 claimed) {\n        uint256 availableLpTokens = lpToken.balanceOf(address(this));\n        claimed = (availableLpTokens * amount) / totalSupply;\n        _burn(msg.sender, amount);\n        require(lpToken.transfer(msg.sender, claimed), \"TRANSFER_FAILED\");\n    }\n}\n"
      },
      "contracts/interfaces/IConstantProductPool.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./IPool.sol\";\n\ninterface IConstantProductPool is IPool, IERC20 {\n    function getNativeReserves()\n        external\n        view\n        returns (\n            uint256 _nativeReserve0,\n            uint256 _nativeReserve1,\n            uint32\n        );\n}\n"
      },
      "contracts/pool/concentrated/ConcentratedLiquidityPoolStaker.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"../../interfaces/concentratedPool/IConcentratedLiquidityPool.sol\";\nimport \"../../libraries/concentratedPool/Ticks.sol\";\nimport \"../../interfaces/IBentoBoxMinimal.sol\";\nimport {IConcentratedLiquidityPoolManager as IPoolManager} from \"../../interfaces/concentratedPool/IConcentratedLiquidityPoolManager.sol\";\n\n/// @notice Trident Concentrated Liquidity Pool periphery contract that combines non-fungible position management and staking.\ncontract ConcentratedLiquidityPoolStaker {\n    event AddIncentive(IConcentratedLiquidityPool indexed pool, uint256 indexed incentiveId, address indexed rewardToken);\n    event Subscribe(uint256 indexed positionId, uint256 indexed incentiveId);\n    event ClaimReward(uint256 indexed positionId, uint256 indexed incentiveId, address indexed recipient, uint96 amount);\n    event ReclaimIncentive(IConcentratedLiquidityPool indexed pool, uint256 indexed incentiveId, uint256 amount);\n\n    struct Incentive {\n        address owner;\n        address token;\n        uint32 startTime;\n        uint32 endTime;\n        uint32 expiry;\n        uint160 secondsClaimed; // @dev x128.\n        uint96 rewardsUnclaimed;\n    }\n\n    struct Stake {\n        uint160 secondsGrowthInsideLast; // @dev x128.\n        uint32 timestamp;\n    }\n\n    IBentoBoxMinimal public immutable bento;\n    IPoolManager public poolManager;\n\n    mapping(IConcentratedLiquidityPool => uint256) public incentiveCount;\n    mapping(IConcentratedLiquidityPool => mapping(uint256 => Incentive)) public incentives;\n    /// @dev When subscribing to an incentive we take a snapshot of the position secondsGrowth accumulator.\n    /// @dev positionId to incentiveId to position's secondsGrowth snapshot mapping.\n    mapping(uint256 => mapping(uint256 => Stake)) public stakes;\n\n    constructor(IPoolManager _poolManager) {\n        poolManager = _poolManager;\n        IBentoBoxMinimal _bento = IBentoBoxMinimal(_poolManager.bento());\n        _bento.registerProtocol();\n        bento = _bento;\n    }\n\n    function addIncentive(IConcentratedLiquidityPool pool, Incentive memory incentive) public {\n        uint32 current = uint32(block.timestamp);\n        require(current <= incentive.startTime, \"ALREADY_STARTED\");\n        require(incentive.startTime < incentive.endTime, \"START_PAST_END\");\n        require(incentive.endTime + 90 days < incentive.expiry, \"END_PAST_BUFFER\");\n        require(incentive.rewardsUnclaimed != 0, \"NO_REWARDS\");\n        incentive.secondsClaimed = 0;\n        incentives[pool][incentiveCount[pool]++] = incentive;\n        _transfer(incentive.token, msg.sender, address(this), incentive.rewardsUnclaimed, false);\n        emit AddIncentive(pool, incentiveCount[pool], incentive.token);\n    }\n\n    /// @dev Withdraws any unclaimed incentive rewards.\n    function reclaimIncentive(\n        IConcentratedLiquidityPool pool,\n        uint256 incentiveId,\n        address receiver,\n        uint96 amount,\n        bool unwrapBento\n    ) public {\n        Incentive storage incentive = incentives[pool][incentiveId];\n        require(incentive.owner == msg.sender, \"NOT_OWNER\");\n        require(incentive.expiry < block.timestamp, \"EXPIRED\");\n        require(incentive.rewardsUnclaimed >= amount, \"ALREADY_CLAIMED\");\n        incentive.rewardsUnclaimed -= uint96(amount);\n        _transfer(incentive.token, address(this), receiver, amount, unwrapBento);\n        emit ReclaimIncentive(pool, incentiveId, amount);\n    }\n\n    /// @dev Subscribes a non-fungible position token to an incentive.\n    function subscribe(uint256 positionId, uint256[] calldata incentiveId) external {\n        require(poolManager.ownerOf(positionId) == msg.sender, \"NOT_OWNER\");\n        IPoolManager.Position memory position = poolManager.positions(positionId);\n        IConcentratedLiquidityPool pool = position.pool;\n        require(position.liquidity != 0, \"INACTIVE\");\n        Stake memory stakeData = Stake(uint160(rangeSecondsInside(pool, position.lower, position.upper)), uint32(block.timestamp));\n        for (uint256 i; i < incentiveId.length; i++) {\n            Incentive memory incentive = incentives[pool][incentiveId[i]];\n            Stake storage stake = stakes[positionId][incentiveId[i]];\n            require(stake.secondsGrowthInsideLast == 0, \"SUBSCRIBED\");\n            require(block.timestamp >= incentive.startTime && block.timestamp < incentive.endTime, \"INACTIVE_INCENTIVE\");\n            stakes[positionId][incentiveId[i]] = stakeData;\n            emit Subscribe(positionId, incentiveId[i]);\n        }\n    }\n\n    function claimRewards(\n        uint256 positionId,\n        uint256[] memory incentiveIds,\n        address recipient,\n        bool unwrapBento\n    ) public {\n        require(poolManager.ownerOf(positionId) == msg.sender, \"NOT_OWNER\");\n\n        IPoolManager.Position memory position = poolManager.positions(positionId);\n        IConcentratedLiquidityPool pool = position.pool;\n\n        uint256 currentSecondsGrowth = rangeSecondsInside(pool, position.lower, position.upper);\n\n        for (uint256 i = 0; i < incentiveIds.length; i++) {\n            Incentive storage incentive = incentives[pool][incentiveIds[i]];\n            Stake storage stake = stakes[positionId][incentiveIds[i]];\n\n            require(stake.timestamp >= position.latestAddition, \"MUST_RESUBSCRIBE\");\n\n            uint256 rewards;\n            uint256 secondsInside;\n\n            {\n                uint256 secondsGrowth = currentSecondsGrowth - stake.secondsGrowthInsideLast;\n                uint256 maxTime = block.timestamp < incentive.endTime ? incentive.endTime : block.timestamp;\n                uint256 secondsUnclaimed = ((maxTime - incentive.startTime) << 128) - incentive.secondsClaimed;\n                secondsInside = secondsGrowth * position.liquidity; // secondsGrowth is multiplied by 2**128\n                rewards = (incentive.rewardsUnclaimed * secondsInside) / secondsUnclaimed; // 2**128 cancels out\n            }\n\n            stake.secondsGrowthInsideLast = uint160(currentSecondsGrowth);\n            incentive.secondsClaimed += uint160(secondsInside);\n            incentive.rewardsUnclaimed -= uint96(rewards);\n\n            _transfer(incentive.token, address(this), recipient, rewards, unwrapBento);\n\n            emit ClaimReward(positionId, incentiveIds[i], recipient, uint96(rewards));\n        }\n    }\n\n    function getReward(uint256 positionId, uint256 incentiveId) public view returns (uint256 rewards, uint256 secondsInside) {\n        IPoolManager.Position memory position = poolManager.positions(positionId);\n        IConcentratedLiquidityPool pool = position.pool;\n        Incentive memory incentive = incentives[pool][positionId];\n        Stake memory stake = stakes[positionId][incentiveId];\n        if (stake.timestamp > 0) {\n            uint256 secondsGrowth = rangeSecondsInside(pool, position.lower, position.upper) - stake.secondsGrowthInsideLast;\n            secondsInside = secondsGrowth * position.liquidity;\n            uint256 maxTime = block.timestamp < incentive.endTime ? incentive.endTime : block.timestamp;\n            uint256 secondsUnclaimed = ((maxTime - incentive.startTime) << 128) - incentive.secondsClaimed;\n            rewards = (incentive.rewardsUnclaimed * secondsInside) / secondsUnclaimed;\n        }\n    }\n\n    /// @dev Calculates the \"seconds per liquidity\" accumulator for a range.\n    function rangeSecondsInside(\n        IConcentratedLiquidityPool pool,\n        int24 lowerTick,\n        int24 upperTick\n    ) public view returns (uint256 secondsInside) {\n        (, int24 currentTick) = pool.getPriceAndNearestTicks();\n\n        Ticks.Tick memory lower = pool.ticks(lowerTick);\n        Ticks.Tick memory upper = pool.ticks(upperTick);\n\n        (uint256 secondsGrowthGlobal, ) = pool.getSecondsGrowthAndLastObservation();\n        uint256 secondsBelow;\n        uint256 secondsAbove;\n\n        if (lowerTick <= currentTick) {\n            secondsBelow = lower.secondsGrowthOutside;\n        } else {\n            secondsBelow = secondsGrowthGlobal - lower.secondsGrowthOutside;\n        }\n\n        if (currentTick < upperTick) {\n            secondsAbove = upper.secondsGrowthOutside;\n        } else {\n            secondsAbove = secondsGrowthGlobal - upper.secondsGrowthOutside;\n        }\n\n        secondsInside = secondsGrowthGlobal - secondsBelow - secondsAbove;\n    }\n\n    function _transfer(\n        address token,\n        address from,\n        address to,\n        uint256 shares,\n        bool unwrapBento\n    ) internal {\n        if (unwrapBento) {\n            bento.withdraw(token, from, to, 0, shares);\n        } else {\n            bento.transfer(token, from, to, shares);\n        }\n    }\n}\n"
      },
      "contracts/pool/concentrated/ConcentratedLiquidityPoolHelper.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.8.0;\n\nimport \"../../interfaces/concentratedPool/IConcentratedLiquidityPool.sol\";\nimport \"../../libraries/concentratedPool/TickMath.sol\";\nimport \"../../libraries/concentratedPool/Ticks.sol\";\n\n/// @notice Trident Concentrated Liquidity Pool periphery contract to read state.\ncontract ConcentratedLiquidityPoolHelper {\n    struct SimpleTick {\n        int24 index;\n        uint128 liquidity;\n    }\n\n    function getTickState(IConcentratedLiquidityPool pool, uint24 tickCount) external view returns (SimpleTick[] memory) {\n        SimpleTick[] memory ticks = new SimpleTick[](tickCount); // todo save tickCount in the core contract\n\n        Ticks.Tick memory tick;\n        uint24 i;\n        int24 current = TickMath.MIN_TICK;\n\n        while (current != TickMath.MAX_TICK) {\n            tick = pool.ticks(current);\n            ticks[i++] = SimpleTick({index: current, liquidity: tick.liquidity});\n            current = tick.nextTick;\n        }\n\n        tick = pool.ticks(current);\n        ticks[i] = SimpleTick({index: TickMath.MAX_TICK, liquidity: tick.liquidity});\n\n        return ticks;\n    }\n}\n"
      },
      "contracts/test/TickMathTest.sol": {
        "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity >=0.8.0;\n\nimport \"../libraries/concentratedPool/TickMath.sol\";\n\ncontract TickMathTest {\n    function getSqrtRatioAtTick(int24 tick) external pure returns (uint160) {\n        return TickMath.getSqrtRatioAtTick(tick);\n    }\n\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) external pure returns (int24) {\n        return TickMath.getTickAtSqrtRatio(sqrtPriceX96);\n    }\n}\n"
      },
      "contracts/mocks/TridentMathConsumerMock.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.2;\n\nimport \"../libraries/TridentMath.sol\";\n\ncontract TridentMathConsumerMock {\n    function sqrt(uint256 x) public pure returns (uint256) {\n        return TridentMath.sqrt(x);\n    }\n}\n"
      },
      "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the symbol of the token.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the decimals places of the token.\n     */\n    function decimals() external view returns (uint8);\n}\n"
      },
      "@openzeppelin/contracts/token/ERC20/ERC20.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./extensions/IERC20Metadata.sol\";\nimport \"../../utils/Context.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC20\n * applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20, IERC20Metadata {\n    mapping(address => uint256) private _balances;\n\n    mapping(address => mapping(address => uint256)) private _allowances;\n\n    uint256 private _totalSupply;\n\n    string private _name;\n    string private _symbol;\n\n    /**\n     * @dev Sets the values for {name} and {symbol}.\n     *\n     * The default value of {decimals} is 18. To select a different value for\n     * {decimals} you should overload it.\n     *\n     * All two of these values are immutable: they can only be set once during\n     * construction.\n     */\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev Returns the number of decimals used to get its user representation.\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n     *\n     * Tokens usually opt for a value of 18, imitating the relationship between\n     * Ether and Wei. This is the value {ERC20} uses, unless this function is\n     * overridden;\n     *\n     * NOTE: This information is only used for _display_ purposes: it in\n     * no way affects any of the arithmetic of the contract, including\n     * {IERC20-balanceOf} and {IERC20-transfer}.\n     */\n    function decimals() public view virtual override returns (uint8) {\n        return 18;\n    }\n\n    /**\n     * @dev See {IERC20-totalSupply}.\n     */\n    function totalSupply() public view virtual override returns (uint256) {\n        return _totalSupply;\n    }\n\n    /**\n     * @dev See {IERC20-balanceOf}.\n     */\n    function balanceOf(address account) public view virtual override returns (uint256) {\n        return _balances[account];\n    }\n\n    /**\n     * @dev See {IERC20-transfer}.\n     *\n     * Requirements:\n     *\n     * - `recipient` cannot be the zero address.\n     * - the caller must have a balance of at least `amount`.\n     */\n    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n        _transfer(_msgSender(), recipient, amount);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-allowance}.\n     */\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\n        return _allowances[owner][spender];\n    }\n\n    /**\n     * @dev See {IERC20-approve}.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\n        _approve(_msgSender(), spender, amount);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-transferFrom}.\n     *\n     * Emits an {Approval} event indicating the updated allowance. This is not\n     * required by the EIP. See the note at the beginning of {ERC20}.\n     *\n     * Requirements:\n     *\n     * - `sender` and `recipient` cannot be the zero address.\n     * - `sender` must have a balance of at least `amount`.\n     * - the caller must have allowance for ``sender``'s tokens of at least\n     * `amount`.\n     */\n    function transferFrom(\n        address sender,\n        address recipient,\n        uint256 amount\n    ) public virtual override returns (bool) {\n        _transfer(sender, recipient, amount);\n\n        uint256 currentAllowance = _allowances[sender][_msgSender()];\n        require(currentAllowance >= amount, \"ERC20: transfer amount exceeds allowance\");\n        unchecked {\n            _approve(sender, _msgSender(), currentAllowance - amount);\n        }\n\n        return true;\n    }\n\n    /**\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\n     *\n     * This is an alternative to {approve} that can be used as a mitigation for\n     * problems described in {IERC20-approve}.\n     *\n     * Emits an {Approval} event indicating the updated allowance.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);\n        return true;\n    }\n\n    /**\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\n     *\n     * This is an alternative to {approve} that can be used as a mitigation for\n     * problems described in {IERC20-approve}.\n     *\n     * Emits an {Approval} event indicating the updated allowance.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     * - `spender` must have allowance for the caller of at least\n     * `subtractedValue`.\n     */\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n        uint256 currentAllowance = _allowances[_msgSender()][spender];\n        require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\n        unchecked {\n            _approve(_msgSender(), spender, currentAllowance - subtractedValue);\n        }\n\n        return true;\n    }\n\n    /**\n     * @dev Moves `amount` of tokens from `sender` to `recipient`.\n     *\n     * This internal function is equivalent to {transfer}, and can be used to\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\n     *\n     * Emits a {Transfer} event.\n     *\n     * Requirements:\n     *\n     * - `sender` cannot be the zero address.\n     * - `recipient` cannot be the zero address.\n     * - `sender` must have a balance of at least `amount`.\n     */\n    function _transfer(\n        address sender,\n        address recipient,\n        uint256 amount\n    ) internal virtual {\n        require(sender != address(0), \"ERC20: transfer from the zero address\");\n        require(recipient != address(0), \"ERC20: transfer to the zero address\");\n\n        _beforeTokenTransfer(sender, recipient, amount);\n\n        uint256 senderBalance = _balances[sender];\n        require(senderBalance >= amount, \"ERC20: transfer amount exceeds balance\");\n        unchecked {\n            _balances[sender] = senderBalance - amount;\n        }\n        _balances[recipient] += amount;\n\n        emit Transfer(sender, recipient, amount);\n\n        _afterTokenTransfer(sender, recipient, amount);\n    }\n\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n     * the total supply.\n     *\n     * Emits a {Transfer} event with `from` set to the zero address.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     */\n    function _mint(address account, uint256 amount) internal virtual {\n        require(account != address(0), \"ERC20: mint to the zero address\");\n\n        _beforeTokenTransfer(address(0), account, amount);\n\n        _totalSupply += amount;\n        _balances[account] += amount;\n        emit Transfer(address(0), account, amount);\n\n        _afterTokenTransfer(address(0), account, amount);\n    }\n\n    /**\n     * @dev Destroys `amount` tokens from `account`, reducing the\n     * total supply.\n     *\n     * Emits a {Transfer} event with `to` set to the zero address.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     * - `account` must have at least `amount` tokens.\n     */\n    function _burn(address account, uint256 amount) internal virtual {\n        require(account != address(0), \"ERC20: burn from the zero address\");\n\n        _beforeTokenTransfer(account, address(0), amount);\n\n        uint256 accountBalance = _balances[account];\n        require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n        unchecked {\n            _balances[account] = accountBalance - amount;\n        }\n        _totalSupply -= amount;\n\n        emit Transfer(account, address(0), amount);\n\n        _afterTokenTransfer(account, address(0), amount);\n    }\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n     *\n     * This internal function is equivalent to `approve`, and can be used to\n     * e.g. set automatic allowances for certain subsystems, etc.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `owner` cannot be the zero address.\n     * - `spender` cannot be the zero address.\n     */\n    function _approve(\n        address owner,\n        address spender,\n        uint256 amount\n    ) internal virtual {\n        require(owner != address(0), \"ERC20: approve from the zero address\");\n        require(spender != address(0), \"ERC20: approve to the zero address\");\n\n        _allowances[owner][spender] = amount;\n        emit Approval(owner, spender, amount);\n    }\n\n    /**\n     * @dev Hook that is called before any transfer of tokens. This includes\n     * minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n     * will be transferred to `to`.\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(\n        address from,\n        address to,\n        uint256 amount\n    ) internal virtual {}\n\n    /**\n     * @dev Hook that is called after any transfer of tokens. This includes\n     * minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n     * has been transferred to `to`.\n     * - when `from` is zero, `amount` tokens have been minted for `to`.\n     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _afterTokenTransfer(\n        address from,\n        address to,\n        uint256 amount\n    ) internal virtual {}\n}\n"
      },
      "@openzeppelin/contracts/utils/Context.sol": {
        "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n}\n"
      },
      "contracts/mocks/ERC20Mock.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.2;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract ERC20Mock is ERC20 {\n    event Deposit(address indexed dst, uint256 wad);\n    event Withdrawal(address indexed src, uint256 wad);\n\n    constructor(\n        string memory name,\n        string memory symbol,\n        uint256 supply\n    ) ERC20(name, symbol) {\n        _mint(msg.sender, supply);\n    }\n\n    receive() external payable {\n        deposit();\n    }\n\n    function deposit() public payable {\n        _mint(msg.sender, msg.value);\n        emit Deposit(msg.sender, msg.value);\n    }\n\n    function withdraw(uint256 wad) public {\n        _burn(msg.sender, wad);\n        payable(msg.sender).transfer(wad);\n        emit Withdrawal(msg.sender, wad);\n    }\n}\n"
      },
      "contracts/mocks/WETH9.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.2;\n\nimport \"./ERC20Mock.sol\";\n\ncontract WETH9 is ERC20Mock {\n    constructor() ERC20Mock(\"WETH9\", \"WETH9\", 0) {}\n}\n"
      },
      "contracts/examples/PoolFactory.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.2;\n\nimport \"../interfaces/IPoolFactory.sol\";\n\nimport \"./PoolTemplate.sol\";\n\n/**\n * @author Mudit Gupta\n */\nabstract contract PoolFactory is IPoolFactory {\n    // Consider deploying via an upgradable proxy to allow upgrading pools in the future\n\n    function deployPool(bytes memory _deployData) external override returns (address) {\n        return address(new PoolTemplate(_deployData));\n    }\n}\n"
      },
      "contracts/examples/PoolTemplate.sol": {
        "content": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.2;\n\n/**\n * @author Mudit Gupta\n */\ncontract PoolTemplate {\n    uint256 public immutable configValue;\n    address public immutable anotherConfigValue;\n\n    constructor(bytes memory _data) {\n        (configValue, anotherConfigValue) = abi.decode(_data, (uint256, address));\n    }\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 99999
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "metadata",
            "devdoc",
            "userdoc",
            "storageLayout",
            "evm.gasEstimates"
          ],
          "": [
            "ast"
          ]
        }
      },
      "metadata": {
        "useLiteralContent": true
      }
    }
  },
  "output": {
    "contracts": {
      "@openzeppelin/contracts/token/ERC20/ERC20.sol": {
        "ERC20": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name_",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "symbol_",
                  "type": "string"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.",
            "kind": "dev",
            "methods": {
              "allowance(address,address)": {
                "details": "See {IERC20-allowance}."
              },
              "approve(address,uint256)": {
                "details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address."
              },
              "balanceOf(address)": {
                "details": "See {IERC20-balanceOf}."
              },
              "constructor": {
                "details": "Sets the values for {name} and {symbol}. The default value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction."
              },
              "decimals()": {
                "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
              },
              "decreaseAllowance(address,uint256)": {
                "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
              },
              "increaseAllowance(address,uint256)": {
                "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
              },
              "name()": {
                "details": "Returns the name of the token."
              },
              "symbol()": {
                "details": "Returns the symbol of the token, usually a shorter version of the name."
              },
              "totalSupply()": {
                "details": "See {IERC20-totalSupply}."
              },
              "transfer(address,uint256)": {
                "details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`."
              },
              "transferFrom(address,address,uint256)": {
                "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_44": {
                  "entryPoint": null,
                  "id": 44,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_decode_string_fromMemory": {
                  "entryPoint": 270,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory": {
                  "entryPoint": 453,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "extract_byte_array_length": {
                  "entryPoint": 559,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x41": {
                  "entryPoint": 620,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1985:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "78:821:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "127:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "136:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "139:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "129:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "129:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "129:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "106:6:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "114:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "102:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "102:17:64"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "121:3:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "98:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "98:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "91:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "91:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "88:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "152:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "168:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "162:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "162:13:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "156:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "184:28:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "202:2:64",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "206:1:64",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "198:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "198:10:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "210:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "194:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "194:18:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "188:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "235:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "237:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "237:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "237:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "227:2:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "231:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "224:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "224:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "221:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "266:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "280:2:64",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "276:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "276:7:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "270:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "292:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "312:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "306:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "306:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "296:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "324:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "346:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "370:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "374:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "366:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "366:13:64"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "381:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "362:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "362:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "386:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "358:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "358:31:64"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "391:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "354:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "354:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "342:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "342:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "328:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "454:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "456:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "456:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "456:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "413:10:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "425:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "410:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "410:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "433:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "445:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "430:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "430:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "407:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "407:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "404:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "492:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "496:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "485:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "485:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "485:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "523:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "531:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "516:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "516:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "516:18:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "543:14:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "553:4:64",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "547:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "603:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "612:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "615:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "605:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "605:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "605:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "580:6:64"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "588:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "576:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "576:15:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "593:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "572:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "572:24:64"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "598:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "569:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "569:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "566:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "628:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "637:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "632:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "693:87:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "memPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "722:6:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "730:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "718:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "718:14:64"
                                            },
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "734:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "714:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "714:23:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "offset",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "753:6:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "761:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "749:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "749:14:64"
                                                },
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "765:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "745:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "745:23:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "739:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "739:30:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "707:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "707:63:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "707:63:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "658:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "661:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "655:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "655:9:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "665:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "667:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "676:1:64"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "679:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "672:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "672:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "667:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "651:3:64",
                                "statements": []
                              },
                              "src": "647:133:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "810:59:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "memPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "839:6:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "847:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "835:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "835:15:64"
                                            },
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "852:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "831:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "831:24:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "857:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "824:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "824:35:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "824:35:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "795:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "798:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "792:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "792:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "789:80:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "878:15:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "887:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "878:5:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_string_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "52:6:64",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "60:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "68:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:885:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1022:444:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1068:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1077:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1080:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1070:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1070:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1070:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1043:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1052:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1039:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1039:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1064:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1035:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1035:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1032:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1093:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1113:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1107:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1107:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1097:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1132:28:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1150:2:64",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1154:1:64",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1146:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1146:10:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1158:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1142:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1142:18:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1136:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1187:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1196:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1199:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1189:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1189:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1189:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1175:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1183:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1172:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1172:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1169:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1212:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1255:9:64"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1266:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1251:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1251:22:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1275:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1222:28:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1222:61:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1212:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1292:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1318:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1329:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1314:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1314:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1308:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1308:25:64"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1296:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1362:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1371:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1374:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1364:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1364:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1364:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1348:8:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1358:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1345:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1345:16:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1342:36:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1387:73:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1430:9:64"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1441:8:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1426:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1426:24:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1452:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1397:28:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1397:63:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1387:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "980:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "991:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1003:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1011:6:64",
                            "type": ""
                          }
                        ],
                        "src": "904:562:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1526:325:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1536:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1550:1:64",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "1553:4:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "1546:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1546:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "1536:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1567:38:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "1597:4:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1603:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "1593:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1593:12:64"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "1571:18:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1644:31:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1646:27:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "1660:6:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1668:4:64",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "1656:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1656:17:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "1646:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "1624:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1617:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1617:26:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1614:61:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1734:111:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1755:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1762:3:64",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1767:10:64",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "1758:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1758:20:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1748:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1748:31:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1748:31:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1799:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1802:4:64",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1792:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1792:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1792:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1827:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1830:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1820:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1820:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1820:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "1690:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "1713:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1721:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1710:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1710:14:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "1687:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1687:38:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1684:161:64"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "1506:4:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "1515:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1471:380:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1888:95:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1905:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1912:3:64",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1917:10:64",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1908:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1908:20:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1898:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1898:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1898:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1945:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1948:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1938:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1938:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1938:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1969:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1972:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1962:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1962:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1962:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1856:127:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        let _4 := 0x20\n        if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _1) { i := add(i, _4) }\n        {\n            mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n        }\n        if gt(i, _1)\n        {\n            mstore(add(add(memPtr, _1), _4), 0)\n        }\n        array := memPtr\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b5060405162000de938038062000de98339810160408190526200003491620001c5565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000282565b82805462000076906200022f565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b600082601f8301126200012057600080fd5b81516001600160401b03808211156200013d576200013d6200026c565b604051601f8301601f19908116603f011681019082821181831017156200016857620001686200026c565b816040528381526020925086838588010111156200018557600080fd5b600091505b83821015620001a957858201830151818301840152908201906200018a565b83821115620001bb5760008385830101525b9695505050505050565b60008060408385031215620001d957600080fd5b82516001600160401b0380821115620001f157600080fd5b620001ff868387016200010e565b935060208501519150808211156200021657600080fd5b5062000225858286016200010e565b9150509250929050565b600181811c908216806200024457607f821691505b602082108114156200026657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b610b5780620002926000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e39190610a1b565b60405180910390f35b6100ff6100fa3660046109f1565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046109b5565b6102a8565b604051601281526020016100e3565b6100ff6101513660046109f1565b610393565b610113610164366004610960565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d66103dc565b6100ff6101a23660046109f1565b6103eb565b6100ff6101b53660046109f1565b6104c3565b6101136101c8366004610982565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610acd565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610acd565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b600061029f3384846104d0565b50600192915050565b60006102b5848484610683565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203384529091529020548281101561037b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61038885338584036104d0565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161029f9185906103d7908690610a8e565b6104d0565b60606004805461020f90610acd565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054828110156104ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610372565b6104b933858584036104d0565b5060019392505050565b600061029f338484610683565b73ffffffffffffffffffffffffffffffffffffffff8316610572576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610372565b73ffffffffffffffffffffffffffffffffffffffff8216610615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610372565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610372565b73ffffffffffffffffffffffffffffffffffffffff82166107c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610372565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561087f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610372565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906108c3908490610a8e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161092991815260200190565b60405180910390a350505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461095b57600080fd5b919050565b60006020828403121561097257600080fd5b61097b82610937565b9392505050565b6000806040838503121561099557600080fd5b61099e83610937565b91506109ac60208401610937565b90509250929050565b6000806000606084860312156109ca57600080fd5b6109d384610937565b92506109e160208501610937565b9150604084013590509250925092565b60008060408385031215610a0457600080fd5b610a0d83610937565b946020939093013593505050565b600060208083528351808285015260005b81811015610a4857858101830151858201604001528201610a2c565b81811115610a5a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008219821115610ac8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b600181811c90821680610ae157607f821691505b60208210811415610b1b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea26469706673582212200aba4ae02ad01a26bfb54ac01e0cc0d44ea57ae7c9a2ed3122deaf74a49c2bb164736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xDE9 CODESIZE SUB DUP1 PUSH3 0xDE9 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1C5 JUMP JUMPDEST DUP2 MLOAD PUSH3 0x49 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x68 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x5F SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x68 JUMP JUMPDEST POP POP POP PUSH3 0x282 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x76 SWAP1 PUSH3 0x22F JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x9A JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0xE5 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0xB5 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0xE5 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0xE5 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0xE5 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xC8 JUMP JUMPDEST POP PUSH3 0xF3 SWAP3 SWAP2 POP PUSH3 0xF7 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0xF3 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0xF8 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x13D JUMPI PUSH3 0x13D PUSH3 0x26C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x168 JUMPI PUSH3 0x168 PUSH3 0x26C JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0x185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x1A9 JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0x18A JUMP JUMPDEST DUP4 DUP3 GT ISZERO PUSH3 0x1BB JUMPI PUSH1 0x0 DUP4 DUP6 DUP4 ADD ADD MSTORE JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x1D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x1F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1FF DUP7 DUP4 DUP8 ADD PUSH3 0x10E JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x225 DUP6 DUP3 DUP7 ADD PUSH3 0x10E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x244 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x266 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0xB57 DUP1 PUSH3 0x292 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xA1B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x9F1 JUMP JUMPDEST PUSH2 0x292 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0x9B5 JUMP JUMPDEST PUSH2 0x2A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x9F1 JUMP JUMPDEST PUSH2 0x393 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x164 CALLDATASIZE PUSH1 0x4 PUSH2 0x960 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x3DC JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x9F1 JUMP JUMPDEST PUSH2 0x3EB JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x9F1 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x1C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x982 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xACD JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x23B SWAP1 PUSH2 0xACD JUMP JUMPDEST DUP1 ISZERO PUSH2 0x288 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x25D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x288 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x26B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29F CALLER DUP5 DUP5 PUSH2 0x4D0 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B5 DUP5 DUP5 DUP5 PUSH2 0x683 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x37B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6C6F77616E6365000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x388 DUP6 CALLER DUP6 DUP5 SUB PUSH2 0x4D0 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x29F SWAP2 DUP6 SWAP1 PUSH2 0x3D7 SWAP1 DUP7 SWAP1 PUSH2 0xA8E JUMP JUMPDEST PUSH2 0x4D0 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xACD JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x4AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH2 0x4B9 CALLER DUP6 DUP6 DUP5 SUB PUSH2 0x4D0 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29F CALLER DUP5 DUP5 PUSH2 0x683 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x572 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x615 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x726 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x7C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x87F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP2 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x8C3 SWAP1 DUP5 SWAP1 PUSH2 0xA8E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x929 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x95B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x97B DUP3 PUSH2 0x937 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x995 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x99E DUP4 PUSH2 0x937 JUMP JUMPDEST SWAP2 POP PUSH2 0x9AC PUSH1 0x20 DUP5 ADD PUSH2 0x937 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9D3 DUP5 PUSH2 0x937 JUMP JUMPDEST SWAP3 POP PUSH2 0x9E1 PUSH1 0x20 DUP6 ADD PUSH2 0x937 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0D DUP4 PUSH2 0x937 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA48 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xA2C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xA5A JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xAC8 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xAE1 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xB1B JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP 0xBA 0x4A 0xE0 0x2A 0xD0 BYTE 0x26 0xBF 0xB5 0x4A 0xC0 0x1E 0xC 0xC0 0xD4 0x4E 0xA5 PUSH27 0xE7C9A2ED3122DEAF74A49C2BB164736F6C63430008070033000000 ",
              "sourceMap": "1331:10416:0:-:0;;;1906:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1972:13;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;1995:17:0;;;;:7;;:17;;;;;:::i;:::-;;1906:113;;1331:10416;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1331:10416:0;;;-1:-1:-1;1331:10416:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:885:64;68:5;121:3;114:4;106:6;102:17;98:27;88:55;;139:1;136;129:12;88:55;162:13;;-1:-1:-1;;;;;224:10:64;;;221:36;;;237:18;;:::i;:::-;312:2;306:9;280:2;366:13;;-1:-1:-1;;362:22:64;;;386:2;358:31;354:40;342:53;;;410:18;;;430:22;;;407:46;404:72;;;456:18;;:::i;:::-;496:10;492:2;485:22;531:2;523:6;516:18;553:4;543:14;;598:3;593:2;588;580:6;576:15;572:24;569:33;566:53;;;615:1;612;605:12;566:53;637:1;628:10;;647:133;661:2;658:1;655:9;647:133;;;749:14;;;745:23;;739:30;718:14;;;714:23;;707:63;672:10;;;;647:133;;;798:2;795:1;792:9;789:80;;;857:1;852:2;847;839:6;835:15;831:24;824:35;789:80;887:6;14:885;-1:-1:-1;;;;;;14:885:64:o;904:562::-;1003:6;1011;1064:2;1052:9;1043:7;1039:23;1035:32;1032:52;;;1080:1;1077;1070:12;1032:52;1107:16;;-1:-1:-1;;;;;1172:14:64;;;1169:34;;;1199:1;1196;1189:12;1169:34;1222:61;1275:7;1266:6;1255:9;1251:22;1222:61;:::i;:::-;1212:71;;1329:2;1318:9;1314:18;1308:25;1292:41;;1358:2;1348:8;1345:16;1342:36;;;1374:1;1371;1364:12;1342:36;;1397:63;1452:7;1441:8;1430:9;1426:24;1397:63;:::i;:::-;1387:73;;;904:562;;;;;:::o;1471:380::-;1550:1;1546:12;;;;1593;;;1614:61;;1668:4;1660:6;1656:17;1646:27;;1614:61;1721:2;1713:6;1710:14;1690:18;1687:38;1684:161;;;1767:10;1762:3;1758:20;1755:1;1748:31;1802:4;1799:1;1792:15;1830:4;1827:1;1820:15;1684:161;;1471:380;;;:::o;1856:127::-;1917:10;1912:3;1908:20;1905:1;1898:31;1948:4;1945:1;1938:15;1972:4;1969:1;1962:15;1856:127;1331:10416:0;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_afterTokenTransfer_544": {
                  "entryPoint": null,
                  "id": 544,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_approve_522": {
                  "entryPoint": 1232,
                  "id": 522,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_beforeTokenTransfer_533": {
                  "entryPoint": null,
                  "id": 533,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_msgSender_660": {
                  "entryPoint": null,
                  "id": 660,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_transfer_349": {
                  "entryPoint": 1667,
                  "id": 349,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@allowance_137": {
                  "entryPoint": null,
                  "id": 137,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@approve_158": {
                  "entryPoint": 658,
                  "id": 158,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@balanceOf_98": {
                  "entryPoint": null,
                  "id": 98,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@decimals_74": {
                  "entryPoint": null,
                  "id": 74,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@decreaseAllowance_272": {
                  "entryPoint": 1003,
                  "id": 272,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@increaseAllowance_233": {
                  "entryPoint": 915,
                  "id": 233,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@name_54": {
                  "entryPoint": 512,
                  "id": 54,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@symbol_64": {
                  "entryPoint": 988,
                  "id": 64,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@totalSupply_84": {
                  "entryPoint": null,
                  "id": 84,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@transferFrom_206": {
                  "entryPoint": 680,
                  "id": 206,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@transfer_119": {
                  "entryPoint": 1219,
                  "id": 119,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_address": {
                  "entryPoint": 2359,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 2400,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 2434,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 2485,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 2545,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 2587,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 2702,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 2765,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:6053:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "63:147:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "73:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "95:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "82:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "82:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "73:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "188:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "197:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "200:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "190:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "190:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "190:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "124:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "135:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "142:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "131:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "131:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "121:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "121:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "114:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "114:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "111:93:64"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "42:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "53:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:196:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "285:116:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "331:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "340:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "343:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "333:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "333:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "333:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "306:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "315:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "302:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "302:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "327:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "298:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "298:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "295:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "356:39:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "385:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "366:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "366:29:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "356:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "251:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "262:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "274:6:64",
                            "type": ""
                          }
                        ],
                        "src": "215:186:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "493:173:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "539:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "548:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "551:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "541:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "541:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "541:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "514:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "523:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "510:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "510:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "535:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "506:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "506:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "503:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "564:39:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "593:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "574:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "574:29:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "564:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "612:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "645:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "656:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "641:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "641:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "622:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "622:38:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "612:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "451:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "462:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "474:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "482:6:64",
                            "type": ""
                          }
                        ],
                        "src": "406:260:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "775:224:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "821:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "830:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "833:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "823:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "823:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "823:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "796:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "805:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "792:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "792:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "817:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "788:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "788:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "785:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "846:39:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "875:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "856:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "856:29:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "846:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "894:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "927:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "938:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "923:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "923:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "904:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "904:38:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "894:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "951:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "978:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "989:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "974:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "974:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "961:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "961:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "951:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "725:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "736:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "748:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "756:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "764:6:64",
                            "type": ""
                          }
                        ],
                        "src": "671:328:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1091:167:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1137:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1146:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1149:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1139:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1139:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1139:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1112:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1121:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1108:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1108:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1133:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1104:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1104:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1101:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1162:39:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1191:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1172:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1172:29:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1162:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1210:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1237:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1248:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1233:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1233:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1220:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1220:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1210:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1049:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1060:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1072:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1080:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1004:254:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1358:92:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1368:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1380:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1391:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1376:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1376:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1368:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1410:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1435:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1428:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1428:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "1421:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1421:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1403:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1403:41:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1403:41:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1327:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1338:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1349:4:64",
                            "type": ""
                          }
                        ],
                        "src": "1263:187:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1576:535:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1586:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1596:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1590:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1614:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1625:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1607:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1607:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1607:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1637:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1657:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1651:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1651:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1641:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1684:9:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1695:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1680:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1680:18:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1700:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1673:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1673:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1673:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1716:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1725:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1720:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1785:90:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1814:9:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1825:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1810:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1810:17:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1829:2:64",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1806:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1806:26:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1848:6:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1856:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1844:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1844:14:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1860:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1840:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1840:23:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1834:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1834:30:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1799:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1799:66:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1799:66:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1746:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1749:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1743:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1743:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1757:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1759:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1768:1:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1771:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1764:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1764:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1759:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1739:3:64",
                                "statements": []
                              },
                              "src": "1735:140:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1909:66:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1938:9:64"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1949:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1934:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1934:22:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1958:2:64",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1930:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1930:31:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1963:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1923:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1923:42:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1923:42:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1890:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1893:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1887:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1887:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1884:91:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1984:121:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2000:9:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2019:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2027:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2015:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2015:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2032:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2011:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2011:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1996:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1996:104:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2102:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1992:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1992:113:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1984:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1545:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1556:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1567:4:64",
                            "type": ""
                          }
                        ],
                        "src": "1455:656:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2290:225:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2307:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2318:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2300:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2300:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2300:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2341:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2352:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2337:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2337:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2357:2:64",
                                    "type": "",
                                    "value": "35"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2330:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2330:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2330:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2380:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2391:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2376:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2376:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2396:34:64",
                                    "type": "",
                                    "value": "ERC20: transfer to the zero addr"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2369:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2369:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2369:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2451:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2462:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2447:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2447:18:64"
                                  },
                                  {
                                    "hexValue": "657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2467:5:64",
                                    "type": "",
                                    "value": "ess"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2440:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2440:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2440:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2482:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2494:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2505:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2490:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2490:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2482:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2267:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2281:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2116:399:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2694:224:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2711:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2722:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2704:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2704:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2704:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2745:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2756:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2741:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2741:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2761:2:64",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2734:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2734:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2734:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2784:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2795:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2780:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2780:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a20617070726f766520746f20746865207a65726f206164647265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2800:34:64",
                                    "type": "",
                                    "value": "ERC20: approve to the zero addre"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2773:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2773:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2773:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2855:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2866:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2851:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2851:18:64"
                                  },
                                  {
                                    "hexValue": "7373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2871:4:64",
                                    "type": "",
                                    "value": "ss"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2844:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2844:32:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2844:32:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2885:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2897:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2908:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2893:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2893:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2885:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2671:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2685:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2520:398:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3097:228:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3114:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3125:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3107:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3107:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3107:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3148:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3159:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3144:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3144:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3164:2:64",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3137:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3137:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3137:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3187:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3198:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3183:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3183:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3203:34:64",
                                    "type": "",
                                    "value": "ERC20: transfer amount exceeds b"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3176:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3176:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3176:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3258:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3269:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3254:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3254:18:64"
                                  },
                                  {
                                    "hexValue": "616c616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3274:8:64",
                                    "type": "",
                                    "value": "alance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3247:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3247:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3247:36:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3292:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3304:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3315:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3300:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3300:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3292:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3074:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3088:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2923:402:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3504:230:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3521:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3532:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3514:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3514:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3514:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3555:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3566:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3551:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3551:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3571:2:64",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3544:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3544:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3544:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3594:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3605:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3590:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3590:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3610:34:64",
                                    "type": "",
                                    "value": "ERC20: transfer amount exceeds a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3583:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3583:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3583:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3665:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3676:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3661:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3661:18:64"
                                  },
                                  {
                                    "hexValue": "6c6c6f77616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3681:10:64",
                                    "type": "",
                                    "value": "llowance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3654:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3654:38:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3654:38:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3701:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3713:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3724:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3709:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3709:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3701:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3481:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3495:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3330:404:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3913:227:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3930:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3941:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3923:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3923:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3923:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3964:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3975:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3960:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3960:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3980:2:64",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3953:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3953:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3953:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4003:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4014:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3999:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3999:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f206164",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4019:34:64",
                                    "type": "",
                                    "value": "ERC20: transfer from the zero ad"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3992:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3992:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3992:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4074:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4085:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4070:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4070:18:64"
                                  },
                                  {
                                    "hexValue": "6472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4090:7:64",
                                    "type": "",
                                    "value": "dress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4063:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4063:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4063:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4107:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4119:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4130:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4115:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4115:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4107:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3890:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3904:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3739:401:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4319:226:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4336:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4347:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4329:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4329:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4329:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4370:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4381:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4366:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4366:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4386:2:64",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4359:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4359:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4359:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4409:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4420:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4405:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4405:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f20616464",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4425:34:64",
                                    "type": "",
                                    "value": "ERC20: approve from the zero add"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4398:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4398:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4398:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4480:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4491:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4476:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4476:18:64"
                                  },
                                  {
                                    "hexValue": "72657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4496:6:64",
                                    "type": "",
                                    "value": "ress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4469:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4469:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4469:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4512:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4524:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4535:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4520:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4520:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4512:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4296:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4310:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4145:400:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4724:227:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4741:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4752:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4734:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4734:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4734:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4775:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4786:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4771:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4771:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4791:2:64",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4764:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4764:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4764:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4814:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4825:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4810:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4810:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4830:34:64",
                                    "type": "",
                                    "value": "ERC20: decreased allowance below"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4803:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4803:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4803:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4885:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4896:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4881:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4881:18:64"
                                  },
                                  {
                                    "hexValue": "207a65726f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4901:7:64",
                                    "type": "",
                                    "value": " zero"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4874:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4874:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4874:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4918:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4930:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4941:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4926:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4926:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4918:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4701:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4715:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4550:401:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5057:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5067:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5079:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5090:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5075:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5075:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5067:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5109:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5120:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5102:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5102:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5102:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5026:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5037:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5048:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4956:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5235:87:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5245:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5257:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5268:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5253:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5253:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5245:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5287:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5302:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5310:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5298:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5298:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5280:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5280:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5280:36:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5204:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5215:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5226:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5138:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5375:234:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5410:168:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5431:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5434:77:64",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5424:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5424:88:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5424:88:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5532:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5535:4:64",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5525:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5525:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5525:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5560:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5563:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5553:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5553:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5553:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "5391:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "5398:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "5394:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5394:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5388:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5388:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5385:193:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5587:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "5598:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "5601:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5594:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5594:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "5587:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "5358:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "5361:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "5367:3:64",
                            "type": ""
                          }
                        ],
                        "src": "5327:282:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5669:382:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5679:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5693:1:64",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "5696:4:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "5689:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5689:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "5679:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5710:38:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "5740:4:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5746:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "5736:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5736:12:64"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "5714:18:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5787:31:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5789:27:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "5803:6:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5811:4:64",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "5799:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5799:17:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "5789:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "5767:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5760:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5760:26:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5757:61:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5877:168:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5898:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5901:77:64",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5891:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5891:88:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5891:88:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5999:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6002:4:64",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5992:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5992:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5992:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6027:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6030:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6020:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6020:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6020:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "5833:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "5856:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5864:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5853:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5853:14:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "5830:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5830:38:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5827:218:64"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "5649:4:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "5658:6:64",
                            "type": ""
                          }
                        ],
                        "src": "5614:437:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n    function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n        mstore(add(headStart, 96), \"ess\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"ERC20: transfer amount exceeds b\")\n        mstore(add(headStart, 96), \"alance\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"ERC20: transfer amount exceeds a\")\n        mstore(add(headStart, 96), \"llowance\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: decreased allowance below\")\n        mstore(add(headStart, 96), \" zero\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        sum := add(x, y)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e39190610a1b565b60405180910390f35b6100ff6100fa3660046109f1565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046109b5565b6102a8565b604051601281526020016100e3565b6100ff6101513660046109f1565b610393565b610113610164366004610960565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d66103dc565b6100ff6101a23660046109f1565b6103eb565b6100ff6101b53660046109f1565b6104c3565b6101136101c8366004610982565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610acd565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610acd565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b600061029f3384846104d0565b50600192915050565b60006102b5848484610683565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203384529091529020548281101561037b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61038885338584036104d0565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161029f9185906103d7908690610a8e565b6104d0565b60606004805461020f90610acd565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054828110156104ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610372565b6104b933858584036104d0565b5060019392505050565b600061029f338484610683565b73ffffffffffffffffffffffffffffffffffffffff8316610572576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610372565b73ffffffffffffffffffffffffffffffffffffffff8216610615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610372565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610372565b73ffffffffffffffffffffffffffffffffffffffff82166107c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610372565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561087f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610372565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906108c3908490610a8e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161092991815260200190565b60405180910390a350505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461095b57600080fd5b919050565b60006020828403121561097257600080fd5b61097b82610937565b9392505050565b6000806040838503121561099557600080fd5b61099e83610937565b91506109ac60208401610937565b90509250929050565b6000806000606084860312156109ca57600080fd5b6109d384610937565b92506109e160208501610937565b9150604084013590509250925092565b60008060408385031215610a0457600080fd5b610a0d83610937565b946020939093013593505050565b600060208083528351808285015260005b81811015610a4857858101830151858201604001528201610a2c565b81811115610a5a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008219821115610ac8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b600181811c90821680610ae157607f821691505b60208210811415610b1b577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b5091905056fea26469706673582212200aba4ae02ad01a26bfb54ac01e0cc0d44ea57ae7c9a2ed3122deaf74a49c2bb164736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x194 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1A7 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x121 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x134 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xEC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6 PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xE3 SWAP2 SWAP1 PUSH2 0xA1B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xFF PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0x9F1 JUMP JUMPDEST PUSH2 0x292 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0x9B5 JUMP JUMPDEST PUSH2 0x2A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE3 JUMP JUMPDEST PUSH2 0xFF PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x9F1 JUMP JUMPDEST PUSH2 0x393 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x164 CALLDATASIZE PUSH1 0x4 PUSH2 0x960 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x3DC JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x9F1 JUMP JUMPDEST PUSH2 0x3EB JUMP JUMPDEST PUSH2 0xFF PUSH2 0x1B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x9F1 JUMP JUMPDEST PUSH2 0x4C3 JUMP JUMPDEST PUSH2 0x113 PUSH2 0x1C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x982 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xACD JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x23B SWAP1 PUSH2 0xACD JUMP JUMPDEST DUP1 ISZERO PUSH2 0x288 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x25D JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x288 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x26B JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29F CALLER DUP5 DUP5 PUSH2 0x4D0 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B5 DUP5 DUP5 DUP5 PUSH2 0x683 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x37B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6C6F77616E6365000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x388 DUP6 CALLER DUP6 DUP5 SUB PUSH2 0x4D0 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x29F SWAP2 DUP6 SWAP1 PUSH2 0x3D7 SWAP1 DUP7 SWAP1 PUSH2 0xA8E JUMP JUMPDEST PUSH2 0x4D0 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x20F SWAP1 PUSH2 0xACD JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x4AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH2 0x4B9 CALLER DUP6 DUP6 DUP5 SUB PUSH2 0x4D0 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x29F CALLER DUP5 DUP5 PUSH2 0x683 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x572 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x615 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x726 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x7C9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x87F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x372 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP2 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x8C3 SWAP1 DUP5 SWAP1 PUSH2 0xA8E JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x929 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x95B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x972 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x97B DUP3 PUSH2 0x937 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x995 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x99E DUP4 PUSH2 0x937 JUMP JUMPDEST SWAP2 POP PUSH2 0x9AC PUSH1 0x20 DUP5 ADD PUSH2 0x937 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x9CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9D3 DUP5 PUSH2 0x937 JUMP JUMPDEST SWAP3 POP PUSH2 0x9E1 PUSH1 0x20 DUP6 ADD PUSH2 0x937 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0D DUP4 PUSH2 0x937 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA48 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xA2C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xA5A JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xAC8 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xAE1 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xB1B JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP 0xBA 0x4A 0xE0 0x2A 0xD0 BYTE 0x26 0xBF 0xB5 0x4A 0xC0 0x1E 0xC 0xC0 0xD4 0x4E 0xA5 PUSH27 0xE7C9A2ED3122DEAF74A49C2BB164736F6C63430008070033000000 ",
              "sourceMap": "1331:10416:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2084:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4181:166;;;;;;:::i;:::-;;:::i;:::-;;;1428:14:64;;1421:22;1403:41;;1391:2;1376:18;4181:166:0;1263:187:64;3172:106:0;3259:12;;3172:106;;;5102:25:64;;;5090:2;5075:18;3172:106:0;4956:177:64;4814:478:0;;;;;;:::i;:::-;;:::i;3021:91::-;;;3103:2;5280:36:64;;5268:2;5253:18;3021:91:0;5138:184:64;5687:212:0;;;;;;:::i;:::-;;:::i;3336:125::-;;;;;;:::i;:::-;3436:18;;3410:7;3436:18;;;;;;;;;;;;3336:125;2295:102;;;:::i;6386:405::-;;;;;;:::i;:::-;;:::i;3664:172::-;;;;;;:::i;:::-;;:::i;3894:149::-;;;;;;:::i;:::-;4009:18;;;;3983:7;4009:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3894:149;2084:98;2138:13;2170:5;2163:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2084:98;:::o;4181:166::-;4264:4;4280:39;666:10:3;4303:7:0;4312:6;4280:8;:39::i;:::-;-1:-1:-1;4336:4:0;4181:166;;;;:::o;4814:478::-;4950:4;4966:36;4976:6;4984:9;4995:6;4966:9;:36::i;:::-;5040:19;;;5013:24;5040:19;;;:11;:19;;;;;;;;666:10:3;5040:33:0;;;;;;;;5091:26;;;;5083:79;;;;;;;3532:2:64;5083:79:0;;;3514:21:64;3571:2;3551:18;;;3544:30;3610:34;3590:18;;;3583:62;3681:10;3661:18;;;3654:38;3709:19;;5083:79:0;;;;;;;;;5196:57;5205:6;666:10:3;5246:6:0;5227:16;:25;5196:8;:57::i;:::-;-1:-1:-1;5281:4:0;;4814:478;-1:-1:-1;;;;4814:478:0:o;5687:212::-;666:10:3;5775:4:0;5823:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;5775:4;;5791:80;;5814:7;;5823:47;;5860:10;;5823:47;:::i;:::-;5791:8;:80::i;2295:102::-;2351:13;2383:7;2376:14;;;;;:::i;6386:405::-;666:10:3;6479:4:0;6522:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;6574:35;;;;6566:85;;;;;;;4752:2:64;6566:85:0;;;4734:21:64;4791:2;4771:18;;;4764:30;4830:34;4810:18;;;4803:62;4901:7;4881:18;;;4874:35;4926:19;;6566:85:0;4550:401:64;6566:85:0;6685:67;666:10:3;6708:7:0;6736:15;6717:16;:34;6685:8;:67::i;:::-;-1:-1:-1;6780:4:0;;6386:405;-1:-1:-1;;;6386:405:0:o;3664:172::-;3750:4;3766:42;666:10:3;3790:9:0;3801:6;3766:9;:42::i;9962:370::-;10093:19;;;10085:68;;;;;;;4347:2:64;10085:68:0;;;4329:21:64;4386:2;4366:18;;;4359:30;4425:34;4405:18;;;4398:62;4496:6;4476:18;;;4469:34;4520:19;;10085:68:0;4145:400:64;10085:68:0;10171:21;;;10163:68;;;;;;;2722:2:64;10163:68:0;;;2704:21:64;2761:2;2741:18;;;2734:30;2800:34;2780:18;;;2773:62;2871:4;2851:18;;;2844:32;2893:19;;10163:68:0;2520:398:64;10163:68:0;10242:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10293:32;;5102:25:64;;;10293:32:0;;5075:18:64;10293:32:0;;;;;;;9962:370;;;:::o;7265:713::-;7400:20;;;7392:70;;;;;;;3941:2:64;7392:70:0;;;3923:21:64;3980:2;3960:18;;;3953:30;4019:34;3999:18;;;3992:62;4090:7;4070:18;;;4063:35;4115:19;;7392:70:0;3739:401:64;7392:70:0;7480:23;;;7472:71;;;;;;;2318:2:64;7472:71:0;;;2300:21:64;2357:2;2337:18;;;2330:30;2396:34;2376:18;;;2369:62;2467:5;2447:18;;;2440:33;2490:19;;7472:71:0;2116:399:64;7472:71:0;7636:17;;;7612:21;7636:17;;;;;;;;;;;7671:23;;;;7663:74;;;;;;;3125:2:64;7663:74:0;;;3107:21:64;3164:2;3144:18;;;3137:30;3203:34;3183:18;;;3176:62;3274:8;3254:18;;;3247:36;3300:19;;7663:74:0;2923:402:64;7663:74:0;7771:17;;;;:9;:17;;;;;;;;;;;7791:22;;;7771:42;;7833:20;;;;;;;;:30;;7807:6;;7771:9;7833:30;;7807:6;;7833:30;:::i;:::-;;;;;;;;7896:9;7879:35;;7888:6;7879:35;;;7907:6;7879:35;;;;5102:25:64;;5090:2;5075:18;;4956:177;7879:35:0;;;;;;;;7382:596;7265:713;;;:::o;14:196:64:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;:::-;356:39;215:186;-1:-1:-1;;;215:186:64:o;406:260::-;474:6;482;535:2;523:9;514:7;510:23;506:32;503:52;;;551:1;548;541:12;503:52;574:29;593:9;574:29;:::i;:::-;564:39;;622:38;656:2;645:9;641:18;622:38;:::i;:::-;612:48;;406:260;;;;;:::o;671:328::-;748:6;756;764;817:2;805:9;796:7;792:23;788:32;785:52;;;833:1;830;823:12;785:52;856:29;875:9;856:29;:::i;:::-;846:39;;904:38;938:2;927:9;923:18;904:38;:::i;:::-;894:48;;989:2;978:9;974:18;961:32;951:42;;671:328;;;;;:::o;1004:254::-;1072:6;1080;1133:2;1121:9;1112:7;1108:23;1104:32;1101:52;;;1149:1;1146;1139:12;1101:52;1172:29;1191:9;1172:29;:::i;:::-;1162:39;1248:2;1233:18;;;;1220:32;;-1:-1:-1;;;1004:254:64:o;1455:656::-;1567:4;1596:2;1625;1614:9;1607:21;1657:6;1651:13;1700:6;1695:2;1684:9;1680:18;1673:34;1725:1;1735:140;1749:6;1746:1;1743:13;1735:140;;;1844:14;;;1840:23;;1834:30;1810:17;;;1829:2;1806:26;1799:66;1764:10;;1735:140;;;1893:6;1890:1;1887:13;1884:91;;;1963:1;1958:2;1949:6;1938:9;1934:22;1930:31;1923:42;1884:91;-1:-1:-1;2027:2:64;2015:15;2032:66;2011:88;1996:104;;;;2102:2;1992:113;;1455:656;-1:-1:-1;;;1455:656:64:o;5327:282::-;5367:3;5398:1;5394:6;5391:1;5388:13;5385:193;;;5434:77;5431:1;5424:88;5535:4;5532:1;5525:15;5563:4;5560:1;5553:15;5385:193;-1:-1:-1;5594:9:64;;5327:282::o;5614:437::-;5693:1;5689:12;;;;5736;;;5757:61;;5811:4;5803:6;5799:17;5789:27;;5757:61;5864:2;5856:6;5853:14;5833:18;5830:38;5827:218;;;5901:77;5898:1;5891:88;6002:4;5999:1;5992:15;6030:4;6027:1;6020:15;5827:218;;5614:437;;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "580600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "allowance(address,address)": "infinite",
                "approve(address,uint256)": "24594",
                "balanceOf(address)": "2561",
                "decimals()": "244",
                "decreaseAllowance(address,uint256)": "26850",
                "increaseAllowance(address,uint256)": "26897",
                "name()": "infinite",
                "symbol()": "infinite",
                "totalSupply()": "2304",
                "transfer(address,uint256)": "51125",
                "transferFrom(address,address,uint256)": "infinite"
              },
              "internal": {
                "_afterTokenTransfer(address,address,uint256)": "infinite",
                "_approve(address,address,uint256)": "infinite",
                "_beforeTokenTransfer(address,address,uint256)": "infinite",
                "_burn(address,uint256)": "infinite",
                "_mint(address,uint256)": "infinite",
                "_transfer(address,address,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "increaseAllowance(address,uint256)": "39509351",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. The default value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"./extensions/IERC20Metadata.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20PresetMinterPauser}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20 is Context, IERC20, IERC20Metadata {\\n    mapping(address => uint256) private _balances;\\n\\n    mapping(address => mapping(address => uint256)) private _allowances;\\n\\n    uint256 private _totalSupply;\\n\\n    string private _name;\\n    string private _symbol;\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * The default value of {decimals} is 18. To select a different value for\\n     * {decimals} you should overload it.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the value {ERC20} uses, unless this function is\\n     * overridden;\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual override returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual override returns (uint256) {\\n        return _totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual override returns (uint256) {\\n        return _balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `recipient` cannot be the zero address.\\n     * - the caller must have a balance of at least `amount`.\\n     */\\n    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\\n        _transfer(_msgSender(), recipient, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n        return _allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n        _approve(_msgSender(), spender, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * Requirements:\\n     *\\n     * - `sender` and `recipient` cannot be the zero address.\\n     * - `sender` must have a balance of at least `amount`.\\n     * - the caller must have allowance for ``sender``'s tokens of at least\\n     * `amount`.\\n     */\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) public virtual override returns (bool) {\\n        _transfer(sender, recipient, amount);\\n\\n        uint256 currentAllowance = _allowances[sender][_msgSender()];\\n        require(currentAllowance >= amount, \\\"ERC20: transfer amount exceeds allowance\\\");\\n        unchecked {\\n            _approve(sender, _msgSender(), currentAllowance - amount);\\n        }\\n\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\\n     *\\n     * This is an alternative to {approve} that can be used as a mitigation for\\n     * problems described in {IERC20-approve}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n     *\\n     * This is an alternative to {approve} that can be used as a mitigation for\\n     * problems described in {IERC20-approve}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     * - `spender` must have allowance for the caller of at least\\n     * `subtractedValue`.\\n     */\\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n        uint256 currentAllowance = _allowances[_msgSender()][spender];\\n        require(currentAllowance >= subtractedValue, \\\"ERC20: decreased allowance below zero\\\");\\n        unchecked {\\n            _approve(_msgSender(), spender, currentAllowance - subtractedValue);\\n        }\\n\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves `amount` of tokens from `sender` to `recipient`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `sender` cannot be the zero address.\\n     * - `recipient` cannot be the zero address.\\n     * - `sender` must have a balance of at least `amount`.\\n     */\\n    function _transfer(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) internal virtual {\\n        require(sender != address(0), \\\"ERC20: transfer from the zero address\\\");\\n        require(recipient != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(sender, recipient, amount);\\n\\n        uint256 senderBalance = _balances[sender];\\n        require(senderBalance >= amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n        unchecked {\\n            _balances[sender] = senderBalance - amount;\\n        }\\n        _balances[recipient] += amount;\\n\\n        emit Transfer(sender, recipient, amount);\\n\\n        _afterTokenTransfer(sender, recipient, amount);\\n    }\\n\\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n     * the total supply.\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function _mint(address account, uint256 amount) internal virtual {\\n        require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n        _beforeTokenTransfer(address(0), account, amount);\\n\\n        _totalSupply += amount;\\n        _balances[account] += amount;\\n        emit Transfer(address(0), account, amount);\\n\\n        _afterTokenTransfer(address(0), account, amount);\\n    }\\n\\n    /**\\n     * @dev Destroys `amount` tokens from `account`, reducing the\\n     * total supply.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     * - `account` must have at least `amount` tokens.\\n     */\\n    function _burn(address account, uint256 amount) internal virtual {\\n        require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n        _beforeTokenTransfer(account, address(0), amount);\\n\\n        uint256 accountBalance = _balances[account];\\n        require(accountBalance >= amount, \\\"ERC20: burn amount exceeds balance\\\");\\n        unchecked {\\n            _balances[account] = accountBalance - amount;\\n        }\\n        _totalSupply -= amount;\\n\\n        emit Transfer(account, address(0), amount);\\n\\n        _afterTokenTransfer(account, address(0), amount);\\n    }\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     */\\n    function _approve(\\n        address owner,\\n        address spender,\\n        uint256 amount\\n    ) internal virtual {\\n        require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n        require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n        _allowances[owner][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n     * will be transferred to `to`.\\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n     * has been transferred to `to`.\\n     * - when `from` is zero, `amount` tokens have been minted for `to`.\\n     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {}\\n}\\n\",\"keccak256\":\"0xb03df8481a954604ad0c9125680893b2e3f7ff770fe470e38b89ac61b84e8072\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x83fe24f5c04a56091e50f4a345ff504c8bff658a76d4c43b16878c8f940c53b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 15,
                "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
                "label": "_balances",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 21,
                "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
                "label": "_allowances",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
              },
              {
                "astId": 23,
                "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
                "label": "_totalSupply",
                "offset": 0,
                "slot": "2",
                "type": "t_uint256"
              },
              {
                "astId": 25,
                "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
                "label": "_name",
                "offset": 0,
                "slot": "3",
                "type": "t_string_storage"
              },
              {
                "astId": 27,
                "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20",
                "label": "_symbol",
                "offset": 0,
                "slot": "4",
                "type": "t_string_storage"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_mapping(t_address,t_mapping(t_address,t_uint256))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_uint256)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "IERC20": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Interface of the ERC20 standard as defined in the EIP.",
            "events": {
              "Approval(address,address,uint256)": {
                "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
              },
              "Transfer(address,address,uint256)": {
                "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
              }
            },
            "kind": "dev",
            "methods": {
              "allowance(address,address)": {
                "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
              },
              "approve(address,uint256)": {
                "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."
              },
              "balanceOf(address)": {
                "details": "Returns the amount of tokens owned by `account`."
              },
              "totalSupply()": {
                "details": "Returns the amount of tokens in existence."
              },
              "transfer(address,uint256)": {
                "details": "Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
              },
              "transferFrom(address,address,uint256)": {
                "details": "Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
        "IERC20Metadata": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._",
            "kind": "dev",
            "methods": {
              "allowance(address,address)": {
                "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
              },
              "approve(address,uint256)": {
                "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."
              },
              "balanceOf(address)": {
                "details": "Returns the amount of tokens owned by `account`."
              },
              "decimals()": {
                "details": "Returns the decimals places of the token."
              },
              "name()": {
                "details": "Returns the name of the token."
              },
              "symbol()": {
                "details": "Returns the symbol of the token."
              },
              "totalSupply()": {
                "details": "Returns the amount of tokens in existence."
              },
              "transfer(address,uint256)": {
                "details": "Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
              },
              "transferFrom(address,address,uint256)": {
                "details": "Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x83fe24f5c04a56091e50f4a345ff504c8bff658a76d4c43b16878c8f940c53b2\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "@openzeppelin/contracts/utils/Context.sol": {
        "Context": {
          "abi": [],
          "devdoc": {
            "details": "Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/TridentRouter.sol": {
        "TridentRouter": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "bento",
                  "type": "address"
                },
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "masterDeployer",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "wETH",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "PermitFailed",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "native",
                      "type": "bool"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct ITridentRouter.TokenInput[]",
                  "name": "tokenInput",
                  "type": "tuple[]"
                },
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minLiquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "addLiquidity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minLiquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "addLiquidityLazy",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "approveMasterContract",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                }
              ],
              "name": "batch",
              "outputs": [
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPool.TokenAmount[]",
                  "name": "minWithdrawals",
                  "type": "tuple[]"
                }
              ],
              "name": "burnLiquidity",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                },
                {
                  "internalType": "uint256",
                  "name": "minWithdrawal",
                  "type": "uint256"
                }
              ],
              "name": "burnLiquiditySingle",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "tokenIn",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "pool",
                          "type": "address"
                        },
                        {
                          "internalType": "bool",
                          "name": "native",
                          "type": "bool"
                        },
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        }
                      ],
                      "internalType": "struct ITridentRouter.InitialPath[]",
                      "name": "initialPath",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "tokenIn",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "pool",
                          "type": "address"
                        },
                        {
                          "internalType": "uint64",
                          "name": "balancePercentage",
                          "type": "uint64"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        }
                      ],
                      "internalType": "struct ITridentRouter.PercentagePath[]",
                      "name": "percentagePath",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "to",
                          "type": "address"
                        },
                        {
                          "internalType": "bool",
                          "name": "unwrapBento",
                          "type": "bool"
                        },
                        {
                          "internalType": "uint256",
                          "name": "minAmount",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct ITridentRouter.Output[]",
                      "name": "output",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ComplexPathParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "complexPath",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "factory",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "tokenIn",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountIn",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountOutMinimum",
                      "type": "uint256"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "pool",
                          "type": "address"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        }
                      ],
                      "internalType": "struct ITridentRouter.Path[]",
                      "name": "path",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ExactInputParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "exactInput",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOutMinimum",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "pool",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ITridentRouter.Path[]",
                  "name": "path",
                  "type": "tuple[]"
                }
              ],
              "name": "exactInputLazy",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "amountIn",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountOutMinimum",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address",
                      "name": "pool",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "tokenIn",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ExactInputSingleParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "exactInputSingle",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "amountIn",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountOutMinimum",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address",
                      "name": "pool",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "tokenIn",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes",
                      "name": "data",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ExactInputSingleParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "exactInputSingleWithNativeToken",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "tokenIn",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountIn",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amountOutMinimum",
                      "type": "uint256"
                    },
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "pool",
                          "type": "address"
                        },
                        {
                          "internalType": "bytes",
                          "name": "data",
                          "type": "bytes"
                        }
                      ],
                      "internalType": "struct ITridentRouter.Path[]",
                      "name": "path",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct ITridentRouter.ExactInputParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "exactInputWithNativeToken",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitThis",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expiry",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitThisAllowed",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "refundETH",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "sweepBentoBoxToken",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "sweepNativeToken",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "tridentMintCallback",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "tridentSwapCallback",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amountMinimum",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "unwrapWETH",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "addLiquidity((address,bool,uint256)[],address,uint256,bytes)": {
                "params": {
                  "data": "Data required by the pool to add liquidity.",
                  "minLiquidity": "Minimum output liquidity - caps slippage.",
                  "pool": "Pool address to add liquidity to.",
                  "tokenInput": "Token address and amount to add as liquidity."
                }
              },
              "addLiquidityLazy(address,uint256,bytes)": {
                "details": "The input tokens are sent to the pool during the callback."
              },
              "batch(bytes[])": {
                "details": "The `msg.value` should not be trusted for any method callable from this function.Uses a modified version of the batch function - preventing multiple calls of the single input swap functions",
                "params": {
                  "data": "ABI-encoded params for each of the calls to make to this contract."
                },
                "returns": {
                  "results": "The results from each of the calls passed in via `data`."
                }
              },
              "burnLiquidity(address,uint256,bytes,(address,uint256)[])": {
                "params": {
                  "data": "Data required by the pool to burn liquidity.",
                  "liquidity": "Amount of liquidity tokens to burn.",
                  "minWithdrawals": "Minimum amount of `bento` tokens to be returned.",
                  "pool": "Pool address."
                }
              },
              "burnLiquiditySingle(address,uint256,bytes,uint256)": {
                "details": "The tokens are swapped automatically and the output is in a single token.",
                "params": {
                  "data": "Data required by the pool to burn liquidity.",
                  "liquidity": "Amount of liquidity tokens to burn.",
                  "minWithdrawal": "Minimum amount of tokens to be returned.",
                  "pool": "Pool address."
                }
              },
              "complexPath(((address,address,bool,uint256,bytes)[],(address,address,uint64,bytes)[],(address,address,bool,uint256)[]))": {
                "details": "This function is not optimized for single swaps and should only be used in complex cases where the amounts are large enough that minimizing slippage by using multiple paths is worth the extra gas.",
                "params": {
                  "params": "This includes everything needed for the swap. Look at the `ComplexPathParams` struct for more details."
                }
              },
              "exactInput((address,uint256,uint256,(address,bytes)[]))": {
                "details": "Ensure that the pools are trusted before calling this function. The pools can steal users' tokens.",
                "params": {
                  "params": "This includes the addresses of the tokens, pools, amount of token A to swap, minimum amount of token B after the swap and data required by the pools for the swaps."
                }
              },
              "exactInputLazy(uint256,(address,bytes)[])": {
                "details": "Ensure that the pools are trusted before calling this function. The pools can steal users' tokens. This function will unlikely be used in production but it shows how to use callbacks. One use case will be arbitrage.",
                "params": {
                  "amountOutMinimum": "Minimum amount of token B after the swap.",
                  "path": "Addresses of the pools and data required by the pools for the swaps."
                }
              },
              "exactInputSingle((uint256,uint256,address,address,bytes))": {
                "details": "Ensure that the pool is trusted before calling this function. The pool can steal users' tokens.",
                "params": {
                  "params": "This includes the address of token A, pool, amount of token A to swap, minimum amount of token B after the swap and data required by the pool for the swap."
                }
              },
              "exactInputSingleWithNativeToken((uint256,uint256,address,address,bytes))": {
                "details": "Ensure that the pool is trusted before calling this function. The pool can steal users' tokens.",
                "params": {
                  "params": "This includes the address of token A, pool, amount of token A to swap, minimum amount of token B after the swap and data required by the pool for the swap."
                }
              },
              "exactInputWithNativeToken((address,uint256,uint256,(address,bytes)[]))": {
                "details": "Ensure that the pools are trusted before calling this function. The pools can steal users' tokens.",
                "params": {
                  "params": "This includes the addresses of the tokens, pools, amount of token A to swap, minimum amount of token B after the swap and data required by the pools for the swaps."
                }
              },
              "permitThis(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "amount": "Token amount to grant spending right over.",
                  "deadline": "Termination for signed approval (UTC timestamp in seconds).",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "token": "Address of ERC-20 token.",
                  "v": "The recovery byte of the signature."
                }
              },
              "permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "expiry": "Termination for signed approval - UTC timestamp in seconds.",
                  "nonce": "Token owner's nonce - increases at each call to {permit}.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "token": "Address of ERC-20 token.",
                  "v": "The recovery byte of the signature."
                }
              }
            },
            "stateVariables": {
              "cachedMsgSender": {
                "details": "Used to ensure that `tridentSwapCallback` is called only by the authorized address. These are set when someone calls a flash swap and reset afterwards."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_23715": {
                  "entryPoint": null,
                  "id": 23715,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_706": {
                  "entryPoint": null,
                  "id": 706,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_contract$_IBentoBoxMinimal_$2253t_contract$_IMasterDeployer_$2356t_address_fromMemory": {
                  "entryPoint": 196,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "validator_revert_address": {
                  "entryPoint": 280,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:720:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "178:404:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "224:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "233:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "236:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "226:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "226:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "226:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "199:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "208:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "195:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "195:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "220:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "191:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "191:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "188:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "249:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "268:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "262:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "262:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "253:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "312:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "287:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "287:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "287:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "327:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "337:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "327:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "351:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "376:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "387:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "372:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "372:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "366:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "366:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "355:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "425:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "400:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "400:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "400:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "442:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "452:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "442:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "468:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "493:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "504:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "489:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "489:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "483:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "483:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "472:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "542:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "517:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "517:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "517:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "559:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "569:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "559:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_IBentoBoxMinimal_$2253t_contract$_IMasterDeployer_$2356t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "128:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "139:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "151:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "159:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "167:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:568:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "632:86:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "696:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "705:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "708:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "698:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "698:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "698:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "655:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "666:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "681:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "686:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "677:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "677:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "690:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "673:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "673:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "662:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "662:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "652:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "652:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "645:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "645:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "642:70:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "621:5:64",
                            "type": ""
                          }
                        ],
                        "src": "587:131:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_contract$_IBentoBoxMinimal_$2253t_contract$_IMasterDeployer_$2356t_address_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := mload(add(headStart, 64))\n        validator_revert_address(value_2)\n        value2 := value_2\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60e06040523480156200001157600080fd5b5060405162004b4d38038062004b4d8339810160408190526200003491620000c4565b6001600160601b0319606084811b821660805283811b821660a05282901b1660c0526040805163577268d960e11b815290518491849184916001600160a01b0385169163aee4d1b29160048082019260009290919082900301818387803b1580156200009f57600080fd5b505af1158015620000b4573d6000803e3d6000fd5b5050505050505050505062000131565b600080600060608486031215620000da57600080fd5b8351620000e78162000118565b6020850151909350620000fa8162000118565b60408501519092506200010d8162000118565b809150509250925092565b6001600160a01b03811681146200012e57600080fd5b50565b60805160601c60a05160601c60c05160601c61495e620001ef600039600081816101a101528181612e6501526137d80152600081816104360152818161104a015261308e0152600081816102e9015281816106da015281816110f6015281816113c60152818161164201528181611ae001528181611e650152818161214e015281816122d90152818161259501528181612772015281816128d901528181612b4301528181612cff01528181612f250152613582015261495e6000f3fe6080604052600436106101845760003560e01c806377631981116100d6578063a9b62c231161007f578063ced10b4911610059578063ced10b4914610404578063cf58879a14610424578063e16d9ce51461045857600080fd5b8063a9b62c23146103b1578063b96c5c0e146103d1578063bd50c7b1146103e457600080fd5b806394ae4ab2116100b057806394ae4ab21461036b57806398a691de1461038b5780639fa744911461039e57600080fd5b8063776319811461030b578063783312d91461032b5780639128efda1461034b57600080fd5b80631e897afb116101385780632cfcb94f116101125780632cfcb94f146102b1578063403335a8146102c45780634da31827146102d757600080fd5b80631e897afb14610246578063250558dc146102665780632c0d9a011461029e57600080fd5b806312210e8a1161016957806312210e8a1461020b5780631aa349a8146102135780631ab5d6c81461023357600080fd5b80630b0d1b1e146101d25780630f93d439146101f857600080fd5b366101cd573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101cb57600080fd5b005b600080fd5b6101e56101e03660046140c0565b610478565b6040519081526020015b60405180910390f35b6101e56102063660046140fb565b6106c1565b6101cb6108cd565b34801561021f57600080fd5b506101cb61022e366004613ce1565b6108df565b6101e561024136600461419b565b610a11565b610259610254366004613d9f565b610c7d565b6040516101ef919061434a565b610279610274366004613adf565b61100a565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ef565b6101e56102ac3660046140c0565b6110dd565b6101e56102bf366004613eda565b611340565b6101cb6102d2366004614228565b6115f0565b3480156102e357600080fd5b506102797f000000000000000000000000000000000000000000000000000000000000000081565b34801561031757600080fd5b506101cb610326366004613d45565b6116b9565b34801561033757600080fd5b506101cb610346366004613bd2565b6117e6565b34801561035757600080fd5b506101cb610366366004613b34565b611a86565b34801561037757600080fd5b506101cb610386366004613b34565b611b0f565b6101e5610399366004613b76565b611b1f565b6101e56103ac3660046140fb565b611ca8565b3480156103bd57600080fd5b506101cb6103cc366004613d45565b611ce4565b6101cb6103df366004614085565b611d42565b3480156103f057600080fd5b506101cb6103ff366004613f9d565b612a14565b34801561041057600080fd5b506101cb61041f366004613f9d565b612bd2565b34801561043057600080fd5b506102797f000000000000000000000000000000000000000000000000000000000000000081565b34801561046457600080fd5b506101cb61047336600461416b565b612e5e565b60006104d261048a6020840184613aa5565b61049760608501856143f1565b60008181106104a8576104a861489a565b90506020028101906104ba919061455a565b6104c8906020810190613aa5565b8460200135612f0e565b60005b6104e260608401846143f1565b9050811015610648576105306104fb60608501856143f1565b8381811061050b5761050b61489a565b905060200281019061051d919061455a565b61052b906020810190613aa5565b61301c565b61053d60608401846143f1565b8281811061054d5761054d61489a565b905060200281019061055f919061455a565b61056d906020810190613aa5565b73ffffffffffffffffffffffffffffffffffffffff1663627dd56a61059560608601866143f1565b848181106105a5576105a561489a565b90506020028101906105b7919061455a565b6105c59060208101906144c1565b6040518363ffffffff1660e01b81526004016105e29291906143ca565b602060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106349190614152565b91508061064081614832565b9150506104d5565b5081604001358110156106bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f544f4f5f4c4954544c455f52454345495645440000000000000000000000000060448201526064015b60405180910390fd5b919050565b600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663f18d03cc61070f6080850160608601613aa5565b336107206060870160408801613aa5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529183166024830152909116604482015284356064820152608401600060405180830381600087803b15801561079d57600080fd5b505af11580156107b1573d6000803e3d6000fd5b506107c6925050506060830160408401613aa5565b73ffffffffffffffffffffffffffffffffffffffff1663627dd56a6107ee60808501856144c1565b6040518363ffffffff1660e01b815260040161080b9291906143ca565b602060405180830381600087803b15801561082557600080fd5b505af1158015610839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085d9190614152565b905081602001358110156106bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f544f4f5f4c4954544c455f52454345495645440000000000000000000000000060448201526064016106b3565b47156108dd576108dd33476131c0565b565b6108e88561301c565b6108f48533878761328a565b6040517faf8c09bf00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff87169063af8c09bf9061094b90879087906004016143ca565b602060405180830381600087803b15801561096557600080fd5b505af1158015610979573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099d9190614152565b905081811015610a09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f544f4f5f4c4954544c455f52454345495645440000000000000000000000000060448201526064016106b3565b505050505050565b6000805b82811015610bd557610a3284848381811061050b5761050b61489a565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055838382818110610a6e57610a6e61489a565b9050602002810190610a80919061455a565b610a8e906020810190613aa5565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055838382818110610ae557610ae561489a565b9050602002810190610af7919061455a565b610b05906020810190613aa5565b73ffffffffffffffffffffffffffffffffffffffff1663053da1c8858584818110610b3257610b3261489a565b9050602002810190610b44919061455a565b610b529060208101906144c1565b6040518363ffffffff1660e01b8152600401610b6f9291906143ca565b602060405180830381600087803b158015610b8957600080fd5b505af1158015610b9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc19190614152565b915080610bcd81614832565b915050610a15565b506000805460017fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092558154168117905583811015610c76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f544f4f5f4c4954544c455f52454345495645440000000000000000000000000060448201526064016106b3565b9392505050565b60608167ffffffffffffffff811115610c9857610c986148c9565b604051908082528060200260200182016040528015610ccb57816020015b6060815260200190600190039081610cb65790505b5090506000805b83811015611002576000610d3d868684818110610cf157610cf161489a565b9050602002810190610d0391906144c1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506133fb92505050565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f0f93d439000000000000000000000000000000000000000000000000000000001480610dd057507fffffffff0000000000000000000000000000000000000000000000000000000081167f9fa7449100000000000000000000000000000000000000000000000000000000145b15610e46578215610e3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f537761702063616c6c656420747769636500000000000000000000000000000060448201526064016106b3565b60019250610ef2565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f1e897afb000000000000000000000000000000000000000000000000000000001415610ef2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6573746564204261746368000000000000000000000000000000000000000060448201526064016106b3565b60008030888886818110610f0857610f0861489a565b9050602002810190610f1a91906144c1565b604051610f289291906142ee565b600060405180830381855af49150503d8060008114610f63576040519150601f19603f3d011682016040523d82523d6000602084013e610f68565b606091505b509150915081610fce57604481511015610f8157600080fd5b60048101905080806020019051810190610f9b9190613fd3565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b391906143de565b80868581518110610fe157610fe161489a565b60200260200101819052505050508080610ffa90614832565b915050610cd2565b505092915050565b6040517f250558dc00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063250558dc906110839087908790879060040161431a565b602060405180830381600087803b15801561109d57600080fd5b505af11580156110b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d59190613ac2565b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663f18d03cc6111286020850185613aa5565b3361113660608701876143f1565b60008181106111475761114761489a565b9050602002810190611159919061455a565b611167906020810190613aa5565b60405160e085901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff93841660048201529183166024830152909116604482015260208501356064820152608401600060405180830381600087803b1580156111e757600080fd5b505af11580156111fb573d6000803e3d6000fd5b5050505060005b61120f60608401846143f1565b9050811015610648576112286104fb60608501856143f1565b61123560608401846143f1565b828181106112455761124561489a565b9050602002810190611257919061455a565b611265906020810190613aa5565b73ffffffffffffffffffffffffffffffffffffffff1663627dd56a61128d60608601866143f1565b8481811061129d5761129d61489a565b90506020028101906112af919061455a565b6112bd9060208101906144c1565b6040518363ffffffff1660e01b81526004016112da9291906143ca565b602060405180830381600087803b1580156112f457600080fd5b505af1158015611308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132c9190614152565b91508061133881614832565b915050611202565b600061134b8561301c565b60005b86518110156114d4578681815181106113695761136961489a565b602002602001015160200151156113c4576113bf87828151811061138f5761138f61489a565b602002602001015160000151878984815181106113ae576113ae61489a565b602002602001015160400151612f0e565b6114c2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f18d03cc8883815181106114125761141261489a565b60200260200101516000015133898b86815181106114325761143261489a565b6020026020010151604001516040518563ffffffff1660e01b815260040161148f949392919073ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b600060405180830381600087803b1580156114a957600080fd5b505af11580156114bd573d6000803e3d6000fd5b505050505b806114cc81614832565b91505061134e565b506040517f7ba0e2e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861690637ba0e2e79061152990869086906004016143ca565b602060405180830381600087803b15801561154357600080fd5b505af1158015611557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157b9190614152565b9050838110156115e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4e4f545f454e4f5547485f4c49515549444954595f4d494e544544000000000060448201526064016106b3565b95945050505050565b6040517fc0a47c930000000000000000000000000000000000000000000000000000000081523360048201523060248201526001604482015260ff841660648201526084810183905260a481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063c0a47c939060c4015b600060405180830381600087803b15801561169c57600080fd5b505af11580156116b0573d6000803e3d6000fd5b50505050505050565b6040513360248201523060448201526064810186905260848101859052600160a482015260ff841660c482015260e48101839052610104810182905260009073ffffffffffffffffffffffffffffffffffffffff881690638fcbaf0c90610124015b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161176991906142fe565b6000604051808303816000865af19150503d80600081146117a6576040519150601f19603f3d011682016040523d82523d6000602084013e6117ab565b606091505b50509050806116b0576040517fb78cb0dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117ef8561301c565b6117fb8533878761328a565b6040517f2a07b6c700000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff871690632a07b6c79061185290879087906004016143ca565b600060405180830381600087803b15801561186c57600080fd5b505af1158015611880573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526118c69190810190613de1565b905060005b82518110156116b05760005b8251811015611a09578382815181106118f2576118f261489a565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff168382815181106119265761192661489a565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1614156119f7578382815181106119605761196061489a565b60200260200101516020015183828151811061197e5761197e61489a565b60200260200101516020015110156119f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f544f4f5f4c4954544c455f52454345495645440000000000000000000000000060448201526064016106b3565b611a09565b80611a0181614832565b9150506118d7565b82518110611a73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f494e434f52524543545f544f4b454e5f57495448445241574e0000000000000060448201526064016106b3565b5080611a7e81614832565b9150506118cb565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301523060248301528281166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401611682565b611b1a838284613402565b505050565b6000611b2a8561301c565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811633179091556001805473ffffffffffffffffffffffffffffffffffffffff88169216821790556040517f7ba0e2e7000000000000000000000000000000000000000000000000000000008152637ba0e2e790611bb490869086906004016143ca565b602060405180830381600087803b158015611bce57600080fd5b505af1158015611be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c069190614152565b6000805460017fffffffffffffffffffffffff00000000000000000000000000000000000000009182168117909255815416811790559050838110156110d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4e4f545f454e4f5547485f4c49515549444954595f4d494e544544000000000060448201526064016106b3565b6000611cd4611cbd6080840160608501613aa5565b611ccd6060850160408601613aa5565b8435612f0e565b6107c66060830160408401613aa5565b604051336024820152306044820152606481018690526084810185905260ff841660a482015260c4810183905260e4810182905260009073ffffffffffffffffffffffffffffffffffffffff88169063d505accf906101040161171b565b60005b611d4f82806143f1565b905081101561211b57611d6282806143f1565b82818110611d7257611d7261489a565b9050602002810190611d849190614526565b611d95906060810190604001613f63565b15611e4e57611e49611da783806143f1565b83818110611db757611db761489a565b9050602002810190611dc99190614526565b611dd7906020810190613aa5565b611de184806143f1565b84818110611df157611df161489a565b9050602002810190611e039190614526565b611e14906040810190602001613aa5565b611e1e85806143f1565b85818110611e2e57611e2e61489a565b9050602002810190611e409190614526565b60600135612f0e565b611fc7565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663f18d03cc611e9484806143f1565b84818110611ea457611ea461489a565b9050602002810190611eb69190614526565b611ec4906020810190613aa5565b33611ecf86806143f1565b86818110611edf57611edf61489a565b9050602002810190611ef19190614526565b611f02906040810190602001613aa5565b611f0c87806143f1565b87818110611f1c57611f1c61489a565b9050602002810190611f2e9190614526565b60405160e086901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff94851660048201529284166024840152921660448201526060909101356064820152608401600060405180830381600087803b158015611fae57600080fd5b505af1158015611fc2573d6000803e3d6000fd5b505050505b612007611fd483806143f1565b83818110611fe457611fe461489a565b9050602002810190611ff69190614526565b61052b906040810190602001613aa5565b61201182806143f1565b828181106120215761202161489a565b90506020028101906120339190614526565b612044906040810190602001613aa5565b73ffffffffffffffffffffffffffffffffffffffff1663627dd56a61206984806143f1565b848181106120795761207961489a565b905060200281019061208b9190614526565b6120999060808101906144c1565b6040518363ffffffff1660e01b81526004016120b69291906143ca565b602060405180830381600087803b1580156120d057600080fd5b505af11580156120e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121089190614152565b508061211381614832565b915050611d45565b5060005b61212c60208301836143f1565b905081101561256257600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663f7888aec61218060208601866143f1565b858181106121905761219061489a565b90506020028101906121a2919061458e565b6121b0906020810190613aa5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff909116600482015230602482015260440160206040518083038186803b15801561221a57600080fd5b505afa15801561222e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122529190614152565b905060006122626008600a6146fa565b61226f60208601866143f1565b8581811061227f5761227f61489a565b9050602002810190612291919061458e565b6122a29060608101906040016141fe565b6122b69067ffffffffffffffff16846147c5565b6122c0919061465e565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663f18d03cc61230b60208701876143f1565b8681811061231b5761231b61489a565b905060200281019061232d919061458e565b61233b906020810190613aa5565b3061234960208901896143f1565b888181106123595761235961489a565b905060200281019061236b919061458e565b61237c906040810190602001613aa5565b60405160e085901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff93841660048201529183166024830152909116604482015260648101849052608401600060405180830381600087803b1580156123f957600080fd5b505af115801561240d573d6000803e3d6000fd5b50612445925061242391505060208601866143f1565b858181106124335761243361489a565b9050602002810190611ff6919061458e565b61245260208501856143f1565b848181106124625761246261489a565b9050602002810190612474919061458e565b612485906040810190602001613aa5565b73ffffffffffffffffffffffffffffffffffffffff1663627dd56a6124ad60208701876143f1565b868181106124bd576124bd61489a565b90506020028101906124cf919061458e565b6124dd9060608101906144c1565b6040518363ffffffff1660e01b81526004016124fa9291906143ca565b602060405180830381600087803b15801561251457600080fd5b505af1158015612528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254c9190614152565b505050808061255a90614832565b91505061211f565b5060005b6125736040830183614459565b9050811015612a1057600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663f7888aec6125c76040860186614459565b858181106125d7576125d761489a565b6125ed9260206080909202019081019150613aa5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff909116600482015230602482015260440160206040518083038186803b15801561265757600080fd5b505afa15801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614152565b905061269e6040840184614459565b838181106126ae576126ae61489a565b90506080020160600135811015612721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f544f4f5f4c4954544c455f52454345495645440000000000000000000000000060448201526064016106b3565b61272e6040840184614459565b8381811061273e5761273e61489a565b90506080020160400160208101906127569190613f63565b156128c25773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166397da6d306127a46040860186614459565b858181106127b4576127b461489a565b6127ca9260206080909202019081019150613aa5565b306127d86040880188614459565b878181106127e8576127e861489a565b90506080020160200160208101906128009190613aa5565b60405160e085901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff938416600482015291831660248301529091166044820152600060648201526084810184905260a4016040805180830381600087803b15801561288357600080fd5b505af1158015612897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128bb91906141da565b50506129fd565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663f18d03cc61290b6040860186614459565b8581811061291b5761291b61489a565b6129319260206080909202019081019150613aa5565b3061293f6040880188614459565b8781811061294f5761294f61489a565b90506080020160200160208101906129679190613aa5565b60405160e085901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff93841660048201529183166024830152909116604482015260648101849052608401600060405180830381600087803b1580156129e457600080fd5b505af11580156129f8573d6000803e3d6000fd5b505050505b5080612a0881614832565b915050612566565b5050565b60015473ffffffffffffffffffffffffffffffffffffffff163314612a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f554e415554484f52495a45445f43414c4c4241434b000000000000000000000060448201526064016106b3565b6000612aa382840184614136565b9050806020015115612ae15780516000546040830151612adc929173ffffffffffffffffffffffffffffffffffffffff1690339061356b565b612ba2565b805160005460408084015190517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152918316602483015233604483015260648201527f00000000000000000000000000000000000000000000000000000000000000009091169063f18d03cc90608401600060405180830381600087803b158015612b8957600080fd5b505af1158015612b9d573d6000803e3d6000fd5b505050505b5050600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016600117905550565b60015473ffffffffffffffffffffffffffffffffffffffff163314612c53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f554e415554484f52495a45445f43414c4c4241434b000000000000000000000060448201526064016106b3565b6000612c6182840184613ea5565b905060005b8151811015612e2d57818181518110612c8157612c8161489a565b60200260200101516020015115612cfd57612cf8828281518110612ca757612ca761489a565b60200260200101516000015160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633858581518110612ce757612ce761489a565b60200260200101516040015161356b565b612e1b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f18d03cc838381518110612d4b57612d4b61489a565b60200260200101516000015160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633868681518110612d8b57612d8b61489a565b6020026020010151604001516040518563ffffffff1660e01b8152600401612de8949392919073ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b600060405180830381600087803b158015612e0257600080fd5b505af1158015612e16573d6000803e3d6000fd5b505050505b80612e2581614832565b915050612c66565b5050600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001660011790555050565b6000612e897f0000000000000000000000000000000000000000000000000000000000000000613674565b905082811015612ef5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e53554646494349454e545f5745544800000000000000000000000000000060448201526064016106b3565b8015611b1a57612f04816137d4565b611b1a82826131c0565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116906302b9446c90851615612f5b576000612f5d565b825b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff808816600483015233602483015286166044820152606481018590526000608482015260a40160408051808303818588803b158015612fdc57600080fd5b505af1158015612ff0573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061301591906141da565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff166131bd576040517fa4063dbc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a4063dbc9060240160206040518083038186803b1580156130d057600080fd5b505afa1580156130e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131089190613f80565b61316e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f494e56414c494420504f4f4c000000000000000000000000000000000000000060448201526064016106b3565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b50565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461321a576040519150601f19603f3d011682016040523d82523d6000602084013e61321f565b606091505b5050905080611b1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c45440000000000000000000000000060448201526064016106b3565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052915160009283929088169161332991906142fe565b6000604051808303816000865af19150503d8060008114613366576040519150601f19603f3d011682016040523d82523d6000602084013e61336b565b606091505b50915091508180156133955750805115806133955750808060200190518101906133959190613f80565b610a09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106b3565b6020015190565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052915160009283929087169161349991906142fe565b6000604051808303816000865af19150503d80600081146134d6576040519150601f19603f3d011682016040523d82523d6000602084013e6134db565b606091505b50915091508180156135055750805115806135055750808060200190518101906135059190613f80565b613015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c4544000000000000000000000000000000000060448201526064016106b3565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116906302b9446c908616156135b85760006135ba565b825b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff8089166004830152808816602483015286166044820152606481018590526000608482015260a40160408051808303818588803b15801561363b57600080fd5b505af115801561364f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a0991906141da565b604080513060248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905290516000918291829173ffffffffffffffffffffffffffffffffffffffff86169161370691906142fe565b600060405180830381855afa9150503d8060008114613741576040519150601f19603f3d011682016040523d82523d6000602084013e613746565b606091505b509150915081801561375a57506020815110155b6137c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f42414c414e43455f4f465f4641494c454400000000000000000000000000000060448201526064016106b3565b808060200190518101906110d59190614152565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d8360405160240161382591815260200190565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161387391906142fe565b6000604051808303816000865af19150503d80600081146138b0576040519150601f19603f3d011682016040523d82523d6000602084013e6138b5565b606091505b5050905080612a10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f57495448445241575f46524f4d5f574554485f4641494c45440000000000000060448201526064016106b3565b60008083601f84011261393257600080fd5b50813567ffffffffffffffff81111561394a57600080fd5b6020830191508360208260051b850101111561396557600080fd5b9250929050565b600082601f83011261397d57600080fd5b8135602061399261398d8361463a565b6145eb565b828152818101908583016060808602880185018910156139b157600080fd5b60005b868110156139d8576139c68a84613a28565b855293850193918101916001016139b4565b509198975050505050505050565b60008083601f8401126139f857600080fd5b50813567ffffffffffffffff811115613a1057600080fd5b60208301915083602082850101111561396557600080fd5b600060608284031215613a3a57600080fd5b6040516060810181811067ffffffffffffffff82111715613a5d57613a5d6148c9565b6040529050808235613a6e816148f8565b81526020830135613a7e8161491a565b6020820152604092830135920191909152919050565b803560ff811681146106bc57600080fd5b600060208284031215613ab757600080fd5b8135610c76816148f8565b600060208284031215613ad457600080fd5b8151610c76816148f8565b600080600060408486031215613af457600080fd5b8335613aff816148f8565b9250602084013567ffffffffffffffff811115613b1b57600080fd5b613b27868287016139e6565b9497909650939450505050565b600080600060608486031215613b4957600080fd5b8335613b54816148f8565b9250602084013591506040840135613b6b816148f8565b809150509250925092565b60008060008060608587031215613b8c57600080fd5b8435613b97816148f8565b935060208501359250604085013567ffffffffffffffff811115613bba57600080fd5b613bc6878288016139e6565b95989497509550505050565b600080600080600060808688031215613bea57600080fd5b8535613bf5816148f8565b9450602086810135945060408088013567ffffffffffffffff80821115613c1b57600080fd5b613c278b838c016139e6565b909750955060608a0135915080821115613c4057600080fd5b508801601f81018a13613c5257600080fd5b8035613c6061398d8261463a565b8082825285820191508584018d878560061b8701011115613c8057600080fd5b600094505b83851015613ccd5785818f031215613c9c57600080fd5b613ca46145c2565b8135613caf816148f8565b81528188013588820152835260019490940193918601918501613c85565b508096505050505050509295509295909350565b600080600080600060808688031215613cf957600080fd5b8535613d04816148f8565b945060208601359350604086013567ffffffffffffffff811115613d2757600080fd5b613d33888289016139e6565b96999598509660600135949350505050565b60008060008060008060c08789031215613d5e57600080fd5b8635613d69816148f8565b95506020870135945060408701359350613d8560608801613a94565b92506080870135915060a087013590509295509295509295565b60008060208385031215613db257600080fd5b823567ffffffffffffffff811115613dc957600080fd5b613dd585828601613920565b90969095509350505050565b60006020808385031215613df457600080fd5b825167ffffffffffffffff811115613e0b57600080fd5b8301601f81018513613e1c57600080fd5b8051613e2a61398d8261463a565b80828252848201915084840188868560061b8701011115613e4a57600080fd5b60009450845b84811015613e9757604080838c031215613e68578687fd5b613e706145c2565b8351613e7b816148f8565b8152838901518982015285529387019390910190600101613e50565b509098975050505050505050565b600060208284031215613eb757600080fd5b813567ffffffffffffffff811115613ece57600080fd5b6110d58482850161396c565b600080600080600060808688031215613ef257600080fd5b853567ffffffffffffffff80821115613f0a57600080fd5b613f1689838a0161396c565b965060208801359150613f28826148f8565b9094506040870135935060608701359080821115613f4557600080fd5b50613f52888289016139e6565b969995985093965092949392505050565b600060208284031215613f7557600080fd5b8135610c768161491a565b600060208284031215613f9257600080fd5b8151610c768161491a565b60008060208385031215613fb057600080fd5b823567ffffffffffffffff811115613fc757600080fd5b613dd5858286016139e6565b600060208284031215613fe557600080fd5b815167ffffffffffffffff80821115613ffd57600080fd5b818401915084601f83011261401157600080fd5b815181811115614023576140236148c9565b61405460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016145eb565b915080825285602082850101111561406b57600080fd5b61407c816020840160208601614802565b50949350505050565b60006020828403121561409757600080fd5b813567ffffffffffffffff8111156140ae57600080fd5b820160608185031215610c7657600080fd5b6000602082840312156140d257600080fd5b813567ffffffffffffffff8111156140e957600080fd5b820160808185031215610c7657600080fd5b60006020828403121561410d57600080fd5b813567ffffffffffffffff81111561412457600080fd5b820160a08185031215610c7657600080fd5b60006060828403121561414857600080fd5b610c768383613a28565b60006020828403121561416457600080fd5b5051919050565b6000806040838503121561417e57600080fd5b823591506020830135614190816148f8565b809150509250929050565b6000806000604084860312156141b057600080fd5b83359250602084013567ffffffffffffffff8111156141ce57600080fd5b613b2786828701613920565b600080604083850312156141ed57600080fd5b505080516020909101519092909150565b60006020828403121561421057600080fd5b813567ffffffffffffffff81168114610c7657600080fd5b60008060006060848603121561423d57600080fd5b61424684613a94565b95602085013595506040909401359392505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526142bc816020860160208601614802565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8183823760009101908152919050565b60008251614310818460208701614802565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff841681526040602082015260006115e760408301848661425b565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156143bd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526143ab8583516142a4565b94509285019290850190600101614371565b5092979650505050505050565b6020815260006110d560208301848661425b565b602081526000610c7660208301846142a4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261442657600080fd5b83018035915067ffffffffffffffff82111561444157600080fd5b6020019150600581901b360382131561396557600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261448e57600080fd5b83018035915067ffffffffffffffff8211156144a957600080fd5b6020019150600781901b360382131561396557600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126144f657600080fd5b83018035915067ffffffffffffffff82111561451157600080fd5b60200191503681900382131561396557600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6183360301811261431057600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261431057600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261431057600080fd5b6040805190810167ffffffffffffffff811182821017156145e5576145e56148c9565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614632576146326148c9565b604052919050565b600067ffffffffffffffff821115614654576146546148c9565b5060051b60200190565b600082614694577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600181815b808511156146f257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156146d8576146d861486b565b808516156146e557918102915b93841c939080029061469e565b509250929050565b6000610c7660ff841683600082614713575060016147bf565b81614720575060006147bf565b816001811461473657600281146147405761475c565b60019150506147bf565b60ff8411156147515761475161486b565b50506001821b6147bf565b5060208310610133831016604e8410600b841016171561477f575081810a6147bf565b6147898383614699565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156147bb576147bb61486b565b0290505b92915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156147fd576147fd61486b565b500290565b60005b8381101561481d578181015183820152602001614805565b8381111561482c576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156148645761486461486b565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146131bd57600080fd5b80151581146131bd57600080fdfea264697066735822122021c47f6b996d4f88de9302c770b23b87e30d108ff2cc0058fe12d88f80c78ddc64736f6c63430008070033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x4B4D CODESIZE SUB DUP1 PUSH3 0x4B4D DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0xC4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP4 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xC0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x577268D9 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD DUP5 SWAP2 DUP5 SWAP2 DUP5 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xAEE4D1B2 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0xB4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP PUSH3 0x131 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0xDA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH3 0xE7 DUP2 PUSH3 0x118 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0xFA DUP2 PUSH3 0x118 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x10D DUP2 PUSH3 0x118 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x12E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x495E PUSH3 0x1EF PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x1A1 ADD MSTORE DUP2 DUP2 PUSH2 0x2E65 ADD MSTORE PUSH2 0x37D8 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x436 ADD MSTORE DUP2 DUP2 PUSH2 0x104A ADD MSTORE PUSH2 0x308E ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x2E9 ADD MSTORE DUP2 DUP2 PUSH2 0x6DA ADD MSTORE DUP2 DUP2 PUSH2 0x10F6 ADD MSTORE DUP2 DUP2 PUSH2 0x13C6 ADD MSTORE DUP2 DUP2 PUSH2 0x1642 ADD MSTORE DUP2 DUP2 PUSH2 0x1AE0 ADD MSTORE DUP2 DUP2 PUSH2 0x1E65 ADD MSTORE DUP2 DUP2 PUSH2 0x214E ADD MSTORE DUP2 DUP2 PUSH2 0x22D9 ADD MSTORE DUP2 DUP2 PUSH2 0x2595 ADD MSTORE DUP2 DUP2 PUSH2 0x2772 ADD MSTORE DUP2 DUP2 PUSH2 0x28D9 ADD MSTORE DUP2 DUP2 PUSH2 0x2B43 ADD MSTORE DUP2 DUP2 PUSH2 0x2CFF ADD MSTORE DUP2 DUP2 PUSH2 0x2F25 ADD MSTORE PUSH2 0x3582 ADD MSTORE PUSH2 0x495E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x184 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x77631981 GT PUSH2 0xD6 JUMPI DUP1 PUSH4 0xA9B62C23 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xCED10B49 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xCED10B49 EQ PUSH2 0x404 JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x424 JUMPI DUP1 PUSH4 0xE16D9CE5 EQ PUSH2 0x458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA9B62C23 EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0xB96C5C0E EQ PUSH2 0x3D1 JUMPI DUP1 PUSH4 0xBD50C7B1 EQ PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x94AE4AB2 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x94AE4AB2 EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0x98A691DE EQ PUSH2 0x38B JUMPI DUP1 PUSH4 0x9FA74491 EQ PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x77631981 EQ PUSH2 0x30B JUMPI DUP1 PUSH4 0x783312D9 EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0x9128EFDA EQ PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1E897AFB GT PUSH2 0x138 JUMPI DUP1 PUSH4 0x2CFCB94F GT PUSH2 0x112 JUMPI DUP1 PUSH4 0x2CFCB94F EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x403335A8 EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x2D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1E897AFB EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x250558DC EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0x2C0D9A01 EQ PUSH2 0x29E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x12210E8A GT PUSH2 0x169 JUMPI DUP1 PUSH4 0x12210E8A EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x1AA349A8 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x1AB5D6C8 EQ PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB0D1B1E EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xF93D439 EQ PUSH2 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x1CD JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E5 PUSH2 0x1E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x40C0 JUMP JUMPDEST PUSH2 0x478 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E5 PUSH2 0x206 CALLDATASIZE PUSH1 0x4 PUSH2 0x40FB JUMP JUMPDEST PUSH2 0x6C1 JUMP JUMPDEST PUSH2 0x1CB PUSH2 0x8CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x22E CALLDATASIZE PUSH1 0x4 PUSH2 0x3CE1 JUMP JUMPDEST PUSH2 0x8DF JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x241 CALLDATASIZE PUSH1 0x4 PUSH2 0x419B JUMP JUMPDEST PUSH2 0xA11 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D9F JUMP JUMPDEST PUSH2 0xC7D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1EF SWAP2 SWAP1 PUSH2 0x434A JUMP JUMPDEST PUSH2 0x279 PUSH2 0x274 CALLDATASIZE PUSH1 0x4 PUSH2 0x3ADF JUMP JUMPDEST PUSH2 0x100A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1EF JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x2AC CALLDATASIZE PUSH1 0x4 PUSH2 0x40C0 JUMP JUMPDEST PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x2BF CALLDATASIZE PUSH1 0x4 PUSH2 0x3EDA JUMP JUMPDEST PUSH2 0x1340 JUMP JUMPDEST PUSH2 0x1CB PUSH2 0x2D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4228 JUMP JUMPDEST PUSH2 0x15F0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x326 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D45 JUMP JUMPDEST PUSH2 0x16B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x346 CALLDATASIZE PUSH1 0x4 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x17E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x357 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x366 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B34 JUMP JUMPDEST PUSH2 0x1A86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x386 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B34 JUMP JUMPDEST PUSH2 0x1B0F JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x399 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B76 JUMP JUMPDEST PUSH2 0x1B1F JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x3AC CALLDATASIZE PUSH1 0x4 PUSH2 0x40FB JUMP JUMPDEST PUSH2 0x1CA8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x3CC CALLDATASIZE PUSH1 0x4 PUSH2 0x3D45 JUMP JUMPDEST PUSH2 0x1CE4 JUMP JUMPDEST PUSH2 0x1CB PUSH2 0x3DF CALLDATASIZE PUSH1 0x4 PUSH2 0x4085 JUMP JUMPDEST PUSH2 0x1D42 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x3FF CALLDATASIZE PUSH1 0x4 PUSH2 0x3F9D JUMP JUMPDEST PUSH2 0x2A14 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x41F CALLDATASIZE PUSH1 0x4 PUSH2 0x3F9D JUMP JUMPDEST PUSH2 0x2BD2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x464 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x473 CALLDATASIZE PUSH1 0x4 PUSH2 0x416B JUMP JUMPDEST PUSH2 0x2E5E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D2 PUSH2 0x48A PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x3AA5 JUMP JUMPDEST PUSH2 0x497 PUSH1 0x60 DUP6 ADD DUP6 PUSH2 0x43F1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x4A8 JUMPI PUSH2 0x4A8 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x4BA SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0x4C8 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST DUP5 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2F0E JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH2 0x4E2 PUSH1 0x60 DUP5 ADD DUP5 PUSH2 0x43F1 JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x648 JUMPI PUSH2 0x530 PUSH2 0x4FB PUSH1 0x60 DUP6 ADD DUP6 PUSH2 0x43F1 JUMP JUMPDEST DUP4 DUP2 DUP2 LT PUSH2 0x50B JUMPI PUSH2 0x50B PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x51D SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0x52B SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH2 0x301C JUMP JUMPDEST PUSH2 0x53D PUSH1 0x60 DUP5 ADD DUP5 PUSH2 0x43F1 JUMP JUMPDEST DUP3 DUP2 DUP2 LT PUSH2 0x54D JUMPI PUSH2 0x54D PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x55F SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0x56D SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x627DD56A PUSH2 0x595 PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0x43F1 JUMP JUMPDEST DUP5 DUP2 DUP2 LT PUSH2 0x5A5 JUMPI PUSH2 0x5A5 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x5B7 SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0x5C5 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x44C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E2 SWAP3 SWAP2 SWAP1 PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x610 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x634 SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x640 DUP2 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4D5 JUMP JUMPDEST POP DUP2 PUSH1 0x40 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4F5F4C4954544C455F524543454956454400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xF18D03CC PUSH2 0x70F PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0x3AA5 JUMP JUMPDEST CALLER PUSH2 0x720 PUSH1 0x60 DUP8 ADD PUSH1 0x40 DUP9 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP7 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP4 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x44 DUP3 ADD MSTORE DUP5 CALLDATALOAD PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x7C6 SWAP3 POP POP POP PUSH1 0x60 DUP4 ADD PUSH1 0x40 DUP5 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x627DD56A PUSH2 0x7EE PUSH1 0x80 DUP6 ADD DUP6 PUSH2 0x44C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x80B SWAP3 SWAP2 SWAP1 PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x825 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x839 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x85D SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x20 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4F5F4C4954544C455F524543454956454400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST SELFBALANCE ISZERO PUSH2 0x8DD JUMPI PUSH2 0x8DD CALLER SELFBALANCE PUSH2 0x31C0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x8E8 DUP6 PUSH2 0x301C JUMP JUMPDEST PUSH2 0x8F4 DUP6 CALLER DUP8 DUP8 PUSH2 0x328A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xAF8C09BF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 PUSH4 0xAF8C09BF SWAP1 PUSH2 0x94B SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x965 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x979 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x99D SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xA09 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4F5F4C4954544C455F524543454956454400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xBD5 JUMPI PUSH2 0xA32 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x50B JUMPI PUSH2 0x50B PUSH2 0x489A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND CALLER OR SWAP1 SSTORE DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0xA6E JUMPI PUSH2 0xA6E PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xA80 SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0xA8E SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0xAE5 JUMPI PUSH2 0xAE5 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xAF7 SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0xB05 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53DA1C8 DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0xB32 JUMPI PUSH2 0xB32 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xB44 SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0xB52 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x44C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB6F SWAP3 SWAP2 SWAP1 PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB9D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBC1 SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0xBCD DUP2 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xA15 JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE DUP2 SLOAD AND DUP2 OR SWAP1 SSTORE DUP4 DUP2 LT ISZERO PUSH2 0xC76 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4F5F4C4954544C455F524543454956454400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC98 JUMPI PUSH2 0xC98 PUSH2 0x48C9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xCCB JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xCB6 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1002 JUMPI PUSH1 0x0 PUSH2 0xD3D DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0xCF1 JUMPI PUSH2 0xCF1 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xD03 SWAP2 SWAP1 PUSH2 0x44C1 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x33FB SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF93D43900000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xDD0 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x9FA7449100000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0xE46 JUMPI DUP3 ISZERO PUSH2 0xE3D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537761702063616C6C6564207477696365000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x1 SWAP3 POP PUSH2 0xEF2 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1E897AFB00000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xEF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E65737465642042617463680000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x0 DUP1 ADDRESS DUP9 DUP9 DUP7 DUP2 DUP2 LT PUSH2 0xF08 JUMPI PUSH2 0xF08 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xF1A SWAP2 SWAP1 PUSH2 0x44C1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF28 SWAP3 SWAP2 SWAP1 PUSH2 0x42EE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xF63 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF68 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xFCE JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0xF81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xF9B SWAP2 SWAP1 PUSH2 0x3FD3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6B3 SWAP2 SWAP1 PUSH2 0x43DE JUMP JUMPDEST DUP1 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xFE1 JUMPI PUSH2 0xFE1 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP POP DUP1 DUP1 PUSH2 0xFFA SWAP1 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xCD2 JUMP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x250558DC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x250558DC SWAP1 PUSH2 0x1083 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x431A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x109D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x10D5 SWAP2 SWAP1 PUSH2 0x3AC2 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xF18D03CC PUSH2 0x1128 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x3AA5 JUMP JUMPDEST CALLER PUSH2 0x1136 PUSH1 0x60 DUP8 ADD DUP8 PUSH2 0x43F1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1147 JUMPI PUSH2 0x1147 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1159 SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0x1167 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP4 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 JUMPDEST PUSH2 0x120F PUSH1 0x60 DUP5 ADD DUP5 PUSH2 0x43F1 JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x648 JUMPI PUSH2 0x1228 PUSH2 0x4FB PUSH1 0x60 DUP6 ADD DUP6 PUSH2 0x43F1 JUMP JUMPDEST PUSH2 0x1235 PUSH1 0x60 DUP5 ADD DUP5 PUSH2 0x43F1 JUMP JUMPDEST DUP3 DUP2 DUP2 LT PUSH2 0x1245 JUMPI PUSH2 0x1245 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1257 SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0x1265 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x627DD56A PUSH2 0x128D PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0x43F1 JUMP JUMPDEST DUP5 DUP2 DUP2 LT PUSH2 0x129D JUMPI PUSH2 0x129D PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x12AF SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0x12BD SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x44C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12DA SWAP3 SWAP2 SWAP1 PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1308 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x132C SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x1338 DUP2 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1202 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x134B DUP6 PUSH2 0x301C JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x14D4 JUMPI DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1369 JUMPI PUSH2 0x1369 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x13C4 JUMPI PUSH2 0x13BF DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x138F JUMPI PUSH2 0x138F PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP8 DUP10 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x13AE JUMPI PUSH2 0x13AE PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x2F0E JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF18D03CC DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1412 JUMPI PUSH2 0x1412 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD CALLER DUP10 DUP12 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x1432 JUMPI PUSH2 0x1432 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148F SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 DUP5 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP3 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14BD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP1 PUSH2 0x14CC DUP2 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x134E JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x7BA0E2E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH4 0x7BA0E2E7 SWAP1 PUSH2 0x1529 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1543 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1557 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x157B SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x15E7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F454E4F5547485F4C49515549444954595F4D494E5445440000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC0A47C9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0xFF DUP5 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xC0A47C93 SWAP1 PUSH1 0xC4 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x169C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xFF DUP5 AND PUSH1 0xC4 DUP3 ADD MSTORE PUSH1 0xE4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH2 0x104 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0x8FCBAF0C SWAP1 PUSH2 0x124 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x1769 SWAP2 SWAP1 PUSH2 0x42FE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x17A6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x17AB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x16B0 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB78CB0DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x17EF DUP6 PUSH2 0x301C JUMP JUMPDEST PUSH2 0x17FB DUP6 CALLER DUP8 DUP8 PUSH2 0x328A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2A07B6C700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 PUSH4 0x2A07B6C7 SWAP1 PUSH2 0x1852 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x186C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1880 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x18C6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3DE1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x16B0 JUMPI PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1A09 JUMPI DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x18F2 JUMPI PUSH2 0x18F2 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1926 JUMPI PUSH2 0x1926 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x19F7 JUMPI DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1960 JUMPI PUSH2 0x1960 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x197E JUMPI PUSH2 0x197E PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD LT ISZERO PUSH2 0x19F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4F5F4C4954544C455F524543454956454400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH2 0x1A09 JUMP JUMPDEST DUP1 PUSH2 0x1A01 DUP2 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x18D7 JUMP JUMPDEST DUP3 MLOAD DUP2 LT PUSH2 0x1A73 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E434F52524543545F544F4B454E5F57495448445241574E00000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST POP DUP1 PUSH2 0x1A7E DUP2 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x18CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP3 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH2 0x1682 JUMP JUMPDEST PUSH2 0x1B1A DUP4 DUP3 DUP5 PUSH2 0x3402 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B2A DUP6 PUSH2 0x301C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND CALLER OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP3 AND DUP3 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x7BA0E2E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH4 0x7BA0E2E7 SWAP1 PUSH2 0x1BB4 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BE2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C06 SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE DUP2 SLOAD AND DUP2 OR SWAP1 SSTORE SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x10D5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F454E4F5547485F4C49515549444954595F4D494E5445440000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CD4 PUSH2 0x1CBD PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH2 0x1CCD PUSH1 0x60 DUP6 ADD PUSH1 0x40 DUP7 ADD PUSH2 0x3AA5 JUMP JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2F0E JUMP JUMPDEST PUSH2 0x7C6 PUSH1 0x60 DUP4 ADD PUSH1 0x40 DUP5 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xFF DUP5 AND PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xC4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xE4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0x104 ADD PUSH2 0x171B JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH2 0x1D4F DUP3 DUP1 PUSH2 0x43F1 JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x211B JUMPI PUSH2 0x1D62 DUP3 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP3 DUP2 DUP2 LT PUSH2 0x1D72 JUMPI PUSH2 0x1D72 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1D84 SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH2 0x1D95 SWAP1 PUSH1 0x60 DUP2 ADD SWAP1 PUSH1 0x40 ADD PUSH2 0x3F63 JUMP JUMPDEST ISZERO PUSH2 0x1E4E JUMPI PUSH2 0x1E49 PUSH2 0x1DA7 DUP4 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP4 DUP2 DUP2 LT PUSH2 0x1DB7 JUMPI PUSH2 0x1DB7 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1DC9 SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH2 0x1DD7 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH2 0x1DE1 DUP5 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP5 DUP2 DUP2 LT PUSH2 0x1DF1 JUMPI PUSH2 0x1DF1 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1E03 SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH2 0x1E14 SWAP1 PUSH1 0x40 DUP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH2 0x1E1E DUP6 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x1E2E JUMPI PUSH2 0x1E2E PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1E40 SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x2F0E JUMP JUMPDEST PUSH2 0x1FC7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xF18D03CC PUSH2 0x1E94 DUP5 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP5 DUP2 DUP2 LT PUSH2 0x1EA4 JUMPI PUSH2 0x1EA4 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1EB6 SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH2 0x1EC4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST CALLER PUSH2 0x1ECF DUP7 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP7 DUP2 DUP2 LT PUSH2 0x1EDF JUMPI PUSH2 0x1EDF PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1EF1 SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH2 0x1F02 SWAP1 PUSH1 0x40 DUP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH2 0x1F0C DUP8 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP8 DUP2 DUP2 LT PUSH2 0x1F1C JUMPI PUSH2 0x1F1C PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1F2E SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP7 SWAP1 SHL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x24 DUP5 ADD MSTORE SWAP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x60 SWAP1 SWAP2 ADD CALLDATALOAD PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FC2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x2007 PUSH2 0x1FD4 DUP4 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP4 DUP2 DUP2 LT PUSH2 0x1FE4 JUMPI PUSH2 0x1FE4 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1FF6 SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH2 0x52B SWAP1 PUSH1 0x40 DUP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH2 0x2011 DUP3 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP3 DUP2 DUP2 LT PUSH2 0x2021 JUMPI PUSH2 0x2021 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x2033 SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH2 0x2044 SWAP1 PUSH1 0x40 DUP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x627DD56A PUSH2 0x2069 DUP5 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP5 DUP2 DUP2 LT PUSH2 0x2079 JUMPI PUSH2 0x2079 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x208B SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH2 0x2099 SWAP1 PUSH1 0x80 DUP2 ADD SWAP1 PUSH2 0x44C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x20B6 SWAP3 SWAP2 SWAP1 PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2108 SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST POP DUP1 PUSH2 0x2113 DUP2 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1D45 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST PUSH2 0x212C PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x43F1 JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x2562 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xF7888AEC PUSH2 0x2180 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x43F1 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x2190 JUMPI PUSH2 0x2190 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x21A2 SWAP2 SWAP1 PUSH2 0x458E JUMP JUMPDEST PUSH2 0x21B0 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x221A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x222E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2252 SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2262 PUSH1 0x8 PUSH1 0xA PUSH2 0x46FA JUMP JUMPDEST PUSH2 0x226F PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x43F1 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x227F JUMPI PUSH2 0x227F PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x2291 SWAP2 SWAP1 PUSH2 0x458E JUMP JUMPDEST PUSH2 0x22A2 SWAP1 PUSH1 0x60 DUP2 ADD SWAP1 PUSH1 0x40 ADD PUSH2 0x41FE JUMP JUMPDEST PUSH2 0x22B6 SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP5 PUSH2 0x47C5 JUMP JUMPDEST PUSH2 0x22C0 SWAP2 SWAP1 PUSH2 0x465E JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xF18D03CC PUSH2 0x230B PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x43F1 JUMP JUMPDEST DUP7 DUP2 DUP2 LT PUSH2 0x231B JUMPI PUSH2 0x231B PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x232D SWAP2 SWAP1 PUSH2 0x458E JUMP JUMPDEST PUSH2 0x233B SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST ADDRESS PUSH2 0x2349 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x43F1 JUMP JUMPDEST DUP9 DUP2 DUP2 LT PUSH2 0x2359 JUMPI PUSH2 0x2359 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x236B SWAP2 SWAP1 PUSH2 0x458E JUMP JUMPDEST PUSH2 0x237C SWAP1 PUSH1 0x40 DUP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP4 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x240D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x2445 SWAP3 POP PUSH2 0x2423 SWAP2 POP POP PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x43F1 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x2433 JUMPI PUSH2 0x2433 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1FF6 SWAP2 SWAP1 PUSH2 0x458E JUMP JUMPDEST PUSH2 0x2452 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x43F1 JUMP JUMPDEST DUP5 DUP2 DUP2 LT PUSH2 0x2462 JUMPI PUSH2 0x2462 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x2474 SWAP2 SWAP1 PUSH2 0x458E JUMP JUMPDEST PUSH2 0x2485 SWAP1 PUSH1 0x40 DUP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x627DD56A PUSH2 0x24AD PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x43F1 JUMP JUMPDEST DUP7 DUP2 DUP2 LT PUSH2 0x24BD JUMPI PUSH2 0x24BD PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x24CF SWAP2 SWAP1 PUSH2 0x458E JUMP JUMPDEST PUSH2 0x24DD SWAP1 PUSH1 0x60 DUP2 ADD SWAP1 PUSH2 0x44C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24FA SWAP3 SWAP2 SWAP1 PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2514 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2528 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x254C SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST POP POP POP DUP1 DUP1 PUSH2 0x255A SWAP1 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x211F JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST PUSH2 0x2573 PUSH1 0x40 DUP4 ADD DUP4 PUSH2 0x4459 JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x2A10 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xF7888AEC PUSH2 0x25C7 PUSH1 0x40 DUP7 ADD DUP7 PUSH2 0x4459 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x25D7 JUMPI PUSH2 0x25D7 PUSH2 0x489A JUMP JUMPDEST PUSH2 0x25ED SWAP3 PUSH1 0x20 PUSH1 0x80 SWAP1 SWAP3 MUL ADD SWAP1 DUP2 ADD SWAP2 POP PUSH2 0x3AA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2657 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x266B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x268F SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST SWAP1 POP PUSH2 0x269E PUSH1 0x40 DUP5 ADD DUP5 PUSH2 0x4459 JUMP JUMPDEST DUP4 DUP2 DUP2 LT PUSH2 0x26AE JUMPI PUSH2 0x26AE PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x80 MUL ADD PUSH1 0x60 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x2721 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4F5F4C4954544C455F524543454956454400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH2 0x272E PUSH1 0x40 DUP5 ADD DUP5 PUSH2 0x4459 JUMP JUMPDEST DUP4 DUP2 DUP2 LT PUSH2 0x273E JUMPI PUSH2 0x273E PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x80 MUL ADD PUSH1 0x40 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2756 SWAP2 SWAP1 PUSH2 0x3F63 JUMP JUMPDEST ISZERO PUSH2 0x28C2 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0x97DA6D30 PUSH2 0x27A4 PUSH1 0x40 DUP7 ADD DUP7 PUSH2 0x4459 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x27B4 JUMPI PUSH2 0x27B4 PUSH2 0x489A JUMP JUMPDEST PUSH2 0x27CA SWAP3 PUSH1 0x20 PUSH1 0x80 SWAP1 SWAP3 MUL ADD SWAP1 DUP2 ADD SWAP2 POP PUSH2 0x3AA5 JUMP JUMPDEST ADDRESS PUSH2 0x27D8 PUSH1 0x40 DUP9 ADD DUP9 PUSH2 0x4459 JUMP JUMPDEST DUP8 DUP2 DUP2 LT PUSH2 0x27E8 JUMPI PUSH2 0x27E8 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x80 MUL ADD PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2800 SWAP2 SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP4 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2883 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2897 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x28BB SWAP2 SWAP1 PUSH2 0x41DA JUMP JUMPDEST POP POP PUSH2 0x29FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xF18D03CC PUSH2 0x290B PUSH1 0x40 DUP7 ADD DUP7 PUSH2 0x4459 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x291B JUMPI PUSH2 0x291B PUSH2 0x489A JUMP JUMPDEST PUSH2 0x2931 SWAP3 PUSH1 0x20 PUSH1 0x80 SWAP1 SWAP3 MUL ADD SWAP1 DUP2 ADD SWAP2 POP PUSH2 0x3AA5 JUMP JUMPDEST ADDRESS PUSH2 0x293F PUSH1 0x40 DUP9 ADD DUP9 PUSH2 0x4459 JUMP JUMPDEST DUP8 DUP2 DUP2 LT PUSH2 0x294F JUMPI PUSH2 0x294F PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x80 MUL ADD PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2967 SWAP2 SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP4 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x29F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP DUP1 PUSH2 0x2A08 DUP2 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2566 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2A95 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x554E415554484F52495A45445F43414C4C4241434B0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AA3 DUP3 DUP5 ADD DUP5 PUSH2 0x4136 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x2AE1 JUMPI DUP1 MLOAD PUSH1 0x0 SLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x2ADC SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 CALLER SWAP1 PUSH2 0x356B JUMP JUMPDEST PUSH2 0x2BA2 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 DUP5 ADD MLOAD SWAP1 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP4 AND PUSH1 0x24 DUP4 ADD MSTORE CALLER PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B9D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2C53 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x554E415554484F52495A45445F43414C4C4241434B0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C61 DUP3 DUP5 ADD DUP5 PUSH2 0x3EA5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x2E2D JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2C81 JUMPI PUSH2 0x2C81 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x2CFD JUMPI PUSH2 0x2CF8 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2CA7 JUMPI PUSH2 0x2CA7 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2CE7 JUMPI PUSH2 0x2CE7 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x356B JUMP JUMPDEST PUSH2 0x2E1B JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF18D03CC DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2D4B JUMPI PUSH2 0x2D4B PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x2D8B JUMPI PUSH2 0x2D8B PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2DE8 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 DUP5 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP3 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP1 PUSH2 0x2E25 DUP2 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2C66 JUMP JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E89 PUSH32 0x0 PUSH2 0x3674 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x2EF5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F57455448000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1B1A JUMPI PUSH2 0x2F04 DUP2 PUSH2 0x37D4 JUMP JUMPDEST PUSH2 0x1B1A DUP3 DUP3 PUSH2 0x31C0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND SWAP1 PUSH4 0x2B9446C SWAP1 DUP6 AND ISZERO PUSH2 0x2F5B JUMPI PUSH1 0x0 PUSH2 0x2F5D JUMP JUMPDEST DUP3 JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE DUP7 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2FF0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3015 SWAP2 SWAP1 PUSH2 0x41DA JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x31BD JUMPI PUSH1 0x40 MLOAD PUSH32 0xA4063DBC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xA4063DBC SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x30E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3108 SWAP2 SWAP1 PUSH2 0x3F80 JUMP JUMPDEST PUSH2 0x316E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C494420504F4F4C0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x321A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x321F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1B1A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4554485F5452414E534645525F4641494C454400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP9 AND SWAP2 PUSH2 0x3329 SWAP2 SWAP1 PUSH2 0x42FE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3366 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x336B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3395 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3395 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3395 SWAP2 SWAP1 PUSH2 0x3F80 JUMP JUMPDEST PUSH2 0xA09 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F46524F4D5F4641494C4544000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP8 AND SWAP2 PUSH2 0x3499 SWAP2 SWAP1 PUSH2 0x42FE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x34D6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x34DB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3505 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3505 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3505 SWAP2 SWAP1 PUSH2 0x3F80 JUMP JUMPDEST PUSH2 0x3015 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND SWAP1 PUSH4 0x2B9446C SWAP1 DUP7 AND ISZERO PUSH2 0x35B8 JUMPI PUSH1 0x0 PUSH2 0x35BA JUMP JUMPDEST DUP3 JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP9 AND PUSH1 0x24 DUP4 ADD MSTORE DUP7 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x363B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x364F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA09 SWAP2 SWAP1 PUSH2 0x41DA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD ADDRESS PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP2 PUSH2 0x3706 SWAP2 SWAP1 PUSH2 0x42FE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3741 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3746 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x375A JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST PUSH2 0x37C0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42414C414E43455F4F465F4641494C4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x10D5 SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3825 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x3873 SWAP2 SWAP1 PUSH2 0x42FE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x38B0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x38B5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2A10 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57495448445241575F46524F4D5F574554485F4641494C454400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x394A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x3965 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x397D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x3992 PUSH2 0x398D DUP4 PUSH2 0x463A JUMP JUMPDEST PUSH2 0x45EB JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD PUSH1 0x60 DUP1 DUP7 MUL DUP9 ADD DUP6 ADD DUP10 LT ISZERO PUSH2 0x39B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x39D8 JUMPI PUSH2 0x39C6 DUP11 DUP5 PUSH2 0x3A28 JUMP JUMPDEST DUP6 MSTORE SWAP4 DUP6 ADD SWAP4 SWAP2 DUP2 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x39B4 JUMP JUMPDEST POP SWAP2 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x39F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3A10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3965 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x3A5D JUMPI PUSH2 0x3A5D PUSH2 0x48C9 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 POP DUP1 DUP3 CALLDATALOAD PUSH2 0x3A6E DUP2 PUSH2 0x48F8 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3A7E DUP2 PUSH2 0x491A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3AB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xC76 DUP2 PUSH2 0x48F8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3AD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xC76 DUP2 PUSH2 0x48F8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3AF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3AFF DUP2 PUSH2 0x48F8 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3B1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3B27 DUP7 DUP3 DUP8 ADD PUSH2 0x39E6 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3B49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3B54 DUP2 PUSH2 0x48F8 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x3B6B DUP2 PUSH2 0x48F8 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3B8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3B97 DUP2 PUSH2 0x48F8 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3BBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3BC6 DUP8 DUP3 DUP9 ADD PUSH2 0x39E6 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3BEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3BF5 DUP2 PUSH2 0x48F8 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP1 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3C1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3C27 DUP12 DUP4 DUP13 ADD PUSH2 0x39E6 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x60 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3C40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP9 ADD PUSH1 0x1F DUP2 ADD DUP11 SGT PUSH2 0x3C52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C60 PUSH2 0x398D DUP3 PUSH2 0x463A JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE DUP6 DUP3 ADD SWAP2 POP DUP6 DUP5 ADD DUP14 DUP8 DUP6 PUSH1 0x6 SHL DUP8 ADD ADD GT ISZERO PUSH2 0x3C80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x3CCD JUMPI DUP6 DUP2 DUP16 SUB SLT ISZERO PUSH2 0x3C9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3CA4 PUSH2 0x45C2 JUMP JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3CAF DUP2 PUSH2 0x48F8 JUMP JUMPDEST DUP2 MSTORE DUP2 DUP9 ADD CALLDATALOAD DUP9 DUP3 ADD MSTORE DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP7 ADD SWAP2 DUP6 ADD PUSH2 0x3C85 JUMP JUMPDEST POP DUP1 SWAP7 POP POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3CF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3D04 DUP2 PUSH2 0x48F8 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3D27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D33 DUP9 DUP3 DUP10 ADD PUSH2 0x39E6 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP7 PUSH1 0x60 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3D5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3D69 DUP2 PUSH2 0x48F8 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x3D85 PUSH1 0x60 DUP9 ADD PUSH2 0x3A94 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3DC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3DD5 DUP6 DUP3 DUP7 ADD PUSH2 0x3920 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3E0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x3E1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x3E2A PUSH2 0x398D DUP3 PUSH2 0x463A JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE DUP5 DUP3 ADD SWAP2 POP DUP5 DUP5 ADD DUP9 DUP7 DUP6 PUSH1 0x6 SHL DUP8 ADD ADD GT ISZERO PUSH2 0x3E4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP5 POP DUP5 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x3E97 JUMPI PUSH1 0x40 DUP1 DUP4 DUP13 SUB SLT ISZERO PUSH2 0x3E68 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH2 0x3E70 PUSH2 0x45C2 JUMP JUMPDEST DUP4 MLOAD PUSH2 0x3E7B DUP2 PUSH2 0x48F8 JUMP JUMPDEST DUP2 MSTORE DUP4 DUP10 ADD MLOAD DUP10 DUP3 ADD MSTORE DUP6 MSTORE SWAP4 DUP8 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3E50 JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3ECE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D5 DUP5 DUP3 DUP6 ADD PUSH2 0x396C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3EF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3F0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3F16 DUP10 DUP4 DUP11 ADD PUSH2 0x396C JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH2 0x3F28 DUP3 PUSH2 0x48F8 JUMP JUMPDEST SWAP1 SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x3F45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F52 DUP9 DUP3 DUP10 ADD PUSH2 0x39E6 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xC76 DUP2 PUSH2 0x491A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xC76 DUP2 PUSH2 0x491A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3FB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3FC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3DD5 DUP6 DUP3 DUP7 ADD PUSH2 0x39E6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3FE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3FFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4011 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4023 JUMPI PUSH2 0x4023 PUSH2 0x48C9 JUMP JUMPDEST PUSH2 0x4054 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x45EB JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP6 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x406B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x407C DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4802 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4097 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x40AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x60 DUP2 DUP6 SUB SLT ISZERO PUSH2 0xC76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x40E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x80 DUP2 DUP6 SUB SLT ISZERO PUSH2 0xC76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x410D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0xA0 DUP2 DUP6 SUB SLT ISZERO PUSH2 0xC76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC76 DUP4 DUP4 PUSH2 0x3A28 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4164 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x417E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4190 DUP2 PUSH2 0x48F8 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x41B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x41CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3B27 DUP7 DUP3 DUP8 ADD PUSH2 0x3920 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4210 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xC76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x423D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4246 DUP5 PUSH2 0x3A94 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x42BC DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4802 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4310 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x4802 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x15E7 PUSH1 0x40 DUP4 ADD DUP5 DUP7 PUSH2 0x425B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x43BD JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x43AB DUP6 DUP4 MLOAD PUSH2 0x42A4 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4371 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x10D5 PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x425B JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xC76 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x42A4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP PUSH1 0x5 DUP2 SWAP1 SHL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x3965 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x448E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x44A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP PUSH1 0x7 DUP2 SWAP1 SHL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x3965 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x44F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x3965 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61 DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x45E5 JUMPI PUSH2 0x45E5 PUSH2 0x48C9 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4632 JUMPI PUSH2 0x4632 PUSH2 0x48C9 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4654 JUMPI PUSH2 0x4654 PUSH2 0x48C9 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4694 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x46F2 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x46D8 JUMPI PUSH2 0x46D8 PUSH2 0x486B JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x46E5 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x469E JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC76 PUSH1 0xFF DUP5 AND DUP4 PUSH1 0x0 DUP3 PUSH2 0x4713 JUMPI POP PUSH1 0x1 PUSH2 0x47BF JUMP JUMPDEST DUP2 PUSH2 0x4720 JUMPI POP PUSH1 0x0 PUSH2 0x47BF JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x4736 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x4740 JUMPI PUSH2 0x475C JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x47BF JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x4751 JUMPI PUSH2 0x4751 PUSH2 0x486B JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x47BF JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x477F JUMPI POP DUP2 DUP2 EXP PUSH2 0x47BF JUMP JUMPDEST PUSH2 0x4789 DUP4 DUP4 PUSH2 0x4699 JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x47BB JUMPI PUSH2 0x47BB PUSH2 0x486B JUMP JUMPDEST MUL SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x47FD JUMPI PUSH2 0x47FD PUSH2 0x486B JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x481D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4805 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x482C JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x4864 JUMPI PUSH2 0x4864 PUSH2 0x486B JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x31BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x31BD JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x21 0xC4 PUSH32 0x6B996D4F88DE9302C770B23B87E30D108FF2CC0058FE12D88F80C78DDC64736F PUSH13 0x63430008070033000000000000 ",
              "sourceMap": "256:16739:4:-:0;;;619:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;832:14:59;;;;;;;;856:32;;;;;;;898:12;;;;;;920:25;;;-1:-1:-1;;;920:25:59;;;;744:5:4;;751:14;;767:4;;-1:-1:-1;;;;;832:14:59;;;920:23;;:25;;;;;;;;;;;;;;;;832:14;920:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;707:245;;;619:156:4;;;256:16739;;14:568:64;151:6;159;167;220:2;208:9;199:7;195:23;191:32;188:52;;;236:1;233;226:12;188:52;268:9;262:16;287:31;312:5;287:31;:::i;:::-;387:2;372:18;;366:25;337:5;;-1:-1:-1;400:33:64;366:25;400:33;:::i;:::-;504:2;489:18;;483:25;452:7;;-1:-1:-1;517:33:64;483:25;517:33;:::i;:::-;569:7;559:17;;;14:568;;;;;:::o;587:131::-;-1:-1:-1;;;;;662:31:64;;652:42;;642:70;;708:1;705;698:12;642:70;587:131;:::o;:::-;256:16739:4;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_717": {
                  "entryPoint": null,
                  "id": 717,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_depositFromUserToBentoBox_1865": {
                  "entryPoint": 13675,
                  "id": 1865,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_depositToBentoBox_1835": {
                  "entryPoint": 12046,
                  "id": 1835,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@addLiquidityLazy_1426": {
                  "entryPoint": 6943,
                  "id": 1426,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@addLiquidity_1370": {
                  "entryPoint": 4928,
                  "id": 1370,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@approveMasterContract_23877": {
                  "entryPoint": 5616,
                  "id": 23877,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@balanceOfThis_23922": {
                  "entryPoint": 13940,
                  "id": 23922,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@batch_23835": {
                  "entryPoint": 3197,
                  "id": 23835,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@bento_23672": {
                  "entryPoint": null,
                  "id": 23672,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@burnLiquiditySingle_1564": {
                  "entryPoint": 2271,
                  "id": 1564,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@burnLiquidity_1523": {
                  "entryPoint": 6118,
                  "id": 1523,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@complexPath_1286": {
                  "entryPoint": 7490,
                  "id": 1286,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@deployPool_23851": {
                  "entryPoint": 4106,
                  "id": 23851,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@exactInputLazy_911": {
                  "entryPoint": 2577,
                  "id": 911,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@exactInputSingleWithNativeToken_949": {
                  "entryPoint": 7336,
                  "id": 949,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@exactInputSingle_759": {
                  "entryPoint": 1729,
                  "id": 759,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@exactInputWithNativeToken_1017": {
                  "entryPoint": 1144,
                  "id": 1017,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@exactInput_831": {
                  "entryPoint": 4317,
                  "id": 831,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getSelector_24069": {
                  "entryPoint": 13307,
                  "id": 24069,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@isWhiteListed_1891": {
                  "entryPoint": 12316,
                  "id": 1891,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@masterDeployer_23676": {
                  "entryPoint": null,
                  "id": 23676,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@permitThisAllowed_24372": {
                  "entryPoint": 5817,
                  "id": 24372,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@permitThis_24327": {
                  "entryPoint": 7396,
                  "id": 24327,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@refundETH_1770": {
                  "entryPoint": 2253,
                  "id": 1770,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@safeTransferETH_24059": {
                  "entryPoint": 12736,
                  "id": 24059,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@safeTransferFrom_24013": {
                  "entryPoint": 12938,
                  "id": 24013,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@safeTransfer_23966": {
                  "entryPoint": 13314,
                  "id": 23966,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@sweepBentoBoxToken_1730": {
                  "entryPoint": 6790,
                  "id": 1730,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@sweepNativeToken_1747": {
                  "entryPoint": 6927,
                  "id": 1747,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@tridentMintCallback_1707": {
                  "entryPoint": 11218,
                  "id": 1707,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@tridentSwapCallback_1623": {
                  "entryPoint": 10772,
                  "id": 1623,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@unwrapWETH_1806": {
                  "entryPoint": 11870,
                  "id": 1806,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@withdrawFromWETH_24036": {
                  "entryPoint": 14292,
                  "id": 24036,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_array_bytes_calldata_dyn_calldata": {
                  "entryPoint": 14624,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_array_struct_TokenInput_dyn": {
                  "entryPoint": 14700,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_bytes_calldata": {
                  "entryPoint": 14822,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_struct_TokenInput": {
                  "entryPoint": 14888,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 15013,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 15042,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_bytes_calldata_ptr": {
                  "entryPoint": 15071,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_uint256t_address": {
                  "entryPoint": 15156,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptr": {
                  "entryPoint": 15222,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptrt_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr": {
                  "entryPoint": 15314,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptrt_uint256": {
                  "entryPoint": 15585,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32": {
                  "entryPoint": 15685,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 15775,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_fromMemory": {
                  "entryPoint": 15841,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr": {
                  "entryPoint": 16037,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptrt_addresst_uint256t_bytes_calldata_ptr": {
                  "entryPoint": 16090,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_bool": {
                  "entryPoint": 16227,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bool_fromMemory": {
                  "entryPoint": 16256,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_calldata_ptr": {
                  "entryPoint": 16285,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_string_memory_ptr_fromMemory": {
                  "entryPoint": 16339,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_ComplexPathParams_$2572_calldata_ptr": {
                  "entryPoint": 16517,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_ExactInputParams_$2523_calldata_ptr": {
                  "entryPoint": 16576,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_ExactInputSingleParams_$2512_calldata_ptr": {
                  "entryPoint": 16635,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_TokenInput_$2530_memory_ptr": {
                  "entryPoint": 16694,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 16722,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_address": {
                  "entryPoint": 16747,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 16795,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_uint256t_uint256_fromMemory": {
                  "entryPoint": 16858,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint64": {
                  "entryPoint": 16894,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint8t_bytes32t_bytes32": {
                  "entryPoint": 16936,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_uint8": {
                  "entryPoint": 14996,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_bytes": {
                  "entryPoint": 17060,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_bytes_calldata": {
                  "entryPoint": 16987,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 17134,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 17150,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_rational_0_by_1__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_bool_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_bool_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 9,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 8,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bytes_calldata_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 17178,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 17226,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 17354,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 17374,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_44e24cda2f2a44ef400059021a7190502b0aa1c810f902f32158234f399cf38a__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_73a58d3096665cdb3d9ecc032123f5a7ad88bd17cf83311559ff7dc040a3dc97__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_77631768048ee92f9dcf4b9b9d762877d6b9723214862c733f0596708fc219b7__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_814a50f1a3828c43ae18c528db69f16334eb614f36232428b94a1dbdc9450251__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9e034c8d2c77a265129cd02b8e6475148503b87b90dbc6e81311be5ce1022dbb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_a3ad46e55234c5408e3a1ea5ffe5dc518659762aab3470916c3f62b1468b09f3__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ba4a1792a182449048dd70ad064f813fc751bedb907aa87961069a6b2384362e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c7794b7baa0098f77f3fbdd0bb4bf412ca5eba33792029833fad4b51094ad4d3__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d383913ea1996930a2623a0d739b8fc033c734c1d71d4759d3ccba1d3a719c29__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_dc4063f98f18deb853a7e9314b9d1a8e8fa2d9ff6e9d1a2c4b8c202c936285cd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f14faee7abdc8ae63af1c0c7ba848ed72f3905484adc3738d56d92beb7fae5a7__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f532690656a5e61a759e1ffcd965f0329a3e96351a84493b6923cb9fbae96245__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "access_calldata_tail_t_array$_t_struct$_InitialPath_$2541_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 17393,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "access_calldata_tail_t_array$_t_struct$_Output_$2559_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 17497,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "access_calldata_tail_t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "access_calldata_tail_t_array$_t_struct$_PercentagePath_$2550_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "access_calldata_tail_t_bytes_calldata_ptr": {
                  "entryPoint": 17601,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "access_calldata_tail_t_struct$_InitialPath_$2541_calldata_ptr": {
                  "entryPoint": 17702,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "access_calldata_tail_t_struct$_Path_$2501_calldata_ptr": {
                  "entryPoint": 17754,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "access_calldata_tail_t_struct$_PercentagePath_$2550_calldata_ptr": {
                  "entryPoint": 17806,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 17899,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_memory_4577": {
                  "entryPoint": 17858,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "allocate_memory_4578": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "array_allocation_size_array_struct_TokenAmount_dyn": {
                  "entryPoint": 17978,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 18014,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_exp_helper": {
                  "entryPoint": 18073,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "checked_exp_t_uint256_t_uint8": {
                  "entryPoint": 18170,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_exp_unsigned": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 18373,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 18434,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "increment_t_uint256": {
                  "entryPoint": 18482,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 18539,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 18586,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 18633,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 18680,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bool": {
                  "entryPoint": 18714,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:37610:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "105:283:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "154:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "163:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "166:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "156:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "156:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "156:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "133:6:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "141:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "129:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "129:17:64"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "148:3:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "125:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "125:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "118:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "118:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "115:55:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "179:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "202:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "189:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "189:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:6:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "252:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "261:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "264:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "254:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "254:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "254:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "224:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "232:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "221:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "221:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "218:50:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "277:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "293:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "301:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "289:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "289:17:64"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "277:8:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "366:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "375:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "378:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "368:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "368:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "368:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "329:6:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "341:1:64",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "344:6:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "337:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "337:14:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "325:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "325:27:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "354:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "321:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "321:38:64"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "361:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "318:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "318:47:64"
                              },
                              "nodeType": "YulIf",
                              "src": "315:67:64"
                            }
                          ]
                        },
                        "name": "abi_decode_array_bytes_calldata_dyn_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "68:6:64",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "76:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "84:8:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "94:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:374:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "467:665:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "516:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "525:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "528:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "518:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "518:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "518:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "495:6:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "503:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "491:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "491:17:64"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "510:3:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "487:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "487:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "480:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "480:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "477:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "541:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "564:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "551:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "551:20:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "545:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "580:14:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "590:4:64",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "584:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "603:82:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "681:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_struct_TokenAmount_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "630:50:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "630:54:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "614:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "614:71:64"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "607:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "694:16:64",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "707:3:64"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "698:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "726:3:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "731:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "719:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "719:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "719:15:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "743:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "754:3:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "759:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "750:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "750:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "743:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "771:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "786:6:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "794:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "782:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "782:15:64"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "775:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "806:14:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "816:4:64",
                                "type": "",
                                "value": "0x60"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "810:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "875:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "884:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "887:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "877:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "877:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "877:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "843:6:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "855:2:64"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "859:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "851:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "851:11:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "839:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "839:24:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "865:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "835:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "835:33:64"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "870:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "832:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "832:42:64"
                              },
                              "nodeType": "YulIf",
                              "src": "829:62:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "900:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "909:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "904:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "964:139:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "985:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "1019:3:64"
                                            },
                                            {
                                              "name": "end",
                                              "nodeType": "YulIdentifier",
                                              "src": "1024:3:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_struct_TokenInput",
                                            "nodeType": "YulIdentifier",
                                            "src": "990:28:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "990:38:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "978:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "978:51:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "978:51:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1042:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "1053:3:64"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "1058:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1049:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1049:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "1042:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1074:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "1085:3:64"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "1090:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1081:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1081:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "1074:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "930:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "933:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "927:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "927:9:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "937:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "939:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "948:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "951:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "944:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "944:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "939:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "923:3:64",
                                "statements": []
                              },
                              "src": "919:184:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1112:14:64",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "1121:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1112:5:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_struct_TokenInput_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "441:6:64",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "449:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "457:5:64",
                            "type": ""
                          }
                        ],
                        "src": "393:739:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1209:275:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1258:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1267:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1270:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1260:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1260:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1260:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1237:6:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1245:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1233:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1233:17:64"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1252:3:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1229:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1229:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1222:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1222:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1219:55:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1283:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1306:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1293:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1293:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "1283:6:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1356:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1365:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1368:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1358:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1358:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1358:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1328:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1336:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1325:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1325:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1322:50:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1381:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1397:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1405:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1393:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1393:17:64"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "1381:8:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1462:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1471:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1474:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1464:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1464:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1464:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1433:6:64"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1441:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1429:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1429:19:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1450:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1425:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1425:30:64"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1457:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1422:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1422:39:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1419:59:64"
                            }
                          ]
                        },
                        "name": "abi_decode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1172:6:64",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1180:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "1188:8:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "1198:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1137:347:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1556:617:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1600:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1609:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1612:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1602:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1602:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1602:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1577:3:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1582:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1573:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1573:19:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1594:4:64",
                                    "type": "",
                                    "value": "0x60"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1569:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1569:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1566:50:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1625:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1645:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1639:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1639:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1629:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1657:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1679:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1687:4:64",
                                    "type": "",
                                    "value": "0x60"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1675:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1675:17:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1661:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1767:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1769:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1769:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1769:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1710:10:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1722:18:64",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1707:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1707:34:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1746:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1758:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1743:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1743:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1704:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1704:62:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1701:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1805:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1809:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1798:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1798:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1798:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1829:15:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1838:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "1829:5:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1853:38:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1881:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1868:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1868:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1857:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1925:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1900:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1900:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1900:33:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1949:6:64"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1957:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1942:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1942:23:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1942:23:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1974:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2006:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2017:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2002:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2002:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1989:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1989:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1978:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2052:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "2030:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2030:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2030:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2080:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2088:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2076:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2076:15:64"
                                  },
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2093:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2069:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2069:32:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2069:32:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2121:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2129:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2117:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2117:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "2151:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2162:2:64",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2147:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2147:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "2134:12:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2134:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2110:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2110:57:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2110:57:64"
                            }
                          ]
                        },
                        "name": "abi_decode_struct_TokenInput",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1527:9:64",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1538:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1546:5:64",
                            "type": ""
                          }
                        ],
                        "src": "1489:684:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2225:109:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2235:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2257:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2244:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2244:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "2235:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2312:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2321:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2324:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2314:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2314:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2314:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2286:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2297:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2304:4:64",
                                            "type": "",
                                            "value": "0xff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2293:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2293:16:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2283:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2283:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2276:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2276:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2273:55:64"
                            }
                          ]
                        },
                        "name": "abi_decode_uint8",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "2204:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2215:5:64",
                            "type": ""
                          }
                        ],
                        "src": "2178:156:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2409:177:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2455:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2464:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2467:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2457:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2457:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2457:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2430:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2439:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2426:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2426:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2451:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2422:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2422:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2419:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2480:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2506:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2493:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2493:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2484:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2550:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2525:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2525:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2525:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2565:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2575:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2565:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2375:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2386:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2398:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2339:247:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2672:170:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2718:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2727:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2730:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2720:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2720:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2720:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2693:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2702:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2689:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2689:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2714:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2685:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2685:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2682:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2743:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2762:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2756:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2756:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2747:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2806:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2781:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2781:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2781:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2821:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2831:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2821:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2638:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2649:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2661:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2591:251:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2953:438:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2999:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3008:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3011:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3001:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3001:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3001:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2974:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2983:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2970:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2970:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2995:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2966:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2966:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2963:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3024:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3050:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3037:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3037:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3028:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3094:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3069:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3069:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3069:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3109:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3119:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3109:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3133:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3164:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3175:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3160:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3160:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3147:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3147:32:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3137:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3222:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3231:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3234:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3224:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3224:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3224:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3194:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3202:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3191:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3191:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3188:50:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3247:84:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3303:9:64"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3314:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3299:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3299:22:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3323:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "3273:25:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3273:58:64"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3251:8:64",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3261:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3340:18:64",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "3350:8:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3340:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3367:18:64",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "3377:8:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3367:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2903:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2914:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2926:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2934:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2942:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2847:544:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3500:352:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3546:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3555:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3558:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3548:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3548:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3548:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3521:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3530:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3517:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3517:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3542:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3513:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3513:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3510:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3571:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3597:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3584:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3584:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3575:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3641:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3616:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3616:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3616:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3656:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3666:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3656:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3680:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3707:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3718:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3703:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3703:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3690:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3690:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3680:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3731:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3763:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3774:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3759:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3759:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3746:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3746:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3735:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3812:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3787:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3787:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3787:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3829:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3839:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3829:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3450:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3461:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3473:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3481:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3489:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3396:456:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3980:489:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4026:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4035:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4038:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4028:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4028:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4028:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4001:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4010:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3997:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3997:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4022:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3993:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3993:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3990:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4051:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4077:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4064:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4064:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4055:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4121:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4096:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4096:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4096:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4136:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4146:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4136:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4160:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4187:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4198:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4183:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4183:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4170:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4170:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4160:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4211:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4242:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4253:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4238:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4238:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4225:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4225:32:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4215:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4300:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4309:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4312:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4302:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4302:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4302:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4272:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4280:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4269:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4269:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4266:50:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4325:84:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4381:9:64"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4392:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4377:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4377:22:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4401:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "4351:25:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4351:58:64"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4329:8:64",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4339:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4418:18:64",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "4428:8:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4418:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4445:18:64",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "4455:8:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4445:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3922:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3933:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3945:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3953:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3961:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3969:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3857:612:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4668:1573:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4715:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4724:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4727:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4717:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4717:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4717:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4689:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4698:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4685:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4685:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4710:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4681:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4681:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4678:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4740:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4766:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4753:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4753:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4744:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4810:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4785:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4785:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4785:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4825:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4835:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4825:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4849:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4859:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4853:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4870:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4897:9:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4908:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4893:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4893:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4880:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4880:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4870:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4921:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4931:2:64",
                                "type": "",
                                "value": "64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4925:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4942:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4973:9:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4984:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4969:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4969:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4956:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4956:32:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4946:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4997:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5007:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "5001:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5052:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5061:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5064:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5054:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5054:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5054:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5040:6:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "5048:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5037:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5037:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5034:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5077:84:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5133:9:64"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "5144:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5129:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5129:22:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5153:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "5103:25:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5103:58:64"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5081:8:64",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5091:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5170:18:64",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "5180:8:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5170:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5197:18:64",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "5207:8:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "5197:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5224:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5257:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5268:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5253:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5253:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5240:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5240:32:64"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5228:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5301:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5310:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5313:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5303:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5303:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5303:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5287:8:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "5297:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5284:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5284:16:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5281:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5326:34:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5340:9:64"
                                  },
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5351:8:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5336:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5336:24:64"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "5330:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5408:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5417:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5420:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5410:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5410:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5410:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "5387:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5391:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5383:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5383:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5398:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5379:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5379:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5372:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5372:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5369:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5433:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "5456:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5443:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5443:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "5437:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5468:82:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "5546:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_struct_TokenAmount_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "5495:50:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5495:54:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "5479:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5479:71:64"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "5472:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5559:16:64",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "5572:3:64"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5563:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "5591:3:64"
                                  },
                                  {
                                    "name": "_5",
                                    "nodeType": "YulIdentifier",
                                    "src": "5596:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5584:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5584:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5584:15:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5608:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "5619:3:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5624:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5615:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5615:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "5608:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5636:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "5651:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5655:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5647:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5647:11:64"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "5640:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5712:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5721:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5724:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5714:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5714:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5714:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "5681:2:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5689:1:64",
                                                "type": "",
                                                "value": "6"
                                              },
                                              {
                                                "name": "_5",
                                                "nodeType": "YulIdentifier",
                                                "src": "5692:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "5685:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5685:10:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5677:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5677:19:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5698:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5673:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5673:28:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5703:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5670:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5670:41:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5667:61:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5737:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5746:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "5741:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5801:410:64",
                                "statements": [
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "5845:16:64",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5854:1:64",
                                                "type": "",
                                                "value": "0"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5857:1:64",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "5847:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5847:12:64"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "5847:12:64"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dataEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "5826:7:64"
                                            },
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "5835:3:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "5822:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5822:17:64"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "5841:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "slt",
                                        "nodeType": "YulIdentifier",
                                        "src": "5818:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5818:26:64"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5815:46:64"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "5874:37:64",
                                    "value": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "allocate_memory_4577",
                                        "nodeType": "YulIdentifier",
                                        "src": "5889:20:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5889:22:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulTypedName",
                                        "src": "5878:7:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "5924:32:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "5952:3:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "5939:12:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5939:17:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "value_2",
                                        "nodeType": "YulTypedName",
                                        "src": "5928:7:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "5994:7:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "validator_revert_address",
                                        "nodeType": "YulIdentifier",
                                        "src": "5969:24:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5969:33:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5969:33:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6022:7:64"
                                        },
                                        {
                                          "name": "value_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "6031:7:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6015:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6015:24:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6015:24:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "6063:7:64"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "6072:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6059:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6059:16:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6094:3:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6099:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6090:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6090:12:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6077:12:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6077:26:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6052:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6052:52:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6052:52:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "6124:3:64"
                                        },
                                        {
                                          "name": "value_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6129:7:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6117:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6117:20:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6117:20:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6150:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "6161:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6166:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6157:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6157:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "6150:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6182:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "6193:3:64"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "6198:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6189:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6189:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "6182:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "5767:1:64"
                                  },
                                  {
                                    "name": "_5",
                                    "nodeType": "YulIdentifier",
                                    "src": "5770:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5764:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5764:9:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "5774:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5776:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "5785:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5788:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "5781:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5781:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "5776:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "5760:3:64",
                                "statements": []
                              },
                              "src": "5756:455:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6220:15:64",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "6230:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "6220:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptrt_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4602:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4613:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4625:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4633:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4641:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4649:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "4657:6:64",
                            "type": ""
                          }
                        ],
                        "src": "4474:1767:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6386:541:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6433:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6442:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6445:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6435:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6435:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6435:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6407:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6416:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6403:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6403:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6428:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6399:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6399:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6396:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6458:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6484:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6471:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6471:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6462:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6528:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6503:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6503:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6503:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6543:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6553:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6543:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6567:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6594:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6605:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6590:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6590:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6577:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6577:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6567:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6618:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6649:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6660:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6645:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6645:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6632:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6632:32:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6622:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6707:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6716:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6719:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6709:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6709:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6709:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6679:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6687:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6676:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6676:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6673:50:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6732:84:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6788:9:64"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6799:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6784:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6784:22:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6808:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "6758:25:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6758:58:64"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6736:8:64",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6746:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6825:18:64",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "6835:8:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "6825:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6852:18:64",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "6862:8:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "6852:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6879:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6906:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6917:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6902:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6902:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6889:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6889:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "6879:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptrt_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6320:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6331:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6343:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6351:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6359:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "6367:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "6375:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6246:681:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7085:439:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7132:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7141:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7144:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7134:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7134:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7134:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7106:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7115:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7102:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7102:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7127:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7098:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7098:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7095:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7157:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7183:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7170:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7170:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "7161:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7227:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "7202:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7202:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7202:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7242:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "7252:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7242:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7266:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7293:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7304:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7289:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7289:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7276:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7276:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7266:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7317:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7344:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7355:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7340:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7340:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7327:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7327:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "7317:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7368:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7399:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7410:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7395:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7395:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint8",
                                  "nodeType": "YulIdentifier",
                                  "src": "7378:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7378:36:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "7368:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7423:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7450:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7461:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7446:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7446:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7433:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7433:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "7423:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7475:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7502:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7513:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7498:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7498:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7485:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7485:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "7475:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7011:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7022:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7034:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7042:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7050:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7058:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7066:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "7074:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6932:592:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7645:339:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7691:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7700:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7703:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7693:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7693:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7693:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7666:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7675:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7662:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7662:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7687:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7658:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7658:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7655:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7716:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7743:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7730:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7730:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "7720:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7796:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7805:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7808:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7798:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7798:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7798:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7768:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7776:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7765:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7765:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7762:50:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7821:103:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7896:9:64"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "7907:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7892:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7892:22:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7916:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_bytes_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "7847:44:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7847:77:64"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7825:8:64",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7835:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7933:18:64",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "7943:8:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7933:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7960:18:64",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "7970:8:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7960:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7603:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7614:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7626:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7634:6:64",
                            "type": ""
                          }
                        ],
                        "src": "7529:455:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8124:1128:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8134:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8144:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8138:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8191:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8200:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8203:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8193:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8193:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8193:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8166:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8175:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8162:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8162:23:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8187:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8158:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8158:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "8155:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8216:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8236:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8230:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8230:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "8220:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8289:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8298:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8301:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8291:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8291:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8291:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8261:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8269:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8258:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8258:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "8255:50:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8314:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8328:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8339:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8324:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8324:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "8318:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8394:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8403:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8406:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8396:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8396:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8396:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "8373:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8377:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8369:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8369:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8384:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "8365:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8365:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "8358:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8358:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "8355:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8419:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "8435:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8429:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8429:9:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "8423:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8447:82:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "8525:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_struct_TokenAmount_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "8474:50:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8474:54:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "8458:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8458:71:64"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "8451:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8538:16:64",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "8551:3:64"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8542:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "8570:3:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "8575:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8563:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8563:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8563:15:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8587:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "8598:3:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8603:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8594:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8594:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "8587:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8615:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "8630:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8634:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8626:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8626:11:64"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "8619:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8691:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8700:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8703:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8693:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8693:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8693:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "8660:2:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8668:1:64",
                                                "type": "",
                                                "value": "6"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "8671:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "8664:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8664:10:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8656:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8656:19:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8677:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8652:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8652:28:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8682:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8649:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8649:41:64"
                              },
                              "nodeType": "YulIf",
                              "src": "8646:61:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8716:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8725:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "8720:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8735:12:64",
                              "value": {
                                "name": "i",
                                "nodeType": "YulIdentifier",
                                "src": "8746:1:64"
                              },
                              "variables": [
                                {
                                  "name": "i_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8739:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8807:415:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "8821:14:64",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "8831:4:64",
                                      "type": "",
                                      "value": "0x40"
                                    },
                                    "variables": [
                                      {
                                        "name": "_4",
                                        "nodeType": "YulTypedName",
                                        "src": "8825:2:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "8878:16:64",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "i",
                                                "nodeType": "YulIdentifier",
                                                "src": "8887:1:64"
                                              },
                                              {
                                                "name": "i",
                                                "nodeType": "YulIdentifier",
                                                "src": "8890:1:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "8880:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8880:12:64"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "8880:12:64"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dataEnd",
                                              "nodeType": "YulIdentifier",
                                              "src": "8859:7:64"
                                            },
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "8868:3:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "8855:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "8855:17:64"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "8874:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "slt",
                                        "nodeType": "YulIdentifier",
                                        "src": "8851:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8851:26:64"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "8848:46:64"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "8907:35:64",
                                    "value": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "allocate_memory_4578",
                                        "nodeType": "YulIdentifier",
                                        "src": "8920:20:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8920:22:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "8911:5:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "8955:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "8976:3:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "8970:5:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8970:10:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulTypedName",
                                        "src": "8959:7:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9018:7:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "validator_revert_address",
                                        "nodeType": "YulIdentifier",
                                        "src": "8993:24:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8993:33:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8993:33:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "9046:5:64"
                                        },
                                        {
                                          "name": "value_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9053:7:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "9039:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9039:22:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9039:22:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "9085:5:64"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "9092:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "9081:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9081:14:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9107:3:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9112:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "9103:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "9103:12:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "9097:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9097:19:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "9074:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9074:43:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9074:43:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "9137:3:64"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "9142:5:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "9130:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9130:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9130:18:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9161:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "9172:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9177:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9168:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9168:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "9161:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9193:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "9204:3:64"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "9209:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9200:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9200:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "9193:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8767:3:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "8772:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8764:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8764:11:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "8776:22:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8778:18:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "8789:3:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8794:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "8785:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8785:11:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8778:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "8760:3:64",
                                "statements": []
                              },
                              "src": "8756:466:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9231:15:64",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "9241:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9231:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8090:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8101:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8113:6:64",
                            "type": ""
                          }
                        ],
                        "src": "7989:1263:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9380:263:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9426:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9435:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9438:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9428:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9428:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9428:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9401:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9410:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9397:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9397:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9422:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9393:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9393:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "9390:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9451:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9478:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9465:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9465:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9455:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9531:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9540:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9543:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9533:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9533:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9533:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9503:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9511:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9500:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9500:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "9497:50:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9556:81:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9609:9:64"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9620:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9605:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9605:22:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9629:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_TokenInput_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "9566:38:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9566:71:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9556:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9346:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9357:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9369:6:64",
                            "type": ""
                          }
                        ],
                        "src": "9257:386:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9841:705:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9888:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9897:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9900:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9890:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9890:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9890:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9862:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9871:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9858:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9858:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9883:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9854:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9854:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "9851:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9913:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9940:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9927:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9927:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9917:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9959:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9969:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9963:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10014:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10023:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10026:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10016:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10016:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10016:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10002:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10010:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9999:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9999:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "9996:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10039:81:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10092:9:64"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "10103:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10088:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10088:22:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10112:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_TokenInput_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "10049:38:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10049:71:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10039:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10129:45:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10159:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10170:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10155:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10155:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10142:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10142:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10133:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10208:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10183:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10183:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10183:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10223:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10233:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "10223:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10247:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10274:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10285:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10270:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10270:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10257:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10257:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "10247:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10298:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10331:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10342:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10327:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10327:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10314:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10314:32:64"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10302:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10375:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10384:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10387:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10377:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10377:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10377:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10361:8:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10371:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10358:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10358:16:64"
                              },
                              "nodeType": "YulIf",
                              "src": "10355:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10400:86:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10456:9:64"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10467:8:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10452:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10452:24:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10478:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "10426:25:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10426:60:64"
                              },
                              "variables": [
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10404:8:64",
                                  "type": ""
                                },
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10414:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10495:18:64",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "10505:8:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "10495:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10522:18:64",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "10532:8:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "10522:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptrt_addresst_uint256t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9775:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9786:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9798:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9806:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9814:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9822:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "9830:6:64",
                            "type": ""
                          }
                        ],
                        "src": "9648:898:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10618:174:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10664:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10673:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10676:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10666:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10666:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10666:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10639:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10648:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10635:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10635:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10660:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10631:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10631:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "10628:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10689:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10715:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10702:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10702:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10693:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10756:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "10734:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10734:28:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10734:28:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10771:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10781:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10771:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10584:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10595:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10607:6:64",
                            "type": ""
                          }
                        ],
                        "src": "10551:241:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10875:167:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10921:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10930:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10933:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10923:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10923:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10923:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10896:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10905:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10892:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10892:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10917:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10888:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10888:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "10885:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10946:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10965:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10959:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10959:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10950:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11006:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "10984:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10984:28:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10984:28:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11021:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "11031:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11021:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10841:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10852:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10864:6:64",
                            "type": ""
                          }
                        ],
                        "src": "10797:245:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11136:320:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11182:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11191:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11194:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11184:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11184:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11184:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11157:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11166:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11153:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11153:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11178:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11149:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11149:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "11146:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11207:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11234:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11221:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11221:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "11211:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11287:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11296:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11299:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11289:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11289:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11289:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "11259:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11267:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11256:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11256:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "11253:50:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11312:84:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11368:9:64"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "11379:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11364:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11364:22:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "11388:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "11338:25:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11338:58:64"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11316:8:64",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11326:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11405:18:64",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "11415:8:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11405:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11432:18:64",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "11442:8:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11432:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11094:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11105:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11117:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11125:6:64",
                            "type": ""
                          }
                        ],
                        "src": "11047:409:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11552:674:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11598:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11607:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11610:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11600:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11600:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11600:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11573:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11582:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11569:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11569:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11594:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11565:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11565:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "11562:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11623:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11643:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11637:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11637:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "11627:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11662:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11672:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11666:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11717:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11726:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11729:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11719:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11719:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11719:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "11705:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11713:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11702:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11702:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "11699:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11742:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11756:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "11767:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11752:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11752:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "11746:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11822:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11831:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11834:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11824:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11824:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11824:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "11801:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "11805:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "11797:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11797:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11812:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "11793:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11793:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "11786:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11786:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "11783:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11847:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11863:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11857:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11857:9:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "11851:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11889:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "11891:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11891:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11891:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "11881:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11885:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11878:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11878:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "11875:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11920:125:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "11961:2:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11965:4:64",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "11957:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "11957:13:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "11972:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "11953:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11953:86:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12041:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11949:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11949:95:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "11933:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11933:112:64"
                              },
                              "variables": [
                                {
                                  "name": "array",
                                  "nodeType": "YulTypedName",
                                  "src": "11924:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "12061:5:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "12068:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12054:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12054:17:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12054:17:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12117:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12126:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12129:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12119:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12119:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12119:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "12094:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "12098:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "12090:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12090:11:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12103:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12086:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12086:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12108:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12083:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12083:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "12080:53:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "12168:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12172:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12164:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12164:11:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "12181:5:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12188:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12177:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12177:14:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "12193:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "12142:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12142:54:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12142:54:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12205:15:64",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "12215:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12205:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11518:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11529:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11541:6:64",
                            "type": ""
                          }
                        ],
                        "src": "11461:765:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12338:289:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12384:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12393:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12396:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12386:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12386:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12386:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12359:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12368:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12355:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12355:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12380:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12351:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12351:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "12348:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12409:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12436:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12423:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12423:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "12413:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12489:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12498:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12501:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12491:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12491:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12491:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "12461:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12469:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12458:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12458:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "12455:50:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12514:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12528:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "12539:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12524:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12524:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12518:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12584:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12593:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12596:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12586:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12586:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12586:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12566:7:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12575:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12562:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12562:16:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12580:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12558:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12558:25:64"
                              },
                              "nodeType": "YulIf",
                              "src": "12555:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12609:12:64",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "12619:2:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12609:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_ComplexPathParams_$2572_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12304:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12315:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12327:6:64",
                            "type": ""
                          }
                        ],
                        "src": "12231:396:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12738:290:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12784:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12793:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12796:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12786:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12786:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12786:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12759:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12768:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12755:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12755:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12780:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12751:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12751:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "12748:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12809:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12836:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12823:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12823:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "12813:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12889:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12898:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12901:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12891:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12891:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12891:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "12861:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12869:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12858:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12858:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "12855:50:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12914:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12928:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "12939:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12924:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12924:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12918:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12985:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12994:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12997:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12987:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12987:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12987:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12966:7:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12975:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12962:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12962:16:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12980:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12958:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12958:26:64"
                              },
                              "nodeType": "YulIf",
                              "src": "12955:46:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13010:12:64",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "13020:2:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "13010:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_ExactInputParams_$2523_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12704:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12715:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12727:6:64",
                            "type": ""
                          }
                        ],
                        "src": "12632:396:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13145:290:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13191:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13200:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13203:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13193:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13193:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13193:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13166:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13175:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13162:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13162:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13187:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13158:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13158:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "13155:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13216:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13243:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13230:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13230:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "13220:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13296:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13305:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13308:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13298:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13298:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13298:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13268:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13276:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13265:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13265:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "13262:50:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13321:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13335:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13346:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13331:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13331:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13325:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13392:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13401:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13404:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13394:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13394:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13394:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13373:7:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13382:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13369:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13369:16:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13387:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13365:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13365:26:64"
                              },
                              "nodeType": "YulIf",
                              "src": "13362:46:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13417:12:64",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "13427:2:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "13417:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_ExactInputSingleParams_$2512_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13111:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "13122:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13134:6:64",
                            "type": ""
                          }
                        ],
                        "src": "13033:402:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13538:135:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13584:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13593:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13596:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13586:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13586:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13586:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13559:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13568:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13555:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13555:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13580:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13551:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13551:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "13548:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13609:58:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13648:9:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "13659:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_struct_TokenInput",
                                  "nodeType": "YulIdentifier",
                                  "src": "13619:28:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13619:48:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "13609:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_TokenInput_$2530_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13504:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "13515:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13527:6:64",
                            "type": ""
                          }
                        ],
                        "src": "13440:233:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13759:103:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13805:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13814:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13817:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13807:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13807:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13807:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13780:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13789:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13776:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13776:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13801:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13772:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13772:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "13769:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13830:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13846:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13840:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13840:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "13830:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13725:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "13736:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13748:6:64",
                            "type": ""
                          }
                        ],
                        "src": "13678:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13954:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14000:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14009:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14012:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14002:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14002:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14002:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13975:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13984:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13971:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13971:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13996:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13967:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13967:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "13964:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14025:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14048:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14035:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14035:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "14025:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14067:45:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14097:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14108:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14093:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14093:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14080:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14080:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "14071:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "14146:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "14121:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14121:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14121:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14161:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "14171:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "14161:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13912:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "13923:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13935:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13943:6:64",
                            "type": ""
                          }
                        ],
                        "src": "13867:315:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14333:390:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14379:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14388:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14391:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14381:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14381:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14381:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "14354:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14363:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "14350:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14350:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14375:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14346:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14346:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "14343:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14404:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14427:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14414:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14414:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "14404:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14446:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14477:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14488:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14473:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14473:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14460:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14460:32:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "14450:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14535:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14544:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14547:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14537:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14537:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14537:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "14507:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14515:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14504:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14504:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "14501:50:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14560:103:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14635:9:64"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "14646:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14631:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14631:22:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "14655:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_bytes_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "14586:44:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14586:77:64"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14564:8:64",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14574:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14672:18:64",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "14682:8:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "14672:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14699:18:64",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "14709:8:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "14699:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14283:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "14294:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14306:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14314:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14322:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14187:536:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14826:147:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14872:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14881:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14884:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14874:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14874:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14874:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "14847:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14856:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "14843:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14843:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14868:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14839:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14839:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "14836:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14897:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14913:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14907:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14907:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "14897:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14932:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14952:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14963:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14948:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14948:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14942:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14942:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "14932:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14784:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "14795:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14807:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14815:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14728:245:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15047:215:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15093:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15102:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15105:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15095:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15095:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15095:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "15068:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15077:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "15064:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15064:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15089:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15060:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15060:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "15057:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15118:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15144:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15131:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15131:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "15122:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15216:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15225:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15228:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15218:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15218:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15218:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "15176:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "15187:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "15194:18:64",
                                            "type": "",
                                            "value": "0xffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "15183:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15183:30:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "15173:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15173:41:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "15166:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15166:49:64"
                              },
                              "nodeType": "YulIf",
                              "src": "15163:69:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15241:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "15251:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "15241:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint64",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15013:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "15024:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15036:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14978:284:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15369:216:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15415:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15424:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15427:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15417:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15417:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15417:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "15390:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15399:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "15386:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15386:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15411:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15382:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15382:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "15379:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15440:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15467:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint8",
                                  "nodeType": "YulIdentifier",
                                  "src": "15450:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15450:27:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "15440:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15486:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15513:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15524:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15509:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15509:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15496:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15496:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "15486:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15537:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15564:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15575:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15560:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15560:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15547:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15547:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "15537:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint8t_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15319:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "15330:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15342:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15350:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "15358:6:64",
                            "type": ""
                          }
                        ],
                        "src": "15267:318:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15656:259:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "15673:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "15678:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15666:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15666:19:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15666:19:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "15711:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15716:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15707:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15707:14:64"
                                  },
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "15723:5:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "15730:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "15694:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15694:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15694:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "15761:3:64"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "15766:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "15757:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15757:16:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15775:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15753:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15753:27:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15782:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15746:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15746:38:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15746:38:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15793:116:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "15808:3:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "15821:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "15829:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "15817:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "15817:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "15834:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "15813:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15813:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15804:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15804:98:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15904:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15800:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15800:109:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "15793:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "start",
                            "nodeType": "YulTypedName",
                            "src": "15625:5:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "15632:6:64",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "15640:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "15648:3:64",
                            "type": ""
                          }
                        ],
                        "src": "15590:325:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15969:267:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15979:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "15999:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15993:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15993:12:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "15983:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "16021:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "16026:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16014:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16014:19:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16014:19:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "16068:5:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16075:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16064:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16064:16:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "16086:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16091:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16082:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16082:14:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "16098:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "16042:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16042:63:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16042:63:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16114:116:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "16129:3:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "16142:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "16150:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "16138:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "16138:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "16155:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "16134:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16134:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16125:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16125:98:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16225:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16121:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16121:109:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "16114:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "15946:5:64",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "15953:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "15961:3:64",
                            "type": ""
                          }
                        ],
                        "src": "15920:316:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16388:124:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "16411:3:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16416:6:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16424:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "16398:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16398:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16398:33:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16440:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "16454:3:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16459:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16450:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16450:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16444:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16482:2:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16486:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16475:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16475:13:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16475:13:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16497:9:64",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "16504:2:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "16497:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "16356:3:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16361:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16369:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "16380:3:64",
                            "type": ""
                          }
                        ],
                        "src": "16241:271:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16654:137:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16664:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16684:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16678:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16678:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "16668:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "16726:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16734:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16722:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16722:17:64"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "16741:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "16746:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "16700:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16700:53:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16700:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16762:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "16773:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "16778:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16769:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16769:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "16762:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "16630:3:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16635:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "16646:3:64",
                            "type": ""
                          }
                        ],
                        "src": "16517:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16987:14:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16989:10:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "16996:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "16989:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "16971:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "16979:3:64",
                            "type": ""
                          }
                        ],
                        "src": "16796:205:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17107:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17117:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17129:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17140:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17125:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17125:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17117:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17159:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "17174:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17182:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17170:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17170:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17152:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17152:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17152:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17076:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17087:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17098:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17006:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17366:198:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17376:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17388:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17399:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17384:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17384:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17376:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17411:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "17421:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17415:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17479:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "17494:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17502:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17490:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17490:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17472:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17472:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17472:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17526:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17537:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17522:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17522:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17546:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17554:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17542:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17542:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17515:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17515:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17515:43:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17327:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17338:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17346:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17357:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17237:327:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17790:338:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17800:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17812:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17823:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17808:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17808:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17800:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17836:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "17846:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17840:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17904:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "17919:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17927:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17915:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17915:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17897:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17897:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17897:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17951:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17962:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17947:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17947:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17971:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17979:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17967:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17967:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17940:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17940:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17940:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18003:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18014:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17999:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17999:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "18023:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18031:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18019:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18019:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17992:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17992:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17992:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18055:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18066:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18051:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18051:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "18071:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18044:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18044:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18044:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18098:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18109:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18094:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18094:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "18115:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18087:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18087:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18087:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17727:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "17738:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "17746:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17754:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17762:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17770:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17781:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17569:559:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18318:294:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18328:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18340:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18351:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18336:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18336:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18328:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18364:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "18374:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18368:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18432:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "18447:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18455:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18443:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18443:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18425:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18425:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18425:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18479:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18490:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18475:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18475:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18499:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18507:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18495:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18495:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18468:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18468:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18468:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18531:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18542:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18527:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18527:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "18551:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18559:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18547:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18547:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18520:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18520:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18520:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18583:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18594:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18579:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18579:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "18599:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18572:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18572:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18572:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18263:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "18274:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "18282:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18290:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18298:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18309:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18133:479:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18838:338:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18848:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18860:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18871:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18856:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18856:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18848:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18884:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "18894:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18888:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18952:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "18967:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18975:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18963:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18963:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18945:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18945:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18945:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18999:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19010:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18995:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18995:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19019:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19027:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19015:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19015:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18988:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18988:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18988:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19051:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19062:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19047:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19047:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "19071:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19079:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19067:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19067:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19040:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19040:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19040:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19103:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19114:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19099:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19099:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "19119:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19092:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19092:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19092:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19146:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19157:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19142:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19142:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "19163:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19135:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19135:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19135:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_rational_0_by_1__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18775:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "18786:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "18794:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "18802:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18810:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18818:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18829:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18617:559:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19412:400:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19422:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19434:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19445:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19430:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19430:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19422:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19458:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "19468:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19462:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19526:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19541:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19549:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19537:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19537:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19519:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19519:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19519:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19573:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19584:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19569:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19569:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19593:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19601:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19589:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19589:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19562:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19562:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19562:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19625:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19636:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19621:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19621:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "19655:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "19648:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19648:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "19641:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19641:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19614:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19614:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19614:50:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19684:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19695:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19680:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19680:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "19704:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19712:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19700:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19700:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19673:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19673:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19673:45:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19738:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19749:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19734:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19734:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "19755:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19727:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19727:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19727:35:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19782:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19793:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19778:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19778:19:64"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "19799:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19771:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19771:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19771:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_bool_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_bool_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19341:9:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "19352:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "19360:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "19368:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "19376:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19384:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19392:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19403:4:64",
                            "type": ""
                          }
                        ],
                        "src": "19181:631:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19974:241:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19984:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19996:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20007:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19992:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19992:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19984:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20019:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "20029:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20023:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20087:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "20102:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20110:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20098:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20098:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20080:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20080:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20080:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20134:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20145:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20130:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20130:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20154:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20162:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20150:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20150:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20123:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20123:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20123:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20186:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20197:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20182:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20182:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "20202:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20175:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20175:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20175:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19927:9:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "19938:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19946:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19954:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19965:4:64",
                            "type": ""
                          }
                        ],
                        "src": "19817:398:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20507:488:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "20517:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20529:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20540:3:64",
                                    "type": "",
                                    "value": "256"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20525:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20525:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20517:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20553:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "20563:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20557:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20621:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "20636:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20644:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20632:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20632:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20614:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20614:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20614:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20668:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20679:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20664:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20664:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20688:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20696:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20684:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20684:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20657:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20657:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20657:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20720:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20731:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20716:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20716:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "20736:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20709:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20709:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20709:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20763:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20774:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20759:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20759:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "20779:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20752:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20752:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20752:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20806:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20817:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20802:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20802:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value4",
                                            "nodeType": "YulIdentifier",
                                            "src": "20837:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "20830:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20830:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "20823:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20823:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20795:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20795:51:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20795:51:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20866:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20877:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20862:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20862:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "20887:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20895:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20883:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20883:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20855:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20855:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20855:46:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20921:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20932:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20917:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20917:19:64"
                                  },
                                  {
                                    "name": "value6",
                                    "nodeType": "YulIdentifier",
                                    "src": "20938:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20910:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20910:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20910:35:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20965:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20976:3:64",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20961:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20961:19:64"
                                  },
                                  {
                                    "name": "value7",
                                    "nodeType": "YulIdentifier",
                                    "src": "20982:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20954:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20954:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20954:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20420:9:64",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "20431:6:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "20439:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "20447:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "20455:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "20463:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "20471:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "20479:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20487:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20498:4:64",
                            "type": ""
                          }
                        ],
                        "src": "20220:775:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21265:428:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "21275:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21287:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21298:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21283:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21283:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21275:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21311:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "21321:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21315:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21379:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "21394:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "21402:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "21390:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21390:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21372:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21372:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21372:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21426:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21437:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21422:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21422:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "21446:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "21454:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "21442:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21442:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21415:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21415:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21415:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21478:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21489:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21474:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21474:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "21494:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21467:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21467:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21467:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21521:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21532:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21517:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21517:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "21537:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21510:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21510:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21510:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21564:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21575:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21560:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21560:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "21585:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21593:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "21581:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21581:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21553:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21553:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21553:46:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21619:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21630:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21615:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21615:19:64"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "21636:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21608:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21608:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21608:35:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21663:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21674:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21659:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21659:19:64"
                                  },
                                  {
                                    "name": "value6",
                                    "nodeType": "YulIdentifier",
                                    "src": "21680:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21652:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21652:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21652:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21186:9:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "21197:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "21205:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "21213:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "21221:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "21229:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "21237:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21245:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21256:4:64",
                            "type": ""
                          }
                        ],
                        "src": "21000:693:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21855:207:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21872:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "21887:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21895:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "21883:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21883:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21865:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21865:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21865:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21959:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21970:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21955:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21955:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21975:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21948:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21948:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21948:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21987:69:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22021:6:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "22029:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22041:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22052:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22037:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22037:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "21995:25:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21995:61:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21987:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bytes_calldata_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21808:9:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "21819:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "21827:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21835:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21846:4:64",
                            "type": ""
                          }
                        ],
                        "src": "21698:364:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22196:168:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "22206:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22218:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22229:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22214:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22214:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22206:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22248:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "22263:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22271:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "22259:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22259:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22241:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22241:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22241:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22335:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22346:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22331:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22331:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22351:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22324:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22324:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22324:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22157:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "22168:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "22176:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22187:4:64",
                            "type": ""
                          }
                        ],
                        "src": "22067:297:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22538:690:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22548:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22558:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22552:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22569:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22587:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22598:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22583:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22583:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22573:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22617:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22628:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22610:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22610:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22610:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22640:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "22651:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "22644:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22666:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "22686:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22680:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22680:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "22670:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22709:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "22717:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22702:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22702:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22702:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22733:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22744:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22755:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22740:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22740:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "22733:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22767:53:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22789:9:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22804:1:64",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "22807:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "22800:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22800:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22785:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22785:30:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22817:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22781:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22781:39:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "22771:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22829:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "22847:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22855:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22843:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22843:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "22833:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22867:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22876:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "22871:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22935:264:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "22956:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "tail_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "22969:6:64"
                                                },
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "22977:9:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "22965:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "22965:22:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "22989:66:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "22961:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22961:95:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "22949:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22949:108:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22949:108:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "23070:49:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "23103:6:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "23097:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23097:13:64"
                                        },
                                        {
                                          "name": "tail_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "23112:6:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_bytes",
                                        "nodeType": "YulIdentifier",
                                        "src": "23080:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23080:39:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23070:6:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "23132:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "23146:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "23154:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "23142:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23142:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "23132:6:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "23170:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "23181:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "23186:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "23177:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23177:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "23170:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "22897:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "22900:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "22894:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22894:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "22908:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "22910:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "22919:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22922:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "22915:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22915:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "22910:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "22890:3:64",
                                "statements": []
                              },
                              "src": "22886:313:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23208:14:64",
                              "value": {
                                "name": "tail_2",
                                "nodeType": "YulIdentifier",
                                "src": "23216:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23208:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22507:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "22518:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22529:4:64",
                            "type": ""
                          }
                        ],
                        "src": "22369:859:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23362:115:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23379:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23390:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23372:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23372:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23372:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23402:69:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "23436:6:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "23444:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23456:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23467:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23452:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23452:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "23410:25:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23410:61:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23402:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23323:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "23334:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "23342:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23353:4:64",
                            "type": ""
                          }
                        ],
                        "src": "23233:244:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23608:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "23618:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23630:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23641:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23626:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23626:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23618:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23660:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "23675:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23683:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23671:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23671:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23653:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23653:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23653:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23577:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "23588:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23599:4:64",
                            "type": ""
                          }
                        ],
                        "src": "23482:251:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23863:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "23873:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23885:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23896:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23881:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23881:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23873:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23915:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "23930:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23938:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23926:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23926:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23908:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23908:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23908:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23832:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "23843:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23854:4:64",
                            "type": ""
                          }
                        ],
                        "src": "23738:250:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24114:98:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24131:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24142:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24124:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24124:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24124:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24154:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "24179:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24191:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24202:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24187:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24187:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "24162:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24162:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24154:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24083:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "24094:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24105:4:64",
                            "type": ""
                          }
                        ],
                        "src": "23993:219:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24391:169:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24408:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24419:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24401:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24401:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24401:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24442:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24453:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24438:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24438:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24458:2:64",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24431:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24431:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24431:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24481:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24492:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24477:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24477:18:64"
                                  },
                                  {
                                    "hexValue": "544f4f5f4c4954544c455f5245434549564544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24497:21:64",
                                    "type": "",
                                    "value": "TOO_LITTLE_RECEIVED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24470:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24470:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24470:49:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24528:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24540:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24551:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24536:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24536:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24528:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_44e24cda2f2a44ef400059021a7190502b0aa1c810f902f32158234f399cf38a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24368:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24382:4:64",
                            "type": ""
                          }
                        ],
                        "src": "24217:343:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24739:177:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24756:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24767:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24749:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24749:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24749:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24790:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24801:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24786:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24786:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24806:2:64",
                                    "type": "",
                                    "value": "27"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24779:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24779:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24779:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24829:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24840:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24825:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24825:18:64"
                                  },
                                  {
                                    "hexValue": "4e4f545f454e4f5547485f4c49515549444954595f4d494e544544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24845:29:64",
                                    "type": "",
                                    "value": "NOT_ENOUGH_LIQUIDITY_MINTED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24818:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24818:57:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24818:57:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24884:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24896:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24907:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24892:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24892:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24884:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_73a58d3096665cdb3d9ecc032123f5a7ad88bd17cf83311559ff7dc040a3dc97__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24716:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24730:4:64",
                            "type": ""
                          }
                        ],
                        "src": "24565:351:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25095:170:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25112:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25123:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25105:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25105:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25105:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25146:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25157:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25142:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25142:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25162:2:64",
                                    "type": "",
                                    "value": "20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25135:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25135:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25135:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25185:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25196:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25181:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25181:18:64"
                                  },
                                  {
                                    "hexValue": "5452414e534645525f46524f4d5f4641494c4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25201:22:64",
                                    "type": "",
                                    "value": "TRANSFER_FROM_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25174:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25174:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25174:50:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25233:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25245:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25256:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25241:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25241:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25233:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_77631768048ee92f9dcf4b9b9d762877d6b9723214862c733f0596708fc219b7__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25072:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25086:4:64",
                            "type": ""
                          }
                        ],
                        "src": "24921:344:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25444:175:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25461:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25472:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25454:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25454:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25454:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25495:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25506:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25491:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25491:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25511:2:64",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25484:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25484:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25484:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25534:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25545:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25530:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25530:18:64"
                                  },
                                  {
                                    "hexValue": "494e434f52524543545f544f4b454e5f57495448445241574e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25550:27:64",
                                    "type": "",
                                    "value": "INCORRECT_TOKEN_WITHDRAWN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25523:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25523:55:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25523:55:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25587:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25599:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25610:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25595:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25595:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25587:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_814a50f1a3828c43ae18c528db69f16334eb614f36232428b94a1dbdc9450251__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25421:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25435:4:64",
                            "type": ""
                          }
                        ],
                        "src": "25270:349:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25798:165:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25815:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25826:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25808:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25808:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25808:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25849:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25860:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25845:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25845:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25865:2:64",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25838:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25838:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25838:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25888:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25899:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25884:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25884:18:64"
                                  },
                                  {
                                    "hexValue": "5452414e534645525f4641494c4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25904:17:64",
                                    "type": "",
                                    "value": "TRANSFER_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25877:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25877:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25877:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25931:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25943:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25954:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25939:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25939:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25931:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25775:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25789:4:64",
                            "type": ""
                          }
                        ],
                        "src": "25624:339:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26142:175:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26159:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26170:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26152:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26152:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26152:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26193:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26204:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26189:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26189:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26209:2:64",
                                    "type": "",
                                    "value": "25"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26182:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26182:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26182:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26232:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26243:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26228:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26228:18:64"
                                  },
                                  {
                                    "hexValue": "57495448445241575f46524f4d5f574554485f4641494c4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26248:27:64",
                                    "type": "",
                                    "value": "WITHDRAW_FROM_WETH_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26221:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26221:55:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26221:55:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26285:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26297:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26308:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26293:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26293:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26285:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9e034c8d2c77a265129cd02b8e6475148503b87b90dbc6e81311be5ce1022dbb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26119:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26133:4:64",
                            "type": ""
                          }
                        ],
                        "src": "25968:349:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26496:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26513:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26524:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26506:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26506:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26506:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26547:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26558:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26543:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26543:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26563:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26536:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26536:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26536:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26586:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26597:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26582:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26582:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c494420504f4f4c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26602:14:64",
                                    "type": "",
                                    "value": "INVALID POOL"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26575:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26575:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26575:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26626:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26638:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26649:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26634:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26634:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26626:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a3ad46e55234c5408e3a1ea5ffe5dc518659762aab3470916c3f62b1468b09f3__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26473:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26487:4:64",
                            "type": ""
                          }
                        ],
                        "src": "26322:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26837:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26854:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26865:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26847:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26847:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26847:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26888:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26899:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26884:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26884:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26904:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26877:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26877:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26877:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26927:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26938:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26923:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26923:18:64"
                                  },
                                  {
                                    "hexValue": "4e6573746564204261746368",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26943:14:64",
                                    "type": "",
                                    "value": "Nested Batch"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26916:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26916:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26916:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26967:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26979:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26990:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26975:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26975:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26967:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ba4a1792a182449048dd70ad064f813fc751bedb907aa87961069a6b2384362e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26814:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26828:4:64",
                            "type": ""
                          }
                        ],
                        "src": "26663:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27178:171:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27195:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27206:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27188:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27188:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27188:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27229:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27240:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27225:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27225:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27245:2:64",
                                    "type": "",
                                    "value": "21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27218:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27218:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27218:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27268:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27279:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27264:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27264:18:64"
                                  },
                                  {
                                    "hexValue": "554e415554484f52495a45445f43414c4c4241434b",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27284:23:64",
                                    "type": "",
                                    "value": "UNAUTHORIZED_CALLBACK"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27257:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27257:51:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27257:51:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27317:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27329:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27340:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27325:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27325:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27317:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c7794b7baa0098f77f3fbdd0bb4bf412ca5eba33792029833fad4b51094ad4d3__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27155:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27169:4:64",
                            "type": ""
                          }
                        ],
                        "src": "27004:345:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27528:169:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27545:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27556:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27538:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27538:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27538:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27579:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27590:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27575:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27575:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27595:2:64",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27568:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27568:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27568:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27618:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27629:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27614:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27614:18:64"
                                  },
                                  {
                                    "hexValue": "4554485f5452414e534645525f4641494c4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27634:21:64",
                                    "type": "",
                                    "value": "ETH_TRANSFER_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27607:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27607:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27607:49:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27665:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27677:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27688:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27673:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27673:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27665:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d383913ea1996930a2623a0d739b8fc033c734c1d71d4759d3ccba1d3a719c29__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27505:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27519:4:64",
                            "type": ""
                          }
                        ],
                        "src": "27354:343:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27876:167:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27893:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27904:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27886:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27886:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27886:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27927:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27938:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27923:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27923:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27943:2:64",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27916:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27916:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27916:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27966:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27977:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27962:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27962:18:64"
                                  },
                                  {
                                    "hexValue": "537761702063616c6c6564207477696365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27982:19:64",
                                    "type": "",
                                    "value": "Swap called twice"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27955:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27955:47:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27955:47:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28011:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28023:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28034:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28019:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28019:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28011:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dc4063f98f18deb853a7e9314b9d1a8e8fa2d9ff6e9d1a2c4b8c202c936285cd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27853:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27867:4:64",
                            "type": ""
                          }
                        ],
                        "src": "27702:341:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28222:167:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28239:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28250:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28232:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28232:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28232:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28273:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28284:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28269:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28269:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28289:2:64",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28262:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28262:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28262:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28312:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28323:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28308:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28308:18:64"
                                  },
                                  {
                                    "hexValue": "42414c414e43455f4f465f4641494c4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28328:19:64",
                                    "type": "",
                                    "value": "BALANCE_OF_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28301:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28301:47:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28301:47:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28357:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28369:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28380:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28365:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28365:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28357:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f14faee7abdc8ae63af1c0c7ba848ed72f3905484adc3738d56d92beb7fae5a7__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28199:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28213:4:64",
                            "type": ""
                          }
                        ],
                        "src": "28048:341:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28568:167:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28585:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28596:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28578:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28578:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28578:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28619:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28630:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28615:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28615:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28635:2:64",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28608:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28608:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28608:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28658:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28669:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28654:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28654:18:64"
                                  },
                                  {
                                    "hexValue": "494e53554646494349454e545f57455448",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28674:19:64",
                                    "type": "",
                                    "value": "INSUFFICIENT_WETH"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28647:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28647:47:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28647:47:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28703:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28715:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28726:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28711:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28711:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28703:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f532690656a5e61a759e1ffcd965f0329a3e96351a84493b6923cb9fbae96245__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28545:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28559:4:64",
                            "type": ""
                          }
                        ],
                        "src": "28394:341:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28841:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "28851:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28863:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28874:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28859:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28859:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28851:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28893:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "28904:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28886:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28886:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28886:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28810:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "28821:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28832:4:64",
                            "type": ""
                          }
                        ],
                        "src": "28740:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29063:494:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29073:51:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "29112:11:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "29099:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29099:25:64"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "29077:18:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29272:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29281:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29284:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "29274:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29274:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29274:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "29147:18:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "29175:12:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "29175:14:64"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "29191:8:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "29171:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "29171:29:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "29202:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "29167:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29167:102:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "29143:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29143:127:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "29136:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29136:135:64"
                              },
                              "nodeType": "YulIf",
                              "src": "29133:155:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29297:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "29315:8:64"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "29325:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29311:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29311:33:64"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "29301:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29353:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "29376:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "29363:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29363:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "29353:6:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29426:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29435:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29438:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "29428:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29428:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29428:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "29398:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29406:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "29395:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29395:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "29392:50:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29451:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "29463:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29471:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29459:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29459:17:64"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "29451:4:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29535:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29544:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29547:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "29537:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29537:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29537:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "29492:4:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "29502:12:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29502:14:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "29522:1:64",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "29525:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "29518:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29518:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "29498:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29498:35:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "29488:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29488:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "29485:66:64"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_array$_t_struct$_InitialPath_$2541_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "29020:8:64",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "29030:11:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "29046:4:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "29052:6:64",
                            "type": ""
                          }
                        ],
                        "src": "28922:635:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29698:494:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29708:51:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "29747:11:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "29734:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29734:25:64"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "29712:18:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29907:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29916:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29919:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "29909:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29909:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29909:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "29782:18:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "29810:12:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "29810:14:64"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "29826:8:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "29806:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "29806:29:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "29837:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "29802:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29802:102:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "29778:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29778:127:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "29771:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29771:135:64"
                              },
                              "nodeType": "YulIf",
                              "src": "29768:155:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29932:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "29950:8:64"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "29960:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29946:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29946:33:64"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "29936:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29988:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "30011:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "29998:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29998:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "29988:6:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30061:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30070:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30073:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "30063:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30063:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30063:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "30033:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30041:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "30030:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30030:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "30027:50:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30086:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "30098:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30106:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30094:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30094:17:64"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "30086:4:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30170:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30179:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30182:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "30172:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30172:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30172:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "30127:4:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "30137:12:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30137:14:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "30157:1:64",
                                            "type": "",
                                            "value": "7"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "30160:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "30153:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30153:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "30133:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30133:35:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "30123:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30123:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "30120:66:64"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_array$_t_struct$_Output_$2559_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "29655:8:64",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "29665:11:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "29681:4:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "29687:6:64",
                            "type": ""
                          }
                        ],
                        "src": "29562:630:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30331:494:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "30341:51:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "30380:11:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "30367:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30367:25:64"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "30345:18:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30540:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30549:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30552:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "30542:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30542:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30542:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "30415:18:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "30443:12:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "30443:14:64"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "30459:8:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "30439:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "30439:29:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "30470:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "30435:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30435:102:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "30411:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30411:127:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "30404:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30404:135:64"
                              },
                              "nodeType": "YulIf",
                              "src": "30401:155:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "30565:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "30583:8:64"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "30593:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30579:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30579:33:64"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "30569:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30621:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "30644:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "30631:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30631:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "30621:6:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30694:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30703:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30706:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "30696:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30696:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30696:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "30666:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30674:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "30663:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30663:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "30660:50:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30719:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "30731:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30739:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30727:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30727:17:64"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "30719:4:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30803:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30812:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30815:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "30805:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30805:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30805:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "30760:4:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "30770:12:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30770:14:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "30790:1:64",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "30793:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "30786:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30786:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "30766:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30766:35:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "30756:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30756:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "30753:66:64"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "30288:8:64",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "30298:11:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "30314:4:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "30320:6:64",
                            "type": ""
                          }
                        ],
                        "src": "30197:628:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30974:494:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "30984:51:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "31023:11:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "31010:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31010:25:64"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "30988:18:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31183:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31192:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31195:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31185:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31185:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31185:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "31058:18:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "31086:12:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "31086:14:64"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "31102:8:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "31082:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "31082:29:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "31113:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "31078:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31078:102:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "31054:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31054:127:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "31047:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31047:135:64"
                              },
                              "nodeType": "YulIf",
                              "src": "31044:155:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31208:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "31226:8:64"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "31236:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31222:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31222:33:64"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "31212:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31264:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "31287:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "31274:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31274:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "31264:6:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31337:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31346:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31349:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31339:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31339:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31339:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "31309:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31317:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31306:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31306:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "31303:50:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31362:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "31374:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31382:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31370:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31370:17:64"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "31362:4:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31446:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31455:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31458:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31448:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31448:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31448:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "31403:4:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "31413:12:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31413:14:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "31433:1:64",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "31436:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "31429:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31429:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "31409:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31409:35:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31399:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31399:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "31396:66:64"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_array$_t_struct$_PercentagePath_$2550_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "30931:8:64",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "30941:11:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "30957:4:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "30963:6:64",
                            "type": ""
                          }
                        ],
                        "src": "30830:638:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31567:486:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31577:51:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "31616:11:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "31603:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31603:25:64"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "31581:18:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31776:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31785:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31788:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31778:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31778:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31778:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "31651:18:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "31679:12:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "31679:14:64"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "31695:8:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "31675:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "31675:29:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "31706:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "31671:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31671:102:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "31647:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31647:127:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "31640:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31640:135:64"
                              },
                              "nodeType": "YulIf",
                              "src": "31637:155:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31801:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "31819:8:64"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "31829:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31815:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31815:33:64"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "31805:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31857:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "31880:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "31867:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31867:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "31857:6:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31930:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31939:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31942:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31932:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31932:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31932:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "31902:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31910:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31899:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31899:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "31896:50:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31955:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "31967:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31975:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31963:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31963:17:64"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "31955:4:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32031:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32040:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32043:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "32033:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32033:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32033:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "31996:4:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "32006:12:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32006:14:64"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "32022:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "32002:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32002:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31992:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31992:38:64"
                              },
                              "nodeType": "YulIf",
                              "src": "31989:58:64"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "31524:8:64",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "31534:11:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "31550:4:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "31556:6:64",
                            "type": ""
                          }
                        ],
                        "src": "31473:580:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32164:281:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32174:51:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "32213:11:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32200:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32200:25:64"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "32178:18:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32373:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32382:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32385:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "32375:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32375:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32375:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "32248:18:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "32276:12:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "32276:14:64"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "32292:8:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "32272:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "32272:29:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "32303:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "32268:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32268:102:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "32244:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32244:127:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "32237:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32237:135:64"
                              },
                              "nodeType": "YulIf",
                              "src": "32234:155:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32398:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "32410:8:64"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "32420:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32406:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32406:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "32398:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_struct$_InitialPath_$2541_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "32129:8:64",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "32139:11:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "32155:4:64",
                            "type": ""
                          }
                        ],
                        "src": "32058:387:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32549:281:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32559:51:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "32598:11:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32585:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32585:25:64"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "32563:18:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32758:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32767:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32770:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "32760:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32760:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32760:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "32633:18:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "32661:12:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "32661:14:64"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "32677:8:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "32657:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "32657:29:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "32688:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "32653:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32653:102:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "32629:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32629:127:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "32622:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32622:135:64"
                              },
                              "nodeType": "YulIf",
                              "src": "32619:155:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32783:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "32795:8:64"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "32805:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32791:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32791:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "32783:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_struct$_Path_$2501_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "32514:8:64",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "32524:11:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "32540:4:64",
                            "type": ""
                          }
                        ],
                        "src": "32450:380:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32944:281:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32954:51:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "32993:11:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32980:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32980:25:64"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "32958:18:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33153:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33162:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33165:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "33155:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33155:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33155:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "33028:18:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "33056:12:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "33056:14:64"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "33072:8:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "33052:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "33052:29:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "33083:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "33048:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "33048:102:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "33024:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33024:127:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "33017:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33017:135:64"
                              },
                              "nodeType": "YulIf",
                              "src": "33014:155:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33178:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "33190:8:64"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "33200:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33186:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33186:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "33178:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_struct$_PercentagePath_$2550_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "32909:8:64",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "32919:11:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "32935:4:64",
                            "type": ""
                          }
                        ],
                        "src": "32835:390:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33276:205:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "33286:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33302:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "33296:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33296:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "33286:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33314:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "33336:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33344:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33332:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33332:15:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "33318:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33422:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "33424:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33424:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33424:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "33365:10:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33377:18:64",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "33362:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33362:34:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "33401:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "33413:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "33398:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33398:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "33359:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33359:62:64"
                              },
                              "nodeType": "YulIf",
                              "src": "33356:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33460:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "33464:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33453:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33453:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33453:22:64"
                            }
                          ]
                        },
                        "name": "allocate_memory_4577",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "33265:6:64",
                            "type": ""
                          }
                        ],
                        "src": "33230:251:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33532:211:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "33542:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33558:4:64",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "33552:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33552:11:64"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "33542:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33572:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "33594:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33602:4:64",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33590:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33590:17:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "33576:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33682:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "33684:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33684:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33684:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "33625:10:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33637:18:64",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "33622:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33622:34:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "33661:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "33673:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "33658:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33658:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "33619:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33619:62:64"
                              },
                              "nodeType": "YulIf",
                              "src": "33616:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33720:4:64",
                                    "type": "",
                                    "value": "0x40"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "33726:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33713:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33713:24:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33713:24:64"
                            }
                          ]
                        },
                        "name": "allocate_memory_4578",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "33521:6:64",
                            "type": ""
                          }
                        ],
                        "src": "33486:257:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33793:289:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "33803:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33819:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "33813:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33813:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "33803:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33831:117:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "33853:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "33869:4:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "33875:2:64",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "33865:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "33865:13:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33880:66:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "33861:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33861:86:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33849:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33849:99:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "33835:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "34023:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "34025:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34025:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34025:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "33966:10:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33978:18:64",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "33963:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33963:34:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "34002:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "34014:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "33999:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33999:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "33960:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33960:62:64"
                              },
                              "nodeType": "YulIf",
                              "src": "33957:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34061:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "34065:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34054:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34054:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34054:22:64"
                            }
                          ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "33773:4:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "33782:6:64",
                            "type": ""
                          }
                        ],
                        "src": "33748:334:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "34167:114:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "34211:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "34213:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34213:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34213:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "34183:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34191:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "34180:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34180:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "34177:56:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "34242:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34258:1:64",
                                        "type": "",
                                        "value": "5"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "34261:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "34254:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34254:14:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34270:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "34250:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34250:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "34242:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_array_struct_TokenAmount_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "34147:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "34158:4:64",
                            "type": ""
                          }
                        ],
                        "src": "34087:194:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "34332:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "34363:168:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34384:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34387:77:64",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "34377:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34377:88:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34377:88:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34485:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34488:4:64",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "34478:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34478:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34478:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34513:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34516:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "34506:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34506:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34506:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "34352:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "34345:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34345:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "34342:189:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "34540:14:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "34549:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "34552:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "34545:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34545:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "34540:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "34317:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "34320:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "34326:1:64",
                            "type": ""
                          }
                        ],
                        "src": "34286:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "34629:418:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34639:16:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "34654:1:64",
                                "type": "",
                                "value": "1"
                              },
                              "variables": [
                                {
                                  "name": "power_1",
                                  "nodeType": "YulTypedName",
                                  "src": "34643:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "34664:16:64",
                              "value": {
                                "name": "power_1",
                                "nodeType": "YulIdentifier",
                                "src": "34673:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "34664:5:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "34689:13:64",
                              "value": {
                                "name": "_base",
                                "nodeType": "YulIdentifier",
                                "src": "34697:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "base",
                                  "nodeType": "YulIdentifier",
                                  "src": "34689:4:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "34753:288:64",
                                "statements": [
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "34858:22:64",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "panic_error_0x11",
                                              "nodeType": "YulIdentifier",
                                              "src": "34860:16:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "34860:18:64"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "34860:18:64"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "34773:4:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "34783:66:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                            },
                                            {
                                              "name": "base",
                                              "nodeType": "YulIdentifier",
                                              "src": "34851:4:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "34779:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34779:77:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "34770:2:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34770:87:64"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "34767:113:64"
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "34919:29:64",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "34921:25:64",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "power",
                                                "nodeType": "YulIdentifier",
                                                "src": "34934:5:64"
                                              },
                                              {
                                                "name": "base",
                                                "nodeType": "YulIdentifier",
                                                "src": "34941:4:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "34930:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "34930:16:64"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "power",
                                              "nodeType": "YulIdentifier",
                                              "src": "34921:5:64"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "34900:8:64"
                                        },
                                        {
                                          "name": "power_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "34910:7:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "34896:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34896:22:64"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "34893:55:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "34961:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "34973:4:64"
                                        },
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "34979:4:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nodeType": "YulIdentifier",
                                        "src": "34969:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34969:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "base",
                                        "nodeType": "YulIdentifier",
                                        "src": "34961:4:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "34997:34:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "power_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "35013:7:64"
                                        },
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "35022:8:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shr",
                                        "nodeType": "YulIdentifier",
                                        "src": "35009:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35009:22:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "exponent",
                                        "nodeType": "YulIdentifier",
                                        "src": "34997:8:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "34722:8:64"
                                  },
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34732:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "34719:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34719:21:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "34741:3:64",
                                "statements": []
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "34715:3:64",
                                "statements": []
                              },
                              "src": "34711:330:64"
                            }
                          ]
                        },
                        "name": "checked_exp_helper",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "_base",
                            "nodeType": "YulTypedName",
                            "src": "34593:5:64",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "34600:8:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "34613:5:64",
                            "type": ""
                          },
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "34620:4:64",
                            "type": ""
                          }
                        ],
                        "src": "34565:482:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35120:72:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "35130:56:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "35160:4:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "exponent",
                                        "nodeType": "YulIdentifier",
                                        "src": "35170:8:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35180:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "35166:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35166:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "checked_exp_unsigned",
                                  "nodeType": "YulIdentifier",
                                  "src": "35139:20:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35139:47:64"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "35130:5:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_exp_t_uint256_t_uint8",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "35091:4:64",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "35097:8:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "35110:5:64",
                            "type": ""
                          }
                        ],
                        "src": "35052:140:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35256:807:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "35294:52:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "35308:10:64",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "35317:1:64",
                                      "type": "",
                                      "value": "1"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "35308:5:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "35331:5:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "35276:8:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "35269:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35269:16:64"
                              },
                              "nodeType": "YulIf",
                              "src": "35266:80:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "35379:52:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "35393:10:64",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "35402:1:64",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "35393:5:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "35416:5:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "35365:4:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "35358:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35358:12:64"
                              },
                              "nodeType": "YulIf",
                              "src": "35355:76:64"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "35467:52:64",
                                    "statements": [
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "35481:10:64",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "35490:1:64",
                                          "type": "",
                                          "value": "1"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "35481:5:64"
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulLeave",
                                        "src": "35504:5:64"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "35460:59:64",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35465:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "35535:123:64",
                                    "statements": [
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "35570:22:64",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "panic_error_0x11",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "35572:16:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "35572:18:64"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "35572:18:64"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "exponent",
                                              "nodeType": "YulIdentifier",
                                              "src": "35555:8:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "35565:3:64",
                                              "type": "",
                                              "value": "255"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "35552:2:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "35552:17:64"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "35549:43:64"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "35605:25:64",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "exponent",
                                              "nodeType": "YulIdentifier",
                                              "src": "35618:8:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "35628:1:64",
                                              "type": "",
                                              "value": "1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "35614:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "35614:16:64"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "35605:5:64"
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulLeave",
                                        "src": "35643:5:64"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "35528:130:64",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35533:1:64",
                                    "type": "",
                                    "value": "2"
                                  }
                                }
                              ],
                              "expression": {
                                "name": "base",
                                "nodeType": "YulIdentifier",
                                "src": "35447:4:64"
                              },
                              "nodeType": "YulSwitch",
                              "src": "35440:218:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "35756:70:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "35770:28:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "35783:4:64"
                                        },
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "35789:8:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "exp",
                                        "nodeType": "YulIdentifier",
                                        "src": "35779:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35779:19:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "35770:5:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "35811:5:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "base",
                                            "nodeType": "YulIdentifier",
                                            "src": "35680:4:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "35686:2:64",
                                            "type": "",
                                            "value": "11"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "35677:2:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "35677:12:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "exponent",
                                            "nodeType": "YulIdentifier",
                                            "src": "35694:8:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "35704:2:64",
                                            "type": "",
                                            "value": "78"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "35691:2:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "35691:16:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "35673:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35673:35:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "base",
                                            "nodeType": "YulIdentifier",
                                            "src": "35717:4:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "35723:3:64",
                                            "type": "",
                                            "value": "307"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "35714:2:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "35714:13:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "exponent",
                                            "nodeType": "YulIdentifier",
                                            "src": "35732:8:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "35742:2:64",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "35729:2:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "35729:16:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "35710:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35710:36:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "35670:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35670:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "35667:159:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "35835:57:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "35877:4:64"
                                  },
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "35883:8:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "checked_exp_helper",
                                  "nodeType": "YulIdentifier",
                                  "src": "35858:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35858:34:64"
                              },
                              "variables": [
                                {
                                  "name": "power_1",
                                  "nodeType": "YulTypedName",
                                  "src": "35839:7:64",
                                  "type": ""
                                },
                                {
                                  "name": "base_1",
                                  "nodeType": "YulTypedName",
                                  "src": "35848:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "35997:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "35999:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35999:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "35999:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "35907:7:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35920:66:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                      },
                                      {
                                        "name": "base_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "35988:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "div",
                                      "nodeType": "YulIdentifier",
                                      "src": "35916:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35916:79:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "35904:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35904:92:64"
                              },
                              "nodeType": "YulIf",
                              "src": "35901:118:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "36028:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "36041:7:64"
                                  },
                                  {
                                    "name": "base_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "36050:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "36037:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36037:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "36028:5:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_exp_unsigned",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "35227:4:64",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "35233:8:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "35246:5:64",
                            "type": ""
                          }
                        ],
                        "src": "35197:866:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36120:176:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "36239:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "36241:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "36241:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "36241:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "36151:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "36144:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "36144:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "36137:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36137:17:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "36159:1:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "36166:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "36234:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "36162:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "36162:74:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "36156:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36156:81:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "36133:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36133:105:64"
                              },
                              "nodeType": "YulIf",
                              "src": "36130:131:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "36270:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "36285:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "36288:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "36281:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36281:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "36270:7:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "36099:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "36102:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "36108:7:64",
                            "type": ""
                          }
                        ],
                        "src": "36068:228:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36354:205:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "36364:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "36373:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "36368:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "36433:63:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "36458:3:64"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "36463:1:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "36454:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "36454:11:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "36477:3:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "36482:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "36473:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "36473:11:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "36467:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "36467:18:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "36447:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "36447:39:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "36447:39:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "36394:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "36397:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "36391:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36391:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "36405:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "36407:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "36416:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "36419:2:64",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "36412:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "36412:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "36407:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "36387:3:64",
                                "statements": []
                              },
                              "src": "36383:113:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "36522:31:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "36535:3:64"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "36540:6:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "36531:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "36531:16:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "36549:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "36524:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "36524:27:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "36524:27:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "36511:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "36514:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "36508:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36508:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "36505:48:64"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "36332:3:64",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "36337:3:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "36342:6:64",
                            "type": ""
                          }
                        ],
                        "src": "36301:258:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36611:148:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "36702:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "36704:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "36704:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "36704:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "36627:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36634:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "36624:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36624:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "36621:103:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "36733:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "36744:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36751:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "36740:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36740:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "36733:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "36593:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "36603:3:64",
                            "type": ""
                          }
                        ],
                        "src": "36564:195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36796:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36813:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36816:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36806:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36806:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36806:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36910:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36913:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36903:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36903:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36903:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36934:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36937:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "36927:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36927:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36927:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "36764:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36985:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37002:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37005:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36995:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36995:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36995:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37099:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37102:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37092:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37092:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37092:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37123:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37126:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "37116:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37116:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37116:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "36953:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37174:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37191:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37194:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37184:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37184:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37184:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37288:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37291:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37281:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37281:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37281:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37312:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "37315:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "37305:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37305:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37305:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "37142:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37376:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "37463:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "37472:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "37475:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "37465:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37465:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "37465:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "37399:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "37410:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "37417:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "37406:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "37406:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "37396:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37396:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "37389:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37389:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "37386:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "37365:5:64",
                            "type": ""
                          }
                        ],
                        "src": "37331:154:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37532:76:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "37586:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "37595:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "37598:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "37588:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37588:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "37588:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "37555:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "37576:5:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "37569:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "37569:13:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "37562:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "37562:21:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "37552:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37552:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "37545:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37545:40:64"
                              },
                              "nodeType": "YulIf",
                              "src": "37542:60:64"
                            }
                          ]
                        },
                        "name": "validator_revert_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "37521:5:64",
                            "type": ""
                          }
                        ],
                        "src": "37490:118:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_array_bytes_calldata_dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, shl(5, length)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_array_struct_TokenInput_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_struct_TokenAmount_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let src := add(offset, _2)\n        let _3 := 0x60\n        if gt(add(add(offset, mul(_1, _3)), _2), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _1) { i := add(i, 1) }\n        {\n            mstore(dst, abi_decode_struct_TokenInput(src, end))\n            dst := add(dst, _2)\n            src := add(src, _3)\n        }\n        array := dst_1\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_struct_TokenInput(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0x60) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x60)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        value := memPtr\n        let value_1 := calldataload(headStart)\n        validator_revert_address(value_1)\n        mstore(memPtr, value_1)\n        let value_2 := calldataload(add(headStart, 32))\n        validator_revert_bool(value_2)\n        mstore(add(memPtr, 32), value_2)\n        mstore(add(memPtr, 64), calldataload(add(headStart, 64)))\n    }\n    function abi_decode_uint8(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_decode_tuple_t_addresst_uint256t_address(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_address(value_1)\n        value2 := value_1\n    }\n    function abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptrt_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let _1 := 32\n        value1 := calldataload(add(headStart, _1))\n        let _2 := 64\n        let offset := calldataload(add(headStart, _2))\n        let _3 := 0xffffffffffffffff\n        if gt(offset, _3) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _3) { revert(0, 0) }\n        let _4 := add(headStart, offset_1)\n        if iszero(slt(add(_4, 0x1f), dataEnd)) { revert(0, 0) }\n        let _5 := calldataload(_4)\n        let dst := allocate_memory(array_allocation_size_array_struct_TokenAmount_dyn(_5))\n        let dst_1 := dst\n        mstore(dst, _5)\n        dst := add(dst, _1)\n        let src := add(_4, _1)\n        if gt(add(add(_4, shl(6, _5)), _1), dataEnd) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _5) { i := add(i, 1) }\n        {\n            if slt(sub(dataEnd, src), _2) { revert(0, 0) }\n            let value_1 := allocate_memory_4577()\n            let value_2 := calldataload(src)\n            validator_revert_address(value_2)\n            mstore(value_1, value_2)\n            mstore(add(value_1, _1), calldataload(add(src, _1)))\n            mstore(dst, value_1)\n            dst := add(dst, _1)\n            src := add(src, _2)\n        }\n        value4 := dst_1\n    }\n    function abi_decode_tuple_t_addresst_uint256t_bytes_calldata_ptrt_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        value4 := calldataload(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := abi_decode_uint8(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n    }\n    function abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_decode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        let dst := allocate_memory(array_allocation_size_array_struct_TokenAmount_dyn(_3))\n        let dst_1 := dst\n        mstore(dst, _3)\n        dst := add(dst, _1)\n        let src := add(_2, _1)\n        if gt(add(add(_2, shl(6, _3)), _1), dataEnd) { revert(0, 0) }\n        let i := 0\n        let i_1 := i\n        for { } lt(i_1, _3) { i_1 := add(i_1, 1) }\n        {\n            let _4 := 0x40\n            if slt(sub(dataEnd, src), _4) { revert(i, i) }\n            let value := allocate_memory_4578()\n            let value_1 := mload(src)\n            validator_revert_address(value_1)\n            mstore(value, value_1)\n            mstore(add(value, _1), mload(add(src, _1)))\n            mstore(dst, value)\n            dst := add(dst, _1)\n            src := add(src, _4)\n        }\n        value0 := dst_1\n    }\n    function abi_decode_tuple_t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_array_struct_TokenInput_dyn(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptrt_addresst_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_array_struct_TokenInput_dyn(add(headStart, offset), dataEnd)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        value2 := calldataload(add(headStart, 64))\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n    }\n    function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let array := allocate_memory(add(and(add(_3, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 32))\n        mstore(array, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_2, 32), add(array, 32), _3)\n        value0 := array\n    }\n    function abi_decode_tuple_t_struct$_ComplexPathParams_$2572_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if slt(sub(dataEnd, _1), 96) { revert(0, 0) }\n        value0 := _1\n    }\n    function abi_decode_tuple_t_struct$_ExactInputParams_$2523_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if slt(sub(dataEnd, _1), 128) { revert(0, 0) }\n        value0 := _1\n    }\n    function abi_decode_tuple_t_struct$_ExactInputSingleParams_$2512_calldata_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if slt(sub(dataEnd, _1), 160) { revert(0, 0) }\n        value0 := _1\n    }\n    function abi_decode_tuple_t_struct$_TokenInput_$2530_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_struct_TokenInput(headStart, dataEnd)\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_uint256t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_array_bytes_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n    }\n    function abi_decode_tuple_t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint64(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_bytes_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        calldatacopy(add(pos, 0x20), start, length)\n        mstore(add(add(pos, length), 0x20), 0)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    { end := pos }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_rational_0_by_1__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_address_t_address_t_bool_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_bool_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), iszero(iszero(value2)))\n        mstore(add(headStart, 96), and(value3, 0xff))\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 256)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), iszero(iszero(value4)))\n        mstore(add(headStart, 160), and(value5, 0xff))\n        mstore(add(headStart, 192), value6)\n        mstore(add(headStart, 224), value7)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 224)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, 0xff))\n        mstore(add(headStart, 160), value5)\n        mstore(add(headStart, 192), value6)\n    }\n    function abi_encode_tuple_t_address_t_bytes_calldata_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_bytes_calldata(value1, value2, add(headStart, 64))\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, shl(5, length)), 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0))\n            tail_2 := abi_encode_bytes(mload(srcPtr), tail_2)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes_calldata(value0, value1, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_44e24cda2f2a44ef400059021a7190502b0aa1c810f902f32158234f399cf38a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"TOO_LITTLE_RECEIVED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_73a58d3096665cdb3d9ecc032123f5a7ad88bd17cf83311559ff7dc040a3dc97__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"NOT_ENOUGH_LIQUIDITY_MINTED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_77631768048ee92f9dcf4b9b9d762877d6b9723214862c733f0596708fc219b7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"TRANSFER_FROM_FAILED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_814a50f1a3828c43ae18c528db69f16334eb614f36232428b94a1dbdc9450251__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"INCORRECT_TOKEN_WITHDRAWN\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"TRANSFER_FAILED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9e034c8d2c77a265129cd02b8e6475148503b87b90dbc6e81311be5ce1022dbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"WITHDRAW_FROM_WETH_FAILED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_a3ad46e55234c5408e3a1ea5ffe5dc518659762aab3470916c3f62b1468b09f3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"INVALID POOL\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ba4a1792a182449048dd70ad064f813fc751bedb907aa87961069a6b2384362e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"Nested Batch\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_c7794b7baa0098f77f3fbdd0bb4bf412ca5eba33792029833fad4b51094ad4d3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"UNAUTHORIZED_CALLBACK\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d383913ea1996930a2623a0d739b8fc033c734c1d71d4759d3ccba1d3a719c29__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"ETH_TRANSFER_FAILED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_dc4063f98f18deb853a7e9314b9d1a8e8fa2d9ff6e9d1a2c4b8c202c936285cd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"Swap called twice\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f14faee7abdc8ae63af1c0c7ba848ed72f3905484adc3738d56d92beb7fae5a7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"BALANCE_OF_FAILED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f532690656a5e61a759e1ffcd965f0329a3e96351a84493b6923cb9fbae96245__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"INSUFFICIENT_WETH\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function access_calldata_tail_t_array$_t_struct$_InitialPath_$2541_calldata_ptr_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), shl(5, length))) { revert(0, 0) }\n    }\n    function access_calldata_tail_t_array$_t_struct$_Output_$2559_calldata_ptr_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), shl(7, length))) { revert(0, 0) }\n    }\n    function access_calldata_tail_t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), shl(5, length))) { revert(0, 0) }\n    }\n    function access_calldata_tail_t_array$_t_struct$_PercentagePath_$2550_calldata_ptr_$dyn_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), shl(5, length))) { revert(0, 0) }\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function access_calldata_tail_t_struct$_InitialPath_$2541_calldata_ptr(base_ref, ptr_to_tail) -> addr\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61))) { revert(0, 0) }\n        addr := add(base_ref, rel_offset_of_tail)\n    }\n    function access_calldata_tail_t_struct$_Path_$2501_calldata_ptr(base_ref, ptr_to_tail) -> addr\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1))) { revert(0, 0) }\n        addr := add(base_ref, rel_offset_of_tail)\n    }\n    function access_calldata_tail_t_struct$_PercentagePath_$2550_calldata_ptr(base_ref, ptr_to_tail) -> addr\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81))) { revert(0, 0) }\n        addr := add(base_ref, rel_offset_of_tail)\n    }\n    function allocate_memory_4577() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 64)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function allocate_memory_4578() -> memPtr\n    {\n        memPtr := mload(0x40)\n        let newFreePtr := add(memPtr, 0x40)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(0x40, newFreePtr)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_array_struct_TokenAmount_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_exp_helper(_base, exponent) -> power, base\n    {\n        let power_1 := 1\n        power := power_1\n        base := _base\n        for { } gt(exponent, power_1) { }\n        {\n            if gt(base, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base)) { panic_error_0x11() }\n            if and(exponent, power_1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(power_1, exponent)\n        }\n    }\n    function checked_exp_t_uint256_t_uint8(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, and(exponent, 0xff))\n    }\n    function checked_exp_unsigned(base, exponent) -> power\n    {\n        if iszero(exponent)\n        {\n            power := 1\n            leave\n        }\n        if iszero(base)\n        {\n            power := 0\n            leave\n        }\n        switch base\n        case 1 {\n            power := 1\n            leave\n        }\n        case 2 {\n            if gt(exponent, 255) { panic_error_0x11() }\n            power := shl(exponent, 1)\n            leave\n        }\n        if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n        {\n            power := exp(base, exponent)\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent)\n        if gt(power_1, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "23672": [
                  {
                    "length": 32,
                    "start": 745
                  },
                  {
                    "length": 32,
                    "start": 1754
                  },
                  {
                    "length": 32,
                    "start": 4342
                  },
                  {
                    "length": 32,
                    "start": 5062
                  },
                  {
                    "length": 32,
                    "start": 5698
                  },
                  {
                    "length": 32,
                    "start": 6880
                  },
                  {
                    "length": 32,
                    "start": 7781
                  },
                  {
                    "length": 32,
                    "start": 8526
                  },
                  {
                    "length": 32,
                    "start": 8921
                  },
                  {
                    "length": 32,
                    "start": 9621
                  },
                  {
                    "length": 32,
                    "start": 10098
                  },
                  {
                    "length": 32,
                    "start": 10457
                  },
                  {
                    "length": 32,
                    "start": 11075
                  },
                  {
                    "length": 32,
                    "start": 11519
                  },
                  {
                    "length": 32,
                    "start": 12069
                  },
                  {
                    "length": 32,
                    "start": 13698
                  }
                ],
                "23676": [
                  {
                    "length": 32,
                    "start": 1078
                  },
                  {
                    "length": 32,
                    "start": 4170
                  },
                  {
                    "length": 32,
                    "start": 12430
                  }
                ],
                "23679": [
                  {
                    "length": 32,
                    "start": 417
                  },
                  {
                    "length": 32,
                    "start": 11877
                  },
                  {
                    "length": 32,
                    "start": 14296
                  }
                ]
              },
              "linkReferences": {},
              "object": "6080604052600436106101845760003560e01c806377631981116100d6578063a9b62c231161007f578063ced10b4911610059578063ced10b4914610404578063cf58879a14610424578063e16d9ce51461045857600080fd5b8063a9b62c23146103b1578063b96c5c0e146103d1578063bd50c7b1146103e457600080fd5b806394ae4ab2116100b057806394ae4ab21461036b57806398a691de1461038b5780639fa744911461039e57600080fd5b8063776319811461030b578063783312d91461032b5780639128efda1461034b57600080fd5b80631e897afb116101385780632cfcb94f116101125780632cfcb94f146102b1578063403335a8146102c45780634da31827146102d757600080fd5b80631e897afb14610246578063250558dc146102665780632c0d9a011461029e57600080fd5b806312210e8a1161016957806312210e8a1461020b5780631aa349a8146102135780631ab5d6c81461023357600080fd5b80630b0d1b1e146101d25780630f93d439146101f857600080fd5b366101cd573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101cb57600080fd5b005b600080fd5b6101e56101e03660046140c0565b610478565b6040519081526020015b60405180910390f35b6101e56102063660046140fb565b6106c1565b6101cb6108cd565b34801561021f57600080fd5b506101cb61022e366004613ce1565b6108df565b6101e561024136600461419b565b610a11565b610259610254366004613d9f565b610c7d565b6040516101ef919061434a565b610279610274366004613adf565b61100a565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101ef565b6101e56102ac3660046140c0565b6110dd565b6101e56102bf366004613eda565b611340565b6101cb6102d2366004614228565b6115f0565b3480156102e357600080fd5b506102797f000000000000000000000000000000000000000000000000000000000000000081565b34801561031757600080fd5b506101cb610326366004613d45565b6116b9565b34801561033757600080fd5b506101cb610346366004613bd2565b6117e6565b34801561035757600080fd5b506101cb610366366004613b34565b611a86565b34801561037757600080fd5b506101cb610386366004613b34565b611b0f565b6101e5610399366004613b76565b611b1f565b6101e56103ac3660046140fb565b611ca8565b3480156103bd57600080fd5b506101cb6103cc366004613d45565b611ce4565b6101cb6103df366004614085565b611d42565b3480156103f057600080fd5b506101cb6103ff366004613f9d565b612a14565b34801561041057600080fd5b506101cb61041f366004613f9d565b612bd2565b34801561043057600080fd5b506102797f000000000000000000000000000000000000000000000000000000000000000081565b34801561046457600080fd5b506101cb61047336600461416b565b612e5e565b60006104d261048a6020840184613aa5565b61049760608501856143f1565b60008181106104a8576104a861489a565b90506020028101906104ba919061455a565b6104c8906020810190613aa5565b8460200135612f0e565b60005b6104e260608401846143f1565b9050811015610648576105306104fb60608501856143f1565b8381811061050b5761050b61489a565b905060200281019061051d919061455a565b61052b906020810190613aa5565b61301c565b61053d60608401846143f1565b8281811061054d5761054d61489a565b905060200281019061055f919061455a565b61056d906020810190613aa5565b73ffffffffffffffffffffffffffffffffffffffff1663627dd56a61059560608601866143f1565b848181106105a5576105a561489a565b90506020028101906105b7919061455a565b6105c59060208101906144c1565b6040518363ffffffff1660e01b81526004016105e29291906143ca565b602060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106349190614152565b91508061064081614832565b9150506104d5565b5081604001358110156106bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f544f4f5f4c4954544c455f52454345495645440000000000000000000000000060448201526064015b60405180910390fd5b919050565b600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663f18d03cc61070f6080850160608601613aa5565b336107206060870160408801613aa5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529183166024830152909116604482015284356064820152608401600060405180830381600087803b15801561079d57600080fd5b505af11580156107b1573d6000803e3d6000fd5b506107c6925050506060830160408401613aa5565b73ffffffffffffffffffffffffffffffffffffffff1663627dd56a6107ee60808501856144c1565b6040518363ffffffff1660e01b815260040161080b9291906143ca565b602060405180830381600087803b15801561082557600080fd5b505af1158015610839573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085d9190614152565b905081602001358110156106bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f544f4f5f4c4954544c455f52454345495645440000000000000000000000000060448201526064016106b3565b47156108dd576108dd33476131c0565b565b6108e88561301c565b6108f48533878761328a565b6040517faf8c09bf00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff87169063af8c09bf9061094b90879087906004016143ca565b602060405180830381600087803b15801561096557600080fd5b505af1158015610979573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099d9190614152565b905081811015610a09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f544f4f5f4c4954544c455f52454345495645440000000000000000000000000060448201526064016106b3565b505050505050565b6000805b82811015610bd557610a3284848381811061050b5761050b61489a565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055838382818110610a6e57610a6e61489a565b9050602002810190610a80919061455a565b610a8e906020810190613aa5565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055838382818110610ae557610ae561489a565b9050602002810190610af7919061455a565b610b05906020810190613aa5565b73ffffffffffffffffffffffffffffffffffffffff1663053da1c8858584818110610b3257610b3261489a565b9050602002810190610b44919061455a565b610b529060208101906144c1565b6040518363ffffffff1660e01b8152600401610b6f9291906143ca565b602060405180830381600087803b158015610b8957600080fd5b505af1158015610b9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc19190614152565b915080610bcd81614832565b915050610a15565b506000805460017fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092558154168117905583811015610c76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f544f4f5f4c4954544c455f52454345495645440000000000000000000000000060448201526064016106b3565b9392505050565b60608167ffffffffffffffff811115610c9857610c986148c9565b604051908082528060200260200182016040528015610ccb57816020015b6060815260200190600190039081610cb65790505b5090506000805b83811015611002576000610d3d868684818110610cf157610cf161489a565b9050602002810190610d0391906144c1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506133fb92505050565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f0f93d439000000000000000000000000000000000000000000000000000000001480610dd057507fffffffff0000000000000000000000000000000000000000000000000000000081167f9fa7449100000000000000000000000000000000000000000000000000000000145b15610e46578215610e3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f537761702063616c6c656420747769636500000000000000000000000000000060448201526064016106b3565b60019250610ef2565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f1e897afb000000000000000000000000000000000000000000000000000000001415610ef2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6573746564204261746368000000000000000000000000000000000000000060448201526064016106b3565b60008030888886818110610f0857610f0861489a565b9050602002810190610f1a91906144c1565b604051610f289291906142ee565b600060405180830381855af49150503d8060008114610f63576040519150601f19603f3d011682016040523d82523d6000602084013e610f68565b606091505b509150915081610fce57604481511015610f8157600080fd5b60048101905080806020019051810190610f9b9190613fd3565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b391906143de565b80868581518110610fe157610fe161489a565b60200260200101819052505050508080610ffa90614832565b915050610cd2565b505092915050565b6040517f250558dc00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063250558dc906110839087908790879060040161431a565b602060405180830381600087803b15801561109d57600080fd5b505af11580156110b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d59190613ac2565b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663f18d03cc6111286020850185613aa5565b3361113660608701876143f1565b60008181106111475761114761489a565b9050602002810190611159919061455a565b611167906020810190613aa5565b60405160e085901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff93841660048201529183166024830152909116604482015260208501356064820152608401600060405180830381600087803b1580156111e757600080fd5b505af11580156111fb573d6000803e3d6000fd5b5050505060005b61120f60608401846143f1565b9050811015610648576112286104fb60608501856143f1565b61123560608401846143f1565b828181106112455761124561489a565b9050602002810190611257919061455a565b611265906020810190613aa5565b73ffffffffffffffffffffffffffffffffffffffff1663627dd56a61128d60608601866143f1565b8481811061129d5761129d61489a565b90506020028101906112af919061455a565b6112bd9060208101906144c1565b6040518363ffffffff1660e01b81526004016112da9291906143ca565b602060405180830381600087803b1580156112f457600080fd5b505af1158015611308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132c9190614152565b91508061133881614832565b915050611202565b600061134b8561301c565b60005b86518110156114d4578681815181106113695761136961489a565b602002602001015160200151156113c4576113bf87828151811061138f5761138f61489a565b602002602001015160000151878984815181106113ae576113ae61489a565b602002602001015160400151612f0e565b6114c2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f18d03cc8883815181106114125761141261489a565b60200260200101516000015133898b86815181106114325761143261489a565b6020026020010151604001516040518563ffffffff1660e01b815260040161148f949392919073ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b600060405180830381600087803b1580156114a957600080fd5b505af11580156114bd573d6000803e3d6000fd5b505050505b806114cc81614832565b91505061134e565b506040517f7ba0e2e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861690637ba0e2e79061152990869086906004016143ca565b602060405180830381600087803b15801561154357600080fd5b505af1158015611557573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157b9190614152565b9050838110156115e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4e4f545f454e4f5547485f4c49515549444954595f4d494e544544000000000060448201526064016106b3565b95945050505050565b6040517fc0a47c930000000000000000000000000000000000000000000000000000000081523360048201523060248201526001604482015260ff841660648201526084810183905260a481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063c0a47c939060c4015b600060405180830381600087803b15801561169c57600080fd5b505af11580156116b0573d6000803e3d6000fd5b50505050505050565b6040513360248201523060448201526064810186905260848101859052600160a482015260ff841660c482015260e48101839052610104810182905260009073ffffffffffffffffffffffffffffffffffffffff881690638fcbaf0c90610124015b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161176991906142fe565b6000604051808303816000865af19150503d80600081146117a6576040519150601f19603f3d011682016040523d82523d6000602084013e6117ab565b606091505b50509050806116b0576040517fb78cb0dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117ef8561301c565b6117fb8533878761328a565b6040517f2a07b6c700000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff871690632a07b6c79061185290879087906004016143ca565b600060405180830381600087803b15801561186c57600080fd5b505af1158015611880573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526118c69190810190613de1565b905060005b82518110156116b05760005b8251811015611a09578382815181106118f2576118f261489a565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff168382815181106119265761192661489a565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1614156119f7578382815181106119605761196061489a565b60200260200101516020015183828151811061197e5761197e61489a565b60200260200101516020015110156119f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f544f4f5f4c4954544c455f52454345495645440000000000000000000000000060448201526064016106b3565b611a09565b80611a0181614832565b9150506118d7565b82518110611a73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f494e434f52524543545f544f4b454e5f57495448445241574e0000000000000060448201526064016106b3565b5080611a7e81614832565b9150506118cb565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301523060248301528281166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401611682565b611b1a838284613402565b505050565b6000611b2a8561301c565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811633179091556001805473ffffffffffffffffffffffffffffffffffffffff88169216821790556040517f7ba0e2e7000000000000000000000000000000000000000000000000000000008152637ba0e2e790611bb490869086906004016143ca565b602060405180830381600087803b158015611bce57600080fd5b505af1158015611be2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c069190614152565b6000805460017fffffffffffffffffffffffff00000000000000000000000000000000000000009182168117909255815416811790559050838110156110d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4e4f545f454e4f5547485f4c49515549444954595f4d494e544544000000000060448201526064016106b3565b6000611cd4611cbd6080840160608501613aa5565b611ccd6060850160408601613aa5565b8435612f0e565b6107c66060830160408401613aa5565b604051336024820152306044820152606481018690526084810185905260ff841660a482015260c4810183905260e4810182905260009073ffffffffffffffffffffffffffffffffffffffff88169063d505accf906101040161171b565b60005b611d4f82806143f1565b905081101561211b57611d6282806143f1565b82818110611d7257611d7261489a565b9050602002810190611d849190614526565b611d95906060810190604001613f63565b15611e4e57611e49611da783806143f1565b83818110611db757611db761489a565b9050602002810190611dc99190614526565b611dd7906020810190613aa5565b611de184806143f1565b84818110611df157611df161489a565b9050602002810190611e039190614526565b611e14906040810190602001613aa5565b611e1e85806143f1565b85818110611e2e57611e2e61489a565b9050602002810190611e409190614526565b60600135612f0e565b611fc7565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663f18d03cc611e9484806143f1565b84818110611ea457611ea461489a565b9050602002810190611eb69190614526565b611ec4906020810190613aa5565b33611ecf86806143f1565b86818110611edf57611edf61489a565b9050602002810190611ef19190614526565b611f02906040810190602001613aa5565b611f0c87806143f1565b87818110611f1c57611f1c61489a565b9050602002810190611f2e9190614526565b60405160e086901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff94851660048201529284166024840152921660448201526060909101356064820152608401600060405180830381600087803b158015611fae57600080fd5b505af1158015611fc2573d6000803e3d6000fd5b505050505b612007611fd483806143f1565b83818110611fe457611fe461489a565b9050602002810190611ff69190614526565b61052b906040810190602001613aa5565b61201182806143f1565b828181106120215761202161489a565b90506020028101906120339190614526565b612044906040810190602001613aa5565b73ffffffffffffffffffffffffffffffffffffffff1663627dd56a61206984806143f1565b848181106120795761207961489a565b905060200281019061208b9190614526565b6120999060808101906144c1565b6040518363ffffffff1660e01b81526004016120b69291906143ca565b602060405180830381600087803b1580156120d057600080fd5b505af11580156120e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121089190614152565b508061211381614832565b915050611d45565b5060005b61212c60208301836143f1565b905081101561256257600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663f7888aec61218060208601866143f1565b858181106121905761219061489a565b90506020028101906121a2919061458e565b6121b0906020810190613aa5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff909116600482015230602482015260440160206040518083038186803b15801561221a57600080fd5b505afa15801561222e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122529190614152565b905060006122626008600a6146fa565b61226f60208601866143f1565b8581811061227f5761227f61489a565b9050602002810190612291919061458e565b6122a29060608101906040016141fe565b6122b69067ffffffffffffffff16846147c5565b6122c0919061465e565b905073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663f18d03cc61230b60208701876143f1565b8681811061231b5761231b61489a565b905060200281019061232d919061458e565b61233b906020810190613aa5565b3061234960208901896143f1565b888181106123595761235961489a565b905060200281019061236b919061458e565b61237c906040810190602001613aa5565b60405160e085901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff93841660048201529183166024830152909116604482015260648101849052608401600060405180830381600087803b1580156123f957600080fd5b505af115801561240d573d6000803e3d6000fd5b50612445925061242391505060208601866143f1565b858181106124335761243361489a565b9050602002810190611ff6919061458e565b61245260208501856143f1565b848181106124625761246261489a565b9050602002810190612474919061458e565b612485906040810190602001613aa5565b73ffffffffffffffffffffffffffffffffffffffff1663627dd56a6124ad60208701876143f1565b868181106124bd576124bd61489a565b90506020028101906124cf919061458e565b6124dd9060608101906144c1565b6040518363ffffffff1660e01b81526004016124fa9291906143ca565b602060405180830381600087803b15801561251457600080fd5b505af1158015612528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254c9190614152565b505050808061255a90614832565b91505061211f565b5060005b6125736040830183614459565b9050811015612a1057600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663f7888aec6125c76040860186614459565b858181106125d7576125d761489a565b6125ed9260206080909202019081019150613aa5565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff909116600482015230602482015260440160206040518083038186803b15801561265757600080fd5b505afa15801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614152565b905061269e6040840184614459565b838181106126ae576126ae61489a565b90506080020160600135811015612721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f544f4f5f4c4954544c455f52454345495645440000000000000000000000000060448201526064016106b3565b61272e6040840184614459565b8381811061273e5761273e61489a565b90506080020160400160208101906127569190613f63565b156128c25773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166397da6d306127a46040860186614459565b858181106127b4576127b461489a565b6127ca9260206080909202019081019150613aa5565b306127d86040880188614459565b878181106127e8576127e861489a565b90506080020160200160208101906128009190613aa5565b60405160e085901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff938416600482015291831660248301529091166044820152600060648201526084810184905260a4016040805180830381600087803b15801561288357600080fd5b505af1158015612897573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128bb91906141da565b50506129fd565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663f18d03cc61290b6040860186614459565b8581811061291b5761291b61489a565b6129319260206080909202019081019150613aa5565b3061293f6040880188614459565b8781811061294f5761294f61489a565b90506080020160200160208101906129679190613aa5565b60405160e085901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff93841660048201529183166024830152909116604482015260648101849052608401600060405180830381600087803b1580156129e457600080fd5b505af11580156129f8573d6000803e3d6000fd5b505050505b5080612a0881614832565b915050612566565b5050565b60015473ffffffffffffffffffffffffffffffffffffffff163314612a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f554e415554484f52495a45445f43414c4c4241434b000000000000000000000060448201526064016106b3565b6000612aa382840184614136565b9050806020015115612ae15780516000546040830151612adc929173ffffffffffffffffffffffffffffffffffffffff1690339061356b565b612ba2565b805160005460408084015190517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152918316602483015233604483015260648201527f00000000000000000000000000000000000000000000000000000000000000009091169063f18d03cc90608401600060405180830381600087803b158015612b8957600080fd5b505af1158015612b9d573d6000803e3d6000fd5b505050505b5050600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016600117905550565b60015473ffffffffffffffffffffffffffffffffffffffff163314612c53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f554e415554484f52495a45445f43414c4c4241434b000000000000000000000060448201526064016106b3565b6000612c6182840184613ea5565b905060005b8151811015612e2d57818181518110612c8157612c8161489a565b60200260200101516020015115612cfd57612cf8828281518110612ca757612ca761489a565b60200260200101516000015160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633858581518110612ce757612ce761489a565b60200260200101516040015161356b565b612e1b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f18d03cc838381518110612d4b57612d4b61489a565b60200260200101516000015160008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633868681518110612d8b57612d8b61489a565b6020026020010151604001516040518563ffffffff1660e01b8152600401612de8949392919073ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b600060405180830381600087803b158015612e0257600080fd5b505af1158015612e16573d6000803e3d6000fd5b505050505b80612e2581614832565b915050612c66565b5050600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001660011790555050565b6000612e897f0000000000000000000000000000000000000000000000000000000000000000613674565b905082811015612ef5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e53554646494349454e545f5745544800000000000000000000000000000060448201526064016106b3565b8015611b1a57612f04816137d4565b611b1a82826131c0565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116906302b9446c90851615612f5b576000612f5d565b825b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff808816600483015233602483015286166044820152606481018590526000608482015260a40160408051808303818588803b158015612fdc57600080fd5b505af1158015612ff0573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061301591906141da565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205460ff166131bd576040517fa4063dbc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a4063dbc9060240160206040518083038186803b1580156130d057600080fd5b505afa1580156130e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131089190613f80565b61316e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f494e56414c494420504f4f4c000000000000000000000000000000000000000060448201526064016106b3565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555b50565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461321a576040519150601f19603f3d011682016040523d82523d6000602084013e61321f565b606091505b5050905080611b1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c45440000000000000000000000000060448201526064016106b3565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052915160009283929088169161332991906142fe565b6000604051808303816000865af19150503d8060008114613366576040519150601f19603f3d011682016040523d82523d6000602084013e61336b565b606091505b50915091508180156133955750805115806133955750808060200190518101906133959190613f80565b610a09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064016106b3565b6020015190565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052915160009283929087169161349991906142fe565b6000604051808303816000865af19150503d80600081146134d6576040519150601f19603f3d011682016040523d82523d6000602084013e6134db565b606091505b50915091508180156135055750805115806135055750808060200190518101906135059190613f80565b613015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c4544000000000000000000000000000000000060448201526064016106b3565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116906302b9446c908616156135b85760006135ba565b825b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff8089166004830152808816602483015286166044820152606481018590526000608482015260a40160408051808303818588803b15801561363b57600080fd5b505af115801561364f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a0991906141da565b604080513060248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f70a082310000000000000000000000000000000000000000000000000000000017905290516000918291829173ffffffffffffffffffffffffffffffffffffffff86169161370691906142fe565b600060405180830381855afa9150503d8060008114613741576040519150601f19603f3d011682016040523d82523d6000602084013e613746565b606091505b509150915081801561375a57506020815110155b6137c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f42414c414e43455f4f465f4641494c454400000000000000000000000000000060448201526064016106b3565b808060200190518101906110d59190614152565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d8360405160240161382591815260200190565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161387391906142fe565b6000604051808303816000865af19150503d80600081146138b0576040519150601f19603f3d011682016040523d82523d6000602084013e6138b5565b606091505b5050905080612a10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f57495448445241575f46524f4d5f574554485f4641494c45440000000000000060448201526064016106b3565b60008083601f84011261393257600080fd5b50813567ffffffffffffffff81111561394a57600080fd5b6020830191508360208260051b850101111561396557600080fd5b9250929050565b600082601f83011261397d57600080fd5b8135602061399261398d8361463a565b6145eb565b828152818101908583016060808602880185018910156139b157600080fd5b60005b868110156139d8576139c68a84613a28565b855293850193918101916001016139b4565b509198975050505050505050565b60008083601f8401126139f857600080fd5b50813567ffffffffffffffff811115613a1057600080fd5b60208301915083602082850101111561396557600080fd5b600060608284031215613a3a57600080fd5b6040516060810181811067ffffffffffffffff82111715613a5d57613a5d6148c9565b6040529050808235613a6e816148f8565b81526020830135613a7e8161491a565b6020820152604092830135920191909152919050565b803560ff811681146106bc57600080fd5b600060208284031215613ab757600080fd5b8135610c76816148f8565b600060208284031215613ad457600080fd5b8151610c76816148f8565b600080600060408486031215613af457600080fd5b8335613aff816148f8565b9250602084013567ffffffffffffffff811115613b1b57600080fd5b613b27868287016139e6565b9497909650939450505050565b600080600060608486031215613b4957600080fd5b8335613b54816148f8565b9250602084013591506040840135613b6b816148f8565b809150509250925092565b60008060008060608587031215613b8c57600080fd5b8435613b97816148f8565b935060208501359250604085013567ffffffffffffffff811115613bba57600080fd5b613bc6878288016139e6565b95989497509550505050565b600080600080600060808688031215613bea57600080fd5b8535613bf5816148f8565b9450602086810135945060408088013567ffffffffffffffff80821115613c1b57600080fd5b613c278b838c016139e6565b909750955060608a0135915080821115613c4057600080fd5b508801601f81018a13613c5257600080fd5b8035613c6061398d8261463a565b8082825285820191508584018d878560061b8701011115613c8057600080fd5b600094505b83851015613ccd5785818f031215613c9c57600080fd5b613ca46145c2565b8135613caf816148f8565b81528188013588820152835260019490940193918601918501613c85565b508096505050505050509295509295909350565b600080600080600060808688031215613cf957600080fd5b8535613d04816148f8565b945060208601359350604086013567ffffffffffffffff811115613d2757600080fd5b613d33888289016139e6565b96999598509660600135949350505050565b60008060008060008060c08789031215613d5e57600080fd5b8635613d69816148f8565b95506020870135945060408701359350613d8560608801613a94565b92506080870135915060a087013590509295509295509295565b60008060208385031215613db257600080fd5b823567ffffffffffffffff811115613dc957600080fd5b613dd585828601613920565b90969095509350505050565b60006020808385031215613df457600080fd5b825167ffffffffffffffff811115613e0b57600080fd5b8301601f81018513613e1c57600080fd5b8051613e2a61398d8261463a565b80828252848201915084840188868560061b8701011115613e4a57600080fd5b60009450845b84811015613e9757604080838c031215613e68578687fd5b613e706145c2565b8351613e7b816148f8565b8152838901518982015285529387019390910190600101613e50565b509098975050505050505050565b600060208284031215613eb757600080fd5b813567ffffffffffffffff811115613ece57600080fd5b6110d58482850161396c565b600080600080600060808688031215613ef257600080fd5b853567ffffffffffffffff80821115613f0a57600080fd5b613f1689838a0161396c565b965060208801359150613f28826148f8565b9094506040870135935060608701359080821115613f4557600080fd5b50613f52888289016139e6565b969995985093965092949392505050565b600060208284031215613f7557600080fd5b8135610c768161491a565b600060208284031215613f9257600080fd5b8151610c768161491a565b60008060208385031215613fb057600080fd5b823567ffffffffffffffff811115613fc757600080fd5b613dd5858286016139e6565b600060208284031215613fe557600080fd5b815167ffffffffffffffff80821115613ffd57600080fd5b818401915084601f83011261401157600080fd5b815181811115614023576140236148c9565b61405460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016145eb565b915080825285602082850101111561406b57600080fd5b61407c816020840160208601614802565b50949350505050565b60006020828403121561409757600080fd5b813567ffffffffffffffff8111156140ae57600080fd5b820160608185031215610c7657600080fd5b6000602082840312156140d257600080fd5b813567ffffffffffffffff8111156140e957600080fd5b820160808185031215610c7657600080fd5b60006020828403121561410d57600080fd5b813567ffffffffffffffff81111561412457600080fd5b820160a08185031215610c7657600080fd5b60006060828403121561414857600080fd5b610c768383613a28565b60006020828403121561416457600080fd5b5051919050565b6000806040838503121561417e57600080fd5b823591506020830135614190816148f8565b809150509250929050565b6000806000604084860312156141b057600080fd5b83359250602084013567ffffffffffffffff8111156141ce57600080fd5b613b2786828701613920565b600080604083850312156141ed57600080fd5b505080516020909101519092909150565b60006020828403121561421057600080fd5b813567ffffffffffffffff81168114610c7657600080fd5b60008060006060848603121561423d57600080fd5b61424684613a94565b95602085013595506040909401359392505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600081518084526142bc816020860160208601614802565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8183823760009101908152919050565b60008251614310818460208701614802565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff841681526040602082015260006115e760408301848661425b565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156143bd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526143ab8583516142a4565b94509285019290850190600101614371565b5092979650505050505050565b6020815260006110d560208301848661425b565b602081526000610c7660208301846142a4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261442657600080fd5b83018035915067ffffffffffffffff82111561444157600080fd5b6020019150600581901b360382131561396557600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261448e57600080fd5b83018035915067ffffffffffffffff8211156144a957600080fd5b6020019150600781901b360382131561396557600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126144f657600080fd5b83018035915067ffffffffffffffff82111561451157600080fd5b60200191503681900382131561396557600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6183360301811261431057600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261431057600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261431057600080fd5b6040805190810167ffffffffffffffff811182821017156145e5576145e56148c9565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614632576146326148c9565b604052919050565b600067ffffffffffffffff821115614654576146546148c9565b5060051b60200190565b600082614694577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600181815b808511156146f257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156146d8576146d861486b565b808516156146e557918102915b93841c939080029061469e565b509250929050565b6000610c7660ff841683600082614713575060016147bf565b81614720575060006147bf565b816001811461473657600281146147405761475c565b60019150506147bf565b60ff8411156147515761475161486b565b50506001821b6147bf565b5060208310610133831016604e8410600b841016171561477f575081810a6147bf565b6147898383614699565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156147bb576147bb61486b565b0290505b92915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156147fd576147fd61486b565b500290565b60005b8381101561481d578181015183820152602001614805565b8381111561482c576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156148645761486461486b565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146131bd57600080fd5b80151581146131bd57600080fdfea264697066735822122021c47f6b996d4f88de9302c770b23b87e30d108ff2cc0058fe12d88f80c78ddc64736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x184 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x77631981 GT PUSH2 0xD6 JUMPI DUP1 PUSH4 0xA9B62C23 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xCED10B49 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xCED10B49 EQ PUSH2 0x404 JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x424 JUMPI DUP1 PUSH4 0xE16D9CE5 EQ PUSH2 0x458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA9B62C23 EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0xB96C5C0E EQ PUSH2 0x3D1 JUMPI DUP1 PUSH4 0xBD50C7B1 EQ PUSH2 0x3E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x94AE4AB2 GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x94AE4AB2 EQ PUSH2 0x36B JUMPI DUP1 PUSH4 0x98A691DE EQ PUSH2 0x38B JUMPI DUP1 PUSH4 0x9FA74491 EQ PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x77631981 EQ PUSH2 0x30B JUMPI DUP1 PUSH4 0x783312D9 EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0x9128EFDA EQ PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1E897AFB GT PUSH2 0x138 JUMPI DUP1 PUSH4 0x2CFCB94F GT PUSH2 0x112 JUMPI DUP1 PUSH4 0x2CFCB94F EQ PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x403335A8 EQ PUSH2 0x2C4 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x2D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1E897AFB EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x250558DC EQ PUSH2 0x266 JUMPI DUP1 PUSH4 0x2C0D9A01 EQ PUSH2 0x29E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x12210E8A GT PUSH2 0x169 JUMPI DUP1 PUSH4 0x12210E8A EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x1AA349A8 EQ PUSH2 0x213 JUMPI DUP1 PUSH4 0x1AB5D6C8 EQ PUSH2 0x233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB0D1B1E EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xF93D439 EQ PUSH2 0x1F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x1CD JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x1CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1E5 PUSH2 0x1E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x40C0 JUMP JUMPDEST PUSH2 0x478 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E5 PUSH2 0x206 CALLDATASIZE PUSH1 0x4 PUSH2 0x40FB JUMP JUMPDEST PUSH2 0x6C1 JUMP JUMPDEST PUSH2 0x1CB PUSH2 0x8CD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x22E CALLDATASIZE PUSH1 0x4 PUSH2 0x3CE1 JUMP JUMPDEST PUSH2 0x8DF JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x241 CALLDATASIZE PUSH1 0x4 PUSH2 0x419B JUMP JUMPDEST PUSH2 0xA11 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D9F JUMP JUMPDEST PUSH2 0xC7D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1EF SWAP2 SWAP1 PUSH2 0x434A JUMP JUMPDEST PUSH2 0x279 PUSH2 0x274 CALLDATASIZE PUSH1 0x4 PUSH2 0x3ADF JUMP JUMPDEST PUSH2 0x100A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1EF JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x2AC CALLDATASIZE PUSH1 0x4 PUSH2 0x40C0 JUMP JUMPDEST PUSH2 0x10DD JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x2BF CALLDATASIZE PUSH1 0x4 PUSH2 0x3EDA JUMP JUMPDEST PUSH2 0x1340 JUMP JUMPDEST PUSH2 0x1CB PUSH2 0x2D2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4228 JUMP JUMPDEST PUSH2 0x15F0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x326 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D45 JUMP JUMPDEST PUSH2 0x16B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x346 CALLDATASIZE PUSH1 0x4 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x17E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x357 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x366 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B34 JUMP JUMPDEST PUSH2 0x1A86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x386 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B34 JUMP JUMPDEST PUSH2 0x1B0F JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x399 CALLDATASIZE PUSH1 0x4 PUSH2 0x3B76 JUMP JUMPDEST PUSH2 0x1B1F JUMP JUMPDEST PUSH2 0x1E5 PUSH2 0x3AC CALLDATASIZE PUSH1 0x4 PUSH2 0x40FB JUMP JUMPDEST PUSH2 0x1CA8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x3CC CALLDATASIZE PUSH1 0x4 PUSH2 0x3D45 JUMP JUMPDEST PUSH2 0x1CE4 JUMP JUMPDEST PUSH2 0x1CB PUSH2 0x3DF CALLDATASIZE PUSH1 0x4 PUSH2 0x4085 JUMP JUMPDEST PUSH2 0x1D42 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x3FF CALLDATASIZE PUSH1 0x4 PUSH2 0x3F9D JUMP JUMPDEST PUSH2 0x2A14 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x41F CALLDATASIZE PUSH1 0x4 PUSH2 0x3F9D JUMP JUMPDEST PUSH2 0x2BD2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x279 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x464 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1CB PUSH2 0x473 CALLDATASIZE PUSH1 0x4 PUSH2 0x416B JUMP JUMPDEST PUSH2 0x2E5E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D2 PUSH2 0x48A PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x3AA5 JUMP JUMPDEST PUSH2 0x497 PUSH1 0x60 DUP6 ADD DUP6 PUSH2 0x43F1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x4A8 JUMPI PUSH2 0x4A8 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x4BA SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0x4C8 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST DUP5 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2F0E JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH2 0x4E2 PUSH1 0x60 DUP5 ADD DUP5 PUSH2 0x43F1 JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x648 JUMPI PUSH2 0x530 PUSH2 0x4FB PUSH1 0x60 DUP6 ADD DUP6 PUSH2 0x43F1 JUMP JUMPDEST DUP4 DUP2 DUP2 LT PUSH2 0x50B JUMPI PUSH2 0x50B PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x51D SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0x52B SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH2 0x301C JUMP JUMPDEST PUSH2 0x53D PUSH1 0x60 DUP5 ADD DUP5 PUSH2 0x43F1 JUMP JUMPDEST DUP3 DUP2 DUP2 LT PUSH2 0x54D JUMPI PUSH2 0x54D PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x55F SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0x56D SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x627DD56A PUSH2 0x595 PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0x43F1 JUMP JUMPDEST DUP5 DUP2 DUP2 LT PUSH2 0x5A5 JUMPI PUSH2 0x5A5 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x5B7 SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0x5C5 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x44C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5E2 SWAP3 SWAP2 SWAP1 PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x610 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x634 SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x640 DUP2 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x4D5 JUMP JUMPDEST POP DUP2 PUSH1 0x40 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4F5F4C4954544C455F524543454956454400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xF18D03CC PUSH2 0x70F PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0x3AA5 JUMP JUMPDEST CALLER PUSH2 0x720 PUSH1 0x60 DUP8 ADD PUSH1 0x40 DUP9 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP7 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP4 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x44 DUP3 ADD MSTORE DUP5 CALLDATALOAD PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x79D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x7C6 SWAP3 POP POP POP PUSH1 0x60 DUP4 ADD PUSH1 0x40 DUP5 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x627DD56A PUSH2 0x7EE PUSH1 0x80 DUP6 ADD DUP6 PUSH2 0x44C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x80B SWAP3 SWAP2 SWAP1 PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x825 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x839 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x85D SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x20 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4F5F4C4954544C455F524543454956454400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST SELFBALANCE ISZERO PUSH2 0x8DD JUMPI PUSH2 0x8DD CALLER SELFBALANCE PUSH2 0x31C0 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x8E8 DUP6 PUSH2 0x301C JUMP JUMPDEST PUSH2 0x8F4 DUP6 CALLER DUP8 DUP8 PUSH2 0x328A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xAF8C09BF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 PUSH4 0xAF8C09BF SWAP1 PUSH2 0x94B SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x965 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x979 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x99D SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0xA09 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4F5F4C4954544C455F524543454956454400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xBD5 JUMPI PUSH2 0xA32 DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x50B JUMPI PUSH2 0x50B PUSH2 0x489A JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND CALLER OR SWAP1 SSTORE DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0xA6E JUMPI PUSH2 0xA6E PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xA80 SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0xA8E SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 DUP4 DUP3 DUP2 DUP2 LT PUSH2 0xAE5 JUMPI PUSH2 0xAE5 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xAF7 SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0xB05 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x53DA1C8 DUP6 DUP6 DUP5 DUP2 DUP2 LT PUSH2 0xB32 JUMPI PUSH2 0xB32 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xB44 SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0xB52 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x44C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB6F SWAP3 SWAP2 SWAP1 PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB9D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBC1 SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0xBCD DUP2 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xA15 JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE DUP2 SLOAD AND DUP2 OR SWAP1 SSTORE DUP4 DUP2 LT ISZERO PUSH2 0xC76 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4F5F4C4954544C455F524543454956454400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xC98 JUMPI PUSH2 0xC98 PUSH2 0x48C9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xCCB JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xCB6 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1002 JUMPI PUSH1 0x0 PUSH2 0xD3D DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0xCF1 JUMPI PUSH2 0xCF1 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xD03 SWAP2 SWAP1 PUSH2 0x44C1 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x33FB SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF93D43900000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0xDD0 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x9FA7449100000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0xE46 JUMPI DUP3 ISZERO PUSH2 0xE3D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537761702063616C6C6564207477696365000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x1 SWAP3 POP PUSH2 0xEF2 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1E897AFB00000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xEF2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E65737465642042617463680000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x0 DUP1 ADDRESS DUP9 DUP9 DUP7 DUP2 DUP2 LT PUSH2 0xF08 JUMPI PUSH2 0xF08 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xF1A SWAP2 SWAP1 PUSH2 0x44C1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF28 SWAP3 SWAP2 SWAP1 PUSH2 0x42EE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xF63 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF68 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xFCE JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0xF81 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xF9B SWAP2 SWAP1 PUSH2 0x3FD3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x6B3 SWAP2 SWAP1 PUSH2 0x43DE JUMP JUMPDEST DUP1 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xFE1 JUMPI PUSH2 0xFE1 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP POP DUP1 DUP1 PUSH2 0xFFA SWAP1 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xCD2 JUMP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x250558DC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x250558DC SWAP1 PUSH2 0x1083 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x431A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x109D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x10D5 SWAP2 SWAP1 PUSH2 0x3AC2 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xF18D03CC PUSH2 0x1128 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x3AA5 JUMP JUMPDEST CALLER PUSH2 0x1136 PUSH1 0x60 DUP8 ADD DUP8 PUSH2 0x43F1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1147 JUMPI PUSH2 0x1147 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1159 SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0x1167 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP4 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 JUMPDEST PUSH2 0x120F PUSH1 0x60 DUP5 ADD DUP5 PUSH2 0x43F1 JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x648 JUMPI PUSH2 0x1228 PUSH2 0x4FB PUSH1 0x60 DUP6 ADD DUP6 PUSH2 0x43F1 JUMP JUMPDEST PUSH2 0x1235 PUSH1 0x60 DUP5 ADD DUP5 PUSH2 0x43F1 JUMP JUMPDEST DUP3 DUP2 DUP2 LT PUSH2 0x1245 JUMPI PUSH2 0x1245 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1257 SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0x1265 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x627DD56A PUSH2 0x128D PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0x43F1 JUMP JUMPDEST DUP5 DUP2 DUP2 LT PUSH2 0x129D JUMPI PUSH2 0x129D PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x12AF SWAP2 SWAP1 PUSH2 0x455A JUMP JUMPDEST PUSH2 0x12BD SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x44C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12DA SWAP3 SWAP2 SWAP1 PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1308 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x132C SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST SWAP2 POP DUP1 PUSH2 0x1338 DUP2 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1202 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x134B DUP6 PUSH2 0x301C JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x14D4 JUMPI DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1369 JUMPI PUSH2 0x1369 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x13C4 JUMPI PUSH2 0x13BF DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x138F JUMPI PUSH2 0x138F PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD DUP8 DUP10 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x13AE JUMPI PUSH2 0x13AE PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x2F0E JUMP JUMPDEST PUSH2 0x14C2 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF18D03CC DUP9 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1412 JUMPI PUSH2 0x1412 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD CALLER DUP10 DUP12 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x1432 JUMPI PUSH2 0x1432 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x148F SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 DUP5 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP3 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x14BD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP1 PUSH2 0x14CC DUP2 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x134E JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x7BA0E2E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP1 PUSH4 0x7BA0E2E7 SWAP1 PUSH2 0x1529 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1543 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1557 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x157B SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x15E7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F454E4F5547485F4C49515549444954595F4D494E5445440000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC0A47C9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0xFF DUP5 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xC0A47C93 SWAP1 PUSH1 0xC4 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x169C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16B0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xFF DUP5 AND PUSH1 0xC4 DUP3 ADD MSTORE PUSH1 0xE4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH2 0x104 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0x8FCBAF0C SWAP1 PUSH2 0x124 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x1769 SWAP2 SWAP1 PUSH2 0x42FE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x17A6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x17AB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x16B0 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB78CB0DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x17EF DUP6 PUSH2 0x301C JUMP JUMPDEST PUSH2 0x17FB DUP6 CALLER DUP8 DUP8 PUSH2 0x328A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2A07B6C700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 PUSH4 0x2A07B6C7 SWAP1 PUSH2 0x1852 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x186C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1880 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x18C6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3DE1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x16B0 JUMPI PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x1A09 JUMPI DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x18F2 JUMPI PUSH2 0x18F2 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1926 JUMPI PUSH2 0x1926 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x19F7 JUMPI DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1960 JUMPI PUSH2 0x1960 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x197E JUMPI PUSH2 0x197E PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD LT ISZERO PUSH2 0x19F2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4F5F4C4954544C455F524543454956454400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH2 0x1A09 JUMP JUMPDEST DUP1 PUSH2 0x1A01 DUP2 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x18D7 JUMP JUMPDEST DUP3 MLOAD DUP2 LT PUSH2 0x1A73 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E434F52524543545F544F4B454E5F57495448445241574E00000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST POP DUP1 PUSH2 0x1A7E DUP2 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x18CB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP3 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH2 0x1682 JUMP JUMPDEST PUSH2 0x1B1A DUP4 DUP3 DUP5 PUSH2 0x3402 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B2A DUP6 PUSH2 0x301C JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND CALLER OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP3 AND DUP3 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x7BA0E2E700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH4 0x7BA0E2E7 SWAP1 PUSH2 0x1BB4 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BCE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BE2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C06 SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE DUP2 SLOAD AND DUP2 OR SWAP1 SSTORE SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x10D5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F454E4F5547485F4C49515549444954595F4D494E5445440000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CD4 PUSH2 0x1CBD PUSH1 0x80 DUP5 ADD PUSH1 0x60 DUP6 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH2 0x1CCD PUSH1 0x60 DUP6 ADD PUSH1 0x40 DUP7 ADD PUSH2 0x3AA5 JUMP JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2F0E JUMP JUMPDEST PUSH2 0x7C6 PUSH1 0x60 DUP4 ADD PUSH1 0x40 DUP5 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xFF DUP5 AND PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xC4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xE4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0x104 ADD PUSH2 0x171B JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH2 0x1D4F DUP3 DUP1 PUSH2 0x43F1 JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x211B JUMPI PUSH2 0x1D62 DUP3 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP3 DUP2 DUP2 LT PUSH2 0x1D72 JUMPI PUSH2 0x1D72 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1D84 SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH2 0x1D95 SWAP1 PUSH1 0x60 DUP2 ADD SWAP1 PUSH1 0x40 ADD PUSH2 0x3F63 JUMP JUMPDEST ISZERO PUSH2 0x1E4E JUMPI PUSH2 0x1E49 PUSH2 0x1DA7 DUP4 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP4 DUP2 DUP2 LT PUSH2 0x1DB7 JUMPI PUSH2 0x1DB7 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1DC9 SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH2 0x1DD7 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH2 0x1DE1 DUP5 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP5 DUP2 DUP2 LT PUSH2 0x1DF1 JUMPI PUSH2 0x1DF1 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1E03 SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH2 0x1E14 SWAP1 PUSH1 0x40 DUP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH2 0x1E1E DUP6 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x1E2E JUMPI PUSH2 0x1E2E PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1E40 SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x2F0E JUMP JUMPDEST PUSH2 0x1FC7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xF18D03CC PUSH2 0x1E94 DUP5 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP5 DUP2 DUP2 LT PUSH2 0x1EA4 JUMPI PUSH2 0x1EA4 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1EB6 SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH2 0x1EC4 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST CALLER PUSH2 0x1ECF DUP7 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP7 DUP2 DUP2 LT PUSH2 0x1EDF JUMPI PUSH2 0x1EDF PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1EF1 SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH2 0x1F02 SWAP1 PUSH1 0x40 DUP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH2 0x1F0C DUP8 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP8 DUP2 DUP2 LT PUSH2 0x1F1C JUMPI PUSH2 0x1F1C PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1F2E SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP7 SWAP1 SHL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x24 DUP5 ADD MSTORE SWAP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x60 SWAP1 SWAP2 ADD CALLDATALOAD PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FAE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FC2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x2007 PUSH2 0x1FD4 DUP4 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP4 DUP2 DUP2 LT PUSH2 0x1FE4 JUMPI PUSH2 0x1FE4 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1FF6 SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH2 0x52B SWAP1 PUSH1 0x40 DUP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH2 0x2011 DUP3 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP3 DUP2 DUP2 LT PUSH2 0x2021 JUMPI PUSH2 0x2021 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x2033 SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH2 0x2044 SWAP1 PUSH1 0x40 DUP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x627DD56A PUSH2 0x2069 DUP5 DUP1 PUSH2 0x43F1 JUMP JUMPDEST DUP5 DUP2 DUP2 LT PUSH2 0x2079 JUMPI PUSH2 0x2079 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x208B SWAP2 SWAP1 PUSH2 0x4526 JUMP JUMPDEST PUSH2 0x2099 SWAP1 PUSH1 0x80 DUP2 ADD SWAP1 PUSH2 0x44C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x20B6 SWAP3 SWAP2 SWAP1 PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x20E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2108 SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST POP DUP1 PUSH2 0x2113 DUP2 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1D45 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST PUSH2 0x212C PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0x43F1 JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x2562 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xF7888AEC PUSH2 0x2180 PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x43F1 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x2190 JUMPI PUSH2 0x2190 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x21A2 SWAP2 SWAP1 PUSH2 0x458E JUMP JUMPDEST PUSH2 0x21B0 SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x221A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x222E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2252 SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2262 PUSH1 0x8 PUSH1 0xA PUSH2 0x46FA JUMP JUMPDEST PUSH2 0x226F PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x43F1 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x227F JUMPI PUSH2 0x227F PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x2291 SWAP2 SWAP1 PUSH2 0x458E JUMP JUMPDEST PUSH2 0x22A2 SWAP1 PUSH1 0x60 DUP2 ADD SWAP1 PUSH1 0x40 ADD PUSH2 0x41FE JUMP JUMPDEST PUSH2 0x22B6 SWAP1 PUSH8 0xFFFFFFFFFFFFFFFF AND DUP5 PUSH2 0x47C5 JUMP JUMPDEST PUSH2 0x22C0 SWAP2 SWAP1 PUSH2 0x465E JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xF18D03CC PUSH2 0x230B PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x43F1 JUMP JUMPDEST DUP7 DUP2 DUP2 LT PUSH2 0x231B JUMPI PUSH2 0x231B PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x232D SWAP2 SWAP1 PUSH2 0x458E JUMP JUMPDEST PUSH2 0x233B SWAP1 PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST ADDRESS PUSH2 0x2349 PUSH1 0x20 DUP10 ADD DUP10 PUSH2 0x43F1 JUMP JUMPDEST DUP9 DUP2 DUP2 LT PUSH2 0x2359 JUMPI PUSH2 0x2359 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x236B SWAP2 SWAP1 PUSH2 0x458E JUMP JUMPDEST PUSH2 0x237C SWAP1 PUSH1 0x40 DUP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP4 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x240D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH2 0x2445 SWAP3 POP PUSH2 0x2423 SWAP2 POP POP PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x43F1 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x2433 JUMPI PUSH2 0x2433 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1FF6 SWAP2 SWAP1 PUSH2 0x458E JUMP JUMPDEST PUSH2 0x2452 PUSH1 0x20 DUP6 ADD DUP6 PUSH2 0x43F1 JUMP JUMPDEST DUP5 DUP2 DUP2 LT PUSH2 0x2462 JUMPI PUSH2 0x2462 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x2474 SWAP2 SWAP1 PUSH2 0x458E JUMP JUMPDEST PUSH2 0x2485 SWAP1 PUSH1 0x40 DUP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x3AA5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x627DD56A PUSH2 0x24AD PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x43F1 JUMP JUMPDEST DUP7 DUP2 DUP2 LT PUSH2 0x24BD JUMPI PUSH2 0x24BD PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x24CF SWAP2 SWAP1 PUSH2 0x458E JUMP JUMPDEST PUSH2 0x24DD SWAP1 PUSH1 0x60 DUP2 ADD SWAP1 PUSH2 0x44C1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x24FA SWAP3 SWAP2 SWAP1 PUSH2 0x43CA JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2514 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2528 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x254C SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST POP POP POP DUP1 DUP1 PUSH2 0x255A SWAP1 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x211F JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST PUSH2 0x2573 PUSH1 0x40 DUP4 ADD DUP4 PUSH2 0x4459 JUMP JUMPDEST SWAP1 POP DUP2 LT ISZERO PUSH2 0x2A10 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xF7888AEC PUSH2 0x25C7 PUSH1 0x40 DUP7 ADD DUP7 PUSH2 0x4459 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x25D7 JUMPI PUSH2 0x25D7 PUSH2 0x489A JUMP JUMPDEST PUSH2 0x25ED SWAP3 PUSH1 0x20 PUSH1 0x80 SWAP1 SWAP3 MUL ADD SWAP1 DUP2 ADD SWAP2 POP PUSH2 0x3AA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2657 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x266B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x268F SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST SWAP1 POP PUSH2 0x269E PUSH1 0x40 DUP5 ADD DUP5 PUSH2 0x4459 JUMP JUMPDEST DUP4 DUP2 DUP2 LT PUSH2 0x26AE JUMPI PUSH2 0x26AE PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x80 MUL ADD PUSH1 0x60 ADD CALLDATALOAD DUP2 LT ISZERO PUSH2 0x2721 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x544F4F5F4C4954544C455F524543454956454400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH2 0x272E PUSH1 0x40 DUP5 ADD DUP5 PUSH2 0x4459 JUMP JUMPDEST DUP4 DUP2 DUP2 LT PUSH2 0x273E JUMPI PUSH2 0x273E PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x80 MUL ADD PUSH1 0x40 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2756 SWAP2 SWAP1 PUSH2 0x3F63 JUMP JUMPDEST ISZERO PUSH2 0x28C2 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0x97DA6D30 PUSH2 0x27A4 PUSH1 0x40 DUP7 ADD DUP7 PUSH2 0x4459 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x27B4 JUMPI PUSH2 0x27B4 PUSH2 0x489A JUMP JUMPDEST PUSH2 0x27CA SWAP3 PUSH1 0x20 PUSH1 0x80 SWAP1 SWAP3 MUL ADD SWAP1 DUP2 ADD SWAP2 POP PUSH2 0x3AA5 JUMP JUMPDEST ADDRESS PUSH2 0x27D8 PUSH1 0x40 DUP9 ADD DUP9 PUSH2 0x4459 JUMP JUMPDEST DUP8 DUP2 DUP2 LT PUSH2 0x27E8 JUMPI PUSH2 0x27E8 PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x80 MUL ADD PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2800 SWAP2 SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP4 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2883 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2897 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x28BB SWAP2 SWAP1 PUSH2 0x41DA JUMP JUMPDEST POP POP PUSH2 0x29FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH4 0xF18D03CC PUSH2 0x290B PUSH1 0x40 DUP7 ADD DUP7 PUSH2 0x4459 JUMP JUMPDEST DUP6 DUP2 DUP2 LT PUSH2 0x291B JUMPI PUSH2 0x291B PUSH2 0x489A JUMP JUMPDEST PUSH2 0x2931 SWAP3 PUSH1 0x20 PUSH1 0x80 SWAP1 SWAP3 MUL ADD SWAP1 DUP2 ADD SWAP2 POP PUSH2 0x3AA5 JUMP JUMPDEST ADDRESS PUSH2 0x293F PUSH1 0x40 DUP9 ADD DUP9 PUSH2 0x4459 JUMP JUMPDEST DUP8 DUP2 DUP2 LT PUSH2 0x294F JUMPI PUSH2 0x294F PUSH2 0x489A JUMP JUMPDEST SWAP1 POP PUSH1 0x80 MUL ADD PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2967 SWAP2 SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP6 SWAP1 SHL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP4 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x29F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP DUP1 PUSH2 0x2A08 DUP2 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2566 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2A95 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x554E415554484F52495A45445F43414C4C4241434B0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AA3 DUP3 DUP5 ADD DUP5 PUSH2 0x4136 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x2AE1 JUMPI DUP1 MLOAD PUSH1 0x0 SLOAD PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x2ADC SWAP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 CALLER SWAP1 PUSH2 0x356B JUMP JUMPDEST PUSH2 0x2BA2 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 DUP5 ADD MLOAD SWAP1 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP2 DUP4 AND PUSH1 0x24 DUP4 ADD MSTORE CALLER PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD MSTORE PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B9D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2C53 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x554E415554484F52495A45445F43414C4C4241434B0000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C61 DUP3 DUP5 ADD DUP5 PUSH2 0x3EA5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x2E2D JUMPI DUP2 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x2C81 JUMPI PUSH2 0x2C81 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x2CFD JUMPI PUSH2 0x2CF8 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2CA7 JUMPI PUSH2 0x2CA7 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2CE7 JUMPI PUSH2 0x2CE7 PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH2 0x356B JUMP JUMPDEST PUSH2 0x2E1B JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF18D03CC DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2D4B JUMPI PUSH2 0x2D4B PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x2D8B JUMPI PUSH2 0x2D8B PUSH2 0x489A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2DE8 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 DUP5 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP3 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E16 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST DUP1 PUSH2 0x2E25 DUP2 PUSH2 0x4832 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2C66 JUMP JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 OR SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E89 PUSH32 0x0 PUSH2 0x3674 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 LT ISZERO PUSH2 0x2EF5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F57455448000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1B1A JUMPI PUSH2 0x2F04 DUP2 PUSH2 0x37D4 JUMP JUMPDEST PUSH2 0x1B1A DUP3 DUP3 PUSH2 0x31C0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND SWAP1 PUSH4 0x2B9446C SWAP1 DUP6 AND ISZERO PUSH2 0x2F5B JUMPI PUSH1 0x0 PUSH2 0x2F5D JUMP JUMPDEST DUP3 JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND PUSH1 0x4 DUP4 ADD MSTORE CALLER PUSH1 0x24 DUP4 ADD MSTORE DUP7 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2FF0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3015 SWAP2 SWAP1 PUSH2 0x41DA JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x31BD JUMPI PUSH1 0x40 MLOAD PUSH32 0xA4063DBC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xA4063DBC SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x30E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3108 SWAP2 SWAP1 PUSH2 0x3F80 JUMP JUMPDEST PUSH2 0x316E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C494420504F4F4C0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x321A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x321F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x1B1A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4554485F5452414E534645525F4641494C454400000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP9 AND SWAP2 PUSH2 0x3329 SWAP2 SWAP1 PUSH2 0x42FE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3366 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x336B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3395 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3395 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3395 SWAP2 SWAP1 PUSH2 0x3F80 JUMP JUMPDEST PUSH2 0xA09 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F46524F4D5F4641494C4544000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 SWAP1 DUP8 AND SWAP2 PUSH2 0x3499 SWAP2 SWAP1 PUSH2 0x42FE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x34D6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x34DB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3505 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3505 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3505 SWAP2 SWAP1 PUSH2 0x3F80 JUMP JUMPDEST PUSH2 0x3015 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND SWAP1 PUSH4 0x2B9446C SWAP1 DUP7 AND ISZERO PUSH2 0x35B8 JUMPI PUSH1 0x0 PUSH2 0x35BA JUMP JUMPDEST DUP3 JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x4 DUP4 ADD MSTORE DUP1 DUP9 AND PUSH1 0x24 DUP4 ADD MSTORE DUP7 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x363B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x364F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA09 SWAP2 SWAP1 PUSH2 0x41DA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD ADDRESS PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND SWAP2 PUSH2 0x3706 SWAP2 SWAP1 PUSH2 0x42FE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3741 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3746 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x375A JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST PUSH2 0x37C0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42414C414E43455F4F465F4641494C4544000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x10D5 SWAP2 SWAP1 PUSH2 0x4152 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3825 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x3873 SWAP2 SWAP1 PUSH2 0x42FE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x38B0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x38B5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2A10 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57495448445241575F46524F4D5F574554485F4641494C454400000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6B3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x394A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x3965 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x397D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x3992 PUSH2 0x398D DUP4 PUSH2 0x463A JUMP JUMPDEST PUSH2 0x45EB JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD PUSH1 0x60 DUP1 DUP7 MUL DUP9 ADD DUP6 ADD DUP10 LT ISZERO PUSH2 0x39B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x39D8 JUMPI PUSH2 0x39C6 DUP11 DUP5 PUSH2 0x3A28 JUMP JUMPDEST DUP6 MSTORE SWAP4 DUP6 ADD SWAP4 SWAP2 DUP2 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x39B4 JUMP JUMPDEST POP SWAP2 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x39F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3A10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3965 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3A3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x3A5D JUMPI PUSH2 0x3A5D PUSH2 0x48C9 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 POP DUP1 DUP3 CALLDATALOAD PUSH2 0x3A6E DUP2 PUSH2 0x48F8 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3A7E DUP2 PUSH2 0x491A JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3AB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xC76 DUP2 PUSH2 0x48F8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3AD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xC76 DUP2 PUSH2 0x48F8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3AF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3AFF DUP2 PUSH2 0x48F8 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3B1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3B27 DUP7 DUP3 DUP8 ADD PUSH2 0x39E6 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3B49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3B54 DUP2 PUSH2 0x48F8 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x3B6B DUP2 PUSH2 0x48F8 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3B8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3B97 DUP2 PUSH2 0x48F8 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3BBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3BC6 DUP8 DUP3 DUP9 ADD PUSH2 0x39E6 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3BEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3BF5 DUP2 PUSH2 0x48F8 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP1 DUP9 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3C1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3C27 DUP12 DUP4 DUP13 ADD PUSH2 0x39E6 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP PUSH1 0x60 DUP11 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3C40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP9 ADD PUSH1 0x1F DUP2 ADD DUP11 SGT PUSH2 0x3C52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C60 PUSH2 0x398D DUP3 PUSH2 0x463A JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE DUP6 DUP3 ADD SWAP2 POP DUP6 DUP5 ADD DUP14 DUP8 DUP6 PUSH1 0x6 SHL DUP8 ADD ADD GT ISZERO PUSH2 0x3C80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x3CCD JUMPI DUP6 DUP2 DUP16 SUB SLT ISZERO PUSH2 0x3C9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3CA4 PUSH2 0x45C2 JUMP JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3CAF DUP2 PUSH2 0x48F8 JUMP JUMPDEST DUP2 MSTORE DUP2 DUP9 ADD CALLDATALOAD DUP9 DUP3 ADD MSTORE DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP7 ADD SWAP2 DUP6 ADD PUSH2 0x3C85 JUMP JUMPDEST POP DUP1 SWAP7 POP POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3CF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3D04 DUP2 PUSH2 0x48F8 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3D27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3D33 DUP9 DUP3 DUP10 ADD PUSH2 0x39E6 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP7 PUSH1 0x60 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3D5E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3D69 DUP2 PUSH2 0x48F8 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x3D85 PUSH1 0x60 DUP9 ADD PUSH2 0x3A94 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3DC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3DD5 DUP6 DUP3 DUP7 ADD PUSH2 0x3920 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3E0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x3E1C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x3E2A PUSH2 0x398D DUP3 PUSH2 0x463A JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE DUP5 DUP3 ADD SWAP2 POP DUP5 DUP5 ADD DUP9 DUP7 DUP6 PUSH1 0x6 SHL DUP8 ADD ADD GT ISZERO PUSH2 0x3E4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP5 POP DUP5 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x3E97 JUMPI PUSH1 0x40 DUP1 DUP4 DUP13 SUB SLT ISZERO PUSH2 0x3E68 JUMPI DUP7 DUP8 REVERT JUMPDEST PUSH2 0x3E70 PUSH2 0x45C2 JUMP JUMPDEST DUP4 MLOAD PUSH2 0x3E7B DUP2 PUSH2 0x48F8 JUMP JUMPDEST DUP2 MSTORE DUP4 DUP10 ADD MLOAD DUP10 DUP3 ADD MSTORE DUP6 MSTORE SWAP4 DUP8 ADD SWAP4 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3E50 JUMP JUMPDEST POP SWAP1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3ECE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10D5 DUP5 DUP3 DUP6 ADD PUSH2 0x396C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3EF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3F0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3F16 DUP10 DUP4 DUP11 ADD PUSH2 0x396C JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH2 0x3F28 DUP3 PUSH2 0x48F8 JUMP JUMPDEST SWAP1 SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x3F45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F52 DUP9 DUP3 DUP10 ADD PUSH2 0x39E6 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xC76 DUP2 PUSH2 0x491A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xC76 DUP2 PUSH2 0x491A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3FB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3FC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3DD5 DUP6 DUP3 DUP7 ADD PUSH2 0x39E6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3FE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3FFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4011 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x4023 JUMPI PUSH2 0x4023 PUSH2 0x48C9 JUMP JUMPDEST PUSH2 0x4054 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x45EB JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP6 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x406B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x407C DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4802 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4097 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x40AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x60 DUP2 DUP6 SUB SLT ISZERO PUSH2 0xC76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x40E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x80 DUP2 DUP6 SUB SLT ISZERO PUSH2 0xC76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x410D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0xA0 DUP2 DUP6 SUB SLT ISZERO PUSH2 0xC76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC76 DUP4 DUP4 PUSH2 0x3A28 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4164 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x417E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4190 DUP2 PUSH2 0x48F8 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x41B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x41CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3B27 DUP7 DUP3 DUP8 ADD PUSH2 0x3920 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4210 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xC76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x423D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4246 DUP5 PUSH2 0x3A94 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 ADD ADD MSTORE PUSH1 0x0 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND DUP5 ADD ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x42BC DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x4802 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4310 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x4802 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x15E7 PUSH1 0x40 DUP4 ADD DUP5 DUP7 PUSH2 0x425B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x43BD JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x43AB DUP6 DUP4 MLOAD PUSH2 0x42A4 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4371 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x10D5 PUSH1 0x20 DUP4 ADD DUP5 DUP7 PUSH2 0x425B JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xC76 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x42A4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP PUSH1 0x5 DUP2 SWAP1 SHL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x3965 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x448E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x44A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP PUSH1 0x7 DUP2 SWAP1 SHL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x3965 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x44F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x3965 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61 DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4310 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x45E5 JUMPI PUSH2 0x45E5 PUSH2 0x48C9 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4632 JUMPI PUSH2 0x4632 PUSH2 0x48C9 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x4654 JUMPI PUSH2 0x4654 PUSH2 0x48C9 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4694 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x46F2 JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x46D8 JUMPI PUSH2 0x46D8 PUSH2 0x486B JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x46E5 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x469E JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC76 PUSH1 0xFF DUP5 AND DUP4 PUSH1 0x0 DUP3 PUSH2 0x4713 JUMPI POP PUSH1 0x1 PUSH2 0x47BF JUMP JUMPDEST DUP2 PUSH2 0x4720 JUMPI POP PUSH1 0x0 PUSH2 0x47BF JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x4736 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x4740 JUMPI PUSH2 0x475C JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x47BF JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x4751 JUMPI PUSH2 0x4751 PUSH2 0x486B JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x47BF JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x477F JUMPI POP DUP2 DUP2 EXP PUSH2 0x47BF JUMP JUMPDEST PUSH2 0x4789 DUP4 DUP4 PUSH2 0x4699 JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x47BB JUMPI PUSH2 0x47BB PUSH2 0x486B JUMP JUMPDEST MUL SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x47FD JUMPI PUSH2 0x47FD PUSH2 0x486B JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x481D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4805 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x482C JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x4864 JUMPI PUSH2 0x4864 PUSH2 0x486B JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x31BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x31BD JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x21 0xC4 PUSH32 0x6B996D4F88DE9302C770B23B87E30D108FF2CC0058FE12D88F80C78DDC64736F PUSH13 0x63430008070033000000000000 ",
              "sourceMap": "256:16739:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;826:10;:18;840:4;826:18;;818:27;;;;;;256:16739;;;;;6234:849;;;;;;:::i;:::-;;:::i;:::-;;;28886:25:64;;;28874:2;28859:18;6234:849:4;;;;;;;;1238:523;;;;;;:::i;:::-;;:::i;15504:137::-;;;:::i;13006:426::-;;;;;;;;;;-1:-1:-1;13006:426:4;;;;;:::i;:::-;;:::i;3654:1025::-;;;;;;:::i;:::-;;:::i;1613:1295:59:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2914:169::-;;;;;;:::i;:::-;;:::i;:::-;;;17182:42:64;17170:55;;;17152:74;;17140:2;17125:18;2914:169:59;17006:226:64;2149:1038:4;;;;;;:::i;:::-;;:::i;10040:715::-;;;;;;:::i;:::-;;:::i;3227:199:59:-;;;;;;:::i;:::-;;:::i;350:39::-;;;;;;;;;;;;;;;1512:422:62;;;;;;;;;;-1:-1:-1;1512:422:62;;;;;:::i;:::-;;:::i;11697:920:4:-;;;;;;;;;;-1:-1:-1;11697:920:4;;;;;:::i;:::-;;:::i;15033:189::-;;;;;;;;;;-1:-1:-1;15033:189:4;;;;;:::i;:::-;;:::i;15283:170::-;;;;;;;;;;-1:-1:-1;15283:170:4;;;;;:::i;:::-;;:::i;10939:447::-;;;;;;:::i;:::-;;:::i;5156:571::-;;;;;;:::i;:::-;;:::i;641:410:62:-;;;;;;;;;;-1:-1:-1;641:410:62;;;;;:::i;:::-;;:::i;7628:2105:4:-;;;;;;:::i;:::-;;:::i;13533:619::-;;;;;;;;;;-1:-1:-1;13533:619:4;;;;;:::i;:::-;;:::i;14249:722::-;;;;;;;;;;-1:-1:-1;14249:722:4;;;;;:::i;:::-;;:::i;449:47:59:-;;;;;;;;;;;;;;;15702:335:4;;;;;;;;;;-1:-1:-1;15702:335:4;;;;;:::i;:::-;;:::i;6234:849::-;6327:17;6444:72;6463:14;;;;:6;:14;:::i;:::-;6479:11;;;;:6;:11;:::i;:::-;6491:1;6479:14;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:19;;;;;;;:::i;:::-;6500:6;:15;;;6444:18;:72::i;:::-;6726:9;6721:182;6741:11;;;;:6;:11;:::i;:::-;:18;;6737:1;:22;6721:182;;;6780:34;6794:11;;;;:6;:11;:::i;:::-;6806:1;6794:14;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:19;;;;;;;:::i;:::-;6780:13;:34::i;:::-;6846:11;;;;:6;:11;:::i;:::-;6858:1;6846:14;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:19;;;;;;;:::i;:::-;6840:31;;;6872:11;;;;:6;:11;:::i;:::-;6884:1;6872:14;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:19;;;;;;;:::i;:::-;6840:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6828:64;-1:-1:-1;6761:3:4;;;;:::i;:::-;;;;6721:182;;;;7029:6;:23;;;7016:9;:36;;7008:68;;;;;;;24419:2:64;7008:68:4;;;24401:21:64;24458:2;24438:18;;;24431:30;24497:21;24477:18;;;24470:49;24536:18;;7008:68:4;;;;;;;;;6234:849;;;:::o;1238:523::-;1328:17;1404:14;:5;:14;;1419;;;;;;;;:::i;:::-;1435:10;1447:11;;;;;;;;:::i;:::-;1404:72;;;;;;;;;;18374:42:64;18443:15;;;1404:72:4;;;18425:34:64;18495:15;;;18475:18;;;18468:43;18547:15;;;18527:18;;;18520:43;1460:15:4;;18579:18:64;;;18572:34;18336:19;;1404:72:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1550:11:4;;-1:-1:-1;;;1550:11:4;;;;;;;:::i;:::-;1544:23;;;1568:11;;;;:6;:11;:::i;:::-;1544:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1532:48;;1707:6;:23;;;1694:9;:36;;1686:68;;;;;;;24419:2:64;1686:68:4;;;24401:21:64;24458:2;24438:18;;;24431:30;24497:21;24477:18;;;24470:49;24536:18;;1686:68:4;24217:343:64;15504:137:4;15556:21;:26;15552:82;;15584:50;15600:10;15612:21;15584:15;:50::i;:::-;15504:137::o;13006:426::-;13167:19;13181:4;13167:13;:19::i;:::-;13248:51;13265:4;13271:10;13283:4;13289:9;13248:16;:51::i;:::-;13329:28;;;;;13309:17;;13329:22;;;;;;:28;;13352:4;;;;13329:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13309:48;;13388:13;13375:9;:26;;13367:58;;;;;;;24419:2:64;13367:58:4;;;24401:21:64;24458:2;24438:18;;;24431:30;24497:21;24477:18;;;24470:49;24536:18;;13367:58:4;24217:343:64;13367:58:4;13157:275;13006:426;;;;;:::o;3654:1025::-;3750:17;3979:9;3974:414;3990:15;;;3974:414;;;4026:27;4040:4;;4045:1;4040:7;;;;;;;:::i;4026:27::-;4160:15;:28;;;;4178:10;4160:28;;;4296:4;;4301:1;4296:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:12;;;;;;;:::i;:::-;4283:10;:25;;;;;;;;;;;;;;;4340:4;;4345:1;4340:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:12;;;;;;;:::i;:::-;4334:29;;;4364:4;;4369:1;4364:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:12;;;;;;;:::i;:::-;4334:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4322:55;-1:-1:-1;4007:3:4;;;;:::i;:::-;;;;3974:414;;;-1:-1:-1;4540:15:4;:28;;4566:1;4540:28;;;;;;;;;4578:23;;;;;;;4619:29;;;;4611:61;;;;;;;24419:2:64;4611:61:4;;;24401:21:64;24458:2;24438:18;;;24431:30;24497:21;24477:18;;;24470:49;24536:18;;4611:61:4;24217:343:64;4611:61:4;3654:1025;;;;;:::o;1613:1295:59:-;1677:22;1733:4;1721:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1711:34:59;-1:-1:-1;1987:15:59;;2012:890;2032:15;;;2012:890;;;2068:15;2086:20;2098:4;;2103:1;2098:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2086:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2086:11:59;;-1:-1:-1;;;2086:20:59:i;:::-;2068:38;-1:-1:-1;2124:51:59;;;2136:39;2124:51;;:121;;-1:-1:-1;2179:66:59;;;2191:54;2179:66;2124:121;2120:331;;;2274:10;2273:11;2265:41;;;;;;;27904:2:64;2265:41:59;;;27886:21:64;27943:2;27923:18;;;27916:30;27982:19;27962:18;;;27955:47;28019:18;;2265:41:59;27702:341:64;2265:41:59;2337:4;2324:17;;2120:331;;;2388:31;;;2400:19;2388:31;;2380:56;;;;;;;26865:2:64;2380:56:59;;;26847:21:64;26904:2;26884:18;;;26877:30;26943:14;26923:18;;;26916:42;26975:18;;2380:56:59;26663:336:64;2380:56:59;2466:12;;2511:4;2530;;2535:1;2530:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2503:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2465:73;;;;2557:7;2552:307;;2685:2;2669:6;:13;:18;2665:32;;;2689:8;;;2665:32;2768:4;2760:6;2756:17;2746:27;;2826:6;2815:28;;;;;;;;;;;;:::i;:::-;2808:36;;;;;;;;;;;:::i;2552:307::-;2885:6;2872:7;2880:1;2872:10;;;;;;;;:::i;:::-;;;;;;:19;;;;2054:848;;;2049:3;;;;;:::i;:::-;;;;2012:890;;;;1701:1207;1613:1295;;;;:::o;2914:169::-;3030:46;;;;;3004:7;;3030:25;:14;:25;;;;:46;;3056:7;;3065:10;;;;3030:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3023:53;2914:169;-1:-1:-1;;;;2914:169:59:o;2149:1038:4:-;2227:17;2301:14;:5;:14;;2316;;;;:6;:14;:::i;:::-;2332:10;2344:11;;;;:6;:11;:::i;:::-;2356:1;2344:14;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:19;;;;;;;:::i;:::-;2301:80;;;;;;;;;;18374:42:64;18443:15;;;2301:80:4;;;18425:34:64;18495:15;;;18475:18;;;18468:43;18547:15;;;18527:18;;;18520:43;2365:15:4;;;;18579:18:64;;;18572:34;18336:19;;2301:80:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:9;2739:268;2759:11;;;;:6;:11;:::i;:::-;:18;;2755:1;:22;2739:268;;;2884:34;2898:11;;;;:6;:11;:::i;2884:34::-;2950:11;;;;:6;:11;:::i;:::-;2962:1;2950:14;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:19;;;;;;;:::i;:::-;2944:31;;;2976:11;;;;:6;:11;:::i;:::-;2988:1;2976:14;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:19;;;;;;;:::i;:::-;2944:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2932:64;-1:-1:-1;2779:3:4;;;;:::i;:::-;;;;2739:268;;10040:715;10213:17;10242:19;10256:4;10242:13;:19::i;:::-;10327:9;10322:308;10342:10;:17;10338:1;:21;10322:308;;;10384:10;10395:1;10384:13;;;;;;;;:::i;:::-;;;;;;;:20;;;10380:240;;;10424:67;10443:10;10454:1;10443:13;;;;;;;;:::i;:::-;;;;;;;:19;;;10464:4;10470:10;10481:1;10470:13;;;;;;;;:::i;:::-;;;;;;;:20;;;10424:18;:67::i;:::-;10380:240;;;10530:5;:14;;;10545:10;10556:1;10545:13;;;;;;;;:::i;:::-;;;;;;;:19;;;10566:10;10578:4;10584:10;10595:1;10584:13;;;;;;;;:::i;:::-;;;;;;;:20;;;10530:75;;;;;;;;;;;;;;;;;18374:42:64;18443:15;;;18425:34;;18495:15;;;18490:2;18475:18;;18468:43;18547:15;;18542:2;18527:18;;18520:43;18594:2;18579:18;;18572:34;;;;18351:3;18336:19;;18133:479;10530:75:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10380:240;10361:3;;;;:::i;:::-;;;;10322:308;;;-1:-1:-1;10651:22:4;;;;;:16;;;;;;:22;;10668:4;;;;10651:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10639:34;;10704:12;10691:9;:25;;10683:65;;;;;;;24767:2:64;10683:65:4;;;24749:21:64;24806:2;24786:18;;;24779:30;24845:29;24825:18;;;24818:57;24892:18;;10683:65:4;24565:351:64;10683:65:4;10040:715;;;;;;;:::o;3227:199:59:-;3346:73;;;;;3378:10;3346:73;;;19519:34:64;3398:4:59;19569:18:64;;;19562:43;3405:4:59;19621:18:64;;;19614:50;19712:4;19700:17;;19680:18;;;19673:45;19734:19;;;19727:35;;;19778:19;;;19771:35;;;3346:5:59;:31;;;;;19430:19:64;;3346:73:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3227:199;;;:::o;1512:422:62:-;1719:91;;1754:10;1719:91;;;20614:34:64;1774:4:62;20664:18:64;;;20657:43;20716:18;;;20709:34;;;20759:18;;;20752:34;;;1796:4:62;20802:19:64;;;20795:51;20895:4;20883:17;;20862:19;;;20855:46;20917:19;;;20910:35;;;20961:19;;;20954:35;;;1690:12:62;;1708:10;;;;1742;;20525:19:64;;1719:91:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1708:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1689:122;;;1897:7;1892:35;;1913:14;;;;;;;;;;;;;;11697:920:4;11872:19;11886:4;11872:13;:19::i;:::-;11901:51;11918:4;11924:10;11936:4;11942:9;11901:16;:51::i;:::-;12010:22;;;;;11962:45;;12010:16;;;;;;:22;;12027:4;;;;12010:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11962:70;;12047:9;12042:569;12062:14;:21;12058:1;:25;12042:569;;;12104:9;12127:291;12138:18;:25;12134:1;:29;12127:291;;;12223:14;12238:1;12223:17;;;;;;;;:::i;:::-;;;;;;;:23;;;12192:54;;:18;12211:1;12192:21;;;;;;;;:::i;:::-;;;;;;;:27;;;:54;;;12188:216;;;12310:14;12325:1;12310:17;;;;;;;;:::i;:::-;;;;;;;:24;;;12278:18;12297:1;12278:21;;;;;;;;:::i;:::-;;;;;;;:28;;;:56;;12270:88;;;;;;;24419:2:64;12270:88:4;;;24401:21:64;24458:2;24438:18;;;24431:30;24497:21;24477:18;;;24470:49;24536:18;;12270:88:4;24217:343:64;12270:88:4;12380:5;;12188:216;12165:3;;;;:::i;:::-;;;;12127:291;;;12545:18;:25;12541:1;:29;12533:67;;;;;;;25472:2:64;12533:67:4;;;25454:21:64;25511:2;25491:18;;;25484:30;25550:27;25530:18;;;25523:55;25595:18;;12533:67:4;25270:349:64;12533:67:4;-1:-1:-1;12085:3:4;;;;:::i;:::-;;;;12042:569;;15033:189;15160:55;;;;;:14;18443:15:64;;;15160:55:4;;;18425:34:64;15190:4:4;18475:18:64;;;18468:43;18547:15;;;18527:18;;;18520:43;18579:18;;;18572:34;;;15160:5:4;:14;;;;18336:19:64;;15160:55:4;18133:479:64;15283:170:4;15408:38;15421:5;15428:9;15439:6;15408:12;:38::i;:::-;15283:170;;;:::o;10939:447::-;11076:17;11105:19;11119:4;11105:13;:19::i;:::-;11134:15;:28;;;;;;11152:10;11134:28;;;;;11172:17;;11134:28;11172:17;;;;;;;;11211:22;;;;;:16;;:22;;11228:4;;;;11211:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11243:15;:28;;11269:1;11243:28;;;;;;;;;11281:23;;;;;;;11199:34;-1:-1:-1;11322:25:4;;;;11314:65;;;;;;;24767:2:64;11314:65:4;;;24749:21:64;24806:2;24786:18;;;24779:30;24845:29;24825:18;;;24818:57;24892:18;;11314:65:4;24565:351:64;5156:571:4;5261:17;5378:64;5397:14;;;;;;;;:::i;:::-;5413:11;;;;;;;;:::i;:::-;5426:15;;5378:18;:64::i;:::-;5516:11;;;;;;;;:::i;641:410:62:-;844:88;;879:10;844:88;;;21372:34:64;899:4:62;21422:18:64;;;21415:43;21474:18;;;21467:34;;;21517:18;;;21510:34;;;21593:4;21581:17;;21560:19;;;21553:46;21615:19;;;21608:35;;;21659:19;;;21652:35;;;815:12:62;;833:10;;;;867;;21283:19:64;;844:88:62;21000:693:64;7628:2105:4;7878:9;7873:539;7893:18;:6;;:18;:::i;:::-;:25;;7889:1;:29;7873:539;;;7943:18;:6;;:18;:::i;:::-;7962:1;7943:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:28;;;;;;;;;:::i;:::-;7939:328;;;7991:107;8010:18;:6;;:18;:::i;:::-;8029:1;8010:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:29;;;;;;;:::i;:::-;8041:18;:6;;:18;:::i;:::-;8060:1;8041:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:26;;;;;;;;;:::i;:::-;8069:18;:6;;:18;:::i;:::-;8088:1;8069:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:28;;;7991:18;:107::i;:::-;7939:328;;;8137:14;:5;:14;;8152:18;:6;;:18;:::i;:::-;8171:1;8152:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:29;;;;;;;:::i;:::-;8183:10;8195:18;:6;;:18;:::i;:::-;8214:1;8195:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:26;;;;;;;;;:::i;:::-;8223:18;:6;;:18;:::i;:::-;8242:1;8223:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;8137:115;;;;;;;;;;18374:42:64;18443:15;;;8137:115:4;;;18425:34:64;18495:15;;;18475:18;;;18468:43;18547:15;;18527:18;;;18520:43;8223:28:4;;;;;18579:18:64;;;18572:34;18336:19;;8137:115:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7939:328;8280:41;8294:18;:6;;:18;:::i;:::-;8313:1;8294:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:26;;;;;;;;;:::i;8280:41::-;8341:18;:6;;:18;:::i;:::-;8360:1;8341:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:26;;;;;;;;;:::i;:::-;8335:38;;;8374:18;:6;;:18;:::i;:::-;8393:1;8374:21;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:26;;;;;;;:::i;:::-;8335:66;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7920:3:4;;;;:::i;:::-;;;;7873:539;;;;8533:9;8528:552;8548:21;;;;:6;:21;:::i;:::-;:28;;8544:1;:32;8528:552;;;8597:21;8621:15;:5;:15;;8637:21;;;;:6;:21;:::i;:::-;8659:1;8637:24;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:32;;;;;;;:::i;:::-;8621:64;;;;;;;;;;17421:42:64;17490:15;;;8621:64:4;;;17472:34:64;8679:4:4;17522:18:64;;;17515:43;17384:18;;8621:64:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8597:88;-1:-1:-1;8699:22:4;8787:14;8800:1;8795:2;8787:14;:::i;:::-;8741:21;;;;:6;:21;:::i;:::-;8763:1;8741:24;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:42;;;;;;;;;:::i;:::-;8725:58;;;;:13;:58;:::i;:::-;8724:77;;;;:::i;:::-;8699:102;-1:-1:-1;8815:14:4;:5;:14;;8830:21;;;;:6;:21;:::i;:::-;8852:1;8830:24;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:32;;;;;;;:::i;:::-;8872:4;8879:21;;;;:6;:21;:::i;:::-;8901:1;8879:24;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:29;;;;;;;;;:::i;:::-;8815:110;;;;;;;;;;18374:42:64;18443:15;;;8815:110:4;;;18425:34:64;18495:15;;;18475:18;;;18468:43;18547:15;;;18527:18;;;18520:43;18579:18;;;18572:34;;;18336:19;;8815:110:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8939:44:4;;-1:-1:-1;8953:21:4;;-1:-1:-1;;8953:21:4;;;:6;:21;:::i;:::-;8975:1;8953:24;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;8939:44::-;9003:21;;;;:6;:21;:::i;:::-;9025:1;9003:24;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:29;;;;;;;;;:::i;:::-;8997:41;;;9039:21;;;;:6;:21;:::i;:::-;9061:1;9039:24;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:29;;;;;;;:::i;:::-;8997:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8583:497;;8578:3;;;;;:::i;:::-;;;;8528:552;;;;9193:9;9188:539;9208:13;;;;:6;:13;:::i;:::-;:20;;9204:1;:24;9188:539;;;9249:21;9273:15;:5;:15;;9289:13;;;;:6;:13;:::i;:::-;9303:1;9289:16;;;;;;;:::i;:::-;:22;;;:16;;;;;:22;;;;-1:-1:-1;9289:22:4;:::i;:::-;9273:54;;;;;;;;;;17421:42:64;17490:15;;;9273:54:4;;;17472:34:64;9321:4:4;17522:18:64;;;17515:43;17384:18;;9273:54:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9249:78;-1:-1:-1;9366:13:4;;;;:6;:13;:::i;:::-;9380:1;9366:16;;;;;;;:::i;:::-;;;;;;:26;;;9349:13;:43;;9341:75;;;;;;;24419:2:64;9341:75:4;;;24401:21:64;24458:2;24438:18;;;24431:30;24497:21;24477:18;;;24470:49;24536:18;;9341:75:4;24217:343:64;9341:75:4;9434:13;;;;:6;:13;:::i;:::-;9448:1;9434:16;;;;;;;:::i;:::-;;;;;;:28;;;;;;;;;;:::i;:::-;9430:287;;;9482:14;:5;:14;;9497:13;;;;:6;:13;:::i;:::-;9511:1;9497:16;;;;;;;:::i;:::-;:22;;;:16;;;;;:22;;;;-1:-1:-1;9497:22:4;:::i;:::-;9529:4;9536:13;;;;:6;:13;:::i;:::-;9550:1;9536:16;;;;;;;:::i;:::-;;;;;;:19;;;;;;;;;;:::i;:::-;9482:92;;;;;;;;;;17846:42:64;17915:15;;;9482:92:4;;;17897:34:64;17967:15;;;17947:18;;;17940:43;18019:15;;;17999:18;;;17992:43;-1:-1:-1;18051:18:64;;;18044:34;18094:19;;;18087:35;;;17808:19;;9482:92:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;9430:287;;;9613:14;:5;:14;;9628:13;;;;:6;:13;:::i;:::-;9642:1;9628:16;;;;;;;:::i;:::-;:22;;;:16;;;;;:22;;;;-1:-1:-1;9628:22:4;:::i;:::-;9660:4;9667:13;;;;:6;:13;:::i;:::-;9681:1;9667:16;;;;;;;:::i;:::-;;;;;;:19;;;;;;;;;;:::i;:::-;9613:89;;;;;;;;;;18374:42:64;18443:15;;;9613:89:4;;;18425:34:64;18495:15;;;18475:18;;;18468:43;18547:15;;;18527:18;;;18520:43;18579:18;;;18572:34;;;18336:19;;9613:89:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9430:287;-1:-1:-1;9230:3:4;;;;:::i;:::-;;;;9188:539;;;;7628:2105;:::o;13533:619::-;13624:10;;;;13610;:24;13602:58;;;;;;;27206:2:64;13602:58:4;;;27188:21:64;27245:2;27225:18;;;27218:30;27284:23;27264:18;;;27257:51;27325:18;;13602:58:4;27004:345:64;13602:58:4;13670:28;13701:30;;;;13712:4;13701:30;:::i;:::-;13670:61;;13804:10;:17;;;13800:251;;;13864:16;;;13882:15;13911:17;;;;13837:92;;13864:16;13882:15;;;13899:10;;13837:26;:92::i;:::-;13800:251;;;13975:16;;;13993:15;14022:17;;;;;13960:80;;;;;:14;18443:15:64;;;13960:80:4;;;18425:34:64;13993:15:4;;;18475:18:64;;;18468:43;14010:10:4;18527:18:64;;;18520:43;18579:18;;;18572:34;13960:5:4;:14;;;;;;18336:19:64;;13960:80:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13800:251;-1:-1:-1;;14117:15:4;:28;;;;14143:1;14117:28;;;-1:-1:-1;13533:619:4:o;14249:722::-;14340:10;;;;14326;:24;14318:58;;;;;;;27206:2:64;14318:58:4;;;27188:21:64;27245:2;27225:18;;;27218:30;27284:23;27264:18;;;27257:51;27325:18;;14318:58:4;27004:345:64;14318:58:4;14386:30;14419:32;;;;14430:4;14419:32;:::i;:::-;14386:65;;14525:9;14520:350;14540:10;:17;14536:1;:21;14520:350;;;14582:10;14593:1;14582:13;;;;;;;;:::i;:::-;;;;;;;:20;;;14578:282;;;14622:98;14649:10;14660:1;14649:13;;;;;;;;:::i;:::-;;;;;;;:19;;;14670:15;;;;;;;;;;14687:10;14699;14710:1;14699:13;;;;;;;;:::i;:::-;;;;;;;:20;;;14622:26;:98::i;:::-;14578:282;;;14759:5;:14;;;14774:10;14785:1;14774:13;;;;;;;;:::i;:::-;;;;;;;:19;;;14795:15;;;;;;;;;;14812:10;14824;14835:1;14824:13;;;;;;;;:::i;:::-;;;;;;;:20;;;14759:86;;;;;;;;;;;;;;;;;18374:42:64;18443:15;;;18425:34;;18495:15;;;18490:2;18475:18;;18468:43;18547:15;;18542:2;18527:18;;18520:43;18594:2;18579:18;;18572:34;;;;18351:3;18336:19;;18133:479;14759:86:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14578:282;14559:3;;;;:::i;:::-;;;;14520:350;;;-1:-1:-1;;14936:15:4;:28;;;;14962:1;14936:28;;;-1:-1:-1;;14249:722:4:o;15702:335::-;15783:19;15805;15819:4;15805:13;:19::i;:::-;15783:41;;15857:13;15842:11;:28;;15834:58;;;;;;;28596:2:64;15834:58:4;;;28578:21:64;28635:2;28615:18;;;28608:30;28674:19;28654:18;;;28647:47;28711:18;;15834:58:4;28394:341:64;15834:58:4;15906:16;;15902:129;;15938:29;15955:11;15938:16;:29::i;:::-;15981:39;15997:9;16008:11;15981:15;:39::i;16200:231::-;16327:13;:5;:13;;;;;16348:21;;;:34;;16381:1;16348:34;;;16372:6;16348:34;16327:97;;;;;;;;;;17846:42:64;17915:15;;;16327:97:4;;;17897:34:64;16391:10:4;17947:18:64;;;17940:43;18019:15;;17999:18;;;17992:43;18051:18;;;18044:34;;;16422:1:4;18094:19:64;;;18087:35;17808:19;;16327:97:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;16200:231;;;:::o;16783:210::-;16844:22;;;;;;;:16;:22;;;;;;;;16839:148;;16890:26;;;;;:20;17170:55:64;;;16890:26:4;;;17152:74:64;16890:14:4;:20;;;;17125:18:64;;16890:26:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16882:51;;;;;;;26524:2:64;16882:51:4;;;26506:21:64;26563:2;26543:18;;;26536:30;26602:14;26582:18;;;26575:42;26634:18;;16882:51:4;26322:336:64;16882:51:4;16947:22;;;;;;;:16;:22;;;;;:29;;;;16972:4;16947:29;;;16839:148;16783:210;:::o;5833:187:59:-;5913:12;5931:9;:14;;5953:6;5931:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5912:52;;;5982:7;5974:39;;;;;;;27556:2:64;5974:39:59;;;27538:21:64;27595:2;27575:18;;;27568:30;27634:21;27614:18;;;27607:49;27673:18;;5974:39:59;27354:343:64;4941:412:59;5137:61;;;5126:10;20098:15:64;;;5137:61:59;;;20080:34:64;20150:15;;;20130:18;;;20123:43;20182:18;;;;20175:34;;;5137:61:59;;;;;;;;;;19992:18:64;;;;5137:61:59;;;;;;;;;;;;;5126:73;;-1:-1:-1;;;;5126:10:59;;;;:73;;5137:61;5126:73;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5090:109;;;;5264:7;:57;;;;-1:-1:-1;5276:11:59;;:16;;:44;;;5307:4;5296:24;;;;;;;;;;;;:::i;:::-;5256:90;;;;;;;25123:2:64;5256:90:59;;;25105:21:64;25162:2;25142:18;;;25135:30;25201:22;25181:18;;;25174:50;25241:18;;5256:90:59;24921:344:64;6149:153:59;6282:2;6271:14;6265:21;;6149:153::o;4275:359::-;4443:53;;;4432:10;22259:55:64;;;4443:53:59;;;22241:74:64;22331:18;;;;22324:34;;;4443:53:59;;;;;;;;;;22214:18:64;;;;4443:53:59;;;;;;;;;;;;;4432:65;;-1:-1:-1;;;;4432:10:59;;;;:65;;4443:53;4432:65;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4396:101;;;;4550:7;:57;;;;-1:-1:-1;4562:11:59;;:16;;:44;;;4593:4;4582:24;;;;;;;;;;;;:::i;:::-;4542:85;;;;;;;25826:2:64;4542:85:59;;;25808:21:64;25865:2;25845:18;;;25838:30;25904:17;25884:18;;;25877:45;25939:18;;4542:85:59;25624:339:64;16518:259:4;16677:13;:5;:13;;;;;16698:21;;;:34;;16731:1;16698:34;;;16722:6;16698:34;16677:93;;;;;;;;;;17846:42:64;17915:15;;;16677:93:4;;;17897:34:64;17967:15;;;17947:18;;;17940:43;18019:15;;17999:18;;;17992:43;18051:18;;;18044:34;;;16768:1:4;18094:19:64;;;18087:35;17808:19;;16677:93:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3682:341:59:-;3823:49;;;3866:4;3823:49;;;;17152:74:64;;;;3823:49:59;;;;;;;;;;17125:18:64;;;;3823:49:59;;;;;;;;;;;;;3806:67;;3743:15;;;;;;3806:16;;;;:67;;3823:49;3806:67;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3770:103;;;;3919:7;:28;;;;;3945:2;3930:4;:11;:17;;3919:28;3911:58;;;;;;;28250:2:64;3911:58:59;;;28232:21:64;28289:2;28269:18;;;28262:30;28328:19;28308:18;;;28301:47;28365:18;;3911:58:59;28048:341:64;3911:58:59;4000:4;3989:27;;;;;;;;;;;;:::i;5468:222::-;5530:12;5548:4;:9;;5581:10;5593:6;5558:42;;;;;;28886:25:64;;28874:2;28859:18;;28740:177;5558:42:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5548:53;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5529:72;;;5646:7;5638:45;;;;;;;26170:2:64;5638:45:59;;;26152:21:64;26209:2;26189:18;;;26182:30;26248:27;26228:18;;;26221:55;26293:18;;5638:45:59;25968:349:64;14:374;84:8;94:6;148:3;141:4;133:6;129:17;125:27;115:55;;166:1;163;156:12;115:55;-1:-1:-1;189:20:64;;232:18;221:30;;218:50;;;264:1;261;254:12;218:50;301:4;293:6;289:17;277:29;;361:3;354:4;344:6;341:1;337:14;329:6;325:27;321:38;318:47;315:67;;;378:1;375;368:12;315:67;14:374;;;;;:::o;393:739::-;457:5;510:3;503:4;495:6;491:17;487:27;477:55;;528:1;525;518:12;477:55;564:6;551:20;590:4;614:71;630:54;681:2;630:54;:::i;:::-;614:71;:::i;:::-;719:15;;;750:12;;;;782:15;;;816:4;851:11;;;839:24;;835:33;;832:42;-1:-1:-1;829:62:64;;;887:1;884;877:12;829:62;909:1;919:184;933:2;930:1;927:9;919:184;;;990:38;1024:3;1019;990:38;:::i;:::-;978:51;;1049:12;;;;1081;;;;951:1;944:9;919:184;;;-1:-1:-1;1121:5:64;;393:739;-1:-1:-1;;;;;;;;393:739:64:o;1137:347::-;1188:8;1198:6;1252:3;1245:4;1237:6;1233:17;1229:27;1219:55;;1270:1;1267;1260:12;1219:55;-1:-1:-1;1293:20:64;;1336:18;1325:30;;1322:50;;;1368:1;1365;1358:12;1322:50;1405:4;1397:6;1393:17;1381:29;;1457:3;1450:4;1441:6;1433;1429:19;1425:30;1422:39;1419:59;;;1474:1;1471;1464:12;1489:684;1546:5;1594:4;1582:9;1577:3;1573:19;1569:30;1566:50;;;1612:1;1609;1602:12;1566:50;1645:2;1639:9;1687:4;1679:6;1675:17;1758:6;1746:10;1743:22;1722:18;1710:10;1707:34;1704:62;1701:88;;;1769:18;;:::i;:::-;1805:2;1798:22;1838:6;-1:-1:-1;1838:6:64;1868:23;;1900:33;1868:23;1900:33;:::i;:::-;1942:23;;2017:2;2002:18;;1989:32;2030:30;1989:32;2030:30;:::i;:::-;2088:2;2076:15;;2069:32;2162:2;2147:18;;;2134:32;2117:15;;2110:57;;;;1489:684;;-1:-1:-1;1489:684:64:o;2178:156::-;2244:20;;2304:4;2293:16;;2283:27;;2273:55;;2324:1;2321;2314:12;2339:247;2398:6;2451:2;2439:9;2430:7;2426:23;2422:32;2419:52;;;2467:1;2464;2457:12;2419:52;2506:9;2493:23;2525:31;2550:5;2525:31;:::i;2591:251::-;2661:6;2714:2;2702:9;2693:7;2689:23;2685:32;2682:52;;;2730:1;2727;2720:12;2682:52;2762:9;2756:16;2781:31;2806:5;2781:31;:::i;2847:544::-;2926:6;2934;2942;2995:2;2983:9;2974:7;2970:23;2966:32;2963:52;;;3011:1;3008;3001:12;2963:52;3050:9;3037:23;3069:31;3094:5;3069:31;:::i;:::-;3119:5;-1:-1:-1;3175:2:64;3160:18;;3147:32;3202:18;3191:30;;3188:50;;;3234:1;3231;3224:12;3188:50;3273:58;3323:7;3314:6;3303:9;3299:22;3273:58;:::i;:::-;2847:544;;3350:8;;-1:-1:-1;3247:84:64;;-1:-1:-1;;;;2847:544:64:o;3396:456::-;3473:6;3481;3489;3542:2;3530:9;3521:7;3517:23;3513:32;3510:52;;;3558:1;3555;3548:12;3510:52;3597:9;3584:23;3616:31;3641:5;3616:31;:::i;:::-;3666:5;-1:-1:-1;3718:2:64;3703:18;;3690:32;;-1:-1:-1;3774:2:64;3759:18;;3746:32;3787:33;3746:32;3787:33;:::i;:::-;3839:7;3829:17;;;3396:456;;;;;:::o;3857:612::-;3945:6;3953;3961;3969;4022:2;4010:9;4001:7;3997:23;3993:32;3990:52;;;4038:1;4035;4028:12;3990:52;4077:9;4064:23;4096:31;4121:5;4096:31;:::i;:::-;4146:5;-1:-1:-1;4198:2:64;4183:18;;4170:32;;-1:-1:-1;4253:2:64;4238:18;;4225:32;4280:18;4269:30;;4266:50;;;4312:1;4309;4302:12;4266:50;4351:58;4401:7;4392:6;4381:9;4377:22;4351:58;:::i;:::-;3857:612;;;;-1:-1:-1;4428:8:64;-1:-1:-1;;;;3857:612:64:o;4474:1767::-;4625:6;4633;4641;4649;4657;4710:3;4698:9;4689:7;4685:23;4681:33;4678:53;;;4727:1;4724;4717:12;4678:53;4766:9;4753:23;4785:31;4810:5;4785:31;:::i;:::-;4835:5;-1:-1:-1;4859:2:64;4893:18;;;4880:32;;-1:-1:-1;4931:2:64;4969:18;;;4956:32;5007:18;5037:14;;;5034:34;;;5064:1;5061;5054:12;5034:34;5103:58;5153:7;5144:6;5133:9;5129:22;5103:58;:::i;:::-;5180:8;;-1:-1:-1;5077:84:64;-1:-1:-1;5268:2:64;5253:18;;5240:32;;-1:-1:-1;5284:16:64;;;5281:36;;;5313:1;5310;5303:12;5281:36;-1:-1:-1;5336:24:64;;5391:4;5383:13;;5379:27;-1:-1:-1;5369:55:64;;5420:1;5417;5410:12;5369:55;5456:2;5443:16;5479:71;5495:54;5546:2;5495:54;:::i;5479:71::-;5572:3;5596:2;5591:3;5584:15;5624:2;5619:3;5615:12;5608:19;;5655:2;5651;5647:11;5703:7;5698:2;5692;5689:1;5685:10;5681:2;5677:19;5673:28;5670:41;5667:61;;;5724:1;5721;5714:12;5667:61;5746:1;5737:10;;5756:455;5770:2;5767:1;5764:9;5756:455;;;5841:2;5835:3;5826:7;5822:17;5818:26;5815:46;;;5857:1;5854;5847:12;5815:46;5889:22;;:::i;:::-;5952:3;5939:17;5969:33;5994:7;5969:33;:::i;:::-;6015:24;;6090:12;;;6077:26;6059:16;;;6052:52;6117:20;;5788:1;5781:9;;;;;6157:12;;;;6189;;5756:455;;;5760:3;6230:5;6220:15;;;;;;;;4474:1767;;;;;;;;:::o;6246:681::-;6343:6;6351;6359;6367;6375;6428:3;6416:9;6407:7;6403:23;6399:33;6396:53;;;6445:1;6442;6435:12;6396:53;6484:9;6471:23;6503:31;6528:5;6503:31;:::i;:::-;6553:5;-1:-1:-1;6605:2:64;6590:18;;6577:32;;-1:-1:-1;6660:2:64;6645:18;;6632:32;6687:18;6676:30;;6673:50;;;6719:1;6716;6709:12;6673:50;6758:58;6808:7;6799:6;6788:9;6784:22;6758:58;:::i;:::-;6246:681;;;;-1:-1:-1;6835:8:64;6917:2;6902:18;6889:32;;6246:681;-1:-1:-1;;;;6246:681:64:o;6932:592::-;7034:6;7042;7050;7058;7066;7074;7127:3;7115:9;7106:7;7102:23;7098:33;7095:53;;;7144:1;7141;7134:12;7095:53;7183:9;7170:23;7202:31;7227:5;7202:31;:::i;:::-;7252:5;-1:-1:-1;7304:2:64;7289:18;;7276:32;;-1:-1:-1;7355:2:64;7340:18;;7327:32;;-1:-1:-1;7378:36:64;7410:2;7395:18;;7378:36;:::i;:::-;7368:46;;7461:3;7450:9;7446:19;7433:33;7423:43;;7513:3;7502:9;7498:19;7485:33;7475:43;;6932:592;;;;;;;;:::o;7529:455::-;7626:6;7634;7687:2;7675:9;7666:7;7662:23;7658:32;7655:52;;;7703:1;7700;7693:12;7655:52;7743:9;7730:23;7776:18;7768:6;7765:30;7762:50;;;7808:1;7805;7798:12;7762:50;7847:77;7916:7;7907:6;7896:9;7892:22;7847:77;:::i;:::-;7943:8;;7821:103;;-1:-1:-1;7529:455:64;-1:-1:-1;;;;7529:455:64:o;7989:1263::-;8113:6;8144:2;8187;8175:9;8166:7;8162:23;8158:32;8155:52;;;8203:1;8200;8193:12;8155:52;8236:9;8230:16;8269:18;8261:6;8258:30;8255:50;;;8301:1;8298;8291:12;8255:50;8324:22;;8377:4;8369:13;;8365:27;-1:-1:-1;8355:55:64;;8406:1;8403;8396:12;8355:55;8435:2;8429:9;8458:71;8474:54;8525:2;8474:54;:::i;8458:71::-;8551:3;8575:2;8570:3;8563:15;8603:2;8598:3;8594:12;8587:19;;8634:2;8630;8626:11;8682:7;8677:2;8671;8668:1;8664:10;8660:2;8656:19;8652:28;8649:41;8646:61;;;8703:1;8700;8693:12;8646:61;8725:1;8716:10;;8746:1;8756:466;8772:2;8767:3;8764:11;8756:466;;;8831:4;8874:2;8868:3;8859:7;8855:17;8851:26;8848:46;;;8890:1;8887;8880:12;8848:46;8920:22;;:::i;:::-;8976:3;8970:10;8993:33;9018:7;8993:33;:::i;:::-;9039:22;;9103:12;;;9097:19;9081:14;;;9074:43;9130:18;;9168:12;;;;9200;;;;8794:1;8785:11;8756:466;;;-1:-1:-1;9241:5:64;;7989:1263;-1:-1:-1;;;;;;;;7989:1263:64:o;9257:386::-;9369:6;9422:2;9410:9;9401:7;9397:23;9393:32;9390:52;;;9438:1;9435;9428:12;9390:52;9478:9;9465:23;9511:18;9503:6;9500:30;9497:50;;;9543:1;9540;9533:12;9497:50;9566:71;9629:7;9620:6;9609:9;9605:22;9566:71;:::i;9648:898::-;9798:6;9806;9814;9822;9830;9883:3;9871:9;9862:7;9858:23;9854:33;9851:53;;;9900:1;9897;9890:12;9851:53;9940:9;9927:23;9969:18;10010:2;10002:6;9999:14;9996:34;;;10026:1;10023;10016:12;9996:34;10049:71;10112:7;10103:6;10092:9;10088:22;10049:71;:::i;:::-;10039:81;;10170:2;10159:9;10155:18;10142:32;10129:45;;10183:31;10208:5;10183:31;:::i;:::-;10233:5;;-1:-1:-1;10285:2:64;10270:18;;10257:32;;-1:-1:-1;10342:2:64;10327:18;;10314:32;;10358:16;;;10355:36;;;10387:1;10384;10377:12;10355:36;;10426:60;10478:7;10467:8;10456:9;10452:24;10426:60;:::i;:::-;9648:898;;;;-1:-1:-1;9648:898:64;;-1:-1:-1;10505:8:64;;10400:86;9648:898;-1:-1:-1;;;9648:898:64:o;10551:241::-;10607:6;10660:2;10648:9;10639:7;10635:23;10631:32;10628:52;;;10676:1;10673;10666:12;10628:52;10715:9;10702:23;10734:28;10756:5;10734:28;:::i;10797:245::-;10864:6;10917:2;10905:9;10896:7;10892:23;10888:32;10885:52;;;10933:1;10930;10923:12;10885:52;10965:9;10959:16;10984:28;11006:5;10984:28;:::i;11047:409::-;11117:6;11125;11178:2;11166:9;11157:7;11153:23;11149:32;11146:52;;;11194:1;11191;11184:12;11146:52;11234:9;11221:23;11267:18;11259:6;11256:30;11253:50;;;11299:1;11296;11289:12;11253:50;11338:58;11388:7;11379:6;11368:9;11364:22;11338:58;:::i;11461:765::-;11541:6;11594:2;11582:9;11573:7;11569:23;11565:32;11562:52;;;11610:1;11607;11600:12;11562:52;11643:9;11637:16;11672:18;11713:2;11705:6;11702:14;11699:34;;;11729:1;11726;11719:12;11699:34;11767:6;11756:9;11752:22;11742:32;;11812:7;11805:4;11801:2;11797:13;11793:27;11783:55;;11834:1;11831;11824:12;11783:55;11863:2;11857:9;11885:2;11881;11878:10;11875:36;;;11891:18;;:::i;:::-;11933:112;12041:2;11972:66;11965:4;11961:2;11957:13;11953:86;11949:95;11933:112;:::i;:::-;11920:125;;12068:2;12061:5;12054:17;12108:7;12103:2;12098;12094;12090:11;12086:20;12083:33;12080:53;;;12129:1;12126;12119:12;12080:53;12142:54;12193:2;12188;12181:5;12177:14;12172:2;12168;12164:11;12142:54;:::i;:::-;-1:-1:-1;12215:5:64;11461:765;-1:-1:-1;;;;11461:765:64:o;12231:396::-;12327:6;12380:2;12368:9;12359:7;12355:23;12351:32;12348:52;;;12396:1;12393;12386:12;12348:52;12436:9;12423:23;12469:18;12461:6;12458:30;12455:50;;;12501:1;12498;12491:12;12455:50;12524:22;;12580:2;12562:16;;;12558:25;12555:45;;;12596:1;12593;12586:12;12632:396;12727:6;12780:2;12768:9;12759:7;12755:23;12751:32;12748:52;;;12796:1;12793;12786:12;12748:52;12836:9;12823:23;12869:18;12861:6;12858:30;12855:50;;;12901:1;12898;12891:12;12855:50;12924:22;;12980:3;12962:16;;;12958:26;12955:46;;;12997:1;12994;12987:12;13033:402;13134:6;13187:2;13175:9;13166:7;13162:23;13158:32;13155:52;;;13203:1;13200;13193:12;13155:52;13243:9;13230:23;13276:18;13268:6;13265:30;13262:50;;;13308:1;13305;13298:12;13262:50;13331:22;;13387:3;13369:16;;;13365:26;13362:46;;;13404:1;13401;13394:12;13440:233;13527:6;13580:2;13568:9;13559:7;13555:23;13551:32;13548:52;;;13596:1;13593;13586:12;13548:52;13619:48;13659:7;13648:9;13619:48;:::i;13678:184::-;13748:6;13801:2;13789:9;13780:7;13776:23;13772:32;13769:52;;;13817:1;13814;13807:12;13769:52;-1:-1:-1;13840:16:64;;13678:184;-1:-1:-1;13678:184:64:o;13867:315::-;13935:6;13943;13996:2;13984:9;13975:7;13971:23;13967:32;13964:52;;;14012:1;14009;14002:12;13964:52;14048:9;14035:23;14025:33;;14108:2;14097:9;14093:18;14080:32;14121:31;14146:5;14121:31;:::i;:::-;14171:5;14161:15;;;13867:315;;;;;:::o;14187:536::-;14306:6;14314;14322;14375:2;14363:9;14354:7;14350:23;14346:32;14343:52;;;14391:1;14388;14381:12;14343:52;14427:9;14414:23;14404:33;;14488:2;14477:9;14473:18;14460:32;14515:18;14507:6;14504:30;14501:50;;;14547:1;14544;14537:12;14501:50;14586:77;14655:7;14646:6;14635:9;14631:22;14586:77;:::i;14728:245::-;14807:6;14815;14868:2;14856:9;14847:7;14843:23;14839:32;14836:52;;;14884:1;14881;14874:12;14836:52;-1:-1:-1;;14907:16:64;;14963:2;14948:18;;;14942:25;14907:16;;14942:25;;-1:-1:-1;14728:245:64:o;14978:284::-;15036:6;15089:2;15077:9;15068:7;15064:23;15060:32;15057:52;;;15105:1;15102;15095:12;15057:52;15144:9;15131:23;15194:18;15187:5;15183:30;15176:5;15173:41;15163:69;;15228:1;15225;15218:12;15267:318;15342:6;15350;15358;15411:2;15399:9;15390:7;15386:23;15382:32;15379:52;;;15427:1;15424;15417:12;15379:52;15450:27;15467:9;15450:27;:::i;:::-;15440:37;15524:2;15509:18;;15496:32;;-1:-1:-1;15575:2:64;15560:18;;;15547:32;;15267:318;-1:-1:-1;;;15267:318:64:o;15590:325::-;15678:6;15673:3;15666:19;15730:6;15723:5;15716:4;15711:3;15707:14;15694:43;;15782:1;15775:4;15766:6;15761:3;15757:16;15753:27;15746:38;15648:3;15904:4;15834:66;15829:2;15821:6;15817:15;15813:88;15808:3;15804:98;15800:109;15793:116;;15590:325;;;;:::o;15920:316::-;15961:3;15999:5;15993:12;16026:6;16021:3;16014:19;16042:63;16098:6;16091:4;16086:3;16082:14;16075:4;16068:5;16064:16;16042:63;:::i;:::-;16150:2;16138:15;16155:66;16134:88;16125:98;;;;16225:4;16121:109;;15920:316;-1:-1:-1;;15920:316:64:o;16241:271::-;16424:6;16416;16411:3;16398:33;16380:3;16450:16;;16475:13;;;16450:16;16241:271;-1:-1:-1;16241:271:64:o;16517:274::-;16646:3;16684:6;16678:13;16700:53;16746:6;16741:3;16734:4;16726:6;16722:17;16700:53;:::i;:::-;16769:16;;;;;16517:274;-1:-1:-1;;16517:274:64:o;21698:364::-;21895:42;21887:6;21883:55;21872:9;21865:74;21975:2;21970;21959:9;21955:18;21948:30;21846:4;21995:61;22052:2;22041:9;22037:18;22029:6;22021;21995:61;:::i;22369:859::-;22529:4;22558:2;22598;22587:9;22583:18;22628:2;22617:9;22610:21;22651:6;22686;22680:13;22717:6;22709;22702:22;22755:2;22744:9;22740:18;22733:25;;22817:2;22807:6;22804:1;22800:14;22789:9;22785:30;22781:39;22767:53;;22855:2;22847:6;22843:15;22876:1;22886:313;22900:6;22897:1;22894:13;22886:313;;;22989:66;22977:9;22969:6;22965:22;22961:95;22956:3;22949:108;23080:39;23112:6;23103;23097:13;23080:39;:::i;:::-;23070:49;-1:-1:-1;23177:12:64;;;;23142:15;;;;22922:1;22915:9;22886:313;;;-1:-1:-1;23216:6:64;;22369:859;-1:-1:-1;;;;;;;22369:859:64:o;23233:244::-;23390:2;23379:9;23372:21;23353:4;23410:61;23467:2;23456:9;23452:18;23444:6;23436;23410:61;:::i;23993:219::-;24142:2;24131:9;24124:21;24105:4;24162:44;24202:2;24191:9;24187:18;24179:6;24162:44;:::i;28922:635::-;29046:4;29052:6;29112:11;29099:25;29202:66;29191:8;29175:14;29171:29;29167:102;29147:18;29143:127;29133:155;;29284:1;29281;29274:12;29133:155;29311:33;;29363:20;;;-1:-1:-1;29406:18:64;29395:30;;29392:50;;;29438:1;29435;29428:12;29392:50;29471:4;29459:17;;-1:-1:-1;29522:1:64;29518:14;;;29502;29498:35;29488:46;;29485:66;;;29547:1;29544;29537:12;29562:630;29681:4;29687:6;29747:11;29734:25;29837:66;29826:8;29810:14;29806:29;29802:102;29782:18;29778:127;29768:155;;29919:1;29916;29909:12;29768:155;29946:33;;29998:20;;;-1:-1:-1;30041:18:64;30030:30;;30027:50;;;30073:1;30070;30063:12;30027:50;30106:4;30094:17;;-1:-1:-1;30157:1:64;30153:14;;;30137;30133:35;30123:46;;30120:66;;;30182:1;30179;30172:12;31473:580;31550:4;31556:6;31616:11;31603:25;31706:66;31695:8;31679:14;31675:29;31671:102;31651:18;31647:127;31637:155;;31788:1;31785;31778:12;31637:155;31815:33;;31867:20;;;-1:-1:-1;31910:18:64;31899:30;;31896:50;;;31942:1;31939;31932:12;31896:50;31975:4;31963:17;;-1:-1:-1;32006:14:64;32002:27;;;31992:38;;31989:58;;;32043:1;32040;32033:12;32058:387;32155:4;32213:11;32200:25;32303:66;32292:8;32276:14;32272:29;32268:102;32248:18;32244:127;32234:155;;32385:1;32382;32375:12;32450:380;32540:4;32598:11;32585:25;32688:66;32677:8;32661:14;32657:29;32653:102;32633:18;32629:127;32619:155;;32770:1;32767;32760:12;32835:390;32935:4;32993:11;32980:25;33083:66;33072:8;33056:14;33052:29;33048:102;33028:18;33024:127;33014:155;;33165:1;33162;33155:12;33230:251;33302:2;33296:9;;;33332:15;;33377:18;33362:34;;33398:22;;;33359:62;33356:88;;;33424:18;;:::i;:::-;33460:2;33453:22;33230:251;:::o;33748:334::-;33819:2;33813:9;33875:2;33865:13;;33880:66;33861:86;33849:99;;33978:18;33963:34;;33999:22;;;33960:62;33957:88;;;34025:18;;:::i;:::-;34061:2;34054:22;33748:334;;-1:-1:-1;33748:334:64:o;34087:194::-;34158:4;34191:18;34183:6;34180:30;34177:56;;;34213:18;;:::i;:::-;-1:-1:-1;34258:1:64;34254:14;34270:4;34250:25;;34087:194::o;34286:274::-;34326:1;34352;34342:189;;34387:77;34384:1;34377:88;34488:4;34485:1;34478:15;34516:4;34513:1;34506:15;34342:189;-1:-1:-1;34545:9:64;;34286:274::o;34565:482::-;34654:1;34697:5;34654:1;34711:330;34732:7;34722:8;34719:21;34711:330;;;34851:4;34783:66;34779:77;34773:4;34770:87;34767:113;;;34860:18;;:::i;:::-;34910:7;34900:8;34896:22;34893:55;;;34930:16;;;;34893:55;35009:22;;;;34969:15;;;;34711:330;;;34715:3;34565:482;;;;;:::o;35052:140::-;35110:5;35139:47;35180:4;35170:8;35166:19;35160:4;35246:5;35276:8;35266:80;;-1:-1:-1;35317:1:64;35331:5;;35266:80;35365:4;35355:76;;-1:-1:-1;35402:1:64;35416:5;;35355:76;35447:4;35465:1;35460:59;;;;35533:1;35528:130;;;;35440:218;;35460:59;35490:1;35481:10;;35504:5;;;35528:130;35565:3;35555:8;35552:17;35549:43;;;35572:18;;:::i;:::-;-1:-1:-1;;35628:1:64;35614:16;;35643:5;;35440:218;;35742:2;35732:8;35729:16;35723:3;35717:4;35714:13;35710:36;35704:2;35694:8;35691:16;35686:2;35680:4;35677:12;35673:35;35670:77;35667:159;;;-1:-1:-1;35779:19:64;;;35811:5;;35667:159;35858:34;35883:8;35877:4;35858:34;:::i;:::-;35988:6;35920:66;35916:79;35907:7;35904:92;35901:118;;;35999:18;;:::i;:::-;36037:20;;-1:-1:-1;35197:866:64;;;;;:::o;36068:228::-;36108:7;36234:1;36166:66;36162:74;36159:1;36156:81;36151:1;36144:9;36137:17;36133:105;36130:131;;;36241:18;;:::i;:::-;-1:-1:-1;36281:9:64;;36068:228::o;36301:258::-;36373:1;36383:113;36397:6;36394:1;36391:13;36383:113;;;36473:11;;;36467:18;36454:11;;;36447:39;36419:2;36412:10;36383:113;;;36514:6;36511:1;36508:13;36505:48;;;36549:1;36540:6;36535:3;36531:16;36524:27;36505:48;;36301:258;;;:::o;36564:195::-;36603:3;36634:66;36627:5;36624:77;36621:103;;;36704:18;;:::i;:::-;-1:-1:-1;36751:1:64;36740:13;;36564:195::o;36764:184::-;36816:77;36813:1;36806:88;36913:4;36910:1;36903:15;36937:4;36934:1;36927:15;36953:184;37005:77;37002:1;36995:88;37102:4;37099:1;37092:15;37126:4;37123:1;37116:15;37142:184;37194:77;37191:1;37184:88;37291:4;37288:1;37281:15;37315:4;37312:1;37305:15;37331:154;37417:42;37410:5;37406:54;37399:5;37396:65;37386:93;;37475:1;37472;37465:12;37490:118;37576:5;37569:13;37562:21;37555:5;37552:32;37542:60;;37598:1;37595;37588:12"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "3756400",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "addLiquidity((address,bool,uint256)[],address,uint256,bytes)": "infinite",
                "addLiquidityLazy(address,uint256,bytes)": "infinite",
                "approveMasterContract(uint8,bytes32,bytes32)": "infinite",
                "batch(bytes[])": "infinite",
                "bento()": "infinite",
                "burnLiquidity(address,uint256,bytes,(address,uint256)[])": "infinite",
                "burnLiquiditySingle(address,uint256,bytes,uint256)": "infinite",
                "complexPath(((address,address,bool,uint256,bytes)[],(address,address,uint64,bytes)[],(address,address,bool,uint256)[]))": "infinite",
                "deployPool(address,bytes)": "infinite",
                "exactInput((address,uint256,uint256,(address,bytes)[]))": "infinite",
                "exactInputLazy(uint256,(address,bytes)[])": "49143",
                "exactInputSingle((uint256,uint256,address,address,bytes))": "infinite",
                "exactInputSingleWithNativeToken((uint256,uint256,address,address,bytes))": "infinite",
                "exactInputWithNativeToken((address,uint256,uint256,(address,bytes)[]))": "infinite",
                "masterDeployer()": "infinite",
                "permitThis(address,uint256,uint256,uint8,bytes32,bytes32)": "infinite",
                "permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)": "infinite",
                "refundETH()": "infinite",
                "sweepBentoBoxToken(address,uint256,address)": "infinite",
                "sweepNativeToken(address,uint256,address)": "infinite",
                "tridentMintCallback(bytes)": "infinite",
                "tridentSwapCallback(bytes)": "infinite",
                "unwrapWETH(uint256,address)": "infinite"
              },
              "internal": {
                "_depositFromUserToBentoBox(address,address,address,uint256)": "infinite",
                "_depositToBentoBox(address,address,uint256)": "infinite",
                "isWhiteListed(address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "addLiquidity((address,bool,uint256)[],address,uint256,bytes)": "2cfcb94f",
              "addLiquidityLazy(address,uint256,bytes)": "98a691de",
              "approveMasterContract(uint8,bytes32,bytes32)": "403335a8",
              "batch(bytes[])": "1e897afb",
              "bento()": "4da31827",
              "burnLiquidity(address,uint256,bytes,(address,uint256)[])": "783312d9",
              "burnLiquiditySingle(address,uint256,bytes,uint256)": "1aa349a8",
              "complexPath(((address,address,bool,uint256,bytes)[],(address,address,uint64,bytes)[],(address,address,bool,uint256)[]))": "b96c5c0e",
              "deployPool(address,bytes)": "250558dc",
              "exactInput((address,uint256,uint256,(address,bytes)[]))": "2c0d9a01",
              "exactInputLazy(uint256,(address,bytes)[])": "1ab5d6c8",
              "exactInputSingle((uint256,uint256,address,address,bytes))": "0f93d439",
              "exactInputSingleWithNativeToken((uint256,uint256,address,address,bytes))": "9fa74491",
              "exactInputWithNativeToken((address,uint256,uint256,(address,bytes)[]))": "0b0d1b1e",
              "masterDeployer()": "cf58879a",
              "permitThis(address,uint256,uint256,uint8,bytes32,bytes32)": "a9b62c23",
              "permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)": "77631981",
              "refundETH()": "12210e8a",
              "sweepBentoBoxToken(address,uint256,address)": "9128efda",
              "sweepNativeToken(address,uint256,address)": "94ae4ab2",
              "tridentMintCallback(bytes)": "ced10b49",
              "tridentSwapCallback(bytes)": "bd50c7b1",
              "unwrapWETH(uint256,address)": "e16d9ce5"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IBentoBoxMinimal\",\"name\":\"bento\",\"type\":\"address\"},{\"internalType\":\"contract IMasterDeployer\",\"name\":\"masterDeployer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"wETH\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"PermitFailed\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"native\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ITridentRouter.TokenInput[]\",\"name\":\"tokenInput\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minLiquidity\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minLiquidity\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"addLiquidityLazy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"approveMasterContract\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"batch\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bento\",\"outputs\":[{\"internalType\":\"contract IBentoBoxMinimal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPool.TokenAmount[]\",\"name\":\"minWithdrawals\",\"type\":\"tuple[]\"}],\"name\":\"burnLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"minWithdrawal\",\"type\":\"uint256\"}],\"name\":\"burnLiquiditySingle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"native\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct ITridentRouter.InitialPath[]\",\"name\":\"initialPath\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"balancePercentage\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct ITridentRouter.PercentagePath[]\",\"name\":\"percentagePath\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"unwrapBento\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"minAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct ITridentRouter.Output[]\",\"name\":\"output\",\"type\":\"tuple[]\"}],\"internalType\":\"struct ITridentRouter.ComplexPathParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"complexPath\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"deployData\",\"type\":\"bytes\"}],\"name\":\"deployPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct ITridentRouter.Path[]\",\"name\":\"path\",\"type\":\"tuple[]\"}],\"internalType\":\"struct ITridentRouter.ExactInputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct ITridentRouter.Path[]\",\"name\":\"path\",\"type\":\"tuple[]\"}],\"name\":\"exactInputLazy\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct ITridentRouter.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct ITridentRouter.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingleWithNativeToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct ITridentRouter.Path[]\",\"name\":\"path\",\"type\":\"tuple[]\"}],\"internalType\":\"struct ITridentRouter.ExactInputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputWithNativeToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterDeployer\",\"outputs\":[{\"internalType\":\"contract IMasterDeployer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permitThis\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permitThisAllowed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"refundETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweepBentoBoxToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"sweepNativeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"tridentMintCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"tridentSwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountMinimum\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"unwrapWETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addLiquidity((address,bool,uint256)[],address,uint256,bytes)\":{\"params\":{\"data\":\"Data required by the pool to add liquidity.\",\"minLiquidity\":\"Minimum output liquidity - caps slippage.\",\"pool\":\"Pool address to add liquidity to.\",\"tokenInput\":\"Token address and amount to add as liquidity.\"}},\"addLiquidityLazy(address,uint256,bytes)\":{\"details\":\"The input tokens are sent to the pool during the callback.\"},\"batch(bytes[])\":{\"details\":\"The `msg.value` should not be trusted for any method callable from this function.Uses a modified version of the batch function - preventing multiple calls of the single input swap functions\",\"params\":{\"data\":\"ABI-encoded params for each of the calls to make to this contract.\"},\"returns\":{\"results\":\"The results from each of the calls passed in via `data`.\"}},\"burnLiquidity(address,uint256,bytes,(address,uint256)[])\":{\"params\":{\"data\":\"Data required by the pool to burn liquidity.\",\"liquidity\":\"Amount of liquidity tokens to burn.\",\"minWithdrawals\":\"Minimum amount of `bento` tokens to be returned.\",\"pool\":\"Pool address.\"}},\"burnLiquiditySingle(address,uint256,bytes,uint256)\":{\"details\":\"The tokens are swapped automatically and the output is in a single token.\",\"params\":{\"data\":\"Data required by the pool to burn liquidity.\",\"liquidity\":\"Amount of liquidity tokens to burn.\",\"minWithdrawal\":\"Minimum amount of tokens to be returned.\",\"pool\":\"Pool address.\"}},\"complexPath(((address,address,bool,uint256,bytes)[],(address,address,uint64,bytes)[],(address,address,bool,uint256)[]))\":{\"details\":\"This function is not optimized for single swaps and should only be used in complex cases where the amounts are large enough that minimizing slippage by using multiple paths is worth the extra gas.\",\"params\":{\"params\":\"This includes everything needed for the swap. Look at the `ComplexPathParams` struct for more details.\"}},\"exactInput((address,uint256,uint256,(address,bytes)[]))\":{\"details\":\"Ensure that the pools are trusted before calling this function. The pools can steal users' tokens.\",\"params\":{\"params\":\"This includes the addresses of the tokens, pools, amount of token A to swap, minimum amount of token B after the swap and data required by the pools for the swaps.\"}},\"exactInputLazy(uint256,(address,bytes)[])\":{\"details\":\"Ensure that the pools are trusted before calling this function. The pools can steal users' tokens. This function will unlikely be used in production but it shows how to use callbacks. One use case will be arbitrage.\",\"params\":{\"amountOutMinimum\":\"Minimum amount of token B after the swap.\",\"path\":\"Addresses of the pools and data required by the pools for the swaps.\"}},\"exactInputSingle((uint256,uint256,address,address,bytes))\":{\"details\":\"Ensure that the pool is trusted before calling this function. The pool can steal users' tokens.\",\"params\":{\"params\":\"This includes the address of token A, pool, amount of token A to swap, minimum amount of token B after the swap and data required by the pool for the swap.\"}},\"exactInputSingleWithNativeToken((uint256,uint256,address,address,bytes))\":{\"details\":\"Ensure that the pool is trusted before calling this function. The pool can steal users' tokens.\",\"params\":{\"params\":\"This includes the address of token A, pool, amount of token A to swap, minimum amount of token B after the swap and data required by the pool for the swap.\"}},\"exactInputWithNativeToken((address,uint256,uint256,(address,bytes)[]))\":{\"details\":\"Ensure that the pools are trusted before calling this function. The pools can steal users' tokens.\",\"params\":{\"params\":\"This includes the addresses of the tokens, pools, amount of token A to swap, minimum amount of token B after the swap and data required by the pools for the swaps.\"}},\"permitThis(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"amount\":\"Token amount to grant spending right over.\",\"deadline\":\"Termination for signed approval (UTC timestamp in seconds).\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"token\":\"Address of ERC-20 token.\",\"v\":\"The recovery byte of the signature.\"}},\"permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"expiry\":\"Termination for signed approval - UTC timestamp in seconds.\",\"nonce\":\"Token owner's nonce - increases at each call to {permit}.\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"token\":\"Address of ERC-20 token.\",\"v\":\"The recovery byte of the signature.\"}}},\"stateVariables\":{\"cachedMsgSender\":{\"details\":\"Used to ensure that `tridentSwapCallback` is called only by the authorized address. These are set when someone calls a flash swap and reset afterwards.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addLiquidity((address,bool,uint256)[],address,uint256,bytes)\":{\"notice\":\"Add liquidity to a pool.\"},\"addLiquidityLazy(address,uint256,bytes)\":{\"notice\":\"Add liquidity to a pool using callbacks - same as `addLiquidity`, but now with callbacks.\"},\"approveMasterContract(uint8,bytes32,bytes32)\":{\"notice\":\"Helper function to allow batching of BentoBox master contract approvals so the first trade can happen in one transaction.\"},\"batch(bytes[])\":{\"notice\":\"Provides batch function calls for this contract and returns the data from all of them if they all succeed. Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\"},\"bento()\":{\"notice\":\"BentoBox token vault.\"},\"burnLiquidity(address,uint256,bytes,(address,uint256)[])\":{\"notice\":\"Burn liquidity tokens to get back `bento` tokens.\"},\"burnLiquiditySingle(address,uint256,bytes,uint256)\":{\"notice\":\"Burn liquidity tokens to get back `bento` tokens.\"},\"complexPath(((address,address,bool,uint256,bytes)[],(address,address,uint64,bytes)[],(address,address,bool,uint256)[]))\":{\"notice\":\"Swaps multiple input tokens to multiple output tokens using multiple paths, in different percentages. For example, you can swap 50 DAI + 100 USDC into 60% ETH and 40% BTC.\"},\"exactInput((address,uint256,uint256,(address,bytes)[]))\":{\"notice\":\"Swaps token A to token B indirectly by using multiple hops.\"},\"exactInputLazy(uint256,(address,bytes)[])\":{\"notice\":\"Swaps token A to token B by using callbacks.\"},\"exactInputSingle((uint256,uint256,address,address,bytes))\":{\"notice\":\"Swaps token A to token B directly. Swaps are done on `bento` tokens.\"},\"exactInputSingleWithNativeToken((uint256,uint256,address,address,bytes))\":{\"notice\":\"Swaps token A to token B directly. It's the same as `exactInputSingle` except it takes raw ERC-20 tokens from the users and deposits them into `bento`.\"},\"exactInputWithNativeToken((address,uint256,uint256,(address,bytes)[]))\":{\"notice\":\"Swaps token A to token B indirectly by using multiple hops. It's the same as `exactInput` except it takes raw ERC-20 tokens from the users and deposits them into `bento`.\"},\"masterDeployer()\":{\"notice\":\"Trident AMM master deployer contract.\"},\"permitThis(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Provides EIP-2612 signed approval for this contract to spend user tokens.\"},\"permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Provides DAI-derived signed approval for this contract to spend user tokens.\"},\"refundETH()\":{\"notice\":\"Recover mistakenly sent ETH.\"},\"sweepBentoBoxToken(address,uint256,address)\":{\"notice\":\"Recover mistakenly sent `bento` tokens.\"},\"sweepNativeToken(address,uint256,address)\":{\"notice\":\"Recover mistakenly sent ERC-20 tokens.\"},\"tridentMintCallback(bytes)\":{\"notice\":\"Can be used by the pool 'mint' functionality to take tokens from the user.\"},\"tridentSwapCallback(bytes)\":{\"notice\":\"Used by the pool 'flashSwap' functionality to take input tokens from the user.\"},\"unwrapWETH(uint256,address)\":{\"notice\":\"Unwrap this contract's `wETH` into ETH\"}},\"notice\":\"Router contract that helps in swapping across Trident pools.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/TridentRouter.sol\":\"TridentRouter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/TridentRouter.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./interfaces/IPool.sol\\\";\\nimport \\\"./interfaces/ITridentRouter.sol\\\";\\nimport \\\"./utils/RouterHelper.sol\\\";\\n\\n/// @notice Router contract that helps in swapping across Trident pools.\\ncontract TridentRouter is ITridentRouter, RouterHelper {\\n    /// @dev Used to ensure that `tridentSwapCallback` is called only by the authorized address.\\n    /// These are set when someone calls a flash swap and reset afterwards.\\n    address internal cachedMsgSender;\\n    address internal cachedPool;\\n\\n    mapping(address => bool) internal whitelistedPools;\\n\\n    constructor(\\n        IBentoBoxMinimal bento,\\n        IMasterDeployer masterDeployer,\\n        address wETH\\n    ) RouterHelper(bento, masterDeployer, wETH) {}\\n\\n    receive() external payable {\\n        require(msg.sender == wETH);\\n    }\\n\\n    /// @notice Swaps token A to token B directly. Swaps are done on `bento` tokens.\\n    /// @param params This includes the address of token A, pool, amount of token A to swap,\\n    /// minimum amount of token B after the swap and data required by the pool for the swap.\\n    /// @dev Ensure that the pool is trusted before calling this function. The pool can steal users' tokens.\\n    function exactInputSingle(ExactInputSingleParams calldata params) public payable returns (uint256 amountOut) {\\n        // @dev Prefund the pool with token A.\\n        bento.transfer(params.tokenIn, msg.sender, params.pool, params.amountIn);\\n        // @dev Trigger the swap in the pool.\\n        amountOut = IPool(params.pool).swap(params.data);\\n        // @dev Ensure that the slippage wasn't too much. This assumes that the pool is honest.\\n        require(amountOut >= params.amountOutMinimum, \\\"TOO_LITTLE_RECEIVED\\\");\\n    }\\n\\n    /// @notice Swaps token A to token B indirectly by using multiple hops.\\n    /// @param params This includes the addresses of the tokens, pools, amount of token A to swap,\\n    /// minimum amount of token B after the swap and data required by the pools for the swaps.\\n    /// @dev Ensure that the pools are trusted before calling this function. The pools can steal users' tokens.\\n    function exactInput(ExactInputParams calldata params) public payable returns (uint256 amountOut) {\\n        // @dev Pay the first pool directly.\\n        bento.transfer(params.tokenIn, msg.sender, params.path[0].pool, params.amountIn);\\n        // @dev Call every pool in the path.\\n        // Pool `N` should transfer its output tokens to pool `N+1` directly.\\n        // The last pool should transfer its output tokens to the user.\\n        // If the user wants to unwrap `wETH`, the final destination should be this contract and\\n        // a batch call should be made to `unwrapWETH`.\\n        for (uint256 i; i < params.path.length; i++) {\\n            // We don't necessarily need this check but saving users from themselves.\\n            isWhiteListed(params.path[i].pool);\\n            amountOut = IPool(params.path[i].pool).swap(params.path[i].data);\\n        }\\n        // @dev Ensure that the slippage wasn't too much. This assumes that the pool is honest.\\n        require(amountOut >= params.amountOutMinimum, \\\"TOO_LITTLE_RECEIVED\\\");\\n    }\\n\\n    /// @notice Swaps token A to token B by using callbacks.\\n    /// @param path Addresses of the pools and data required by the pools for the swaps.\\n    /// @param amountOutMinimum Minimum amount of token B after the swap.\\n    /// @dev Ensure that the pools are trusted before calling this function. The pools can steal users' tokens.\\n    /// This function will unlikely be used in production but it shows how to use callbacks. One use case will be arbitrage.\\n    function exactInputLazy(uint256 amountOutMinimum, Path[] calldata path) public payable returns (uint256 amountOut) {\\n        // @dev Call every pool in the path.\\n        // Pool `N` should transfer its output tokens to pool `N+1` directly.\\n        // The last pool should transfer its output tokens to the user.\\n        for (uint256 i; i < path.length; i++) {\\n            isWhiteListed(path[i].pool);\\n            // @dev The cached `msg.sender` is used as the funder when the callback happens.\\n            cachedMsgSender = msg.sender;\\n            // @dev The cached pool must be the address that calls the callback.\\n            cachedPool = path[i].pool;\\n            amountOut = IPool(path[i].pool).flashSwap(path[i].data);\\n        }\\n        // @dev Resets the `cachedPool` to get a refund.\\n        // `1` is used as the default value to avoid the storage slot being released.\\n        cachedMsgSender = address(1);\\n        cachedPool = address(1);\\n        require(amountOut >= amountOutMinimum, \\\"TOO_LITTLE_RECEIVED\\\");\\n    }\\n\\n    /// @notice Swaps token A to token B directly. It's the same as `exactInputSingle` except\\n    /// it takes raw ERC-20 tokens from the users and deposits them into `bento`.\\n    /// @param params This includes the address of token A, pool, amount of token A to swap,\\n    /// minimum amount of token B after the swap and data required by the pool for the swap.\\n    /// @dev Ensure that the pool is trusted before calling this function. The pool can steal users' tokens.\\n    function exactInputSingleWithNativeToken(ExactInputSingleParams calldata params) public payable returns (uint256 amountOut) {\\n        // @dev Deposits the native ERC-20 token from the user into the pool's `bento`.\\n        _depositToBentoBox(params.tokenIn, params.pool, params.amountIn);\\n        // @dev Trigger the swap in the pool.\\n        amountOut = IPool(params.pool).swap(params.data);\\n        // @dev Ensure that the slippage wasn't too much. This assumes that the pool is honest.\\n        require(amountOut >= params.amountOutMinimum, \\\"TOO_LITTLE_RECEIVED\\\");\\n    }\\n\\n    /// @notice Swaps token A to token B indirectly by using multiple hops. It's the same as `exactInput` except\\n    /// it takes raw ERC-20 tokens from the users and deposits them into `bento`.\\n    /// @param params This includes the addresses of the tokens, pools, amount of token A to swap,\\n    /// minimum amount of token B after the swap and data required by the pools for the swaps.\\n    /// @dev Ensure that the pools are trusted before calling this function. The pools can steal users' tokens.\\n    function exactInputWithNativeToken(ExactInputParams calldata params) public payable returns (uint256 amountOut) {\\n        // @dev Deposits the native ERC-20 token from the user into the pool's `bento`.\\n        _depositToBentoBox(params.tokenIn, params.path[0].pool, params.amountIn);\\n        // @dev Call every pool in the path.\\n        // Pool `N` should transfer its output tokens to pool `N+1` directly.\\n        // The last pool should transfer its output tokens to the user.\\n        for (uint256 i; i < params.path.length; i++) {\\n            isWhiteListed(params.path[i].pool);\\n            amountOut = IPool(params.path[i].pool).swap(params.path[i].data);\\n        }\\n        // @dev Ensure that the slippage wasn't too much. This assumes that the pool is honest.\\n        require(amountOut >= params.amountOutMinimum, \\\"TOO_LITTLE_RECEIVED\\\");\\n    }\\n\\n    /// @notice Swaps multiple input tokens to multiple output tokens using multiple paths, in different percentages.\\n    /// For example, you can swap 50 DAI + 100 USDC into 60% ETH and 40% BTC.\\n    /// @param params This includes everything needed for the swap. Look at the `ComplexPathParams` struct for more details.\\n    /// @dev This function is not optimized for single swaps and should only be used in complex cases where\\n    /// the amounts are large enough that minimizing slippage by using multiple paths is worth the extra gas.\\n    function complexPath(ComplexPathParams calldata params) public payable {\\n        // @dev Deposit all initial tokens to respective pools and initiate the swaps.\\n        // Input tokens come from the user - output goes to following pools.\\n        for (uint256 i; i < params.initialPath.length; i++) {\\n            if (params.initialPath[i].native) {\\n                _depositToBentoBox(params.initialPath[i].tokenIn, params.initialPath[i].pool, params.initialPath[i].amount);\\n            } else {\\n                bento.transfer(params.initialPath[i].tokenIn, msg.sender, params.initialPath[i].pool, params.initialPath[i].amount);\\n            }\\n            isWhiteListed(params.initialPath[i].pool);\\n            IPool(params.initialPath[i].pool).swap(params.initialPath[i].data);\\n        }\\n        // @dev Do all the middle swaps. Input comes from previous pools - output goes to following pools.\\n        for (uint256 i; i < params.percentagePath.length; i++) {\\n            uint256 balanceShares = bento.balanceOf(params.percentagePath[i].tokenIn, address(this));\\n            uint256 transferShares = (balanceShares * params.percentagePath[i].balancePercentage) / uint256(10)**8;\\n            bento.transfer(params.percentagePath[i].tokenIn, address(this), params.percentagePath[i].pool, transferShares);\\n            isWhiteListed(params.percentagePath[i].pool);\\n            IPool(params.percentagePath[i].pool).swap(params.percentagePath[i].data);\\n        }\\n        // @dev Do all the final swaps. Input comes from previous pools - output goes to the user.\\n        for (uint256 i; i < params.output.length; i++) {\\n            uint256 balanceShares = bento.balanceOf(params.output[i].token, address(this));\\n            require(balanceShares >= params.output[i].minAmount, \\\"TOO_LITTLE_RECEIVED\\\");\\n            if (params.output[i].unwrapBento) {\\n                bento.withdraw(params.output[i].token, address(this), params.output[i].to, 0, balanceShares);\\n            } else {\\n                bento.transfer(params.output[i].token, address(this), params.output[i].to, balanceShares);\\n            }\\n        }\\n    }\\n\\n    /// @notice Add liquidity to a pool.\\n    /// @param tokenInput Token address and amount to add as liquidity.\\n    /// @param pool Pool address to add liquidity to.\\n    /// @param minLiquidity Minimum output liquidity - caps slippage.\\n    /// @param data Data required by the pool to add liquidity.\\n    function addLiquidity(\\n        TokenInput[] memory tokenInput,\\n        address pool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) public payable returns (uint256 liquidity) {\\n        isWhiteListed(pool);\\n        // @dev Send all input tokens to the pool.\\n        for (uint256 i; i < tokenInput.length; i++) {\\n            if (tokenInput[i].native) {\\n                _depositToBentoBox(tokenInput[i].token, pool, tokenInput[i].amount);\\n            } else {\\n                bento.transfer(tokenInput[i].token, msg.sender, pool, tokenInput[i].amount);\\n            }\\n        }\\n        liquidity = IPool(pool).mint(data);\\n        require(liquidity >= minLiquidity, \\\"NOT_ENOUGH_LIQUIDITY_MINTED\\\");\\n    }\\n\\n    /// @notice Add liquidity to a pool using callbacks - same as `addLiquidity`, but now with callbacks.\\n    /// @dev The input tokens are sent to the pool during the callback.\\n    function addLiquidityLazy(\\n        address pool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) public payable returns (uint256 liquidity) {\\n        isWhiteListed(pool);\\n        cachedMsgSender = msg.sender;\\n        cachedPool = pool;\\n        liquidity = IPool(pool).mint(data);\\n        cachedMsgSender = address(1);\\n        cachedPool = address(1);\\n        require(liquidity >= minLiquidity, \\\"NOT_ENOUGH_LIQUIDITY_MINTED\\\");\\n    }\\n\\n    /// @notice Burn liquidity tokens to get back `bento` tokens.\\n    /// @param pool Pool address.\\n    /// @param liquidity Amount of liquidity tokens to burn.\\n    /// @param data Data required by the pool to burn liquidity.\\n    /// @param minWithdrawals Minimum amount of `bento` tokens to be returned.\\n    function burnLiquidity(\\n        address pool,\\n        uint256 liquidity,\\n        bytes calldata data,\\n        IPool.TokenAmount[] memory minWithdrawals\\n    ) public {\\n        isWhiteListed(pool);\\n        safeTransferFrom(pool, msg.sender, pool, liquidity);\\n        IPool.TokenAmount[] memory withdrawnLiquidity = IPool(pool).burn(data);\\n        for (uint256 i; i < minWithdrawals.length; i++) {\\n            uint256 j;\\n            for (; j < withdrawnLiquidity.length; j++) {\\n                if (withdrawnLiquidity[j].token == minWithdrawals[i].token) {\\n                    require(withdrawnLiquidity[j].amount >= minWithdrawals[i].amount, \\\"TOO_LITTLE_RECEIVED\\\");\\n                    break;\\n                }\\n            }\\n            // @dev A token that is present in `minWithdrawals` is missing from `withdrawnLiquidity`.\\n            require(j < withdrawnLiquidity.length, \\\"INCORRECT_TOKEN_WITHDRAWN\\\");\\n        }\\n    }\\n\\n    /// @notice Burn liquidity tokens to get back `bento` tokens.\\n    /// @dev The tokens are swapped automatically and the output is in a single token.\\n    /// @param pool Pool address.\\n    /// @param liquidity Amount of liquidity tokens to burn.\\n    /// @param data Data required by the pool to burn liquidity.\\n    /// @param minWithdrawal Minimum amount of tokens to be returned.\\n    function burnLiquiditySingle(\\n        address pool,\\n        uint256 liquidity,\\n        bytes calldata data,\\n        uint256 minWithdrawal\\n    ) public {\\n        isWhiteListed(pool);\\n        // @dev Use 'liquidity = 0' for prefunding.\\n        safeTransferFrom(pool, msg.sender, pool, liquidity);\\n        uint256 withdrawn = IPool(pool).burnSingle(data);\\n        require(withdrawn >= minWithdrawal, \\\"TOO_LITTLE_RECEIVED\\\");\\n    }\\n\\n    /// @notice Used by the pool 'flashSwap' functionality to take input tokens from the user.\\n    function tridentSwapCallback(bytes calldata data) external {\\n        require(msg.sender == cachedPool, \\\"UNAUTHORIZED_CALLBACK\\\");\\n        TokenInput memory tokenInput = abi.decode(data, (TokenInput));\\n        // @dev Transfer the requested tokens to the pool.\\n        if (tokenInput.native) {\\n            _depositFromUserToBentoBox(tokenInput.token, cachedMsgSender, msg.sender, tokenInput.amount);\\n        } else {\\n            bento.transfer(tokenInput.token, cachedMsgSender, msg.sender, tokenInput.amount);\\n        }\\n        // @dev Resets the `msg.sender`'s authorization.\\n        cachedMsgSender = address(1);\\n    }\\n\\n    /// @notice Can be used by the pool 'mint' functionality to take tokens from the user.\\n    function tridentMintCallback(bytes calldata data) external {\\n        require(msg.sender == cachedPool, \\\"UNAUTHORIZED_CALLBACK\\\");\\n        TokenInput[] memory tokenInput = abi.decode(data, (TokenInput[]));\\n        // @dev Transfer the requested tokens to the pool.\\n        for (uint256 i; i < tokenInput.length; i++) {\\n            if (tokenInput[i].native) {\\n                _depositFromUserToBentoBox(tokenInput[i].token, cachedMsgSender, msg.sender, tokenInput[i].amount);\\n            } else {\\n                bento.transfer(tokenInput[i].token, cachedMsgSender, msg.sender, tokenInput[i].amount);\\n            }\\n        }\\n        // @dev Resets the `msg.sender`'s authorization.\\n        cachedMsgSender = address(1);\\n    }\\n\\n    /// @notice Recover mistakenly sent `bento` tokens.\\n    function sweepBentoBoxToken(\\n        address token,\\n        uint256 amount,\\n        address recipient\\n    ) external {\\n        bento.transfer(token, address(this), recipient, amount);\\n    }\\n\\n    /// @notice Recover mistakenly sent ERC-20 tokens.\\n    function sweepNativeToken(\\n        address token,\\n        uint256 amount,\\n        address recipient\\n    ) external {\\n        safeTransfer(token, recipient, amount);\\n    }\\n\\n    /// @notice Recover mistakenly sent ETH.\\n    function refundETH() external payable {\\n        if (address(this).balance != 0) safeTransferETH(msg.sender, address(this).balance);\\n    }\\n\\n    /// @notice Unwrap this contract's `wETH` into ETH\\n    function unwrapWETH(uint256 amountMinimum, address recipient) external {\\n        uint256 balanceWETH = balanceOfThis(wETH);\\n        require(balanceWETH >= amountMinimum, \\\"INSUFFICIENT_WETH\\\");\\n        if (balanceWETH != 0) {\\n            withdrawFromWETH(balanceWETH);\\n            safeTransferETH(recipient, balanceWETH);\\n        }\\n    }\\n\\n    /// @notice Deposit from the user's wallet into BentoBox.\\n    /// @dev Amount is the native token amount. We let BentoBox do the conversion into shares.\\n    function _depositToBentoBox(\\n        address token,\\n        address recipient,\\n        uint256 amount\\n    ) internal {\\n        bento.deposit{value: token == USE_ETHEREUM ? amount : 0}(token, msg.sender, recipient, amount, 0);\\n    }\\n\\n    /// @notice Same effect as _depositToBentoBox() but with a sender parameter.\\n    function _depositFromUserToBentoBox(\\n        address token,\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) internal {\\n        bento.deposit{value: token == USE_ETHEREUM ? amount : 0}(token, sender, recipient, amount, 0);\\n    }\\n\\n    function isWhiteListed(address pool) internal {\\n        if (!whitelistedPools[pool]) {\\n            require(masterDeployer.pools(pool), \\\"INVALID POOL\\\");\\n            whitelistedPools[pool] = true;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf0fa741d0702a72762d9b01ad821b53d2d8a6d44673f94f1f53f93906622ea7a\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentRouter.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool router interface.\\ninterface ITridentRouter {\\n    struct Path {\\n        address pool;\\n        bytes data;\\n    }\\n\\n    struct ExactInputSingleParams {\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n        address pool;\\n        address tokenIn;\\n        bytes data;\\n    }\\n\\n    struct ExactInputParams {\\n        address tokenIn;\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n        Path[] path;\\n    }\\n\\n    struct TokenInput {\\n        address token;\\n        bool native;\\n        uint256 amount;\\n    }\\n\\n    struct InitialPath {\\n        address tokenIn;\\n        address pool;\\n        bool native;\\n        uint256 amount;\\n        bytes data;\\n    }\\n\\n    struct PercentagePath {\\n        address tokenIn;\\n        address pool;\\n        uint64 balancePercentage; // Multiplied by 10^6. 100% = 100_000_000\\n        bytes data;\\n    }\\n\\n    struct Output {\\n        address token;\\n        address to;\\n        bool unwrapBento;\\n        uint256 minAmount;\\n    }\\n\\n    struct ComplexPathParams {\\n        InitialPath[] initialPath;\\n        PercentagePath[] percentagePath;\\n        Output[] output;\\n    }\\n}\\n\",\"keccak256\":\"0x40f1af6b213ff8827d515460f9057eb87ddc35d8020501f727d229ea239cbf24\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/RouterHelper.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../interfaces/IBentoBoxMinimal.sol\\\";\\nimport \\\"../interfaces/IMasterDeployer.sol\\\";\\nimport \\\"../TridentRouter.sol\\\";\\nimport \\\"./TridentPermit.sol\\\";\\n\\n/// @notice Trident router helper contract.\\ncontract RouterHelper is TridentPermit {\\n    /// @notice BentoBox token vault.\\n    IBentoBoxMinimal public immutable bento;\\n    /// @notice Trident AMM master deployer contract.\\n    IMasterDeployer public immutable masterDeployer;\\n    /// @notice ERC-20 token for wrapped ETH (v9).\\n    address internal immutable wETH;\\n    /// @notice The user should use 0x0 if they want to deposit ETH\\n    address constant USE_ETHEREUM = address(0);\\n\\n    constructor(\\n        IBentoBoxMinimal _bento,\\n        IMasterDeployer _masterDeployer,\\n        address _wETH\\n    ) {\\n        bento = _bento;\\n        masterDeployer = _masterDeployer;\\n        wETH = _wETH;\\n        _bento.registerProtocol();\\n    }\\n\\n    /// @notice Provides batch function calls for this contract and returns the data from all of them if they all succeed.\\n    /// Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\\n    /// @dev The `msg.value` should not be trusted for any method callable from this function.\\n    /// @dev Uses a modified version of the batch function - preventing multiple calls of the single input swap functions\\n    /// @param data ABI-encoded params for each of the calls to make to this contract.\\n    /// @return results The results from each of the calls passed in via `data`.\\n    function batch(bytes[] calldata data) external payable returns (bytes[] memory results) {\\n        results = new bytes[](data.length);\\n        // We only allow one exactInputSingle call to be made in a single batch call.\\n        // This is not really needed but we want to save users from signing malicious payloads.\\n        // We also don't want nested batch calls.\\n        bool swapCalled;\\n        for (uint256 i = 0; i < data.length; i++) {\\n            bytes4 selector = getSelector(data[i]);\\n            if (selector == TridentRouter.exactInputSingle.selector || selector == TridentRouter.exactInputSingleWithNativeToken.selector) {\\n                require(!swapCalled, \\\"Swap called twice\\\");\\n                swapCalled = true;\\n            } else {\\n                require(selector != this.batch.selector, \\\"Nested Batch\\\");\\n            }\\n\\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\\n            if (!success) {\\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577.\\n                if (result.length < 68) revert();\\n                assembly {\\n                    result := add(result, 0x04)\\n                }\\n                revert(abi.decode(result, (string)));\\n            }\\n            results[i] = result;\\n        }\\n    }\\n\\n    function deployPool(address factory, bytes calldata deployData) external payable returns (address) {\\n        return masterDeployer.deployPool(factory, deployData);\\n    }\\n\\n    /// @notice Helper function to allow batching of BentoBox master contract approvals so the first trade can happen in one transaction.\\n    function approveMasterContract(\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external payable {\\n        bento.setMasterContractApproval(msg.sender, address(this), true, v, r, s);\\n    }\\n\\n    /// @notice Provides gas-optimized balance check on this contract to avoid redundant extcodesize check in addition to returndatasize check.\\n    /// @param token Address of ERC-20 token.\\n    /// @return balance Token amount held by this contract.\\n    function balanceOfThis(address token) internal view returns (uint256 balance) {\\n        (bool success, bytes memory data) = token.staticcall(abi.encodeWithSelector(0x70a08231, address(this))); // @dev balanceOf(address).\\n        require(success && data.length >= 32, \\\"BALANCE_OF_FAILED\\\");\\n        balance = abi.decode(data, (uint256));\\n    }\\n\\n    /// @notice Provides 'safe' ERC-20 {transfer} for tokens that don't consistently return true/false.\\n    /// @param token Address of ERC-20 token.\\n    /// @param recipient Account to send tokens to.\\n    /// @param amount Token amount to send.\\n    function safeTransfer(\\n        address token,\\n        address recipient,\\n        uint256 amount\\n    ) internal {\\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, recipient, amount)); // @dev transfer(address,uint256).\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"TRANSFER_FAILED\\\");\\n    }\\n\\n    /// @notice Provides 'safe' ERC-20 {transferFrom} for tokens that don't consistently return true/false.\\n    /// @param token Address of ERC-20 token.\\n    /// @param sender Account to send tokens from.\\n    /// @param recipient Account to send tokens to.\\n    /// @param amount Token amount to send.\\n    function safeTransferFrom(\\n        address token,\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) internal {\\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, sender, recipient, amount)); // @dev transferFrom(address,address,uint256).\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"TRANSFER_FROM_FAILED\\\");\\n    }\\n\\n    /// @notice Provides low-level `wETH` {withdraw}.\\n    /// @param amount Token amount to unwrap into ETH.\\n    function withdrawFromWETH(uint256 amount) internal {\\n        (bool success, ) = wETH.call(abi.encodeWithSelector(0x2e1a7d4d, amount)); // @dev withdraw(uint256).\\n        require(success, \\\"WITHDRAW_FROM_WETH_FAILED\\\");\\n    }\\n\\n    /// @notice Provides 'safe' ETH transfer.\\n    /// @param recipient Account to send ETH to.\\n    /// @param amount ETH amount to send.\\n    function safeTransferETH(address recipient, uint256 amount) internal {\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"ETH_TRANSFER_FAILED\\\");\\n    }\\n\\n    /**\\n     * @notice function to extract the selector of a bytes calldata\\n     * @param _data the calldata bytes\\n     */\\n    function getSelector(bytes memory _data) internal pure returns (bytes4 sig) {\\n        assembly {\\n            sig := mload(add(_data, 32))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x6ba7ef30206daf568f31c0c315f2da991f5425ba76aa97ec3faf5c80af4e6592\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/TridentPermit.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Generic contract exposing the permit functionality.\\nabstract contract TridentPermit {\\n    error PermitFailed();\\n\\n    /// @notice Provides EIP-2612 signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param amount Token amount to grant spending right over.\\n    /// @param deadline Termination for signed approval (UTC timestamp in seconds).\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThis(\\n        address token,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0xd505accf, msg.sender, address(this), amount, deadline, v, r, s)); // permit(address,address,uint256,uint256,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n\\n    /// @notice Provides DAI-derived signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param nonce Token owner's nonce - increases at each call to {permit}.\\n    /// @param expiry Termination for signed approval - UTC timestamp in seconds.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThisAllowed(\\n        address token,\\n        uint256 nonce,\\n        uint256 expiry,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0x8fcbaf0c, msg.sender, address(this), nonce, expiry, true, v, r, s)); // permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n}\\n\",\"keccak256\":\"0x41a005fbeccd614c4d0027c168c7fb6ba7689504356ff9040c50d2a3c53d0ec6\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 683,
                "contract": "contracts/TridentRouter.sol:TridentRouter",
                "label": "cachedMsgSender",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 685,
                "contract": "contracts/TridentRouter.sol:TridentRouter",
                "label": "cachedPool",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              },
              {
                "astId": 689,
                "contract": "contracts/TridentRouter.sol:TridentRouter",
                "label": "whitelistedPools",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_address,t_bool)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "addLiquidity((address,bool,uint256)[],address,uint256,bytes)": {
                "notice": "Add liquidity to a pool."
              },
              "addLiquidityLazy(address,uint256,bytes)": {
                "notice": "Add liquidity to a pool using callbacks - same as `addLiquidity`, but now with callbacks."
              },
              "approveMasterContract(uint8,bytes32,bytes32)": {
                "notice": "Helper function to allow batching of BentoBox master contract approvals so the first trade can happen in one transaction."
              },
              "batch(bytes[])": {
                "notice": "Provides batch function calls for this contract and returns the data from all of them if they all succeed. Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later."
              },
              "bento()": {
                "notice": "BentoBox token vault."
              },
              "burnLiquidity(address,uint256,bytes,(address,uint256)[])": {
                "notice": "Burn liquidity tokens to get back `bento` tokens."
              },
              "burnLiquiditySingle(address,uint256,bytes,uint256)": {
                "notice": "Burn liquidity tokens to get back `bento` tokens."
              },
              "complexPath(((address,address,bool,uint256,bytes)[],(address,address,uint64,bytes)[],(address,address,bool,uint256)[]))": {
                "notice": "Swaps multiple input tokens to multiple output tokens using multiple paths, in different percentages. For example, you can swap 50 DAI + 100 USDC into 60% ETH and 40% BTC."
              },
              "exactInput((address,uint256,uint256,(address,bytes)[]))": {
                "notice": "Swaps token A to token B indirectly by using multiple hops."
              },
              "exactInputLazy(uint256,(address,bytes)[])": {
                "notice": "Swaps token A to token B by using callbacks."
              },
              "exactInputSingle((uint256,uint256,address,address,bytes))": {
                "notice": "Swaps token A to token B directly. Swaps are done on `bento` tokens."
              },
              "exactInputSingleWithNativeToken((uint256,uint256,address,address,bytes))": {
                "notice": "Swaps token A to token B directly. It's the same as `exactInputSingle` except it takes raw ERC-20 tokens from the users and deposits them into `bento`."
              },
              "exactInputWithNativeToken((address,uint256,uint256,(address,bytes)[]))": {
                "notice": "Swaps token A to token B indirectly by using multiple hops. It's the same as `exactInput` except it takes raw ERC-20 tokens from the users and deposits them into `bento`."
              },
              "masterDeployer()": {
                "notice": "Trident AMM master deployer contract."
              },
              "permitThis(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Provides EIP-2612 signed approval for this contract to spend user tokens."
              },
              "permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Provides DAI-derived signed approval for this contract to spend user tokens."
              },
              "refundETH()": {
                "notice": "Recover mistakenly sent ETH."
              },
              "sweepBentoBoxToken(address,uint256,address)": {
                "notice": "Recover mistakenly sent `bento` tokens."
              },
              "sweepNativeToken(address,uint256,address)": {
                "notice": "Recover mistakenly sent ERC-20 tokens."
              },
              "tridentMintCallback(bytes)": {
                "notice": "Can be used by the pool 'mint' functionality to take tokens from the user."
              },
              "tridentSwapCallback(bytes)": {
                "notice": "Used by the pool 'flashSwap' functionality to take input tokens from the user."
              },
              "unwrapWETH(uint256,address)": {
                "notice": "Unwrap this contract's `wETH` into ETH"
              }
            },
            "notice": "Router contract that helps in swapping across Trident pools.",
            "version": 1
          }
        }
      },
      "contracts/deployer/MasterDeployer.sol": {
        "MasterDeployer": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_barFee",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_barFeeTo",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_bento",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "factory",
                  "type": "address"
                }
              ],
              "name": "AddToWhitelist",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "barFee",
                  "type": "uint256"
                }
              ],
              "name": "BarFeeUpdated",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "factory",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bytes",
                  "name": "deployData",
                  "type": "bytes"
                }
              ],
              "name": "DeployPool",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "factory",
                  "type": "address"
                }
              ],
              "name": "RemoveFromWhitelist",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "TransferOwner",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "TransferOwnerClaim",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_factory",
                  "type": "address"
                }
              ],
              "name": "addToWhitelist",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFeeTo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "claimOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_factory",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pendingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_factory",
                  "type": "address"
                }
              ],
              "name": "removeFromWhitelist",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_barFee",
                  "type": "uint256"
                }
              ],
              "name": "setBarFee",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "direct",
                  "type": "bool"
                }
              ],
              "name": "transferOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "whitelistedFactories",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Mudit Gupta.",
            "kind": "dev",
            "methods": {
              "transferOwner(address,bool)": {
                "params": {
                  "direct": "If 'true', ownership is directly transferred.",
                  "recipient": "Account granted `owner` access control."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_1985": {
                  "entryPoint": null,
                  "id": 1985,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_24188": {
                  "entryPoint": null,
                  "id": 24188,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_address_fromMemory": {
                  "entryPoint": 358,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_addresst_address_fromMemory": {
                  "entryPoint": 386,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d5c7d8863c3c0231b265d172800e2327315aef4f1b18645c8dd3c9706f4ad28c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1237:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "74:117:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "84:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "99:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "93:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "93:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "84:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "169:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "178:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "181:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "171:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "171:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "171:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "128:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "139:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "154:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "159:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "150:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "150:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "163:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "146:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "146:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "135:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "135:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "125:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "125:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "118:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "118:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "115:70:64"
                            }
                          ]
                        },
                        "name": "abi_decode_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "53:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "64:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "311:239:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "357:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "366:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "369:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "359:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "359:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "359:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "332:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "341:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "328:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "328:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "353:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "324:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "324:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "321:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "382:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "398:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "392:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "392:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "382:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "417:59:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "461:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "472:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "457:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "457:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "427:29:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "427:49:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "417:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "485:59:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "529:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "540:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "525:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "525:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "495:29:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "495:49:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "485:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_addresst_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "261:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "272:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "284:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "292:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "300:6:64",
                            "type": ""
                          }
                        ],
                        "src": "196:354:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "729:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "746:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "757:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "739:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "739:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "739:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "780:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "791:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "776:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "776:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "796:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "769:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "769:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "769:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "819:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "830:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "815:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "815:18:64"
                                  },
                                  {
                                    "hexValue": "5a45524f5f41444452455353",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "835:14:64",
                                    "type": "",
                                    "value": "ZERO_ADDRESS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "808:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "808:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "808:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "859:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "871:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "882:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "867:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "867:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "859:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "706:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "720:4:64",
                            "type": ""
                          }
                        ],
                        "src": "555:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1070:165:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1087:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1098:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1080:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1080:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1080:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1121:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1132:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1117:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1117:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1137:2:64",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1110:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1110:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1110:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1160:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1171:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1156:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1156:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f4241525f464545",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1176:17:64",
                                    "type": "",
                                    "value": "INVALID_BAR_FEE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1149:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1149:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1149:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1203:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1215:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1226:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1211:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1211:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1203:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d5c7d8863c3c0231b265d172800e2327315aef4f1b18645c8dd3c9706f4ad28c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1047:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1061:4:64",
                            "type": ""
                          }
                        ],
                        "src": "896:339:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := abi_decode_address_fromMemory(add(headStart, 32))\n        value2 := abi_decode_address_fromMemory(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"ZERO_ADDRESS\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d5c7d8863c3c0231b265d172800e2327315aef4f1b18645c8dd3c9706f4ad28c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"INVALID_BAR_FEE\")\n        tail := add(headStart, 96)\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60c060405234801561001057600080fd5b50604051610de3380380610de383398101604081905261002f91610182565b600080546001600160a01b0319163390811782556040519091907f5bb496b3f951b55d3a1d8e479725a4d25bdc7644fc355f0b71c540354820a1c5908290a36127108311156100b75760405162461bcd60e51b815260206004820152600f60248201526e494e56414c49445f4241525f46454560881b60448201526064015b60405180910390fd5b6001600160a01b0382166100fc5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064016100ae565b6001600160a01b0381166101415760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064016100ae565b6002929092556001600160601b0319606091821b811660805291901b1660a0526101be565b80516001600160a01b038116811461017d57600080fd5b919050565b60008060006060848603121561019757600080fd5b835192506101a760208501610166565b91506101b560408501610166565b90509250925092565b60805160601c60a05160601c610bfb6101e8600039600061016a0152600060fe0152610bfb6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80638ab1d6811161008c578063c14ad80211610066578063c14ad80214610215578063cf81afaa1461022c578063e30c39781461023f578063e43252d71461025f57600080fd5b80638ab1d681146101bf5780638da5cb5b146101d2578063a4063dbc146101f257600080fd5b80633bd1adec116100bd5780633bd1adec1461015d5780634da31827146101655780636f50f2f41461018c57600080fd5b806306e22d12146100e45780630c0a0cd2146100f9578063250558dc1461014a575b600080fd5b6100f76100f2366004610b3a565b610272565b005b6101207f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610120610158366004610ab5565b610397565b6100f7610564565b6101207f000000000000000000000000000000000000000000000000000000000000000081565b6101af61019a366004610a36565b60046020526000908152604090205460ff1681565b6040519015158152602001610141565b6100f76101cd366004610a36565b610662565b6000546101209073ffffffffffffffffffffffffffffffffffffffff1681565b6101af610200366004610a36565b60036020526000908152604090205460ff1681565b61021e60025481565b604051908152602001610141565b6100f761023a366004610a77565b610757565b6001546101209073ffffffffffffffffffffffffffffffffffffffff1681565b6100f761026d366004610a36565b61093e565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e4552000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b612710811115610364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f4241525f464545000000000000000000000000000000000060448201526064016102ef565b600281905560405181907f880a5214911723edb25bb08410581af1de2e40c52eda03920990c4bc27011fb690600090a250565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604081205460ff16610426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f464143544f52595f4e4f545f57484954454c495354454400000000000000000060448201526064016102ef565b6040517f27c3cae100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516906327c3cae19061047a9086908690600401610b53565b602060405180830381600087803b15801561049457600080fd5b505af11580156104a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc9190610a5a565b73ffffffffffffffffffffffffffffffffffffffff8082166000818152600360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935091908616907fe469f9471ac1d98222517eb2cdff1ef4df5f7880269173bb782bb78e499d9de3906105559087908790610b53565b60405180910390a39392505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146105e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e4f545f50454e44494e475f4f574e455200000000000000000000000000000060448201526064016102ef565b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917f5bb496b3f951b55d3a1d8e479725a4d25bdc7644fc355f0b71c540354820a1c591a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600180549091169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e4552000000000000000000000000000000000000000000000060448201526064016102ef565b73ffffffffffffffffffffffffffffffffffffffff811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f1f756c8b089af6b33ee121fee8badac2553a2fa89c0575ea91ff8792617746c29190a250565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e4552000000000000000000000000000000000000000000000060448201526064016102ef565b73ffffffffffffffffffffffffffffffffffffffff8216610855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f41444452455353000000000000000000000000000000000000000060448201526064016102ef565b80156108cc57600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081178255604051909133917f5bb496b3f951b55d3a1d8e479725a4d25bdc7644fc355f0b71c540354820a1c59190a35050565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560405133907f87f5c8846f4c51400fa448cfb84edcec5cc0f333b6d20a5b903e050823dcb66790600090a35050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e4552000000000000000000000000000000000000000000000060448201526064016102ef565b73ffffffffffffffffffffffffffffffffffffffff811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f75b2135d1c8c3519f3c09c43fe6527089ef09f40c7981ebf0ed46e79e79032c79190a250565b600060208284031215610a4857600080fd5b8135610a5381610ba0565b9392505050565b600060208284031215610a6c57600080fd5b8151610a5381610ba0565b60008060408385031215610a8a57600080fd5b8235610a9581610ba0565b915060208301358015158114610aaa57600080fd5b809150509250929050565b600080600060408486031215610aca57600080fd5b8335610ad581610ba0565b9250602084013567ffffffffffffffff80821115610af257600080fd5b818601915086601f830112610b0657600080fd5b813581811115610b1557600080fd5b876020828501011115610b2757600080fd5b6020830194508093505050509250925092565b600060208284031215610b4c57600080fd5b5035919050565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610bc257600080fd5b5056fea26469706673582212206048df326ffea94c3a1fa819787ec5041b15c8e0c106db3d9a44fa150c7bee5964736f6c63430008070033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xDE3 CODESIZE SUB DUP1 PUSH2 0xDE3 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x182 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x5BB496B3F951B55D3A1D8E479725A4D25BDC7644FC355F0B71C540354820A1C5 SWAP1 DUP3 SWAP1 LOG3 PUSH2 0x2710 DUP4 GT ISZERO PUSH2 0xB7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x494E56414C49445F4241525F464545 PUSH1 0x88 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xFC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A45524F5F41444452455353 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x141 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A45524F5F41444452455353 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAE JUMP JUMPDEST PUSH1 0x2 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SWAP1 SHL AND PUSH1 0xA0 MSTORE PUSH2 0x1BE JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x17D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x197 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH2 0x1A7 PUSH1 0x20 DUP6 ADD PUSH2 0x166 JUMP JUMPDEST SWAP2 POP PUSH2 0x1B5 PUSH1 0x40 DUP6 ADD PUSH2 0x166 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0xBFB PUSH2 0x1E8 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x16A ADD MSTORE PUSH1 0x0 PUSH1 0xFE ADD MSTORE PUSH2 0xBFB PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8AB1D681 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xC14AD802 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x215 JUMPI DUP1 PUSH4 0xCF81AFAA EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0xE43252D7 EQ PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8AB1D681 EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xA4063DBC EQ PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3BD1ADEC GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x3BD1ADEC EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x165 JUMPI DUP1 PUSH4 0x6F50F2F4 EQ PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6E22D12 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x250558DC EQ PUSH2 0x14A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xB3A JUMP JUMPDEST PUSH2 0x272 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x120 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x120 PUSH2 0x158 CALLDATASIZE PUSH1 0x4 PUSH2 0xAB5 JUMP JUMPDEST PUSH2 0x397 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x564 JUMP JUMPDEST PUSH2 0x120 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x19A CALLDATASIZE PUSH1 0x4 PUSH2 0xA36 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x141 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x1CD CALLDATASIZE PUSH1 0x4 PUSH2 0xA36 JUMP JUMPDEST PUSH2 0x662 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x120 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x200 CALLDATASIZE PUSH1 0x4 PUSH2 0xA36 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x21E PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x141 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x23A CALLDATASIZE PUSH1 0x4 PUSH2 0xA77 JUMP JUMPDEST PUSH2 0x757 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x120 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x26D CALLDATASIZE PUSH1 0x4 PUSH2 0xA36 JUMP JUMPDEST PUSH2 0x93E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2F8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4F574E45520000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2710 DUP2 GT ISZERO PUSH2 0x364 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4241525F4645450000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2EF JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0x880A5214911723EDB25BB08410581AF1DE2E40C52EDA03920990C4BC27011FB6 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x426 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x464143544F52595F4E4F545F57484954454C4953544544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x27C3CAE100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x27C3CAE1 SWAP1 PUSH2 0x47A SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xB53 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x494 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4CC SWAP2 SWAP1 PUSH2 0xA5A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 DUP7 AND SWAP1 PUSH32 0xE469F9471AC1D98222517EB2CDFF1EF4DF5F7880269173BB782BB78E499D9DE3 SWAP1 PUSH2 0x555 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH2 0xB53 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x5E5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F50454E44494E475F4F574E4552000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2EF JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD CALLER SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH32 0x5BB496B3F951B55D3A1D8E479725A4D25BDC7644FC355F0B71C540354820A1C5 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND CALLER OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x6E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4F574E45520000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE MLOAD PUSH32 0x1F756C8B089AF6B33EE121FEE8BADAC2553A2FA89C0575EA91FF8792617746C2 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x7D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4F574E45520000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x855 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5A45524F5F414444524553530000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2EF JUMP JUMPDEST DUP1 ISZERO PUSH2 0x8CC JUMPI PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 CALLER SWAP2 PUSH32 0x5BB496B3F951B55D3A1D8E479725A4D25BDC7644FC355F0B71C540354820A1C5 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x87F5C8846F4C51400FA448CFB84EDCEC5CC0F333B6D20A5B903E050823DCB667 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x9BF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4F574E45520000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x75B2135D1C8C3519F3C09C43FE6527089EF09F40C7981EBF0ED46E79E79032C7 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA53 DUP2 PUSH2 0xBA0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA53 DUP2 PUSH2 0xBA0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xA95 DUP2 PUSH2 0xBA0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xAAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xACA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xAD5 DUP2 PUSH2 0xBA0 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xAF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xB15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xB27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE DUP2 PUSH1 0x20 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0x40 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0x40 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xBC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH1 0x48 0xDF ORIGIN PUSH16 0xFEA94C3A1FA819787EC5041B15C8E0C1 MOD 0xDB RETURNDATASIZE SWAP11 DIFFICULTY STATICCALL ISZERO 0xC PUSH28 0xEE5964736F6C63430008070033000000000000000000000000000000 ",
              "sourceMap": "253:1762:5:-:0;;;812:351;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;617:5:61;:18;;-1:-1:-1;;;;;;617:18:61;625:10;617:18;;;;;650:37;;625:10;;617:5;650:37;;617:5;;650:37;684:5:5;924:7;:18;;916:46;;;;-1:-1:-1;;;916:46:5;;1098:2:64;916:46:5;;;1080:21:64;1137:2;1117:18;;;1110:30;-1:-1:-1;;;1156:18:64;;;1149:45;1211:18;;916:46:5;;;;;;;;;-1:-1:-1;;;;;980:23:5;;972:48;;;;-1:-1:-1;;;972:48:5;;757:2:64;972:48:5;;;739:21:64;796:2;776:18;;;769:30;-1:-1:-1;;;815:18:64;;;808:42;867:18;;972:48:5;555:336:64;972:48:5;-1:-1:-1;;;;;1038:20:5;;1030:45;;;;-1:-1:-1;;;1030:45:5;;757:2:64;1030:45:5;;;739:21:64;796:2;776:18;;;769:30;-1:-1:-1;;;815:18:64;;;808:42;867:18;;1030:45:5;555:336:64;1030:45:5;1086:6;:16;;;;-1:-1:-1;;;;;;1112:20:5;;;;;;;;1142:14;;;;;;253:1762;;14:177:64;93:13;;-1:-1:-1;;;;;135:31:64;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:354::-;284:6;292;300;353:2;341:9;332:7;328:23;324:32;321:52;;;369:1;366;359:12;321:52;398:9;392:16;382:26;;427:49;472:2;461:9;457:18;427:49;:::i;:::-;417:59;;495:49;540:2;529:9;525:18;495:49;:::i;:::-;485:59;;196:354;;;;;:::o;896:339::-;253:1762:5;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@addToWhitelist_2041": {
                  "entryPoint": 2366,
                  "id": 2041,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@barFeeTo_1923": {
                  "entryPoint": null,
                  "id": 1923,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@barFee_1921": {
                  "entryPoint": null,
                  "id": 1921,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@bento_1925": {
                  "entryPoint": null,
                  "id": 1925,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@claimOwner_24232": {
                  "entryPoint": 1380,
                  "id": 24232,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@deployPool_2023": {
                  "entryPoint": 919,
                  "id": 2023,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@owner_24155": {
                  "entryPoint": null,
                  "id": 24155,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@pendingOwner_24157": {
                  "entryPoint": null,
                  "id": 24157,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@pools_1932": {
                  "entryPoint": null,
                  "id": 1932,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@removeFromWhitelist_2059": {
                  "entryPoint": 1634,
                  "id": 2059,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@setBarFee_2082": {
                  "entryPoint": 626,
                  "id": 2082,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@transferOwner_24277": {
                  "entryPoint": 1879,
                  "id": 24277,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@whitelistedFactories_1936": {
                  "entryPoint": null,
                  "id": 1936,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 2614,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 2650,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 2679,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_bytes_calldata_ptr": {
                  "entryPoint": 2741,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 2874,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 2899,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c32fed941c8f9b2ff93bcaccab829b817fd09f04d9a6a923a1aca58967f5cc49__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d5c7d8863c3c0231b265d172800e2327315aef4f1b18645c8dd3c9706f4ad28c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_e4f431322dced3979cf760005b59cdb50932daff64433898c9b3f2f2d702dd3a__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "validator_revert_address": {
                  "entryPoint": 2976,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:4792:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:177:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "130:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "139:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "142:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "132:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "132:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "132:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "105:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "114:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "101:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "101:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "126:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "94:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "155:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "181:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "168:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "168:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "159:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "225:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "200:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "200:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "200:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "240:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "250:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "240:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "61:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "73:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:247:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "347:170:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "393:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "402:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "405:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "395:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "395:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "395:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "368:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "377:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "364:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "364:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "389:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "360:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "360:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "357:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "418:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "437:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "431:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "431:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "422:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "481:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "456:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "456:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "456:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "496:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "506:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "496:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "313:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "324:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "336:6:64",
                            "type": ""
                          }
                        ],
                        "src": "266:251:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "606:332:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "652:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "661:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "664:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "654:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "654:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "654:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "627:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "636:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "623:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "623:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "648:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "619:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "619:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "616:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "677:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "703:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "690:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "690:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "681:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "747:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "722:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "722:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "722:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "762:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "772:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "762:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "786:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "818:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "829:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "814:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "814:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "801:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "801:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "790:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "890:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "899:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "902:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "892:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "892:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "892:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "855:7:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "878:7:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "871:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "871:15:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "864:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "864:23:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "852:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "852:36:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "845:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "845:44:64"
                              },
                              "nodeType": "YulIf",
                              "src": "842:64:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "915:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "925:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "915:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "564:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "575:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "587:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "595:6:64",
                            "type": ""
                          }
                        ],
                        "src": "522:416:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1049:620:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1095:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1104:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1107:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1097:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1097:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1097:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1070:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1079:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1066:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1066:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1091:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1062:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1062:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1059:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1120:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1146:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1133:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1133:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1124:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1190:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1165:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1165:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1165:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1205:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1215:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1205:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1229:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1260:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1271:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1256:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1256:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1243:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1243:32:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1233:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1284:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1294:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1288:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1339:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1348:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1351:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1341:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1341:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1341:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1327:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1335:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1324:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1324:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1321:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1364:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1378:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1389:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1374:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1374:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1368:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1444:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1453:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1456:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1446:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1446:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1446:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1423:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1427:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1419:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1419:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1434:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1415:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1415:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1408:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1408:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1405:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1469:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1496:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1483:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1483:16:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1473:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1526:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1535:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1538:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1528:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1528:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1528:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1514:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1522:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1511:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1511:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1508:34:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1592:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1601:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1604:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1594:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1594:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1594:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1565:2:64"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1569:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1561:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1561:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1578:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1557:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1557:24:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1583:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1554:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1554:37:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1551:57:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1617:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1631:2:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1635:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1627:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1627:11:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1617:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1647:16:64",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "1657:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1647:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "999:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1010:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1022:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1030:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1038:6:64",
                            "type": ""
                          }
                        ],
                        "src": "943:726:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1744:110:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1790:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1799:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1802:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1792:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1792:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1792:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1765:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1774:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1761:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1761:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1786:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1757:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1757:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1754:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1815:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1838:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1825:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1825:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1815:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1710:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1721:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1733:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1674:180:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1960:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1970:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1982:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1993:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1978:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1978:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1970:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2012:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2027:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2035:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2023:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2023:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2005:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2005:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2005:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1929:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1940:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1951:4:64",
                            "type": ""
                          }
                        ],
                        "src": "1859:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2185:92:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2195:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2207:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2218:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2203:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2203:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2195:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2237:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "2262:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "2255:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2255:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "2248:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2248:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2230:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2230:41:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2230:41:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2154:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2165:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2176:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2090:187:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2411:318:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2428:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2439:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2421:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2421:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2421:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2462:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2473:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2458:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2458:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2478:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2451:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2451:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2451:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2511:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2522:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2507:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2507:18:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2527:6:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2535:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "2494:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2494:48:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2494:48:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "2566:9:64"
                                          },
                                          {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2577:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2562:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2562:22:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2586:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2558:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2558:31:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2591:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2551:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2551:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2551:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2602:121:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2618:9:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value1",
                                                "nodeType": "YulIdentifier",
                                                "src": "2637:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2645:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2633:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2633:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2650:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2629:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2629:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2614:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2614:104:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2720:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2610:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2610:113:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2602:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2372:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2383:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2391:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2402:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2282:447:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2908:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2925:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2936:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2918:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2918:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2918:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2959:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2970:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2955:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2955:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2975:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2948:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2948:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2948:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2998:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3009:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2994:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2994:18:64"
                                  },
                                  {
                                    "hexValue": "5a45524f5f41444452455353",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3014:14:64",
                                    "type": "",
                                    "value": "ZERO_ADDRESS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2987:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2987:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2987:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3038:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3050:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3061:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3046:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3046:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3038:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2885:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2899:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2734:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3249:167:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3266:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3277:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3259:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3259:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3259:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3300:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3311:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3296:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3296:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3316:2:64",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3289:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3289:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3289:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3339:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3350:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3335:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3335:18:64"
                                  },
                                  {
                                    "hexValue": "4e4f545f50454e44494e475f4f574e4552",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3355:19:64",
                                    "type": "",
                                    "value": "NOT_PENDING_OWNER"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3328:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3328:47:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3328:47:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3384:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3396:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3407:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3392:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3392:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3384:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c32fed941c8f9b2ff93bcaccab829b817fd09f04d9a6a923a1aca58967f5cc49__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3226:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3240:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3075:341:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3595:158:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3612:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3623:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3605:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3605:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3605:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3646:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3657:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3642:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3642:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3662:1:64",
                                    "type": "",
                                    "value": "9"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3635:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3635:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3635:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3684:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3695:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3680:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3680:18:64"
                                  },
                                  {
                                    "hexValue": "4e4f545f4f574e4552",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3700:11:64",
                                    "type": "",
                                    "value": "NOT_OWNER"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3673:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3673:39:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3673:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3721:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3733:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3744:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3729:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3729:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3721:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3572:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3586:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3421:332:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3932:165:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3949:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3960:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3942:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3942:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3942:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3983:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3994:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3979:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3979:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3999:2:64",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3972:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3972:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3972:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4022:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4033:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4018:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4018:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f4241525f464545",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4038:17:64",
                                    "type": "",
                                    "value": "INVALID_BAR_FEE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4011:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4011:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4011:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4065:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4077:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4088:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4073:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4073:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4065:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d5c7d8863c3c0231b265d172800e2327315aef4f1b18645c8dd3c9706f4ad28c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3909:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3923:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3758:339:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4276:173:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4293:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4304:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4286:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4286:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4286:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4327:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4338:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4323:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4323:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4343:2:64",
                                    "type": "",
                                    "value": "23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4316:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4316:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4316:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4366:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4377:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4362:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4362:18:64"
                                  },
                                  {
                                    "hexValue": "464143544f52595f4e4f545f57484954454c4953544544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4382:25:64",
                                    "type": "",
                                    "value": "FACTORY_NOT_WHITELISTED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4355:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4355:53:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4355:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4417:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4429:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4440:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4425:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4425:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4417:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e4f431322dced3979cf760005b59cdb50932daff64433898c9b3f2f2d702dd3a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4253:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4267:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4102:347:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4555:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4565:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4577:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4588:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4573:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4573:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4565:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4607:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4618:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4600:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4600:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4600:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4524:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4535:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4546:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4454:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4681:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4768:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4777:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4780:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4770:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4770:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4770:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "4704:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "4715:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4722:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "4711:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4711:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "4701:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4701:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4694:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4694:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4691:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "4670:5:64",
                            "type": ""
                          }
                        ],
                        "src": "4636:154:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value1 := add(_2, 32)\n        value2 := length\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), value1)\n        calldatacopy(add(headStart, 64), value0, value1)\n        mstore(add(add(headStart, value1), 64), 0)\n        tail := add(add(headStart, and(add(value1, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n    function abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"ZERO_ADDRESS\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_c32fed941c8f9b2ff93bcaccab829b817fd09f04d9a6a923a1aca58967f5cc49__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"NOT_PENDING_OWNER\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 9)\n        mstore(add(headStart, 64), \"NOT_OWNER\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d5c7d8863c3c0231b265d172800e2327315aef4f1b18645c8dd3c9706f4ad28c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"INVALID_BAR_FEE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_e4f431322dced3979cf760005b59cdb50932daff64433898c9b3f2f2d702dd3a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"FACTORY_NOT_WHITELISTED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "1923": [
                  {
                    "length": 32,
                    "start": 254
                  }
                ],
                "1925": [
                  {
                    "length": 32,
                    "start": 362
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100df5760003560e01c80638ab1d6811161008c578063c14ad80211610066578063c14ad80214610215578063cf81afaa1461022c578063e30c39781461023f578063e43252d71461025f57600080fd5b80638ab1d681146101bf5780638da5cb5b146101d2578063a4063dbc146101f257600080fd5b80633bd1adec116100bd5780633bd1adec1461015d5780634da31827146101655780636f50f2f41461018c57600080fd5b806306e22d12146100e45780630c0a0cd2146100f9578063250558dc1461014a575b600080fd5b6100f76100f2366004610b3a565b610272565b005b6101207f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610120610158366004610ab5565b610397565b6100f7610564565b6101207f000000000000000000000000000000000000000000000000000000000000000081565b6101af61019a366004610a36565b60046020526000908152604090205460ff1681565b6040519015158152602001610141565b6100f76101cd366004610a36565b610662565b6000546101209073ffffffffffffffffffffffffffffffffffffffff1681565b6101af610200366004610a36565b60036020526000908152604090205460ff1681565b61021e60025481565b604051908152602001610141565b6100f761023a366004610a77565b610757565b6001546101209073ffffffffffffffffffffffffffffffffffffffff1681565b6100f761026d366004610a36565b61093e565b60005473ffffffffffffffffffffffffffffffffffffffff1633146102f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e4552000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b612710811115610364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f4241525f464545000000000000000000000000000000000060448201526064016102ef565b600281905560405181907f880a5214911723edb25bb08410581af1de2e40c52eda03920990c4bc27011fb690600090a250565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604081205460ff16610426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f464143544f52595f4e4f545f57484954454c495354454400000000000000000060448201526064016102ef565b6040517f27c3cae100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516906327c3cae19061047a9086908690600401610b53565b602060405180830381600087803b15801561049457600080fd5b505af11580156104a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104cc9190610a5a565b73ffffffffffffffffffffffffffffffffffffffff8082166000818152600360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555192935091908616907fe469f9471ac1d98222517eb2cdff1ef4df5f7880269173bb782bb78e499d9de3906105559087908790610b53565b60405180910390a39392505050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146105e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e4f545f50454e44494e475f4f574e455200000000000000000000000000000060448201526064016102ef565b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917f5bb496b3f951b55d3a1d8e479725a4d25bdc7644fc355f0b71c540354820a1c591a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600180549091169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e4552000000000000000000000000000000000000000000000060448201526064016102ef565b73ffffffffffffffffffffffffffffffffffffffff811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f1f756c8b089af6b33ee121fee8badac2553a2fa89c0575ea91ff8792617746c29190a250565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e4552000000000000000000000000000000000000000000000060448201526064016102ef565b73ffffffffffffffffffffffffffffffffffffffff8216610855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f41444452455353000000000000000000000000000000000000000060448201526064016102ef565b80156108cc57600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081178255604051909133917f5bb496b3f951b55d3a1d8e479725a4d25bdc7644fc355f0b71c540354820a1c59190a35050565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560405133907f87f5c8846f4c51400fa448cfb84edcec5cc0f333b6d20a5b903e050823dcb66790600090a35050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146109bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e4552000000000000000000000000000000000000000000000060448201526064016102ef565b73ffffffffffffffffffffffffffffffffffffffff811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f75b2135d1c8c3519f3c09c43fe6527089ef09f40c7981ebf0ed46e79e79032c79190a250565b600060208284031215610a4857600080fd5b8135610a5381610ba0565b9392505050565b600060208284031215610a6c57600080fd5b8151610a5381610ba0565b60008060408385031215610a8a57600080fd5b8235610a9581610ba0565b915060208301358015158114610aaa57600080fd5b809150509250929050565b600080600060408486031215610aca57600080fd5b8335610ad581610ba0565b9250602084013567ffffffffffffffff80821115610af257600080fd5b818601915086601f830112610b0657600080fd5b813581811115610b1557600080fd5b876020828501011115610b2757600080fd5b6020830194508093505050509250925092565b600060208284031215610b4c57600080fd5b5035919050565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610bc257600080fd5b5056fea26469706673582212206048df326ffea94c3a1fa819787ec5041b15c8e0c106db3d9a44fa150c7bee5964736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8AB1D681 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xC14AD802 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x215 JUMPI DUP1 PUSH4 0xCF81AFAA EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0x23F JUMPI DUP1 PUSH4 0xE43252D7 EQ PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8AB1D681 EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xA4063DBC EQ PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3BD1ADEC GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x3BD1ADEC EQ PUSH2 0x15D JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x165 JUMPI DUP1 PUSH4 0x6F50F2F4 EQ PUSH2 0x18C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6E22D12 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x250558DC EQ PUSH2 0x14A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0xB3A JUMP JUMPDEST PUSH2 0x272 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x120 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x120 PUSH2 0x158 CALLDATASIZE PUSH1 0x4 PUSH2 0xAB5 JUMP JUMPDEST PUSH2 0x397 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x564 JUMP JUMPDEST PUSH2 0x120 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x19A CALLDATASIZE PUSH1 0x4 PUSH2 0xA36 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x141 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x1CD CALLDATASIZE PUSH1 0x4 PUSH2 0xA36 JUMP JUMPDEST PUSH2 0x662 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x120 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x1AF PUSH2 0x200 CALLDATASIZE PUSH1 0x4 PUSH2 0xA36 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x21E PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x141 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x23A CALLDATASIZE PUSH1 0x4 PUSH2 0xA77 JUMP JUMPDEST PUSH2 0x757 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x120 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x26D CALLDATASIZE PUSH1 0x4 PUSH2 0xA36 JUMP JUMPDEST PUSH2 0x93E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x2F8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4F574E45520000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2710 DUP2 GT ISZERO PUSH2 0x364 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4241525F4645450000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2EF JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 SWAP1 PUSH32 0x880A5214911723EDB25BB08410581AF1DE2E40C52EDA03920990C4BC27011FB6 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x426 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x464143544F52595F4E4F545F57484954454C4953544544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x27C3CAE100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x27C3CAE1 SWAP1 PUSH2 0x47A SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xB53 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x494 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4CC SWAP2 SWAP1 PUSH2 0xA5A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP2 SWAP1 DUP7 AND SWAP1 PUSH32 0xE469F9471AC1D98222517EB2CDFF1EF4DF5F7880269173BB782BB78E499D9DE3 SWAP1 PUSH2 0x555 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH2 0xB53 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x5E5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F50454E44494E475F4F574E4552000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2EF JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD CALLER SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH32 0x5BB496B3F951B55D3A1D8E479725A4D25BDC7644FC355F0B71C540354820A1C5 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND CALLER OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x6E3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4F574E45520000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE MLOAD PUSH32 0x1F756C8B089AF6B33EE121FEE8BADAC2553A2FA89C0575EA91FF8792617746C2 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x7D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4F574E45520000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x855 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5A45524F5F414444524553530000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2EF JUMP JUMPDEST DUP1 ISZERO PUSH2 0x8CC JUMPI PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 CALLER SWAP2 PUSH32 0x5BB496B3F951B55D3A1D8E479725A4D25BDC7644FC355F0B71C540354820A1C5 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x87F5C8846F4C51400FA448CFB84EDCEC5CC0F333B6D20A5B903E050823DCB667 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x9BF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4F574E45520000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2EF JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE MLOAD PUSH32 0x75B2135D1C8C3519F3C09C43FE6527089EF09F40C7981EBF0ED46E79E79032C7 SWAP2 SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xA53 DUP2 PUSH2 0xBA0 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xA53 DUP2 PUSH2 0xBA0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xA8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xA95 DUP2 PUSH2 0xBA0 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xAAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xACA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xAD5 DUP2 PUSH2 0xBA0 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xAF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xB06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xB15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xB27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE DUP2 PUSH1 0x20 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0x40 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0x40 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xBC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH1 0x48 0xDF ORIGIN PUSH16 0xFEA94C3A1FA819787EC5041B15C8E0C1 MOD 0xDB RETURNDATASIZE SWAP11 DIFFICULTY STATICCALL ISZERO 0xC PUSH28 0xEE5964736F6C63430008070033000000000000000000000000000000 ",
              "sourceMap": "253:1762:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1832:181;;;;;;:::i;:::-;;:::i;:::-;;572:33;;;;;;;;2035:42:64;2023:55;;;2005:74;;1993:2;1978:18;572:33:5;;;;;;;;1169:326;;;;;;:::i;:::-;;:::i;959:214:61:-;;;:::i;611:30:5:-;;;;;753:52;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2255:14:64;;2248:22;2230:41;;2218:2;2203:18;753:52:5;2090:187:64;1661:165:5;;;;;;:::i;:::-;;:::i;285:20:61:-;;;;;;;;;710:37:5;;;;;;:::i;:::-;;;;;;;;;;;;;;;;545:21;;;;;;;;;4600:25:64;;;4588:2;4573:18;545:21:5;4454:177:64;1354:372:61;;;;;;:::i;:::-;;:::i;311:27::-;;;;;;;;;1501:154:5;;;;;;:::i;:::-;;:::i;1832:181::-;858:5:61;;;;844:10;:19;836:41;;;;;;;3623:2:64;836:41:61;;;3605:21:64;3662:1;3642:18;;;3635:29;3700:11;3680:18;;;3673:39;3729:18;;836:41:61;;;;;;;;;684:5:5::1;1905:7;:18;;1897:46;;;::::0;::::1;::::0;;3960:2:64;1897:46:5::1;::::0;::::1;3942:21:64::0;3999:2;3979:18;;;3972:30;4038:17;4018:18;;;4011:45;4073:18;;1897:46:5::1;3758:339:64::0;1897:46:5::1;1953:6;:16:::0;;;1984:22:::1;::::0;1962:7;;1984:22:::1;::::0;;;::::1;1832:181:::0;:::o;1169:326::-;1285:30;;;1253:12;1285:30;;;:20;:30;;;;;;;;1277:66;;;;;;;4304:2:64;1277:66:5;;;4286:21:64;4343:2;4323:18;;;4316:30;4382:25;4362:18;;;4355:53;4425:18;;1277:66:5;4102:347:64;1277:66:5;1360:46;;;;;:33;;;;;;:46;;1394:11;;;;1360:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1416:11;;;;;;;;:5;:11;;;;;;;:18;;;;1430:4;1416:18;;;1449:39;1353:53;;-1:-1:-1;1416:11:5;1449:39;;;;;;;;1476:11;;;;1449:39;:::i;:::-;;;;;;;;1169:326;;;;;:::o;959:214:61:-;1022:12;;;;1008:10;:26;1000:56;;;;;;;3277:2:64;1000:56:61;;;3259:21:64;3316:2;3296:18;;;3289:30;3355:19;3335:18;;;3328:47;3392:18;;1000:56:61;3075:341:64;1000:56:61;1085:5;;;1071:32;;1092:10;;1071:32;1085:5;;;;1071:32;;;1113:5;:18;;;;;;1121:10;1113:18;;;;;1141:25;;;;;;;959:214::o;1661:165:5:-;858:5:61;;;;844:10;:19;836:41;;;;;;;3623:2:64;836:41:61;;;3605:21:64;3662:1;3642:18;;;3635:29;3700:11;3680:18;;;3673:39;3729:18;;836:41:61;3421:332:64;836:41:61;1737:30:5::1;::::0;::::1;1770:5;1737:30:::0;;;:20:::1;:30;::::0;;;;;:38;;;::::1;::::0;;1790:29;::::1;::::0;1770:5;1790:29:::1;1661:165:::0;:::o;1354:372:61:-;858:5;;;;844:10;:19;836:41;;;;;;;3623:2:64;836:41:61;;;3605:21:64;3662:1;3642:18;;;3635:29;3700:11;3680:18;;;3673:39;3729:18;;836:41:61;3421:332:64;836:41:61;1446:23:::1;::::0;::::1;1438:48;;;::::0;::::1;::::0;;2936:2:64;1438:48:61::1;::::0;::::1;2918:21:64::0;2975:2;2955:18;;;2948:30;3014:14;2994:18;;;2987:42;3046:18;;1438:48:61::1;2734:336:64::0;1438:48:61::1;1500:6;1496:224;;;1522:5;:17:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;1558:36:::1;::::0;1522:17;;1572:10:::1;::::0;1558:36:::1;::::0;1522:5;1558:36:::1;1354:372:::0;;:::o;1496:224::-:1;1625:12;:24:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;1668:41:::1;::::0;1687:10:::1;::::0;1668:41:::1;::::0;-1:-1:-1;;1668:41:61::1;1354:372:::0;;:::o;1501:154:5:-;858:5:61;;;;844:10;:19;836:41;;;;;;;3623:2:64;836:41:61;;;3605:21:64;3662:1;3642:18;;;3635:29;3700:11;3680:18;;;3673:39;3729:18;;836:41:61;3421:332:64;836:41:61;1572:30:5::1;::::0;::::1;;::::0;;;:20:::1;:30;::::0;;;;;:37;;;::::1;1605:4;1572:37;::::0;;1624:24;::::1;::::0;1572:30;1624:24:::1;1501:154:::0;:::o;14:247:64:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;:::-;250:5;14:247;-1:-1:-1;;;14:247:64:o;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:416::-;587:6;595;648:2;636:9;627:7;623:23;619:32;616:52;;;664:1;661;654:12;616:52;703:9;690:23;722:31;747:5;722:31;:::i;:::-;772:5;-1:-1:-1;829:2:64;814:18;;801:32;871:15;;864:23;852:36;;842:64;;902:1;899;892:12;842:64;925:7;915:17;;;522:416;;;;;:::o;943:726::-;1022:6;1030;1038;1091:2;1079:9;1070:7;1066:23;1062:32;1059:52;;;1107:1;1104;1097:12;1059:52;1146:9;1133:23;1165:31;1190:5;1165:31;:::i;:::-;1215:5;-1:-1:-1;1271:2:64;1256:18;;1243:32;1294:18;1324:14;;;1321:34;;;1351:1;1348;1341:12;1321:34;1389:6;1378:9;1374:22;1364:32;;1434:7;1427:4;1423:2;1419:13;1415:27;1405:55;;1456:1;1453;1446:12;1405:55;1496:2;1483:16;1522:2;1514:6;1511:14;1508:34;;;1538:1;1535;1528:12;1508:34;1583:7;1578:2;1569:6;1565:2;1561:15;1557:24;1554:37;1551:57;;;1604:1;1601;1594:12;1551:57;1635:2;1631;1627:11;1617:21;;1657:6;1647:16;;;;;943:726;;;;;:::o;1674:180::-;1733:6;1786:2;1774:9;1765:7;1761:23;1757:32;1754:52;;;1802:1;1799;1792:12;1754:52;-1:-1:-1;1825:23:64;;1674:180;-1:-1:-1;1674:180:64:o;2282:447::-;2439:2;2428:9;2421:21;2478:6;2473:2;2462:9;2458:18;2451:34;2535:6;2527;2522:2;2511:9;2507:18;2494:48;2591:1;2562:22;;;2586:2;2558:31;;;2551:42;;;;2645:2;2633:15;;;2650:66;2629:88;2614:104;2610:113;;2282:447;-1:-1:-1;2282:447:64:o;4636:154::-;4722:42;4715:5;4711:54;4704:5;4701:65;4691:93;;4780:1;4777;4770:12;4691:93;4636:154;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "613400",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "addToWhitelist(address)": "27938",
                "barFee()": "2317",
                "barFeeTo()": "infinite",
                "bento()": "infinite",
                "claimOwner()": "54380",
                "deployPool(address,bytes)": "infinite",
                "owner()": "2347",
                "pendingOwner()": "2368",
                "pools(address)": "2580",
                "removeFromWhitelist(address)": "27867",
                "setBarFee(uint256)": "25659",
                "transferOwner(address,bool)": "28322",
                "whitelistedFactories(address)": "2580"
              }
            },
            "methodIdentifiers": {
              "addToWhitelist(address)": "e43252d7",
              "barFee()": "c14ad802",
              "barFeeTo()": "0c0a0cd2",
              "bento()": "4da31827",
              "claimOwner()": "3bd1adec",
              "deployPool(address,bytes)": "250558dc",
              "owner()": "8da5cb5b",
              "pendingOwner()": "e30c3978",
              "pools(address)": "a4063dbc",
              "removeFromWhitelist(address)": "8ab1d681",
              "setBarFee(uint256)": "06e22d12",
              "transferOwner(address,bool)": "cf81afaa",
              "whitelistedFactories(address)": "6f50f2f4"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_barFee\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_barFeeTo\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_bento\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"AddToWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"barFee\",\"type\":\"uint256\"}],\"name\":\"BarFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"deployData\",\"type\":\"bytes\"}],\"name\":\"DeployPool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"}],\"name\":\"RemoveFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"TransferOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"TransferOwnerClaim\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"}],\"name\":\"addToWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"barFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"barFeeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bento\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_deployData\",\"type\":\"bytes\"}],\"name\":\"deployPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"pools\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"}],\"name\":\"removeFromWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_barFee\",\"type\":\"uint256\"}],\"name\":\"setBarFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"direct\",\"type\":\"bool\"}],\"name\":\"transferOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistedFactories\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Mudit Gupta.\",\"kind\":\"dev\",\"methods\":{\"transferOwner(address,bool)\":{\"params\":{\"direct\":\"If 'true', ownership is directly transferred.\",\"recipient\":\"Account granted `owner` access control.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"claimOwner()\":{\"notice\":\"`pendingOwner` can claim `owner` account.\"},\"transferOwner(address,bool)\":{\"notice\":\"Transfer `owner` account.\"}},\"notice\":\"Trident pool deployer contract with template factory whitelist.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/deployer/MasterDeployer.sol\":\"MasterDeployer\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/deployer/MasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../interfaces/IPoolFactory.sol\\\";\\nimport \\\"../utils/TridentOwnable.sol\\\";\\n\\n/// @notice Trident pool deployer contract with template factory whitelist.\\n/// @author Mudit Gupta.\\ncontract MasterDeployer is TridentOwnable {\\n    event DeployPool(address indexed factory, address indexed pool, bytes deployData);\\n    event AddToWhitelist(address indexed factory);\\n    event RemoveFromWhitelist(address indexed factory);\\n    event BarFeeUpdated(uint256 indexed barFee);\\n\\n    uint256 public barFee;\\n    address public immutable barFeeTo;\\n    address public immutable bento;\\n\\n    uint256 internal constant MAX_FEE = 10000; // @dev 100%.\\n\\n    mapping(address => bool) public pools;\\n    mapping(address => bool) public whitelistedFactories;\\n\\n    constructor(\\n        uint256 _barFee,\\n        address _barFeeTo,\\n        address _bento\\n    ) {\\n        require(_barFee <= MAX_FEE, \\\"INVALID_BAR_FEE\\\");\\n        require(_barFeeTo != address(0), \\\"ZERO_ADDRESS\\\");\\n        require(_bento != address(0), \\\"ZERO_ADDRESS\\\");\\n\\n        barFee = _barFee;\\n        barFeeTo = _barFeeTo;\\n        bento = _bento;\\n    }\\n\\n    function deployPool(address _factory, bytes calldata _deployData) external returns (address pool) {\\n        require(whitelistedFactories[_factory], \\\"FACTORY_NOT_WHITELISTED\\\");\\n        pool = IPoolFactory(_factory).deployPool(_deployData);\\n        pools[pool] = true;\\n        emit DeployPool(_factory, pool, _deployData);\\n    }\\n\\n    function addToWhitelist(address _factory) external onlyOwner {\\n        whitelistedFactories[_factory] = true;\\n        emit AddToWhitelist(_factory);\\n    }\\n\\n    function removeFromWhitelist(address _factory) external onlyOwner {\\n        whitelistedFactories[_factory] = false;\\n        emit RemoveFromWhitelist(_factory);\\n    }\\n\\n    function setBarFee(uint256 _barFee) external onlyOwner {\\n        require(_barFee <= MAX_FEE, \\\"INVALID_BAR_FEE\\\");\\n        barFee = _barFee;\\n        emit BarFeeUpdated(_barFee);\\n    }\\n}\\n\",\"keccak256\":\"0x4c7478195fee64d773fbebb9a6435036cd478dbb27c60e35d5c64c7ceaf6d7f9\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPoolFactory.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployment interface.\\ninterface IPoolFactory {\\n    function deployPool(bytes calldata _deployData) external returns (address pool);\\n\\n    function configAddress(bytes32 data) external returns (address pool);\\n}\\n\",\"keccak256\":\"0x03b9677a7914f97ca3ae57deb690cb80d0f1ef4d3541573b4dee6d3cebd5df2e\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/TridentOwnable.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident access control contract.\\n/// @author Adapted from https://github.com/boringcrypto/BoringSolidity/blob/master/contracts/BoringOwnable.sol, License-Identifier: MIT.\\ncontract TridentOwnable {\\n    address public owner;\\n    address public pendingOwner;\\n\\n    event TransferOwner(address indexed sender, address indexed recipient);\\n    event TransferOwnerClaim(address indexed sender, address indexed recipient);\\n\\n    /// @notice Initialize and grant deployer account (`msg.sender`) `owner` access role.\\n    constructor() {\\n        owner = msg.sender;\\n        emit TransferOwner(address(0), msg.sender);\\n    }\\n\\n    /// @notice Access control modifier that requires modified function to be called by `owner` account.\\n    modifier onlyOwner() {\\n        require(msg.sender == owner, \\\"NOT_OWNER\\\");\\n        _;\\n    }\\n\\n    /// @notice `pendingOwner` can claim `owner` account.\\n    function claimOwner() external {\\n        require(msg.sender == pendingOwner, \\\"NOT_PENDING_OWNER\\\");\\n        emit TransferOwner(owner, msg.sender);\\n        owner = msg.sender;\\n        pendingOwner = address(0);\\n    }\\n\\n    /// @notice Transfer `owner` account.\\n    /// @param recipient Account granted `owner` access control.\\n    /// @param direct If 'true', ownership is directly transferred.\\n    function transferOwner(address recipient, bool direct) external onlyOwner {\\n        require(recipient != address(0), \\\"ZERO_ADDRESS\\\");\\n        if (direct) {\\n            owner = recipient;\\n            emit TransferOwner(msg.sender, recipient);\\n        } else {\\n            pendingOwner = recipient;\\n            emit TransferOwnerClaim(msg.sender, recipient);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5bb04352352b77289553cf278a61c75206e2b14477f0e1d61e7ce648c2306b46\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 24155,
                "contract": "contracts/deployer/MasterDeployer.sol:MasterDeployer",
                "label": "owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 24157,
                "contract": "contracts/deployer/MasterDeployer.sol:MasterDeployer",
                "label": "pendingOwner",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              },
              {
                "astId": 1921,
                "contract": "contracts/deployer/MasterDeployer.sol:MasterDeployer",
                "label": "barFee",
                "offset": 0,
                "slot": "2",
                "type": "t_uint256"
              },
              {
                "astId": 1932,
                "contract": "contracts/deployer/MasterDeployer.sol:MasterDeployer",
                "label": "pools",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_address,t_bool)"
              },
              {
                "astId": 1936,
                "contract": "contracts/deployer/MasterDeployer.sol:MasterDeployer",
                "label": "whitelistedFactories",
                "offset": 0,
                "slot": "4",
                "type": "t_mapping(t_address,t_bool)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "claimOwner()": {
                "notice": "`pendingOwner` can claim `owner` account."
              },
              "transferOwner(address,bool)": {
                "notice": "Transfer `owner` account."
              }
            },
            "notice": "Trident pool deployer contract with template factory whitelist.",
            "version": 1
          }
        }
      },
      "contracts/examples/PoolFactory.sol": {
        "PoolFactory": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                }
              ],
              "name": "configAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Mudit Gupta",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "configAddress(bytes32)": "f6ab6d99",
              "deployPool(bytes)": "27c3cae1"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"name\":\"configAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_deployData\",\"type\":\"bytes\"}],\"name\":\"deployPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Mudit Gupta\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/examples/PoolFactory.sol\":\"PoolFactory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/examples/PoolFactory.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../interfaces/IPoolFactory.sol\\\";\\n\\nimport \\\"./PoolTemplate.sol\\\";\\n\\n/**\\n * @author Mudit Gupta\\n */\\nabstract contract PoolFactory is IPoolFactory {\\n    // Consider deploying via an upgradable proxy to allow upgrading pools in the future\\n\\n    function deployPool(bytes memory _deployData) external override returns (address) {\\n        return address(new PoolTemplate(_deployData));\\n    }\\n}\\n\",\"keccak256\":\"0xd27848d57727dd9842d4e6dc3c11985169958bf444dc0fcbc31ba3215e1e577e\",\"license\":\"GPL-3.0-or-later\"},\"contracts/examples/PoolTemplate.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8.2;\\n\\n/**\\n * @author Mudit Gupta\\n */\\ncontract PoolTemplate {\\n    uint256 public immutable configValue;\\n    address public immutable anotherConfigValue;\\n\\n    constructor(bytes memory _data) {\\n        (configValue, anotherConfigValue) = abi.decode(_data, (uint256, address));\\n    }\\n}\\n\",\"keccak256\":\"0x11f471a6ada4c007a29833139d551c6b74de192c4c14bbcf20c7595231d69553\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPoolFactory.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployment interface.\\ninterface IPoolFactory {\\n    function deployPool(bytes calldata _deployData) external returns (address pool);\\n\\n    function configAddress(bytes32 data) external returns (address pool);\\n}\\n\",\"keccak256\":\"0x03b9677a7914f97ca3ae57deb690cb80d0f1ef4d3541573b4dee6d3cebd5df2e\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/examples/PoolTemplate.sol": {
        "PoolTemplate": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "anotherConfigValue",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "configValue",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Mudit Gupta",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_2136": {
                  "entryPoint": null,
                  "id": 2136,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_bytes_memory_ptr_fromMemory": {
                  "entryPoint": 92,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_address_payable_fromMemory": {
                  "entryPoint": 299,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "panic_error_0x41": {
                  "entryPoint": 360,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1598:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "104:996:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "114:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "124:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "118:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "171:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "180:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "183:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "173:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "173:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "173:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "146:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "155:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "142:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "142:23:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "167:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "138:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "138:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "135:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "196:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "216:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "210:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "210:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "200:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "235:28:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "253:2:64",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "257:1:64",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "249:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "249:10:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "261:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "245:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "245:18:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "239:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "290:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "299:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "302:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "292:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "292:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "292:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "278:6:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "286:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "275:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "275:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "272:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "315:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "329:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "340:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "325:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "325:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "319:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "395:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "404:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "407:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "397:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "397:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "397:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "374:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "378:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "370:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "370:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "385:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "366:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "366:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "359:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "359:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "356:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "420:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "436:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "430:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "430:9:64"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "424:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "462:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "464:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "464:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "464:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "454:2:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "458:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "451:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "451:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "448:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "493:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "507:2:64",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "503:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "503:7:64"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "497:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "519:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "539:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "533:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "533:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "523:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "551:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "573:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_4",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "597:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "601:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "593:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "593:13:64"
                                              },
                                              {
                                                "name": "_5",
                                                "nodeType": "YulIdentifier",
                                                "src": "608:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "589:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "589:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "613:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "585:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "585:31:64"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "618:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "581:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "581:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "569:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "569:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "555:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "681:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "683:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "683:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "683:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "640:10:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "652:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "637:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "637:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "660:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "672:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "657:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "657:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "634:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "634:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "631:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "719:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "723:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "712:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "712:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "712:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "750:6:64"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "758:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "743:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "743:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "743:18:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "807:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "816:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "819:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "809:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "809:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "809:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "784:2:64"
                                          },
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "788:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "780:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "780:11:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "793:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "776:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "776:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "798:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "773:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "773:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "770:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "832:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "841:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "836:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "897:83:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "memPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "926:6:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "934:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "922:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "922:14:64"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "938:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "918:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "918:23:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_3",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "957:2:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "961:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "953:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "953:10:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "965:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "949:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "949:19:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "943:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "943:26:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "911:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "911:59:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "911:59:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "862:1:64"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "865:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "859:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "859:9:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "869:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "871:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "880:1:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "883:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "876:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "876:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "871:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "855:3:64",
                                "statements": []
                              },
                              "src": "851:129:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1010:59:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "memPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1039:6:64"
                                                },
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1047:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1035:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1035:15:64"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "1052:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1031:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1031:24:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1057:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1024:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1024:35:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1024:35:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "995:1:64"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "998:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "992:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "992:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "989:80:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1078:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1088:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1078:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "70:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "81:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "93:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:1086:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1211:253:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1257:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1266:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1269:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1259:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1259:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1259:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1232:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1241:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1228:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1228:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1253:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1224:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1224:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1221:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1282:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1298:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1292:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1292:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1282:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1317:38:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1340:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1351:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1336:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1336:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1330:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1330:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1321:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1418:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1427:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1430:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1420:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1420:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1420:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1377:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1388:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1403:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1408:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1399:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1399:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1412:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "1395:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1395:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1384:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1384:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1374:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1374:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1367:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1367:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1364:70:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1443:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1453:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1443:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_address_payable_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1169:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1180:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1192:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1200:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1105:359:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1501:95:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1518:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1525:3:64",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1530:10:64",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1521:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1521:20:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1511:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1511:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1511:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1558:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1561:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1551:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1551:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1551:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1582:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1585:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1575:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1575:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1575:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1469:127:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(offset, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := mload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let _5 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_4, 0x1f), _5), 63), _5))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _4)\n        if gt(add(add(_3, _4), _1), dataEnd) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _4) { i := add(i, _1) }\n        {\n            mstore(add(add(memPtr, i), _1), mload(add(add(_3, i), _1)))\n        }\n        if gt(i, _4)\n        {\n            mstore(add(add(memPtr, _4), _1), 0)\n        }\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_uint256t_address_payable_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        let value := mload(add(headStart, 32))\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value1 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60c060405234801561001057600080fd5b5060405161029138038061029183398101604081905261002f9161005c565b80806020019051810190610043919061012b565b60601b6001600160601b03191660a0526080525061017e565b6000602080838503121561006f57600080fd5b82516001600160401b038082111561008657600080fd5b818501915085601f83011261009a57600080fd5b8151818111156100ac576100ac610168565b604051601f8201601f19908116603f011681019083821181831017156100d4576100d4610168565b8160405282815288868487010111156100ec57600080fd5b600093505b8284101561010e57848401860151818501870152928501926100f1565b8284111561011f5760008684830101525b98975050505050505050565b6000806040838503121561013e57600080fd5b825160208401519092506001600160a01b038116811461015d57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60805160a05160601c60ef6101a26000396000607301526000603a015260ef6000f3fe6080604052348015600f57600080fd5b506004361060315760003560e01c80626c51be146036578063073d911f14606f575b600080fd5b605c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b60957f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001606656fea26469706673582212207a2c90231de8afc8a1f09c6c51267d9c3d6964c890f9187b390d7caf4e30016864736f6c63430008070033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x291 CODESIZE SUB DUP1 PUSH2 0x291 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x5C JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x43 SWAP2 SWAP1 PUSH2 0x12B JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE PUSH1 0x80 MSTORE POP PUSH2 0x17E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0xAC JUMPI PUSH2 0xAC PUSH2 0x168 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xD4 JUMPI PUSH2 0xD4 PUSH2 0x168 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 DUP7 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP4 POP JUMPDEST DUP3 DUP5 LT ISZERO PUSH2 0x10E JUMPI DUP5 DUP5 ADD DUP7 ADD MLOAD DUP2 DUP6 ADD DUP8 ADD MSTORE SWAP3 DUP6 ADD SWAP3 PUSH2 0xF1 JUMP JUMPDEST DUP3 DUP5 GT ISZERO PUSH2 0x11F JUMPI PUSH1 0x0 DUP7 DUP5 DUP4 ADD ADD MSTORE JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x13E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x15D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xEF PUSH2 0x1A2 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH1 0x73 ADD MSTORE PUSH1 0x0 PUSH1 0x3A ADD MSTORE PUSH1 0xEF PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x31 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0x6C51BE EQ PUSH1 0x36 JUMPI DUP1 PUSH4 0x73D911F EQ PUSH1 0x6F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x95 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x66 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH27 0x2C90231DE8AFC8A1F09C6C51267D9C3D6964C890F9187B390D7CAF 0x4E ADDRESS ADD PUSH9 0x64736F6C6343000807 STOP CALLER ",
              "sourceMap": "102:244:7:-:0;;;222:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;311:5;300:37;;;;;;;;;;;;:::i;:::-;264:73;;-1:-1:-1;;;;;;264:73:7;;;;;-1:-1:-1;102:244:7;;14:1086:64;93:6;124:2;167;155:9;146:7;142:23;138:32;135:52;;;183:1;180;173:12;135:52;210:16;;-1:-1:-1;;;;;275:14:64;;;272:34;;;302:1;299;292:12;272:34;340:6;329:9;325:22;315:32;;385:7;378:4;374:2;370:13;366:27;356:55;;407:1;404;397:12;356:55;436:2;430:9;458:2;454;451:10;448:36;;;464:18;;:::i;:::-;539:2;533:9;507:2;593:13;;-1:-1:-1;;589:22:64;;;613:2;585:31;581:40;569:53;;;637:18;;;657:22;;;634:46;631:72;;;683:18;;:::i;:::-;723:10;719:2;712:22;758:2;750:6;743:18;798:7;793:2;788;784;780:11;776:20;773:33;770:53;;;819:1;816;809:12;770:53;841:1;832:10;;851:129;865:2;862:1;859:9;851:129;;;953:10;;;949:19;;943:26;922:14;;;918:23;;911:59;876:10;;;;851:129;;;998:2;995:1;992:9;989:80;;;1057:1;1052:2;1047;1039:6;1035:15;1031:24;1024:35;989:80;1088:6;14:1086;-1:-1:-1;;;;;;;;14:1086:64:o;1105:359::-;1192:6;1200;1253:2;1241:9;1232:7;1228:23;1224:32;1221:52;;;1269:1;1266;1259:12;1221:52;1292:16;;1351:2;1336:18;;1330:25;1292:16;;-1:-1:-1;;;;;;1384:31:64;;1374:42;;1364:70;;1430:1;1427;1420:12;1364:70;1453:5;1443:15;;;1105:359;;;;;:::o;1469:127::-;1530:10;1525:3;1521:20;1518:1;1511:31;1561:4;1558:1;1551:15;1585:4;1582:1;1575:15;1469:127;102:244:7;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@anotherConfigValue_2116": {
                  "entryPoint": null,
                  "id": 2116,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@configValue_2114": {
                  "entryPoint": null,
                  "id": 2114,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:424:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "115:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "125:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "137:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "148:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "133:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "133:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "125:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "167:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "182:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "190:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "178:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "178:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "160:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "160:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "160:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "84:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "95:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "106:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "346:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "356:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "368:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "379:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "364:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "364:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "356:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "398:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "409:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "391:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "391:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "391:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "315:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "326:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "337:4:64",
                            "type": ""
                          }
                        ],
                        "src": "245:177:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "2114": [
                  {
                    "length": 32,
                    "start": 58
                  }
                ],
                "2116": [
                  {
                    "length": 32,
                    "start": 115
                  }
                ]
              },
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b506004361060315760003560e01c80626c51be146036578063073d911f14606f575b600080fd5b605c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b60957f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001606656fea26469706673582212207a2c90231de8afc8a1f09c6c51267d9c3d6964c890f9187b390d7caf4e30016864736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x31 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0x6C51BE EQ PUSH1 0x36 JUMPI DUP1 PUSH4 0x73D911F EQ PUSH1 0x6F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x5C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x95 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x66 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH27 0x2C90231DE8AFC8A1F09C6C51267D9C3D6964C890F9187B390D7CAF 0x4E ADDRESS ADD PUSH9 0x64736F6C6343000807 STOP CALLER ",
              "sourceMap": "102:244:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;130:36;;;;;;;;391:25:64;;;379:2;364:18;130:36:7;;;;;;;;172:43;;;;;;;;190:42:64;178:55;;;160:74;;148:2;133:18;172:43:7;14:226:64"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "47800",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "anotherConfigValue()": "infinite",
                "configValue()": "infinite"
              }
            },
            "methodIdentifiers": {
              "anotherConfigValue()": "073d911f",
              "configValue()": "006c51be"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"anotherConfigValue\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"configValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Mudit Gupta\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/examples/PoolTemplate.sol\":\"PoolTemplate\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/examples/PoolTemplate.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8.2;\\n\\n/**\\n * @author Mudit Gupta\\n */\\ncontract PoolTemplate {\\n    uint256 public immutable configValue;\\n    address public immutable anotherConfigValue;\\n\\n    constructor(bytes memory _data) {\\n        (configValue, anotherConfigValue) = abi.decode(_data, (uint256, address));\\n    }\\n}\\n\",\"keccak256\":\"0x11f471a6ada4c007a29833139d551c6b74de192c4c14bbcf20c7595231d69553\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/interfaces/IBentoBoxMinimal.sol": {
        "IBentoBoxMinimal": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "share",
                  "type": "uint256"
                }
              ],
              "name": "deposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "shareOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "registerProtocol",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "user",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "masterContract",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "setMasterContractApproval",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "share",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "roundUp",
                  "type": "bool"
                }
              ],
              "name": "toAmount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "roundUp",
                  "type": "bool"
                }
              ],
              "name": "toShare",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "share",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "name": "totals",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "uint128",
                      "name": "elastic",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint128",
                      "name": "base",
                      "type": "uint128"
                    }
                  ],
                  "internalType": "struct Rebase",
                  "name": "total",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "share",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token_",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "share",
                  "type": "uint256"
                }
              ],
              "name": "withdraw",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "shareOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "`token` is aliased as `address` from `IERC20` for simplicity.",
            "kind": "dev",
            "methods": {
              "deposit(address,address,address,uint256,uint256)": {
                "params": {
                  "amount": "Token amount in native representation to deposit.",
                  "from": "which account to pull the tokens.",
                  "share": "Token amount represented in shares to deposit. Takes precedence over `amount`.",
                  "to": "which account to push the tokens.",
                  "token": "The ERC-20 token to deposit."
                },
                "returns": {
                  "amountOut": "The amount deposited.",
                  "shareOut": "The deposited amount represented in shares."
                }
              },
              "setMasterContractApproval(address,address,bool,uint8,bytes32,bytes32)": {
                "details": "Approves users' BentoBox assets to a \"master\" contract."
              },
              "toAmount(address,uint256,bool)": {
                "details": "Helper function to represent shares back into the `token` amount.",
                "params": {
                  "roundUp": "If the result should be rounded up.",
                  "share": "The amount of shares.",
                  "token": "The ERC-20 token."
                },
                "returns": {
                  "amount": "The share amount back into native representation."
                }
              },
              "toShare(address,uint256,bool)": {
                "details": "Helper function to represent an `amount` of `token` in shares.",
                "params": {
                  "amount": "The `token` amount.",
                  "roundUp": "If the result `share` should be rounded up.",
                  "token": "The ERC-20 token."
                },
                "returns": {
                  "share": "The token amount represented in shares."
                }
              },
              "totals(address)": {
                "details": "Reads the Rebase `totals`from storage for a given token"
              },
              "transfer(address,address,address,uint256)": {
                "params": {
                  "from": "which user to pull the tokens.",
                  "share": "The amount of `token` in shares.",
                  "to": "which user to push the tokens.",
                  "token": "The ERC-20 token to transfer."
                }
              },
              "withdraw(address,address,address,uint256,uint256)": {
                "params": {
                  "amount": "of tokens. Either one of `amount` or `share` needs to be supplied.",
                  "from": "which user to pull the tokens.",
                  "share": "Like above, but `share` takes precedence over `amount`.",
                  "to": "which user to push the tokens.",
                  "token_": "The ERC-20 token to withdraw."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "balanceOf(address,address)": "f7888aec",
              "deposit(address,address,address,uint256,uint256)": "02b9446c",
              "registerProtocol()": "aee4d1b2",
              "setMasterContractApproval(address,address,bool,uint8,bytes32,bytes32)": "c0a47c93",
              "toAmount(address,uint256,bool)": "56623118",
              "toShare(address,uint256,bool)": "da5139ca",
              "totals(address)": "4ffe34db",
              "transfer(address,address,address,uint256)": "f18d03cc",
              "withdraw(address,address,address,uint256,uint256)": "97da6d30"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"share\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shareOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerProtocol\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"masterContract\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"setMasterContractApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"share\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"roundUp\",\"type\":\"bool\"}],\"name\":\"toAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"roundUp\",\"type\":\"bool\"}],\"name\":\"toShare\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"share\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"totals\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"elastic\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"base\",\"type\":\"uint128\"}],\"internalType\":\"struct Rebase\",\"name\":\"total\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"share\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"share\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shareOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"`token` is aliased as `address` from `IERC20` for simplicity.\",\"kind\":\"dev\",\"methods\":{\"deposit(address,address,address,uint256,uint256)\":{\"params\":{\"amount\":\"Token amount in native representation to deposit.\",\"from\":\"which account to pull the tokens.\",\"share\":\"Token amount represented in shares to deposit. Takes precedence over `amount`.\",\"to\":\"which account to push the tokens.\",\"token\":\"The ERC-20 token to deposit.\"},\"returns\":{\"amountOut\":\"The amount deposited.\",\"shareOut\":\"The deposited amount represented in shares.\"}},\"setMasterContractApproval(address,address,bool,uint8,bytes32,bytes32)\":{\"details\":\"Approves users' BentoBox assets to a \\\"master\\\" contract.\"},\"toAmount(address,uint256,bool)\":{\"details\":\"Helper function to represent shares back into the `token` amount.\",\"params\":{\"roundUp\":\"If the result should be rounded up.\",\"share\":\"The amount of shares.\",\"token\":\"The ERC-20 token.\"},\"returns\":{\"amount\":\"The share amount back into native representation.\"}},\"toShare(address,uint256,bool)\":{\"details\":\"Helper function to represent an `amount` of `token` in shares.\",\"params\":{\"amount\":\"The `token` amount.\",\"roundUp\":\"If the result `share` should be rounded up.\",\"token\":\"The ERC-20 token.\"},\"returns\":{\"share\":\"The token amount represented in shares.\"}},\"totals(address)\":{\"details\":\"Reads the Rebase `totals`from storage for a given token\"},\"transfer(address,address,address,uint256)\":{\"params\":{\"from\":\"which user to pull the tokens.\",\"share\":\"The amount of `token` in shares.\",\"to\":\"which user to push the tokens.\",\"token\":\"The ERC-20 token to transfer.\"}},\"withdraw(address,address,address,uint256,uint256)\":{\"params\":{\"amount\":\"of tokens. Either one of `amount` or `share` needs to be supplied.\",\"from\":\"which user to pull the tokens.\",\"share\":\"Like above, but `share` takes precedence over `amount`.\",\"to\":\"which user to push the tokens.\",\"token_\":\"The ERC-20 token to withdraw.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"balanceOf(address,address)\":{\"notice\":\"Balance per ERC-20 token per account in shares.\"},\"deposit(address,address,address,uint256,uint256)\":{\"notice\":\"Deposit an amount of `token` represented in either `amount` or `share`.\"},\"registerProtocol()\":{\"notice\":\"Registers this contract so that users can approve it for BentoBox.\"},\"transfer(address,address,address,uint256)\":{\"notice\":\"Transfer shares from a user account to another one.\"},\"withdraw(address,address,address,uint256,uint256)\":{\"notice\":\"Withdraws an amount of `token` from a user account.\"}},\"notice\":\"Minimal BentoBox vault interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":\"IBentoBoxMinimal\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "balanceOf(address,address)": {
                "notice": "Balance per ERC-20 token per account in shares."
              },
              "deposit(address,address,address,uint256,uint256)": {
                "notice": "Deposit an amount of `token` represented in either `amount` or `share`."
              },
              "registerProtocol()": {
                "notice": "Registers this contract so that users can approve it for BentoBox."
              },
              "transfer(address,address,address,uint256)": {
                "notice": "Transfer shares from a user account to another one."
              },
              "withdraw(address,address,address,uint256,uint256)": {
                "notice": "Withdraws an amount of `token` from a user account."
              }
            },
            "notice": "Minimal BentoBox vault interface.",
            "version": 1
          }
        }
      },
      "contracts/interfaces/IConstantProductPool.sol": {
        "IConstantProductPool": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenIn",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOut",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "name": "Swap",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPool.TokenAmount[]",
                  "name": "withdrawnAmounts",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burnSingle",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "flashSwap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "finalAmountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "getAmountIn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "finalAmountIn",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "getAmountOut",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "finalAmountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAssets",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getNativeReserves",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_nativeReserve0",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_nativeReserve1",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "",
                  "type": "uint32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolIdentifier",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "swap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "finalAmountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "burn(bytes)": {
                "details": "The input LP tokens must've already been sent to the pool.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "withdrawnAmounts": "The amount of various output tokens that were sent to the user."
                }
              },
              "burnSingle(bytes)": {
                "details": "The input LP tokens must've already been sent to the pool.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "amountOut": "The amount of output tokens that were sent to the user."
                }
              },
              "flashSwap(bytes)": {
                "details": "This function allows borrowing the output tokens and sending the input tokens in the callback.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "finalAmountOut": "The amount of output tokens that were sent to the user."
                }
              },
              "getAmountIn(bytes)": {
                "details": "The pool does not need to include a trade simulator directly in itself - it can use a library.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "finalAmountIn": "The amount of input tokens that are required from the user if the trade is executed."
                }
              },
              "getAmountOut(bytes)": {
                "details": "The pool does not need to include a trade simulator directly in itself - it can use a library.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "finalAmountOut": "The amount of output tokens that will be sent to the user if the trade is executed."
                }
              },
              "getAssets()": {
                "returns": {
                  "_0": "An array of tokens supported by the pool."
                }
              },
              "mint(bytes)": {
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "liquidity": "The amount of liquidity tokens that were minted for the user."
                }
              },
              "poolIdentifier()": {
                "returns": {
                  "_0": "A unique identifier for the pool type."
                }
              },
              "swap(bytes)": {
                "details": "The input tokens must've already been sent to the pool.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "finalAmountOut": "The amount of output tokens that were sent to the user."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "burn(bytes)": "2a07b6c7",
              "burnSingle(bytes)": "af8c09bf",
              "flashSwap(bytes)": "053da1c8",
              "getAmountIn(bytes)": "499a3c50",
              "getAmountOut(bytes)": "a8f1f52e",
              "getAssets()": "67e4ac2c",
              "getNativeReserves()": "65dfc767",
              "mint(bytes)": "7ba0e2e7",
              "poolIdentifier()": "a69840a8",
              "swap(bytes)": "627dd56a",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burn\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPool.TokenAmount[]\",\"name\":\"withdrawnAmounts\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burnSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"finalAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"finalAmountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"finalAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAssets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNativeReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_nativeReserve0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_nativeReserve1\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolIdentifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"finalAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"burn(bytes)\":{\"details\":\"The input LP tokens must've already been sent to the pool.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"withdrawnAmounts\":\"The amount of various output tokens that were sent to the user.\"}},\"burnSingle(bytes)\":{\"details\":\"The input LP tokens must've already been sent to the pool.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"amountOut\":\"The amount of output tokens that were sent to the user.\"}},\"flashSwap(bytes)\":{\"details\":\"This function allows borrowing the output tokens and sending the input tokens in the callback.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"finalAmountOut\":\"The amount of output tokens that were sent to the user.\"}},\"getAmountIn(bytes)\":{\"details\":\"The pool does not need to include a trade simulator directly in itself - it can use a library.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"finalAmountIn\":\"The amount of input tokens that are required from the user if the trade is executed.\"}},\"getAmountOut(bytes)\":{\"details\":\"The pool does not need to include a trade simulator directly in itself - it can use a library.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"finalAmountOut\":\"The amount of output tokens that will be sent to the user if the trade is executed.\"}},\"getAssets()\":{\"returns\":{\"_0\":\"An array of tokens supported by the pool.\"}},\"mint(bytes)\":{\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"liquidity\":\"The amount of liquidity tokens that were minted for the user.\"}},\"poolIdentifier()\":{\"returns\":{\"_0\":\"A unique identifier for the pool type.\"}},\"swap(bytes)\":{\"details\":\"The input tokens must've already been sent to the pool.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"finalAmountOut\":\"The amount of output tokens that were sent to the user.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(bytes)\":{\"notice\":\"Burns liquidity tokens.\"},\"burnSingle(bytes)\":{\"notice\":\"Burns liquidity tokens for a single output token.\"},\"flashSwap(bytes)\":{\"notice\":\"Executes a swap from one token to another with a callback.\"},\"getAmountIn(bytes)\":{\"notice\":\"Simulates a trade and returns the expected output.\"},\"getAmountOut(bytes)\":{\"notice\":\"Simulates a trade and returns the expected output.\"},\"mint(bytes)\":{\"notice\":\"Mints liquidity tokens.\"},\"swap(bytes)\":{\"notice\":\"Executes a swap from one token to another.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IConstantProductPool.sol\":\"IConstantProductPool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IConstantProductPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"./IPool.sol\\\";\\n\\ninterface IConstantProductPool is IPool, IERC20 {\\n    function getNativeReserves()\\n        external\\n        view\\n        returns (\\n            uint256 _nativeReserve0,\\n            uint256 _nativeReserve1,\\n            uint32\\n        );\\n}\\n\",\"keccak256\":\"0x4fb63fe421b21adee3d8bb37e7a022d33c635618f3d3e346a9be34ff73f4c5d8\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @dev Use a library or custom safeTransfer{From} functions when dealing with unknown tokens!\\ninterface IERC20 {\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    function totalSupply() external view returns (uint256);\\n\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    function approve(address spender, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x41da4ec4920467246a08c3d7d653f1327e8508e6bc29e946232cf87cea7e283f\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "burn(bytes)": {
                "notice": "Burns liquidity tokens."
              },
              "burnSingle(bytes)": {
                "notice": "Burns liquidity tokens for a single output token."
              },
              "flashSwap(bytes)": {
                "notice": "Executes a swap from one token to another with a callback."
              },
              "getAmountIn(bytes)": {
                "notice": "Simulates a trade and returns the expected output."
              },
              "getAmountOut(bytes)": {
                "notice": "Simulates a trade and returns the expected output."
              },
              "mint(bytes)": {
                "notice": "Mints liquidity tokens."
              },
              "swap(bytes)": {
                "notice": "Executes a swap from one token to another."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/interfaces/IERC20.sol": {
        "IERC20": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Use a library or custom safeTransfer{From} functions when dealing with unknown tokens!",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Use a library or custom safeTransfer{From} functions when dealing with unknown tokens!\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @dev Use a library or custom safeTransfer{From} functions when dealing with unknown tokens!\\ninterface IERC20 {\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    function totalSupply() external view returns (uint256);\\n\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    function approve(address spender, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x41da4ec4920467246a08c3d7d653f1327e8508e6bc29e946232cf87cea7e283f\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/interfaces/IMasterDeployer.sol": {
        "IMasterDeployer": {
          "abi": [
            {
              "inputs": [],
              "name": "barFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFeeTo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "factory",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "migrator",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "barFee()": "c14ad802",
              "barFeeTo()": "0c0a0cd2",
              "bento()": "4da31827",
              "deployPool(address,bytes)": "250558dc",
              "migrator()": "7cd07e47",
              "pools(address)": "a4063dbc"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"barFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"barFeeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bento\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"deployData\",\"type\":\"bytes\"}],\"name\":\"deployPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"migrator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"name\":\"pools\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Trident pool deployer interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IMasterDeployer.sol\":\"IMasterDeployer\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Trident pool deployer interface.",
            "version": 1
          }
        }
      },
      "contracts/interfaces/IPool.sol": {
        "IPool": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenIn",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOut",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "name": "Swap",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPool.TokenAmount[]",
                  "name": "withdrawnAmounts",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burnSingle",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "flashSwap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "finalAmountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "getAmountIn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "finalAmountIn",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "getAmountOut",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "finalAmountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAssets",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolIdentifier",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "swap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "finalAmountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "events": {
              "Swap(address,address,address,uint256,uint256)": {
                "details": "This event must be emitted on all swaps."
              }
            },
            "kind": "dev",
            "methods": {
              "burn(bytes)": {
                "details": "The input LP tokens must've already been sent to the pool.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "withdrawnAmounts": "The amount of various output tokens that were sent to the user."
                }
              },
              "burnSingle(bytes)": {
                "details": "The input LP tokens must've already been sent to the pool.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "amountOut": "The amount of output tokens that were sent to the user."
                }
              },
              "flashSwap(bytes)": {
                "details": "This function allows borrowing the output tokens and sending the input tokens in the callback.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "finalAmountOut": "The amount of output tokens that were sent to the user."
                }
              },
              "getAmountIn(bytes)": {
                "details": "The pool does not need to include a trade simulator directly in itself - it can use a library.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "finalAmountIn": "The amount of input tokens that are required from the user if the trade is executed."
                }
              },
              "getAmountOut(bytes)": {
                "details": "The pool does not need to include a trade simulator directly in itself - it can use a library.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "finalAmountOut": "The amount of output tokens that will be sent to the user if the trade is executed."
                }
              },
              "getAssets()": {
                "returns": {
                  "_0": "An array of tokens supported by the pool."
                }
              },
              "mint(bytes)": {
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "liquidity": "The amount of liquidity tokens that were minted for the user."
                }
              },
              "poolIdentifier()": {
                "returns": {
                  "_0": "A unique identifier for the pool type."
                }
              },
              "swap(bytes)": {
                "details": "The input tokens must've already been sent to the pool.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "finalAmountOut": "The amount of output tokens that were sent to the user."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "burn(bytes)": "2a07b6c7",
              "burnSingle(bytes)": "af8c09bf",
              "flashSwap(bytes)": "053da1c8",
              "getAmountIn(bytes)": "499a3c50",
              "getAmountOut(bytes)": "a8f1f52e",
              "getAssets()": "67e4ac2c",
              "mint(bytes)": "7ba0e2e7",
              "poolIdentifier()": "a69840a8",
              "swap(bytes)": "627dd56a"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burn\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPool.TokenAmount[]\",\"name\":\"withdrawnAmounts\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burnSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"finalAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"finalAmountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"finalAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAssets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolIdentifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"finalAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Swap(address,address,address,uint256,uint256)\":{\"details\":\"This event must be emitted on all swaps.\"}},\"kind\":\"dev\",\"methods\":{\"burn(bytes)\":{\"details\":\"The input LP tokens must've already been sent to the pool.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"withdrawnAmounts\":\"The amount of various output tokens that were sent to the user.\"}},\"burnSingle(bytes)\":{\"details\":\"The input LP tokens must've already been sent to the pool.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"amountOut\":\"The amount of output tokens that were sent to the user.\"}},\"flashSwap(bytes)\":{\"details\":\"This function allows borrowing the output tokens and sending the input tokens in the callback.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"finalAmountOut\":\"The amount of output tokens that were sent to the user.\"}},\"getAmountIn(bytes)\":{\"details\":\"The pool does not need to include a trade simulator directly in itself - it can use a library.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"finalAmountIn\":\"The amount of input tokens that are required from the user if the trade is executed.\"}},\"getAmountOut(bytes)\":{\"details\":\"The pool does not need to include a trade simulator directly in itself - it can use a library.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"finalAmountOut\":\"The amount of output tokens that will be sent to the user if the trade is executed.\"}},\"getAssets()\":{\"returns\":{\"_0\":\"An array of tokens supported by the pool.\"}},\"mint(bytes)\":{\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"liquidity\":\"The amount of liquidity tokens that were minted for the user.\"}},\"poolIdentifier()\":{\"returns\":{\"_0\":\"A unique identifier for the pool type.\"}},\"swap(bytes)\":{\"details\":\"The input tokens must've already been sent to the pool.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"finalAmountOut\":\"The amount of output tokens that were sent to the user.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(bytes)\":{\"notice\":\"Burns liquidity tokens.\"},\"burnSingle(bytes)\":{\"notice\":\"Burns liquidity tokens for a single output token.\"},\"flashSwap(bytes)\":{\"notice\":\"Executes a swap from one token to another with a callback.\"},\"getAmountIn(bytes)\":{\"notice\":\"Simulates a trade and returns the expected output.\"},\"getAmountOut(bytes)\":{\"notice\":\"Simulates a trade and returns the expected output.\"},\"mint(bytes)\":{\"notice\":\"Mints liquidity tokens.\"},\"swap(bytes)\":{\"notice\":\"Executes a swap from one token to another.\"}},\"notice\":\"Trident pool interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IPool.sol\":\"IPool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "burn(bytes)": {
                "notice": "Burns liquidity tokens."
              },
              "burnSingle(bytes)": {
                "notice": "Burns liquidity tokens for a single output token."
              },
              "flashSwap(bytes)": {
                "notice": "Executes a swap from one token to another with a callback."
              },
              "getAmountIn(bytes)": {
                "notice": "Simulates a trade and returns the expected output."
              },
              "getAmountOut(bytes)": {
                "notice": "Simulates a trade and returns the expected output."
              },
              "mint(bytes)": {
                "notice": "Mints liquidity tokens."
              },
              "swap(bytes)": {
                "notice": "Executes a swap from one token to another."
              }
            },
            "notice": "Trident pool interface.",
            "version": 1
          }
        }
      },
      "contracts/interfaces/IPoolFactory.sol": {
        "IPoolFactory": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "data",
                  "type": "bytes32"
                }
              ],
              "name": "configAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "configAddress(bytes32)": "f6ab6d99",
              "deployPool(bytes)": "27c3cae1"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"data\",\"type\":\"bytes32\"}],\"name\":\"configAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_deployData\",\"type\":\"bytes\"}],\"name\":\"deployPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Trident pool deployment interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IPoolFactory.sol\":\"IPoolFactory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IPoolFactory.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployment interface.\\ninterface IPoolFactory {\\n    function deployPool(bytes calldata _deployData) external returns (address pool);\\n\\n    function configAddress(bytes32 data) external returns (address pool);\\n}\\n\",\"keccak256\":\"0x03b9677a7914f97ca3ae57deb690cb80d0f1ef4d3541573b4dee6d3cebd5df2e\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Trident pool deployment interface.",
            "version": 1
          }
        }
      },
      "contracts/interfaces/ITridentCallee.sol": {
        "ITridentCallee": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "tridentMintCallback",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "tridentSwapCallback",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "tridentMintCallback(bytes)": "ced10b49",
              "tridentSwapCallback(bytes)": "bd50c7b1"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"tridentMintCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"tridentSwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Trident pool callback interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/ITridentCallee.sol\":\"ITridentCallee\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ITridentCallee.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool callback interface.\\ninterface ITridentCallee {\\n    function tridentSwapCallback(bytes calldata data) external;\\n\\n    function tridentMintCallback(bytes calldata data) external;\\n}\\n\",\"keccak256\":\"0x256e838362a3064201b37b3b7c08bc1421b173a6fea633176123f0b827b868c9\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Trident pool callback interface.",
            "version": 1
          }
        }
      },
      "contracts/interfaces/ITridentNFT.sol": {
        "ITridentNFT": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "ownerOf(uint256)": "6352211e"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Trident NFT interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/ITridentNFT.sol\":\"ITridentNFT\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ITridentNFT.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident NFT interface.\\ninterface ITridentNFT {\\n    function ownerOf(uint256) external view returns (address);\\n}\\n\",\"keccak256\":\"0x201d5d09d03fc77feab8fceddd2d4fe9c619ccf048e89dd121b880764e31dd8b\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Trident NFT interface.",
            "version": 1
          }
        }
      },
      "contracts/interfaces/ITridentRouter.sol": {
        "ITridentRouter": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Trident pool router interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/ITridentRouter.sol\":\"ITridentRouter\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/ITridentRouter.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool router interface.\\ninterface ITridentRouter {\\n    struct Path {\\n        address pool;\\n        bytes data;\\n    }\\n\\n    struct ExactInputSingleParams {\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n        address pool;\\n        address tokenIn;\\n        bytes data;\\n    }\\n\\n    struct ExactInputParams {\\n        address tokenIn;\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n        Path[] path;\\n    }\\n\\n    struct TokenInput {\\n        address token;\\n        bool native;\\n        uint256 amount;\\n    }\\n\\n    struct InitialPath {\\n        address tokenIn;\\n        address pool;\\n        bool native;\\n        uint256 amount;\\n        bytes data;\\n    }\\n\\n    struct PercentagePath {\\n        address tokenIn;\\n        address pool;\\n        uint64 balancePercentage; // Multiplied by 10^6. 100% = 100_000_000\\n        bytes data;\\n    }\\n\\n    struct Output {\\n        address token;\\n        address to;\\n        bool unwrapBento;\\n        uint256 minAmount;\\n    }\\n\\n    struct ComplexPathParams {\\n        InitialPath[] initialPath;\\n        PercentagePath[] percentagePath;\\n        Output[] output;\\n    }\\n}\\n\",\"keccak256\":\"0x40f1af6b213ff8827d515460f9057eb87ddc35d8020501f727d229ea239cbf24\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Trident pool router interface.",
            "version": 1
          }
        }
      },
      "contracts/interfaces/IUniswapV2Minimal.sol": {
        "IUniswapV2Minimal": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount0",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount1",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token0",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token1",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "burn(address)": "89afcb44",
              "token0()": "0dfe1681",
              "token1()": "d21220a7",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Minimal Uniswap V2 LP interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IUniswapV2Minimal.sol\":\"IUniswapV2Minimal\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @dev Use a library or custom safeTransfer{From} functions when dealing with unknown tokens!\\ninterface IERC20 {\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    function totalSupply() external view returns (uint256);\\n\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    function approve(address spender, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x41da4ec4920467246a08c3d7d653f1327e8508e6bc29e946232cf87cea7e283f\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IUniswapV2Minimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\n\\n/// @notice Minimal Uniswap V2 LP interface.\\ninterface IUniswapV2Minimal is IERC20 {\\n    function token0() external view returns (address);\\n\\n    function token1() external view returns (address);\\n\\n    function burn(address to) external returns (uint256 amount0, uint256 amount1);\\n}\\n\",\"keccak256\":\"0x674f8b036659f1c29d1c5a7e85f3067949f3a3239bc5cf17f476dc83721a0279\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Minimal Uniswap V2 LP interface.",
            "version": 1
          }
        }
      },
      "contracts/interfaces/IWhiteListManager.sol": {
        "IWhiteListManager": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "whitelistedAccounts",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "whitelistedAccounts(address,address)": "1472c271"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"whitelistedAccounts\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Trident franchised pool whitelist manager interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IWhiteListManager.sol\":\"IWhiteListManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IWhiteListManager.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident franchised pool whitelist manager interface.\\ninterface IWhiteListManager {\\n    function whitelistedAccounts(address operator, address account) external returns (bool);\\n}\\n\",\"keccak256\":\"0x8de295afb9c76132947e2fd4f120bc437ee2c6f41fda1db2bcf6074b977d6df8\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Trident franchised pool whitelist manager interface.",
            "version": 1
          }
        }
      },
      "contracts/interfaces/concentratedPool/IConcentratedLiquidityPool.sol": {
        "IConcentratedLiquidityPool": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenIn",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOut",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "name": "Swap",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPool.TokenAmount[]",
                  "name": "withdrawnAmounts",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burnSingle",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "int24",
                  "name": "",
                  "type": "int24"
                },
                {
                  "internalType": "int24",
                  "name": "",
                  "type": "int24"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "name": "collect",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount0fees",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount1fees",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "int24",
                  "name": "lower",
                  "type": "int24"
                },
                {
                  "internalType": "int24",
                  "name": "upper",
                  "type": "int24"
                },
                {
                  "internalType": "uint128",
                  "name": "amount",
                  "type": "uint128"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "unwrapBento",
                  "type": "bool"
                }
              ],
              "name": "decreaseLiquidity",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPool.TokenAmount[]",
                  "name": "withdrawnAmounts",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPool.TokenAmount[]",
                  "name": "feesWithdrawn",
                  "type": "tuple[]"
                },
                {
                  "internalType": "uint256",
                  "name": "oldLiquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "feeGrowthGlobal0",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "feeGrowthGlobal1",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "flashSwap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "finalAmountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "getAmountIn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "finalAmountIn",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "getAmountOut",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "finalAmountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAssets",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getImmutables",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "_MAX_TICK_LIQUIDITY",
                  "type": "uint128"
                },
                {
                  "internalType": "uint24",
                  "name": "_tickSpacing",
                  "type": "uint24"
                },
                {
                  "internalType": "uint24",
                  "name": "_swapFee",
                  "type": "uint24"
                },
                {
                  "internalType": "address",
                  "name": "_barFeeTo",
                  "type": "address"
                },
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "_bento",
                  "type": "address"
                },
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "_masterDeployer",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_token1",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getPriceAndNearestTicks",
              "outputs": [
                {
                  "internalType": "uint160",
                  "name": "_price",
                  "type": "uint160"
                },
                {
                  "internalType": "int24",
                  "name": "_nearestTick",
                  "type": "int24"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getReserves",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "_reserve0",
                  "type": "uint128"
                },
                {
                  "internalType": "uint128",
                  "name": "_reserve1",
                  "type": "uint128"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getSecondsGrowthAndLastObservation",
              "outputs": [
                {
                  "internalType": "uint160",
                  "name": "_secondGrowthGlobal",
                  "type": "uint160"
                },
                {
                  "internalType": "uint32",
                  "name": "_lastObservation",
                  "type": "uint32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getTokenProtocolFees",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "_token0ProtocolFee",
                  "type": "uint128"
                },
                {
                  "internalType": "uint128",
                  "name": "_token1ProtocolFee",
                  "type": "uint128"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolIdentifier",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price",
              "outputs": [
                {
                  "internalType": "uint160",
                  "name": "",
                  "type": "uint160"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "int24",
                  "name": "lowerTick",
                  "type": "int24"
                },
                {
                  "internalType": "int24",
                  "name": "upperTick",
                  "type": "int24"
                }
              ],
              "name": "rangeFeeGrowth",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "feeGrowthInside0",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "feeGrowthInside1",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "swap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "finalAmountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "int24",
                  "name": "_tick",
                  "type": "int24"
                }
              ],
              "name": "ticks",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "int24",
                      "name": "previousTick",
                      "type": "int24"
                    },
                    {
                      "internalType": "int24",
                      "name": "nextTick",
                      "type": "int24"
                    },
                    {
                      "internalType": "uint128",
                      "name": "liquidity",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint256",
                      "name": "feeGrowthOutside0",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "feeGrowthOutside1",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint160",
                      "name": "secondsGrowthOutside",
                      "type": "uint160"
                    }
                  ],
                  "internalType": "struct Ticks.Tick",
                  "name": "tick",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token0",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token1",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "burn(bytes)": {
                "details": "The input LP tokens must've already been sent to the pool.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "withdrawnAmounts": "The amount of various output tokens that were sent to the user."
                }
              },
              "burnSingle(bytes)": {
                "details": "The input LP tokens must've already been sent to the pool.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "amountOut": "The amount of output tokens that were sent to the user."
                }
              },
              "flashSwap(bytes)": {
                "details": "This function allows borrowing the output tokens and sending the input tokens in the callback.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "finalAmountOut": "The amount of output tokens that were sent to the user."
                }
              },
              "getAmountIn(bytes)": {
                "details": "The pool does not need to include a trade simulator directly in itself - it can use a library.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "finalAmountIn": "The amount of input tokens that are required from the user if the trade is executed."
                }
              },
              "getAmountOut(bytes)": {
                "details": "The pool does not need to include a trade simulator directly in itself - it can use a library.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "finalAmountOut": "The amount of output tokens that will be sent to the user if the trade is executed."
                }
              },
              "getAssets()": {
                "returns": {
                  "_0": "An array of tokens supported by the pool."
                }
              },
              "mint(bytes)": {
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "liquidity": "The amount of liquidity tokens that were minted for the user."
                }
              },
              "poolIdentifier()": {
                "returns": {
                  "_0": "A unique identifier for the pool type."
                }
              },
              "swap(bytes)": {
                "details": "The input tokens must've already been sent to the pool.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "finalAmountOut": "The amount of output tokens that were sent to the user."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "burn(bytes)": "2a07b6c7",
              "burnSingle(bytes)": "af8c09bf",
              "collect(int24,int24,address,bool)": "fb39d628",
              "decreaseLiquidity(int24,int24,uint128,address,bool)": "6289db82",
              "feeGrowthGlobal0()": "9da12096",
              "feeGrowthGlobal1()": "cf78756b",
              "flashSwap(bytes)": "053da1c8",
              "getAmountIn(bytes)": "499a3c50",
              "getAmountOut(bytes)": "a8f1f52e",
              "getAssets()": "67e4ac2c",
              "getImmutables()": "bcdb4dad",
              "getPriceAndNearestTicks()": "8c347f9b",
              "getReserves()": "0902f1ac",
              "getSecondsGrowthAndLastObservation()": "6d59d802",
              "getTokenProtocolFees()": "fb5d80b3",
              "mint(bytes)": "7ba0e2e7",
              "poolIdentifier()": "a69840a8",
              "price()": "a035b1fe",
              "rangeFeeGrowth(int24,int24)": "acfe88f8",
              "swap(bytes)": "627dd56a",
              "ticks(int24)": "f30dba93",
              "token0()": "0dfe1681",
              "token1()": "d21220a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burn\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPool.TokenAmount[]\",\"name\":\"withdrawnAmounts\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burnSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0fees\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1fees\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"unwrapBento\",\"type\":\"bool\"}],\"name\":\"decreaseLiquidity\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPool.TokenAmount[]\",\"name\":\"withdrawnAmounts\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPool.TokenAmount[]\",\"name\":\"feesWithdrawn\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"oldLiquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal0\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"finalAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"finalAmountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"finalAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAssets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getImmutables\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_MAX_TICK_LIQUIDITY\",\"type\":\"uint128\"},{\"internalType\":\"uint24\",\"name\":\"_tickSpacing\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"_swapFee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"_barFeeTo\",\"type\":\"address\"},{\"internalType\":\"contract IBentoBoxMinimal\",\"name\":\"_bento\",\"type\":\"address\"},{\"internalType\":\"contract IMasterDeployer\",\"name\":\"_masterDeployer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPriceAndNearestTicks\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"_price\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"_nearestTick\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_reserve0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"_reserve1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSecondsGrowthAndLastObservation\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"_secondGrowthGlobal\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"_lastObservation\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenProtocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_token0ProtocolFee\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"_token1ProtocolFee\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolIdentifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"lowerTick\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upperTick\",\"type\":\"int24\"}],\"name\":\"rangeFeeGrowth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"finalAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"_tick\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"components\":[{\"internalType\":\"int24\",\"name\":\"previousTick\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"nextTick\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"secondsGrowthOutside\",\"type\":\"uint160\"}],\"internalType\":\"struct Ticks.Tick\",\"name\":\"tick\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"burn(bytes)\":{\"details\":\"The input LP tokens must've already been sent to the pool.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"withdrawnAmounts\":\"The amount of various output tokens that were sent to the user.\"}},\"burnSingle(bytes)\":{\"details\":\"The input LP tokens must've already been sent to the pool.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"amountOut\":\"The amount of output tokens that were sent to the user.\"}},\"flashSwap(bytes)\":{\"details\":\"This function allows borrowing the output tokens and sending the input tokens in the callback.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"finalAmountOut\":\"The amount of output tokens that were sent to the user.\"}},\"getAmountIn(bytes)\":{\"details\":\"The pool does not need to include a trade simulator directly in itself - it can use a library.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"finalAmountIn\":\"The amount of input tokens that are required from the user if the trade is executed.\"}},\"getAmountOut(bytes)\":{\"details\":\"The pool does not need to include a trade simulator directly in itself - it can use a library.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"finalAmountOut\":\"The amount of output tokens that will be sent to the user if the trade is executed.\"}},\"getAssets()\":{\"returns\":{\"_0\":\"An array of tokens supported by the pool.\"}},\"mint(bytes)\":{\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"liquidity\":\"The amount of liquidity tokens that were minted for the user.\"}},\"poolIdentifier()\":{\"returns\":{\"_0\":\"A unique identifier for the pool type.\"}},\"swap(bytes)\":{\"details\":\"The input tokens must've already been sent to the pool.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"finalAmountOut\":\"The amount of output tokens that were sent to the user.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"burn(bytes)\":{\"notice\":\"Burns liquidity tokens.\"},\"burnSingle(bytes)\":{\"notice\":\"Burns liquidity tokens for a single output token.\"},\"flashSwap(bytes)\":{\"notice\":\"Executes a swap from one token to another with a callback.\"},\"getAmountIn(bytes)\":{\"notice\":\"Simulates a trade and returns the expected output.\"},\"getAmountOut(bytes)\":{\"notice\":\"Simulates a trade and returns the expected output.\"},\"mint(bytes)\":{\"notice\":\"Mints liquidity tokens.\"},\"swap(bytes)\":{\"notice\":\"Executes a swap from one token to another.\"}},\"notice\":\"Trident Concentrated Liquidity Pool interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/concentratedPool/IConcentratedLiquidityPool.sol\":\"IConcentratedLiquidityPool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/concentratedPool/IConcentratedLiquidityPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./../IPool.sol\\\";\\nimport \\\"./../IBentoBoxMinimal.sol\\\";\\nimport \\\"./../IMasterDeployer.sol\\\";\\nimport \\\"../../libraries/concentratedPool/Ticks.sol\\\";\\n\\n/// @notice Trident Concentrated Liquidity Pool interface.\\ninterface IConcentratedLiquidityPool is IPool {\\n    function price() external view returns (uint160);\\n\\n    function token0() external view returns (address);\\n\\n    function token1() external view returns (address);\\n\\n    function ticks(int24 _tick) external view returns (Ticks.Tick memory tick);\\n\\n    function feeGrowthGlobal0() external view returns (uint256);\\n\\n    function feeGrowthGlobal1() external view returns (uint256);\\n\\n    function rangeFeeGrowth(int24 lowerTick, int24 upperTick) external view returns (uint256 feeGrowthInside0, uint256 feeGrowthInside1);\\n\\n    function collect(\\n        int24,\\n        int24,\\n        address,\\n        bool\\n    ) external returns (uint256 amount0fees, uint256 amount1fees);\\n\\n    function decreaseLiquidity(\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        address recipient,\\n        bool unwrapBento\\n    )\\n        external\\n        returns (\\n            TokenAmount[] memory withdrawnAmounts,\\n            TokenAmount[] memory feesWithdrawn,\\n            uint256 oldLiquidity\\n        );\\n\\n    function getImmutables()\\n        external\\n        view\\n        returns (\\n            uint128 _MAX_TICK_LIQUIDITY,\\n            uint24 _tickSpacing,\\n            uint24 _swapFee,\\n            address _barFeeTo,\\n            IBentoBoxMinimal _bento,\\n            IMasterDeployer _masterDeployer,\\n            address _token0,\\n            address _token1\\n        );\\n\\n    function getPriceAndNearestTicks() external view returns (uint160 _price, int24 _nearestTick);\\n\\n    function getTokenProtocolFees() external view returns (uint128 _token0ProtocolFee, uint128 _token1ProtocolFee);\\n\\n    function getReserves() external view returns (uint128 _reserve0, uint128 _reserve1);\\n\\n    function getSecondsGrowthAndLastObservation() external view returns (uint160 _secondGrowthGlobal, uint32 _lastObservation);\\n}\\n\",\"keccak256\":\"0xf36fa12652a134eb2b8bfe1cde732ff493fd8b4afa3c290ccd12bb77f04af277\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/concentratedPool/TickMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Math library for computing sqrt price for ticks of size 1.0001, i.e., sqrt(1.0001^tick) as fixed point Q64.96 numbers - supports\\n/// prices between 2**-128 and 2**128 - 1.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/TickMath.sol.\\nlibrary TickMath {\\n    /// @dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128.\\n    int24 internal constant MIN_TICK = -887272;\\n    /// @dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128 - 1.\\n    int24 internal constant MAX_TICK = -MIN_TICK;\\n    /// @dev The minimum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MIN_TICK).\\n    uint160 internal constant MIN_SQRT_RATIO = 4295128739;\\n    /// @dev The maximum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MAX_TICK).\\n    uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;\\n\\n    error TickOutOfBounds();\\n    error PriceOutOfBounds();\\n\\n    /// @notice Calculates sqrt(1.0001^tick) * 2^96.\\n    /// @dev Throws if |tick| > max tick.\\n    /// @param tick The input tick for the above formula.\\n    /// @return sqrtPriceX96 Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\\n    /// at the given tick.\\n    function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {\\n        uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));\\n        if (absTick > uint256(uint24(MAX_TICK))) revert TickOutOfBounds();\\n        unchecked {\\n            uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;\\n            if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;\\n            if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;\\n            if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;\\n            if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;\\n            if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;\\n            if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;\\n            if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;\\n            if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;\\n            if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;\\n            if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;\\n            if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;\\n            if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;\\n            if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;\\n            if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;\\n            if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;\\n            if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;\\n            if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;\\n            if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;\\n            if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;\\n\\n            if (tick > 0) ratio = type(uint256).max / ratio;\\n            // This divides by 1<<32 rounding up to go from a Q128.128 to a Q128.96.\\n            // We then downcast because we know the result always fits within 160 bits due to our tick input constraint.\\n            // We round up in the division so getTickAtSqrtRatio of the output price is always consistent.\\n            sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));\\n        }\\n    }\\n\\n    /// @notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio.\\n    /// @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\\n    /// ever return.\\n    /// @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96.\\n    /// @return tick The greatest tick for which the ratio is less than or equal to the input ratio.\\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {\\n        // Second inequality must be < because the price can never reach the price at the max tick.\\n        if (sqrtPriceX96 < MIN_SQRT_RATIO || sqrtPriceX96 >= MAX_SQRT_RATIO) revert PriceOutOfBounds();\\n        uint256 ratio = uint256(sqrtPriceX96) << 32;\\n\\n        uint256 r = ratio;\\n        uint256 msb;\\n\\n        assembly {\\n            let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(5, gt(r, 0xFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(4, gt(r, 0xFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(3, gt(r, 0xFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(2, gt(r, 0xF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(1, gt(r, 0x3))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := gt(r, 0x1)\\n            msb := or(msb, f)\\n        }\\n        unchecked {\\n            if (msb >= 128) r = ratio >> (msb - 127);\\n            else r = ratio << (127 - msb);\\n\\n            int256 log_2 = (int256(msb) - 128) << 64;\\n\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(63, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(62, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(61, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(60, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(59, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(58, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(57, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(56, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(55, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(54, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(53, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(52, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(51, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(50, f))\\n            }\\n\\n            int256 log_sqrt10001 = log_2 * 255738958999603826347141; // 128.128 number.\\n\\n            int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);\\n            int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);\\n\\n            tick = tickLow == tickHi ? tickLow : getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x78121358a23f8c7f267cc4622b3cd0d94970018c637c61a9f2e99a0fa40b7bda\",\"license\":\"GPL-2.0-or-later\"},\"contracts/libraries/concentratedPool/Ticks.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./TickMath.sol\\\";\\nimport \\\"hardhat/console.sol\\\";\\n\\n/// @notice Tick management library for ranged liquidity.\\nlibrary Ticks {\\n    struct Tick {\\n        int24 previousTick;\\n        int24 nextTick;\\n        uint128 liquidity;\\n        uint256 feeGrowthOutside0; // Per unit of liquidity.\\n        uint256 feeGrowthOutside1;\\n        uint160 secondsGrowthOutside;\\n    }\\n\\n    function getMaxLiquidity(uint24 _tickSpacing) public pure returns (uint128) {\\n        return type(uint128).max / uint128(uint24(TickMath.MAX_TICK) / (2 * uint24(_tickSpacing)));\\n    }\\n\\n    function cross(\\n        mapping(int24 => Tick) storage ticks,\\n        int24 nextTickToCross,\\n        uint160 secondsGrowthGlobal,\\n        uint256 currentLiquidity,\\n        uint256 feeGrowthGlobalA,\\n        uint256 feeGrowthGlobalB,\\n        bool zeroForOne,\\n        uint24 tickSpacing\\n    ) internal returns (uint256, int24) {\\n        ticks[nextTickToCross].secondsGrowthOutside = secondsGrowthGlobal - ticks[nextTickToCross].secondsGrowthOutside;\\n\\n        if (zeroForOne) {\\n            // Moving forward through the linked list.\\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\\n                currentLiquidity -= ticks[nextTickToCross].liquidity; // todo wrap in unchecked {}\\n            } else {\\n                currentLiquidity += ticks[nextTickToCross].liquidity;\\n            }\\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside0;\\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside1;\\n            nextTickToCross = ticks[nextTickToCross].previousTick;\\n        } else {\\n            // Moving backwards through the linked list.\\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\\n                currentLiquidity += ticks[nextTickToCross].liquidity;\\n            } else {\\n                currentLiquidity -= ticks[nextTickToCross].liquidity;\\n            }\\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside1;\\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside0;\\n            nextTickToCross = ticks[nextTickToCross].nextTick;\\n        }\\n        return (currentLiquidity, nextTickToCross);\\n    }\\n\\n    function insert(\\n        mapping(int24 => Tick) storage ticks,\\n        uint256 feeGrowthGlobal0,\\n        uint256 feeGrowthGlobal1,\\n        uint160 secondsGrowthGlobal,\\n        int24 lowerOld,\\n        int24 lower,\\n        int24 upperOld,\\n        int24 upper,\\n        uint128 amount,\\n        int24 nearestTick,\\n        uint160 currentPrice\\n    ) public returns (int24) {\\n        require(lower < upper, \\\"WRONG_ORDER\\\");\\n        require(TickMath.MIN_TICK <= lower, \\\"LOWER_RANGE\\\");\\n        require(upper <= TickMath.MAX_TICK, \\\"UPPER_RANGE\\\");\\n\\n        {\\n            // Stack overflow.\\n            uint128 currentLowerLiquidity = ticks[lower].liquidity;\\n            if (currentLowerLiquidity != 0 || lower == TickMath.MIN_TICK) {\\n                // We are adding liquidity to an existing tick.\\n                ticks[lower].liquidity = currentLowerLiquidity + amount;\\n            } else {\\n                // We are inserting a new tick.\\n                Ticks.Tick storage old = ticks[lowerOld];\\n                int24 oldNextTick = old.nextTick;\\n\\n                require((old.liquidity != 0 || lowerOld == TickMath.MIN_TICK) && lowerOld < lower && lower < oldNextTick, \\\"LOWER_ORDER\\\");\\n\\n                if (lower <= nearestTick) {\\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\\n                } else {\\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, 0, 0, 0);\\n                }\\n\\n                old.nextTick = lower;\\n                ticks[oldNextTick].previousTick = lower;\\n            }\\n        }\\n\\n        uint128 currentUpperLiquidity = ticks[upper].liquidity;\\n        if (currentUpperLiquidity != 0 || upper == TickMath.MAX_TICK) {\\n            // We are adding liquidity to an existing tick.\\n            ticks[upper].liquidity = currentUpperLiquidity + amount;\\n        } else {\\n            // Inserting a new tick.\\n            Ticks.Tick storage old = ticks[upperOld];\\n            int24 oldNextTick = old.nextTick;\\n\\n            require(old.liquidity != 0 && oldNextTick > upper && upperOld < upper, \\\"UPPER_ORDER\\\");\\n\\n            if (upper <= nearestTick) {\\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\\n            } else {\\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, 0, 0, 0);\\n            }\\n            old.nextTick = upper;\\n            ticks[oldNextTick].previousTick = upper;\\n        }\\n\\n        int24 actualNearestTick = TickMath.getTickAtSqrtRatio(currentPrice);\\n\\n        if (nearestTick < upper && upper <= actualNearestTick) {\\n            nearestTick = upper;\\n        } else if (nearestTick < lower && lower <= actualNearestTick) {\\n            nearestTick = lower;\\n        }\\n\\n        return nearestTick;\\n    }\\n\\n    function remove(\\n        mapping(int24 => Tick) storage ticks,\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        int24 nearestTick\\n    ) public returns (int24) {\\n        Ticks.Tick storage current = ticks[lower];\\n\\n        if (lower != TickMath.MIN_TICK && current.liquidity == amount) {\\n            // Delete lower tick.\\n            Ticks.Tick storage previous = ticks[current.previousTick];\\n            Ticks.Tick storage next = ticks[current.nextTick];\\n\\n            previous.nextTick = current.nextTick;\\n            next.previousTick = current.previousTick;\\n\\n            if (nearestTick == lower) nearestTick = current.previousTick;\\n\\n            delete ticks[lower];\\n        } else {\\n            unchecked {\\n                current.liquidity -= amount;\\n            }\\n        }\\n\\n        current = ticks[upper];\\n\\n        if (upper != TickMath.MAX_TICK && current.liquidity == amount) {\\n            // Delete upper tick.\\n            Ticks.Tick storage previous = ticks[current.previousTick];\\n            Ticks.Tick storage next = ticks[current.nextTick];\\n\\n            previous.nextTick = current.nextTick;\\n            next.previousTick = current.previousTick;\\n\\n            if (nearestTick == upper) nearestTick = current.previousTick;\\n\\n            delete ticks[upper];\\n        } else {\\n            unchecked {\\n                current.liquidity -= amount;\\n            }\\n        }\\n\\n        return nearestTick;\\n    }\\n}\\n\",\"keccak256\":\"0x3c5bb30d7769f72aad064ab482c1237a794fd1e16fc85c444255227cf93b65d2\",\"license\":\"GPL-2.0-or-later\"},\"hardhat/console.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >= 0.4.22 <0.9.0;\\n\\nlibrary console {\\n\\taddress constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);\\n\\n\\tfunction _sendLogPayload(bytes memory payload) private view {\\n\\t\\tuint256 payloadLength = payload.length;\\n\\t\\taddress consoleAddress = CONSOLE_ADDRESS;\\n\\t\\tassembly {\\n\\t\\t\\tlet payloadStart := add(payload, 32)\\n\\t\\t\\tlet r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)\\n\\t\\t}\\n\\t}\\n\\n\\tfunction log() internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log()\\\"));\\n\\t}\\n\\n\\tfunction logInt(int p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(int)\\\", p0));\\n\\t}\\n\\n\\tfunction logUint(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction logString(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction logBool(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction logAddress(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes(bytes memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes1(bytes1 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes1)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes2(bytes2 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes2)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes3(bytes3 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes3)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes4(bytes4 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes4)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes5(bytes5 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes5)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes6(bytes6 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes6)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes7(bytes7 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes7)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes8(bytes8 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes8)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes9(bytes9 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes9)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes10(bytes10 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes10)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes11(bytes11 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes11)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes12(bytes12 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes12)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes13(bytes13 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes13)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes14(bytes14 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes14)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes15(bytes15 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes15)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes16(bytes16 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes16)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes17(bytes17 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes17)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes18(bytes18 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes18)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes19(bytes19 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes19)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes20(bytes20 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes20)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes21(bytes21 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes21)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes22(bytes22 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes22)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes23(bytes23 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes23)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes24(bytes24 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes24)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes25(bytes25 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes25)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes26(bytes26 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes26)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes27(bytes27 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes27)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes28(bytes28 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes28)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes29(bytes29 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes29)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes30(bytes30 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes30)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes31(bytes31 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes31)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes32(bytes32 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes32)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction log(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction log(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction log(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n}\\n\",\"keccak256\":\"0x72b6a1d297cd3b033d7c2e4a7e7864934bb767db6453623f1c3082c6534547f4\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "burn(bytes)": {
                "notice": "Burns liquidity tokens."
              },
              "burnSingle(bytes)": {
                "notice": "Burns liquidity tokens for a single output token."
              },
              "flashSwap(bytes)": {
                "notice": "Executes a swap from one token to another with a callback."
              },
              "getAmountIn(bytes)": {
                "notice": "Simulates a trade and returns the expected output."
              },
              "getAmountOut(bytes)": {
                "notice": "Simulates a trade and returns the expected output."
              },
              "mint(bytes)": {
                "notice": "Mints liquidity tokens."
              },
              "swap(bytes)": {
                "notice": "Executes a swap from one token to another."
              }
            },
            "notice": "Trident Concentrated Liquidity Pool interface.",
            "version": 1
          }
        }
      },
      "contracts/interfaces/concentratedPool/IConcentratedLiquidityPoolManager.sol": {
        "IConcentratedLiquidityPoolManager": {
          "abi": [
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "positions",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "contract IConcentratedLiquidityPool",
                      "name": "pool",
                      "type": "address"
                    },
                    {
                      "internalType": "uint128",
                      "name": "liquidity",
                      "type": "uint128"
                    },
                    {
                      "internalType": "int24",
                      "name": "lower",
                      "type": "int24"
                    },
                    {
                      "internalType": "int24",
                      "name": "upper",
                      "type": "int24"
                    },
                    {
                      "internalType": "uint32",
                      "name": "latestAddition",
                      "type": "uint32"
                    },
                    {
                      "internalType": "uint256",
                      "name": "feeGrowthInside0",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "feeGrowthInside1",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IConcentratedLiquidityPoolManagerStruct.Position",
                  "name": "",
                  "type": "tuple"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "bento()": "4da31827",
              "ownerOf(uint256)": "6352211e",
              "positions(uint256)": "99fbab88"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"bento\",\"outputs\":[{\"internalType\":\"contract IBentoBoxMinimal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"positions\",\"outputs\":[{\"components\":[{\"internalType\":\"contract IConcentratedLiquidityPool\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"},{\"internalType\":\"uint32\",\"name\":\"latestAddition\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1\",\"type\":\"uint256\"}],\"internalType\":\"struct IConcentratedLiquidityPoolManagerStruct.Position\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Trident concentrated liquidity manager contract interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/concentratedPool/IConcentratedLiquidityPoolManager.sol\":\"IConcentratedLiquidityPoolManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentNFT.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident NFT interface.\\ninterface ITridentNFT {\\n    function ownerOf(uint256) external view returns (address);\\n}\\n\",\"keccak256\":\"0x201d5d09d03fc77feab8fceddd2d4fe9c619ccf048e89dd121b880764e31dd8b\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/concentratedPool/IConcentratedLiquidityPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./../IPool.sol\\\";\\nimport \\\"./../IBentoBoxMinimal.sol\\\";\\nimport \\\"./../IMasterDeployer.sol\\\";\\nimport \\\"../../libraries/concentratedPool/Ticks.sol\\\";\\n\\n/// @notice Trident Concentrated Liquidity Pool interface.\\ninterface IConcentratedLiquidityPool is IPool {\\n    function price() external view returns (uint160);\\n\\n    function token0() external view returns (address);\\n\\n    function token1() external view returns (address);\\n\\n    function ticks(int24 _tick) external view returns (Ticks.Tick memory tick);\\n\\n    function feeGrowthGlobal0() external view returns (uint256);\\n\\n    function feeGrowthGlobal1() external view returns (uint256);\\n\\n    function rangeFeeGrowth(int24 lowerTick, int24 upperTick) external view returns (uint256 feeGrowthInside0, uint256 feeGrowthInside1);\\n\\n    function collect(\\n        int24,\\n        int24,\\n        address,\\n        bool\\n    ) external returns (uint256 amount0fees, uint256 amount1fees);\\n\\n    function decreaseLiquidity(\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        address recipient,\\n        bool unwrapBento\\n    )\\n        external\\n        returns (\\n            TokenAmount[] memory withdrawnAmounts,\\n            TokenAmount[] memory feesWithdrawn,\\n            uint256 oldLiquidity\\n        );\\n\\n    function getImmutables()\\n        external\\n        view\\n        returns (\\n            uint128 _MAX_TICK_LIQUIDITY,\\n            uint24 _tickSpacing,\\n            uint24 _swapFee,\\n            address _barFeeTo,\\n            IBentoBoxMinimal _bento,\\n            IMasterDeployer _masterDeployer,\\n            address _token0,\\n            address _token1\\n        );\\n\\n    function getPriceAndNearestTicks() external view returns (uint160 _price, int24 _nearestTick);\\n\\n    function getTokenProtocolFees() external view returns (uint128 _token0ProtocolFee, uint128 _token1ProtocolFee);\\n\\n    function getReserves() external view returns (uint128 _reserve0, uint128 _reserve1);\\n\\n    function getSecondsGrowthAndLastObservation() external view returns (uint160 _secondGrowthGlobal, uint32 _lastObservation);\\n}\\n\",\"keccak256\":\"0xf36fa12652a134eb2b8bfe1cde732ff493fd8b4afa3c290ccd12bb77f04af277\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/concentratedPool/IConcentratedLiquidityPoolManager.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./IConcentratedLiquidityPool.sol\\\";\\nimport \\\"./../ITridentNFT.sol\\\";\\n\\n/// @notice Trident concentrated liquidity manager contract Struct.\\n/// @dev Split out struct and function declarations due to solidity quirks.\\ninterface IConcentratedLiquidityPoolManagerStruct {\\n    struct Position {\\n        IConcentratedLiquidityPool pool;\\n        uint128 liquidity;\\n        int24 lower;\\n        int24 upper;\\n        uint32 latestAddition;\\n        uint256 feeGrowthInside0; /// @dev Per unit of liquidity.\\n        uint256 feeGrowthInside1;\\n    }\\n}\\n\\n/// @notice Trident concentrated liquidity manager contract interface.\\ninterface IConcentratedLiquidityPoolManager is IConcentratedLiquidityPoolManagerStruct, ITridentNFT {\\n    function positions(uint256) external view returns (Position memory);\\n\\n    function bento() external view returns (IBentoBoxMinimal);\\n}\\n\",\"keccak256\":\"0xaa99eb9fa16344737dbeff84b91e7020823c48a3816ff3fa807806a25af7c67e\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/concentratedPool/TickMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Math library for computing sqrt price for ticks of size 1.0001, i.e., sqrt(1.0001^tick) as fixed point Q64.96 numbers - supports\\n/// prices between 2**-128 and 2**128 - 1.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/TickMath.sol.\\nlibrary TickMath {\\n    /// @dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128.\\n    int24 internal constant MIN_TICK = -887272;\\n    /// @dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128 - 1.\\n    int24 internal constant MAX_TICK = -MIN_TICK;\\n    /// @dev The minimum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MIN_TICK).\\n    uint160 internal constant MIN_SQRT_RATIO = 4295128739;\\n    /// @dev The maximum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MAX_TICK).\\n    uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;\\n\\n    error TickOutOfBounds();\\n    error PriceOutOfBounds();\\n\\n    /// @notice Calculates sqrt(1.0001^tick) * 2^96.\\n    /// @dev Throws if |tick| > max tick.\\n    /// @param tick The input tick for the above formula.\\n    /// @return sqrtPriceX96 Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\\n    /// at the given tick.\\n    function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {\\n        uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));\\n        if (absTick > uint256(uint24(MAX_TICK))) revert TickOutOfBounds();\\n        unchecked {\\n            uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;\\n            if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;\\n            if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;\\n            if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;\\n            if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;\\n            if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;\\n            if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;\\n            if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;\\n            if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;\\n            if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;\\n            if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;\\n            if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;\\n            if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;\\n            if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;\\n            if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;\\n            if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;\\n            if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;\\n            if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;\\n            if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;\\n            if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;\\n\\n            if (tick > 0) ratio = type(uint256).max / ratio;\\n            // This divides by 1<<32 rounding up to go from a Q128.128 to a Q128.96.\\n            // We then downcast because we know the result always fits within 160 bits due to our tick input constraint.\\n            // We round up in the division so getTickAtSqrtRatio of the output price is always consistent.\\n            sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));\\n        }\\n    }\\n\\n    /// @notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio.\\n    /// @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\\n    /// ever return.\\n    /// @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96.\\n    /// @return tick The greatest tick for which the ratio is less than or equal to the input ratio.\\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {\\n        // Second inequality must be < because the price can never reach the price at the max tick.\\n        if (sqrtPriceX96 < MIN_SQRT_RATIO || sqrtPriceX96 >= MAX_SQRT_RATIO) revert PriceOutOfBounds();\\n        uint256 ratio = uint256(sqrtPriceX96) << 32;\\n\\n        uint256 r = ratio;\\n        uint256 msb;\\n\\n        assembly {\\n            let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(5, gt(r, 0xFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(4, gt(r, 0xFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(3, gt(r, 0xFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(2, gt(r, 0xF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(1, gt(r, 0x3))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := gt(r, 0x1)\\n            msb := or(msb, f)\\n        }\\n        unchecked {\\n            if (msb >= 128) r = ratio >> (msb - 127);\\n            else r = ratio << (127 - msb);\\n\\n            int256 log_2 = (int256(msb) - 128) << 64;\\n\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(63, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(62, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(61, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(60, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(59, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(58, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(57, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(56, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(55, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(54, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(53, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(52, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(51, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(50, f))\\n            }\\n\\n            int256 log_sqrt10001 = log_2 * 255738958999603826347141; // 128.128 number.\\n\\n            int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);\\n            int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);\\n\\n            tick = tickLow == tickHi ? tickLow : getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x78121358a23f8c7f267cc4622b3cd0d94970018c637c61a9f2e99a0fa40b7bda\",\"license\":\"GPL-2.0-or-later\"},\"contracts/libraries/concentratedPool/Ticks.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./TickMath.sol\\\";\\nimport \\\"hardhat/console.sol\\\";\\n\\n/// @notice Tick management library for ranged liquidity.\\nlibrary Ticks {\\n    struct Tick {\\n        int24 previousTick;\\n        int24 nextTick;\\n        uint128 liquidity;\\n        uint256 feeGrowthOutside0; // Per unit of liquidity.\\n        uint256 feeGrowthOutside1;\\n        uint160 secondsGrowthOutside;\\n    }\\n\\n    function getMaxLiquidity(uint24 _tickSpacing) public pure returns (uint128) {\\n        return type(uint128).max / uint128(uint24(TickMath.MAX_TICK) / (2 * uint24(_tickSpacing)));\\n    }\\n\\n    function cross(\\n        mapping(int24 => Tick) storage ticks,\\n        int24 nextTickToCross,\\n        uint160 secondsGrowthGlobal,\\n        uint256 currentLiquidity,\\n        uint256 feeGrowthGlobalA,\\n        uint256 feeGrowthGlobalB,\\n        bool zeroForOne,\\n        uint24 tickSpacing\\n    ) internal returns (uint256, int24) {\\n        ticks[nextTickToCross].secondsGrowthOutside = secondsGrowthGlobal - ticks[nextTickToCross].secondsGrowthOutside;\\n\\n        if (zeroForOne) {\\n            // Moving forward through the linked list.\\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\\n                currentLiquidity -= ticks[nextTickToCross].liquidity; // todo wrap in unchecked {}\\n            } else {\\n                currentLiquidity += ticks[nextTickToCross].liquidity;\\n            }\\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside0;\\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside1;\\n            nextTickToCross = ticks[nextTickToCross].previousTick;\\n        } else {\\n            // Moving backwards through the linked list.\\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\\n                currentLiquidity += ticks[nextTickToCross].liquidity;\\n            } else {\\n                currentLiquidity -= ticks[nextTickToCross].liquidity;\\n            }\\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside1;\\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside0;\\n            nextTickToCross = ticks[nextTickToCross].nextTick;\\n        }\\n        return (currentLiquidity, nextTickToCross);\\n    }\\n\\n    function insert(\\n        mapping(int24 => Tick) storage ticks,\\n        uint256 feeGrowthGlobal0,\\n        uint256 feeGrowthGlobal1,\\n        uint160 secondsGrowthGlobal,\\n        int24 lowerOld,\\n        int24 lower,\\n        int24 upperOld,\\n        int24 upper,\\n        uint128 amount,\\n        int24 nearestTick,\\n        uint160 currentPrice\\n    ) public returns (int24) {\\n        require(lower < upper, \\\"WRONG_ORDER\\\");\\n        require(TickMath.MIN_TICK <= lower, \\\"LOWER_RANGE\\\");\\n        require(upper <= TickMath.MAX_TICK, \\\"UPPER_RANGE\\\");\\n\\n        {\\n            // Stack overflow.\\n            uint128 currentLowerLiquidity = ticks[lower].liquidity;\\n            if (currentLowerLiquidity != 0 || lower == TickMath.MIN_TICK) {\\n                // We are adding liquidity to an existing tick.\\n                ticks[lower].liquidity = currentLowerLiquidity + amount;\\n            } else {\\n                // We are inserting a new tick.\\n                Ticks.Tick storage old = ticks[lowerOld];\\n                int24 oldNextTick = old.nextTick;\\n\\n                require((old.liquidity != 0 || lowerOld == TickMath.MIN_TICK) && lowerOld < lower && lower < oldNextTick, \\\"LOWER_ORDER\\\");\\n\\n                if (lower <= nearestTick) {\\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\\n                } else {\\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, 0, 0, 0);\\n                }\\n\\n                old.nextTick = lower;\\n                ticks[oldNextTick].previousTick = lower;\\n            }\\n        }\\n\\n        uint128 currentUpperLiquidity = ticks[upper].liquidity;\\n        if (currentUpperLiquidity != 0 || upper == TickMath.MAX_TICK) {\\n            // We are adding liquidity to an existing tick.\\n            ticks[upper].liquidity = currentUpperLiquidity + amount;\\n        } else {\\n            // Inserting a new tick.\\n            Ticks.Tick storage old = ticks[upperOld];\\n            int24 oldNextTick = old.nextTick;\\n\\n            require(old.liquidity != 0 && oldNextTick > upper && upperOld < upper, \\\"UPPER_ORDER\\\");\\n\\n            if (upper <= nearestTick) {\\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\\n            } else {\\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, 0, 0, 0);\\n            }\\n            old.nextTick = upper;\\n            ticks[oldNextTick].previousTick = upper;\\n        }\\n\\n        int24 actualNearestTick = TickMath.getTickAtSqrtRatio(currentPrice);\\n\\n        if (nearestTick < upper && upper <= actualNearestTick) {\\n            nearestTick = upper;\\n        } else if (nearestTick < lower && lower <= actualNearestTick) {\\n            nearestTick = lower;\\n        }\\n\\n        return nearestTick;\\n    }\\n\\n    function remove(\\n        mapping(int24 => Tick) storage ticks,\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        int24 nearestTick\\n    ) public returns (int24) {\\n        Ticks.Tick storage current = ticks[lower];\\n\\n        if (lower != TickMath.MIN_TICK && current.liquidity == amount) {\\n            // Delete lower tick.\\n            Ticks.Tick storage previous = ticks[current.previousTick];\\n            Ticks.Tick storage next = ticks[current.nextTick];\\n\\n            previous.nextTick = current.nextTick;\\n            next.previousTick = current.previousTick;\\n\\n            if (nearestTick == lower) nearestTick = current.previousTick;\\n\\n            delete ticks[lower];\\n        } else {\\n            unchecked {\\n                current.liquidity -= amount;\\n            }\\n        }\\n\\n        current = ticks[upper];\\n\\n        if (upper != TickMath.MAX_TICK && current.liquidity == amount) {\\n            // Delete upper tick.\\n            Ticks.Tick storage previous = ticks[current.previousTick];\\n            Ticks.Tick storage next = ticks[current.nextTick];\\n\\n            previous.nextTick = current.nextTick;\\n            next.previousTick = current.previousTick;\\n\\n            if (nearestTick == upper) nearestTick = current.previousTick;\\n\\n            delete ticks[upper];\\n        } else {\\n            unchecked {\\n                current.liquidity -= amount;\\n            }\\n        }\\n\\n        return nearestTick;\\n    }\\n}\\n\",\"keccak256\":\"0x3c5bb30d7769f72aad064ab482c1237a794fd1e16fc85c444255227cf93b65d2\",\"license\":\"GPL-2.0-or-later\"},\"hardhat/console.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >= 0.4.22 <0.9.0;\\n\\nlibrary console {\\n\\taddress constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);\\n\\n\\tfunction _sendLogPayload(bytes memory payload) private view {\\n\\t\\tuint256 payloadLength = payload.length;\\n\\t\\taddress consoleAddress = CONSOLE_ADDRESS;\\n\\t\\tassembly {\\n\\t\\t\\tlet payloadStart := add(payload, 32)\\n\\t\\t\\tlet r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)\\n\\t\\t}\\n\\t}\\n\\n\\tfunction log() internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log()\\\"));\\n\\t}\\n\\n\\tfunction logInt(int p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(int)\\\", p0));\\n\\t}\\n\\n\\tfunction logUint(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction logString(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction logBool(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction logAddress(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes(bytes memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes1(bytes1 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes1)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes2(bytes2 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes2)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes3(bytes3 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes3)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes4(bytes4 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes4)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes5(bytes5 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes5)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes6(bytes6 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes6)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes7(bytes7 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes7)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes8(bytes8 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes8)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes9(bytes9 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes9)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes10(bytes10 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes10)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes11(bytes11 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes11)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes12(bytes12 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes12)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes13(bytes13 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes13)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes14(bytes14 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes14)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes15(bytes15 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes15)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes16(bytes16 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes16)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes17(bytes17 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes17)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes18(bytes18 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes18)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes19(bytes19 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes19)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes20(bytes20 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes20)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes21(bytes21 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes21)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes22(bytes22 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes22)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes23(bytes23 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes23)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes24(bytes24 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes24)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes25(bytes25 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes25)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes26(bytes26 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes26)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes27(bytes27 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes27)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes28(bytes28 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes28)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes29(bytes29 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes29)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes30(bytes30 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes30)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes31(bytes31 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes31)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes32(bytes32 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes32)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction log(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction log(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction log(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n}\\n\",\"keccak256\":\"0x72b6a1d297cd3b033d7c2e4a7e7864934bb767db6453623f1c3082c6534547f4\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Trident concentrated liquidity manager contract interface.",
            "version": 1
          }
        },
        "IConcentratedLiquidityPoolManagerStruct": {
          "abi": [],
          "devdoc": {
            "details": "Split out struct and function declarations due to solidity quirks.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Split out struct and function declarations due to solidity quirks.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Trident concentrated liquidity manager contract Struct.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/concentratedPool/IConcentratedLiquidityPoolManager.sol\":\"IConcentratedLiquidityPoolManagerStruct\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentNFT.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident NFT interface.\\ninterface ITridentNFT {\\n    function ownerOf(uint256) external view returns (address);\\n}\\n\",\"keccak256\":\"0x201d5d09d03fc77feab8fceddd2d4fe9c619ccf048e89dd121b880764e31dd8b\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/concentratedPool/IConcentratedLiquidityPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./../IPool.sol\\\";\\nimport \\\"./../IBentoBoxMinimal.sol\\\";\\nimport \\\"./../IMasterDeployer.sol\\\";\\nimport \\\"../../libraries/concentratedPool/Ticks.sol\\\";\\n\\n/// @notice Trident Concentrated Liquidity Pool interface.\\ninterface IConcentratedLiquidityPool is IPool {\\n    function price() external view returns (uint160);\\n\\n    function token0() external view returns (address);\\n\\n    function token1() external view returns (address);\\n\\n    function ticks(int24 _tick) external view returns (Ticks.Tick memory tick);\\n\\n    function feeGrowthGlobal0() external view returns (uint256);\\n\\n    function feeGrowthGlobal1() external view returns (uint256);\\n\\n    function rangeFeeGrowth(int24 lowerTick, int24 upperTick) external view returns (uint256 feeGrowthInside0, uint256 feeGrowthInside1);\\n\\n    function collect(\\n        int24,\\n        int24,\\n        address,\\n        bool\\n    ) external returns (uint256 amount0fees, uint256 amount1fees);\\n\\n    function decreaseLiquidity(\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        address recipient,\\n        bool unwrapBento\\n    )\\n        external\\n        returns (\\n            TokenAmount[] memory withdrawnAmounts,\\n            TokenAmount[] memory feesWithdrawn,\\n            uint256 oldLiquidity\\n        );\\n\\n    function getImmutables()\\n        external\\n        view\\n        returns (\\n            uint128 _MAX_TICK_LIQUIDITY,\\n            uint24 _tickSpacing,\\n            uint24 _swapFee,\\n            address _barFeeTo,\\n            IBentoBoxMinimal _bento,\\n            IMasterDeployer _masterDeployer,\\n            address _token0,\\n            address _token1\\n        );\\n\\n    function getPriceAndNearestTicks() external view returns (uint160 _price, int24 _nearestTick);\\n\\n    function getTokenProtocolFees() external view returns (uint128 _token0ProtocolFee, uint128 _token1ProtocolFee);\\n\\n    function getReserves() external view returns (uint128 _reserve0, uint128 _reserve1);\\n\\n    function getSecondsGrowthAndLastObservation() external view returns (uint160 _secondGrowthGlobal, uint32 _lastObservation);\\n}\\n\",\"keccak256\":\"0xf36fa12652a134eb2b8bfe1cde732ff493fd8b4afa3c290ccd12bb77f04af277\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/concentratedPool/IConcentratedLiquidityPoolManager.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./IConcentratedLiquidityPool.sol\\\";\\nimport \\\"./../ITridentNFT.sol\\\";\\n\\n/// @notice Trident concentrated liquidity manager contract Struct.\\n/// @dev Split out struct and function declarations due to solidity quirks.\\ninterface IConcentratedLiquidityPoolManagerStruct {\\n    struct Position {\\n        IConcentratedLiquidityPool pool;\\n        uint128 liquidity;\\n        int24 lower;\\n        int24 upper;\\n        uint32 latestAddition;\\n        uint256 feeGrowthInside0; /// @dev Per unit of liquidity.\\n        uint256 feeGrowthInside1;\\n    }\\n}\\n\\n/// @notice Trident concentrated liquidity manager contract interface.\\ninterface IConcentratedLiquidityPoolManager is IConcentratedLiquidityPoolManagerStruct, ITridentNFT {\\n    function positions(uint256) external view returns (Position memory);\\n\\n    function bento() external view returns (IBentoBoxMinimal);\\n}\\n\",\"keccak256\":\"0xaa99eb9fa16344737dbeff84b91e7020823c48a3816ff3fa807806a25af7c67e\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/concentratedPool/TickMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Math library for computing sqrt price for ticks of size 1.0001, i.e., sqrt(1.0001^tick) as fixed point Q64.96 numbers - supports\\n/// prices between 2**-128 and 2**128 - 1.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/TickMath.sol.\\nlibrary TickMath {\\n    /// @dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128.\\n    int24 internal constant MIN_TICK = -887272;\\n    /// @dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128 - 1.\\n    int24 internal constant MAX_TICK = -MIN_TICK;\\n    /// @dev The minimum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MIN_TICK).\\n    uint160 internal constant MIN_SQRT_RATIO = 4295128739;\\n    /// @dev The maximum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MAX_TICK).\\n    uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;\\n\\n    error TickOutOfBounds();\\n    error PriceOutOfBounds();\\n\\n    /// @notice Calculates sqrt(1.0001^tick) * 2^96.\\n    /// @dev Throws if |tick| > max tick.\\n    /// @param tick The input tick for the above formula.\\n    /// @return sqrtPriceX96 Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\\n    /// at the given tick.\\n    function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {\\n        uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));\\n        if (absTick > uint256(uint24(MAX_TICK))) revert TickOutOfBounds();\\n        unchecked {\\n            uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;\\n            if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;\\n            if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;\\n            if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;\\n            if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;\\n            if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;\\n            if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;\\n            if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;\\n            if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;\\n            if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;\\n            if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;\\n            if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;\\n            if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;\\n            if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;\\n            if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;\\n            if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;\\n            if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;\\n            if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;\\n            if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;\\n            if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;\\n\\n            if (tick > 0) ratio = type(uint256).max / ratio;\\n            // This divides by 1<<32 rounding up to go from a Q128.128 to a Q128.96.\\n            // We then downcast because we know the result always fits within 160 bits due to our tick input constraint.\\n            // We round up in the division so getTickAtSqrtRatio of the output price is always consistent.\\n            sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));\\n        }\\n    }\\n\\n    /// @notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio.\\n    /// @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\\n    /// ever return.\\n    /// @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96.\\n    /// @return tick The greatest tick for which the ratio is less than or equal to the input ratio.\\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {\\n        // Second inequality must be < because the price can never reach the price at the max tick.\\n        if (sqrtPriceX96 < MIN_SQRT_RATIO || sqrtPriceX96 >= MAX_SQRT_RATIO) revert PriceOutOfBounds();\\n        uint256 ratio = uint256(sqrtPriceX96) << 32;\\n\\n        uint256 r = ratio;\\n        uint256 msb;\\n\\n        assembly {\\n            let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(5, gt(r, 0xFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(4, gt(r, 0xFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(3, gt(r, 0xFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(2, gt(r, 0xF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(1, gt(r, 0x3))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := gt(r, 0x1)\\n            msb := or(msb, f)\\n        }\\n        unchecked {\\n            if (msb >= 128) r = ratio >> (msb - 127);\\n            else r = ratio << (127 - msb);\\n\\n            int256 log_2 = (int256(msb) - 128) << 64;\\n\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(63, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(62, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(61, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(60, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(59, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(58, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(57, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(56, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(55, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(54, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(53, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(52, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(51, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(50, f))\\n            }\\n\\n            int256 log_sqrt10001 = log_2 * 255738958999603826347141; // 128.128 number.\\n\\n            int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);\\n            int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);\\n\\n            tick = tickLow == tickHi ? tickLow : getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x78121358a23f8c7f267cc4622b3cd0d94970018c637c61a9f2e99a0fa40b7bda\",\"license\":\"GPL-2.0-or-later\"},\"contracts/libraries/concentratedPool/Ticks.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./TickMath.sol\\\";\\nimport \\\"hardhat/console.sol\\\";\\n\\n/// @notice Tick management library for ranged liquidity.\\nlibrary Ticks {\\n    struct Tick {\\n        int24 previousTick;\\n        int24 nextTick;\\n        uint128 liquidity;\\n        uint256 feeGrowthOutside0; // Per unit of liquidity.\\n        uint256 feeGrowthOutside1;\\n        uint160 secondsGrowthOutside;\\n    }\\n\\n    function getMaxLiquidity(uint24 _tickSpacing) public pure returns (uint128) {\\n        return type(uint128).max / uint128(uint24(TickMath.MAX_TICK) / (2 * uint24(_tickSpacing)));\\n    }\\n\\n    function cross(\\n        mapping(int24 => Tick) storage ticks,\\n        int24 nextTickToCross,\\n        uint160 secondsGrowthGlobal,\\n        uint256 currentLiquidity,\\n        uint256 feeGrowthGlobalA,\\n        uint256 feeGrowthGlobalB,\\n        bool zeroForOne,\\n        uint24 tickSpacing\\n    ) internal returns (uint256, int24) {\\n        ticks[nextTickToCross].secondsGrowthOutside = secondsGrowthGlobal - ticks[nextTickToCross].secondsGrowthOutside;\\n\\n        if (zeroForOne) {\\n            // Moving forward through the linked list.\\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\\n                currentLiquidity -= ticks[nextTickToCross].liquidity; // todo wrap in unchecked {}\\n            } else {\\n                currentLiquidity += ticks[nextTickToCross].liquidity;\\n            }\\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside0;\\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside1;\\n            nextTickToCross = ticks[nextTickToCross].previousTick;\\n        } else {\\n            // Moving backwards through the linked list.\\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\\n                currentLiquidity += ticks[nextTickToCross].liquidity;\\n            } else {\\n                currentLiquidity -= ticks[nextTickToCross].liquidity;\\n            }\\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside1;\\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside0;\\n            nextTickToCross = ticks[nextTickToCross].nextTick;\\n        }\\n        return (currentLiquidity, nextTickToCross);\\n    }\\n\\n    function insert(\\n        mapping(int24 => Tick) storage ticks,\\n        uint256 feeGrowthGlobal0,\\n        uint256 feeGrowthGlobal1,\\n        uint160 secondsGrowthGlobal,\\n        int24 lowerOld,\\n        int24 lower,\\n        int24 upperOld,\\n        int24 upper,\\n        uint128 amount,\\n        int24 nearestTick,\\n        uint160 currentPrice\\n    ) public returns (int24) {\\n        require(lower < upper, \\\"WRONG_ORDER\\\");\\n        require(TickMath.MIN_TICK <= lower, \\\"LOWER_RANGE\\\");\\n        require(upper <= TickMath.MAX_TICK, \\\"UPPER_RANGE\\\");\\n\\n        {\\n            // Stack overflow.\\n            uint128 currentLowerLiquidity = ticks[lower].liquidity;\\n            if (currentLowerLiquidity != 0 || lower == TickMath.MIN_TICK) {\\n                // We are adding liquidity to an existing tick.\\n                ticks[lower].liquidity = currentLowerLiquidity + amount;\\n            } else {\\n                // We are inserting a new tick.\\n                Ticks.Tick storage old = ticks[lowerOld];\\n                int24 oldNextTick = old.nextTick;\\n\\n                require((old.liquidity != 0 || lowerOld == TickMath.MIN_TICK) && lowerOld < lower && lower < oldNextTick, \\\"LOWER_ORDER\\\");\\n\\n                if (lower <= nearestTick) {\\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\\n                } else {\\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, 0, 0, 0);\\n                }\\n\\n                old.nextTick = lower;\\n                ticks[oldNextTick].previousTick = lower;\\n            }\\n        }\\n\\n        uint128 currentUpperLiquidity = ticks[upper].liquidity;\\n        if (currentUpperLiquidity != 0 || upper == TickMath.MAX_TICK) {\\n            // We are adding liquidity to an existing tick.\\n            ticks[upper].liquidity = currentUpperLiquidity + amount;\\n        } else {\\n            // Inserting a new tick.\\n            Ticks.Tick storage old = ticks[upperOld];\\n            int24 oldNextTick = old.nextTick;\\n\\n            require(old.liquidity != 0 && oldNextTick > upper && upperOld < upper, \\\"UPPER_ORDER\\\");\\n\\n            if (upper <= nearestTick) {\\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\\n            } else {\\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, 0, 0, 0);\\n            }\\n            old.nextTick = upper;\\n            ticks[oldNextTick].previousTick = upper;\\n        }\\n\\n        int24 actualNearestTick = TickMath.getTickAtSqrtRatio(currentPrice);\\n\\n        if (nearestTick < upper && upper <= actualNearestTick) {\\n            nearestTick = upper;\\n        } else if (nearestTick < lower && lower <= actualNearestTick) {\\n            nearestTick = lower;\\n        }\\n\\n        return nearestTick;\\n    }\\n\\n    function remove(\\n        mapping(int24 => Tick) storage ticks,\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        int24 nearestTick\\n    ) public returns (int24) {\\n        Ticks.Tick storage current = ticks[lower];\\n\\n        if (lower != TickMath.MIN_TICK && current.liquidity == amount) {\\n            // Delete lower tick.\\n            Ticks.Tick storage previous = ticks[current.previousTick];\\n            Ticks.Tick storage next = ticks[current.nextTick];\\n\\n            previous.nextTick = current.nextTick;\\n            next.previousTick = current.previousTick;\\n\\n            if (nearestTick == lower) nearestTick = current.previousTick;\\n\\n            delete ticks[lower];\\n        } else {\\n            unchecked {\\n                current.liquidity -= amount;\\n            }\\n        }\\n\\n        current = ticks[upper];\\n\\n        if (upper != TickMath.MAX_TICK && current.liquidity == amount) {\\n            // Delete upper tick.\\n            Ticks.Tick storage previous = ticks[current.previousTick];\\n            Ticks.Tick storage next = ticks[current.nextTick];\\n\\n            previous.nextTick = current.nextTick;\\n            next.previousTick = current.previousTick;\\n\\n            if (nearestTick == upper) nearestTick = current.previousTick;\\n\\n            delete ticks[upper];\\n        } else {\\n            unchecked {\\n                current.liquidity -= amount;\\n            }\\n        }\\n\\n        return nearestTick;\\n    }\\n}\\n\",\"keccak256\":\"0x3c5bb30d7769f72aad064ab482c1237a794fd1e16fc85c444255227cf93b65d2\",\"license\":\"GPL-2.0-or-later\"},\"hardhat/console.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >= 0.4.22 <0.9.0;\\n\\nlibrary console {\\n\\taddress constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);\\n\\n\\tfunction _sendLogPayload(bytes memory payload) private view {\\n\\t\\tuint256 payloadLength = payload.length;\\n\\t\\taddress consoleAddress = CONSOLE_ADDRESS;\\n\\t\\tassembly {\\n\\t\\t\\tlet payloadStart := add(payload, 32)\\n\\t\\t\\tlet r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)\\n\\t\\t}\\n\\t}\\n\\n\\tfunction log() internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log()\\\"));\\n\\t}\\n\\n\\tfunction logInt(int p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(int)\\\", p0));\\n\\t}\\n\\n\\tfunction logUint(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction logString(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction logBool(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction logAddress(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes(bytes memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes1(bytes1 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes1)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes2(bytes2 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes2)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes3(bytes3 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes3)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes4(bytes4 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes4)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes5(bytes5 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes5)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes6(bytes6 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes6)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes7(bytes7 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes7)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes8(bytes8 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes8)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes9(bytes9 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes9)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes10(bytes10 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes10)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes11(bytes11 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes11)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes12(bytes12 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes12)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes13(bytes13 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes13)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes14(bytes14 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes14)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes15(bytes15 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes15)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes16(bytes16 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes16)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes17(bytes17 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes17)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes18(bytes18 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes18)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes19(bytes19 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes19)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes20(bytes20 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes20)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes21(bytes21 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes21)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes22(bytes22 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes22)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes23(bytes23 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes23)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes24(bytes24 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes24)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes25(bytes25 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes25)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes26(bytes26 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes26)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes27(bytes27 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes27)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes28(bytes28 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes28)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes29(bytes29 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes29)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes30(bytes30 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes30)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes31(bytes31 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes31)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes32(bytes32 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes32)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction log(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction log(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction log(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n}\\n\",\"keccak256\":\"0x72b6a1d297cd3b033d7c2e4a7e7864934bb767db6453623f1c3082c6534547f4\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Trident concentrated liquidity manager contract Struct.",
            "version": 1
          }
        }
      },
      "contracts/interfaces/concentratedPool/IPositionManager.sol": {
        "IPositionManager": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "int24",
                  "name": "lower",
                  "type": "int24"
                },
                {
                  "internalType": "int24",
                  "name": "upper",
                  "type": "int24"
                },
                {
                  "internalType": "uint128",
                  "name": "amount",
                  "type": "uint128"
                },
                {
                  "internalType": "uint256",
                  "name": "feeGrowthInside0",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "feeGrowthInside1",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "positionId",
                  "type": "uint256"
                }
              ],
              "name": "positionMintCallback",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_positionId",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "positionMintCallback(address,int24,int24,uint128,uint256,uint256,uint256)": "6d59ebe1"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"}],\"name\":\"positionMintCallback\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_positionId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Trident concentrated Liquidity pool mint callback receiver.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/concentratedPool/IPositionManager.sol\":\"IPositionManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/concentratedPool/IPositionManager.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident concentrated Liquidity pool mint callback receiver.\\ninterface IPositionManager {\\n    function positionMintCallback(\\n        address recipient,\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        uint256 feeGrowthInside0,\\n        uint256 feeGrowthInside1,\\n        uint256 positionId\\n    ) external returns (uint256 _positionId);\\n}\\n\",\"keccak256\":\"0x859ec714a21d5aeae280167b4e03ab84ec33767dca2e7cf8ab89a2c2418f0ec2\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Trident concentrated Liquidity pool mint callback receiver.",
            "version": 1
          }
        }
      },
      "contracts/libraries/MathUtils.sol": {
        "MathUtils": {
          "abi": [],
          "devdoc": {
            "author": "Adapted from https://github.com/saddle-finance/saddle-contract/blob/master/contracts/MathUtils.sol.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f1d7b6778c732ff2ba719b562393ba58c3f815740d564d6804dedc9b05b418cd64736f6c63430008070033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALL 0xD7 0xB6 PUSH24 0x8C732FF2BA719B562393BA58C3F815740D564D6804DEDC9B SDIV 0xB4 XOR 0xCD PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "279:453:22:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;279:453:22;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f1d7b6778c732ff2ba719b562393ba58c3f815740d564d6804dedc9b05b418cd64736f6c63430008070033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALL 0xD7 0xB6 PUSH24 0x8C732FF2BA719B562393BA58C3F815740D564D6804DEDC9B SDIV 0xB4 XOR 0xCD PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "279:453:22:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "within1(uint256,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Adapted from https://github.com/saddle-finance/saddle-contract/blob/master/contracts/MathUtils.sol.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A library that contains functions for calculating differences between two uint256.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/MathUtils.sol\":\"MathUtils\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/libraries/MathUtils.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice A library that contains functions for calculating differences between two uint256.\\n/// @author Adapted from https://github.com/saddle-finance/saddle-contract/blob/master/contracts/MathUtils.sol.\\nlibrary MathUtils {\\n    /// @notice Compares a and b and returns 'true' if the difference between a and b\\n    /// is less than 1 or equal to each other.\\n    /// @param a uint256 to compare with.\\n    /// @param b uint256 to compare with.\\n    function within1(uint256 a, uint256 b) internal pure returns (bool) {\\n        unchecked {\\n            if (a > b) {\\n                return a - b <= 1;\\n            }\\n            return b - a <= 1;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x7f02d5a108fe7743d0aa4274a0234f81ffe25ba702ce6ba46d94db27cde97d52\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "A library that contains functions for calculating differences between two uint256.",
            "version": 1
          }
        }
      },
      "contracts/libraries/RebaseLibrary.sol": {
        "RebaseLibrary": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bc906b3d4539f474ac7b5be7e39d76af7da460b1a5d183dcd6b08791b79aa0f064736f6c63430008070033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBC SWAP1 PUSH12 0x3D4539F474AC7B5BE7E39D76 0xAF PUSH30 0xA460B1A5D183DCD6B08791B79AA0F064736F6C6343000807003300000000 ",
              "sourceMap": "158:696:23:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;158:696:23;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bc906b3d4539f474ac7b5be7e39d76af7da460b1a5d183dcd6b08791b79aa0f064736f6c63430008070033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBC SWAP1 PUSH12 0x3D4539F474AC7B5BE7E39D76 0xAF PUSH30 0xA460B1A5D183DCD6B08791B79AA0F064736F6C6343000807003300000000 ",
              "sourceMap": "158:696:23:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "toBase(struct Rebase memory,uint256)": "infinite",
                "toElastic(struct Rebase memory,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"A rebasing library\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/RebaseLibrary.sol\":\"RebaseLibrary\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "A rebasing library",
            "version": 1
          }
        }
      },
      "contracts/libraries/TridentMath.sol": {
        "TridentMath": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aa60aa53409d53edf5b0cdd3b7897f839f6ba04a8a5462d4b745d8a9e70ee34764736f6c63430008070033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAA PUSH1 0xAA MSTORE8 BLOCKHASH SWAP14 MSTORE8 0xED CREATE2 0xB0 0xCD 0xD3 0xB7 DUP10 PUSH32 0x839F6BA04A8A5462D4B745D8A9E70EE34764736F6C6343000807003300000000 ",
              "sourceMap": "113:1825:24:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;113:1825:24;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aa60aa53409d53edf5b0cdd3b7897f839f6ba04a8a5462d4b745d8a9e70ee34764736f6c63430008070033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAA PUSH1 0xAA MSTORE8 BLOCKHASH SWAP14 MSTORE8 0xED CREATE2 0xB0 0xCD 0xD3 0xB7 DUP10 PUSH32 0x839F6BA04A8A5462D4B745D8A9E70EE34764736F6C6343000807003300000000 ",
              "sourceMap": "113:1825:24:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "sqrt(uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Trident sqrt helper library.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/TridentMath.sol\":\"TridentMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/libraries/TridentMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident sqrt helper library.\\nlibrary TridentMath {\\n    /// @notice Calculate sqrt (x) rounding down, where `x` is unsigned 256-bit integer number.\\n    /// @dev Adapted from https://github.com/abdk-consulting/abdk-libraries-solidity/blob/master/ABDKMath64x64.sol, \\n    /// \\u00a9 2019 ABDK Consulting, License-Identifier: BSD-4-Clause.\\n    /// @param x Unsigned 256-bit integer number.\\n    /// @return result Sqrt result.\\n    function sqrt(uint256 x) internal pure returns (uint256 result) {\\n        unchecked {\\n            if (x == 0) result = 0;\\n            else {\\n                uint256 xx = x;\\n                uint256 r = 1;\\n                if (xx >= 0x100000000000000000000000000000000) {\\n                    xx >>= 128;\\n                    r <<= 64;\\n                }\\n                if (xx >= 0x10000000000000000) {\\n                    xx >>= 64;\\n                    r <<= 32;\\n                }\\n                if (xx >= 0x100000000) {\\n                    xx >>= 32;\\n                    r <<= 16;\\n                }\\n                if (xx >= 0x10000) {\\n                    xx >>= 16;\\n                    r <<= 8;\\n                }\\n                if (xx >= 0x100) {\\n                    xx >>= 8;\\n                    r <<= 4;\\n                }\\n                if (xx >= 0x10) {\\n                    xx >>= 4;\\n                    r <<= 2;\\n                }\\n                if (xx >= 0x8) {\\n                    r <<= 1;\\n                }\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1; // @dev Seven iterations should be enough.\\n                uint256 r1 = x / r;\\n                result = r < r1 ? r : r1;\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xccbada517ace78149a4602ce782e6faf408404ee300569b8adf76e0eb7f0dd3b\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Trident sqrt helper library.",
            "version": 1
          }
        }
      },
      "contracts/libraries/concentratedPool/DyDxMath.sol": {
        "DyDxMath": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "priceLower",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "priceUpper",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "currentPrice",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "dy",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "dx",
                  "type": "uint256"
                }
              ],
              "name": "getLiquidityForAmounts",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "61025a61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063aec6cbfe1461003a575b600080fd5b61004d6100483660046101e9565b61005f565b60405190815260200160405180910390f35b600083851161008957610082836c01000000000000000000000000888803610117565b905061010e565b8584116100b457610082826100ac88886c01000000000000000000000000610117565b888803610117565b60006100da836100d288886c01000000000000000000000000610117565b878903610117565b905060006100f8856c010000000000000000000000008a8903610117565b90508082106101075780610109565b815b925050505b95945050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000141561016f576000841161016457600080fd5b5082900490506101e2565b80841161017b57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b600080600080600060a0868803121561020157600080fd5b50508335956020850135955060408501359460608101359450608001359250905056fea2646970667358221220dd7c8e4938ce8bd98b791c1456062a447a0a0a717d55339b43b1d2abb153caca64736f6c63430008070033",
              "opcodes": "PUSH2 0x25A PUSH2 0x3A PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x2D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x35 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAEC6CBFE EQ PUSH2 0x3A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4D PUSH2 0x48 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E9 JUMP JUMPDEST PUSH2 0x5F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP4 DUP6 GT PUSH2 0x89 JUMPI PUSH2 0x82 DUP4 PUSH13 0x1000000000000000000000000 DUP9 DUP9 SUB PUSH2 0x117 JUMP JUMPDEST SWAP1 POP PUSH2 0x10E JUMP JUMPDEST DUP6 DUP5 GT PUSH2 0xB4 JUMPI PUSH2 0x82 DUP3 PUSH2 0xAC DUP9 DUP9 PUSH13 0x1000000000000000000000000 PUSH2 0x117 JUMP JUMPDEST DUP9 DUP9 SUB PUSH2 0x117 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDA DUP4 PUSH2 0xD2 DUP9 DUP9 PUSH13 0x1000000000000000000000000 PUSH2 0x117 JUMP JUMPDEST DUP8 DUP10 SUB PUSH2 0x117 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF8 DUP6 PUSH13 0x1000000000000000000000000 DUP11 DUP10 SUB PUSH2 0x117 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT PUSH2 0x107 JUMPI DUP1 PUSH2 0x109 JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP8 MULMOD DUP6 DUP8 MUL SWAP3 POP DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH1 0x0 EQ ISZERO PUSH2 0x16F JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x164 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x1E2 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP4 CALLDATALOAD SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDD PUSH29 0x8E4938CE8BD98B791C1456062A447A0A0A717D55339B43B1D2ABB153CA 0xCA PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "198:3076:25:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;198:3076:25;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@getLiquidityForAmounts_3327": {
                  "entryPoint": 95,
                  "id": 3327,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@mulDiv_3545": {
                  "entryPoint": 279,
                  "id": 3545,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256": {
                  "entryPoint": 489,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:660:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "152:316:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "199:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "208:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "211:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "201:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "201:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "201:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "173:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "182:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "169:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "169:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "194:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "165:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "165:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "162:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "224:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "247:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "234:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "234:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "224:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "266:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "293:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "304:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "289:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "289:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "276:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "276:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "266:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "317:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "344:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "355:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "340:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "340:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "327:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "327:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "317:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "368:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "395:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "406:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "391:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "391:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "378:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "378:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "368:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "419:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "446:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "457:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "442:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "442:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "429:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "429:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "419:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "86:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "97:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "109:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "117:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "125:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "133:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "141:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:454:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "582:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "592:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "604:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "615:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "600:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "600:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "592:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "634:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "645:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "627:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "627:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "627:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "551:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "562:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "573:4:64",
                            "type": ""
                          }
                        ],
                        "src": "473:185:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063aec6cbfe1461003a575b600080fd5b61004d6100483660046101e9565b61005f565b60405190815260200160405180910390f35b600083851161008957610082836c01000000000000000000000000888803610117565b905061010e565b8584116100b457610082826100ac88886c01000000000000000000000000610117565b888803610117565b60006100da836100d288886c01000000000000000000000000610117565b878903610117565b905060006100f8856c010000000000000000000000008a8903610117565b90508082106101075780610109565b815b925050505b95945050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000141561016f576000841161016457600080fd5b5082900490506101e2565b80841161017b57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b600080600080600060a0868803121561020157600080fd5b50508335956020850135955060408501359460608101359450608001359250905056fea2646970667358221220dd7c8e4938ce8bd98b791c1456062a447a0a0a717d55339b43b1d2abb153caca64736f6c63430008070033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x35 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAEC6CBFE EQ PUSH2 0x3A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4D PUSH2 0x48 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E9 JUMP JUMPDEST PUSH2 0x5F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP4 DUP6 GT PUSH2 0x89 JUMPI PUSH2 0x82 DUP4 PUSH13 0x1000000000000000000000000 DUP9 DUP9 SUB PUSH2 0x117 JUMP JUMPDEST SWAP1 POP PUSH2 0x10E JUMP JUMPDEST DUP6 DUP5 GT PUSH2 0xB4 JUMPI PUSH2 0x82 DUP3 PUSH2 0xAC DUP9 DUP9 PUSH13 0x1000000000000000000000000 PUSH2 0x117 JUMP JUMPDEST DUP9 DUP9 SUB PUSH2 0x117 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xDA DUP4 PUSH2 0xD2 DUP9 DUP9 PUSH13 0x1000000000000000000000000 PUSH2 0x117 JUMP JUMPDEST DUP8 DUP10 SUB PUSH2 0x117 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF8 DUP6 PUSH13 0x1000000000000000000000000 DUP11 DUP10 SUB PUSH2 0x117 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 LT PUSH2 0x107 JUMPI DUP1 PUSH2 0x109 JUMP JUMPDEST DUP2 JUMPDEST SWAP3 POP POP POP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP8 MULMOD DUP6 DUP8 MUL SWAP3 POP DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH1 0x0 EQ ISZERO PUSH2 0x16F JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x164 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x1E2 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP4 CALLDATALOAD SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDD PUSH29 0x8E4938CE8BD98B791C1456062A447A0A0A717D55339B43B1D2ABB153CA 0xCA PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "198:3076:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;1214:1128;;;;;;:::i;:::-;;:::i;:::-;;;627:25:64;;;615:2;600:18;1214:1128:25;;;;;;;;1399:17;1470:12;1456:10;:26;1452:874;;1514:73;1530:2;1534:27;1576:10;1563;:23;1514:15;:73::i;:::-;1502:85;;1452:874;;;1628:10;1612:12;:26;1608:718;;1670:192;1707:2;1731:68;1747:10;1759;1771:27;1731:15;:68::i;:::-;1834:10;1821;:23;1670:15;:192::i;1608:718::-;1901:18;1922:196;1959:2;1983:70;1999:10;2011:12;2025:27;1983:15;:70::i;:::-;2088:12;2075:10;:25;1922:15;:196::i;:::-;1901:217;;2136:18;2157:75;2173:2;2177:27;2221:10;2206:12;:25;2157:15;:75::i;:::-;2136:96;;2275:10;2262;:23;:49;;2301:10;2262:49;;;2288:10;2262:49;2250:61;;1883:443;;1608:718;1214:1128;;;;;;;:::o;841:4151:26:-;953:14;;;1524:6;1521:1;1518;1511:20;1564:1;1561;1557:9;1548:18;;1619:5;1615:2;1612:13;1604:5;1600:2;1596:14;1592:34;1583:43;;;1720:5;1729:1;1720:10;1716:203;;;1772:1;1758:11;:15;1750:24;;;;;;-1:-1:-1;1833:23:26;;;;-1:-1:-1;1891:13:26;;1716:203;2059:5;2045:11;:19;2037:28;;;;;;2367:17;2451:11;2448:1;2445;2438:25;2846:12;2869:20;;;2861:43;;3011:22;;;;;3882:1;3863;:15;;3862:21;;4125:17;;;4121:21;;4114:28;4188:17;;;4184:21;;4177:28;4252:17;;;4248:21;;4241:28;4316:17;;;4312:21;;4305:28;4380:17;;;4376:21;;4369:28;4445:17;;;4441:21;;;4434:28;3425:12;;;;3421:23;;;3446:1;3417:31;2597:20;;;2586:32;;;3484:12;;;;2644:21;;;;3155:16;;;;3475:21;;;;4937:11;;;;;-1:-1:-1;;841:4151:26;;;;;;:::o;14:454:64:-;109:6;117;125;133;141;194:3;182:9;173:7;169:23;165:33;162:53;;;211:1;208;201:12;162:53;-1:-1:-1;;234:23:64;;;304:2;289:18;;276:32;;-1:-1:-1;355:2:64;340:18;;327:32;;406:2;391:18;;378:32;;-1:-1:-1;457:3:64;442:19;429:33;;-1:-1:-1;14:454:64;-1:-1:-1;14:454:64:o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "120400",
                "executionCost": "199",
                "totalCost": "120599"
              },
              "external": {
                "getLiquidityForAmounts(uint256,uint256,uint256,uint256,uint256)": "infinite"
              },
              "internal": {
                "getAmountsForLiquidity(uint256,uint256,uint256,uint256,bool)": "infinite",
                "getDx(uint256,uint256,uint256,bool)": "infinite",
                "getDy(uint256,uint256,uint256,bool)": "infinite"
              }
            },
            "methodIdentifiers": {
              "getLiquidityForAmounts(uint256,uint256,uint256,uint256,uint256)": "aec6cbfe"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"priceLower\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"priceUpper\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dy\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"dx\",\"type\":\"uint256\"}],\"name\":\"getLiquidityForAmounts\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Math library that facilitates ranged liquidity calculations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/concentratedPool/DyDxMath.sol\":\"DyDxMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/libraries/concentratedPool/DyDxMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./FullMath.sol\\\";\\nimport \\\"./UnsafeMath.sol\\\";\\n\\n/// @notice Math library that facilitates ranged liquidity calculations.\\nlibrary DyDxMath {\\n    function getDy(\\n        uint256 liquidity,\\n        uint256 priceLower,\\n        uint256 priceUpper,\\n        bool roundUp\\n    ) internal pure returns (uint256 dy) {\\n        unchecked {\\n            if (roundUp) {\\n                dy = FullMath.mulDivRoundingUp(liquidity, priceUpper - priceLower, 0x1000000000000000000000000);\\n            } else {\\n                dy = FullMath.mulDiv(liquidity, priceUpper - priceLower, 0x1000000000000000000000000);\\n            }\\n        }\\n    }\\n\\n    function getDx(\\n        uint256 liquidity,\\n        uint256 priceLower,\\n        uint256 priceUpper,\\n        bool roundUp\\n    ) internal pure returns (uint256 dx) {\\n        unchecked {\\n            if (roundUp) {\\n                dx = UnsafeMath.divRoundingUp(FullMath.mulDivRoundingUp(liquidity << 96, priceUpper - priceLower, priceUpper), priceLower);\\n            } else {\\n                dx = FullMath.mulDiv(liquidity << 96, priceUpper - priceLower, priceUpper) / priceLower;\\n            }\\n        }\\n    }\\n\\n    function getLiquidityForAmounts(\\n        uint256 priceLower,\\n        uint256 priceUpper,\\n        uint256 currentPrice,\\n        uint256 dy,\\n        uint256 dx\\n    ) public pure returns (uint256 liquidity) {\\n        unchecked {\\n            if (priceUpper <= currentPrice) {\\n                liquidity = FullMath.mulDiv(dy, 0x1000000000000000000000000, priceUpper - priceLower);\\n            } else if (currentPrice <= priceLower) {\\n                liquidity = FullMath.mulDiv(\\n                    dx,\\n                    FullMath.mulDiv(priceLower, priceUpper, 0x1000000000000000000000000),\\n                    priceUpper - priceLower\\n                );\\n            } else {\\n                uint256 liquidity0 = FullMath.mulDiv(\\n                    dx,\\n                    FullMath.mulDiv(priceUpper, currentPrice, 0x1000000000000000000000000),\\n                    priceUpper - currentPrice\\n                );\\n                uint256 liquidity1 = FullMath.mulDiv(dy, 0x1000000000000000000000000, currentPrice - priceLower);\\n                liquidity = liquidity0 < liquidity1 ? liquidity0 : liquidity1;\\n            }\\n        }\\n    }\\n\\n    function getAmountsForLiquidity(\\n        uint256 priceLower,\\n        uint256 priceUpper,\\n        uint256 currentPrice,\\n        uint256 liquidityAmount,\\n        bool roundUp\\n    ) internal pure returns (uint128 token0amount, uint128 token1amount) {\\n        if (priceUpper <= currentPrice) {\\n            // Only supply `token1` (`token1` is Y).\\n            token1amount = uint128(DyDxMath.getDy(liquidityAmount, priceLower, priceUpper, roundUp));\\n        } else if (currentPrice <= priceLower) {\\n            // Only supply `token0` (`token0` is X).\\n            token0amount = uint128(DyDxMath.getDx(liquidityAmount, priceLower, priceUpper, roundUp));\\n        } else {\\n            // Supply both tokens.\\n            token0amount = uint128(DyDxMath.getDx(liquidityAmount, currentPrice, priceUpper, roundUp));\\n            token1amount = uint128(DyDxMath.getDy(liquidityAmount, priceLower, currentPrice, roundUp));\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xbf29a7f41190849b413935c0f3db4566383f6db68ee771cb13ec85082e583b38\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/concentratedPool/FullMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Math library that facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/FullMath.sol.\\n/// @dev Handles \\\"phantom overflow\\\", i.e., allows multiplication and division where an intermediate value overflows 256 bits.\\nlibrary FullMath {\\n    /// @notice Calculates floor(a\\u00d7b\\u00f7denominator) with full precision - throws if result overflows an uint256 or denominator == 0.\\n    /// @param a The multiplicand.\\n    /// @param b The multiplier.\\n    /// @param denominator The divisor.\\n    /// @return result The 256-bit result.\\n    /// @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv.\\n    function mulDiv(\\n        uint256 a,\\n        uint256 b,\\n        uint256 denominator\\n    ) internal pure returns (uint256 result) {\\n        unchecked {\\n            // 512-bit multiply [prod1 prod0] = a * b.\\n            // Compute the product mod 2**256 and mod 2**256 - 1,\\n            // then use the Chinese Remainder Theorem to reconstruct\\n            // the 512 bit result. The result is stored in two 256\\n            // variables such that product = prod1 * 2**256 + prod0.\\n            uint256 prod0; // Least significant 256 bits of the product.\\n            uint256 prod1; // Most significant 256 bits of the product.\\n            assembly {\\n                let mm := mulmod(a, b, not(0))\\n                prod0 := mul(a, b)\\n                prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n            }\\n            // Handle non-overflow cases, 256 by 256 division.\\n            if (prod1 == 0) {\\n                require(denominator > 0);\\n                assembly {\\n                    result := div(prod0, denominator)\\n                }\\n                return result;\\n            }\\n            // Make sure the result is less than 2**256 -\\n            // also prevents denominator == 0.\\n            require(denominator > prod1);\\n            ///////////////////////////////////////////////\\n            // 512 by 256 division.\\n            ///////////////////////////////////////////////\\n            // Make division exact by subtracting the remainder from [prod1 prod0] -\\n            // compute remainder using mulmod.\\n            uint256 remainder;\\n            assembly {\\n                remainder := mulmod(a, b, denominator)\\n            }\\n            // Subtract 256 bit number from 512 bit number.\\n            assembly {\\n                prod1 := sub(prod1, gt(remainder, prod0))\\n                prod0 := sub(prod0, remainder)\\n            }\\n            // Factor powers of two out of denominator -\\n            // compute largest power of two divisor of denominator\\n            // (always >= 1).\\n            uint256 twos = uint256(-int256(denominator)) & denominator;\\n            // Divide denominator by power of two.\\n            assembly {\\n                denominator := div(denominator, twos)\\n            }\\n            // Divide [prod1 prod0] by the factors of two.\\n            assembly {\\n                prod0 := div(prod0, twos)\\n            }\\n            // Shift in bits from prod1 into prod0. For this we need\\n            // to flip `twos` such that it is 2**256 / twos -\\n            // if twos is zero, then it becomes one.\\n            assembly {\\n                twos := add(div(sub(0, twos), twos), 1)\\n            }\\n            prod0 |= prod1 * twos;\\n            // Invert denominator mod 2**256 -\\n            // now that denominator is an odd number, it has an inverse\\n            // modulo 2**256 such that denominator * inv = 1 mod 2**256.\\n            // Compute the inverse by starting with a seed that is correct\\n            // for four bits. That is, denominator * inv = 1 mod 2**4.\\n            uint256 inv = (3 * denominator) ^ 2;\\n            // Now use Newton-Raphson iteration to improve the precision.\\n            // Thanks to Hensel's lifting lemma, this also works in modular\\n            // arithmetic, doubling the correct bits in each step.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**8.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**16.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**32.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**64.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**128.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**256.\\n            // Because the division is now exact we can divide by multiplying\\n            // with the modular inverse of denominator. This will give us the\\n            // correct result modulo 2**256. Since the precoditions guarantee\\n            // that the outcome is less than 2**256, this is the final result.\\n            // We don't need to compute the high bits of the result and prod1\\n            // is no longer required.\\n            result = prod0 * inv;\\n            return result;\\n        }\\n    }\\n\\n    /// @notice Calculates ceil(a\\u00d7b\\u00f7denominator) with full precision - throws if result overflows an uint256 or denominator == 0.\\n    /// @param a The multiplicand.\\n    /// @param b The multiplier.\\n    /// @param denominator The divisor.\\n    /// @return result The 256-bit result.\\n    function mulDivRoundingUp(\\n        uint256 a,\\n        uint256 b,\\n        uint256 denominator\\n    ) internal pure returns (uint256 result) {\\n        result = mulDiv(a, b, denominator);\\n        unchecked {\\n            if (mulmod(a, b, denominator) != 0) {\\n                require(result < type(uint256).max);\\n                result++;\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x8211b004be6ff6be30b81fe484544d00c7bb467a4fd2a0d6c60114353e2300cf\",\"license\":\"MIT\"},\"contracts/libraries/concentratedPool/UnsafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.5.0;\\n\\n/// @notice Math library that contains methods that perform common math functions but do not do any overflow or underflow checks.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/UnsafeMath.sol.\\nlibrary UnsafeMath {\\n    /// @notice Returns ceil(x / y).\\n    /// @dev Division by 0 has unspecified behavior, and must be checked externally.\\n    /// @param x The dividend.\\n    /// @param y The divisor.\\n    /// @return z The quotient, ceil(x / y).\\n    function divRoundingUp(uint256 x, uint256 y) internal pure returns (uint256 z) {\\n        assembly {\\n            z := add(div(x, y), gt(mod(x, y), 0))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x7441e71bffbdeb978784685e2a88618190942f1c9b5452574326256d5d0b7039\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Math library that facilitates ranged liquidity calculations.",
            "version": 1
          }
        }
      },
      "contracts/libraries/concentratedPool/FullMath.sol": {
        "FullMath": {
          "abi": [],
          "devdoc": {
            "author": "Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/FullMath.sol.",
            "details": "Handles \"phantom overflow\", i.e., allows multiplication and division where an intermediate value overflows 256 bits.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eec3466ccbf007565d2537e32d8679e43509df4ee63b2ae24f08d3483ce2494764736f6c63430008070033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEE 0xC3 CHAINID PUSH13 0xCBF007565D2537E32D8679E435 MULMOD 0xDF 0x4E 0xE6 EXTCODESIZE 0x2A 0xE2 0x4F ADDMOD 0xD3 BASEFEE EXTCODECOPY 0xE2 0x49 SELFBALANCE PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "446:5199:26:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;446:5199:26;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eec3466ccbf007565d2537e32d8679e43509df4ee63b2ae24f08d3483ce2494764736f6c63430008070033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEE 0xC3 CHAINID PUSH13 0xCBF007565D2537E32D8679E435 MULMOD 0xDF 0x4E 0xE6 EXTCODESIZE 0x2A 0xE2 0x4F ADDMOD 0xD3 BASEFEE EXTCODECOPY 0xE2 0x49 SELFBALANCE PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "446:5199:26:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "mulDiv(uint256,uint256,uint256)": "infinite",
                "mulDivRoundingUp(uint256,uint256,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/FullMath.sol.\",\"details\":\"Handles \\\"phantom overflow\\\", i.e., allows multiplication and division where an intermediate value overflows 256 bits.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Math library that facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/concentratedPool/FullMath.sol\":\"FullMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/libraries/concentratedPool/FullMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Math library that facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/FullMath.sol.\\n/// @dev Handles \\\"phantom overflow\\\", i.e., allows multiplication and division where an intermediate value overflows 256 bits.\\nlibrary FullMath {\\n    /// @notice Calculates floor(a\\u00d7b\\u00f7denominator) with full precision - throws if result overflows an uint256 or denominator == 0.\\n    /// @param a The multiplicand.\\n    /// @param b The multiplier.\\n    /// @param denominator The divisor.\\n    /// @return result The 256-bit result.\\n    /// @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv.\\n    function mulDiv(\\n        uint256 a,\\n        uint256 b,\\n        uint256 denominator\\n    ) internal pure returns (uint256 result) {\\n        unchecked {\\n            // 512-bit multiply [prod1 prod0] = a * b.\\n            // Compute the product mod 2**256 and mod 2**256 - 1,\\n            // then use the Chinese Remainder Theorem to reconstruct\\n            // the 512 bit result. The result is stored in two 256\\n            // variables such that product = prod1 * 2**256 + prod0.\\n            uint256 prod0; // Least significant 256 bits of the product.\\n            uint256 prod1; // Most significant 256 bits of the product.\\n            assembly {\\n                let mm := mulmod(a, b, not(0))\\n                prod0 := mul(a, b)\\n                prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n            }\\n            // Handle non-overflow cases, 256 by 256 division.\\n            if (prod1 == 0) {\\n                require(denominator > 0);\\n                assembly {\\n                    result := div(prod0, denominator)\\n                }\\n                return result;\\n            }\\n            // Make sure the result is less than 2**256 -\\n            // also prevents denominator == 0.\\n            require(denominator > prod1);\\n            ///////////////////////////////////////////////\\n            // 512 by 256 division.\\n            ///////////////////////////////////////////////\\n            // Make division exact by subtracting the remainder from [prod1 prod0] -\\n            // compute remainder using mulmod.\\n            uint256 remainder;\\n            assembly {\\n                remainder := mulmod(a, b, denominator)\\n            }\\n            // Subtract 256 bit number from 512 bit number.\\n            assembly {\\n                prod1 := sub(prod1, gt(remainder, prod0))\\n                prod0 := sub(prod0, remainder)\\n            }\\n            // Factor powers of two out of denominator -\\n            // compute largest power of two divisor of denominator\\n            // (always >= 1).\\n            uint256 twos = uint256(-int256(denominator)) & denominator;\\n            // Divide denominator by power of two.\\n            assembly {\\n                denominator := div(denominator, twos)\\n            }\\n            // Divide [prod1 prod0] by the factors of two.\\n            assembly {\\n                prod0 := div(prod0, twos)\\n            }\\n            // Shift in bits from prod1 into prod0. For this we need\\n            // to flip `twos` such that it is 2**256 / twos -\\n            // if twos is zero, then it becomes one.\\n            assembly {\\n                twos := add(div(sub(0, twos), twos), 1)\\n            }\\n            prod0 |= prod1 * twos;\\n            // Invert denominator mod 2**256 -\\n            // now that denominator is an odd number, it has an inverse\\n            // modulo 2**256 such that denominator * inv = 1 mod 2**256.\\n            // Compute the inverse by starting with a seed that is correct\\n            // for four bits. That is, denominator * inv = 1 mod 2**4.\\n            uint256 inv = (3 * denominator) ^ 2;\\n            // Now use Newton-Raphson iteration to improve the precision.\\n            // Thanks to Hensel's lifting lemma, this also works in modular\\n            // arithmetic, doubling the correct bits in each step.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**8.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**16.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**32.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**64.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**128.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**256.\\n            // Because the division is now exact we can divide by multiplying\\n            // with the modular inverse of denominator. This will give us the\\n            // correct result modulo 2**256. Since the precoditions guarantee\\n            // that the outcome is less than 2**256, this is the final result.\\n            // We don't need to compute the high bits of the result and prod1\\n            // is no longer required.\\n            result = prod0 * inv;\\n            return result;\\n        }\\n    }\\n\\n    /// @notice Calculates ceil(a\\u00d7b\\u00f7denominator) with full precision - throws if result overflows an uint256 or denominator == 0.\\n    /// @param a The multiplicand.\\n    /// @param b The multiplier.\\n    /// @param denominator The divisor.\\n    /// @return result The 256-bit result.\\n    function mulDivRoundingUp(\\n        uint256 a,\\n        uint256 b,\\n        uint256 denominator\\n    ) internal pure returns (uint256 result) {\\n        result = mulDiv(a, b, denominator);\\n        unchecked {\\n            if (mulmod(a, b, denominator) != 0) {\\n                require(result < type(uint256).max);\\n                result++;\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x8211b004be6ff6be30b81fe484544d00c7bb467a4fd2a0d6c60114353e2300cf\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Math library that facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision.",
            "version": 1
          }
        }
      },
      "contracts/libraries/concentratedPool/SwapLib.sol": {
        "SwapLib": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200ccf5af34eb29f2e7007d3b91f31b638cac3e4994ca0ba3dd80719a3f7c2817464736f6c63430008070033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC 0xCF GAS RETURN 0x4E 0xB2 SWAP16 0x2E PUSH17 0x7D3B91F31B638CAC3E4994CA0BA3DD807 NOT LOG3 0xF7 0xC2 DUP2 PUSH21 0x64736F6C6343000807003300000000000000000000 ",
              "sourceMap": "195:1036:27:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;195:1036:27;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200ccf5af34eb29f2e7007d3b91f31b638cac3e4994ca0ba3dd80719a3f7c2817464736f6c63430008070033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC 0xCF GAS RETURN 0x4E 0xB2 SWAP16 0x2E PUSH17 0x7D3B91F31B638CAC3E4994CA0BA3DD807 NOT LOG3 0xF7 0xC2 DUP2 PUSH21 0x64736F6C6343000807003300000000000000000000 ",
              "sourceMap": "195:1036:27:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "handleFees(uint256,uint24,uint256,uint256,uint256,uint256,uint256,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Math library that facilitates fee handling for Trident Concentrated Liquidity Pools.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/concentratedPool/SwapLib.sol\":\"SwapLib\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/libraries/concentratedPool/FullMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Math library that facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/FullMath.sol.\\n/// @dev Handles \\\"phantom overflow\\\", i.e., allows multiplication and division where an intermediate value overflows 256 bits.\\nlibrary FullMath {\\n    /// @notice Calculates floor(a\\u00d7b\\u00f7denominator) with full precision - throws if result overflows an uint256 or denominator == 0.\\n    /// @param a The multiplicand.\\n    /// @param b The multiplier.\\n    /// @param denominator The divisor.\\n    /// @return result The 256-bit result.\\n    /// @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv.\\n    function mulDiv(\\n        uint256 a,\\n        uint256 b,\\n        uint256 denominator\\n    ) internal pure returns (uint256 result) {\\n        unchecked {\\n            // 512-bit multiply [prod1 prod0] = a * b.\\n            // Compute the product mod 2**256 and mod 2**256 - 1,\\n            // then use the Chinese Remainder Theorem to reconstruct\\n            // the 512 bit result. The result is stored in two 256\\n            // variables such that product = prod1 * 2**256 + prod0.\\n            uint256 prod0; // Least significant 256 bits of the product.\\n            uint256 prod1; // Most significant 256 bits of the product.\\n            assembly {\\n                let mm := mulmod(a, b, not(0))\\n                prod0 := mul(a, b)\\n                prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n            }\\n            // Handle non-overflow cases, 256 by 256 division.\\n            if (prod1 == 0) {\\n                require(denominator > 0);\\n                assembly {\\n                    result := div(prod0, denominator)\\n                }\\n                return result;\\n            }\\n            // Make sure the result is less than 2**256 -\\n            // also prevents denominator == 0.\\n            require(denominator > prod1);\\n            ///////////////////////////////////////////////\\n            // 512 by 256 division.\\n            ///////////////////////////////////////////////\\n            // Make division exact by subtracting the remainder from [prod1 prod0] -\\n            // compute remainder using mulmod.\\n            uint256 remainder;\\n            assembly {\\n                remainder := mulmod(a, b, denominator)\\n            }\\n            // Subtract 256 bit number from 512 bit number.\\n            assembly {\\n                prod1 := sub(prod1, gt(remainder, prod0))\\n                prod0 := sub(prod0, remainder)\\n            }\\n            // Factor powers of two out of denominator -\\n            // compute largest power of two divisor of denominator\\n            // (always >= 1).\\n            uint256 twos = uint256(-int256(denominator)) & denominator;\\n            // Divide denominator by power of two.\\n            assembly {\\n                denominator := div(denominator, twos)\\n            }\\n            // Divide [prod1 prod0] by the factors of two.\\n            assembly {\\n                prod0 := div(prod0, twos)\\n            }\\n            // Shift in bits from prod1 into prod0. For this we need\\n            // to flip `twos` such that it is 2**256 / twos -\\n            // if twos is zero, then it becomes one.\\n            assembly {\\n                twos := add(div(sub(0, twos), twos), 1)\\n            }\\n            prod0 |= prod1 * twos;\\n            // Invert denominator mod 2**256 -\\n            // now that denominator is an odd number, it has an inverse\\n            // modulo 2**256 such that denominator * inv = 1 mod 2**256.\\n            // Compute the inverse by starting with a seed that is correct\\n            // for four bits. That is, denominator * inv = 1 mod 2**4.\\n            uint256 inv = (3 * denominator) ^ 2;\\n            // Now use Newton-Raphson iteration to improve the precision.\\n            // Thanks to Hensel's lifting lemma, this also works in modular\\n            // arithmetic, doubling the correct bits in each step.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**8.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**16.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**32.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**64.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**128.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**256.\\n            // Because the division is now exact we can divide by multiplying\\n            // with the modular inverse of denominator. This will give us the\\n            // correct result modulo 2**256. Since the precoditions guarantee\\n            // that the outcome is less than 2**256, this is the final result.\\n            // We don't need to compute the high bits of the result and prod1\\n            // is no longer required.\\n            result = prod0 * inv;\\n            return result;\\n        }\\n    }\\n\\n    /// @notice Calculates ceil(a\\u00d7b\\u00f7denominator) with full precision - throws if result overflows an uint256 or denominator == 0.\\n    /// @param a The multiplicand.\\n    /// @param b The multiplier.\\n    /// @param denominator The divisor.\\n    /// @return result The 256-bit result.\\n    function mulDivRoundingUp(\\n        uint256 a,\\n        uint256 b,\\n        uint256 denominator\\n    ) internal pure returns (uint256 result) {\\n        result = mulDiv(a, b, denominator);\\n        unchecked {\\n            if (mulmod(a, b, denominator) != 0) {\\n                require(result < type(uint256).max);\\n                result++;\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x8211b004be6ff6be30b81fe484544d00c7bb467a4fd2a0d6c60114353e2300cf\",\"license\":\"MIT\"},\"contracts/libraries/concentratedPool/SwapLib.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./FullMath.sol\\\";\\n\\n/// @notice Math library that facilitates fee handling for Trident Concentrated Liquidity Pools.\\nlibrary SwapLib {\\n    function handleFees(\\n        uint256 output,\\n        uint24 swapFee,\\n        uint256 barFee,\\n        uint256 currentLiquidity,\\n        uint256 totalFeeAmount,\\n        uint256 amountOut,\\n        uint256 protocolFee,\\n        uint256 feeGrowthGlobal\\n    )\\n        internal\\n        pure\\n        returns (\\n            uint256,\\n            uint256,\\n            uint256,\\n            uint256\\n        )\\n    {\\n        uint256 feeAmount = FullMath.mulDivRoundingUp(output, swapFee, 1e6);\\n\\n        totalFeeAmount += feeAmount;\\n\\n        amountOut += output - feeAmount;\\n\\n        // Calculate `protocolFee` and convert pips to bips.\\n        uint256 feeDelta = FullMath.mulDivRoundingUp(feeAmount, barFee, 1e4);\\n\\n        protocolFee += feeDelta;\\n\\n        // Updating `feeAmount` based on the protocolFee.\\n        feeAmount -= feeDelta;\\n\\n        feeGrowthGlobal += FullMath.mulDiv(feeAmount, 0x100000000000000000000000000000000, currentLiquidity);\\n\\n        return (totalFeeAmount, amountOut, protocolFee, feeGrowthGlobal);\\n    }\\n}\\n\",\"keccak256\":\"0x618173841d25c54122f3aea4786b2e235ae2b5f8faba6db44601967b058623bf\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Math library that facilitates fee handling for Trident Concentrated Liquidity Pools.",
            "version": 1
          }
        }
      },
      "contracts/libraries/concentratedPool/TickMath.sol": {
        "TickMath": {
          "abi": [
            {
              "inputs": [],
              "name": "PriceOutOfBounds",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "TickOutOfBounds",
              "type": "error"
            }
          ],
          "devdoc": {
            "author": "Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/TickMath.sol.",
            "kind": "dev",
            "methods": {},
            "stateVariables": {
              "MAX_SQRT_RATIO": {
                "details": "The maximum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MAX_TICK)."
              },
              "MAX_TICK": {
                "details": "The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128 - 1."
              },
              "MIN_SQRT_RATIO": {
                "details": "The minimum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MIN_TICK)."
              },
              "MIN_TICK": {
                "details": "The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220295c94772be9d1e7a997d66fadfd71c76bb0d9e3e4749305784396c6df596e8264736f6c63430008070033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x29 0x5C SWAP5 PUSH24 0x2BE9D1E7A997D66FADFD71C76BB0D9E3E4749305784396C6 0xDF MSIZE PUSH15 0x8264736F6C63430008070033000000 ",
              "sourceMap": "368:8962:28:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;368:8962:28;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220295c94772be9d1e7a997d66fadfd71c76bb0d9e3e4749305784396c6df596e8264736f6c63430008070033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x29 0x5C SWAP5 PUSH24 0x2BE9D1E7A997D66FADFD71C76BB0D9E3E4749305784396C6 0xDF MSIZE PUSH15 0x8264736F6C63430008070033000000 ",
              "sourceMap": "368:8962:28:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "getSqrtRatioAtTick(int24)": "infinite",
                "getTickAtSqrtRatio(uint160)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PriceOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TickOutOfBounds\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/TickMath.sol.\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"MAX_SQRT_RATIO\":{\"details\":\"The maximum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MAX_TICK).\"},\"MAX_TICK\":{\"details\":\"The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128 - 1.\"},\"MIN_SQRT_RATIO\":{\"details\":\"The minimum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MIN_TICK).\"},\"MIN_TICK\":{\"details\":\"The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Math library for computing sqrt price for ticks of size 1.0001, i.e., sqrt(1.0001^tick) as fixed point Q64.96 numbers - supports prices between 2**-128 and 2**128 - 1.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/concentratedPool/TickMath.sol\":\"TickMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/libraries/concentratedPool/TickMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Math library for computing sqrt price for ticks of size 1.0001, i.e., sqrt(1.0001^tick) as fixed point Q64.96 numbers - supports\\n/// prices between 2**-128 and 2**128 - 1.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/TickMath.sol.\\nlibrary TickMath {\\n    /// @dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128.\\n    int24 internal constant MIN_TICK = -887272;\\n    /// @dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128 - 1.\\n    int24 internal constant MAX_TICK = -MIN_TICK;\\n    /// @dev The minimum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MIN_TICK).\\n    uint160 internal constant MIN_SQRT_RATIO = 4295128739;\\n    /// @dev The maximum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MAX_TICK).\\n    uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;\\n\\n    error TickOutOfBounds();\\n    error PriceOutOfBounds();\\n\\n    /// @notice Calculates sqrt(1.0001^tick) * 2^96.\\n    /// @dev Throws if |tick| > max tick.\\n    /// @param tick The input tick for the above formula.\\n    /// @return sqrtPriceX96 Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\\n    /// at the given tick.\\n    function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {\\n        uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));\\n        if (absTick > uint256(uint24(MAX_TICK))) revert TickOutOfBounds();\\n        unchecked {\\n            uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;\\n            if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;\\n            if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;\\n            if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;\\n            if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;\\n            if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;\\n            if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;\\n            if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;\\n            if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;\\n            if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;\\n            if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;\\n            if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;\\n            if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;\\n            if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;\\n            if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;\\n            if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;\\n            if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;\\n            if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;\\n            if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;\\n            if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;\\n\\n            if (tick > 0) ratio = type(uint256).max / ratio;\\n            // This divides by 1<<32 rounding up to go from a Q128.128 to a Q128.96.\\n            // We then downcast because we know the result always fits within 160 bits due to our tick input constraint.\\n            // We round up in the division so getTickAtSqrtRatio of the output price is always consistent.\\n            sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));\\n        }\\n    }\\n\\n    /// @notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio.\\n    /// @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\\n    /// ever return.\\n    /// @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96.\\n    /// @return tick The greatest tick for which the ratio is less than or equal to the input ratio.\\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {\\n        // Second inequality must be < because the price can never reach the price at the max tick.\\n        if (sqrtPriceX96 < MIN_SQRT_RATIO || sqrtPriceX96 >= MAX_SQRT_RATIO) revert PriceOutOfBounds();\\n        uint256 ratio = uint256(sqrtPriceX96) << 32;\\n\\n        uint256 r = ratio;\\n        uint256 msb;\\n\\n        assembly {\\n            let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(5, gt(r, 0xFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(4, gt(r, 0xFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(3, gt(r, 0xFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(2, gt(r, 0xF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(1, gt(r, 0x3))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := gt(r, 0x1)\\n            msb := or(msb, f)\\n        }\\n        unchecked {\\n            if (msb >= 128) r = ratio >> (msb - 127);\\n            else r = ratio << (127 - msb);\\n\\n            int256 log_2 = (int256(msb) - 128) << 64;\\n\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(63, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(62, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(61, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(60, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(59, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(58, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(57, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(56, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(55, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(54, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(53, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(52, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(51, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(50, f))\\n            }\\n\\n            int256 log_sqrt10001 = log_2 * 255738958999603826347141; // 128.128 number.\\n\\n            int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);\\n            int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);\\n\\n            tick = tickLow == tickHi ? tickLow : getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x78121358a23f8c7f267cc4622b3cd0d94970018c637c61a9f2e99a0fa40b7bda\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Math library for computing sqrt price for ticks of size 1.0001, i.e., sqrt(1.0001^tick) as fixed point Q64.96 numbers - supports prices between 2**-128 and 2**128 - 1.",
            "version": 1
          }
        }
      },
      "contracts/libraries/concentratedPool/Ticks.sol": {
        "Ticks": {
          "abi": [
            {
              "inputs": [],
              "name": "PriceOutOfBounds",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "TickOutOfBounds",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint24",
                  "name": "_tickSpacing",
                  "type": "uint24"
                }
              ],
              "name": "getMaxLiquidity",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "",
                  "type": "uint128"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "611ba961003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c806333440084146100505780633c5474df14610088578063dc47a5c2146100a8575b600080fd5b81801561005c57600080fd5b5061007061006b366004611916565b6100dc565b60405160029190910b81526020015b60405180910390f35b81801561009457600080fd5b506100706100a33660046118b8565b610cfe565b6100bb6100b63660046119cd565b6110cf565b6040516fffffffffffffffffffffffffffffffff909116815260200161007f565b60008460020b8760020b12610152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f57524f4e475f4f5244455200000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600287900b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761813156101e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4c4f5745525f52414e47450000000000000000000000000000000000000000006044820152606401610149565b6102097ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618611a9d565b60020b8560020b1315610278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f55505045525f52414e47450000000000000000000000000000000000000000006044820152606401610149565b600287810b900b600090815260208d90526040902054660100000000000090046fffffffffffffffffffffffffffffffff16801515806102db5750600288900b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618145b1561034e576102ea85826119f9565b600289810b900b600090815260208f90526040902080546fffffffffffffffffffffffffffffffff929092166601000000000000027fffffffffffffffffffff00000000000000000000000000000000ffffffffffff909216919091179055610797565b600289810b810b600090815260208f9052604090208054909163010000008204900b90660100000000000090046fffffffffffffffffffffffffffffffff161515806103bd575060028b900b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618145b80156103ce57508960020b8b60020b125b80156103df57508060020b8a60020b125b610445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4c4f5745525f4f524445520000000000000000000000000000000000000000006044820152606401610149565b8560020b8a60020b136105b7576040518060c001604052808c60020b81526020018260020b8152602001886fffffffffffffffffffffffffffffffff1681526020018f81526020018e81526020018d73ffffffffffffffffffffffffffffffffffffffff168152508f60008c60020b60020b815260200190815260200160002060008201518160000160006101000a81548162ffffff021916908360020b62ffffff16021790555060208201518160000160036101000a81548162ffffff021916908360020b62ffffff16021790555060408201518160000160066101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550606082015181600101556080820151816002015560a08201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555090505061071b565b6040518060c001604052808c60020b81526020018260020b8152602001886fffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152508f60008c60020b60020b815260200190815260200160002060008201518160000160006101000a81548162ffffff021916908360020b62ffffff16021790555060208201518160000160036101000a81548162ffffff021916908360020b62ffffff16021790555060408201518160000160066101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550606082015181600101556080820151816002015560a08201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050505b815460028b810b62ffffff16630100000081027fffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff9093169290921790935590820b90910b600090815260208f90526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001690911790555b50600285810b900b600090815260208d90526040902054660100000000000090046fffffffffffffffffffffffffffffffff168015158061080557506107fc7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618611a9d565b60020b8660020b145b156108785761081485826119f9565b600287810b900b600090815260208f90526040902080546fffffffffffffffffffffffffffffffff929092166601000000000000027fffffffffffffffffffff00000000000000000000000000000000ffffffffffff909216919091179055610c93565b600287810b810b600090815260208f9052604090208054909163010000008204900b90660100000000000090046fffffffffffffffffffffffffffffffff16158015906108ca57508760020b8160020b135b80156108db57508760020b8960020b125b610941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f55505045525f4f524445520000000000000000000000000000000000000000006044820152606401610149565b8560020b8860020b13610ab3576040518060c001604052808a60020b81526020018260020b8152602001886fffffffffffffffffffffffffffffffff1681526020018f81526020018e81526020018d73ffffffffffffffffffffffffffffffffffffffff168152508f60008a60020b60020b815260200190815260200160002060008201518160000160006101000a81548162ffffff021916908360020b62ffffff16021790555060208201518160000160036101000a81548162ffffff021916908360020b62ffffff16021790555060408201518160000160066101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550606082015181600101556080820151816002015560a08201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050610c17565b6040518060c001604052808a60020b81526020018260020b8152602001886fffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152508f60008a60020b60020b815260200190815260200160002060008201518160000160006101000a81548162ffffff021916908360020b62ffffff16021790555060208201518160000160036101000a81548162ffffff021916908360020b62ffffff16021790555060408201518160000160066101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550606082015181600101556080820151816002015560a08201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050505b8154600289810b62ffffff16630100000081027fffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff9093169290921790935590820b90910b600090815260208f90526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001690911790555b6000610c9e84611134565b90508660020b8560020b128015610cbb57508060020b8760020b13155b15610cc857869450610cec565b8860020b8560020b128015610ce357508060020b8960020b13155b15610cec578894505b50929c9b505050505050505050505050565b600284810b9081900b600090815260208790526040812090917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761814801590610d65575080546fffffffffffffffffffffffffffffffff858116660100000000000090920416145b15610e8c578054600281810b810b810b600090815260208a90526040808220630100000094859004840b840b80850b84529190922082547fffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff1662ffffff928316909502949094178255845484547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001690840b840b909116178355919088810b9086900b1415610e1657825460020b94505b5050600286810b810b600090815260208990526040812080547fffffffffffffffffffff00000000000000000000000000000000000000000000168155600181018290559182015560030180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610edb565b80546fffffffffffffffffffffffffffffffff66010000000000008083048216879003909116027fffffffffffffffffffff00000000000000000000000000000000ffffffffffff9091161781555b50600284810b900b6000908152602087905260409020610f1a7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618611a9d565b60020b8560020b14158015610f4e575080546fffffffffffffffffffffffffffffffff858116660100000000000090920416145b15611075578054600281810b810b810b600090815260208a90526040808220630100000094859004840b840b80850b84529190922082547fffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff1662ffffff928316909502949094178255845484547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001690840b840b909116178355919087810b9086900b1415610fff57825460020b94505b5050600285810b810b600090815260208990526040812080547fffffffffffffffffffff00000000000000000000000000000000000000000000168155600181018290559182015560030180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556110c4565b80546fffffffffffffffffffffffffffffffff66010000000000008083048216879003909116027fffffffffffffffffffff00000000000000000000000000000000ffffffffffff9091161781555b509095945050505050565b60006110dc826002611a72565b6111057ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618611a9d565b61110f9190611a5c565b61112e9062ffffff166fffffffffffffffffffffffffffffffff611a2d565b92915050565b60006401000276a373ffffffffffffffffffffffffffffffffffffffff83161080611189575073fffd8963efd1fc6a506488495d951d5263988d2673ffffffffffffffffffffffffffffffffffffffff831610155b156111c0576040517f6e4ba61d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166fffffffffffffffffffffffffffffffff811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c9790881196179094179092171790911717176080811061126a57607f810383901c9150611274565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc5568101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146114bb578873ffffffffffffffffffffffffffffffffffffffff16611493826114ca565b73ffffffffffffffffffffffffffffffffffffffff1611156114b557816114bd565b806114bd565b815b9998505050505050505050565b60008060008360020b126114e1578260020b6114ee565b8260020b6114ee90611adc565b90506115197ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618611a9d565b62ffffff16811115611557576040517ff87dc40c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600182166115785770010000000000000000000000000000000061158a565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156115be576ffff97272373d413259a46990580e213a0260801c5b60048216156115dd576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156115fc576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161561161b576fffcb9843d60f6159c9db58835c9266440260801c5b602082161561163a576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611659576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611678576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611698576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156116b8576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156116d8576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156116f8576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611718576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611738576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611758576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611778576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611799576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156117b9576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156117d8576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156117f5576b048a170391f7dc42444e8fa20260801c5b60008460020b131561183457807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8161183057611830611b44565b0490505b64010000000081061561184857600161184b565b60005b60ff16602082901c0192505050919050565b8035600281900b811461186f57600080fd5b919050565b80356fffffffffffffffffffffffffffffffff8116811461186f57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461186f57600080fd5b600080600080600060a086880312156118d057600080fd5b853594506118e06020870161185d565b93506118ee6040870161185d565b92506118fc60608701611874565b915061190a6080870161185d565b90509295509295909350565b60008060008060008060008060008060006101608c8e03121561193857600080fd5b8b359a5060208c0135995060408c0135985061195660608d01611894565b975061196460808d0161185d565b965061197260a08d0161185d565b955061198060c08d0161185d565b945061198e60e08d0161185d565b935061199d6101008d01611874565b92506119ac6101208d0161185d565b91506119bb6101408d01611894565b90509295989b509295989b9093969950565b6000602082840312156119df57600080fd5b813562ffffff811681146119f257600080fd5b9392505050565b60006fffffffffffffffffffffffffffffffff808316818516808303821115611a2457611a24611b15565b01949350505050565b60006fffffffffffffffffffffffffffffffff80841680611a5057611a50611b44565b92169190910492915050565b600062ffffff80841680611a5057611a50611b44565b600062ffffff80831681851681830481118215151615611a9457611a94611b15565b02949350505050565b60008160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000811415611ad357611ad3611b15565b60000392915050565b60007f8000000000000000000000000000000000000000000000000000000000000000821415611b0e57611b0e611b15565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea264697066735822122011106fd588514bbcc8e1efdaa732e0b740563788b05e5a7caebd868c56d1361a64736f6c63430008070033",
              "opcodes": "PUSH2 0x1BA9 PUSH2 0x3A PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x2D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x33440084 EQ PUSH2 0x50 JUMPI DUP1 PUSH4 0x3C5474DF EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0xDC47A5C2 EQ PUSH2 0xA8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x70 PUSH2 0x6B CALLDATASIZE PUSH1 0x4 PUSH2 0x1916 JUMP JUMPDEST PUSH2 0xDC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x70 PUSH2 0xA3 CALLDATASIZE PUSH1 0x4 PUSH2 0x18B8 JUMP JUMPDEST PUSH2 0xCFE JUMP JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x19CD JUMP JUMPDEST PUSH2 0x10CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x7F JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP8 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x152 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57524F4E475F4F52444552000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP8 SWAP1 SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 SGT ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F5745525F52414E4745000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x149 JUMP JUMPDEST PUSH2 0x209 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x278 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x55505045525F52414E4745000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x149 JUMP JUMPDEST PUSH1 0x2 DUP8 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 ISZERO ISZERO DUP1 PUSH2 0x2DB JUMPI POP PUSH1 0x2 DUP9 SWAP1 SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 EQ JUMPDEST ISZERO PUSH2 0x34E JUMPI PUSH2 0x2EA DUP6 DUP3 PUSH2 0x19F9 JUMP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP16 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH7 0x1000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x797 JUMP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP16 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH4 0x1000000 DUP3 DIV SWAP1 SIGNEXTEND SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO DUP1 PUSH2 0x3BD JUMPI POP PUSH1 0x2 DUP12 SWAP1 SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 EQ JUMPDEST DUP1 ISZERO PUSH2 0x3CE JUMPI POP DUP10 PUSH1 0x2 SIGNEXTEND DUP12 PUSH1 0x2 SIGNEXTEND SLT JUMPDEST DUP1 ISZERO PUSH2 0x3DF JUMPI POP DUP1 PUSH1 0x2 SIGNEXTEND DUP11 PUSH1 0x2 SIGNEXTEND SLT JUMPDEST PUSH2 0x445 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F5745525F4F52444552000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x149 JUMP JUMPDEST DUP6 PUSH1 0x2 SIGNEXTEND DUP11 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x5B7 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP13 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP16 DUP2 MSTORE PUSH1 0x20 ADD DUP15 DUP2 MSTORE PUSH1 0x20 ADD DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP16 PUSH1 0x0 DUP13 PUSH1 0x2 SIGNEXTEND PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x3 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x6 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH2 0x71B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP13 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP16 PUSH1 0x0 DUP13 PUSH1 0x2 SIGNEXTEND PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x3 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x6 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP1 POP POP JUMPDEST DUP2 SLOAD PUSH1 0x2 DUP12 DUP2 SIGNEXTEND PUSH3 0xFFFFFF AND PUSH4 0x1000000 DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP4 SSTORE SWAP1 DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP16 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST POP PUSH1 0x2 DUP6 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 ISZERO ISZERO DUP1 PUSH2 0x805 JUMPI POP PUSH2 0x7FC PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND EQ JUMPDEST ISZERO PUSH2 0x878 JUMPI PUSH2 0x814 DUP6 DUP3 PUSH2 0x19F9 JUMP JUMPDEST PUSH1 0x2 DUP8 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP16 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH7 0x1000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xC93 JUMP JUMPDEST PUSH1 0x2 DUP8 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP16 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH4 0x1000000 DUP3 DIV SWAP1 SIGNEXTEND SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x8CA JUMPI POP DUP8 PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x2 SIGNEXTEND SGT JUMPDEST DUP1 ISZERO PUSH2 0x8DB JUMPI POP DUP8 PUSH1 0x2 SIGNEXTEND DUP10 PUSH1 0x2 SIGNEXTEND SLT JUMPDEST PUSH2 0x941 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x55505045525F4F52444552000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x149 JUMP JUMPDEST DUP6 PUSH1 0x2 SIGNEXTEND DUP9 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0xAB3 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP11 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP16 DUP2 MSTORE PUSH1 0x20 ADD DUP15 DUP2 MSTORE PUSH1 0x20 ADD DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP16 PUSH1 0x0 DUP11 PUSH1 0x2 SIGNEXTEND PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x3 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x6 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH2 0xC17 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP11 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP16 PUSH1 0x0 DUP11 PUSH1 0x2 SIGNEXTEND PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x3 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x6 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP1 POP POP JUMPDEST DUP2 SLOAD PUSH1 0x2 DUP10 DUP2 SIGNEXTEND PUSH3 0xFFFFFF AND PUSH4 0x1000000 DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP4 SSTORE SWAP1 DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP16 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0xC9E DUP5 PUSH2 0x1134 JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0xCBB JUMPI POP DUP1 PUSH1 0x2 SIGNEXTEND DUP8 PUSH1 0x2 SIGNEXTEND SGT ISZERO JUMPDEST ISZERO PUSH2 0xCC8 JUMPI DUP7 SWAP5 POP PUSH2 0xCEC JUMP JUMPDEST DUP9 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0xCE3 JUMPI POP DUP1 PUSH1 0x2 SIGNEXTEND DUP10 PUSH1 0x2 SIGNEXTEND SGT ISZERO JUMPDEST ISZERO PUSH2 0xCEC JUMPI DUP9 SWAP5 POP JUMPDEST POP SWAP3 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP5 DUP2 SIGNEXTEND SWAP1 DUP2 SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 EQ DUP1 ISZERO SWAP1 PUSH2 0xD65 JUMPI POP DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH7 0x1000000000000 SWAP1 SWAP3 DIV AND EQ JUMPDEST ISZERO PUSH2 0xE8C JUMPI DUP1 SLOAD PUSH1 0x2 DUP2 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP11 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH4 0x1000000 SWAP5 DUP6 SWAP1 DIV DUP5 SIGNEXTEND DUP5 SIGNEXTEND DUP1 DUP6 SIGNEXTEND DUP5 MSTORE SWAP2 SWAP1 SWAP3 KECCAK256 DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF AND PUSH3 0xFFFFFF SWAP3 DUP4 AND SWAP1 SWAP6 MUL SWAP5 SWAP1 SWAP5 OR DUP3 SSTORE DUP5 SLOAD DUP5 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 AND SWAP1 DUP5 SIGNEXTEND DUP5 SIGNEXTEND SWAP1 SWAP2 AND OR DUP4 SSTORE SWAP2 SWAP1 DUP9 DUP2 SIGNEXTEND SWAP1 DUP7 SWAP1 SIGNEXTEND EQ ISZERO PUSH2 0xE16 JUMPI DUP3 SLOAD PUSH1 0x2 SIGNEXTEND SWAP5 POP JUMPDEST POP POP PUSH1 0x2 DUP7 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 AND DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP3 SWAP1 SSTORE SWAP2 DUP3 ADD SSTORE PUSH1 0x3 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE PUSH2 0xEDB JUMP JUMPDEST DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH7 0x1000000000000 DUP1 DUP4 DIV DUP3 AND DUP8 SWAP1 SUB SWAP1 SWAP2 AND MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFF SWAP1 SWAP2 AND OR DUP2 SSTORE JUMPDEST POP PUSH1 0x2 DUP5 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xF1A PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND EQ ISZERO DUP1 ISZERO PUSH2 0xF4E JUMPI POP DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH7 0x1000000000000 SWAP1 SWAP3 DIV AND EQ JUMPDEST ISZERO PUSH2 0x1075 JUMPI DUP1 SLOAD PUSH1 0x2 DUP2 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP11 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH4 0x1000000 SWAP5 DUP6 SWAP1 DIV DUP5 SIGNEXTEND DUP5 SIGNEXTEND DUP1 DUP6 SIGNEXTEND DUP5 MSTORE SWAP2 SWAP1 SWAP3 KECCAK256 DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF AND PUSH3 0xFFFFFF SWAP3 DUP4 AND SWAP1 SWAP6 MUL SWAP5 SWAP1 SWAP5 OR DUP3 SSTORE DUP5 SLOAD DUP5 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 AND SWAP1 DUP5 SIGNEXTEND DUP5 SIGNEXTEND SWAP1 SWAP2 AND OR DUP4 SSTORE SWAP2 SWAP1 DUP8 DUP2 SIGNEXTEND SWAP1 DUP7 SWAP1 SIGNEXTEND EQ ISZERO PUSH2 0xFFF JUMPI DUP3 SLOAD PUSH1 0x2 SIGNEXTEND SWAP5 POP JUMPDEST POP POP PUSH1 0x2 DUP6 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 AND DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP3 SWAP1 SSTORE SWAP2 DUP3 ADD SSTORE PUSH1 0x3 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE PUSH2 0x10C4 JUMP JUMPDEST DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH7 0x1000000000000 DUP1 DUP4 DIV DUP3 AND DUP8 SWAP1 SUB SWAP1 SWAP2 AND MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFF SWAP1 SWAP2 AND OR DUP2 SSTORE JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10DC DUP3 PUSH1 0x2 PUSH2 0x1A72 JUMP JUMPDEST PUSH2 0x1105 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x1A9D JUMP JUMPDEST PUSH2 0x110F SWAP2 SWAP1 PUSH2 0x1A5C JUMP JUMPDEST PUSH2 0x112E SWAP1 PUSH3 0xFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1A2D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH5 0x1000276A3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND LT DUP1 PUSH2 0x1189 JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x11C0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6E4BA61D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x7 SHL DUP2 DUP2 SHR PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x6 SHL SWAP1 DUP2 SHR PUSH4 0xFFFFFFFF DUP2 GT PUSH1 0x5 SHL SWAP1 DUP2 SHR PUSH2 0xFFFF DUP2 GT PUSH1 0x4 SHL SWAP1 DUP2 SHR PUSH1 0xFF DUP2 GT PUSH1 0x3 SWAP1 DUP2 SHL SWAP2 DUP3 SHR PUSH1 0xF DUP2 GT PUSH1 0x2 SHL SWAP1 DUP2 SHR SWAP2 DUP3 GT PUSH1 0x1 SWAP1 DUP2 SHL SWAP3 DUP4 SHR SWAP8 SWAP1 DUP9 GT SWAP7 OR SWAP1 SWAP5 OR SWAP1 SWAP3 OR OR SWAP1 SWAP2 OR OR OR PUSH1 0x80 DUP2 LT PUSH2 0x126A JUMPI PUSH1 0x7F DUP2 SUB DUP4 SWAP1 SHR SWAP2 POP PUSH2 0x1274 JUMP JUMPDEST DUP1 PUSH1 0x7F SUB DUP4 SWAP1 SHL SWAP2 POP JUMPDEST SWAP1 DUP1 MUL PUSH1 0x7F DUP2 DUP2 SHR PUSH1 0xFF DUP4 DUP2 SHR SWAP2 SWAP1 SWAP2 SHR DUP1 MUL DUP1 DUP4 SHR DUP2 DUP4 SHR SHR DUP1 MUL DUP1 DUP5 SHR DUP2 DUP5 SHR SHR DUP1 MUL DUP1 DUP6 SHR DUP2 DUP6 SHR SHR DUP1 MUL DUP1 DUP7 SHR DUP2 DUP7 SHR SHR DUP1 MUL DUP1 DUP8 SHR DUP2 DUP8 SHR SHR DUP1 MUL DUP1 DUP9 SHR DUP2 DUP9 SHR SHR DUP1 MUL DUP1 DUP10 SHR DUP2 DUP10 SHR SHR DUP1 MUL DUP1 DUP11 SHR DUP2 DUP11 SHR SHR DUP1 MUL DUP1 DUP12 SHR DUP2 DUP12 SHR SHR DUP1 MUL DUP1 DUP13 SHR DUP2 DUP13 SHR SHR DUP1 MUL DUP1 DUP14 SHR DUP2 DUP14 SHR SHR DUP1 MUL DUP1 DUP15 SHR SWAP13 DUP2 SWAP1 SHR SWAP13 SWAP1 SWAP13 SHR DUP1 MUL SWAP13 DUP14 SWAP1 SHR SWAP15 SWAP14 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 DUP16 ADD PUSH1 0x40 SHL PUSH1 0xC0 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x8000000000000000 AND OR PUSH1 0xC1 SWAP12 SWAP1 SWAP12 SHR PUSH8 0x4000000000000000 AND SWAP11 SWAP1 SWAP11 OR PUSH1 0xC2 SWAP10 SWAP1 SWAP10 SHR PUSH8 0x2000000000000000 AND SWAP9 SWAP1 SWAP9 OR PUSH1 0xC3 SWAP8 SWAP1 SWAP8 SHR PUSH8 0x1000000000000000 AND SWAP7 SWAP1 SWAP7 OR PUSH1 0xC4 SWAP6 SWAP1 SWAP6 SHR PUSH8 0x800000000000000 AND SWAP5 SWAP1 SWAP5 OR PUSH1 0xC5 SWAP4 SWAP1 SWAP4 SHR PUSH8 0x400000000000000 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0xC6 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x200000000000000 AND OR PUSH1 0xC7 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x100000000000000 AND OR PUSH1 0xC8 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x80000000000000 AND OR PUSH1 0xC9 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x40000000000000 AND OR PUSH1 0xCA SWAP2 SWAP1 SWAP2 SHR PUSH7 0x20000000000000 AND OR PUSH1 0xCB SWAP2 SWAP1 SWAP2 SHR PUSH7 0x10000000000000 AND OR PUSH1 0xCC SWAP2 SWAP1 SWAP2 SHR PUSH7 0x8000000000000 AND OR PUSH1 0xCD SWAP2 SWAP1 SWAP2 SHR PUSH7 0x4000000000000 AND OR PUSH10 0x3627A301D71055774C85 DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD709B7E5480FBA5A50FED5E62FFC556 DUP2 ADD PUSH1 0x80 SWAP1 DUP2 SAR SWAP1 PUSH16 0xDB2DF09E81959A81455E260799A0632F DUP4 ADD SWAP1 SAR PUSH1 0x2 DUP2 DUP2 SIGNEXTEND SWAP1 DUP4 SWAP1 SIGNEXTEND EQ PUSH2 0x14BB JUMPI DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1493 DUP3 PUSH2 0x14CA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x14B5 JUMPI DUP2 PUSH2 0x14BD JUMP JUMPDEST DUP1 PUSH2 0x14BD JUMP JUMPDEST DUP2 JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x14E1 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x14EE JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x14EE SWAP1 PUSH2 0x1ADC JUMP JUMPDEST SWAP1 POP PUSH2 0x1519 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x1A9D JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 GT ISZERO PUSH2 0x1557 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF87DC40C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x1578 JUMPI PUSH17 0x100000000000000000000000000000000 PUSH2 0x158A JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x15BE JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x15DD JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x15FC JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x161B JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x163A JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x1659 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x1678 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x1698 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x16B8 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x16D8 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x16F8 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x1718 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x1738 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x1758 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x1778 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x1799 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x17B9 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x17D8 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x17F5 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x1834 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 PUSH2 0x1830 JUMPI PUSH2 0x1830 PUSH2 0x1B44 JUMP JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x1848 JUMPI PUSH1 0x1 PUSH2 0x184B JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x186F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x186F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x186F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x18D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH2 0x18E0 PUSH1 0x20 DUP8 ADD PUSH2 0x185D JUMP JUMPDEST SWAP4 POP PUSH2 0x18EE PUSH1 0x40 DUP8 ADD PUSH2 0x185D JUMP JUMPDEST SWAP3 POP PUSH2 0x18FC PUSH1 0x60 DUP8 ADD PUSH2 0x1874 JUMP JUMPDEST SWAP2 POP PUSH2 0x190A PUSH1 0x80 DUP8 ADD PUSH2 0x185D JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x1938 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP12 CALLDATALOAD SWAP11 POP PUSH1 0x20 DUP13 ADD CALLDATALOAD SWAP10 POP PUSH1 0x40 DUP13 ADD CALLDATALOAD SWAP9 POP PUSH2 0x1956 PUSH1 0x60 DUP14 ADD PUSH2 0x1894 JUMP JUMPDEST SWAP8 POP PUSH2 0x1964 PUSH1 0x80 DUP14 ADD PUSH2 0x185D JUMP JUMPDEST SWAP7 POP PUSH2 0x1972 PUSH1 0xA0 DUP14 ADD PUSH2 0x185D JUMP JUMPDEST SWAP6 POP PUSH2 0x1980 PUSH1 0xC0 DUP14 ADD PUSH2 0x185D JUMP JUMPDEST SWAP5 POP PUSH2 0x198E PUSH1 0xE0 DUP14 ADD PUSH2 0x185D JUMP JUMPDEST SWAP4 POP PUSH2 0x199D PUSH2 0x100 DUP14 ADD PUSH2 0x1874 JUMP JUMPDEST SWAP3 POP PUSH2 0x19AC PUSH2 0x120 DUP14 ADD PUSH2 0x185D JUMP JUMPDEST SWAP2 POP PUSH2 0x19BB PUSH2 0x140 DUP14 ADD PUSH2 0x1894 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x19DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x19F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x1A24 JUMPI PUSH2 0x1A24 PUSH2 0x1B15 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND DUP1 PUSH2 0x1A50 JUMPI PUSH2 0x1A50 PUSH2 0x1B44 JUMP JUMPDEST SWAP3 AND SWAP2 SWAP1 SWAP2 DIV SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xFFFFFF DUP1 DUP5 AND DUP1 PUSH2 0x1A50 JUMPI PUSH2 0x1A50 PUSH2 0x1B44 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP2 DUP4 DIV DUP2 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x1A94 JUMPI PUSH2 0x1A94 PUSH2 0x1B15 JUMP JUMPDEST MUL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000 DUP2 EQ ISZERO PUSH2 0x1AD3 JUMPI PUSH2 0x1AD3 PUSH2 0x1B15 JUMP JUMPDEST PUSH1 0x0 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ ISZERO PUSH2 0x1B0E JUMPI PUSH2 0x1B0E PUSH2 0x1B15 JUMP JUMPDEST POP PUSH1 0x0 SUB SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GT LT PUSH16 0xD588514BBCC8E1EFDAA732E0B7405637 DUP9 0xB0 0x5E GAS PUSH29 0xAEBD868C56D1361A64736F6C6343000807003300000000000000000000 ",
              "sourceMap": "186:6512:29:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;186:6512:29;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@getMaxLiquidity_4266": {
                  "entryPoint": 4303,
                  "id": 4266,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getSqrtRatioAtTick_4077": {
                  "entryPoint": 5322,
                  "id": 4077,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getTickAtSqrtRatio_4216": {
                  "entryPoint": 4404,
                  "id": 4216,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@insert_4735": {
                  "entryPoint": 220,
                  "id": 4735,
                  "parameterSlots": 11,
                  "returnSlots": 1
                },
                "@remove_4905": {
                  "entryPoint": 3326,
                  "id": 4905,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_decode_int24": {
                  "entryPoint": 6237,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$t_int24t_int24t_uint128t_int24": {
                  "entryPoint": 6328,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$t_uint256t_uint256t_uint160t_int24t_int24t_int24t_int24t_uint128t_int24t_uint160": {
                  "entryPoint": 6422,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 11
                },
                "abi_decode_tuple_t_uint24": {
                  "entryPoint": 6605,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_uint128": {
                  "entryPoint": 6260,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_uint160": {
                  "entryPoint": 6292,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_int24__to_t_int24__fromStack_library_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_226b47270794b9ea549ee3795bb5a416c284936ec88c0783c34f02074948c922__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_2950e14a68a47101a6a90153db4d05b537a0e68e7cb02e2cb883021bc72dc5c3__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_29e52788a32d555df09b373344c96b90696cde297ff0d3b9367c31a17328dfbb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_463260975839e1d8d74fbc6b529aa07ae59353aa2e6221a412d140a476ad9cb3__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_908caf2bfeb1978c79c58a73c3ee93f7194b51a5f66ced040e1bfa44f26e40fb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint128__to_t_uint128__fromStack_library_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint128": {
                  "entryPoint": 6649,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint128": {
                  "entryPoint": 6701,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint24": {
                  "entryPoint": 6748,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint24": {
                  "entryPoint": 6770,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "negate_t_int24": {
                  "entryPoint": 6813,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "negate_t_int256": {
                  "entryPoint": 6876,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 6933,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": 6980,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:6194:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "61:113:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "71:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "93:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "80:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "80:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "71:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "152:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "161:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "164:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "154:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "154:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "154:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "122:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "140:1:64",
                                            "type": "",
                                            "value": "2"
                                          },
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "143:5:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "signextend",
                                          "nodeType": "YulIdentifier",
                                          "src": "129:10:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "129:20:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "119:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "119:31:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "112:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "112:39:64"
                              },
                              "nodeType": "YulIf",
                              "src": "109:59:64"
                            }
                          ]
                        },
                        "name": "abi_decode_int24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "40:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "51:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:160:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "228:139:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "238:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "260:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "247:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "247:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "238:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "345:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "354:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "357:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "347:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "347:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "347:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "289:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "300:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "307:34:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "296:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "296:46:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "286:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "286:57:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "279:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "279:65:64"
                              },
                              "nodeType": "YulIf",
                              "src": "276:85:64"
                            }
                          ]
                        },
                        "name": "abi_decode_uint128",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "207:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "218:5:64",
                            "type": ""
                          }
                        ],
                        "src": "179:188:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "421:147:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "431:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "453:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "440:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "440:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "431:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "546:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "555:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "558:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "548:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "548:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "548:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "482:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "493:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "500:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "489:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "489:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "479:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "479:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "472:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "472:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "469:93:64"
                            }
                          ]
                        },
                        "name": "abi_decode_uint160",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "400:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "411:5:64",
                            "type": ""
                          }
                        ],
                        "src": "372:196:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "747:334:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "794:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "803:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "806:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "796:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "796:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "796:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "768:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "777:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "764:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "764:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "789:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "760:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "760:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "757:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "819:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "842:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "829:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "829:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "819:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "861:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "892:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "903:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "888:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "888:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "871:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "871:36:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "861:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "916:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "947:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "958:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "943:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "943:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "926:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "926:36:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "916:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "971:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1004:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1015:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1000:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1000:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint128",
                                  "nodeType": "YulIdentifier",
                                  "src": "981:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "981:38:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "971:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1028:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1059:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1070:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1055:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1055:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "1038:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1038:37:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "1028:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$t_int24t_int24t_uint128t_int24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "681:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "692:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "704:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "712:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "720:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "728:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "736:6:64",
                            "type": ""
                          }
                        ],
                        "src": "573:508:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1359:667:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1406:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1415:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1418:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1408:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1408:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1408:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1380:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1389:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1376:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1376:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1401:3:64",
                                    "type": "",
                                    "value": "352"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1372:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1372:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1369:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1431:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1454:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1441:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1441:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1431:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1473:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1500:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1511:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1496:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1496:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1483:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1483:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1473:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1524:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1551:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1562:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1547:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1547:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1534:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1534:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1524:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1575:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1608:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1619:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1604:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1604:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint160",
                                  "nodeType": "YulIdentifier",
                                  "src": "1585:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1585:38:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1575:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1632:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1663:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1674:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1659:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1659:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "1642:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1642:37:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "1632:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1688:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1719:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1730:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1715:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1715:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "1698:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1698:37:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "1688:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1744:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1775:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1786:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1771:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1771:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "1754:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1754:37:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1744:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1800:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1831:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1842:3:64",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1827:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1827:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "1810:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1810:37:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value7",
                                  "nodeType": "YulIdentifier",
                                  "src": "1800:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1856:49:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1889:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1900:3:64",
                                        "type": "",
                                        "value": "256"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1885:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1885:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint128",
                                  "nodeType": "YulIdentifier",
                                  "src": "1866:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1866:39:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value8",
                                  "nodeType": "YulIdentifier",
                                  "src": "1856:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1914:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1945:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1956:3:64",
                                        "type": "",
                                        "value": "288"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1941:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1941:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "1924:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1924:37:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value9",
                                  "nodeType": "YulIdentifier",
                                  "src": "1914:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1970:50:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2004:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2015:3:64",
                                        "type": "",
                                        "value": "320"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2000:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2000:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint160",
                                  "nodeType": "YulIdentifier",
                                  "src": "1981:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1981:39:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value10",
                                  "nodeType": "YulIdentifier",
                                  "src": "1970:7:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$t_uint256t_uint256t_uint160t_int24t_int24t_int24t_int24t_uint128t_int24t_uint160",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1244:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1255:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1267:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1275:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1283:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1291:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1299:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "1307:6:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "1315:6:64",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "1323:6:64",
                            "type": ""
                          },
                          {
                            "name": "value8",
                            "nodeType": "YulTypedName",
                            "src": "1331:6:64",
                            "type": ""
                          },
                          {
                            "name": "value9",
                            "nodeType": "YulTypedName",
                            "src": "1339:6:64",
                            "type": ""
                          },
                          {
                            "name": "value10",
                            "nodeType": "YulTypedName",
                            "src": "1347:7:64",
                            "type": ""
                          }
                        ],
                        "src": "1086:940:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2100:205:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2146:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2155:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2158:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2148:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2148:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2148:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2121:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2130:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2117:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2117:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2142:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2113:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2113:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2110:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2171:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2197:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2184:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2184:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2175:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2259:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2268:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2271:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2261:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2261:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2261:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2229:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2240:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2247:8:64",
                                            "type": "",
                                            "value": "0xffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2236:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2236:20:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2226:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2226:31:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2219:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2219:39:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2216:59:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2284:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2294:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2284:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2066:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2077:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2089:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2031:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2415:91:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2425:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2437:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2448:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2433:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2433:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2425:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2467:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2489:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2492:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "2478:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2478:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2460:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2460:40:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2460:40:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_int24__to_t_int24__fromStack_library_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2384:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2395:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2406:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2310:196:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2685:161:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2702:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2713:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2695:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2695:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2695:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2736:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2747:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2732:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2732:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2752:2:64",
                                    "type": "",
                                    "value": "11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2725:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2725:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2725:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2775:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2786:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2771:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2771:18:64"
                                  },
                                  {
                                    "hexValue": "57524f4e475f4f52444552",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2791:13:64",
                                    "type": "",
                                    "value": "WRONG_ORDER"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2764:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2764:41:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2764:41:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2814:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2826:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2837:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2822:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2822:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2814:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_226b47270794b9ea549ee3795bb5a416c284936ec88c0783c34f02074948c922__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2662:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2676:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2511:335:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3025:161:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3042:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3053:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3035:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3035:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3035:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3076:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3087:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3072:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3072:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3092:2:64",
                                    "type": "",
                                    "value": "11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3065:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3065:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3065:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3115:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3126:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3111:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3111:18:64"
                                  },
                                  {
                                    "hexValue": "4c4f5745525f52414e4745",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3131:13:64",
                                    "type": "",
                                    "value": "LOWER_RANGE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3104:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3104:41:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3104:41:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3154:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3166:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3177:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3162:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3162:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3154:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_2950e14a68a47101a6a90153db4d05b537a0e68e7cb02e2cb883021bc72dc5c3__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3002:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3016:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2851:335:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3365:161:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3382:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3393:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3375:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3375:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3375:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3416:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3427:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3412:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3412:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3432:2:64",
                                    "type": "",
                                    "value": "11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3405:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3405:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3405:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3455:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3466:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3451:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3451:18:64"
                                  },
                                  {
                                    "hexValue": "55505045525f52414e4745",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3471:13:64",
                                    "type": "",
                                    "value": "UPPER_RANGE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3444:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3444:41:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3444:41:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3494:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3506:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3517:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3502:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3502:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3494:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_29e52788a32d555df09b373344c96b90696cde297ff0d3b9367c31a17328dfbb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3342:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3356:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3191:335:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3705:161:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3722:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3733:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3715:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3715:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3715:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3756:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3767:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3752:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3752:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3772:2:64",
                                    "type": "",
                                    "value": "11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3745:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3745:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3745:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3795:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3806:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3791:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3791:18:64"
                                  },
                                  {
                                    "hexValue": "4c4f5745525f4f52444552",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3811:13:64",
                                    "type": "",
                                    "value": "LOWER_ORDER"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3784:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3784:41:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3784:41:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3834:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3846:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3857:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3842:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3842:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3834:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_463260975839e1d8d74fbc6b529aa07ae59353aa2e6221a412d140a476ad9cb3__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3682:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3696:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3531:335:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4045:161:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4062:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4073:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4055:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4055:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4055:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4096:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4107:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4092:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4092:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4112:2:64",
                                    "type": "",
                                    "value": "11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4085:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4085:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4085:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4135:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4146:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4131:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4131:18:64"
                                  },
                                  {
                                    "hexValue": "55505045525f4f52444552",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4151:13:64",
                                    "type": "",
                                    "value": "UPPER_ORDER"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4124:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4124:41:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4124:41:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4174:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4186:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4197:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4182:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4182:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4174:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_908caf2bfeb1978c79c58a73c3ee93f7194b51a5f66ced040e1bfa44f26e40fb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4022:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4036:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3871:335:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4320:117:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4330:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4342:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4353:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4338:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4338:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4330:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4372:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4387:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4395:34:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4383:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4383:47:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4365:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4365:66:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4365:66:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint128__to_t_uint128__fromStack_library_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4289:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4300:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4311:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4211:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4490:205:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4500:44:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4510:34:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4504:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4553:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "4568:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4571:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "4564:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4564:10:64"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4557:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4583:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "4598:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4601:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "4594:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4594:10:64"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4587:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4638:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "4640:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4640:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4640:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4619:3:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4628:2:64"
                                      },
                                      {
                                        "name": "y_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4632:3:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4624:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4624:12:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4616:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4616:21:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4613:47:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4669:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4680:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4685:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4676:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4676:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "4669:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint128",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "4473:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "4476:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "4482:3:64",
                            "type": ""
                          }
                        ],
                        "src": "4442:253:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4746:170:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4756:44:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4766:34:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4760:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4809:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "4824:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4827:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "4820:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4820:10:64"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4813:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4854:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "4856:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4856:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4856:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4849:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4842:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4842:11:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4839:37:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4885:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "4898:1:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4901:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4894:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4894:10:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4906:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "4890:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4890:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "4885:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint128",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "4731:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "4734:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "4740:1:64",
                            "type": ""
                          }
                        ],
                        "src": "4700:216:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4966:144:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4976:18:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4986:8:64",
                                "type": "",
                                "value": "0xffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4980:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5003:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "5018:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5021:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "5014:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5014:10:64"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5007:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5048:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "5050:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5050:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5050:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5043:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5036:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5036:11:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5033:37:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5079:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "5092:1:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5095:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5088:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5088:10:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5100:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "5084:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5084:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "5079:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "4951:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "4954:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "4960:1:64",
                            "type": ""
                          }
                        ],
                        "src": "4921:189:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5166:209:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5176:18:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5186:8:64",
                                "type": "",
                                "value": "0xffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5180:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5203:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "5218:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5221:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "5214:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5214:10:64"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5207:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5233:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "5248:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5251:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "5244:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5244:10:64"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5237:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5314:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "5316:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5316:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5316:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "5284:3:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "5277:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5277:11:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "5270:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5270:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5294:3:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "5303:2:64"
                                          },
                                          {
                                            "name": "x_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "5307:3:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "5299:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5299:12:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5291:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5291:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "5266:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5266:47:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5263:73:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5345:24:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5360:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5365:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "5356:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5356:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "5345:7:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "5145:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "5148:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "5154:7:64",
                            "type": ""
                          }
                        ],
                        "src": "5115:260:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5422:196:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5432:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5458:1:64",
                                    "type": "",
                                    "value": "2"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5461:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "signextend",
                                  "nodeType": "YulIdentifier",
                                  "src": "5447:10:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5447:20:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5436:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5559:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "5561:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5561:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5561:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5482:7:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5491:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "5479:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5479:79:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5476:105:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5590:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5601:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5604:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "5597:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5597:15:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "5590:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "negate_t_int24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "5404:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "5414:3:64",
                            "type": ""
                          }
                        ],
                        "src": "5380:238:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5666:148:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5757:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "5759:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5759:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5759:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5682:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5689:66:64",
                                    "type": "",
                                    "value": "0x8000000000000000000000000000000000000000000000000000000000000000"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "5679:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5679:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5676:103:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5788:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5799:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5802:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "5795:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5795:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "5788:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "negate_t_int256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "5648:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "5658:3:64",
                            "type": ""
                          }
                        ],
                        "src": "5623:191:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5851:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5868:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5871:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5861:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5861:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5861:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5965:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5968:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5958:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5958:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5958:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5989:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5992:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "5982:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5982:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5982:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "5819:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6040:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6057:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6060:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6050:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6050:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6050:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6154:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6157:4:64",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6147:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6147:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6147:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6178:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6181:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6171:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6171:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6171:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6008:184:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_int24(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, signextend(2, value))) { revert(0, 0) }\n    }\n    function abi_decode_uint128(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_uint160(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$t_int24t_int24t_uint128t_int24(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_int24(add(headStart, 32))\n        value2 := abi_decode_int24(add(headStart, 64))\n        value3 := abi_decode_uint128(add(headStart, 96))\n        value4 := abi_decode_int24(add(headStart, 128))\n    }\n    function abi_decode_tuple_t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$t_uint256t_uint256t_uint160t_int24t_int24t_int24t_int24t_uint128t_int24t_uint160(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8, value9, value10\n    {\n        if slt(sub(dataEnd, headStart), 352) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := abi_decode_uint160(add(headStart, 96))\n        value4 := abi_decode_int24(add(headStart, 128))\n        value5 := abi_decode_int24(add(headStart, 160))\n        value6 := abi_decode_int24(add(headStart, 192))\n        value7 := abi_decode_int24(add(headStart, 224))\n        value8 := abi_decode_uint128(add(headStart, 256))\n        value9 := abi_decode_int24(add(headStart, 288))\n        value10 := abi_decode_uint160(add(headStart, 320))\n    }\n    function abi_decode_tuple_t_uint24(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffff))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_int24__to_t_int24__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, signextend(2, value0))\n    }\n    function abi_encode_tuple_t_stringliteral_226b47270794b9ea549ee3795bb5a416c284936ec88c0783c34f02074948c922__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"WRONG_ORDER\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_2950e14a68a47101a6a90153db4d05b537a0e68e7cb02e2cb883021bc72dc5c3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"LOWER_RANGE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_29e52788a32d555df09b373344c96b90696cde297ff0d3b9367c31a17328dfbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"UPPER_RANGE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_463260975839e1d8d74fbc6b529aa07ae59353aa2e6221a412d140a476ad9cb3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"LOWER_ORDER\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_908caf2bfeb1978c79c58a73c3ee93f7194b51a5f66ced040e1bfa44f26e40fb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"UPPER_ORDER\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint128__to_t_uint128__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffff))\n    }\n    function checked_add_t_uint128(x, y) -> sum\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function checked_div_t_uint128(x, y) -> r\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffff\n        let y_1 := and(y, _1)\n        if iszero(y_1) { panic_error_0x12() }\n        r := div(and(x, _1), y_1)\n    }\n    function checked_div_t_uint24(x, y) -> r\n    {\n        let _1 := 0xffffff\n        let y_1 := and(y, _1)\n        if iszero(y_1) { panic_error_0x12() }\n        r := div(and(x, _1), y_1)\n    }\n    function checked_mul_t_uint24(x, y) -> product\n    {\n        let _1 := 0xffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if and(iszero(iszero(x_1)), gt(y_1, div(_1, x_1))) { panic_error_0x11() }\n        product := mul(x_1, y_1)\n    }\n    function negate_t_int24(value) -> ret\n    {\n        let value_1 := signextend(2, value)\n        if eq(value_1, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000) { panic_error_0x11() }\n        ret := sub(0, value_1)\n    }\n    function negate_t_int256(value) -> ret\n    {\n        if eq(value, 0x8000000000000000000000000000000000000000000000000000000000000000) { panic_error_0x11() }\n        ret := sub(0, value)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "730000000000000000000000000000000000000000301460806040526004361061004b5760003560e01c806333440084146100505780633c5474df14610088578063dc47a5c2146100a8575b600080fd5b81801561005c57600080fd5b5061007061006b366004611916565b6100dc565b60405160029190910b81526020015b60405180910390f35b81801561009457600080fd5b506100706100a33660046118b8565b610cfe565b6100bb6100b63660046119cd565b6110cf565b6040516fffffffffffffffffffffffffffffffff909116815260200161007f565b60008460020b8760020b12610152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f57524f4e475f4f5244455200000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600287900b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761813156101e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4c4f5745525f52414e47450000000000000000000000000000000000000000006044820152606401610149565b6102097ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618611a9d565b60020b8560020b1315610278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f55505045525f52414e47450000000000000000000000000000000000000000006044820152606401610149565b600287810b900b600090815260208d90526040902054660100000000000090046fffffffffffffffffffffffffffffffff16801515806102db5750600288900b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618145b1561034e576102ea85826119f9565b600289810b900b600090815260208f90526040902080546fffffffffffffffffffffffffffffffff929092166601000000000000027fffffffffffffffffffff00000000000000000000000000000000ffffffffffff909216919091179055610797565b600289810b810b600090815260208f9052604090208054909163010000008204900b90660100000000000090046fffffffffffffffffffffffffffffffff161515806103bd575060028b900b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618145b80156103ce57508960020b8b60020b125b80156103df57508060020b8a60020b125b610445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4c4f5745525f4f524445520000000000000000000000000000000000000000006044820152606401610149565b8560020b8a60020b136105b7576040518060c001604052808c60020b81526020018260020b8152602001886fffffffffffffffffffffffffffffffff1681526020018f81526020018e81526020018d73ffffffffffffffffffffffffffffffffffffffff168152508f60008c60020b60020b815260200190815260200160002060008201518160000160006101000a81548162ffffff021916908360020b62ffffff16021790555060208201518160000160036101000a81548162ffffff021916908360020b62ffffff16021790555060408201518160000160066101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550606082015181600101556080820151816002015560a08201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555090505061071b565b6040518060c001604052808c60020b81526020018260020b8152602001886fffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152508f60008c60020b60020b815260200190815260200160002060008201518160000160006101000a81548162ffffff021916908360020b62ffffff16021790555060208201518160000160036101000a81548162ffffff021916908360020b62ffffff16021790555060408201518160000160066101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550606082015181600101556080820151816002015560a08201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050505b815460028b810b62ffffff16630100000081027fffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff9093169290921790935590820b90910b600090815260208f90526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001690911790555b50600285810b900b600090815260208d90526040902054660100000000000090046fffffffffffffffffffffffffffffffff168015158061080557506107fc7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618611a9d565b60020b8660020b145b156108785761081485826119f9565b600287810b900b600090815260208f90526040902080546fffffffffffffffffffffffffffffffff929092166601000000000000027fffffffffffffffffffff00000000000000000000000000000000ffffffffffff909216919091179055610c93565b600287810b810b600090815260208f9052604090208054909163010000008204900b90660100000000000090046fffffffffffffffffffffffffffffffff16158015906108ca57508760020b8160020b135b80156108db57508760020b8960020b125b610941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f55505045525f4f524445520000000000000000000000000000000000000000006044820152606401610149565b8560020b8860020b13610ab3576040518060c001604052808a60020b81526020018260020b8152602001886fffffffffffffffffffffffffffffffff1681526020018f81526020018e81526020018d73ffffffffffffffffffffffffffffffffffffffff168152508f60008a60020b60020b815260200190815260200160002060008201518160000160006101000a81548162ffffff021916908360020b62ffffff16021790555060208201518160000160036101000a81548162ffffff021916908360020b62ffffff16021790555060408201518160000160066101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550606082015181600101556080820151816002015560a08201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050610c17565b6040518060c001604052808a60020b81526020018260020b8152602001886fffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152508f60008a60020b60020b815260200190815260200160002060008201518160000160006101000a81548162ffffff021916908360020b62ffffff16021790555060208201518160000160036101000a81548162ffffff021916908360020b62ffffff16021790555060408201518160000160066101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550606082015181600101556080820151816002015560a08201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509050505b8154600289810b62ffffff16630100000081027fffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff9093169290921790935590820b90910b600090815260208f90526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001690911790555b6000610c9e84611134565b90508660020b8560020b128015610cbb57508060020b8760020b13155b15610cc857869450610cec565b8860020b8560020b128015610ce357508060020b8960020b13155b15610cec578894505b50929c9b505050505050505050505050565b600284810b9081900b600090815260208790526040812090917ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761814801590610d65575080546fffffffffffffffffffffffffffffffff858116660100000000000090920416145b15610e8c578054600281810b810b810b600090815260208a90526040808220630100000094859004840b840b80850b84529190922082547fffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff1662ffffff928316909502949094178255845484547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001690840b840b909116178355919088810b9086900b1415610e1657825460020b94505b5050600286810b810b600090815260208990526040812080547fffffffffffffffffffff00000000000000000000000000000000000000000000168155600181018290559182015560030180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610edb565b80546fffffffffffffffffffffffffffffffff66010000000000008083048216879003909116027fffffffffffffffffffff00000000000000000000000000000000ffffffffffff9091161781555b50600284810b900b6000908152602087905260409020610f1a7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618611a9d565b60020b8560020b14158015610f4e575080546fffffffffffffffffffffffffffffffff858116660100000000000090920416145b15611075578054600281810b810b810b600090815260208a90526040808220630100000094859004840b840b80850b84529190922082547fffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff1662ffffff928316909502949094178255845484547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001690840b840b909116178355919087810b9086900b1415610fff57825460020b94505b5050600285810b810b600090815260208990526040812080547fffffffffffffffffffff00000000000000000000000000000000000000000000168155600181018290559182015560030180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690556110c4565b80546fffffffffffffffffffffffffffffffff66010000000000008083048216879003909116027fffffffffffffffffffff00000000000000000000000000000000ffffffffffff9091161781555b509095945050505050565b60006110dc826002611a72565b6111057ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618611a9d565b61110f9190611a5c565b61112e9062ffffff166fffffffffffffffffffffffffffffffff611a2d565b92915050565b60006401000276a373ffffffffffffffffffffffffffffffffffffffff83161080611189575073fffd8963efd1fc6a506488495d951d5263988d2673ffffffffffffffffffffffffffffffffffffffff831610155b156111c0576040517f6e4ba61d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166fffffffffffffffffffffffffffffffff811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c9790881196179094179092171790911717176080811061126a57607f810383901c9150611274565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc5568101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146114bb578873ffffffffffffffffffffffffffffffffffffffff16611493826114ca565b73ffffffffffffffffffffffffffffffffffffffff1611156114b557816114bd565b806114bd565b815b9998505050505050505050565b60008060008360020b126114e1578260020b6114ee565b8260020b6114ee90611adc565b90506115197ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618611a9d565b62ffffff16811115611557576040517ff87dc40c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600182166115785770010000000000000000000000000000000061158a565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156115be576ffff97272373d413259a46990580e213a0260801c5b60048216156115dd576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156115fc576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161561161b576fffcb9843d60f6159c9db58835c9266440260801c5b602082161561163a576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611659576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611678576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611698576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156116b8576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156116d8576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156116f8576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611718576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611738576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611758576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611778576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611799576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156117b9576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156117d8576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156117f5576b048a170391f7dc42444e8fa20260801c5b60008460020b131561183457807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8161183057611830611b44565b0490505b64010000000081061561184857600161184b565b60005b60ff16602082901c0192505050919050565b8035600281900b811461186f57600080fd5b919050565b80356fffffffffffffffffffffffffffffffff8116811461186f57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461186f57600080fd5b600080600080600060a086880312156118d057600080fd5b853594506118e06020870161185d565b93506118ee6040870161185d565b92506118fc60608701611874565b915061190a6080870161185d565b90509295509295909350565b60008060008060008060008060008060006101608c8e03121561193857600080fd5b8b359a5060208c0135995060408c0135985061195660608d01611894565b975061196460808d0161185d565b965061197260a08d0161185d565b955061198060c08d0161185d565b945061198e60e08d0161185d565b935061199d6101008d01611874565b92506119ac6101208d0161185d565b91506119bb6101408d01611894565b90509295989b509295989b9093969950565b6000602082840312156119df57600080fd5b813562ffffff811681146119f257600080fd5b9392505050565b60006fffffffffffffffffffffffffffffffff808316818516808303821115611a2457611a24611b15565b01949350505050565b60006fffffffffffffffffffffffffffffffff80841680611a5057611a50611b44565b92169190910492915050565b600062ffffff80841680611a5057611a50611b44565b600062ffffff80831681851681830481118215151615611a9457611a94611b15565b02949350505050565b60008160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000811415611ad357611ad3611b15565b60000392915050565b60007f8000000000000000000000000000000000000000000000000000000000000000821415611b0e57611b0e611b15565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea264697066735822122011106fd588514bbcc8e1efdaa732e0b740563788b05e5a7caebd868c56d1361a64736f6c63430008070033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x33440084 EQ PUSH2 0x50 JUMPI DUP1 PUSH4 0x3C5474DF EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0xDC47A5C2 EQ PUSH2 0xA8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x70 PUSH2 0x6B CALLDATASIZE PUSH1 0x4 PUSH2 0x1916 JUMP JUMPDEST PUSH2 0xDC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x94 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x70 PUSH2 0xA3 CALLDATASIZE PUSH1 0x4 PUSH2 0x18B8 JUMP JUMPDEST PUSH2 0xCFE JUMP JUMPDEST PUSH2 0xBB PUSH2 0xB6 CALLDATASIZE PUSH1 0x4 PUSH2 0x19CD JUMP JUMPDEST PUSH2 0x10CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x7F JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP8 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x152 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57524F4E475F4F52444552000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP8 SWAP1 SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 SGT ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F5745525F52414E4745000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x149 JUMP JUMPDEST PUSH2 0x209 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x278 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x55505045525F52414E4745000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x149 JUMP JUMPDEST PUSH1 0x2 DUP8 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 ISZERO ISZERO DUP1 PUSH2 0x2DB JUMPI POP PUSH1 0x2 DUP9 SWAP1 SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 EQ JUMPDEST ISZERO PUSH2 0x34E JUMPI PUSH2 0x2EA DUP6 DUP3 PUSH2 0x19F9 JUMP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP16 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH7 0x1000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x797 JUMP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP16 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH4 0x1000000 DUP3 DIV SWAP1 SIGNEXTEND SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO DUP1 PUSH2 0x3BD JUMPI POP PUSH1 0x2 DUP12 SWAP1 SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 EQ JUMPDEST DUP1 ISZERO PUSH2 0x3CE JUMPI POP DUP10 PUSH1 0x2 SIGNEXTEND DUP12 PUSH1 0x2 SIGNEXTEND SLT JUMPDEST DUP1 ISZERO PUSH2 0x3DF JUMPI POP DUP1 PUSH1 0x2 SIGNEXTEND DUP11 PUSH1 0x2 SIGNEXTEND SLT JUMPDEST PUSH2 0x445 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F5745525F4F52444552000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x149 JUMP JUMPDEST DUP6 PUSH1 0x2 SIGNEXTEND DUP11 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x5B7 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP13 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP16 DUP2 MSTORE PUSH1 0x20 ADD DUP15 DUP2 MSTORE PUSH1 0x20 ADD DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP16 PUSH1 0x0 DUP13 PUSH1 0x2 SIGNEXTEND PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x3 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x6 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH2 0x71B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP13 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP16 PUSH1 0x0 DUP13 PUSH1 0x2 SIGNEXTEND PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x3 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x6 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP1 POP POP JUMPDEST DUP2 SLOAD PUSH1 0x2 DUP12 DUP2 SIGNEXTEND PUSH3 0xFFFFFF AND PUSH4 0x1000000 DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP4 SSTORE SWAP1 DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP16 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST POP PUSH1 0x2 DUP6 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 ISZERO ISZERO DUP1 PUSH2 0x805 JUMPI POP PUSH2 0x7FC PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND EQ JUMPDEST ISZERO PUSH2 0x878 JUMPI PUSH2 0x814 DUP6 DUP3 PUSH2 0x19F9 JUMP JUMPDEST PUSH1 0x2 DUP8 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP16 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND PUSH7 0x1000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xC93 JUMP JUMPDEST PUSH1 0x2 DUP8 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP16 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 PUSH4 0x1000000 DUP3 DIV SWAP1 SIGNEXTEND SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x8CA JUMPI POP DUP8 PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x2 SIGNEXTEND SGT JUMPDEST DUP1 ISZERO PUSH2 0x8DB JUMPI POP DUP8 PUSH1 0x2 SIGNEXTEND DUP10 PUSH1 0x2 SIGNEXTEND SLT JUMPDEST PUSH2 0x941 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x55505045525F4F52444552000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x149 JUMP JUMPDEST DUP6 PUSH1 0x2 SIGNEXTEND DUP9 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0xAB3 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP11 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP16 DUP2 MSTORE PUSH1 0x20 ADD DUP15 DUP2 MSTORE PUSH1 0x20 ADD DUP14 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP16 PUSH1 0x0 DUP11 PUSH1 0x2 SIGNEXTEND PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x3 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x6 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP1 POP POP PUSH2 0xC17 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 DUP11 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP16 PUSH1 0x0 DUP11 PUSH1 0x2 SIGNEXTEND PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x3 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x6 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x80 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE PUSH1 0xA0 DUP3 ADD MLOAD DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP SWAP1 POP POP JUMPDEST DUP2 SLOAD PUSH1 0x2 DUP10 DUP2 SIGNEXTEND PUSH3 0xFFFFFF AND PUSH4 0x1000000 DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP4 SSTORE SWAP1 DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP16 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 AND SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0xC9E DUP5 PUSH2 0x1134 JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0xCBB JUMPI POP DUP1 PUSH1 0x2 SIGNEXTEND DUP8 PUSH1 0x2 SIGNEXTEND SGT ISZERO JUMPDEST ISZERO PUSH2 0xCC8 JUMPI DUP7 SWAP5 POP PUSH2 0xCEC JUMP JUMPDEST DUP9 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0xCE3 JUMPI POP DUP1 PUSH1 0x2 SIGNEXTEND DUP10 PUSH1 0x2 SIGNEXTEND SGT ISZERO JUMPDEST ISZERO PUSH2 0xCEC JUMPI DUP9 SWAP5 POP JUMPDEST POP SWAP3 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP5 DUP2 SIGNEXTEND SWAP1 DUP2 SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 SWAP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 EQ DUP1 ISZERO SWAP1 PUSH2 0xD65 JUMPI POP DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH7 0x1000000000000 SWAP1 SWAP3 DIV AND EQ JUMPDEST ISZERO PUSH2 0xE8C JUMPI DUP1 SLOAD PUSH1 0x2 DUP2 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP11 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH4 0x1000000 SWAP5 DUP6 SWAP1 DIV DUP5 SIGNEXTEND DUP5 SIGNEXTEND DUP1 DUP6 SIGNEXTEND DUP5 MSTORE SWAP2 SWAP1 SWAP3 KECCAK256 DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF AND PUSH3 0xFFFFFF SWAP3 DUP4 AND SWAP1 SWAP6 MUL SWAP5 SWAP1 SWAP5 OR DUP3 SSTORE DUP5 SLOAD DUP5 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 AND SWAP1 DUP5 SIGNEXTEND DUP5 SIGNEXTEND SWAP1 SWAP2 AND OR DUP4 SSTORE SWAP2 SWAP1 DUP9 DUP2 SIGNEXTEND SWAP1 DUP7 SWAP1 SIGNEXTEND EQ ISZERO PUSH2 0xE16 JUMPI DUP3 SLOAD PUSH1 0x2 SIGNEXTEND SWAP5 POP JUMPDEST POP POP PUSH1 0x2 DUP7 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 AND DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP3 SWAP1 SSTORE SWAP2 DUP3 ADD SSTORE PUSH1 0x3 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE PUSH2 0xEDB JUMP JUMPDEST DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH7 0x1000000000000 DUP1 DUP4 DIV DUP3 AND DUP8 SWAP1 SUB SWAP1 SWAP2 AND MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFF SWAP1 SWAP2 AND OR DUP2 SSTORE JUMPDEST POP PUSH1 0x2 DUP5 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP8 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xF1A PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x1A9D JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND EQ ISZERO DUP1 ISZERO PUSH2 0xF4E JUMPI POP DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH7 0x1000000000000 SWAP1 SWAP3 DIV AND EQ JUMPDEST ISZERO PUSH2 0x1075 JUMPI DUP1 SLOAD PUSH1 0x2 DUP2 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP11 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH4 0x1000000 SWAP5 DUP6 SWAP1 DIV DUP5 SIGNEXTEND DUP5 SIGNEXTEND DUP1 DUP6 SIGNEXTEND DUP5 MSTORE SWAP2 SWAP1 SWAP3 KECCAK256 DUP3 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF AND PUSH3 0xFFFFFF SWAP3 DUP4 AND SWAP1 SWAP6 MUL SWAP5 SWAP1 SWAP5 OR DUP3 SSTORE DUP5 SLOAD DUP5 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 AND SWAP1 DUP5 SIGNEXTEND DUP5 SIGNEXTEND SWAP1 SWAP2 AND OR DUP4 SSTORE SWAP2 SWAP1 DUP8 DUP2 SIGNEXTEND SWAP1 DUP7 SWAP1 SIGNEXTEND EQ ISZERO PUSH2 0xFFF JUMPI DUP3 SLOAD PUSH1 0x2 SIGNEXTEND SWAP5 POP JUMPDEST POP POP PUSH1 0x2 DUP6 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000 AND DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP3 SWAP1 SSTORE SWAP2 DUP3 ADD SSTORE PUSH1 0x3 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP1 SSTORE PUSH2 0x10C4 JUMP JUMPDEST DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH7 0x1000000000000 DUP1 DUP4 DIV DUP3 AND DUP8 SWAP1 SUB SWAP1 SWAP2 AND MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFF SWAP1 SWAP2 AND OR DUP2 SSTORE JUMPDEST POP SWAP1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x10DC DUP3 PUSH1 0x2 PUSH2 0x1A72 JUMP JUMPDEST PUSH2 0x1105 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x1A9D JUMP JUMPDEST PUSH2 0x110F SWAP2 SWAP1 PUSH2 0x1A5C JUMP JUMPDEST PUSH2 0x112E SWAP1 PUSH3 0xFFFFFF AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH2 0x1A2D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH5 0x1000276A3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND LT DUP1 PUSH2 0x1189 JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x11C0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6E4BA61D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x7 SHL DUP2 DUP2 SHR PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x6 SHL SWAP1 DUP2 SHR PUSH4 0xFFFFFFFF DUP2 GT PUSH1 0x5 SHL SWAP1 DUP2 SHR PUSH2 0xFFFF DUP2 GT PUSH1 0x4 SHL SWAP1 DUP2 SHR PUSH1 0xFF DUP2 GT PUSH1 0x3 SWAP1 DUP2 SHL SWAP2 DUP3 SHR PUSH1 0xF DUP2 GT PUSH1 0x2 SHL SWAP1 DUP2 SHR SWAP2 DUP3 GT PUSH1 0x1 SWAP1 DUP2 SHL SWAP3 DUP4 SHR SWAP8 SWAP1 DUP9 GT SWAP7 OR SWAP1 SWAP5 OR SWAP1 SWAP3 OR OR SWAP1 SWAP2 OR OR OR PUSH1 0x80 DUP2 LT PUSH2 0x126A JUMPI PUSH1 0x7F DUP2 SUB DUP4 SWAP1 SHR SWAP2 POP PUSH2 0x1274 JUMP JUMPDEST DUP1 PUSH1 0x7F SUB DUP4 SWAP1 SHL SWAP2 POP JUMPDEST SWAP1 DUP1 MUL PUSH1 0x7F DUP2 DUP2 SHR PUSH1 0xFF DUP4 DUP2 SHR SWAP2 SWAP1 SWAP2 SHR DUP1 MUL DUP1 DUP4 SHR DUP2 DUP4 SHR SHR DUP1 MUL DUP1 DUP5 SHR DUP2 DUP5 SHR SHR DUP1 MUL DUP1 DUP6 SHR DUP2 DUP6 SHR SHR DUP1 MUL DUP1 DUP7 SHR DUP2 DUP7 SHR SHR DUP1 MUL DUP1 DUP8 SHR DUP2 DUP8 SHR SHR DUP1 MUL DUP1 DUP9 SHR DUP2 DUP9 SHR SHR DUP1 MUL DUP1 DUP10 SHR DUP2 DUP10 SHR SHR DUP1 MUL DUP1 DUP11 SHR DUP2 DUP11 SHR SHR DUP1 MUL DUP1 DUP12 SHR DUP2 DUP12 SHR SHR DUP1 MUL DUP1 DUP13 SHR DUP2 DUP13 SHR SHR DUP1 MUL DUP1 DUP14 SHR DUP2 DUP14 SHR SHR DUP1 MUL DUP1 DUP15 SHR SWAP13 DUP2 SWAP1 SHR SWAP13 SWAP1 SWAP13 SHR DUP1 MUL SWAP13 DUP14 SWAP1 SHR SWAP15 SWAP14 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 DUP16 ADD PUSH1 0x40 SHL PUSH1 0xC0 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x8000000000000000 AND OR PUSH1 0xC1 SWAP12 SWAP1 SWAP12 SHR PUSH8 0x4000000000000000 AND SWAP11 SWAP1 SWAP11 OR PUSH1 0xC2 SWAP10 SWAP1 SWAP10 SHR PUSH8 0x2000000000000000 AND SWAP9 SWAP1 SWAP9 OR PUSH1 0xC3 SWAP8 SWAP1 SWAP8 SHR PUSH8 0x1000000000000000 AND SWAP7 SWAP1 SWAP7 OR PUSH1 0xC4 SWAP6 SWAP1 SWAP6 SHR PUSH8 0x800000000000000 AND SWAP5 SWAP1 SWAP5 OR PUSH1 0xC5 SWAP4 SWAP1 SWAP4 SHR PUSH8 0x400000000000000 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0xC6 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x200000000000000 AND OR PUSH1 0xC7 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x100000000000000 AND OR PUSH1 0xC8 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x80000000000000 AND OR PUSH1 0xC9 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x40000000000000 AND OR PUSH1 0xCA SWAP2 SWAP1 SWAP2 SHR PUSH7 0x20000000000000 AND OR PUSH1 0xCB SWAP2 SWAP1 SWAP2 SHR PUSH7 0x10000000000000 AND OR PUSH1 0xCC SWAP2 SWAP1 SWAP2 SHR PUSH7 0x8000000000000 AND OR PUSH1 0xCD SWAP2 SWAP1 SWAP2 SHR PUSH7 0x4000000000000 AND OR PUSH10 0x3627A301D71055774C85 DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD709B7E5480FBA5A50FED5E62FFC556 DUP2 ADD PUSH1 0x80 SWAP1 DUP2 SAR SWAP1 PUSH16 0xDB2DF09E81959A81455E260799A0632F DUP4 ADD SWAP1 SAR PUSH1 0x2 DUP2 DUP2 SIGNEXTEND SWAP1 DUP4 SWAP1 SIGNEXTEND EQ PUSH2 0x14BB JUMPI DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1493 DUP3 PUSH2 0x14CA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x14B5 JUMPI DUP2 PUSH2 0x14BD JUMP JUMPDEST DUP1 PUSH2 0x14BD JUMP JUMPDEST DUP2 JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x14E1 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x14EE JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x14EE SWAP1 PUSH2 0x1ADC JUMP JUMPDEST SWAP1 POP PUSH2 0x1519 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x1A9D JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 GT ISZERO PUSH2 0x1557 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF87DC40C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x1578 JUMPI PUSH17 0x100000000000000000000000000000000 PUSH2 0x158A JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x15BE JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x15DD JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x15FC JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x161B JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x163A JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x1659 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x1678 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x1698 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x16B8 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x16D8 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x16F8 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x1718 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x1738 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x1758 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x1778 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x1799 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x17B9 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x17D8 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x17F5 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x1834 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 PUSH2 0x1830 JUMPI PUSH2 0x1830 PUSH2 0x1B44 JUMP JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x1848 JUMPI PUSH1 0x1 PUSH2 0x184B JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x186F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x186F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x186F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x18D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH2 0x18E0 PUSH1 0x20 DUP8 ADD PUSH2 0x185D JUMP JUMPDEST SWAP4 POP PUSH2 0x18EE PUSH1 0x40 DUP8 ADD PUSH2 0x185D JUMP JUMPDEST SWAP3 POP PUSH2 0x18FC PUSH1 0x60 DUP8 ADD PUSH2 0x1874 JUMP JUMPDEST SWAP2 POP PUSH2 0x190A PUSH1 0x80 DUP8 ADD PUSH2 0x185D JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x1938 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP12 CALLDATALOAD SWAP11 POP PUSH1 0x20 DUP13 ADD CALLDATALOAD SWAP10 POP PUSH1 0x40 DUP13 ADD CALLDATALOAD SWAP9 POP PUSH2 0x1956 PUSH1 0x60 DUP14 ADD PUSH2 0x1894 JUMP JUMPDEST SWAP8 POP PUSH2 0x1964 PUSH1 0x80 DUP14 ADD PUSH2 0x185D JUMP JUMPDEST SWAP7 POP PUSH2 0x1972 PUSH1 0xA0 DUP14 ADD PUSH2 0x185D JUMP JUMPDEST SWAP6 POP PUSH2 0x1980 PUSH1 0xC0 DUP14 ADD PUSH2 0x185D JUMP JUMPDEST SWAP5 POP PUSH2 0x198E PUSH1 0xE0 DUP14 ADD PUSH2 0x185D JUMP JUMPDEST SWAP4 POP PUSH2 0x199D PUSH2 0x100 DUP14 ADD PUSH2 0x1874 JUMP JUMPDEST SWAP3 POP PUSH2 0x19AC PUSH2 0x120 DUP14 ADD PUSH2 0x185D JUMP JUMPDEST SWAP2 POP PUSH2 0x19BB PUSH2 0x140 DUP14 ADD PUSH2 0x1894 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x19DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x19F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x1A24 JUMPI PUSH2 0x1A24 PUSH2 0x1B15 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND DUP1 PUSH2 0x1A50 JUMPI PUSH2 0x1A50 PUSH2 0x1B44 JUMP JUMPDEST SWAP3 AND SWAP2 SWAP1 SWAP2 DIV SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xFFFFFF DUP1 DUP5 AND DUP1 PUSH2 0x1A50 JUMPI PUSH2 0x1A50 PUSH2 0x1B44 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP2 DUP4 DIV DUP2 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x1A94 JUMPI PUSH2 0x1A94 PUSH2 0x1B15 JUMP JUMPDEST MUL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000 DUP2 EQ ISZERO PUSH2 0x1AD3 JUMPI PUSH2 0x1AD3 PUSH2 0x1B15 JUMP JUMPDEST PUSH1 0x0 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ ISZERO PUSH2 0x1B0E JUMPI PUSH2 0x1B0E PUSH2 0x1B15 JUMP JUMPDEST POP PUSH1 0x0 SUB SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GT LT PUSH16 0xD588514BBCC8E1EFDAA732E0B7405637 DUP9 0xB0 0x5E GAS PUSH29 0xAEBD868C56D1361A64736F6C6343000807003300000000000000000000 ",
              "sourceMap": "186:6512:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2416:2838;;;;;;;;;;-1:-1:-1;2416:2838:29;;;;;:::i;:::-;;:::i;:::-;;;2489:1:64;2478:21;;;;2460:40;;2448:2;2433:18;2416:2838:29;;;;;;;;5260:1436;;;;;;;;;;-1:-1:-1;5260:1436:29;;;;;:::i;:::-;;:::i;444:183::-;;;;;;:::i;:::-;;:::i;:::-;;;4395:34:64;4383:47;;;4365:66;;4353:2;4338:18;444:183:29;4211:226:64;2416:2838:29;2776:5;2809;2801:13;;:5;:13;;;2793:37;;;;;;;2713:2:64;2793:37:29;;;2695:21:64;2752:2;2732:18;;;2725:30;2791:13;2771:18;;;2764:41;2822:18;;2793:37:29;;;;;;;;;2848:26;;;;540:7:28;2848:26:29;;2840:50;;;;;;;3053:2:64;2840:50:29;;;3035:21:64;3092:2;3072:18;;;3065:30;3131:13;3111:18;;;3104:41;3162:18;;2840:50:29;2851:335:64;2840:50:29;705:9:28;540:7;705:9;:::i;:::-;2908:26:29;;:5;:26;;;;2900:50;;;;;;;3393:2:64;2900:50:29;;;3375:21:64;3432:2;3412:18;;;3405:30;3471:13;3451:18;;;3444:41;3502:18;;2900:50:29;3191:335:64;2900:50:29;3038:12;;;;;;3006:29;3038:12;;;;;;;;;;:22;;;;;;3078:26;;;;:56;;-1:-1:-1;3108:26:29;;;;540:7:28;3108:26:29;3078:56;3074:936;;;3243:30;3267:6;3243:21;:30;:::i;:::-;3218:12;;;;;;;;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;;3074:936;;;3385:15;;;;;;3360:22;3385:15;;;;;;;;;;3438:12;;3385:15;;3438:12;;;;;;3478:13;;;;;:18;;;:51;;-1:-1:-1;3500:29:29;;;;540:7:28;3500:29:29;3478:51;3477:73;;;;;3545:5;3534:16;;:8;:16;;;3477:73;:96;;;;;3562:11;3554:19;;:5;:19;;;3477:96;3469:120;;;;;;;3733:2:64;3469:120:29;;;3715:21:64;3772:2;3752:18;;;3745:30;3811:13;3791:18;;;3784:41;3842:18;;3469:120:29;3531:335:64;3469:120:29;3621:11;3612:20;;:5;:20;;;3608:292;;3671:98;;;;;;;;3682:8;3671:98;;;;;;3692:11;3671:98;;;;;;3705:6;3671:98;;;;;;3713:16;3671:98;;;;3731:16;3671:98;;;;3749:19;3671:98;;;;;3656:5;:12;3662:5;3656:12;;;;;;;;;;;;;;;:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3608:292;;;3831:50;;;;;;;;3842:8;3831:50;;;;;;3852:11;3831:50;;;;;;3865:6;3831:50;;;;;;3873:1;3831:50;;;;3876:1;3831:50;;;;3879:1;3831:50;;;;;3816:5;:12;3822:5;3816:12;;;;;;;;;;;;;;;:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3608:292;3918:20;;;;;;;;;;;;;;;;;;;;;;3956:18;;;;;;3918:12;3956:18;;;;;;;;;;:39;;;;;;;;;3074:936;-1:-1:-1;4062:12:29;;;;;;4030:29;4062:12;;;;;;;;;;:22;;;;;;4098:26;;;;:56;;-1:-1:-1;705:9:28;540:7;705:9;:::i;:::-;4128:26:29;;:5;:26;;;4098:56;4094:833;;;4255:30;4279:6;4255:21;:30;:::i;:::-;4230:12;;;;;;;;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;;4094:833;;;4378:15;;;;;;4353:22;4378:15;;;;;;;;;;4427:12;;4378:15;;4427:12;;;;;;4462:13;;;;;:18;;;;:41;;;4498:5;4484:19;;:11;:19;;;4462:41;:61;;;;;4518:5;4507:16;;:8;:16;;;4462:61;4454:85;;;;;;;4073:2:64;4454:85:29;;;4055:21:64;4112:2;4092:18;;;4085:30;4151:13;4131:18;;;4124:41;4182:18;;4454:85:29;3871:335:64;4454:85:29;4567:11;4558:20;;:5;:20;;;4554:276;;4613:98;;;;;;;;4624:8;4613:98;;;;;;4634:11;4613:98;;;;;;4647:6;4613:98;;;;;;4655:16;4613:98;;;;4673:16;4613:98;;;;4691:19;4613:98;;;;;4598:5;:12;4604:5;4598:12;;;;;;;;;;;;;;;:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4554:276;;;4765:50;;;;;;;;4776:8;4765:50;;;;;;4786:11;4765:50;;;;;;4799:6;4765:50;;;;;;4807:1;4765:50;;;;4810:1;4765:50;;;;4813:1;4765:50;;;;;4750:5;:12;4756:5;4750:12;;;;;;;;;;;;;;;:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4554:276;4843:20;;;;;;;;;;;;;;;;;;;;;;4877:18;;;;;;4843:12;4877:18;;;;;;;;;;:39;;;;;;;;;4094:833;4937:23;4963:41;4991:12;4963:27;:41::i;:::-;4937:67;;5033:5;5019:19;;:11;:19;;;:49;;;;;5051:17;5042:26;;:5;:26;;;;5019:49;5015:204;;;5098:5;5084:19;;5015:204;;;5138:5;5124:19;;:11;:19;;;:49;;;;;5156:17;5147:26;;:5;:26;;;;5124:49;5120:99;;;5203:5;5189:19;;5120:99;-1:-1:-1;5236:11:29;;2416:2838;-1:-1:-1;;;;;;;;;;;;2416:2838:29:o;5260:1436::-;5483:12;;;;;;;;5437:5;5483:12;;;;;;;;;;5437:5;;540:7:28;5510:26:29;;;;:57;;-1:-1:-1;5540:17:29;;:27;;;;:17;;;;;:27;5510:57;5506:556;;;5653:20;;;;;;5647:27;;;;5617;5647;;;;;;;;;;;5720:16;;;;;;;5714:23;;;;;;;;;;;5752:36;;;;;;;;;;;;;;;;;5822:20;;5802:40;;;;5822:20;;;5802:40;;;;;;;;5647:27;5714:23;5861:20;;;;;;;;5857:60;;;5897:20;;;;;-1:-1:-1;5857:60:29;-1:-1:-1;;5939:12:29;;;;;;;;;;;;;;;;;5932:19;;;;;;;;;;;;;;;;;;;;;;;;5506:556;;;6010:27;;;;;;;;;;;;;;;;;;;;;;;5506:556;-1:-1:-1;6082:12:29;;;;;;;;;;;;;;;;;705:9:28;540:7;705:9;:::i;:::-;6109:26:29;;:5;:26;;;;:57;;;;-1:-1:-1;6139:17:29;;:27;;;;:17;;;;;:27;6109:57;6105:556;;;6252:20;;;;;;6246:27;;;;6216;6246;;;;;;;;;;;6319:16;;;;;;;6313:23;;;;;;;;;;;6351:36;;;;;;;;;;;;;;;;;6421:20;;6401:40;;;;6421:20;;;6401:40;;;;;;;;6246:27;6313:23;6460:20;;;;;;;;6456:60;;;6496:20;;;;;-1:-1:-1;6456:60:29;-1:-1:-1;;6538:12:29;;;;;;;;;;;;;;;;;6531:19;;;;;;;;;;;;;;;;;;;;;;;;6105:556;;;6609:27;;;;;;;;;;;;;;;;;;;;;;;6105:556;-1:-1:-1;6678:11:29;;5260:1436;-1:-1:-1;;;;;5260:1436:29:o;444:183::-;511:7;594:24;605:12;594:1;:24;:::i;:::-;705:9:28;540:7;705:9;:::i;:::-;565:54:29;;;;:::i;:::-;537:83;;557:63;;537:17;:83;:::i;:::-;530:90;444:183;-1:-1:-1;;444:183:29:o;4643:4685:28:-;4716:10;886;4842:29;;;;;:63;;-1:-1:-1;1068:49:28;4875:30;;;;;4842:63;4838:94;;;4914:18;;;;;;;;;;;;;;4838:94;4958:27;4983:2;4958:27;;;;5090:34;5084:41;;5081:1;5077:49;5174:9;;;5247:18;5241:25;;5238:1;5234:33;5315:9;;;5388:10;5382:17;;5379:1;5375:25;5448:9;;;5521:6;5515:13;;5512:1;5508:21;5577:9;;;5650:4;5644:11;;5641:1;5637:19;;;5704:9;;;5777:3;5771:10;;5768:1;5764:18;5830:9;;;5897:10;;;5894:1;5890:18;;;5956:9;;;;6016:10;;;5287;;5420;;;5549;;;5676;5802;;;5928;6046;6110:3;6103:10;;6099:83;;6135:3;6129;:9;6119:5;:20;;6115:24;;6099:83;;;6178:3;6172;:9;6162:5;:20;;6158:24;;6099:83;6293:9;;;6288:3;6284:19;;;6329:11;;;;6409:9;;;;6486;;6477:19;;;6522:11;;;6602:9;6679;;6670:19;;;6715:11;;;6795:9;6872;;6863:19;;;6908:11;;;6988:9;7065;;7056:19;;;7101:11;;;7181:9;7258;;7249:19;;;7294:11;;;7374:9;7451;;7442:19;;;7487:11;;;7567:9;7644;;7635:19;;;7680:11;;;7760:9;7837;;7828:19;;;7873:11;;;7953:9;8030;;8021:19;;;8066:11;;;8146:9;8223;;8214:19;;;8259:11;;;8339:9;8416;;8407:19;;;8452:11;;;8532:9;8609;;8600:19;;;8645:11;;;;8725:9;;;;8802;;8793:19;;;;;6293:9;6213:17;;;6235:2;6212:25;6376:10;;;;;;;6366:21;6569:10;;;;;;;6559:21;;;;6762:10;;;;;;;6752:21;;;;6955:10;;;;;;;6945:21;;;;7148:10;;;;;;;7138:21;;;;7341:10;;;;;;;7331:21;;;;7534:10;;;;;;;7524:21;7727:10;;;;;;;7717:21;7920:10;;;;;;;7910:21;8113:10;;;;;;;8103:21;8306:10;;;;;;;8296:21;8499:10;;;;;;;8489:21;8692:10;;;;;;;8682:21;8885:10;;;;;;;8875:21;8955:24;8947:32;;9036:53;;;6227:3;9035:62;;;;9150:39;9134:55;;9133:64;;9220:17;;;;;;;;;:91;;9280:12;9250:42;;:26;9269:6;9250:18;:26::i;:::-;:42;;;;:61;;9304:7;9220:91;;9250:61;9295:6;9220:91;;;9240:7;9220:91;9213:98;4643:4685;-1:-1:-1;;;;;;;;;4643:4685:28:o;1488:2733::-;1551:20;1583:15;1608:1;1601:4;:8;;;:57;;1652:4;1645:12;;1601:57;;;1628:4;1621:12;;1620:13;;;:::i;:::-;1583:75;-1:-1:-1;705:9:28;540:7;705:9;:::i;:::-;1682:25;;1672:7;:35;1668:65;;;1716:17;;;;;;;;;;;;;;1668:65;1767:13;1793:3;1783:13;;:93;;1841:35;1783:93;;;1804:34;1783:93;1767:109;;;-1:-1:-1;1904:3:28;1894:13;;:18;1890:83;;1931:34;1923:42;1970:3;1922:51;1890:83;2001:3;1991:13;;:18;1987:83;;2028:34;2020:42;2067:3;2019:51;1987:83;2098:3;2088:13;;:18;2084:83;;2125:34;2117:42;2164:3;2116:51;2084:83;2195:4;2185:14;;:19;2181:84;;2223:34;2215:42;2262:3;2214:51;2181:84;2293:4;2283:14;;:19;2279:84;;2321:34;2313:42;2360:3;2312:51;2279:84;2391:4;2381:14;;:19;2377:84;;2419:34;2411:42;2458:3;2410:51;2377:84;2489:4;2479:14;;:19;2475:84;;2517:34;2509:42;2556:3;2508:51;2475:84;2587:5;2577:15;;:20;2573:85;;2616:34;2608:42;2655:3;2607:51;2573:85;2686:5;2676:15;;:20;2672:85;;2715:34;2707:42;2754:3;2706:51;2672:85;2785:5;2775:15;;:20;2771:85;;2814:34;2806:42;2853:3;2805:51;2771:85;2884:5;2874:15;;:20;2870:85;;2913:34;2905:42;2952:3;2904:51;2870:85;2983:6;2973:16;;:21;2969:86;;3013:34;3005:42;3052:3;3004:51;2969:86;3083:6;3073:16;;:21;3069:86;;3113:34;3105:42;3152:3;3104:51;3069:86;3183:6;3173:16;;:21;3169:86;;3213:34;3205:42;3252:3;3204:51;3169:86;3283:6;3273:16;;:21;3269:86;;3313:34;3305:42;3352:3;3304:51;3269:86;3383:7;3373:17;;:22;3369:86;;3414:33;3406:41;3452:3;3405:50;3369:86;3483:7;3473:17;;:22;3469:85;;3514:32;3506:40;3551:3;3505:49;3469:85;3582:7;3572:17;;:22;3568:83;;3613:30;3605:38;3648:3;3604:47;3568:83;3679:7;3669:17;;:22;3665:78;;3710:25;3702:33;3740:3;3701:42;3665:78;3769:1;3762:4;:8;;;3758:47;;;3800:5;3780:17;:25;;;;;:::i;:::-;;3772:33;;3758:47;4181:7;4172:5;:17;:22;:30;;4201:1;4172:30;;;4197:1;4172:30;4155:48;;4165:2;4156:5;:11;;4155:48;4132:72;;1743:2472;1573:2648;1488:2733;;;:::o;14:160:64:-;80:20;;140:1;129:20;;;119:31;;109:59;;164:1;161;154:12;109:59;14:160;;;:::o;179:188::-;247:20;;307:34;296:46;;286:57;;276:85;;357:1;354;347:12;372:196;440:20;;500:42;489:54;;479:65;;469:93;;558:1;555;548:12;573:508;704:6;712;720;728;736;789:3;777:9;768:7;764:23;760:33;757:53;;;806:1;803;796:12;757:53;842:9;829:23;819:33;;871:36;903:2;892:9;888:18;871:36;:::i;:::-;861:46;;926:36;958:2;947:9;943:18;926:36;:::i;:::-;916:46;;981:38;1015:2;1004:9;1000:18;981:38;:::i;:::-;971:48;;1038:37;1070:3;1059:9;1055:19;1038:37;:::i;:::-;1028:47;;573:508;;;;;;;;:::o;1086:940::-;1267:6;1275;1283;1291;1299;1307;1315;1323;1331;1339;1347:7;1401:3;1389:9;1380:7;1376:23;1372:33;1369:53;;;1418:1;1415;1408:12;1369:53;1454:9;1441:23;1431:33;;1511:2;1500:9;1496:18;1483:32;1473:42;;1562:2;1551:9;1547:18;1534:32;1524:42;;1585:38;1619:2;1608:9;1604:18;1585:38;:::i;:::-;1575:48;;1642:37;1674:3;1663:9;1659:19;1642:37;:::i;:::-;1632:47;;1698:37;1730:3;1719:9;1715:19;1698:37;:::i;:::-;1688:47;;1754:37;1786:3;1775:9;1771:19;1754:37;:::i;:::-;1744:47;;1810:37;1842:3;1831:9;1827:19;1810:37;:::i;:::-;1800:47;;1866:39;1900:3;1889:9;1885:19;1866:39;:::i;:::-;1856:49;;1924:37;1956:3;1945:9;1941:19;1924:37;:::i;:::-;1914:47;;1981:39;2015:3;2004:9;2000:19;1981:39;:::i;:::-;1970:50;;1086:940;;;;;;;;;;;;;;:::o;2031:274::-;2089:6;2142:2;2130:9;2121:7;2117:23;2113:32;2110:52;;;2158:1;2155;2148:12;2110:52;2197:9;2184:23;2247:8;2240:5;2236:20;2229:5;2226:31;2216:59;;2271:1;2268;2261:12;2216:59;2294:5;2031:274;-1:-1:-1;;;2031:274:64:o;4442:253::-;4482:3;4510:34;4571:2;4568:1;4564:10;4601:2;4598:1;4594:10;4632:3;4628:2;4624:12;4619:3;4616:21;4613:47;;;4640:18;;:::i;:::-;4676:13;;4442:253;-1:-1:-1;;;;4442:253:64:o;4700:216::-;4740:1;4766:34;4827:2;4824:1;4820:10;4849:3;4839:37;;4856:18;;:::i;:::-;4894:10;;4890:20;;;;;4700:216;-1:-1:-1;;4700:216:64:o;4921:189::-;4960:1;4986:8;5021:2;5018:1;5014:10;5043:3;5033:37;;5050:18;;:::i;5115:260::-;5154:7;5186:8;5221:2;5218:1;5214:10;5251:2;5248:1;5244:10;5307:3;5303:2;5299:12;5294:3;5291:21;5284:3;5277:11;5270:19;5266:47;5263:73;;;5316:18;;:::i;:::-;5356:13;;5115:260;-1:-1:-1;;;;5115:260:64:o;5380:238::-;5414:3;5461:5;5458:1;5447:20;5491:66;5482:7;5479:79;5476:105;;;5561:18;;:::i;:::-;5601:1;5597:15;;5380:238;-1:-1:-1;;5380:238:64:o;5623:191::-;5658:3;5689:66;5682:5;5679:77;5676:103;;;5759:18;;:::i;:::-;-1:-1:-1;5799:1:64;5795:13;;5623:191::o;5819:184::-;5871:77;5868:1;5861:88;5968:4;5965:1;5958:15;5992:4;5989:1;5982:15;6008:184;6060:77;6057:1;6050:88;6157:4;6154:1;6147:15;6181:4;6178:1;6171:15"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "1416200",
                "executionCost": "1510",
                "totalCost": "1417710"
              },
              "external": {
                "getMaxLiquidity(uint24)": "infinite",
                "insert(mapping(int24 => Ticks.Tick) storage,uint256,uint256,uint160,int24,int24,int24,int24,uint128,int24,uint160)": "infinite",
                "remove(mapping(int24 => Ticks.Tick) storage,int24,int24,uint128,int24)": "infinite"
              },
              "internal": {
                "cross(mapping(int24 => struct Ticks.Tick storage ref),int24,uint160,uint256,uint256,uint256,bool,uint24)": "infinite"
              }
            },
            "methodIdentifiers": {
              "getMaxLiquidity(uint24)": "dc47a5c2",
              "insert(mapping(int24 => Ticks.Tick) storage,uint256,uint256,uint160,int24,int24,int24,int24,uint128,int24,uint160)": "33440084",
              "remove(mapping(int24 => Ticks.Tick) storage,int24,int24,uint128,int24)": "3c5474df"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PriceOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TickOutOfBounds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"_tickSpacing\",\"type\":\"uint24\"}],\"name\":\"getMaxLiquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Tick management library for ranged liquidity.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/concentratedPool/Ticks.sol\":\"Ticks\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/libraries/concentratedPool/TickMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Math library for computing sqrt price for ticks of size 1.0001, i.e., sqrt(1.0001^tick) as fixed point Q64.96 numbers - supports\\n/// prices between 2**-128 and 2**128 - 1.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/TickMath.sol.\\nlibrary TickMath {\\n    /// @dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128.\\n    int24 internal constant MIN_TICK = -887272;\\n    /// @dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128 - 1.\\n    int24 internal constant MAX_TICK = -MIN_TICK;\\n    /// @dev The minimum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MIN_TICK).\\n    uint160 internal constant MIN_SQRT_RATIO = 4295128739;\\n    /// @dev The maximum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MAX_TICK).\\n    uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;\\n\\n    error TickOutOfBounds();\\n    error PriceOutOfBounds();\\n\\n    /// @notice Calculates sqrt(1.0001^tick) * 2^96.\\n    /// @dev Throws if |tick| > max tick.\\n    /// @param tick The input tick for the above formula.\\n    /// @return sqrtPriceX96 Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\\n    /// at the given tick.\\n    function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {\\n        uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));\\n        if (absTick > uint256(uint24(MAX_TICK))) revert TickOutOfBounds();\\n        unchecked {\\n            uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;\\n            if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;\\n            if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;\\n            if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;\\n            if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;\\n            if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;\\n            if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;\\n            if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;\\n            if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;\\n            if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;\\n            if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;\\n            if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;\\n            if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;\\n            if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;\\n            if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;\\n            if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;\\n            if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;\\n            if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;\\n            if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;\\n            if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;\\n\\n            if (tick > 0) ratio = type(uint256).max / ratio;\\n            // This divides by 1<<32 rounding up to go from a Q128.128 to a Q128.96.\\n            // We then downcast because we know the result always fits within 160 bits due to our tick input constraint.\\n            // We round up in the division so getTickAtSqrtRatio of the output price is always consistent.\\n            sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));\\n        }\\n    }\\n\\n    /// @notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio.\\n    /// @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\\n    /// ever return.\\n    /// @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96.\\n    /// @return tick The greatest tick for which the ratio is less than or equal to the input ratio.\\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {\\n        // Second inequality must be < because the price can never reach the price at the max tick.\\n        if (sqrtPriceX96 < MIN_SQRT_RATIO || sqrtPriceX96 >= MAX_SQRT_RATIO) revert PriceOutOfBounds();\\n        uint256 ratio = uint256(sqrtPriceX96) << 32;\\n\\n        uint256 r = ratio;\\n        uint256 msb;\\n\\n        assembly {\\n            let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(5, gt(r, 0xFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(4, gt(r, 0xFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(3, gt(r, 0xFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(2, gt(r, 0xF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(1, gt(r, 0x3))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := gt(r, 0x1)\\n            msb := or(msb, f)\\n        }\\n        unchecked {\\n            if (msb >= 128) r = ratio >> (msb - 127);\\n            else r = ratio << (127 - msb);\\n\\n            int256 log_2 = (int256(msb) - 128) << 64;\\n\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(63, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(62, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(61, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(60, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(59, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(58, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(57, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(56, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(55, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(54, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(53, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(52, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(51, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(50, f))\\n            }\\n\\n            int256 log_sqrt10001 = log_2 * 255738958999603826347141; // 128.128 number.\\n\\n            int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);\\n            int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);\\n\\n            tick = tickLow == tickHi ? tickLow : getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x78121358a23f8c7f267cc4622b3cd0d94970018c637c61a9f2e99a0fa40b7bda\",\"license\":\"GPL-2.0-or-later\"},\"contracts/libraries/concentratedPool/Ticks.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./TickMath.sol\\\";\\nimport \\\"hardhat/console.sol\\\";\\n\\n/// @notice Tick management library for ranged liquidity.\\nlibrary Ticks {\\n    struct Tick {\\n        int24 previousTick;\\n        int24 nextTick;\\n        uint128 liquidity;\\n        uint256 feeGrowthOutside0; // Per unit of liquidity.\\n        uint256 feeGrowthOutside1;\\n        uint160 secondsGrowthOutside;\\n    }\\n\\n    function getMaxLiquidity(uint24 _tickSpacing) public pure returns (uint128) {\\n        return type(uint128).max / uint128(uint24(TickMath.MAX_TICK) / (2 * uint24(_tickSpacing)));\\n    }\\n\\n    function cross(\\n        mapping(int24 => Tick) storage ticks,\\n        int24 nextTickToCross,\\n        uint160 secondsGrowthGlobal,\\n        uint256 currentLiquidity,\\n        uint256 feeGrowthGlobalA,\\n        uint256 feeGrowthGlobalB,\\n        bool zeroForOne,\\n        uint24 tickSpacing\\n    ) internal returns (uint256, int24) {\\n        ticks[nextTickToCross].secondsGrowthOutside = secondsGrowthGlobal - ticks[nextTickToCross].secondsGrowthOutside;\\n\\n        if (zeroForOne) {\\n            // Moving forward through the linked list.\\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\\n                currentLiquidity -= ticks[nextTickToCross].liquidity; // todo wrap in unchecked {}\\n            } else {\\n                currentLiquidity += ticks[nextTickToCross].liquidity;\\n            }\\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside0;\\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside1;\\n            nextTickToCross = ticks[nextTickToCross].previousTick;\\n        } else {\\n            // Moving backwards through the linked list.\\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\\n                currentLiquidity += ticks[nextTickToCross].liquidity;\\n            } else {\\n                currentLiquidity -= ticks[nextTickToCross].liquidity;\\n            }\\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside1;\\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside0;\\n            nextTickToCross = ticks[nextTickToCross].nextTick;\\n        }\\n        return (currentLiquidity, nextTickToCross);\\n    }\\n\\n    function insert(\\n        mapping(int24 => Tick) storage ticks,\\n        uint256 feeGrowthGlobal0,\\n        uint256 feeGrowthGlobal1,\\n        uint160 secondsGrowthGlobal,\\n        int24 lowerOld,\\n        int24 lower,\\n        int24 upperOld,\\n        int24 upper,\\n        uint128 amount,\\n        int24 nearestTick,\\n        uint160 currentPrice\\n    ) public returns (int24) {\\n        require(lower < upper, \\\"WRONG_ORDER\\\");\\n        require(TickMath.MIN_TICK <= lower, \\\"LOWER_RANGE\\\");\\n        require(upper <= TickMath.MAX_TICK, \\\"UPPER_RANGE\\\");\\n\\n        {\\n            // Stack overflow.\\n            uint128 currentLowerLiquidity = ticks[lower].liquidity;\\n            if (currentLowerLiquidity != 0 || lower == TickMath.MIN_TICK) {\\n                // We are adding liquidity to an existing tick.\\n                ticks[lower].liquidity = currentLowerLiquidity + amount;\\n            } else {\\n                // We are inserting a new tick.\\n                Ticks.Tick storage old = ticks[lowerOld];\\n                int24 oldNextTick = old.nextTick;\\n\\n                require((old.liquidity != 0 || lowerOld == TickMath.MIN_TICK) && lowerOld < lower && lower < oldNextTick, \\\"LOWER_ORDER\\\");\\n\\n                if (lower <= nearestTick) {\\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\\n                } else {\\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, 0, 0, 0);\\n                }\\n\\n                old.nextTick = lower;\\n                ticks[oldNextTick].previousTick = lower;\\n            }\\n        }\\n\\n        uint128 currentUpperLiquidity = ticks[upper].liquidity;\\n        if (currentUpperLiquidity != 0 || upper == TickMath.MAX_TICK) {\\n            // We are adding liquidity to an existing tick.\\n            ticks[upper].liquidity = currentUpperLiquidity + amount;\\n        } else {\\n            // Inserting a new tick.\\n            Ticks.Tick storage old = ticks[upperOld];\\n            int24 oldNextTick = old.nextTick;\\n\\n            require(old.liquidity != 0 && oldNextTick > upper && upperOld < upper, \\\"UPPER_ORDER\\\");\\n\\n            if (upper <= nearestTick) {\\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\\n            } else {\\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, 0, 0, 0);\\n            }\\n            old.nextTick = upper;\\n            ticks[oldNextTick].previousTick = upper;\\n        }\\n\\n        int24 actualNearestTick = TickMath.getTickAtSqrtRatio(currentPrice);\\n\\n        if (nearestTick < upper && upper <= actualNearestTick) {\\n            nearestTick = upper;\\n        } else if (nearestTick < lower && lower <= actualNearestTick) {\\n            nearestTick = lower;\\n        }\\n\\n        return nearestTick;\\n    }\\n\\n    function remove(\\n        mapping(int24 => Tick) storage ticks,\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        int24 nearestTick\\n    ) public returns (int24) {\\n        Ticks.Tick storage current = ticks[lower];\\n\\n        if (lower != TickMath.MIN_TICK && current.liquidity == amount) {\\n            // Delete lower tick.\\n            Ticks.Tick storage previous = ticks[current.previousTick];\\n            Ticks.Tick storage next = ticks[current.nextTick];\\n\\n            previous.nextTick = current.nextTick;\\n            next.previousTick = current.previousTick;\\n\\n            if (nearestTick == lower) nearestTick = current.previousTick;\\n\\n            delete ticks[lower];\\n        } else {\\n            unchecked {\\n                current.liquidity -= amount;\\n            }\\n        }\\n\\n        current = ticks[upper];\\n\\n        if (upper != TickMath.MAX_TICK && current.liquidity == amount) {\\n            // Delete upper tick.\\n            Ticks.Tick storage previous = ticks[current.previousTick];\\n            Ticks.Tick storage next = ticks[current.nextTick];\\n\\n            previous.nextTick = current.nextTick;\\n            next.previousTick = current.previousTick;\\n\\n            if (nearestTick == upper) nearestTick = current.previousTick;\\n\\n            delete ticks[upper];\\n        } else {\\n            unchecked {\\n                current.liquidity -= amount;\\n            }\\n        }\\n\\n        return nearestTick;\\n    }\\n}\\n\",\"keccak256\":\"0x3c5bb30d7769f72aad064ab482c1237a794fd1e16fc85c444255227cf93b65d2\",\"license\":\"GPL-2.0-or-later\"},\"hardhat/console.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >= 0.4.22 <0.9.0;\\n\\nlibrary console {\\n\\taddress constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);\\n\\n\\tfunction _sendLogPayload(bytes memory payload) private view {\\n\\t\\tuint256 payloadLength = payload.length;\\n\\t\\taddress consoleAddress = CONSOLE_ADDRESS;\\n\\t\\tassembly {\\n\\t\\t\\tlet payloadStart := add(payload, 32)\\n\\t\\t\\tlet r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)\\n\\t\\t}\\n\\t}\\n\\n\\tfunction log() internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log()\\\"));\\n\\t}\\n\\n\\tfunction logInt(int p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(int)\\\", p0));\\n\\t}\\n\\n\\tfunction logUint(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction logString(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction logBool(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction logAddress(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes(bytes memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes1(bytes1 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes1)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes2(bytes2 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes2)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes3(bytes3 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes3)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes4(bytes4 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes4)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes5(bytes5 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes5)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes6(bytes6 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes6)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes7(bytes7 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes7)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes8(bytes8 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes8)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes9(bytes9 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes9)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes10(bytes10 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes10)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes11(bytes11 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes11)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes12(bytes12 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes12)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes13(bytes13 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes13)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes14(bytes14 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes14)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes15(bytes15 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes15)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes16(bytes16 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes16)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes17(bytes17 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes17)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes18(bytes18 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes18)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes19(bytes19 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes19)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes20(bytes20 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes20)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes21(bytes21 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes21)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes22(bytes22 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes22)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes23(bytes23 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes23)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes24(bytes24 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes24)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes25(bytes25 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes25)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes26(bytes26 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes26)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes27(bytes27 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes27)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes28(bytes28 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes28)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes29(bytes29 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes29)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes30(bytes30 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes30)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes31(bytes31 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes31)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes32(bytes32 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes32)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction log(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction log(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction log(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n}\\n\",\"keccak256\":\"0x72b6a1d297cd3b033d7c2e4a7e7864934bb767db6453623f1c3082c6534547f4\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Tick management library for ranged liquidity.",
            "version": 1
          }
        }
      },
      "contracts/libraries/concentratedPool/UnsafeMath.sol": {
        "UnsafeMath": {
          "abi": [],
          "devdoc": {
            "author": "Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/UnsafeMath.sol.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122012396fb4bc086e867124437d0d0a9454cd008ebfe1a1cc49f6cd6692da42046b64736f6c63430008070033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT CODECOPY PUSH16 0xB4BC086E867124437D0D0A9454CD008E 0xBF 0xE1 LOG1 0xCC 0x49 0xF6 0xCD PUSH7 0x92DA42046B6473 PUSH16 0x6C634300080700330000000000000000 ",
              "sourceMap": "316:420:30:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;316:420:30;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122012396fb4bc086e867124437d0d0a9454cd008ebfe1a1cc49f6cd6692da42046b64736f6c63430008070033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT CODECOPY PUSH16 0xB4BC086E867124437D0D0A9454CD008E 0xBF 0xE1 LOG1 0xCC 0x49 0xF6 0xCD PUSH7 0x92DA42046B6473 PUSH16 0x6C634300080700330000000000000000 ",
              "sourceMap": "316:420:30:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "divRoundingUp(uint256,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/UnsafeMath.sol.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Math library that contains methods that perform common math functions but do not do any overflow or underflow checks.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/concentratedPool/UnsafeMath.sol\":\"UnsafeMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/libraries/concentratedPool/UnsafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.5.0;\\n\\n/// @notice Math library that contains methods that perform common math functions but do not do any overflow or underflow checks.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/UnsafeMath.sol.\\nlibrary UnsafeMath {\\n    /// @notice Returns ceil(x / y).\\n    /// @dev Division by 0 has unspecified behavior, and must be checked externally.\\n    /// @param x The dividend.\\n    /// @param y The divisor.\\n    /// @return z The quotient, ceil(x / y).\\n    function divRoundingUp(uint256 x, uint256 y) internal pure returns (uint256 z) {\\n        assembly {\\n            z := add(div(x, y), gt(mod(x, y), 0))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x7441e71bffbdeb978784685e2a88618190942f1c9b5452574326256d5d0b7039\",\"license\":\"GPL-2.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Math library that contains methods that perform common math functions but do not do any overflow or underflow checks.",
            "version": 1
          }
        }
      },
      "contracts/migration/IntermediaryToken.sol": {
        "IntermediaryToken": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_lpToken",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "domainSeperator",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "deposit",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "minted",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "lpToken",
              "outputs": [
                {
                  "internalType": "contract IERC20",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "redeem",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "claimed",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "params": {
                  "amount": "The maximum collective `amount` that `spender` can pull.",
                  "spender": "Address of the party that can pull tokens from `msg.sender`'s account."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "deposit(uint256)": {
                "details": "Since we might be rewarding the intermediary token for some time we allow users to mint it."
              },
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "amount": "The number of tokens that are approved (2^256-1 means infinite).",
                  "deadline": "The time at which to expire the signature.",
                  "owner": "The address to approve from.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "spender": "The address to be approved.",
                  "v": "The recovery byte of the signature."
                }
              },
              "transfer(address,uint256)": {
                "params": {
                  "amount": "The token `amount` to move.",
                  "recipient": "The address to move tokens to."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "transferFrom(address,address,uint256)": {
                "params": {
                  "amount": "The token `amount` to move.",
                  "recipient": "The address to move tokens to.",
                  "sender": "Address to pull tokens `from`."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              }
            },
            "stateVariables": {
              "lpToken": {
                "details": "Liquidity token of the Trident constant product pool."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_11960": {
                  "entryPoint": null,
                  "id": 11960,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_4954": {
                  "entryPoint": null,
                  "id": 4954,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_calculateDomainSeparator_11995": {
                  "entryPoint": null,
                  "id": 11995,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_mint_12250": {
                  "entryPoint": 315,
                  "id": 12250,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_decode_address_fromMemory": {
                  "entryPoint": 423,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_addresst_uint256_fromMemory": {
                  "entryPoint": 452,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 517,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1458:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "74:117:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "84:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "99:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "93:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "93:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "84:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "169:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "178:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "181:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "171:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "171:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "171:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "128:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "139:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "154:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "159:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "150:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "150:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "163:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "146:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "146:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "135:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "135:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "125:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "125:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "118:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "118:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "115:70:64"
                            }
                          ]
                        },
                        "name": "abi_decode_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "53:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "64:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "311:239:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "357:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "366:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "369:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "359:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "359:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "359:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "332:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "341:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "328:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "328:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "353:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "324:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "324:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "321:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "382:50:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "422:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "392:29:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "392:40:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "382:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "441:59:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "485:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "496:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "481:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "481:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "451:29:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "451:49:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "441:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "509:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "529:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "540:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "525:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "525:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "519:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "519:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "509:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "261:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "272:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "284:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "292:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "300:6:64",
                            "type": ""
                          }
                        ],
                        "src": "196:354:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "768:276:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "778:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "790:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "801:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "786:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "786:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "778:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "821:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "832:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "814:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "814:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "814:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "859:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "870:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "855:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "855:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "875:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "848:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "848:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "848:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "902:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "913:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "898:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "898:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "918:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "891:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "891:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "891:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "945:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "956:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "941:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "941:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "961:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "934:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "934:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "934:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "988:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "999:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "984:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "984:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "1009:6:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1025:3:64",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1030:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1021:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1021:11:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1034:1:64",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "1017:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1017:19:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1005:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1005:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "977:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "977:61:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "977:61:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "705:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "716:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "724:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "732:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "740:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "748:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "759:4:64",
                            "type": ""
                          }
                        ],
                        "src": "555:489:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1150:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1160:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1172:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1183:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1168:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1168:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1160:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1202:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1213:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1195:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1195:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1195:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1119:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1130:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1141:4:64",
                            "type": ""
                          }
                        ],
                        "src": "1049:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1279:177:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1314:111:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1335:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1342:3:64",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1347:10:64",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "1338:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1338:20:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1328:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1328:31:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1328:31:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1379:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1382:4:64",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1372:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1372:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1372:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1407:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1410:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1400:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1400:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1400:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "1295:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "1302:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "1298:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1298:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1292:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1292:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1289:136:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1434:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "1445:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "1448:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1441:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1441:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "1434:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "1262:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "1265:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "1271:3:64",
                            "type": ""
                          }
                        ],
                        "src": "1231:225:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        value1 := abi_decode_address_fromMemory(add(headStart, 32))\n        value2 := mload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        sum := add(x, y)\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60e06040523480156200001157600080fd5b5060405162001543380380620015438339810160408190526200003491620001c4565b4660805262000111604080518082018252600e81526d29bab9b434902628102a37b5b2b760911b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b60a0526001600160601b0319606084901b1660c0526200013282826200013b565b5050506200022c565b806000808282546200014e919062000205565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80516001600160a01b0381168114620001bf57600080fd5b919050565b600080600060608486031215620001da57600080fd5b620001e584620001a7565b9250620001f560208501620001a7565b9150604084015190509250925092565b600082198211156200022757634e487b7160e01b600052601160045260246000fd5b500190565b60805160a05160c05160601c6112c86200027b600039600081816101f20152818161070f015281816107fa01528181610c960152610d6b01526000610620015260006104f701526112c86000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063b6b55f2511610066578063b6b55f25146102c8578063d505accf146102db578063db006a75146102f0578063dd62ed3e1461030357600080fd5b806370a08231146102395780637ecebe001461025957806395d89b4114610279578063a9059cbb146102b557600080fd5b806330adf81f116100d357806330adf81f146101a4578063313ce567146101cb5780633644e515146101e55780635fcbd285146101ed57600080fd5b806306fdde0314610105578063095ea7b31461015757806318160ddd1461017a57806323b872dd14610191575b600080fd5b6101416040518060400160405280600e81526020017f5375736869204c5020546f6b656e00000000000000000000000000000000000081525081565b60405161014e9190611110565b60405180910390f35b61016a610165366004611092565b61032e565b604051901515815260200161014e565b61018360005481565b60405190815260200161014e565b61016a61019f366004610fe3565b6103a7565b6101837f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6101d3601281565b60405160ff909116815260200161014e565b6101836104f3565b6102147f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161014e565b610183610247366004610f8e565b60016020526000908152604090205481565b610183610267366004610f8e565b60036020526000908152604090205481565b6101416040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b61016a6102c3366004611092565b610642565b6101836102d63660046110de565b6106c7565b6102ee6102e936600461101f565b6108fc565b005b6101836102fe3660046110de565b610c4e565b610183610311366004610fb0565b600260209081526000928352604080842090915290825290205481565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103969086815260200190565b60405180910390a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104445773ffffffffffffffffffffffffffffffffffffffff841660009081526002602090815260408083203384529091528120805484929061043e908490611213565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604081208054849290610479908490611213565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260016020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104e19086815260200190565b60405180910390a35060019392505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461061d5750604080518082018252600e81527f5375736869204c5020546f6b656e00000000000000000000000000000000000060209182015281518083018352600181527f31000000000000000000000000000000000000000000000000000000000000009082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600090815260016020526040812080548391908390610663908490611213565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103969086815260200190565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561075157600080fd5b505afa158015610765573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078991906110f7565b905080156107b15780836000546107a091906111d6565b6107aa919061119b565b91506107b5565b8291505b6107bf3383610e62565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd90606401602060405180830381600087803b15801561085357600080fd5b505af1158015610867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088b91906110bc565b6108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064015b60405180910390fd5b50919050565b42841015610966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016108ed565b60006109706104f3565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c929091906109cb8361122a565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001610a6c9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015610af5573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610b7057508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e4154555245000000000000000060448201526064016108ed565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b158015610cd857600080fd5b505afa158015610cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1091906110f7565b600054909150610d2084836111d6565b610d2a919061119b565b9150610d363384610eda565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb90604401602060405180830381600087803b158015610dc457600080fd5b505af1158015610dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfc91906110bc565b6108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c4544000000000000000000000000000000000060448201526064016108ed565b80600080828254610e739190611183565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081208054839290610f0f908490611213565b909155505060008054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610ece565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f8957600080fd5b919050565b600060208284031215610fa057600080fd5b610fa982610f65565b9392505050565b60008060408385031215610fc357600080fd5b610fcc83610f65565b9150610fda60208401610f65565b90509250929050565b600080600060608486031215610ff857600080fd5b61100184610f65565b925061100f60208501610f65565b9150604084013590509250925092565b600080600080600080600060e0888a03121561103a57600080fd5b61104388610f65565b965061105160208901610f65565b95506040880135945060608801359350608088013560ff8116811461107557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156110a557600080fd5b6110ae83610f65565b946020939093013593505050565b6000602082840312156110ce57600080fd5b81518015158114610fa957600080fd5b6000602082840312156110f057600080fd5b5035919050565b60006020828403121561110957600080fd5b5051919050565b600060208083528351808285015260005b8181101561113d57858101830151858201604001528201611121565b8181111561114f576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000821982111561119657611196611263565b500190565b6000826111d1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561120e5761120e611263565b500290565b60008282101561122557611225611263565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561125c5761125c611263565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220dc2f8211d7d2c8a8dd838c497c375d335873e4e46c37316857643f3b672f798064736f6c63430008070033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1543 CODESIZE SUB DUP1 PUSH3 0x1543 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1C4 JUMP JUMPDEST CHAINID PUSH1 0x80 MSTORE PUSH3 0x111 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x29BAB9B434902628102A37B5B2B7 PUSH1 0x91 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0xC0 MSTORE PUSH3 0x132 DUP3 DUP3 PUSH3 0x13B JUMP JUMPDEST POP POP POP PUSH3 0x22C JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH3 0x14E SWAP2 SWAP1 PUSH3 0x205 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x1DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1E5 DUP5 PUSH3 0x1A7 JUMP JUMPDEST SWAP3 POP PUSH3 0x1F5 PUSH1 0x20 DUP6 ADD PUSH3 0x1A7 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0x227 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x12C8 PUSH3 0x27B PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x1F2 ADD MSTORE DUP2 DUP2 PUSH2 0x70F ADD MSTORE DUP2 DUP2 PUSH2 0x7FA ADD MSTORE DUP2 DUP2 PUSH2 0xC96 ADD MSTORE PUSH2 0xD6B ADD MSTORE PUSH1 0x0 PUSH2 0x620 ADD MSTORE PUSH1 0x0 PUSH2 0x4F7 ADD MSTORE PUSH2 0x12C8 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xB6B55F25 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x2C8 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0x2F0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x30ADF81F GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x5FCBD285 EQ PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x191 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x141 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14E SWAP2 SWAP1 PUSH2 0x1110 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16A PUSH2 0x165 CALLDATASIZE PUSH1 0x4 PUSH2 0x1092 JUMP JUMPDEST PUSH2 0x32E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14E JUMP JUMPDEST PUSH2 0x183 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14E JUMP JUMPDEST PUSH2 0x16A PUSH2 0x19F CALLDATASIZE PUSH1 0x4 PUSH2 0xFE3 JUMP JUMPDEST PUSH2 0x3A7 JUMP JUMPDEST PUSH2 0x183 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x1D3 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14E JUMP JUMPDEST PUSH2 0x183 PUSH2 0x4F3 JUMP JUMPDEST PUSH2 0x214 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14E JUMP JUMPDEST PUSH2 0x183 PUSH2 0x247 CALLDATASIZE PUSH1 0x4 PUSH2 0xF8E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x183 PUSH2 0x267 CALLDATASIZE PUSH1 0x4 PUSH2 0xF8E JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x141 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x16A PUSH2 0x2C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1092 JUMP JUMPDEST PUSH2 0x642 JUMP JUMPDEST PUSH2 0x183 PUSH2 0x2D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x10DE JUMP JUMPDEST PUSH2 0x6C7 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0x2E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x101F JUMP JUMPDEST PUSH2 0x8FC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x183 PUSH2 0x2FE CALLDATASIZE PUSH1 0x4 PUSH2 0x10DE JUMP JUMPDEST PUSH2 0xC4E JUMP JUMPDEST PUSH2 0x183 PUSH2 0x311 CALLDATASIZE PUSH1 0x4 PUSH2 0xFB0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x396 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x444 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x43E SWAP1 DUP5 SWAP1 PUSH2 0x1213 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x479 SWAP1 DUP5 SWAP1 PUSH2 0x1213 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x4E1 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x61D JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP4 SWAP1 PUSH2 0x663 SWAP1 DUP5 SWAP1 PUSH2 0x1213 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x396 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x751 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x765 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x789 SWAP2 SWAP1 PUSH2 0x10F7 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x7B1 JUMPI DUP1 DUP4 PUSH1 0x0 SLOAD PUSH2 0x7A0 SWAP2 SWAP1 PUSH2 0x11D6 JUMP JUMPDEST PUSH2 0x7AA SWAP2 SWAP1 PUSH2 0x119B JUMP JUMPDEST SWAP2 POP PUSH2 0x7B5 JUMP JUMPDEST DUP3 SWAP2 POP JUMPDEST PUSH2 0x7BF CALLER DUP4 PUSH2 0xE62 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x853 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x867 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x88B SWAP2 SWAP1 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x8F6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F46524F4D5F4641494C4544000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x966 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8ED JUMP JUMPDEST PUSH1 0x0 PUSH2 0x970 PUSH2 0x4F3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP3 DUP13 SWAP3 DUP13 SWAP3 DUP13 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x9CB DUP4 PUSH2 0x122A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA6C SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAF5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xB70 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0xBD6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8ED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD10 SWAP2 SWAP1 PUSH2 0x10F7 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP PUSH2 0xD20 DUP5 DUP4 PUSH2 0x11D6 JUMP JUMPDEST PUSH2 0xD2A SWAP2 SWAP1 PUSH2 0x119B JUMP JUMPDEST SWAP2 POP PUSH2 0xD36 CALLER DUP5 PUSH2 0xEDA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDD8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDFC SWAP2 SWAP1 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x8F6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8ED JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0xE73 SWAP2 SWAP1 PUSH2 0x1183 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0xF0F SWAP1 DUP5 SWAP1 PUSH2 0x1213 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP1 SLOAD DUP3 SWAP1 SUB DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0xECE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xF89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFA9 DUP3 PUSH2 0xF65 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFCC DUP4 PUSH2 0xF65 JUMP JUMPDEST SWAP2 POP PUSH2 0xFDA PUSH1 0x20 DUP5 ADD PUSH2 0xF65 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xFF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1001 DUP5 PUSH2 0xF65 JUMP JUMPDEST SWAP3 POP PUSH2 0x100F PUSH1 0x20 DUP6 ADD PUSH2 0xF65 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x103A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1043 DUP9 PUSH2 0xF65 JUMP JUMPDEST SWAP7 POP PUSH2 0x1051 PUSH1 0x20 DUP10 ADD PUSH2 0xF65 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1075 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10AE DUP4 PUSH2 0xF65 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xFA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x113D JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x1121 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x114F JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1196 JUMPI PUSH2 0x1196 PUSH2 0x1263 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x11D1 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x120E JUMPI PUSH2 0x120E PUSH2 0x1263 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1225 JUMPI PUSH2 0x1225 PUSH2 0x1263 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x125C JUMPI PUSH2 0x125C PUSH2 0x1263 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC 0x2F DUP3 GT 0xD7 0xD2 0xC8 0xA8 0xDD DUP4 DUP13 0x49 PUSH29 0x375D335873E4E46C37316857643F3B672F798064736F6C634300080700 CALLER ",
              "sourceMap": "293:1197:31:-:0;;;447:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1490:13:45;1462:41;;;;1866:4;;;;;;;;;;;-1:-1:-1;1866:4:45;;;;;1900:10;;;;;;;;;;-1:-1:-1;1900:10:45;;;;1709:278;;1737:95;1709:278;;;814:25:64;1850:22:45;855:18:64;;;848:34;1890:21:45;898:18:64;;;891:34;941:18;;;934:34;;;;1968:4:45;984:19:64;;;;977:61;;;;1709:278:45;;;;;;;;;;786:19:64;;;;1709:278:45;;1686:311;;;;;1513:47;;-1:-1:-1;554:26:31;;;-1:-1:-1;554:26:31;;;590;596:10;608:7;590:5;:26::i;:::-;447:176;;;293:1197;;5587:344:45;5671:6;5656:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;5830:20:45;;;;;;:9;:20;;;;;;;;:30;;;;;;5885:39;1195:25:64;;;5885:39:45;;1168:18:64;5885:39:45;;;;;;;5587:344;;:::o;14:177:64:-;93:13;;-1:-1:-1;135:31:64;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:354::-;284:6;292;300;353:2;341:9;332:7;328:23;324:32;321:52;;;369:1;366;359:12;321:52;392:40;422:9;392:40;:::i;:::-;382:50;;451:49;496:2;485:9;481:18;451:49;:::i;:::-;441:59;;540:2;529:9;525:18;519:25;509:35;;196:354;;;;;:::o;1231:225::-;1271:3;1302:1;1298:6;1295:1;1292:13;1289:136;;;1347:10;1342:3;1338:20;1335:1;1328:31;1382:4;1379:1;1372:15;1410:4;1407:1;1400:15;1289:136;-1:-1:-1;1441:9:64;;1231:225::o;:::-;293:1197:31;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@DOMAIN_SEPARATOR_12013": {
                  "entryPoint": 1267,
                  "id": 12013,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@PERMIT_TYPEHASH_11941": {
                  "entryPoint": null,
                  "id": 11941,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_burn_12278": {
                  "entryPoint": 3802,
                  "id": 12278,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_calculateDomainSeparator_11995": {
                  "entryPoint": null,
                  "id": 11995,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_mint_12250": {
                  "entryPoint": 3682,
                  "id": 12250,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@allowance_11929": {
                  "entryPoint": null,
                  "id": 11929,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@approve_12042": {
                  "entryPoint": 814,
                  "id": 12042,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@balanceOf_11922": {
                  "entryPoint": null,
                  "id": 11922,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@decimals_11915": {
                  "entryPoint": null,
                  "id": 11915,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@deposit_5012": {
                  "entryPoint": 1735,
                  "id": 5012,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@lpToken_4933": {
                  "entryPoint": null,
                  "id": 4933,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@name_11909": {
                  "entryPoint": null,
                  "id": 11909,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@nonces_11946": {
                  "entryPoint": null,
                  "id": 11946,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@permit_12222": {
                  "entryPoint": 2300,
                  "id": 12222,
                  "parameterSlots": 7,
                  "returnSlots": 0
                },
                "@redeem_5055": {
                  "entryPoint": 3150,
                  "id": 5055,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@symbol_11912": {
                  "entryPoint": null,
                  "id": 11912,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@totalSupply_11917": {
                  "entryPoint": null,
                  "id": 11917,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@transferFrom_12133": {
                  "entryPoint": 935,
                  "id": 12133,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@transfer_12076": {
                  "entryPoint": 1602,
                  "id": 12076,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_address": {
                  "entryPoint": 3941,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 3982,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 4016,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 4067,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32": {
                  "entryPoint": 4127,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 7
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 4242,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bool_fromMemory": {
                  "entryPoint": 4284,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 4318,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 4343,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IERC20_$2316__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 4368,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_77631768048ee92f9dcf4b9b9d762877d6b9723214862c733f0596708fc219b7__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 4483,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 4507,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 4566,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 4627,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 4650,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 4707,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:9752:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "63:147:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "73:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "95:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "82:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "82:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "73:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "188:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "197:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "200:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "190:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "190:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "190:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "124:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "135:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "142:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "131:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "131:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "121:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "121:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "114:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "114:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "111:93:64"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "42:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "53:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:196:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "285:116:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "331:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "340:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "343:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "333:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "333:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "333:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "306:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "315:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "302:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "302:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "327:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "298:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "298:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "295:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "356:39:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "385:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "366:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "366:29:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "356:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "251:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "262:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "274:6:64",
                            "type": ""
                          }
                        ],
                        "src": "215:186:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "493:173:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "539:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "548:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "551:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "541:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "541:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "541:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "514:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "523:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "510:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "510:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "535:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "506:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "506:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "503:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "564:39:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "593:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "574:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "574:29:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "564:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "612:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "645:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "656:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "641:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "641:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "622:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "622:38:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "612:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "451:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "462:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "474:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "482:6:64",
                            "type": ""
                          }
                        ],
                        "src": "406:260:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "775:224:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "821:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "830:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "833:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "823:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "823:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "823:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "796:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "805:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "792:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "792:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "817:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "788:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "788:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "785:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "846:39:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "875:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "856:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "856:29:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "846:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "894:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "927:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "938:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "923:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "923:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "904:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "904:38:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "894:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "951:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "978:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "989:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "974:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "974:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "961:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "961:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "951:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "725:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "736:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "748:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "756:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "764:6:64",
                            "type": ""
                          }
                        ],
                        "src": "671:328:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1174:523:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1221:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1230:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1233:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1223:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1223:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1223:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1195:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1204:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1191:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1191:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1216:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1187:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1187:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1184:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1246:39:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1275:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1256:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1256:29:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1246:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1294:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1327:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1338:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1323:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1323:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1304:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1304:38:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1294:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1351:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1378:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1389:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1374:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1374:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1361:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1361:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1351:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1402:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1429:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1440:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1425:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1425:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1412:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1412:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1402:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1453:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1483:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1494:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1479:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1479:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1466:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1466:33:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1457:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1547:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1556:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1559:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1549:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1549:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1549:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1521:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1532:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1539:4:64",
                                            "type": "",
                                            "value": "0xff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1528:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1528:16:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1518:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1518:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1511:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1511:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1508:55:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1572:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1582:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "1572:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1596:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1623:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1634:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1619:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1619:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1606:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1606:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "1596:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1648:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1675:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1686:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1671:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1671:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1658:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1658:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1648:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1092:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1103:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1115:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1123:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1131:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1139:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1147:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "1155:6:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "1163:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1004:693:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1789:167:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1835:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1844:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1847:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1837:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1837:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1837:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1810:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1819:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1806:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1806:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1831:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1802:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1802:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1799:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1860:39:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1889:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1870:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1870:29:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1860:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1908:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1935:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1946:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1931:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1931:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1918:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1918:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1908:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1747:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1758:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1770:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1778:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1702:254:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2039:199:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2085:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2094:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2097:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2087:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2087:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2087:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2060:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2069:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2056:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2056:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2081:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2052:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2052:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2049:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2110:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2129:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2123:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2123:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2114:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2192:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2201:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2204:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2194:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2194:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2194:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2161:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "2182:5:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "2175:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2175:13:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "2168:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2168:21:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2158:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2158:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2151:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2151:40:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2148:60:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2217:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2227:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2217:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2005:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2016:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2028:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1961:277:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2313:110:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2359:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2368:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2371:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2361:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2361:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2361:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2334:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2343:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2330:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2330:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2355:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2326:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2326:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2323:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2384:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2407:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2394:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2394:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2384:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2279:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2290:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2302:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2243:180:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2509:103:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2555:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2564:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2567:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2557:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2557:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2557:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2530:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2539:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2526:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2526:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2551:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2522:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2522:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2519:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2580:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2596:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2590:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2590:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2580:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2475:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2486:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2498:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2428:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2865:196:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2882:3:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2887:66:64",
                                    "type": "",
                                    "value": "0x1901000000000000000000000000000000000000000000000000000000000000"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2875:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2875:79:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2875:79:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2974:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2979:1:64",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2970:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2970:11:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2983:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2963:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2963:27:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2963:27:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3010:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3015:2:64",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3006:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3006:12:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3020:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2999:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2999:28:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2999:28:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3036:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3047:3:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3052:2:64",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3043:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3043:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3036:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2833:3:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2838:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2846:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2857:3:64",
                            "type": ""
                          }
                        ],
                        "src": "2617:444:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3167:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3177:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3189:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3200:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3185:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3185:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3177:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3219:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3234:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3242:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3230:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3230:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3212:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3212:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3212:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3136:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3147:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3158:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3066:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3454:241:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3464:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3476:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3487:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3472:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3472:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3464:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3499:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3509:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3503:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3567:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3582:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3590:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3578:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3578:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3560:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3560:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3560:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3614:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3625:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3610:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3610:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3634:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3642:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3630:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3630:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3603:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3603:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3603:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3666:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3677:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3662:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3662:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3682:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3655:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3655:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3655:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3407:9:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3418:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3426:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3434:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3445:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3297:398:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3829:168:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3839:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3851:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3862:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3847:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3847:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3839:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3881:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3896:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3904:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3892:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3892:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3874:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3874:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3874:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3968:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3979:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3964:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3964:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3984:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3957:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3957:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3957:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3790:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3801:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3809:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3820:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3700:297:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4097:92:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4107:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4119:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4130:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4115:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4115:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4107:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4149:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "4174:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "4167:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4167:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "4160:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4160:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4142:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4142:41:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4142:41:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4066:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4077:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4088:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4002:187:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4295:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4305:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4317:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4328:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4313:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4313:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4305:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4347:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4358:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4340:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4340:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4340:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4264:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4275:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4286:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4194:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4617:373:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4627:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4639:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4650:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4635:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4635:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4627:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4670:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4681:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4663:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4663:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4663:25:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4697:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4707:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4701:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4769:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4780:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4765:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4765:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4789:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4797:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4785:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4785:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4758:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4758:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4758:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4821:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4832:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4817:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4817:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4841:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4849:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4837:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4837:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4810:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4810:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4810:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4873:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4884:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4869:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4869:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4889:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4862:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4862:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4862:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4916:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4927:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4912:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4912:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "4933:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4905:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4905:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4905:35:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4960:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4971:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4956:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4956:19:64"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "4977:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4949:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4949:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4949:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4546:9:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "4557:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "4565:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4573:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4581:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4589:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4597:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4608:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4376:614:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5208:299:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5218:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5230:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5241:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5226:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5226:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5218:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5261:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5272:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5254:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5254:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5254:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5299:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5310:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5295:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5295:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5315:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5288:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5288:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5288:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5342:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5353:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5338:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5338:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5358:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5331:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5331:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5331:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5385:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5396:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5381:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5381:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "5401:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5374:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5374:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5374:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5428:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5439:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5424:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5424:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "5449:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5457:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5445:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5445:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5417:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5417:84:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5417:84:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5145:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "5156:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5164:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5172:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5180:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5188:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5199:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4995:512:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5693:217:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5703:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5715:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5726:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5711:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5711:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5703:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5746:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5757:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5739:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5739:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5739:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5784:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5795:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5780:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5780:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5804:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5812:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5800:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5800:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5773:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5773:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5773:45:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5838:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5849:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5834:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5834:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5854:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5827:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5827:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5827:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5881:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5892:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5877:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5877:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "5897:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5870:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5870:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5870:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5638:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5649:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5657:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5665:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5673:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5684:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5512:398:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6031:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6041:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6053:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6064:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6049:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6049:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6041:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6083:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6098:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6106:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6094:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6094:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6076:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6076:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6076:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IERC20_$2316__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6000:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6011:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6022:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5915:241:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6282:535:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6292:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6302:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6296:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6320:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6331:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6313:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6313:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6313:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6343:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6363:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6357:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6357:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6347:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6390:9:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6401:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6386:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6386:18:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6406:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6379:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6379:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6379:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6422:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6431:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6426:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6491:90:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6520:9:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6531:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6516:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6516:17:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "6535:2:64",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6512:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6512:26:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6554:6:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6562:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6550:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "6550:14:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6566:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6546:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6546:23:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6540:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6540:30:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6505:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6505:66:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6505:66:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6452:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6455:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6449:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6449:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6463:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6465:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6474:1:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6477:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6470:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6470:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6465:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6445:3:64",
                                "statements": []
                              },
                              "src": "6441:140:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6615:66:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6644:9:64"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6655:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6640:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6640:22:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "6664:2:64",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6636:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6636:31:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6669:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6629:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6629:42:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6629:42:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6596:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6599:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6593:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6593:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6590:91:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6690:121:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6706:9:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "6725:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6733:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "6721:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6721:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6738:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "6717:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6717:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6702:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6702:104:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6808:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6698:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6698:113:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6690:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6251:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6262:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6273:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6161:656:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6996:174:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7013:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7024:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7006:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7006:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7006:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7047:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7058:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7043:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7043:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7063:2:64",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7036:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7036:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7036:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7086:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7097:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7082:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7082:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f5045524d49545f5349474e4154555245",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7102:26:64",
                                    "type": "",
                                    "value": "INVALID_PERMIT_SIGNATURE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7075:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7075:54:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7075:54:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7138:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7150:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7161:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7146:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7146:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7138:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6973:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6987:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6822:348:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7349:170:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7366:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7377:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7359:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7359:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7359:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7400:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7411:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7396:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7396:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7416:2:64",
                                    "type": "",
                                    "value": "20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7389:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7389:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7389:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7439:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7450:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7435:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7435:18:64"
                                  },
                                  {
                                    "hexValue": "5452414e534645525f46524f4d5f4641494c4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7455:22:64",
                                    "type": "",
                                    "value": "TRANSFER_FROM_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7428:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7428:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7428:50:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7487:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7499:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7510:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7495:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7495:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7487:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_77631768048ee92f9dcf4b9b9d762877d6b9723214862c733f0596708fc219b7__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7326:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7340:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7175:344:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7698:165:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7715:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7726:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7708:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7708:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7708:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7749:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7760:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7745:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7745:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7765:2:64",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7738:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7738:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7738:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7788:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7799:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7784:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7784:18:64"
                                  },
                                  {
                                    "hexValue": "5452414e534645525f4641494c4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "7804:17:64",
                                    "type": "",
                                    "value": "TRANSFER_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7777:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7777:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7777:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7831:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7843:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7854:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7839:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7839:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7831:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7675:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7689:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7524:339:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8042:173:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8059:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8070:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8052:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8052:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8052:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8093:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8104:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8089:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8089:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8109:2:64",
                                    "type": "",
                                    "value": "23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8082:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8082:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8082:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8132:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8143:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8128:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8128:18:64"
                                  },
                                  {
                                    "hexValue": "5045524d49545f444541444c494e455f45585049524544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "8148:25:64",
                                    "type": "",
                                    "value": "PERMIT_DEADLINE_EXPIRED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8121:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8121:53:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8121:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8183:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8195:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8206:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8191:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8191:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8183:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8019:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8033:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7868:347:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8321:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8331:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8343:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8354:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8339:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8339:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8331:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8373:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8384:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8366:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8366:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8366:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8290:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8301:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8312:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8220:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8499:87:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8509:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8521:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8532:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8517:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8517:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8509:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8551:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8566:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8574:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8562:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8562:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8544:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8544:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8544:36:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8468:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8479:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8490:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8402:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8639:80:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8666:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "8668:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8668:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8668:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "8655:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "8662:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "8658:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8658:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8652:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8652:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "8649:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8697:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "8708:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "8711:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8704:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8704:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "8697:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "8622:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "8625:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "8631:3:64",
                            "type": ""
                          }
                        ],
                        "src": "8591:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8770:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8801:168:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8822:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8825:77:64",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "8815:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8815:88:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8815:88:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8923:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8926:4:64",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "8916:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8916:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8916:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8951:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8954:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8944:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8944:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8944:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "8790:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "8783:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8783:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "8780:189:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8978:14:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "8987:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "8990:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "8983:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8983:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "8978:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "8755:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "8758:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "8764:1:64",
                            "type": ""
                          }
                        ],
                        "src": "8724:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9055:176:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9174:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "9176:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9176:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9176:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "9086:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "9079:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9079:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "9072:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9072:17:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "9094:1:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9101:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "9169:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "9097:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9097:74:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "9091:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9091:81:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "9068:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9068:105:64"
                              },
                              "nodeType": "YulIf",
                              "src": "9065:131:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9205:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "9220:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "9223:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "9216:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9216:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "9205:7:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "9034:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "9037:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "9043:7:64",
                            "type": ""
                          }
                        ],
                        "src": "9003:228:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9285:76:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9307:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "9309:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9309:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9309:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "9301:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "9304:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9298:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9298:8:64"
                              },
                              "nodeType": "YulIf",
                              "src": "9295:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9338:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "9350:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "9353:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "9346:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9346:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "9338:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "9267:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "9270:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "9276:4:64",
                            "type": ""
                          }
                        ],
                        "src": "9236:125:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9413:148:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9504:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "9506:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9506:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9506:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9429:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9436:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "9426:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9426:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "9423:103:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9535:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9546:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9553:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9542:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9542:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "9535:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "9395:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "9405:3:64",
                            "type": ""
                          }
                        ],
                        "src": "9366:195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9598:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9615:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9618:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9608:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9608:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9608:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9712:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9715:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9705:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9705:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9705:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9736:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9739:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "9729:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9729:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9729:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "9566:184:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let value := calldataload(add(headStart, 128))\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n        value4 := value\n        value5 := calldataload(add(headStart, 160))\n        value6 := calldataload(add(headStart, 192))\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, 0x1901000000000000000000000000000000000000000000000000000000000000)\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, value0)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_contract$_IERC20_$2316__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n    function abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"INVALID_PERMIT_SIGNATURE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_77631768048ee92f9dcf4b9b9d762877d6b9723214862c733f0596708fc219b7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"TRANSFER_FROM_FAILED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"TRANSFER_FAILED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"PERMIT_DEADLINE_EXPIRED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "4933": [
                  {
                    "length": 32,
                    "start": 498
                  },
                  {
                    "length": 32,
                    "start": 1807
                  },
                  {
                    "length": 32,
                    "start": 2042
                  },
                  {
                    "length": 32,
                    "start": 3222
                  },
                  {
                    "length": 32,
                    "start": 3435
                  }
                ],
                "11932": [
                  {
                    "length": 32,
                    "start": 1271
                  }
                ],
                "11935": [
                  {
                    "length": 32,
                    "start": 1568
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063b6b55f2511610066578063b6b55f25146102c8578063d505accf146102db578063db006a75146102f0578063dd62ed3e1461030357600080fd5b806370a08231146102395780637ecebe001461025957806395d89b4114610279578063a9059cbb146102b557600080fd5b806330adf81f116100d357806330adf81f146101a4578063313ce567146101cb5780633644e515146101e55780635fcbd285146101ed57600080fd5b806306fdde0314610105578063095ea7b31461015757806318160ddd1461017a57806323b872dd14610191575b600080fd5b6101416040518060400160405280600e81526020017f5375736869204c5020546f6b656e00000000000000000000000000000000000081525081565b60405161014e9190611110565b60405180910390f35b61016a610165366004611092565b61032e565b604051901515815260200161014e565b61018360005481565b60405190815260200161014e565b61016a61019f366004610fe3565b6103a7565b6101837f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6101d3601281565b60405160ff909116815260200161014e565b6101836104f3565b6102147f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161014e565b610183610247366004610f8e565b60016020526000908152604090205481565b610183610267366004610f8e565b60036020526000908152604090205481565b6101416040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b61016a6102c3366004611092565b610642565b6101836102d63660046110de565b6106c7565b6102ee6102e936600461101f565b6108fc565b005b6101836102fe3660046110de565b610c4e565b610183610311366004610fb0565b600260209081526000928352604080842090915290825290205481565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103969086815260200190565b60405180910390a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104445773ffffffffffffffffffffffffffffffffffffffff841660009081526002602090815260408083203384529091528120805484929061043e908490611213565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604081208054849290610479908490611213565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260016020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104e19086815260200190565b60405180910390a35060019392505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461061d5750604080518082018252600e81527f5375736869204c5020546f6b656e00000000000000000000000000000000000060209182015281518083018352600181527f31000000000000000000000000000000000000000000000000000000000000009082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600090815260016020526040812080548391908390610663908490611213565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103969086815260200190565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561075157600080fd5b505afa158015610765573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078991906110f7565b905080156107b15780836000546107a091906111d6565b6107aa919061119b565b91506107b5565b8291505b6107bf3383610e62565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd90606401602060405180830381600087803b15801561085357600080fd5b505af1158015610867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088b91906110bc565b6108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064015b60405180910390fd5b50919050565b42841015610966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016108ed565b60006109706104f3565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c929091906109cb8361122a565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001610a6c9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015610af5573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610b7057508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e4154555245000000000000000060448201526064016108ed565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b158015610cd857600080fd5b505afa158015610cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1091906110f7565b600054909150610d2084836111d6565b610d2a919061119b565b9150610d363384610eda565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb90604401602060405180830381600087803b158015610dc457600080fd5b505af1158015610dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfc91906110bc565b6108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c4544000000000000000000000000000000000060448201526064016108ed565b80600080828254610e739190611183565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081208054839290610f0f908490611213565b909155505060008054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610ece565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f8957600080fd5b919050565b600060208284031215610fa057600080fd5b610fa982610f65565b9392505050565b60008060408385031215610fc357600080fd5b610fcc83610f65565b9150610fda60208401610f65565b90509250929050565b600080600060608486031215610ff857600080fd5b61100184610f65565b925061100f60208501610f65565b9150604084013590509250925092565b600080600080600080600060e0888a03121561103a57600080fd5b61104388610f65565b965061105160208901610f65565b95506040880135945060608801359350608088013560ff8116811461107557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156110a557600080fd5b6110ae83610f65565b946020939093013593505050565b6000602082840312156110ce57600080fd5b81518015158114610fa957600080fd5b6000602082840312156110f057600080fd5b5035919050565b60006020828403121561110957600080fd5b5051919050565b600060208083528351808285015260005b8181101561113d57858101830151858201604001528201611121565b8181111561114f576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000821982111561119657611196611263565b500190565b6000826111d1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561120e5761120e611263565b500290565b60008282101561122557611225611263565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561125c5761125c611263565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220dc2f8211d7d2c8a8dd838c497c375d335873e4e46c37316857643f3b672f798064736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xB6B55F25 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x2C8 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0x2F0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x30ADF81F GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x5FCBD285 EQ PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x191 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x141 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14E SWAP2 SWAP1 PUSH2 0x1110 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16A PUSH2 0x165 CALLDATASIZE PUSH1 0x4 PUSH2 0x1092 JUMP JUMPDEST PUSH2 0x32E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14E JUMP JUMPDEST PUSH2 0x183 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14E JUMP JUMPDEST PUSH2 0x16A PUSH2 0x19F CALLDATASIZE PUSH1 0x4 PUSH2 0xFE3 JUMP JUMPDEST PUSH2 0x3A7 JUMP JUMPDEST PUSH2 0x183 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x1D3 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14E JUMP JUMPDEST PUSH2 0x183 PUSH2 0x4F3 JUMP JUMPDEST PUSH2 0x214 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14E JUMP JUMPDEST PUSH2 0x183 PUSH2 0x247 CALLDATASIZE PUSH1 0x4 PUSH2 0xF8E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x183 PUSH2 0x267 CALLDATASIZE PUSH1 0x4 PUSH2 0xF8E JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x141 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x16A PUSH2 0x2C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1092 JUMP JUMPDEST PUSH2 0x642 JUMP JUMPDEST PUSH2 0x183 PUSH2 0x2D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x10DE JUMP JUMPDEST PUSH2 0x6C7 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0x2E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x101F JUMP JUMPDEST PUSH2 0x8FC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x183 PUSH2 0x2FE CALLDATASIZE PUSH1 0x4 PUSH2 0x10DE JUMP JUMPDEST PUSH2 0xC4E JUMP JUMPDEST PUSH2 0x183 PUSH2 0x311 CALLDATASIZE PUSH1 0x4 PUSH2 0xFB0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x396 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x444 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x43E SWAP1 DUP5 SWAP1 PUSH2 0x1213 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x479 SWAP1 DUP5 SWAP1 PUSH2 0x1213 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x4E1 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x61D JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP4 SWAP1 PUSH2 0x663 SWAP1 DUP5 SWAP1 PUSH2 0x1213 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x396 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x751 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x765 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x789 SWAP2 SWAP1 PUSH2 0x10F7 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x7B1 JUMPI DUP1 DUP4 PUSH1 0x0 SLOAD PUSH2 0x7A0 SWAP2 SWAP1 PUSH2 0x11D6 JUMP JUMPDEST PUSH2 0x7AA SWAP2 SWAP1 PUSH2 0x119B JUMP JUMPDEST SWAP2 POP PUSH2 0x7B5 JUMP JUMPDEST DUP3 SWAP2 POP JUMPDEST PUSH2 0x7BF CALLER DUP4 PUSH2 0xE62 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x853 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x867 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x88B SWAP2 SWAP1 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x8F6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F46524F4D5F4641494C4544000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x966 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8ED JUMP JUMPDEST PUSH1 0x0 PUSH2 0x970 PUSH2 0x4F3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP3 DUP13 SWAP3 DUP13 SWAP3 DUP13 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x9CB DUP4 PUSH2 0x122A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA6C SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAF5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xB70 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0xBD6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8ED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD10 SWAP2 SWAP1 PUSH2 0x10F7 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP PUSH2 0xD20 DUP5 DUP4 PUSH2 0x11D6 JUMP JUMPDEST PUSH2 0xD2A SWAP2 SWAP1 PUSH2 0x119B JUMP JUMPDEST SWAP2 POP PUSH2 0xD36 CALLER DUP5 PUSH2 0xEDA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDD8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDFC SWAP2 SWAP1 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x8F6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8ED JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0xE73 SWAP2 SWAP1 PUSH2 0x1183 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0xF0F SWAP1 DUP5 SWAP1 PUSH2 0x1213 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP1 SLOAD DUP3 SWAP1 SUB DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0xECE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xF89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFA9 DUP3 PUSH2 0xF65 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFCC DUP4 PUSH2 0xF65 JUMP JUMPDEST SWAP2 POP PUSH2 0xFDA PUSH1 0x20 DUP5 ADD PUSH2 0xF65 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xFF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1001 DUP5 PUSH2 0xF65 JUMP JUMPDEST SWAP3 POP PUSH2 0x100F PUSH1 0x20 DUP6 ADD PUSH2 0xF65 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x103A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1043 DUP9 PUSH2 0xF65 JUMP JUMPDEST SWAP7 POP PUSH2 0x1051 PUSH1 0x20 DUP10 ADD PUSH2 0xF65 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1075 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10AE DUP4 PUSH2 0xF65 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xFA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x113D JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x1121 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x114F JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1196 JUMPI PUSH2 0x1196 PUSH2 0x1263 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x11D1 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x120E JUMPI PUSH2 0x120E PUSH2 0x1263 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1225 JUMPI PUSH2 0x1225 PUSH2 0x1263 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x125C JUMPI PUSH2 0x125C PUSH2 0x1263 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC 0x2F DUP3 GT 0xD7 0xD2 0xC8 0xA8 0xDD DUP4 DUP13 0x49 PUSH29 0x375D335873E4E46C37316857643F3B672F798064736F6C634300080700 CALLER ",
              "sourceMap": "293:1197:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;486:46:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;2581:203;;;;;;:::i;:::-;;:::i;:::-;;;4167:14:64;;4160:22;4142:41;;4130:2;4115:18;2581:203:45;4002:187:64;623:26:45;;;;;;;;;4340:25:64;;;4328:2;4313:18;623:26:45;4194:177:64;3741:564:45;;;;;;:::i;:::-;;:::i;1182:145::-;;1232:95;1182:145;;581:35;;614:2;581:35;;;;;8574:4:64;8562:17;;;8544:36;;8532:2;8517:18;581:35:45;8402:184:64;2071:201:45;;;:::i;409:31:31:-;;;;;;;;3242:42:64;3230:55;;;3212:74;;3200:2;3185:18;409:31:31;3066:226:64;697:44:45;;;;;;:::i;:::-;;;;;;;;;;;;;;1390:41;;;;;;:::i;:::-;;;;;;;;;;;;;;538:37;;;;;;;;;;;;;;;;;;;;;3024:393;;;;;;:::i;:::-;;:::i;734:434:31:-;;;;;;:::i;:::-;;:::i;4785:796:45:-;;;;;;:::i;:::-;;:::i;:::-;;1174:314:31;;;;;;:::i;:::-;;:::i;802:64:45:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2581:203;2675:10;2649:4;2665:21;;;:9;:21;;;;;;;;;:30;;;;;;;;;;:39;;;2719:37;2649:4;;2665:30;;2719:37;;;;2698:6;4340:25:64;;4328:2;4313:18;;4194:177;2719:37:45;;;;;;;;-1:-1:-1;2773:4:45;2581:203;;;;:::o;3741:564::-;3882:17;;;3862:4;3882:17;;;:9;:17;;;;;;;;3900:10;3882:29;;;;;;;;3915:17;3882:50;3878:120;;3948:17;;;;;;;:9;:17;;;;;;;;3966:10;3948:29;;;;;;;:39;;3981:6;;3948:17;:39;;3981:6;;3948:39;:::i;:::-;;;;-1:-1:-1;;3878:120:45;4007:17;;;;;;;:9;:17;;;;;:27;;4028:6;;4007:17;:27;;4028:6;;4007:27;:::i;:::-;;;;-1:-1:-1;;4187:20:45;;;;;;;;:9;:20;;;;;;;:30;;;;;;4242:35;4187:20;;4242:35;;;;;;;4211:6;4340:25:64;;4328:2;4313:18;;4194:177;4242:35:45;;;;;;;;-1:-1:-1;4294:4:45;3741:564;;;;;:::o;2071:201::-;2120:23;2190:25;2173:13;:42;:92;;-1:-1:-1;1866:4:45;;;;;;;;;;;;;;;;;1900:10;;;;;;;;;;;;;;;1709:278;;1737:95;1709:278;;;5254:25:64;1850:22:45;5295:18:64;;;5288:34;1890:21:45;5338:18:64;;;5331:34;1929:13:45;5381:18:64;;;5374:34;1968:4:45;5424:19:64;;;;5417:84;;;;1709:278:45;;;;;;;;;;5226:19:64;;;;1709:278:45;;;1686:311;;;;;;2071:201::o;2173:92::-;-1:-1:-1;2218:17:45;;2071:201::o;3024:393::-;3121:10;3095:4;3111:21;;;:9;:21;;;;;:31;;3136:6;;3111:21;3095:4;;3111:31;;3136:6;;3111:31;:::i;:::-;;;;-1:-1:-1;;3295:20:45;;;;;;;:9;:20;;;;;;;:30;;;;;;3350:39;3359:10;;3350:39;;;;3319:6;4340:25:64;;4328:2;4313:18;;4194:177;734:434:31;837:32;;;;;863:4;837:32;;;3212:74:64;783:14:31;;;;837:17;:7;:17;;;;3185:18:64;;837:32:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;809:60;-1:-1:-1;883:22:31;;879:150;;955:17;945:6;931:11;;:20;;;;:::i;:::-;930:42;;;;:::i;:::-;921:51;;879:150;;;1012:6;1003:15;;879:150;1038:25;1044:10;1056:6;1038:5;:25::i;:::-;1081:55;;;;;1102:10;1081:55;;;3560:34:64;1122:4:31;3610:18:64;;;3603:43;3662:18;;;3655:34;;;1081:7:31;:20;;;;;3472:18:64;;1081:55:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1073:88;;;;;;;7377:2:64;1073:88:31;;;7359:21:64;7416:2;7396:18;;;7389:30;7455:22;7435:18;;;7428:50;7495:18;;1073:88:31;;;;;;;;;799:369;734:434;;;:::o;4785:796:45:-;4999:15;4987:8;:27;;4979:63;;;;;;;8070:2:64;4979:63:45;;;8052:21:64;8109:2;8089:18;;;8082:30;8148:25;8128:18;;;8121:53;8191:18;;4979:63:45;7868:347:64;4979:63:45;5052:14;5154:18;:16;:18::i;:::-;5252:13;;;;;;;:6;:13;;;;;:15;;1232:95;;5228:5;;5235:7;;5244:6;;5252:15;;:13;:15;;;:::i;:::-;;;;-1:-1:-1;5200:78:45;;;;;;4663:25:64;;;;4707:42;4785:15;;;4765:18;;;4758:43;4837:15;;;;4817:18;;;4810:43;4869:18;;;4862:34;4912:19;;;4905:35;4956:19;;;4949:35;;;4635:19;;5200:78:45;;;;;;;;;;;;5190:89;;;;;;5092:201;;;;;;;;2887:66:64;2875:79;;2979:1;2970:11;;2963:27;;;;3015:2;3006:12;;2999:28;3052:2;3043:12;;2617:444;5092:201:45;;;;;;;;;;;;;;5069:234;;5092:201;5069:234;;;;5313:24;5340:26;;;;;;;;;5739:25:64;;;5812:4;5800:17;;5780:18;;;5773:45;;;;5834:18;;;5827:34;;;5877:18;;;5870:34;;;5069:234:45;;-1:-1:-1;5313:24:45;5340:26;;5711:19:64;;5340:26:45;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5340:26:45;;;;;;-1:-1:-1;;5384:30:45;;;;;;;:59;;;5438:5;5418:25;;:16;:25;;;5384:59;5376:96;;;;;;;7024:2:64;5376:96:45;;;7006:21:64;7063:2;7043:18;;;7036:30;7102:26;7082:18;;;7075:54;7146:18;;5376:96:45;6822:348:64;5376:96:45;5482:27;;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:45;;;5542:32;4340:25:64;;;5482:36:45;;5542:32;;;;;4313:18:64;5542:32:45;;;;;;;4969:612;;4785:796;;;;;;;:::o;1174:314:31:-;1277:32;;;;;1303:4;1277:32;;;3212:74:64;1222:15:31;;;;1277:17;:7;:17;;;;3185:18:64;;1277:32:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1360:11;;1249:60;;-1:-1:-1;1330:26:31;1350:6;1249:60;1330:26;:::i;:::-;1329:42;;;;:::i;:::-;1319:52;;1381:25;1387:10;1399:6;1381:5;:25::i;:::-;1424:37;;;;;1441:10;1424:37;;;3874:74:64;3964:18;;;3957:34;;;1424:7:31;:16;;;;;3847:18:64;;1424:37:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1416:65;;;;;;;7726:2:64;1416:65:31;;;7708:21:64;7765:2;7745:18;;;7738:30;7804:17;7784:18;;;7777:45;7839:18;;1416:65:31;7524:339:64;5587:344:45;5671:6;5656:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;5830:20:45;;;;;;;:9;:20;;;;;;;;:30;;;;;;5885:39;4340:25:64;;;5885:39:45;;4313:18:64;5885:39:45;;;;;;;;5587:344;;:::o;5937:332::-;6003:17;;;;;;;:9;:17;;;;;:27;;6024:6;;6003:17;:27;;6024:6;;6003:27;:::i;:::-;;;;-1:-1:-1;;6180:11:45;:21;;;;;;;6226:36;;4340:25:64;;;6226:36:45;;;;;;4328:2:64;4313:18;6226:36:45;4194:177:64;14:196;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;:::-;356:39;215:186;-1:-1:-1;;;215:186:64:o;406:260::-;474:6;482;535:2;523:9;514:7;510:23;506:32;503:52;;;551:1;548;541:12;503:52;574:29;593:9;574:29;:::i;:::-;564:39;;622:38;656:2;645:9;641:18;622:38;:::i;:::-;612:48;;406:260;;;;;:::o;671:328::-;748:6;756;764;817:2;805:9;796:7;792:23;788:32;785:52;;;833:1;830;823:12;785:52;856:29;875:9;856:29;:::i;:::-;846:39;;904:38;938:2;927:9;923:18;904:38;:::i;:::-;894:48;;989:2;978:9;974:18;961:32;951:42;;671:328;;;;;:::o;1004:693::-;1115:6;1123;1131;1139;1147;1155;1163;1216:3;1204:9;1195:7;1191:23;1187:33;1184:53;;;1233:1;1230;1223:12;1184:53;1256:29;1275:9;1256:29;:::i;:::-;1246:39;;1304:38;1338:2;1327:9;1323:18;1304:38;:::i;:::-;1294:48;;1389:2;1378:9;1374:18;1361:32;1351:42;;1440:2;1429:9;1425:18;1412:32;1402:42;;1494:3;1483:9;1479:19;1466:33;1539:4;1532:5;1528:16;1521:5;1518:27;1508:55;;1559:1;1556;1549:12;1508:55;1004:693;;;;-1:-1:-1;1004:693:64;;;;1582:5;1634:3;1619:19;;1606:33;;-1:-1:-1;1686:3:64;1671:19;;;1658:33;;1004:693;-1:-1:-1;;1004:693:64:o;1702:254::-;1770:6;1778;1831:2;1819:9;1810:7;1806:23;1802:32;1799:52;;;1847:1;1844;1837:12;1799:52;1870:29;1889:9;1870:29;:::i;:::-;1860:39;1946:2;1931:18;;;;1918:32;;-1:-1:-1;;;1702:254:64:o;1961:277::-;2028:6;2081:2;2069:9;2060:7;2056:23;2052:32;2049:52;;;2097:1;2094;2087:12;2049:52;2129:9;2123:16;2182:5;2175:13;2168:21;2161:5;2158:32;2148:60;;2204:1;2201;2194:12;2243:180;2302:6;2355:2;2343:9;2334:7;2330:23;2326:32;2323:52;;;2371:1;2368;2361:12;2323:52;-1:-1:-1;2394:23:64;;2243:180;-1:-1:-1;2243:180:64:o;2428:184::-;2498:6;2551:2;2539:9;2530:7;2526:23;2522:32;2519:52;;;2567:1;2564;2557:12;2519:52;-1:-1:-1;2590:16:64;;2428:184;-1:-1:-1;2428:184:64:o;6161:656::-;6273:4;6302:2;6331;6320:9;6313:21;6363:6;6357:13;6406:6;6401:2;6390:9;6386:18;6379:34;6431:1;6441:140;6455:6;6452:1;6449:13;6441:140;;;6550:14;;;6546:23;;6540:30;6516:17;;;6535:2;6512:26;6505:66;6470:10;;6441:140;;;6599:6;6596:1;6593:13;6590:91;;;6669:1;6664:2;6655:6;6644:9;6640:22;6636:31;6629:42;6590:91;-1:-1:-1;6733:2:64;6721:15;6738:66;6717:88;6702:104;;;;6808:2;6698:113;;6161:656;-1:-1:-1;;;6161:656:64:o;8591:128::-;8631:3;8662:1;8658:6;8655:1;8652:13;8649:39;;;8668:18;;:::i;:::-;-1:-1:-1;8704:9:64;;8591:128::o;8724:274::-;8764:1;8790;8780:189;;8825:77;8822:1;8815:88;8926:4;8923:1;8916:15;8954:4;8951:1;8944:15;8780:189;-1:-1:-1;8983:9:64;;8724:274::o;9003:228::-;9043:7;9169:1;9101:66;9097:74;9094:1;9091:81;9086:1;9079:9;9072:17;9068:105;9065:131;;;9176:18;;:::i;:::-;-1:-1:-1;9216:9:64;;9003:228::o;9236:125::-;9276:4;9304:1;9301;9298:8;9295:34;;;9309:18;;:::i;:::-;-1:-1:-1;9346:9:64;;9236:125::o;9366:195::-;9405:3;9436:66;9429:5;9426:77;9423:103;;;9506:18;;:::i;:::-;-1:-1:-1;9553:1:64;9542:13;;9366:195::o;9566:184::-;9618:77;9615:1;9608:88;9715:4;9712:1;9705:15;9739:4;9736:1;9729:15"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "961600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "DOMAIN_SEPARATOR()": "infinite",
                "PERMIT_TYPEHASH()": "218",
                "allowance(address,address)": "infinite",
                "approve(address,uint256)": "24521",
                "balanceOf(address)": "2530",
                "decimals()": "249",
                "deposit(uint256)": "infinite",
                "lpToken()": "infinite",
                "name()": "infinite",
                "nonces(address)": "2552",
                "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "infinite",
                "redeem(uint256)": "infinite",
                "symbol()": "infinite",
                "totalSupply()": "2363",
                "transfer(address,uint256)": "50964",
                "transferFrom(address,address,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "PERMIT_TYPEHASH()": "30adf81f",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "deposit(uint256)": "b6b55f25",
              "lpToken()": "5fcbd285",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "redeem(uint256)": "db006a75",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lpToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"domainSeperator\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minted\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lpToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"claimed\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"params\":{\"amount\":\"The maximum collective `amount` that `spender` can pull.\",\"spender\":\"Address of the party that can pull tokens from `msg.sender`'s account.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"deposit(uint256)\":{\"details\":\"Since we might be rewarding the intermediary token for some time we allow users to mint it.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"amount\":\"The number of tokens that are approved (2^256-1 means infinite).\",\"deadline\":\"The time at which to expire the signature.\",\"owner\":\"The address to approve from.\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"spender\":\"The address to be approved.\",\"v\":\"The recovery byte of the signature.\"}},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The token `amount` to move.\",\"recipient\":\"The address to move tokens to.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The token `amount` to move.\",\"recipient\":\"The address to move tokens to.\",\"sender\":\"Address to pull tokens `from`.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}}},\"stateVariables\":{\"lpToken\":{\"details\":\"Liquidity token of the Trident constant product pool.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"EIP-712 typehash for this contract's domain.\"},\"PERMIT_TYPEHASH()\":{\"notice\":\"EIP-712 typehash for this contract's {permit} struct.\"},\"allowance(address,address)\":{\"notice\":\"owner -> spender -> allowance mapping.\"},\"approve(address,uint256)\":{\"notice\":\"Approves `amount` from `msg.sender` to be spent by `spender`.\"},\"balanceOf(address)\":{\"notice\":\"owner -> balance mapping.\"},\"nonces(address)\":{\"notice\":\"owner -> nonce mapping used in {permit}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Triggers an approval from `owner` to `spender`.\"},\"transfer(address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `msg.sender` to `recipient`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\"}},\"notice\":\"Intermediary token users who are staked in MasterChef will receive after migration. Can be redeemed for the LP token of the new pool.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/migration/IntermediaryToken.sol\":\"IntermediaryToken\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @dev Use a library or custom safeTransfer{From} functions when dealing with unknown tokens!\\ninterface IERC20 {\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    function totalSupply() external view returns (uint256);\\n\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    function approve(address spender, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x41da4ec4920467246a08c3d7d653f1327e8508e6bc29e946232cf87cea7e283f\",\"license\":\"GPL-3.0-or-later\"},\"contracts/migration/IntermediaryToken.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../pool/TridentERC20.sol\\\";\\nimport \\\"../interfaces/IERC20.sol\\\";\\n\\n/// @notice Intermediary token users who are staked in MasterChef will receive after migration.\\n/// Can be redeemed for the LP token of the new pool.\\ncontract IntermediaryToken is TridentERC20 {\\n    /// @dev Liquidity token of the Trident constant product pool.\\n    IERC20 public immutable lpToken;\\n\\n    constructor(\\n        address _lpToken,\\n        address _recipient,\\n        uint256 _amount\\n    ) {\\n        lpToken = IERC20(_lpToken);\\n        _mint(_recipient, _amount);\\n    }\\n\\n    /// @dev Since we might be rewarding the intermediary token for some time we allow users to mint it.\\n    function deposit(uint256 amount) public returns (uint256 minted) {\\n        uint256 availableLpTokens = lpToken.balanceOf(address(this));\\n        if (availableLpTokens != 0) {\\n            minted = (totalSupply * amount) / availableLpTokens;\\n        } else {\\n            minted = amount;\\n        }\\n        _mint(msg.sender, minted);\\n        require(lpToken.transferFrom(msg.sender, address(this), amount), \\\"TRANSFER_FROM_FAILED\\\");\\n    }\\n\\n    function redeem(uint256 amount) public returns (uint256 claimed) {\\n        uint256 availableLpTokens = lpToken.balanceOf(address(this));\\n        claimed = (availableLpTokens * amount) / totalSupply;\\n        _burn(msg.sender, amount);\\n        require(lpToken.transfer(msg.sender, claimed), \\\"TRANSFER_FAILED\\\");\\n    }\\n}\\n\",\"keccak256\":\"0x95f11772fa1208f90cea46d491cc3a674e0ede73ceb7d499c2e2f2fd1ba05115\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/TridentERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool ERC-20 with EIP-2612 extension.\\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol,\\n/// License-Identifier: AGPL-3.0-only.\\nabstract contract TridentERC20 {\\n    event Transfer(address indexed sender, address indexed recipient, uint256 amount);\\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\\n\\n    string public constant name = \\\"Sushi LP Token\\\";\\n    string public constant symbol = \\\"SLP\\\";\\n    uint8 public constant decimals = 18;\\n\\n    uint256 public totalSupply;\\n    /// @notice owner -> balance mapping.\\n    mapping(address => uint256) public balanceOf;\\n    /// @notice owner -> spender -> allowance mapping.\\n    mapping(address => mapping(address => uint256)) public allowance;\\n\\n    /// @notice Chain Id at this contract's deployment.\\n    uint256 internal immutable DOMAIN_SEPARATOR_CHAIN_ID;\\n    /// @notice EIP-712 typehash for this contract's domain at deployment.\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n    /// @notice EIP-712 typehash for this contract's {permit} struct.\\n    bytes32 public constant PERMIT_TYPEHASH =\\n        keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n    /// @notice owner -> nonce mapping used in {permit}.\\n    mapping(address => uint256) public nonces;\\n\\n    constructor() {\\n        DOMAIN_SEPARATOR_CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _calculateDomainSeparator();\\n    }\\n\\n    function _calculateDomainSeparator() internal view returns (bytes32 domainSeperator) {\\n        domainSeperator = keccak256(\\n            abi.encode(\\n                keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"),\\n                keccak256(bytes(name)),\\n                keccak256(bytes(\\\"1\\\")),\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    /// @notice EIP-712 typehash for this contract's domain.\\n    function DOMAIN_SEPARATOR() public view returns (bytes32 domainSeperator) {\\n        domainSeperator = block.chainid == DOMAIN_SEPARATOR_CHAIN_ID ? _DOMAIN_SEPARATOR : _calculateDomainSeparator();\\n    }\\n\\n    /// @notice Approves `amount` from `msg.sender` to be spent by `spender`.\\n    /// @param spender Address of the party that can pull tokens from `msg.sender`'s account.\\n    /// @param amount The maximum collective `amount` that `spender` can pull.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function approve(address spender, uint256 amount) external returns (bool) {\\n        allowance[msg.sender][spender] = amount;\\n        emit Approval(msg.sender, spender, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `msg.sender` to `recipient`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transfer(address recipient, uint256 amount) external returns (bool) {\\n        balanceOf[msg.sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(msg.sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\\n    /// @param sender Address to pull tokens `from`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool) {\\n        if (allowance[sender][msg.sender] != type(uint256).max) {\\n            allowance[sender][msg.sender] -= amount;\\n        }\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Triggers an approval from `owner` to `spender`.\\n    /// @param owner The address to approve from.\\n    /// @param spender The address to be approved.\\n    /// @param amount The number of tokens that are approved (2^256-1 means infinite).\\n    /// @param deadline The time at which to expire the signature.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        require(deadline >= block.timestamp, \\\"PERMIT_DEADLINE_EXPIRED\\\");\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                \\\"\\\\x19\\\\x01\\\",\\n                DOMAIN_SEPARATOR(),\\n                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))\\n            )\\n        );\\n        address recoveredAddress = ecrecover(digest, v, r, s);\\n        require(recoveredAddress != address(0) && recoveredAddress == owner, \\\"INVALID_PERMIT_SIGNATURE\\\");\\n        allowance[recoveredAddress][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    function _mint(address recipient, uint256 amount) internal {\\n        totalSupply += amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(address(0), recipient, amount);\\n    }\\n\\n    function _burn(address sender, uint256 amount) internal {\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from underflow - users won't ever\\n        // have a balance larger than `totalSupply`.\\n        unchecked {\\n            totalSupply -= amount;\\n        }\\n        emit Transfer(sender, address(0), amount);\\n    }\\n}\\n\",\"keccak256\":\"0xb249a6d507f6911b7de4f9655a9736710fac9847982ad9afa18650db9a84794d\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 11917,
                "contract": "contracts/migration/IntermediaryToken.sol:IntermediaryToken",
                "label": "totalSupply",
                "offset": 0,
                "slot": "0",
                "type": "t_uint256"
              },
              {
                "astId": 11922,
                "contract": "contracts/migration/IntermediaryToken.sol:IntermediaryToken",
                "label": "balanceOf",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 11929,
                "contract": "contracts/migration/IntermediaryToken.sol:IntermediaryToken",
                "label": "allowance",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
              },
              {
                "astId": 11946,
                "contract": "contracts/migration/IntermediaryToken.sol:IntermediaryToken",
                "label": "nonces",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_address,t_uint256)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_mapping(t_address,t_mapping(t_address,t_uint256))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_uint256)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "DOMAIN_SEPARATOR()": {
                "notice": "EIP-712 typehash for this contract's domain."
              },
              "PERMIT_TYPEHASH()": {
                "notice": "EIP-712 typehash for this contract's {permit} struct."
              },
              "allowance(address,address)": {
                "notice": "owner -> spender -> allowance mapping."
              },
              "approve(address,uint256)": {
                "notice": "Approves `amount` from `msg.sender` to be spent by `spender`."
              },
              "balanceOf(address)": {
                "notice": "owner -> balance mapping."
              },
              "nonces(address)": {
                "notice": "owner -> nonce mapping used in {permit}."
              },
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Triggers an approval from `owner` to `spender`."
              },
              "transfer(address,uint256)": {
                "notice": "Transfers `amount` tokens from `msg.sender` to `recipient`."
              },
              "transferFrom(address,address,uint256)": {
                "notice": "Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`."
              }
            },
            "notice": "Intermediary token users who are staked in MasterChef will receive after migration. Can be redeemed for the LP token of the new pool.",
            "version": 1
          }
        }
      },
      "contracts/migration/Migrator.sol": {
        "Migrator": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "_bento",
                  "type": "address"
                },
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "_masterDeployer",
                  "type": "address"
                },
                {
                  "internalType": "contract IPoolFactory",
                  "name": "_constantProductPoolFactory",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_masterChef",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "oldPool",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newPool",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "intermediaryToken",
                  "type": "address"
                }
              ],
              "name": "Migrate",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "constantProductPoolFactory",
              "outputs": [
                {
                  "internalType": "contract IPoolFactory",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterChef",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IUniswapV2Minimal",
                  "name": "oldPool",
                  "type": "address"
                }
              ],
              "name": "migrate",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "migrated",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "migrate(address)": {
                "details": "Since MasterChef has a requierment to receive the same amount of \"LP\" tokens back after migration we use an intermediary token so we can mint the desired balance. Anfer unstaking users can call redeem() on the intermediary token to receive their share of the LP tokens of the new Trident constant product pool.",
                "params": {
                  "oldPool": "Legacy SushiSwap pool."
                }
              }
            },
            "stateVariables": {
              "migrated": {
                "details": "Intermediary token to new LP token mapping.Used to prevent subsequent calls to masterchef's migrate function with the same PID."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_5122": {
                  "entryPoint": null,
                  "id": 5122,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_contract$_IBentoBoxMinimal_$2253t_contract$_IMasterDeployer_$2356t_contract$_IPoolFactory_$2468t_address_fromMemory": {
                  "entryPoint": 97,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "validator_revert_address": {
                  "entryPoint": 192,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:876:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "216:522:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "263:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "272:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "275:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "265:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "265:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "265:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "237:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "246:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "233:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "233:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "258:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "229:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "229:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "226:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "288:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "307:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "301:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "301:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "292:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "351:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "326:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "326:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "326:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "366:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "376:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "366:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "390:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "415:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "426:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "411:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "411:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "405:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "405:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "394:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "464:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "439:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "439:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "439:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "481:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "491:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "481:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "507:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "532:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "543:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "528:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "528:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "522:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "522:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "511:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "581:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "556:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "556:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "556:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "598:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "608:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "598:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "624:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "649:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "660:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "645:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "645:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "639:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "639:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "628:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "698:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "673:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "673:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "673:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "715:17:64",
                              "value": {
                                "name": "value_3",
                                "nodeType": "YulIdentifier",
                                "src": "725:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "715:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_IBentoBoxMinimal_$2253t_contract$_IMasterDeployer_$2356t_contract$_IPoolFactory_$2468t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "158:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "169:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "181:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "189:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "197:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "205:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:724:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "788:86:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "852:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "861:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "864:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "854:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "854:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "854:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "811:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "822:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "837:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "842:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "833:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "833:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "846:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "829:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "829:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "818:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "818:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "808:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "808:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "801:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "801:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "798:70:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "777:5:64",
                            "type": ""
                          }
                        ],
                        "src": "743:131:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_contract$_IBentoBoxMinimal_$2253t_contract$_IMasterDeployer_$2356t_contract$_IPoolFactory_$2468t_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := mload(add(headStart, 64))\n        validator_revert_address(value_2)\n        value2 := value_2\n        let value_3 := mload(add(headStart, 96))\n        validator_revert_address(value_3)\n        value3 := value_3\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "61010060405234801561001157600080fd5b506040516200277b3803806200277b83398101604081905261003291610061565b6001600160601b0319606094851b811660805292841b831660a05290831b821660c05290911b1660e0526100d8565b6000806000806080858703121561007757600080fd5b8451610082816100c0565b6020860151909450610093816100c0565b60408601519093506100a4816100c0565b60608601519092506100b5816100c0565b939692955090935050565b6001600160a01b03811681146100d557600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c6126186200016360003960008181610110015281816101b30152818161065f015281816107380152610c6801526000818161013801528181610480015261059e015260008181610177015261057001526000818160e80152818161080c015281816108dd01526109c601526126186000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c806393e44497116200005657806393e444971462000132578063ce5494bb146200015a578063cf58879a146200017157600080fd5b80634ba0a5ee14620000805780634da3182714620000e2578063575a86b2146200010a575b600080fd5b620000b96200009136600462000e2e565b60006020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b620000b97f000000000000000000000000000000000000000000000000000000000000000081565b620000b97f000000000000000000000000000000000000000000000000000000000000000081565b620000b97f000000000000000000000000000000000000000000000000000000000000000081565b620000b96200016b36600462000e2e565b62000199565b620000b97f000000000000000000000000000000000000000000000000000000000000000081565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161462000240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4f4e4c595f43484546000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8281166000908152602081905260409020541615620002d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4f4e4c595f4f4e43450000000000000000000000000000000000000000000000604482015260640162000237565b60008273ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200031a57600080fd5b505afa1580156200032f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000355919062000e55565b905060008373ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015620003a057600080fd5b505afa158015620003b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003db919062000e55565b6040805173ffffffffffffffffffffffffffffffffffffffff8086166020830152831691810191909152601e606082015260006080820181905291925060a001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052805160208201207ff6ab6d99000000000000000000000000000000000000000000000000000000008352600483015291506000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063f6ab6d9990602401602060405180830381600087803b158015620004da57600080fd5b505af1158015620004ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000515919062000e55565b905073ffffffffffffffffffffffffffffffffffffffff811662000622576040517f250558dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063250558dc90620005c9907f000000000000000000000000000000000000000000000000000000000000000090869060040162000f8a565b602060405180830381600087803b158015620005e457600080fd5b505af1158015620005f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061f919062000e55565b90505b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152600091908816906370a082319060240160206040518083038186803b158015620006ae57600080fd5b505afa158015620006c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006e9919062000e99565b905080620006fb575095945050505050565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015288166024820181905260448201839052906323b872dd90606401602060405180830381600087803b1580156200079357600080fd5b505af1158015620007a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007ce919062000e75565b506040517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260009182918a16906389afcb44906024016040805180830381600087803b1580156200085d57600080fd5b505af115801562000872573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000898919062000eb3565b6040517f02b9446c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301819052908816604483015260648201849052600060848301529294509092506302b9446c9060a4016040805180830381600087803b1580156200094457600080fd5b505af115801562000959573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200097f919062000eb3565b50506040517f02b9446c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301527f000000000000000000000000000000000000000000000000000000000000000081166024830181905290861660448301526064820183905260006084830152906302b9446c9060a4016040805180830381600087803b15801562000a2857600080fd5b505af115801562000a3d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a63919062000eb3565b50508373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000aac57600080fd5b505afa15801562000ac1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ae7919062000e99565b1562000c63576000808573ffffffffffffffffffffffffffffffffffffffff166365dfc7676040518163ffffffff1660e01b815260040160606040518083038186803b15801562000b3757600080fd5b505afa15801562000b4c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b72919062000ed8565b50909250905060008362000b8f86670de0b6b3a764000062001014565b62000b9b919062000fd8565b905060008262000bb485670de0b6b3a764000062001014565b62000bc0919062000fd8565b905060008162000bd3846103e862001014565b62000bdf919062000fd8565b90506103ed8110801562000bf557506103e38110155b62000c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f50524943455f444946464552454e434500000000000000000000000000000000604482015260640162000237565b50505050505b6000847f00000000000000000000000000000000000000000000000000000000000000008560405162000c969062000e20565b73ffffffffffffffffffffffffffffffffffffffff93841681529290911660208301526040820152606001604051809103906000f08015801562000cde573d6000803e3d6000fd5b506040805173ffffffffffffffffffffffffffffffffffffffff808416602083015292935091871691637ba0e2e791016040516020818303038152906040526040518263ffffffff1660e01b815260040162000d3b919062000fc3565b602060405180830381600087803b15801562000d5657600080fd5b505af115801562000d6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d91919062000e99565b5073ffffffffffffffffffffffffffffffffffffffff81811660008181526020819052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168a8616908117909155905192939092908e16917f334a3ad9b2f42830c082739beaa110a657d70a5bab5868b9b4d43e8a9093c4c691a49998505050505050505050565b61154380620010a083390190565b60006020828403121562000e4157600080fd5b813562000e4e8162001079565b9392505050565b60006020828403121562000e6857600080fd5b815162000e4e8162001079565b60006020828403121562000e8857600080fd5b8151801515811462000e4e57600080fd5b60006020828403121562000eac57600080fd5b5051919050565b6000806040838503121562000ec757600080fd5b505080516020909101519092909150565b60008060006060848603121562000eee57600080fd5b8351925060208401519150604084015163ffffffff8116811462000f1157600080fd5b809150509250925092565b6000815180845260005b8181101562000f445760208185018101518683018201520162000f26565b8181111562000f57576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600062000fbb604083018462000f1c565b949350505050565b60208152600062000e4e602083018462000f1c565b6000826200100f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001074577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500290565b73ffffffffffffffffffffffffffffffffffffffff811681146200109c57600080fd5b5056fe60e06040523480156200001157600080fd5b5060405162001543380380620015438339810160408190526200003491620001c4565b4660805262000111604080518082018252600e81526d29bab9b434902628102a37b5b2b760911b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b60a0526001600160601b0319606084901b1660c0526200013282826200013b565b5050506200022c565b806000808282546200014e919062000205565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80516001600160a01b0381168114620001bf57600080fd5b919050565b600080600060608486031215620001da57600080fd5b620001e584620001a7565b9250620001f560208501620001a7565b9150604084015190509250925092565b600082198211156200022757634e487b7160e01b600052601160045260246000fd5b500190565b60805160a05160c05160601c6112c86200027b600039600081816101f20152818161070f015281816107fa01528181610c960152610d6b01526000610620015260006104f701526112c86000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063b6b55f2511610066578063b6b55f25146102c8578063d505accf146102db578063db006a75146102f0578063dd62ed3e1461030357600080fd5b806370a08231146102395780637ecebe001461025957806395d89b4114610279578063a9059cbb146102b557600080fd5b806330adf81f116100d357806330adf81f146101a4578063313ce567146101cb5780633644e515146101e55780635fcbd285146101ed57600080fd5b806306fdde0314610105578063095ea7b31461015757806318160ddd1461017a57806323b872dd14610191575b600080fd5b6101416040518060400160405280600e81526020017f5375736869204c5020546f6b656e00000000000000000000000000000000000081525081565b60405161014e9190611110565b60405180910390f35b61016a610165366004611092565b61032e565b604051901515815260200161014e565b61018360005481565b60405190815260200161014e565b61016a61019f366004610fe3565b6103a7565b6101837f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6101d3601281565b60405160ff909116815260200161014e565b6101836104f3565b6102147f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161014e565b610183610247366004610f8e565b60016020526000908152604090205481565b610183610267366004610f8e565b60036020526000908152604090205481565b6101416040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b61016a6102c3366004611092565b610642565b6101836102d63660046110de565b6106c7565b6102ee6102e936600461101f565b6108fc565b005b6101836102fe3660046110de565b610c4e565b610183610311366004610fb0565b600260209081526000928352604080842090915290825290205481565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103969086815260200190565b60405180910390a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104445773ffffffffffffffffffffffffffffffffffffffff841660009081526002602090815260408083203384529091528120805484929061043e908490611213565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604081208054849290610479908490611213565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260016020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104e19086815260200190565b60405180910390a35060019392505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461061d5750604080518082018252600e81527f5375736869204c5020546f6b656e00000000000000000000000000000000000060209182015281518083018352600181527f31000000000000000000000000000000000000000000000000000000000000009082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600090815260016020526040812080548391908390610663908490611213565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103969086815260200190565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561075157600080fd5b505afa158015610765573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078991906110f7565b905080156107b15780836000546107a091906111d6565b6107aa919061119b565b91506107b5565b8291505b6107bf3383610e62565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd90606401602060405180830381600087803b15801561085357600080fd5b505af1158015610867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088b91906110bc565b6108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064015b60405180910390fd5b50919050565b42841015610966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016108ed565b60006109706104f3565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c929091906109cb8361122a565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001610a6c9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015610af5573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610b7057508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e4154555245000000000000000060448201526064016108ed565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b158015610cd857600080fd5b505afa158015610cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1091906110f7565b600054909150610d2084836111d6565b610d2a919061119b565b9150610d363384610eda565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb90604401602060405180830381600087803b158015610dc457600080fd5b505af1158015610dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfc91906110bc565b6108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c4544000000000000000000000000000000000060448201526064016108ed565b80600080828254610e739190611183565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081208054839290610f0f908490611213565b909155505060008054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610ece565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f8957600080fd5b919050565b600060208284031215610fa057600080fd5b610fa982610f65565b9392505050565b60008060408385031215610fc357600080fd5b610fcc83610f65565b9150610fda60208401610f65565b90509250929050565b600080600060608486031215610ff857600080fd5b61100184610f65565b925061100f60208501610f65565b9150604084013590509250925092565b600080600080600080600060e0888a03121561103a57600080fd5b61104388610f65565b965061105160208901610f65565b95506040880135945060608801359350608088013560ff8116811461107557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156110a557600080fd5b6110ae83610f65565b946020939093013593505050565b6000602082840312156110ce57600080fd5b81518015158114610fa957600080fd5b6000602082840312156110f057600080fd5b5035919050565b60006020828403121561110957600080fd5b5051919050565b600060208083528351808285015260005b8181101561113d57858101830151858201604001528201611121565b8181111561114f576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000821982111561119657611196611263565b500190565b6000826111d1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561120e5761120e611263565b500290565b60008282101561122557611225611263565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561125c5761125c611263565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220dc2f8211d7d2c8a8dd838c497c375d335873e4e46c37316857643f3b672f798064736f6c63430008070033a26469706673582212204abe6a851ff9053adb525b5e8228e09b0559df092669d4ed8c2308f8b337a9fc64736f6c63430008070033",
              "opcodes": "PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x277B CODESIZE SUB DUP1 PUSH3 0x277B DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x32 SWAP2 PUSH2 0x61 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP3 DUP5 SHL DUP4 AND PUSH1 0xA0 MSTORE SWAP1 DUP4 SHL DUP3 AND PUSH1 0xC0 MSTORE SWAP1 SWAP2 SHL AND PUSH1 0xE0 MSTORE PUSH2 0xD8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH2 0x82 DUP2 PUSH2 0xC0 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH2 0x93 DUP2 PUSH2 0xC0 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0xA4 DUP2 PUSH2 0xC0 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0xB5 DUP2 PUSH2 0xC0 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x2618 PUSH3 0x163 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x110 ADD MSTORE DUP2 DUP2 PUSH2 0x1B3 ADD MSTORE DUP2 DUP2 PUSH2 0x65F ADD MSTORE DUP2 DUP2 PUSH2 0x738 ADD MSTORE PUSH2 0xC68 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x138 ADD MSTORE DUP2 DUP2 PUSH2 0x480 ADD MSTORE PUSH2 0x59E ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x177 ADD MSTORE PUSH2 0x570 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH1 0xE8 ADD MSTORE DUP2 DUP2 PUSH2 0x80C ADD MSTORE DUP2 DUP2 PUSH2 0x8DD ADD MSTORE PUSH2 0x9C6 ADD MSTORE PUSH2 0x2618 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x93E44497 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x93E44497 EQ PUSH3 0x132 JUMPI DUP1 PUSH4 0xCE5494BB EQ PUSH3 0x15A JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH3 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4BA0A5EE EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH3 0xE2 JUMPI DUP1 PUSH4 0x575A86B2 EQ PUSH3 0x10A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xB9 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0xE2E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB9 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0xB9 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0xB9 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0xB9 PUSH3 0x16B CALLDATASIZE PUSH1 0x4 PUSH3 0xE2E JUMP JUMPDEST PUSH3 0x199 JUMP JUMPDEST PUSH3 0xB9 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH3 0x240 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F4E4C595F434845460000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO PUSH3 0x2D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F4E4C595F4F4E43450000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x237 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDFE1681 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x31A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x32F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x355 SWAP2 SWAP1 PUSH3 0xE55 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD21220A7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x3DB SWAP2 SWAP1 PUSH3 0xE55 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x20 DUP4 ADD MSTORE DUP4 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1E PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH1 0xA0 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 DUP3 ADD KECCAK256 PUSH32 0xF6AB6D9900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xF6AB6D99 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x4EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x515 SWAP2 SWAP1 PUSH3 0xE55 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH3 0x622 JUMPI PUSH1 0x40 MLOAD PUSH32 0x250558DC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x250558DC SWAP1 PUSH3 0x5C9 SWAP1 PUSH32 0x0 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH3 0xF8A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x5E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x5F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x61F SWAP2 SWAP1 PUSH3 0xE55 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP9 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x6C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x6E9 SWAP2 SWAP1 PUSH3 0xE99 JUMP JUMPDEST SWAP1 POP DUP1 PUSH3 0x6FB JUMPI POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP9 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x7A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x7CE SWAP2 SWAP1 PUSH3 0xE75 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x89AFCB4400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP11 AND SWAP1 PUSH4 0x89AFCB44 SWAP1 PUSH1 0x24 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x872 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x898 SWAP2 SWAP1 PUSH3 0xEB3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2B9446C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0x24 DUP4 ADD DUP2 SWAP1 MSTORE SWAP1 DUP9 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH4 0x2B9446C SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x944 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x959 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x97F SWAP2 SWAP1 PUSH3 0xEB3 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x2B9446C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0x24 DUP4 ADD DUP2 SWAP1 MSTORE SWAP1 DUP7 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE SWAP1 PUSH4 0x2B9446C SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xA28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0xA3D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xA63 SWAP2 SWAP1 PUSH3 0xEB3 JUMP JUMPDEST POP POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xAAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xAC1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xAE7 SWAP2 SWAP1 PUSH3 0xE99 JUMP JUMPDEST ISZERO PUSH3 0xC63 JUMPI PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x65DFC767 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xB37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xB4C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xB72 SWAP2 SWAP1 PUSH3 0xED8 JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP4 PUSH3 0xB8F DUP7 PUSH8 0xDE0B6B3A7640000 PUSH3 0x1014 JUMP JUMPDEST PUSH3 0xB9B SWAP2 SWAP1 PUSH3 0xFD8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH3 0xBB4 DUP6 PUSH8 0xDE0B6B3A7640000 PUSH3 0x1014 JUMP JUMPDEST PUSH3 0xBC0 SWAP2 SWAP1 PUSH3 0xFD8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH3 0xBD3 DUP5 PUSH2 0x3E8 PUSH3 0x1014 JUMP JUMPDEST PUSH3 0xBDF SWAP2 SWAP1 PUSH3 0xFD8 JUMP JUMPDEST SWAP1 POP PUSH2 0x3ED DUP2 LT DUP1 ISZERO PUSH3 0xBF5 JUMPI POP PUSH2 0x3E3 DUP2 LT ISZERO JUMPDEST PUSH3 0xC5D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50524943455F444946464552454E434500000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x237 JUMP JUMPDEST POP POP POP POP POP JUMPDEST PUSH1 0x0 DUP5 PUSH32 0x0 DUP6 PUSH1 0x40 MLOAD PUSH3 0xC96 SWAP1 PUSH3 0xE20 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0xCDE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP3 SWAP4 POP SWAP2 DUP8 AND SWAP2 PUSH4 0x7BA0E2E7 SWAP2 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xD3B SWAP2 SWAP1 PUSH3 0xFC3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xD56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0xD6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xD91 SWAP2 SWAP1 PUSH3 0xE99 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP11 DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP1 SWAP3 SWAP1 DUP15 AND SWAP2 PUSH32 0x334A3AD9B2F42830C082739BEAA110A657D70A5BAB5868B9B4D43E8A9093C4C6 SWAP2 LOG4 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1543 DUP1 PUSH3 0x10A0 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xE41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH3 0xE4E DUP2 PUSH3 0x1079 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xE68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0xE4E DUP2 PUSH3 0x1079 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xE88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0xE4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xEAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0xEC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0xEEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0xF11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xF44 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0xF26 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0xF57 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xFBB PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0xF1C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0xE4E PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0xF1C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH3 0x100F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH3 0x1074 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0x109C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1543 CODESIZE SUB DUP1 PUSH3 0x1543 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1C4 JUMP JUMPDEST CHAINID PUSH1 0x80 MSTORE PUSH3 0x111 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x29BAB9B434902628102A37B5B2B7 PUSH1 0x91 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0xC0 MSTORE PUSH3 0x132 DUP3 DUP3 PUSH3 0x13B JUMP JUMPDEST POP POP POP PUSH3 0x22C JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH3 0x14E SWAP2 SWAP1 PUSH3 0x205 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x1DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1E5 DUP5 PUSH3 0x1A7 JUMP JUMPDEST SWAP3 POP PUSH3 0x1F5 PUSH1 0x20 DUP6 ADD PUSH3 0x1A7 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0x227 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x12C8 PUSH3 0x27B PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x1F2 ADD MSTORE DUP2 DUP2 PUSH2 0x70F ADD MSTORE DUP2 DUP2 PUSH2 0x7FA ADD MSTORE DUP2 DUP2 PUSH2 0xC96 ADD MSTORE PUSH2 0xD6B ADD MSTORE PUSH1 0x0 PUSH2 0x620 ADD MSTORE PUSH1 0x0 PUSH2 0x4F7 ADD MSTORE PUSH2 0x12C8 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xB6B55F25 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x2C8 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0x2F0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x30ADF81F GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x5FCBD285 EQ PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x191 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x141 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14E SWAP2 SWAP1 PUSH2 0x1110 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16A PUSH2 0x165 CALLDATASIZE PUSH1 0x4 PUSH2 0x1092 JUMP JUMPDEST PUSH2 0x32E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14E JUMP JUMPDEST PUSH2 0x183 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14E JUMP JUMPDEST PUSH2 0x16A PUSH2 0x19F CALLDATASIZE PUSH1 0x4 PUSH2 0xFE3 JUMP JUMPDEST PUSH2 0x3A7 JUMP JUMPDEST PUSH2 0x183 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x1D3 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14E JUMP JUMPDEST PUSH2 0x183 PUSH2 0x4F3 JUMP JUMPDEST PUSH2 0x214 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14E JUMP JUMPDEST PUSH2 0x183 PUSH2 0x247 CALLDATASIZE PUSH1 0x4 PUSH2 0xF8E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x183 PUSH2 0x267 CALLDATASIZE PUSH1 0x4 PUSH2 0xF8E JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x141 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x16A PUSH2 0x2C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1092 JUMP JUMPDEST PUSH2 0x642 JUMP JUMPDEST PUSH2 0x183 PUSH2 0x2D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x10DE JUMP JUMPDEST PUSH2 0x6C7 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0x2E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x101F JUMP JUMPDEST PUSH2 0x8FC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x183 PUSH2 0x2FE CALLDATASIZE PUSH1 0x4 PUSH2 0x10DE JUMP JUMPDEST PUSH2 0xC4E JUMP JUMPDEST PUSH2 0x183 PUSH2 0x311 CALLDATASIZE PUSH1 0x4 PUSH2 0xFB0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x396 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x444 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x43E SWAP1 DUP5 SWAP1 PUSH2 0x1213 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x479 SWAP1 DUP5 SWAP1 PUSH2 0x1213 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x4E1 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x61D JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP4 SWAP1 PUSH2 0x663 SWAP1 DUP5 SWAP1 PUSH2 0x1213 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x396 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x751 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x765 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x789 SWAP2 SWAP1 PUSH2 0x10F7 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x7B1 JUMPI DUP1 DUP4 PUSH1 0x0 SLOAD PUSH2 0x7A0 SWAP2 SWAP1 PUSH2 0x11D6 JUMP JUMPDEST PUSH2 0x7AA SWAP2 SWAP1 PUSH2 0x119B JUMP JUMPDEST SWAP2 POP PUSH2 0x7B5 JUMP JUMPDEST DUP3 SWAP2 POP JUMPDEST PUSH2 0x7BF CALLER DUP4 PUSH2 0xE62 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x853 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x867 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x88B SWAP2 SWAP1 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x8F6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F46524F4D5F4641494C4544000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x966 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8ED JUMP JUMPDEST PUSH1 0x0 PUSH2 0x970 PUSH2 0x4F3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP3 DUP13 SWAP3 DUP13 SWAP3 DUP13 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x9CB DUP4 PUSH2 0x122A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA6C SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAF5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xB70 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0xBD6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8ED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD10 SWAP2 SWAP1 PUSH2 0x10F7 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP PUSH2 0xD20 DUP5 DUP4 PUSH2 0x11D6 JUMP JUMPDEST PUSH2 0xD2A SWAP2 SWAP1 PUSH2 0x119B JUMP JUMPDEST SWAP2 POP PUSH2 0xD36 CALLER DUP5 PUSH2 0xEDA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDD8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDFC SWAP2 SWAP1 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x8F6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8ED JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0xE73 SWAP2 SWAP1 PUSH2 0x1183 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0xF0F SWAP1 DUP5 SWAP1 PUSH2 0x1213 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP1 SLOAD DUP3 SWAP1 SUB DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0xECE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xF89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFA9 DUP3 PUSH2 0xF65 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFCC DUP4 PUSH2 0xF65 JUMP JUMPDEST SWAP2 POP PUSH2 0xFDA PUSH1 0x20 DUP5 ADD PUSH2 0xF65 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xFF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1001 DUP5 PUSH2 0xF65 JUMP JUMPDEST SWAP3 POP PUSH2 0x100F PUSH1 0x20 DUP6 ADD PUSH2 0xF65 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x103A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1043 DUP9 PUSH2 0xF65 JUMP JUMPDEST SWAP7 POP PUSH2 0x1051 PUSH1 0x20 DUP10 ADD PUSH2 0xF65 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1075 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10AE DUP4 PUSH2 0xF65 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xFA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x113D JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x1121 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x114F JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1196 JUMPI PUSH2 0x1196 PUSH2 0x1263 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x11D1 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x120E JUMPI PUSH2 0x120E PUSH2 0x1263 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1225 JUMPI PUSH2 0x1225 PUSH2 0x1263 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x125C JUMPI PUSH2 0x125C PUSH2 0x1263 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC 0x2F DUP3 GT 0xD7 0xD2 0xC8 0xA8 0xDD DUP4 DUP13 0x49 PUSH29 0x375D335873E4E46C37316857643F3B672F798064736F6C634300080700 CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4A 0xBE PUSH11 0x851FF9053ADB525B5E8228 0xE0 SWAP12 SDIV MSIZE 0xDF MULMOD 0x26 PUSH10 0xD4ED8C2308F8B337A9FC PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "911:3663:32:-:0;;;1447:344;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1628:14:32;;;;;;;;1652:32;;;;;;;1694:56;;;;;;;1760:24;;;;;;911:3663;;14:724:64;181:6;189;197;205;258:3;246:9;237:7;233:23;229:33;226:53;;;275:1;272;265:12;226:53;307:9;301:16;326:31;351:5;326:31;:::i;:::-;426:2;411:18;;405:25;376:5;;-1:-1:-1;439:33:64;405:25;439:33;:::i;:::-;543:2;528:18;;522:25;491:7;;-1:-1:-1;556:33:64;522:25;556:33;:::i;:::-;660:2;645:18;;639:25;608:7;;-1:-1:-1;673:33:64;639:25;673:33;:::i;:::-;14:724;;;;-1:-1:-1;14:724:64;;-1:-1:-1;;14:724:64:o;743:131::-;-1:-1:-1;;;;;818:31:64;;808:42;;798:70;;864:1;861;854:12;798:70;743:131;:::o;:::-;911:3663:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@bento_5083": {
                  "entryPoint": null,
                  "id": 5083,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@constantProductPoolFactory_5089": {
                  "entryPoint": null,
                  "id": 5089,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@masterChef_5091": {
                  "entryPoint": null,
                  "id": 5091,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@masterDeployer_5086": {
                  "entryPoint": null,
                  "id": 5086,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@migrate_5395": {
                  "entryPoint": 409,
                  "id": 5395,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@migrated_5080": {
                  "entryPoint": null,
                  "id": 5080,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 3630,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 3669,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bool_fromMemory": {
                  "entryPoint": 3701,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_contract$_IUniswapV2Minimal_$2599": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 3737,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_uint256_fromMemory": {
                  "entryPoint": 3763,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_uint256t_uint32_fromMemory": {
                  "entryPoint": 3800,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_encode_bytes": {
                  "entryPoint": 3868,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_rational_0_by_1__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_rational_30_by_1_t_bool__to_t_address_t_address_t_uint8_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 3978,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 4035,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IPoolFactory_$2468__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1ddf2f4d77a07bf38cb5b591f9b628cbc95c3ca37fc7497d8f867aa8129b0d40__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_56fc51d604ac77f1d7de5cbde9fd9fde356a6a2c4c231c067a578e6b0ec5a08d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5b92809fdf9ddfcca4ef941814d259bc15fd90198e706ee8d9e1063292596757__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 4056,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 4116,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "validator_revert_address": {
                  "entryPoint": 4217,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:7514:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:177:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "130:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "139:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "142:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "132:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "132:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "132:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "105:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "114:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "101:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "101:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "126:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "94:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "155:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "181:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "168:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "168:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "159:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "225:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "200:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "200:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "200:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "240:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "250:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "240:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "61:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "73:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:247:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "347:170:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "393:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "402:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "405:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "395:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "395:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "395:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "368:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "377:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "364:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "364:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "389:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "360:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "360:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "357:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "418:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "437:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "431:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "431:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "422:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "481:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "456:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "456:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "456:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "496:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "506:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "496:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "313:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "324:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "336:6:64",
                            "type": ""
                          }
                        ],
                        "src": "266:251:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "600:199:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "646:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "655:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "658:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "648:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "648:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "648:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "621:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "630:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "617:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "617:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "642:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "613:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "613:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "610:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "671:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "690:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "684:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "684:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "675:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "753:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "762:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "765:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "755:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "755:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "755:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "722:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "743:5:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "736:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "736:13:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "729:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "729:21:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "719:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "719:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "712:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "712:40:64"
                              },
                              "nodeType": "YulIf",
                              "src": "709:60:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "778:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "788:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "778:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "566:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "577:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "589:6:64",
                            "type": ""
                          }
                        ],
                        "src": "522:277:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "900:177:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "946:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "955:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "958:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "948:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "948:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "948:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "921:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "930:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "917:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "917:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "942:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "913:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "913:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "910:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "971:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "997:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "984:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "984:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "975:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1041:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1016:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1016:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1016:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1056:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1066:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1056:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_IUniswapV2Minimal_$2599",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "866:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "877:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "889:6:64",
                            "type": ""
                          }
                        ],
                        "src": "804:273:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1163:103:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1209:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1218:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1221:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1211:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1211:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1211:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1184:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1193:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1180:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1180:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1205:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1176:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1176:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1173:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1234:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1250:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1244:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1244:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1234:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1129:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1140:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1152:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1082:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1369:147:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1415:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1424:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1427:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1417:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1417:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1417:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1390:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1399:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1386:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1386:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1411:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1382:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1382:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1379:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1440:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1456:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1450:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1450:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1440:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1475:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1495:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1506:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1491:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1491:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1485:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1485:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1475:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1327:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1338:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1350:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1358:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1271:245:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1635:288:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1681:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1690:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1693:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1683:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1683:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1683:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1656:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1665:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1652:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1652:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1677:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1648:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1648:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1645:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1706:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1722:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1716:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1716:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1706:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1741:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1761:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1772:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1757:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1757:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1751:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1751:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1741:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1785:38:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1808:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1819:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1804:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1804:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1798:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1798:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1789:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1877:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1886:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1889:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1879:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1879:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1879:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1845:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1856:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1863:10:64",
                                            "type": "",
                                            "value": "0xffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1852:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1852:22:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1842:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1842:33:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1835:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1835:41:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1832:61:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1902:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1912:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1902:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256t_uint32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1585:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1596:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1608:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1616:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1624:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1521:402:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1977:481:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1987:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2007:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2001:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2001:12:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1991:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2029:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2034:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2022:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2022:19:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2022:19:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2050:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2059:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "2054:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2121:110:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2135:14:64",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "2145:4:64",
                                      "type": "",
                                      "value": "0x20"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "2139:2:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2177:3:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2182:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2173:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2173:11:64"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "2186:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2169:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2169:20:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2205:5:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2212:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2201:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2201:13:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2216:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2197:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2197:22:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2191:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2191:29:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2162:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2162:59:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2162:59:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2080:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2083:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2077:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2077:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2091:21:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2093:17:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "2102:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2105:4:64",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2098:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2098:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "2093:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2073:3:64",
                                "statements": []
                              },
                              "src": "2069:162:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2265:62:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2294:3:64"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2299:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2290:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2290:16:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2308:4:64",
                                              "type": "",
                                              "value": "0x20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2286:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2286:27:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2315:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2279:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2279:38:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2279:38:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2246:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2249:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2243:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2243:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2240:87:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2336:116:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2351:3:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2364:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2372:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2360:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2360:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2377:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2356:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2356:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2347:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2347:98:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2447:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2343:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2343:109:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "2336:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1954:5:64",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1961:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1969:3:64",
                            "type": ""
                          }
                        ],
                        "src": "1928:530:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2564:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2574:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2586:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2597:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2582:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2582:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2574:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2616:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2631:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2639:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2627:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2627:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2609:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2609:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2609:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2533:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2544:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2555:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2463:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2915:338:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2925:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2937:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2948:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2933:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2933:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2925:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2961:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2971:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2965:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3029:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3044:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3052:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3040:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3040:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3022:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3022:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3022:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3076:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3087:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3072:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3072:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3096:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3104:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3092:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3092:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3065:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3065:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3065:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3128:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3139:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3124:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3124:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3148:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3156:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3144:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3144:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3117:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3117:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3117:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3180:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3191:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3176:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3176:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3196:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3169:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3169:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3169:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3223:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3234:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3219:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3219:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "3240:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3212:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3212:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3212:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_rational_0_by_1__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2852:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2863:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2871:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2879:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2887:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2895:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2906:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2694:559:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3444:312:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3454:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3466:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3477:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3462:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3462:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3454:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3490:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3500:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3494:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3558:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3573:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3581:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3569:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3569:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3551:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3551:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3551:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3605:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3616:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3601:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3601:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3625:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3633:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3621:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3621:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3594:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3594:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3594:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3657:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3668:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3653:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3653:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3677:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3685:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3673:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3673:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3646:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3646:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3646:45:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3711:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3722:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3707:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3707:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3741:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "3734:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3734:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "3727:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3727:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3700:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3700:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3700:50:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_rational_30_by_1_t_bool__to_t_address_t_address_t_uint8_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3389:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3400:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3408:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3416:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3424:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3435:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3258:498:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3918:241:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3928:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3940:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3951:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3936:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3936:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3928:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3963:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3973:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3967:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4031:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4046:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4054:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4042:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4042:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4024:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4024:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4024:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4078:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4089:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4074:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4074:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4098:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4106:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4094:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4094:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4067:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4067:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4067:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4130:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4141:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4126:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4126:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4146:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4119:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4119:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4119:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3871:9:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3882:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3890:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3898:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3909:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3761:398:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4311:190:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4328:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4343:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4351:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4339:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4339:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4321:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4321:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4321:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4415:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4426:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4411:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4411:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4431:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4404:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4404:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4404:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4443:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4468:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4480:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4491:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4476:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4476:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "4451:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4451:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4443:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4272:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4283:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4291:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4302:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4164:337:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4607:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4617:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4629:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4640:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4625:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4625:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4617:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4659:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4670:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4652:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4652:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4652:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4576:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4587:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4598:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4506:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4807:98:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4824:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4835:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4817:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4817:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4817:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4847:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4872:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4884:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4895:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4880:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4880:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "4855:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4855:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4847:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4776:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4787:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4798:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4688:217:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5036:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5046:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5058:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5069:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5054:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5054:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5046:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5088:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5103:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5111:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5099:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5099:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5081:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5081:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5081:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5005:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5016:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5027:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4910:251:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5291:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5301:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5313:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5324:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5309:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5309:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5301:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5343:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5358:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5366:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5354:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5354:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5336:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5336:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5336:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5260:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5271:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5282:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5166:250:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5543:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5553:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5565:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5576:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5561:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5561:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5553:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5595:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5610:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5618:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5606:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5606:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5588:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5588:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5588:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IPoolFactory_$2468__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5512:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5523:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5534:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5421:247:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5847:158:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5864:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5875:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5857:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5857:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5857:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5898:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5909:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5894:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5894:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5914:1:64",
                                    "type": "",
                                    "value": "9"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5887:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5887:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5887:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5936:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5947:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5932:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5932:18:64"
                                  },
                                  {
                                    "hexValue": "4f4e4c595f4f4e4345",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5952:11:64",
                                    "type": "",
                                    "value": "ONLY_ONCE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5925:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5925:39:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5925:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5973:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5985:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5996:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5981:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5981:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5973:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1ddf2f4d77a07bf38cb5b591f9b628cbc95c3ca37fc7497d8f867aa8129b0d40__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5824:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5838:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5673:332:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6184:166:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6201:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6212:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6194:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6194:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6194:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6235:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6246:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6231:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6231:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6251:2:64",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6224:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6224:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6224:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6274:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6285:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6270:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6270:18:64"
                                  },
                                  {
                                    "hexValue": "50524943455f444946464552454e4345",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6290:18:64",
                                    "type": "",
                                    "value": "PRICE_DIFFERENCE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6263:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6263:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6263:46:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6318:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6330:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6341:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6326:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6326:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6318:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_56fc51d604ac77f1d7de5cbde9fd9fde356a6a2c4c231c067a578e6b0ec5a08d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6161:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6175:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6010:340:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6529:158:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6546:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6557:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6539:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6539:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6539:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6580:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6591:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6576:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6576:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6596:1:64",
                                    "type": "",
                                    "value": "9"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6569:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6569:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6569:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6618:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6629:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6614:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6614:18:64"
                                  },
                                  {
                                    "hexValue": "4f4e4c595f43484546",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6634:11:64",
                                    "type": "",
                                    "value": "ONLY_CHEF"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6607:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6607:39:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6607:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6655:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6667:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6678:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6663:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6663:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6655:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5b92809fdf9ddfcca4ef941814d259bc15fd90198e706ee8d9e1063292596757__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6506:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6520:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6355:332:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6738:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6769:168:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6790:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6793:77:64",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6783:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6783:88:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6783:88:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6891:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6894:4:64",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6884:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6884:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6884:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6919:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6922:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6912:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6912:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6912:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "6758:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6751:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6751:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6748:189:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6946:14:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "6955:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "6958:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "6951:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6951:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "6946:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "6723:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "6726:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "6732:1:64",
                            "type": ""
                          }
                        ],
                        "src": "6692:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7023:330:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7150:168:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7171:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7174:77:64",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7164:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7164:88:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7164:88:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7272:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7275:4:64",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7265:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7265:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7265:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7300:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7303:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7293:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7293:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7293:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "7054:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "7047:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7047:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "7040:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7040:17:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "7062:1:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7069:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "7137:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "7065:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7065:74:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7059:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7059:81:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "7036:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7036:105:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7033:285:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7327:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "7342:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "7345:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "7338:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7338:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "7327:7:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "7002:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "7005:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "7011:7:64",
                            "type": ""
                          }
                        ],
                        "src": "6971:382:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7403:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7490:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7499:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7502:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7492:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7492:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7492:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7426:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "7437:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7444:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "7433:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7433:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "7423:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7423:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7416:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7416:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7413:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "7392:5:64",
                            "type": ""
                          }
                        ],
                        "src": "7358:154:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_contract$_IUniswapV2Minimal_$2599(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256t_uint256t_uint32_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n        let value := mload(add(headStart, 64))\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n        value2 := value\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            let _1 := 0x20\n            mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(pos, length), 0x20), 0)\n        }\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_rational_0_by_1__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_address_t_address_t_rational_30_by_1_t_bool__to_t_address_t_address_t_uint8_t_bool__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, 0xff))\n        mstore(add(headStart, 96), iszero(iszero(value3)))\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_bytes(value1, add(headStart, 64))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_contract$_IPoolFactory_$2468__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_1ddf2f4d77a07bf38cb5b591f9b628cbc95c3ca37fc7497d8f867aa8129b0d40__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 9)\n        mstore(add(headStart, 64), \"ONLY_ONCE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_56fc51d604ac77f1d7de5cbde9fd9fde356a6a2c4c231c067a578e6b0ec5a08d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"PRICE_DIFFERENCE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_5b92809fdf9ddfcca4ef941814d259bc15fd90198e706ee8d9e1063292596757__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 9)\n        mstore(add(headStart, 64), \"ONLY_CHEF\")\n        tail := add(headStart, 96)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x)))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        product := mul(x, y)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "5083": [
                  {
                    "length": 32,
                    "start": 232
                  },
                  {
                    "length": 32,
                    "start": 2060
                  },
                  {
                    "length": 32,
                    "start": 2269
                  },
                  {
                    "length": 32,
                    "start": 2502
                  }
                ],
                "5086": [
                  {
                    "length": 32,
                    "start": 375
                  },
                  {
                    "length": 32,
                    "start": 1392
                  }
                ],
                "5089": [
                  {
                    "length": 32,
                    "start": 312
                  },
                  {
                    "length": 32,
                    "start": 1152
                  },
                  {
                    "length": 32,
                    "start": 1438
                  }
                ],
                "5091": [
                  {
                    "length": 32,
                    "start": 272
                  },
                  {
                    "length": 32,
                    "start": 435
                  },
                  {
                    "length": 32,
                    "start": 1631
                  },
                  {
                    "length": 32,
                    "start": 1848
                  },
                  {
                    "length": 32,
                    "start": 3176
                  }
                ]
              },
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b50600436106200007b5760003560e01c806393e44497116200005657806393e444971462000132578063ce5494bb146200015a578063cf58879a146200017157600080fd5b80634ba0a5ee14620000805780634da3182714620000e2578063575a86b2146200010a575b600080fd5b620000b96200009136600462000e2e565b60006020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b620000b97f000000000000000000000000000000000000000000000000000000000000000081565b620000b97f000000000000000000000000000000000000000000000000000000000000000081565b620000b97f000000000000000000000000000000000000000000000000000000000000000081565b620000b96200016b36600462000e2e565b62000199565b620000b97f000000000000000000000000000000000000000000000000000000000000000081565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161462000240576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4f4e4c595f43484546000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8281166000908152602081905260409020541615620002d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4f4e4c595f4f4e43450000000000000000000000000000000000000000000000604482015260640162000237565b60008273ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200031a57600080fd5b505afa1580156200032f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000355919062000e55565b905060008373ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015620003a057600080fd5b505afa158015620003b5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003db919062000e55565b6040805173ffffffffffffffffffffffffffffffffffffffff8086166020830152831691810191909152601e606082015260006080820181905291925060a001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052805160208201207ff6ab6d99000000000000000000000000000000000000000000000000000000008352600483015291506000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063f6ab6d9990602401602060405180830381600087803b158015620004da57600080fd5b505af1158015620004ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000515919062000e55565b905073ffffffffffffffffffffffffffffffffffffffff811662000622576040517f250558dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063250558dc90620005c9907f000000000000000000000000000000000000000000000000000000000000000090869060040162000f8a565b602060405180830381600087803b158015620005e457600080fd5b505af1158015620005f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061f919062000e55565b90505b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152600091908816906370a082319060240160206040518083038186803b158015620006ae57600080fd5b505afa158015620006c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006e9919062000e99565b905080620006fb575095945050505050565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015288166024820181905260448201839052906323b872dd90606401602060405180830381600087803b1580156200079357600080fd5b505af1158015620007a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007ce919062000e75565b506040517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260009182918a16906389afcb44906024016040805180830381600087803b1580156200085d57600080fd5b505af115801562000872573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000898919062000eb3565b6040517f02b9446c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301819052908816604483015260648201849052600060848301529294509092506302b9446c9060a4016040805180830381600087803b1580156200094457600080fd5b505af115801562000959573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200097f919062000eb3565b50506040517f02b9446c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301527f000000000000000000000000000000000000000000000000000000000000000081166024830181905290861660448301526064820183905260006084830152906302b9446c9060a4016040805180830381600087803b15801562000a2857600080fd5b505af115801562000a3d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a63919062000eb3565b50508373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000aac57600080fd5b505afa15801562000ac1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ae7919062000e99565b1562000c63576000808573ffffffffffffffffffffffffffffffffffffffff166365dfc7676040518163ffffffff1660e01b815260040160606040518083038186803b15801562000b3757600080fd5b505afa15801562000b4c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b72919062000ed8565b50909250905060008362000b8f86670de0b6b3a764000062001014565b62000b9b919062000fd8565b905060008262000bb485670de0b6b3a764000062001014565b62000bc0919062000fd8565b905060008162000bd3846103e862001014565b62000bdf919062000fd8565b90506103ed8110801562000bf557506103e38110155b62000c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f50524943455f444946464552454e434500000000000000000000000000000000604482015260640162000237565b50505050505b6000847f00000000000000000000000000000000000000000000000000000000000000008560405162000c969062000e20565b73ffffffffffffffffffffffffffffffffffffffff93841681529290911660208301526040820152606001604051809103906000f08015801562000cde573d6000803e3d6000fd5b506040805173ffffffffffffffffffffffffffffffffffffffff808416602083015292935091871691637ba0e2e791016040516020818303038152906040526040518263ffffffff1660e01b815260040162000d3b919062000fc3565b602060405180830381600087803b15801562000d5657600080fd5b505af115801562000d6b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d91919062000e99565b5073ffffffffffffffffffffffffffffffffffffffff81811660008181526020819052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168a8616908117909155905192939092908e16917f334a3ad9b2f42830c082739beaa110a657d70a5bab5868b9b4d43e8a9093c4c691a49998505050505050505050565b61154380620010a083390190565b60006020828403121562000e4157600080fd5b813562000e4e8162001079565b9392505050565b60006020828403121562000e6857600080fd5b815162000e4e8162001079565b60006020828403121562000e8857600080fd5b8151801515811462000e4e57600080fd5b60006020828403121562000eac57600080fd5b5051919050565b6000806040838503121562000ec757600080fd5b505080516020909101519092909150565b60008060006060848603121562000eee57600080fd5b8351925060208401519150604084015163ffffffff8116811462000f1157600080fd5b809150509250925092565b6000815180845260005b8181101562000f445760208185018101518683018201520162000f26565b8181111562000f57576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600062000fbb604083018462000f1c565b949350505050565b60208152600062000e4e602083018462000f1c565b6000826200100f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562001074577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500290565b73ffffffffffffffffffffffffffffffffffffffff811681146200109c57600080fd5b5056fe60e06040523480156200001157600080fd5b5060405162001543380380620015438339810160408190526200003491620001c4565b4660805262000111604080518082018252600e81526d29bab9b434902628102a37b5b2b760911b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b60a0526001600160601b0319606084901b1660c0526200013282826200013b565b5050506200022c565b806000808282546200014e919062000205565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80516001600160a01b0381168114620001bf57600080fd5b919050565b600080600060608486031215620001da57600080fd5b620001e584620001a7565b9250620001f560208501620001a7565b9150604084015190509250925092565b600082198211156200022757634e487b7160e01b600052601160045260246000fd5b500190565b60805160a05160c05160601c6112c86200027b600039600081816101f20152818161070f015281816107fa01528181610c960152610d6b01526000610620015260006104f701526112c86000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063b6b55f2511610066578063b6b55f25146102c8578063d505accf146102db578063db006a75146102f0578063dd62ed3e1461030357600080fd5b806370a08231146102395780637ecebe001461025957806395d89b4114610279578063a9059cbb146102b557600080fd5b806330adf81f116100d357806330adf81f146101a4578063313ce567146101cb5780633644e515146101e55780635fcbd285146101ed57600080fd5b806306fdde0314610105578063095ea7b31461015757806318160ddd1461017a57806323b872dd14610191575b600080fd5b6101416040518060400160405280600e81526020017f5375736869204c5020546f6b656e00000000000000000000000000000000000081525081565b60405161014e9190611110565b60405180910390f35b61016a610165366004611092565b61032e565b604051901515815260200161014e565b61018360005481565b60405190815260200161014e565b61016a61019f366004610fe3565b6103a7565b6101837f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6101d3601281565b60405160ff909116815260200161014e565b6101836104f3565b6102147f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161014e565b610183610247366004610f8e565b60016020526000908152604090205481565b610183610267366004610f8e565b60036020526000908152604090205481565b6101416040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b61016a6102c3366004611092565b610642565b6101836102d63660046110de565b6106c7565b6102ee6102e936600461101f565b6108fc565b005b6101836102fe3660046110de565b610c4e565b610183610311366004610fb0565b600260209081526000928352604080842090915290825290205481565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103969086815260200190565b60405180910390a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104445773ffffffffffffffffffffffffffffffffffffffff841660009081526002602090815260408083203384529091528120805484929061043e908490611213565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604081208054849290610479908490611213565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260016020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104e19086815260200190565b60405180910390a35060019392505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461061d5750604080518082018252600e81527f5375736869204c5020546f6b656e00000000000000000000000000000000000060209182015281518083018352600181527f31000000000000000000000000000000000000000000000000000000000000009082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600090815260016020526040812080548391908390610663908490611213565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103969086815260200190565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561075157600080fd5b505afa158015610765573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078991906110f7565b905080156107b15780836000546107a091906111d6565b6107aa919061119b565b91506107b5565b8291505b6107bf3383610e62565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018490527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906323b872dd90606401602060405180830381600087803b15801561085357600080fd5b505af1158015610867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088b91906110bc565b6108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c454400000000000000000000000060448201526064015b60405180910390fd5b50919050565b42841015610966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016108ed565b60006109706104f3565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c929091906109cb8361122a565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001610a6c9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015610af5573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610b7057508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e4154555245000000000000000060448201526064016108ed565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b158015610cd857600080fd5b505afa158015610cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1091906110f7565b600054909150610d2084836111d6565b610d2a919061119b565b9150610d363384610eda565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a9059cbb90604401602060405180830381600087803b158015610dc457600080fd5b505af1158015610dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfc91906110bc565b6108f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c4544000000000000000000000000000000000060448201526064016108ed565b80600080828254610e739190611183565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91015b60405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081208054839290610f0f908490611213565b909155505060008054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610ece565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f8957600080fd5b919050565b600060208284031215610fa057600080fd5b610fa982610f65565b9392505050565b60008060408385031215610fc357600080fd5b610fcc83610f65565b9150610fda60208401610f65565b90509250929050565b600080600060608486031215610ff857600080fd5b61100184610f65565b925061100f60208501610f65565b9150604084013590509250925092565b600080600080600080600060e0888a03121561103a57600080fd5b61104388610f65565b965061105160208901610f65565b95506040880135945060608801359350608088013560ff8116811461107557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156110a557600080fd5b6110ae83610f65565b946020939093013593505050565b6000602082840312156110ce57600080fd5b81518015158114610fa957600080fd5b6000602082840312156110f057600080fd5b5035919050565b60006020828403121561110957600080fd5b5051919050565b600060208083528351808285015260005b8181101561113d57858101830151858201604001528201611121565b8181111561114f576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000821982111561119657611196611263565b500190565b6000826111d1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561120e5761120e611263565b500290565b60008282101561122557611225611263565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561125c5761125c611263565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220dc2f8211d7d2c8a8dd838c497c375d335873e4e46c37316857643f3b672f798064736f6c63430008070033a26469706673582212204abe6a851ff9053adb525b5e8228e09b0559df092669d4ed8c2308f8b337a9fc64736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x93E44497 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x93E44497 EQ PUSH3 0x132 JUMPI DUP1 PUSH4 0xCE5494BB EQ PUSH3 0x15A JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH3 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x4BA0A5EE EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH3 0xE2 JUMPI DUP1 PUSH4 0x575A86B2 EQ PUSH3 0x10A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xB9 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0xE2E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0xB9 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0xB9 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0xB9 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0xB9 PUSH3 0x16B CALLDATASIZE PUSH1 0x4 PUSH3 0xE2E JUMP JUMPDEST PUSH3 0x199 JUMP JUMPDEST PUSH3 0xB9 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH3 0x240 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F4E4C595F434845460000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD AND ISZERO PUSH3 0x2D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F4E4C595F4F4E43450000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x237 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDFE1681 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x31A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x32F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x355 SWAP2 SWAP1 PUSH3 0xE55 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD21220A7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3B5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x3DB SWAP2 SWAP1 PUSH3 0xE55 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x20 DUP4 ADD MSTORE DUP4 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1E PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH1 0xA0 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 DUP3 ADD KECCAK256 PUSH32 0xF6AB6D9900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xF6AB6D99 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x4DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x4EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x515 SWAP2 SWAP1 PUSH3 0xE55 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH3 0x622 JUMPI PUSH1 0x40 MLOAD PUSH32 0x250558DC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x250558DC SWAP1 PUSH3 0x5C9 SWAP1 PUSH32 0x0 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH3 0xF8A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x5E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x5F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x61F SWAP2 SWAP1 PUSH3 0xE55 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP9 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x6C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x6E9 SWAP2 SWAP1 PUSH3 0xE99 JUMP JUMPDEST SWAP1 POP DUP1 PUSH3 0x6FB JUMPI POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP9 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x7A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x7CE SWAP2 SWAP1 PUSH3 0xE75 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x89AFCB4400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP11 AND SWAP1 PUSH4 0x89AFCB44 SWAP1 PUSH1 0x24 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x85D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x872 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x898 SWAP2 SWAP1 PUSH3 0xEB3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2B9446C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0x24 DUP4 ADD DUP2 SWAP1 MSTORE SWAP1 DUP9 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH4 0x2B9446C SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x944 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x959 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x97F SWAP2 SWAP1 PUSH3 0xEB3 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x2B9446C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0x24 DUP4 ADD DUP2 SWAP1 MSTORE SWAP1 DUP7 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE SWAP1 PUSH4 0x2B9446C SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xA28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0xA3D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xA63 SWAP2 SWAP1 PUSH3 0xEB3 JUMP JUMPDEST POP POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xAAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xAC1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xAE7 SWAP2 SWAP1 PUSH3 0xE99 JUMP JUMPDEST ISZERO PUSH3 0xC63 JUMPI PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x65DFC767 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xB37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xB4C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xB72 SWAP2 SWAP1 PUSH3 0xED8 JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP4 PUSH3 0xB8F DUP7 PUSH8 0xDE0B6B3A7640000 PUSH3 0x1014 JUMP JUMPDEST PUSH3 0xB9B SWAP2 SWAP1 PUSH3 0xFD8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH3 0xBB4 DUP6 PUSH8 0xDE0B6B3A7640000 PUSH3 0x1014 JUMP JUMPDEST PUSH3 0xBC0 SWAP2 SWAP1 PUSH3 0xFD8 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH3 0xBD3 DUP5 PUSH2 0x3E8 PUSH3 0x1014 JUMP JUMPDEST PUSH3 0xBDF SWAP2 SWAP1 PUSH3 0xFD8 JUMP JUMPDEST SWAP1 POP PUSH2 0x3ED DUP2 LT DUP1 ISZERO PUSH3 0xBF5 JUMPI POP PUSH2 0x3E3 DUP2 LT ISZERO JUMPDEST PUSH3 0xC5D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50524943455F444946464552454E434500000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x237 JUMP JUMPDEST POP POP POP POP POP JUMPDEST PUSH1 0x0 DUP5 PUSH32 0x0 DUP6 PUSH1 0x40 MLOAD PUSH3 0xC96 SWAP1 PUSH3 0xE20 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0xCDE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP3 SWAP4 POP SWAP2 DUP8 AND SWAP2 PUSH4 0x7BA0E2E7 SWAP2 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0xD3B SWAP2 SWAP1 PUSH3 0xFC3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xD56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0xD6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xD91 SWAP2 SWAP1 PUSH3 0xE99 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP11 DUP7 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP1 SWAP3 SWAP1 DUP15 AND SWAP2 PUSH32 0x334A3AD9B2F42830C082739BEAA110A657D70A5BAB5868B9B4D43E8A9093C4C6 SWAP2 LOG4 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1543 DUP1 PUSH3 0x10A0 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xE41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH3 0xE4E DUP2 PUSH3 0x1079 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xE68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0xE4E DUP2 PUSH3 0x1079 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xE88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0xE4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xEAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0xEC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0xEEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD SWAP3 POP PUSH1 0x20 DUP5 ADD MLOAD SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0xF11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xF44 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH3 0xF26 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0xF57 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH3 0xFBB PUSH1 0x40 DUP4 ADD DUP5 PUSH3 0xF1C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0xE4E PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0xF1C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH3 0x100F JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH3 0x1074 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0x109C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1543 CODESIZE SUB DUP1 PUSH3 0x1543 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1C4 JUMP JUMPDEST CHAINID PUSH1 0x80 MSTORE PUSH3 0x111 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x29BAB9B434902628102A37B5B2B7 PUSH1 0x91 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0xC0 MSTORE PUSH3 0x132 DUP3 DUP3 PUSH3 0x13B JUMP JUMPDEST POP POP POP PUSH3 0x22C JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH3 0x14E SWAP2 SWAP1 PUSH3 0x205 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x1DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1E5 DUP5 PUSH3 0x1A7 JUMP JUMPDEST SWAP3 POP PUSH3 0x1F5 PUSH1 0x20 DUP6 ADD PUSH3 0x1A7 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0x227 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x12C8 PUSH3 0x27B PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x1F2 ADD MSTORE DUP2 DUP2 PUSH2 0x70F ADD MSTORE DUP2 DUP2 PUSH2 0x7FA ADD MSTORE DUP2 DUP2 PUSH2 0xC96 ADD MSTORE PUSH2 0xD6B ADD MSTORE PUSH1 0x0 PUSH2 0x620 ADD MSTORE PUSH1 0x0 PUSH2 0x4F7 ADD MSTORE PUSH2 0x12C8 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x100 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xB6B55F25 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xB6B55F25 EQ PUSH2 0x2C8 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x2DB JUMPI DUP1 PUSH4 0xDB006A75 EQ PUSH2 0x2F0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x279 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x30ADF81F GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x1A4 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1CB JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x1E5 JUMPI DUP1 PUSH4 0x5FCBD285 EQ PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x157 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x191 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x141 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x14E SWAP2 SWAP1 PUSH2 0x1110 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x16A PUSH2 0x165 CALLDATASIZE PUSH1 0x4 PUSH2 0x1092 JUMP JUMPDEST PUSH2 0x32E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14E JUMP JUMPDEST PUSH2 0x183 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14E JUMP JUMPDEST PUSH2 0x16A PUSH2 0x19F CALLDATASIZE PUSH1 0x4 PUSH2 0xFE3 JUMP JUMPDEST PUSH2 0x3A7 JUMP JUMPDEST PUSH2 0x183 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x1D3 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14E JUMP JUMPDEST PUSH2 0x183 PUSH2 0x4F3 JUMP JUMPDEST PUSH2 0x214 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14E JUMP JUMPDEST PUSH2 0x183 PUSH2 0x247 CALLDATASIZE PUSH1 0x4 PUSH2 0xF8E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x183 PUSH2 0x267 CALLDATASIZE PUSH1 0x4 PUSH2 0xF8E JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x141 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x16A PUSH2 0x2C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1092 JUMP JUMPDEST PUSH2 0x642 JUMP JUMPDEST PUSH2 0x183 PUSH2 0x2D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x10DE JUMP JUMPDEST PUSH2 0x6C7 JUMP JUMPDEST PUSH2 0x2EE PUSH2 0x2E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x101F JUMP JUMPDEST PUSH2 0x8FC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x183 PUSH2 0x2FE CALLDATASIZE PUSH1 0x4 PUSH2 0x10DE JUMP JUMPDEST PUSH2 0xC4E JUMP JUMPDEST PUSH2 0x183 PUSH2 0x311 CALLDATASIZE PUSH1 0x4 PUSH2 0xFB0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x396 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x444 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x43E SWAP1 DUP5 SWAP1 PUSH2 0x1213 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x479 SWAP1 DUP5 SWAP1 PUSH2 0x1213 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x4E1 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x61D JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP4 SWAP1 PUSH2 0x663 SWAP1 DUP5 SWAP1 PUSH2 0x1213 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x396 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x751 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x765 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x789 SWAP2 SWAP1 PUSH2 0x10F7 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x7B1 JUMPI DUP1 DUP4 PUSH1 0x0 SLOAD PUSH2 0x7A0 SWAP2 SWAP1 PUSH2 0x11D6 JUMP JUMPDEST PUSH2 0x7AA SWAP2 SWAP1 PUSH2 0x119B JUMP JUMPDEST SWAP2 POP PUSH2 0x7B5 JUMP JUMPDEST DUP3 SWAP2 POP JUMPDEST PUSH2 0x7BF CALLER DUP4 PUSH2 0xE62 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x853 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x867 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x88B SWAP2 SWAP1 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x8F6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F46524F4D5F4641494C4544000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x966 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8ED JUMP JUMPDEST PUSH1 0x0 PUSH2 0x970 PUSH2 0x4F3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP3 DUP13 SWAP3 DUP13 SWAP3 DUP13 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x9CB DUP4 PUSH2 0x122A JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xA6C SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAF5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xB70 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0xBD6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8ED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCD8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCEC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD10 SWAP2 SWAP1 PUSH2 0x10F7 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP PUSH2 0xD20 DUP5 DUP4 PUSH2 0x11D6 JUMP JUMPDEST PUSH2 0xD2A SWAP2 SWAP1 PUSH2 0x119B JUMP JUMPDEST SWAP2 POP PUSH2 0xD36 CALLER DUP5 PUSH2 0xEDA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDD8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDFC SWAP2 SWAP1 PUSH2 0x10BC JUMP JUMPDEST PUSH2 0x8F6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x8ED JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0xE73 SWAP2 SWAP1 PUSH2 0x1183 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0xF0F SWAP1 DUP5 SWAP1 PUSH2 0x1213 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP1 SLOAD DUP3 SWAP1 SUB DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0xECE JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xF89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xFA0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFA9 DUP3 PUSH2 0xF65 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xFC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xFCC DUP4 PUSH2 0xF65 JUMP JUMPDEST SWAP2 POP PUSH2 0xFDA PUSH1 0x20 DUP5 ADD PUSH2 0xF65 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xFF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1001 DUP5 PUSH2 0xF65 JUMP JUMPDEST SWAP3 POP PUSH2 0x100F PUSH1 0x20 DUP6 ADD PUSH2 0xF65 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x103A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1043 DUP9 PUSH2 0xF65 JUMP JUMPDEST SWAP7 POP PUSH2 0x1051 PUSH1 0x20 DUP10 ADD PUSH2 0xF65 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1075 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x10A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x10AE DUP4 PUSH2 0xF65 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xFA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x113D JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x1121 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x114F JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1196 JUMPI PUSH2 0x1196 PUSH2 0x1263 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x11D1 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x120E JUMPI PUSH2 0x120E PUSH2 0x1263 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1225 JUMPI PUSH2 0x1225 PUSH2 0x1263 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x125C JUMPI PUSH2 0x125C PUSH2 0x1263 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC 0x2F DUP3 GT 0xD7 0xD2 0xC8 0xA8 0xDD DUP4 DUP13 0x49 PUSH29 0x375D335873E4E46C37316857643F3B672F798064736F6C634300080700 CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4A 0xBE PUSH11 0x851FF9053ADB525B5E8228 0xE0 SWAP12 SDIV MSIZE 0xDF MULMOD 0x26 PUSH10 0xD4ED8C2308F8B337A9FC PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "911:3663:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1195:43;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;2639:42:64;2627:55;;;2609:74;;2597:2;2582:18;1195:43:32;;;;;;;1245:39;;;;;1405:35;;;;;1343:56;;;;;2308:2264;;;;;;:::i;:::-;;:::i;1290:47::-;;;;;2308:2264;2370:7;2397:10;:33;2419:10;2397:33;;2389:55;;;;;;;6557:2:64;2389:55:32;;;6539:21:64;6596:1;6576:18;;;6569:29;6634:11;6614:18;;;6607:39;6663:18;;2389:55:32;;;;;;;;;2462:40;:26;;;2500:1;2462:26;;;;;;;;;;;;:40;2454:62;;;;;;;5875:2:64;2454:62:32;;;5857:21:64;5914:1;5894:18;;;5887:29;5952:11;5932:18;;;5925:39;5981:18;;2454:62:32;5673:332:64;2454:62:32;2527:14;2544:7;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2527:33;;2570:14;2587:7;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2640:37;;;3500:42:64;3569:15;;;2640:37:32;;;3551:34:64;3621:15;;3601:18;;;3594:43;;;;2667:2:32;3653:18:64;;;3646:45;2614:23:32;3707:18:64;;;3700:50;;;2570:33:32;;-1:-1:-1;3462:19:64;;2640:37:32;;;;;;;;;;;;;;2778:21;;2640:37;2778:21;;;2737:63;;;;;;4652:25:64;2640:37:32;-1:-1:-1;2688:25:32;;2737:26;:40;;;;;4625:18:64;;2737:63:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2688:113;-1:-1:-1;2871:27:32;;;2867:161;;2942:74;;;;;:25;:14;:25;;;;:74;;2976:26;;3005:10;;2942:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2914:103;;2867:161;3116:38;;;;;:17;3142:10;2627:55:64;;3116:38:32;;;2609:74:64;-1:-1:-1;;3116:17:32;;;;;;2582:18:64;;3116:38:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3096:58;-1:-1:-1;3169:14:32;3165:65;;-1:-1:-1;3214:4:32;2308:2264;-1:-1:-1;;;;;2308:2264:32:o;3165:65::-;3301:70;;;;;:20;3330:10;4042:15:64;;3301:70:32;;;4024:34:64;3301:20:32;;4074:18:64;;;4067:43;;;4126:18;;;4119:34;;;3301:20:32;;;3936:18:64;;3301:70:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3418:28:32;;;;;:12;3439:5;2627:55:64;;3418:28:32;;;2609:74:64;-1:-1:-1;;;;3418:12:32;;;;;2582:18:64;;3418:28:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3457:64;;;;;:13;3040:15:64;;;3457:64:32;;;3022:34:64;3457:5:32;:13;;3072:18:64;;;3065:43;;;3144:15;;;3124:18;;;3117:43;3176:18;;;3169:34;;;3519:1:32;3219:19:64;;;3212:35;3381:65:32;;-1:-1:-1;3381:65:32;;-1:-1:-1;3457:13:32;;2933:19:64;;3457:64:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;3531:64:32;;;;;:13;3040:15:64;;;3531:64:32;;;3022:34:64;3531:5:32;:13;;3072:18:64;;;3065:43;;;3144:15;;;3124:18;;;3117:43;3176:18;;;3169:34;;;3593:1:32;3219:19:64;;;3212:35;3531:13:32;;;2933:19:64;;3531:64:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;3610:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:23;3606:505;;3726:23;3751;3780:4;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3725:79:32;;-1:-1:-1;3725:79:32;-1:-1:-1;3818:20:32;3860:7;3842:14;3849:7;3842:4;:14;:::i;:::-;3841:26;;;;:::i;:::-;3818:49;-1:-1:-1;3881:20:32;3931:15;3905:22;3912:15;3905:4;:22;:::i;:::-;3904:42;;;;:::i;:::-;3881:65;-1:-1:-1;3960:19:32;3881:65;3983:18;3989:12;3983:3;:18;:::i;:::-;3982:35;;;;:::i;:::-;3960:57;;4053:4;4039:11;:18;:40;;;;;4076:3;4061:11;:18;;4039:40;4031:69;;;;;;;6212:2:64;4031:69:32;;;6194:21:64;6251:2;6231:18;;;6224:30;6290:18;6270;;;6263:46;6326:18;;4031:69:32;6010:340:64;4031:69:32;3635:476;;;;;3606:505;4179:25;4245:4;4252:10;4264:9;4215:59;;;;;:::i;:::-;3973:42:64;4042:15;;;4024:34;;4094:15;;;;4089:2;4074:18;;4067:43;4141:2;4126:18;;4119:34;3951:2;3936:18;4215:59:32;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4371:29:32;;;4361:9;2627:55:64;;;4371:29:32;;;2609:74:64;4179:96:32;;-1:-1:-1;4361:9:32;;;;;;2582:18:64;4371:29:32;;;;;;;;;;;;4361:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4412:27:32;;;;:8;:27;;;;;;;;;;;:43;;;;;;;;;;;;;4471:59;;4412:27;;:43;;4471:59;;;;;;;4548:17;2308:2264;-1:-1:-1;;;;;;;;;2308:2264:32:o;-1:-1:-1:-;;;;;;;;:::o;14:247:64:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;:::-;250:5;14:247;-1:-1:-1;;;14:247:64:o;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:277::-;589:6;642:2;630:9;621:7;617:23;613:32;610:52;;;658:1;655;648:12;610:52;690:9;684:16;743:5;736:13;729:21;722:5;719:32;709:60;;765:1;762;755:12;1082:184;1152:6;1205:2;1193:9;1184:7;1180:23;1176:32;1173:52;;;1221:1;1218;1211:12;1173:52;-1:-1:-1;1244:16:64;;1082:184;-1:-1:-1;1082:184:64:o;1271:245::-;1350:6;1358;1411:2;1399:9;1390:7;1386:23;1382:32;1379:52;;;1427:1;1424;1417:12;1379:52;-1:-1:-1;;1450:16:64;;1506:2;1491:18;;;1485:25;1450:16;;1485:25;;-1:-1:-1;1271:245:64:o;1521:402::-;1608:6;1616;1624;1677:2;1665:9;1656:7;1652:23;1648:32;1645:52;;;1693:1;1690;1683:12;1645:52;1722:9;1716:16;1706:26;;1772:2;1761:9;1757:18;1751:25;1741:35;;1819:2;1808:9;1804:18;1798:25;1863:10;1856:5;1852:22;1845:5;1842:33;1832:61;;1889:1;1886;1879:12;1832:61;1912:5;1902:15;;;1521:402;;;;;:::o;1928:530::-;1969:3;2007:5;2001:12;2034:6;2029:3;2022:19;2059:1;2069:162;2083:6;2080:1;2077:13;2069:162;;;2145:4;2201:13;;;2197:22;;2191:29;2173:11;;;2169:20;;2162:59;2098:12;2069:162;;;2249:6;2246:1;2243:13;2240:87;;;2315:1;2308:4;2299:6;2294:3;2290:16;2286:27;2279:38;2240:87;-1:-1:-1;2372:2:64;2360:15;2377:66;2356:88;2347:98;;;;2447:4;2343:109;;1928:530;-1:-1:-1;;1928:530:64:o;4164:337::-;4351:42;4343:6;4339:55;4328:9;4321:74;4431:2;4426;4415:9;4411:18;4404:30;4302:4;4451:44;4491:2;4480:9;4476:18;4468:6;4451:44;:::i;:::-;4443:52;4164:337;-1:-1:-1;;;;4164:337:64:o;4688:217::-;4835:2;4824:9;4817:21;4798:4;4855:44;4895:2;4884:9;4880:18;4872:6;4855:44;:::i;6692:274::-;6732:1;6758;6748:189;;6793:77;6790:1;6783:88;6894:4;6891:1;6884:15;6922:4;6919:1;6912:15;6748:189;-1:-1:-1;6951:9:64;;6692:274::o;6971:382::-;7011:7;7137:1;7069:66;7065:74;7062:1;7059:81;7054:1;7047:9;7040:17;7036:105;7033:285;;;7174:77;7171:1;7164:88;7275:4;7272:1;7265:15;7303:4;7300:1;7293:15;7033:285;-1:-1:-1;7338:9:64;;6971:382::o;7358:154::-;7444:42;7437:5;7433:54;7426:5;7423:65;7413:93;;7502:1;7499;7492:12;7413:93;7358:154;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "1950400",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "bento()": "infinite",
                "constantProductPoolFactory()": "infinite",
                "masterChef()": "infinite",
                "masterDeployer()": "infinite",
                "migrate(address)": "infinite",
                "migrated(address)": "2508"
              }
            },
            "methodIdentifiers": {
              "bento()": "4da31827",
              "constantProductPoolFactory()": "93e44497",
              "masterChef()": "575a86b2",
              "masterDeployer()": "cf58879a",
              "migrate(address)": "ce5494bb",
              "migrated(address)": "4ba0a5ee"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IBentoBoxMinimal\",\"name\":\"_bento\",\"type\":\"address\"},{\"internalType\":\"contract IMasterDeployer\",\"name\":\"_masterDeployer\",\"type\":\"address\"},{\"internalType\":\"contract IPoolFactory\",\"name\":\"_constantProductPoolFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_masterChef\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldPool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newPool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"intermediaryToken\",\"type\":\"address\"}],\"name\":\"Migrate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"bento\",\"outputs\":[{\"internalType\":\"contract IBentoBoxMinimal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"constantProductPoolFactory\",\"outputs\":[{\"internalType\":\"contract IPoolFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterChef\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterDeployer\",\"outputs\":[{\"internalType\":\"contract IMasterDeployer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUniswapV2Minimal\",\"name\":\"oldPool\",\"type\":\"address\"}],\"name\":\"migrate\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"migrated\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"migrate(address)\":{\"details\":\"Since MasterChef has a requierment to receive the same amount of \\\"LP\\\" tokens back after migration we use an intermediary token so we can mint the desired balance. Anfer unstaking users can call redeem() on the intermediary token to receive their share of the LP tokens of the new Trident constant product pool.\",\"params\":{\"oldPool\":\"Legacy SushiSwap pool.\"}}},\"stateVariables\":{\"migrated\":{\"details\":\"Intermediary token to new LP token mapping.Used to prevent subsequent calls to masterchef's migrate function with the same PID.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"migrate(address)\":{\"notice\":\"Method to migrate MasterChef's liquidity form the legacy SushiSwap AMM to the Trident constant product pool.\"}},\"notice\":\"Sushiswap's master chef contracts which distribute rewards to LP token holders have the option to migrate liquidity. We can set this contract as the migrator on the master chef contracts to migrate LP positions from the legacy to the new Trident constant product pools. After the migrator is set anyone can call the migrate() function (once per pool) on the master chef contract. Used by MasterChef / MasterChefV2 / MiniChef. \",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/migration/Migrator.sol\":\"Migrator\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IConstantProductPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"./IPool.sol\\\";\\n\\ninterface IConstantProductPool is IPool, IERC20 {\\n    function getNativeReserves()\\n        external\\n        view\\n        returns (\\n            uint256 _nativeReserve0,\\n            uint256 _nativeReserve1,\\n            uint32\\n        );\\n}\\n\",\"keccak256\":\"0x4fb63fe421b21adee3d8bb37e7a022d33c635618f3d3e346a9be34ff73f4c5d8\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @dev Use a library or custom safeTransfer{From} functions when dealing with unknown tokens!\\ninterface IERC20 {\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    function totalSupply() external view returns (uint256);\\n\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    function approve(address spender, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x41da4ec4920467246a08c3d7d653f1327e8508e6bc29e946232cf87cea7e283f\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPoolFactory.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployment interface.\\ninterface IPoolFactory {\\n    function deployPool(bytes calldata _deployData) external returns (address pool);\\n\\n    function configAddress(bytes32 data) external returns (address pool);\\n}\\n\",\"keccak256\":\"0x03b9677a7914f97ca3ae57deb690cb80d0f1ef4d3541573b4dee6d3cebd5df2e\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IUniswapV2Minimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\n\\n/// @notice Minimal Uniswap V2 LP interface.\\ninterface IUniswapV2Minimal is IERC20 {\\n    function token0() external view returns (address);\\n\\n    function token1() external view returns (address);\\n\\n    function burn(address to) external returns (uint256 amount0, uint256 amount1);\\n}\\n\",\"keccak256\":\"0x674f8b036659f1c29d1c5a7e85f3067949f3a3239bc5cf17f476dc83721a0279\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/migration/IntermediaryToken.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../pool/TridentERC20.sol\\\";\\nimport \\\"../interfaces/IERC20.sol\\\";\\n\\n/// @notice Intermediary token users who are staked in MasterChef will receive after migration.\\n/// Can be redeemed for the LP token of the new pool.\\ncontract IntermediaryToken is TridentERC20 {\\n    /// @dev Liquidity token of the Trident constant product pool.\\n    IERC20 public immutable lpToken;\\n\\n    constructor(\\n        address _lpToken,\\n        address _recipient,\\n        uint256 _amount\\n    ) {\\n        lpToken = IERC20(_lpToken);\\n        _mint(_recipient, _amount);\\n    }\\n\\n    /// @dev Since we might be rewarding the intermediary token for some time we allow users to mint it.\\n    function deposit(uint256 amount) public returns (uint256 minted) {\\n        uint256 availableLpTokens = lpToken.balanceOf(address(this));\\n        if (availableLpTokens != 0) {\\n            minted = (totalSupply * amount) / availableLpTokens;\\n        } else {\\n            minted = amount;\\n        }\\n        _mint(msg.sender, minted);\\n        require(lpToken.transferFrom(msg.sender, address(this), amount), \\\"TRANSFER_FROM_FAILED\\\");\\n    }\\n\\n    function redeem(uint256 amount) public returns (uint256 claimed) {\\n        uint256 availableLpTokens = lpToken.balanceOf(address(this));\\n        claimed = (availableLpTokens * amount) / totalSupply;\\n        _burn(msg.sender, amount);\\n        require(lpToken.transfer(msg.sender, claimed), \\\"TRANSFER_FAILED\\\");\\n    }\\n}\\n\",\"keccak256\":\"0x95f11772fa1208f90cea46d491cc3a674e0ede73ceb7d499c2e2f2fd1ba05115\",\"license\":\"GPL-3.0-or-later\"},\"contracts/migration/Migrator.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./IntermediaryToken.sol\\\";\\nimport \\\"../interfaces/IMasterDeployer.sol\\\";\\nimport \\\"../interfaces/IBentoBoxMinimal.sol\\\";\\nimport \\\"../interfaces/IPoolFactory.sol\\\";\\nimport \\\"../interfaces/IPool.sol\\\";\\nimport \\\"../interfaces/IERC20.sol\\\";\\nimport \\\"../interfaces/IConstantProductPool.sol\\\";\\nimport \\\"../interfaces/IUniswapV2Minimal.sol\\\";\\n\\n/// @notice Trident pool migrator contract for legacy SushiSwap.\\n/** Sushiswap's master chef contracts which distribute rewards to LP token holders have the option to migrate liquidity.\\n    We can set this contract as the migrator on the master chef contracts to migrate LP positions from the legacy to the new Trident\\n    constant product pools. After the migrator is set anyone can call the migrate() function (once per pool) on the master chef contract.\\n    Used by MasterChef / MasterChefV2 / MiniChef. */\\ncontract Migrator {\\n    event Migrate(address indexed oldPool, address indexed newPool, address indexed intermediaryToken);\\n\\n    /// @dev Intermediary token to new LP token mapping.\\n    /// @dev Used to prevent subsequent calls to masterchef's migrate function with the same PID.\\n    mapping(address => address) public migrated;\\n\\n    IBentoBoxMinimal public immutable bento;\\n    IMasterDeployer public immutable masterDeployer;\\n    IPoolFactory public immutable constantProductPoolFactory;\\n    address public immutable masterChef;\\n\\n    constructor(\\n        IBentoBoxMinimal _bento,\\n        IMasterDeployer _masterDeployer,\\n        IPoolFactory _constantProductPoolFactory,\\n        address _masterChef\\n    ) {\\n        bento = _bento;\\n        masterDeployer = _masterDeployer;\\n        constantProductPoolFactory = _constantProductPoolFactory;\\n        masterChef = _masterChef;\\n    }\\n\\n    /// @notice Method to migrate MasterChef's liquidity form the legacy SushiSwap AMM to the Trident constant product pool.\\n    /// @param oldPool Legacy SushiSwap pool.\\n    /// @dev Since MasterChef has a requierment to receive the same amount of \\\"LP\\\" tokens back after migration we use an\\n    /// intermediary token so we can mint the desired balance. Anfer unstaking users can call redeem() on the intermediary\\n    /// token to receive their share of the LP tokens of the new Trident constant product pool.\\n    function migrate(IUniswapV2Minimal oldPool) external returns (address) {\\n        require(msg.sender == address(masterChef), \\\"ONLY_CHEF\\\");\\n        require(migrated[address(oldPool)] == address(0), \\\"ONLY_ONCE\\\");\\n\\n        address token0 = oldPool.token0();\\n        address token1 = oldPool.token1();\\n\\n        bytes memory deployData = abi.encode(token0, token1, 30, false);\\n\\n        IConstantProductPool pool = IConstantProductPool(constantProductPoolFactory.configAddress(keccak256(deployData)));\\n\\n        // We deploy the pool if it doesn't exist yet.\\n        if (address(pool) == address(0)) {\\n            pool = IConstantProductPool(masterDeployer.deployPool(address(constantProductPoolFactory), deployData));\\n        }\\n\\n        // We are migrating all of master chef's balance.\\n        uint256 lpBalance = oldPool.balanceOf(address(masterChef));\\n\\n        if (lpBalance == 0) {\\n            return address(pool);\\n        }\\n\\n        // Remove the liquidity and send assets to BentoBox.\\n        oldPool.transferFrom(address(masterChef), address(oldPool), lpBalance);\\n        (uint256 amount0, uint256 amount1) = oldPool.burn(address(bento));\\n\\n        bento.deposit(token0, address(bento), address(pool), amount0, 0);\\n        bento.deposit(token1, address(bento), address(pool), amount1, 0);\\n\\n        if (pool.totalSupply() != 0) {\\n            // We require the pools' prices to differ by no more than 0.5%.\\n            (uint256 _nativeReserve0, uint256 _nativeReserve1, ) = pool.getNativeReserves();\\n            uint256 oldPoolPrice = (1e18 * amount0) / amount1;\\n            uint256 newPoolPrice = (1e18 * _nativeReserve0) / _nativeReserve1;\\n            uint256 priceChange = (1e3 * oldPoolPrice) / newPoolPrice;\\n            require(priceChange < 1005 && priceChange >= 995, \\\"PRICE_DIFFERENCE\\\");\\n        }\\n\\n        // We mint the intermediary token to Master Chef.\\n        address intermediaryToken = address(new IntermediaryToken(address(pool), masterChef, lpBalance));\\n\\n        // The new Trident pool mints liquidity to the intermediary token.\\n        pool.mint(abi.encode(intermediaryToken));\\n\\n        migrated[intermediaryToken] = address(pool);\\n\\n        emit Migrate(address(oldPool), address(pool), intermediaryToken);\\n\\n        return intermediaryToken;\\n    }\\n}\\n\",\"keccak256\":\"0x123d67bd178e8c39460edd8d126673dae986de7ba3c63c1db1a8e7d907ac9cd1\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/TridentERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool ERC-20 with EIP-2612 extension.\\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol,\\n/// License-Identifier: AGPL-3.0-only.\\nabstract contract TridentERC20 {\\n    event Transfer(address indexed sender, address indexed recipient, uint256 amount);\\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\\n\\n    string public constant name = \\\"Sushi LP Token\\\";\\n    string public constant symbol = \\\"SLP\\\";\\n    uint8 public constant decimals = 18;\\n\\n    uint256 public totalSupply;\\n    /// @notice owner -> balance mapping.\\n    mapping(address => uint256) public balanceOf;\\n    /// @notice owner -> spender -> allowance mapping.\\n    mapping(address => mapping(address => uint256)) public allowance;\\n\\n    /// @notice Chain Id at this contract's deployment.\\n    uint256 internal immutable DOMAIN_SEPARATOR_CHAIN_ID;\\n    /// @notice EIP-712 typehash for this contract's domain at deployment.\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n    /// @notice EIP-712 typehash for this contract's {permit} struct.\\n    bytes32 public constant PERMIT_TYPEHASH =\\n        keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n    /// @notice owner -> nonce mapping used in {permit}.\\n    mapping(address => uint256) public nonces;\\n\\n    constructor() {\\n        DOMAIN_SEPARATOR_CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _calculateDomainSeparator();\\n    }\\n\\n    function _calculateDomainSeparator() internal view returns (bytes32 domainSeperator) {\\n        domainSeperator = keccak256(\\n            abi.encode(\\n                keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"),\\n                keccak256(bytes(name)),\\n                keccak256(bytes(\\\"1\\\")),\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    /// @notice EIP-712 typehash for this contract's domain.\\n    function DOMAIN_SEPARATOR() public view returns (bytes32 domainSeperator) {\\n        domainSeperator = block.chainid == DOMAIN_SEPARATOR_CHAIN_ID ? _DOMAIN_SEPARATOR : _calculateDomainSeparator();\\n    }\\n\\n    /// @notice Approves `amount` from `msg.sender` to be spent by `spender`.\\n    /// @param spender Address of the party that can pull tokens from `msg.sender`'s account.\\n    /// @param amount The maximum collective `amount` that `spender` can pull.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function approve(address spender, uint256 amount) external returns (bool) {\\n        allowance[msg.sender][spender] = amount;\\n        emit Approval(msg.sender, spender, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `msg.sender` to `recipient`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transfer(address recipient, uint256 amount) external returns (bool) {\\n        balanceOf[msg.sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(msg.sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\\n    /// @param sender Address to pull tokens `from`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool) {\\n        if (allowance[sender][msg.sender] != type(uint256).max) {\\n            allowance[sender][msg.sender] -= amount;\\n        }\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Triggers an approval from `owner` to `spender`.\\n    /// @param owner The address to approve from.\\n    /// @param spender The address to be approved.\\n    /// @param amount The number of tokens that are approved (2^256-1 means infinite).\\n    /// @param deadline The time at which to expire the signature.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        require(deadline >= block.timestamp, \\\"PERMIT_DEADLINE_EXPIRED\\\");\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                \\\"\\\\x19\\\\x01\\\",\\n                DOMAIN_SEPARATOR(),\\n                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))\\n            )\\n        );\\n        address recoveredAddress = ecrecover(digest, v, r, s);\\n        require(recoveredAddress != address(0) && recoveredAddress == owner, \\\"INVALID_PERMIT_SIGNATURE\\\");\\n        allowance[recoveredAddress][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    function _mint(address recipient, uint256 amount) internal {\\n        totalSupply += amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(address(0), recipient, amount);\\n    }\\n\\n    function _burn(address sender, uint256 amount) internal {\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from underflow - users won't ever\\n        // have a balance larger than `totalSupply`.\\n        unchecked {\\n            totalSupply -= amount;\\n        }\\n        emit Transfer(sender, address(0), amount);\\n    }\\n}\\n\",\"keccak256\":\"0xb249a6d507f6911b7de4f9655a9736710fac9847982ad9afa18650db9a84794d\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 5080,
                "contract": "contracts/migration/Migrator.sol:Migrator",
                "label": "migrated",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_address,t_address)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_mapping(t_address,t_address)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "migrate(address)": {
                "notice": "Method to migrate MasterChef's liquidity form the legacy SushiSwap AMM to the Trident constant product pool."
              }
            },
            "notice": "Sushiswap's master chef contracts which distribute rewards to LP token holders have the option to migrate liquidity. We can set this contract as the migrator on the master chef contracts to migrate LP positions from the legacy to the new Trident constant product pools. After the migrator is set anyone can call the migrate() function (once per pool) on the master chef contract. Used by MasterChef / MasterChefV2 / MiniChef. ",
            "version": 1
          }
        }
      },
      "contracts/migration/TridentSushiRollCP.sol": {
        "TridentSushiRollCP": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "_bentoBox",
                  "type": "address"
                },
                {
                  "internalType": "contract IPoolFactory",
                  "name": "_poolFactory",
                  "type": "address"
                },
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "MinimumOutput",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "PermitFailed",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                }
              ],
              "name": "batch",
              "outputs": [
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IUniswapV2Minimal",
                  "name": "pair",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "swapFee",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "twapSupport",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "minReceived",
                  "type": "uint256"
                }
              ],
              "name": "migrate",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitThis",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expiry",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitThisAllowed",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "batch(bytes[])": {
                "details": "The `msg.value` should not be trusted for any method callable from this function.",
                "params": {
                  "data": "ABI-encoded params for each of the calls to make to this contract."
                },
                "returns": {
                  "results": "The results from each of the calls passed in via `data`."
                }
              },
              "migrate(address,uint256,uint256,bool,uint256)": {
                "details": "If the pool with the current conditions doesn't exist it will be deployed. ",
                "params": {
                  "amount": "Liquidity amount (Lp token balance) to be migrated.",
                  "minReceived": "Slippage protection for minting liquidity on the Trident CP pool.",
                  "pair": "Uniswap V2 style liquidity pool address.",
                  "swapFee": "Swap fee of the Trident CP pool we are migrating into.",
                  "twapSupport": "Whether the Trident CP pool we are migrating into supports twap oracles."
                }
              },
              "permitThis(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "amount": "Token amount to grant spending right over.",
                  "deadline": "Termination for signed approval (UTC timestamp in seconds).",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "token": "Address of ERC-20 token.",
                  "v": "The recovery byte of the signature."
                }
              },
              "permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "expiry": "Termination for signed approval - UTC timestamp in seconds.",
                  "nonce": "Token owner's nonce - increases at each call to {permit}.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "token": "Address of ERC-20 token.",
                  "v": "The recovery byte of the signature."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_5447": {
                  "entryPoint": null,
                  "id": 5447,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_contract$_IBentoBoxMinimal_$2253t_contract$_IPoolFactory_$2468t_contract$_IMasterDeployer_$2356_fromMemory": {
                  "entryPoint": 86,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "validator_revert_contract_IBentoBoxMinimal": {
                  "entryPoint": 163,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:813:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "199:458:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "245:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "254:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "257:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "247:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "247:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "247:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "220:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "229:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "216:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "216:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "241:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "212:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "212:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "209:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "270:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "289:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "283:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "274:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "351:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_IBentoBoxMinimal",
                                  "nodeType": "YulIdentifier",
                                  "src": "308:42:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "308:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "308:49:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "366:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "376:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "366:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "390:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "415:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "426:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "411:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "411:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "405:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "405:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "394:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "482:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_IBentoBoxMinimal",
                                  "nodeType": "YulIdentifier",
                                  "src": "439:42:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "439:51:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "439:51:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "499:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "509:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "499:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "525:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "550:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "561:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "546:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "546:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "540:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "529:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "617:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_IBentoBoxMinimal",
                                  "nodeType": "YulIdentifier",
                                  "src": "574:42:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "574:51:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "574:51:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "634:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "644:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "634:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_IBentoBoxMinimal_$2253t_contract$_IPoolFactory_$2468t_contract$_IMasterDeployer_$2356_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "149:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "160:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "172:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "180:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "188:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:643:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "725:86:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "789:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "798:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "801:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "791:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "791:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "791:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "748:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "759:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "774:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "779:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "770:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "770:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "783:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "766:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "766:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "755:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "755:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "745:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "745:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "738:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "738:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "735:70:64"
                            }
                          ]
                        },
                        "name": "validator_revert_contract_IBentoBoxMinimal",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "714:5:64",
                            "type": ""
                          }
                        ],
                        "src": "662:149:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_contract$_IBentoBoxMinimal_$2253t_contract$_IPoolFactory_$2468t_contract$_IMasterDeployer_$2356_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_contract_IBentoBoxMinimal(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_contract_IBentoBoxMinimal(value_1)\n        value1 := value_1\n        let value_2 := mload(add(headStart, 64))\n        validator_revert_contract_IBentoBoxMinimal(value_2)\n        value2 := value_2\n    }\n    function validator_revert_contract_IBentoBoxMinimal(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60e060405234801561001057600080fd5b506040516111d33803806111d383398101604081905261002f91610056565b6001600160601b0319606093841b811660805291831b821660a05290911b1660c0526100bb565b60008060006060848603121561006b57600080fd5b8351610076816100a3565b6020850151909350610087816100a3565b6040850151909250610098816100a3565b809150509250925092565b6001600160a01b03811681146100b857600080fd5b50565b60805160601c60a05160601c60c05160601c6110cb610108600039600061068101526000818161059601526106ae015260008181610818015281816108e501526109ca01526110cb6000f3fe60806040526004361061003f5760003560e01c80631e897afb14610044578063776319811461006d578063a9b62c231461008f578063bd2aded2146100af575b600080fd5b610057610052366004610bdc565b6100dd565b6040516100649190610e75565b60405180910390f35b34801561007957600080fd5b5061008d610088366004610b7a565b610258565b005b34801561009b57600080fd5b5061008d6100aa366004610b7a565b61038e565b3480156100bb57600080fd5b506100cf6100ca366004610c6e565b6103ec565b604051908152602001610064565b60608167ffffffffffffffff8111156100f8576100f8611033565b60405190808252806020026020018201604052801561012b57816020015b60608152602001906001900390816101165790505b50905060005b82811015610251576000803086868581811061014f5761014f611004565b90506020028101906101619190610f08565b60405161016f929190610e12565b600060405180830381855af49150503d80600081146101aa576040519150601f19603f3d011682016040523d82523d6000602084013e6101af565b606091505b50915091508161021e576044815110156101c857600080fd5b600481019050808060200190518101906101e29190610cc0565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102159190610ef5565b60405180910390fd5b8084848151811061023157610231611004565b60200260200101819052505050808061024990610fa4565b915050610131565b5092915050565b6040513360248201523060448201526064810186905260848101859052600160a482015260ff841660c482015260e48101839052610104810182905260009073ffffffffffffffffffffffffffffffffffffffff881690638fcbaf0c90610124015b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516103089190610e22565b6000604051808303816000865af19150503d8060008114610345576040519150601f19603f3d011682016040523d82523d6000602084013e61034a565b606091505b5050905080610385576040517fb78cb0dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b604051336024820152306044820152606481018690526084810185905260ff841660a482015260c4810183905260e4810182905260009073ffffffffffffffffffffffffffffffffffffffff88169063d505accf90610104016102ba565b6000808673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561043557600080fd5b505afa158015610449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046d9190610b56565b905060008773ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156104b757600080fd5b505afa1580156104cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ef9190610b56565b6040805173ffffffffffffffffffffffffffffffffffffffff808616602083015283169181019190915260608101889052861515608082015290915060009060a001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052805160208201207ff6ab6d99000000000000000000000000000000000000000000000000000000008352600483015291506000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063f6ab6d9990602401602060405180830381600087803b1580156105ef57600080fd5b505af1158015610603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106279190610b56565b905073ffffffffffffffffffffffffffffffffffffffff811661072d576040517f250558dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063250558dc906106d8907f0000000000000000000000000000000000000000000000000000000000000000908690600401610e3e565b602060405180830381600087803b1580156106f257600080fd5b505af1158015610706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072a9190610b56565b90505b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8b1660248201819052604482018b9052906323b872dd90606401602060405180830381600087803b1580156107a257600080fd5b505af11580156107b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107da9190610c51565b506040517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260009182918d16906389afcb44906024016040805180830381600087803b15801561086857600080fd5b505af115801561087c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a09190610da4565b6040517f02b9446c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301819052908716604483015260648201849052600060848301529294509092506302b9446c9060a4016040805180830381600087803b15801561094b57600080fd5b505af115801561095f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109839190610da4565b50506040517f02b9446c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301527f000000000000000000000000000000000000000000000000000000000000000081166024830181905290851660448301526064820183905260006084830152906302b9446c9060a4016040805180830381600087803b158015610a2b57600080fd5b505af1158015610a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a639190610da4565b50506040805133602082015273ffffffffffffffffffffffffffffffffffffffff851691637ba0e2e791016040516020818303038152906040526040518263ffffffff1660e01b8152600401610ab99190610ef5565b602060405180830381600087803b158015610ad357600080fd5b505af1158015610ae7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0b9190610d8b565b965087871015610b47576040517f9b9d48e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505095945050505050565b600060208284031215610b6857600080fd5b8151610b7381611062565b9392505050565b60008060008060008060c08789031215610b9357600080fd5b8635610b9e81611062565b95506020870135945060408701359350606087013560ff81168114610bc257600080fd5b9598949750929560808101359460a0909101359350915050565b60008060208385031215610bef57600080fd5b823567ffffffffffffffff80821115610c0757600080fd5b818501915085601f830112610c1b57600080fd5b813581811115610c2a57600080fd5b8660208260051b8501011115610c3f57600080fd5b60209290920196919550909350505050565b600060208284031215610c6357600080fd5b8151610b7381611087565b600080600080600060a08688031215610c8657600080fd5b8535610c9181611062565b945060208601359350604086013592506060860135610caf81611087565b949793965091946080013592915050565b600060208284031215610cd257600080fd5b815167ffffffffffffffff80821115610cea57600080fd5b818401915084601f830112610cfe57600080fd5b815181811115610d1057610d10611033565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610d5657610d56611033565b81604052828152876020848701011115610d6f57600080fd5b610d80836020830160208801610f74565b979650505050505050565b600060208284031215610d9d57600080fd5b5051919050565b60008060408385031215610db757600080fd5b505080516020909101519092909150565b60008151808452610de0816020860160208601610f74565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8183823760009101908152919050565b60008251610e34818460208701610f74565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610e6d6040830184610dc8565b949350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610ee8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452610ed6858351610dc8565b94509285019290850190600101610e9c565b5092979650505050505050565b602081526000610b736020830184610dc8565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610f3d57600080fd5b83018035915067ffffffffffffffff821115610f5857600080fd5b602001915036819003821315610f6d57600080fd5b9250929050565b60005b83811015610f8f578181015183820152602001610f77565b83811115610f9e576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610ffd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461108457600080fd5b50565b801515811461108457600080fdfea264697066735822122011b09e4f6bf283f969a06af36e08da0b1c9cad48e7f98ea1f3cc6aebbe0eb4c964736f6c63430008070033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x11D3 CODESIZE SUB DUP1 PUSH2 0x11D3 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x56 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP4 DUP5 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 DUP4 SHL DUP3 AND PUSH1 0xA0 MSTORE SWAP1 SWAP2 SHL AND PUSH1 0xC0 MSTORE PUSH2 0xBB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x76 DUP2 PUSH2 0xA3 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0x87 DUP2 PUSH2 0xA3 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x98 DUP2 PUSH2 0xA3 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x10CB PUSH2 0x108 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x681 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x596 ADD MSTORE PUSH2 0x6AE ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x818 ADD MSTORE DUP2 DUP2 PUSH2 0x8E5 ADD MSTORE PUSH2 0x9CA ADD MSTORE PUSH2 0x10CB PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1E897AFB EQ PUSH2 0x44 JUMPI DUP1 PUSH4 0x77631981 EQ PUSH2 0x6D JUMPI DUP1 PUSH4 0xA9B62C23 EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0xBD2ADED2 EQ PUSH2 0xAF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x57 PUSH2 0x52 CALLDATASIZE PUSH1 0x4 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x64 SWAP2 SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8D PUSH2 0x88 CALLDATASIZE PUSH1 0x4 PUSH2 0xB7A JUMP JUMPDEST PUSH2 0x258 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8D PUSH2 0xAA CALLDATASIZE PUSH1 0x4 PUSH2 0xB7A JUMP JUMPDEST PUSH2 0x38E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCF PUSH2 0xCA CALLDATASIZE PUSH1 0x4 PUSH2 0xC6E JUMP JUMPDEST PUSH2 0x3EC JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x64 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF8 JUMPI PUSH2 0xF8 PUSH2 0x1033 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x12B JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x116 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x14F JUMPI PUSH2 0x14F PUSH2 0x1004 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x161 SWAP2 SWAP1 PUSH2 0xF08 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16F SWAP3 SWAP2 SWAP1 PUSH2 0xE12 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1AA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1AF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x21E JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1E2 SWAP2 SWAP1 PUSH2 0xCC0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x215 SWAP2 SWAP1 PUSH2 0xEF5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x231 JUMPI PUSH2 0x231 PUSH2 0x1004 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP DUP1 DUP1 PUSH2 0x249 SWAP1 PUSH2 0xFA4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x131 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xFF DUP5 AND PUSH1 0xC4 DUP3 ADD MSTORE PUSH1 0xE4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH2 0x104 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0x8FCBAF0C SWAP1 PUSH2 0x124 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x308 SWAP2 SWAP1 PUSH2 0xE22 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x345 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x34A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x385 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB78CB0DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xFF DUP5 AND PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xC4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xE4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0x104 ADD PUSH2 0x2BA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDFE1681 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x449 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x46D SWAP2 SWAP1 PUSH2 0xB56 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD21220A7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4CB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4EF SWAP2 SWAP1 PUSH2 0xB56 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x20 DUP4 ADD MSTORE DUP4 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 ADD DUP9 SWAP1 MSTORE DUP7 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0xA0 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 DUP3 ADD KECCAK256 PUSH32 0xF6AB6D9900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xF6AB6D99 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x603 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x627 SWAP2 SWAP1 PUSH2 0xB56 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x72D JUMPI PUSH1 0x40 MLOAD PUSH32 0x250558DC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x250558DC SWAP1 PUSH2 0x6D8 SWAP1 PUSH32 0x0 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xE3E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x706 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x72A SWAP2 SWAP1 PUSH2 0xB56 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP12 SWAP1 MSTORE SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7DA SWAP2 SWAP1 PUSH2 0xC51 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x89AFCB4400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP14 AND SWAP1 PUSH4 0x89AFCB44 SWAP1 PUSH1 0x24 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x868 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x87C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8A0 SWAP2 SWAP1 PUSH2 0xDA4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2B9446C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0x24 DUP4 ADD DUP2 SWAP1 MSTORE SWAP1 DUP8 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH4 0x2B9446C SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x94B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x95F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x983 SWAP2 SWAP1 PUSH2 0xDA4 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x2B9446C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0x24 DUP4 ADD DUP2 SWAP1 MSTORE SWAP1 DUP6 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE SWAP1 PUSH4 0x2B9446C SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA3F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA63 SWAP2 SWAP1 PUSH2 0xDA4 JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH4 0x7BA0E2E7 SWAP2 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAB9 SWAP2 SWAP1 PUSH2 0xEF5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB0B SWAP2 SWAP1 PUSH2 0xD8B JUMP JUMPDEST SWAP7 POP DUP8 DUP8 LT ISZERO PUSH2 0xB47 JUMPI PUSH1 0x40 MLOAD PUSH32 0x9B9D48E100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB73 DUP2 PUSH2 0x1062 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0xB93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0xB9E DUP2 PUSH2 0x1062 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xBC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP5 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xBEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xC07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xC1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xC2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xC3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB73 DUP2 PUSH2 0x1087 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xC86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xC91 DUP2 PUSH2 0x1062 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0xCAF DUP2 PUSH2 0x1087 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP2 SWAP5 PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xCEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xCFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0xD10 JUMPI PUSH2 0xD10 PUSH2 0x1033 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xD56 JUMPI PUSH2 0xD56 PUSH2 0x1033 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xD6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD80 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0xF74 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xDE0 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xF74 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xE34 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xF74 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xE6D PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xDC8 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xEE8 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0xED6 DUP6 DUP4 MLOAD PUSH2 0xDC8 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE9C JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xB73 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xDC8 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0xF3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xF58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0xF6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF8F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF77 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xF9E JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xFFD JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1084 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1084 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GT 0xB0 SWAP15 0x4F PUSH12 0xF283F969A06AF36E08DA0B1C SWAP13 0xAD BASEFEE 0xE7 0xF9 DUP15 LOG1 RETURN 0xCC PUSH11 0xEBBE0EB4C964736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "488:2109:33:-:0;;;740:245;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;880:20:33;;;;;;;;910:26;;;;;;;946:32;;;;;;488:2109;;14:643:64;172:6;180;188;241:2;229:9;220:7;216:23;212:32;209:52;;;257:1;254;247:12;209:52;289:9;283:16;308:49;351:5;308:49;:::i;:::-;426:2;411:18;;405:25;376:5;;-1:-1:-1;439:51:64;405:25;439:51;:::i;:::-;561:2;546:18;;540:25;509:7;;-1:-1:-1;574:51:64;540:25;574:51;:::i;:::-;644:7;634:17;;;14:643;;;;;:::o;662:149::-;-1:-1:-1;;;;;755:31:64;;745:42;;735:70;;801:1;798;791:12;735:70;662:149;:::o;:::-;488:2109:33;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@batch_24149": {
                  "entryPoint": 221,
                  "id": 24149,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@migrate_5585": {
                  "entryPoint": 1004,
                  "id": 5585,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@permitThisAllowed_24372": {
                  "entryPoint": 600,
                  "id": 24372,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@permitThis_24327": {
                  "entryPoint": 910,
                  "id": 24327,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 2902,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32": {
                  "entryPoint": 2938,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 3036,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bool_fromMemory": {
                  "entryPoint": 3153,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_contract$_IUniswapV2Minimal_$2599t_uint256t_uint256t_boolt_uint256": {
                  "entryPoint": 3182,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_string_memory_ptr_fromMemory": {
                  "entryPoint": 3264,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 3467,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_uint256_fromMemory": {
                  "entryPoint": 3492,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_bytes": {
                  "entryPoint": 3528,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 3602,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 3618,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_rational_0_by_1__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_bool__to_t_address_t_address_t_uint256_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 9,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 8,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 3646,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 3701,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 3829,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "access_calldata_tail_t_bytes_calldata_ptr": {
                  "entryPoint": 3848,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "copy_memory_to_memory": {
                  "entryPoint": 3956,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "increment_t_uint256": {
                  "entryPoint": 4004,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x32": {
                  "entryPoint": 4100,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 4147,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 4194,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bool": {
                  "entryPoint": 4231,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:11761:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:170:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "229:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "204:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "204:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "204:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "244:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "254:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "244:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:251:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "423:534:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "470:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "479:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "482:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "472:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "472:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "472:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "444:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "453:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "440:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "440:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "465:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "436:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "436:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "433:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "495:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "521:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "508:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "508:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "499:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "565:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "540:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "540:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "580:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "590:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "580:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "604:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "631:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "642:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "627:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "627:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "614:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "614:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "604:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "655:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "682:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "693:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "678:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "678:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "665:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "665:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "655:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "706:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "738:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "749:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "734:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "734:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "721:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "721:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "710:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "805:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "814:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "817:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "807:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "807:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "807:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "775:7:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "788:7:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "797:4:64",
                                            "type": "",
                                            "value": "0xff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "784:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "784:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "772:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "772:31:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "765:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "765:39:64"
                              },
                              "nodeType": "YulIf",
                              "src": "762:59:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "830:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "840:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "830:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "856:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "883:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "894:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "879:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "879:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "866:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "866:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "856:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "908:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "935:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "946:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "931:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "931:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "918:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "918:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "908:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "349:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "360:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "372:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "380:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "388:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "396:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "404:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "412:6:64",
                            "type": ""
                          }
                        ],
                        "src": "270:687:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1078:510:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1124:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1133:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1136:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1126:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1126:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1126:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1099:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1108:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1095:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1095:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1120:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1091:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1091:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1088:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1149:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1176:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1163:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1163:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1153:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1195:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1205:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1199:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1250:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1259:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1262:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1252:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1252:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1252:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1238:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1246:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1235:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1235:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1232:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1275:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1289:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1300:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1285:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1285:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1279:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1355:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1364:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1367:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1357:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1357:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1357:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1334:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1338:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1330:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1330:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1345:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1326:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1326:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1319:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1319:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1316:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1380:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1407:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1394:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1394:16:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1384:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1437:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1446:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1449:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1439:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1439:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1439:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1425:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1433:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1422:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1422:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1419:34:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1511:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1520:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1523:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1513:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1513:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1513:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1476:2:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1484:1:64",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1487:6:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1480:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1480:14:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1472:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1472:23:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1497:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1468:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1468:32:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1502:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1465:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1465:45:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1462:65:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1536:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1550:2:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1554:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1546:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1546:11:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1536:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1566:16:64",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "1576:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1566:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1036:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1047:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1059:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1067:6:64",
                            "type": ""
                          }
                        ],
                        "src": "962:626:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1671:167:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1717:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1726:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1729:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1719:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1719:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1719:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1692:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1701:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1688:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1688:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1713:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1684:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1684:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1681:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1742:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1761:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1755:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1755:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1746:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1802:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "1780:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1780:28:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1780:28:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1817:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1827:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1817:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1637:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1648:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1660:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1593:245:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2004:453:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2051:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2060:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2063:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2053:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2053:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2053:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2025:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2034:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2021:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2021:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2046:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2017:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2017:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2014:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2076:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2102:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2089:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2089:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2080:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2146:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2121:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2121:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2121:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2161:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2171:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2161:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2185:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2212:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2223:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2208:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2208:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2195:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2195:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2185:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2236:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2263:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2274:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2259:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2259:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2246:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2246:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2236:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2287:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2319:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2330:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2315:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2315:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2302:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2302:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2291:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2365:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "2343:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2343:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2343:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2382:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "2392:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2382:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2408:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2435:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2446:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2431:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2431:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2418:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2418:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2408:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_IUniswapV2Minimal_$2599t_uint256t_uint256t_boolt_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1938:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1949:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1961:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1969:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1977:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1985:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1993:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1843:614:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2553:852:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2599:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2608:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2611:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2601:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2601:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2601:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2574:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2583:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2570:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2570:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2595:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2566:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2566:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2563:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2624:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2644:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2638:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2638:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2628:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2663:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2673:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2667:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2718:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2727:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2730:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2720:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2720:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2720:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2706:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2714:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2703:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2703:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2700:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2743:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2757:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2768:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2753:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2753:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2747:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2823:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2832:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2835:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2825:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2825:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2825:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2802:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2806:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2798:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2798:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2813:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2794:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2794:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2787:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2787:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2784:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2848:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2864:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2858:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2858:9:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2852:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2890:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2892:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2892:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2892:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2882:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2886:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2879:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2879:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2876:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2921:76:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2931:66:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "2925:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3006:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3026:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3020:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3020:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "3010:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3038:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3060:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3084:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3088:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3080:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3080:13:64"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "3095:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "3076:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3076:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3100:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3072:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3072:31:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "3105:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3068:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3068:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3056:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3056:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "3042:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3168:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "3170:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3170:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3170:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3127:10:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3139:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3124:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3124:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3147:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3159:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3144:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3144:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "3121:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3121:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3118:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3206:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3210:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3199:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3199:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3199:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3237:6:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3245:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3230:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3230:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3230:18:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3294:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3303:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3306:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3296:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3296:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3296:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "3271:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3275:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3267:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3267:11:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3280:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3263:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3263:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3285:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3260:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3260:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3257:53:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3345:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3349:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3341:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3341:11:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3358:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3366:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3354:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3354:15:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3371:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3319:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3319:55:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3319:55:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3383:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "3393:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3383:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2519:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2530:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2542:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2462:943:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3491:103:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3537:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3546:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3549:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3539:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3539:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3539:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3512:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3521:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3508:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3508:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3533:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3504:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3504:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3501:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3562:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3578:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3572:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3572:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3562:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3457:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3468:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3480:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3410:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3697:147:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3743:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3752:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3755:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3745:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3745:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3745:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3718:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3727:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3714:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3714:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3739:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3710:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3710:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3707:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3768:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3784:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3778:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3778:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3768:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3803:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3823:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3834:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3819:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3819:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3813:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3813:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3803:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3655:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3666:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3678:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3686:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3599:245:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3898:267:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3908:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3928:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3922:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3922:12:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "3912:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3950:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3955:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3943:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3943:19:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3943:19:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3997:5:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4004:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3993:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3993:16:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4015:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4020:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4011:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4011:14:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4027:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3971:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3971:63:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3971:63:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4043:116:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4058:3:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "4071:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4079:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "4067:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4067:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4084:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "4063:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4063:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4054:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4054:98:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4154:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4050:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4050:109:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "4043:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3875:5:64",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3882:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3890:3:64",
                            "type": ""
                          }
                        ],
                        "src": "3849:316:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4317:124:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4340:3:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4345:6:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4353:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "4327:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4327:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4327:33:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4369:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4383:3:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4388:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4379:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4379:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4373:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4411:2:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4415:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4404:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4404:13:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4404:13:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4426:9:64",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "4433:2:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "4426:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4285:3:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4290:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4298:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4309:3:64",
                            "type": ""
                          }
                        ],
                        "src": "4170:271:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4583:137:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4593:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4613:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4607:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4607:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "4597:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4655:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4663:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4651:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4651:17:64"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4670:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4675:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "4629:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4629:53:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4629:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4691:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4702:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4707:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4698:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4698:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "4691:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4559:3:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4564:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4575:3:64",
                            "type": ""
                          }
                        ],
                        "src": "4446:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4826:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4836:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4848:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4859:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4844:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4844:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4836:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4878:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4893:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4901:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4889:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4889:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4871:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4871:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4871:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4795:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4806:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4817:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4725:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5177:338:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5187:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5199:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5210:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5195:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5195:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5187:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5223:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5233:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5227:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5291:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5306:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5314:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5302:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5302:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5284:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5284:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5284:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5338:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5349:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5334:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5334:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5358:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5366:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5354:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5354:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5327:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5327:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5327:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5390:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5401:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5386:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5386:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5410:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5418:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5406:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5406:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5379:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5379:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5379:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5442:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5453:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5438:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5438:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "5458:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5431:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5431:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5431:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5485:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5496:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5481:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5481:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "5502:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5474:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5474:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5474:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_rational_0_by_1__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5114:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "5125:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5133:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5141:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5149:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5157:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5168:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4956:559:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5677:241:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5687:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5699:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5710:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5695:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5695:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5687:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5722:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5732:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5726:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5790:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5805:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5813:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5801:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5801:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5783:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5783:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5783:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5837:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5848:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5833:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5833:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5857:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5865:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5853:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5853:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5826:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5826:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5826:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5889:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5900:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5885:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5885:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5905:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5878:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5878:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5878:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5630:9:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5641:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5649:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5657:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5668:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5520:398:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6102:301:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6112:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6124:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6135:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6120:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6120:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6112:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6148:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6158:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6152:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6216:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6231:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6239:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6227:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6227:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6209:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6209:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6209:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6263:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6274:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6259:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6259:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6283:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6291:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6279:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6279:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6252:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6252:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6252:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6315:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6326:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6311:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6311:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6331:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6304:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6304:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6304:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6358:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6369:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6354:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6354:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value3",
                                            "nodeType": "YulIdentifier",
                                            "src": "6388:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "6381:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6381:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "6374:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6374:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6347:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6347:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6347:50:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bool__to_t_address_t_address_t_uint256_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6047:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "6058:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6066:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6074:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6082:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6093:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5923:480:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6695:488:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6705:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6717:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6728:3:64",
                                    "type": "",
                                    "value": "256"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6713:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6713:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6705:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6741:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6751:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6745:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6809:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6824:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6832:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6820:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6820:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6802:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6802:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6802:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6856:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6867:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6852:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6852:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6876:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6884:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6872:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6872:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6845:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6845:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6845:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6908:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6919:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6904:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6904:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6924:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6897:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6897:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6897:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6951:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6962:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6947:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6947:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "6967:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6940:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6940:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6940:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6994:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7005:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6990:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6990:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value4",
                                            "nodeType": "YulIdentifier",
                                            "src": "7025:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "7018:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7018:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "7011:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7011:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6983:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6983:51:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6983:51:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7054:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7065:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7050:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7050:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "7075:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7083:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7071:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7071:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7043:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7043:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7043:46:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7109:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7120:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7105:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7105:19:64"
                                  },
                                  {
                                    "name": "value6",
                                    "nodeType": "YulIdentifier",
                                    "src": "7126:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7098:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7098:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7098:35:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7153:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7164:3:64",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7149:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7149:19:64"
                                  },
                                  {
                                    "name": "value7",
                                    "nodeType": "YulIdentifier",
                                    "src": "7170:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7142:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7142:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7142:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6608:9:64",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "6619:6:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "6627:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "6635:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "6643:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "6651:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6659:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6667:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6675:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6686:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6408:775:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7453:428:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7463:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7475:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7486:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7471:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7471:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7463:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7499:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7509:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7503:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7567:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "7582:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7590:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7578:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7578:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7560:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7560:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7560:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7614:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7625:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7610:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7610:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7634:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7642:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7630:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7630:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7603:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7603:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7603:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7666:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7677:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7662:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7662:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7682:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7655:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7655:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7655:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7709:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7720:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7705:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7705:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7725:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7698:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7698:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7698:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7752:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7763:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7748:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7748:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "7773:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7781:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7769:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7769:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7741:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7741:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7741:46:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7807:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7818:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7803:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7803:19:64"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "7824:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7796:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7796:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7796:35:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7851:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7862:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7847:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7847:19:64"
                                  },
                                  {
                                    "name": "value6",
                                    "nodeType": "YulIdentifier",
                                    "src": "7868:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7840:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7840:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7840:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7374:9:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "7385:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "7393:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7401:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7409:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7417:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7425:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7433:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7444:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7188:693:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8033:190:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8050:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8065:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8073:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8061:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8061:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8043:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8043:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8043:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8137:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8148:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8133:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8133:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8153:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8126:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8126:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8126:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8165:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8190:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8202:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8213:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8198:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8198:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "8173:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8173:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8165:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7994:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8005:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8013:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8024:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7886:337:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8397:690:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8407:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8417:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8411:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8428:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8446:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8457:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8442:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8442:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8432:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8476:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8487:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8469:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8469:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8469:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8499:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "8510:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "8503:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8525:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8545:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8539:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8539:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "8529:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8568:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8576:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8561:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8561:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8561:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8592:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8603:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8614:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8599:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8599:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "8592:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8626:53:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8648:9:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8663:1:64",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "8666:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "8659:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8659:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8644:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8644:30:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8676:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8640:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8640:39:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "8630:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8688:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8706:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8714:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8702:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8702:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "8692:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8726:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8735:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "8730:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8794:264:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "8815:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "tail_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "8828:6:64"
                                                },
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "8836:9:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "8824:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "8824:22:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "8848:66:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "8820:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "8820:95:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "8808:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8808:108:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8808:108:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8929:49:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "8962:6:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "8956:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "8956:13:64"
                                        },
                                        {
                                          "name": "tail_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "8971:6:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_bytes",
                                        "nodeType": "YulIdentifier",
                                        "src": "8939:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8939:39:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8929:6:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8991:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "9005:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9013:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9001:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9001:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8991:6:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9029:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "9040:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9045:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9036:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9036:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "9029:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "8756:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8759:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8753:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8753:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "8767:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8769:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "8778:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8781:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "8774:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8774:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "8769:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "8749:3:64",
                                "statements": []
                              },
                              "src": "8745:313:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9067:14:64",
                              "value": {
                                "name": "tail_2",
                                "nodeType": "YulIdentifier",
                                "src": "9075:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9067:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8366:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8377:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8388:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8228:859:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9193:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9203:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9215:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9226:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9211:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9211:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9203:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9245:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9256:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9238:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9238:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9238:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9162:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9173:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9184:4:64",
                            "type": ""
                          }
                        ],
                        "src": "9092:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9393:98:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9410:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9421:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9403:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9403:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9403:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9433:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9458:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9470:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9481:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9466:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9466:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "9441:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9441:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9433:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9362:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9373:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9384:4:64",
                            "type": ""
                          }
                        ],
                        "src": "9274:217:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9617:98:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9634:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9645:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9627:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9627:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9627:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9657:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9682:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9694:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9705:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9690:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9690:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "9665:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9665:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9657:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9586:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9597:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9608:4:64",
                            "type": ""
                          }
                        ],
                        "src": "9496:219:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9821:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9831:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9843:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9854:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9839:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9839:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9831:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9873:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9884:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9866:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9866:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9866:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9790:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9801:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9812:4:64",
                            "type": ""
                          }
                        ],
                        "src": "9720:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9996:486:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10006:51:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "10045:11:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10032:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10032:25:64"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "10010:18:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10205:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10214:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10217:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10207:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10207:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10207:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "10080:18:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10108:12:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10108:14:64"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "10124:8:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "10104:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "10104:29:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "10135:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "10100:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10100:102:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "10076:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10076:127:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "10069:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10069:135:64"
                              },
                              "nodeType": "YulIf",
                              "src": "10066:155:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10230:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "10248:8:64"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "10258:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10244:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10244:33:64"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10234:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10286:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10309:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10296:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10296:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "10286:6:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10359:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10368:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10371:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10361:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10361:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10361:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10331:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10339:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10328:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10328:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "10325:50:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10384:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10396:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10404:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10392:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10392:17:64"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "10384:4:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10460:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10469:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10472:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10462:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10462:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10462:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "10425:4:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "10435:12:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10435:14:64"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "10451:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10431:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10431:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10421:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10421:38:64"
                              },
                              "nodeType": "YulIf",
                              "src": "10418:58:64"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "9953:8:64",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "9963:11:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "9979:4:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "9985:6:64",
                            "type": ""
                          }
                        ],
                        "src": "9902:580:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10540:205:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10550:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10559:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "10554:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10619:63:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "10644:3:64"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "10649:1:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "10640:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10640:11:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10663:3:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10668:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "10659:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "10659:11:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "10653:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10653:18:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10633:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10633:39:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10633:39:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "10580:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10583:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10577:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10577:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "10591:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10593:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "10602:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10605:2:64",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10598:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10598:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "10593:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "10573:3:64",
                                "statements": []
                              },
                              "src": "10569:113:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10708:31:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "10721:3:64"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "10726:6:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "10717:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10717:16:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10735:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10710:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10710:27:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10710:27:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "10697:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10700:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10694:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10694:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "10691:48:64"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "10518:3:64",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "10523:3:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "10528:6:64",
                            "type": ""
                          }
                        ],
                        "src": "10487:258:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10797:302:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10896:168:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10917:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10920:77:64",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10910:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10910:88:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10910:88:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11018:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11021:4:64",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "11011:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11011:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11011:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11046:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11049:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11039:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11039:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11039:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10813:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10820:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "10810:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10810:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "10807:257:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11073:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11084:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11091:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11080:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11080:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "11073:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "10779:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "10789:3:64",
                            "type": ""
                          }
                        ],
                        "src": "10750:349:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11136:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11153:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11156:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11146:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11146:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11146:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11250:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11253:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11243:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11243:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11243:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11274:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11277:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "11267:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11267:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11267:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "11104:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11325:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11342:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11345:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11335:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11335:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11335:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11439:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11442:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11432:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11432:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11432:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11463:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11466:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "11456:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11456:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11456:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "11293:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11527:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11614:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11623:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11626:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11616:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11616:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11616:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "11550:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "11561:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "11568:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "11557:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11557:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "11547:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11547:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "11540:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11540:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "11537:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "11516:5:64",
                            "type": ""
                          }
                        ],
                        "src": "11482:154:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11683:76:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11737:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11746:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11749:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11739:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11739:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11739:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "11706:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "11727:5:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "11720:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "11720:13:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "11713:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11713:21:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "11703:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11703:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "11696:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11696:40:64"
                              },
                              "nodeType": "YulIf",
                              "src": "11693:60:64"
                            }
                          ]
                        },
                        "name": "validator_revert_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "11672:5:64",
                            "type": ""
                          }
                        ],
                        "src": "11641:118:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let value_1 := calldataload(add(headStart, 96))\n        if iszero(eq(value_1, and(value_1, 0xff))) { revert(0, 0) }\n        value3 := value_1\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n    }\n    function abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_contract$_IUniswapV2Minimal_$2599t_uint256t_uint256t_boolt_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let value_1 := calldataload(add(headStart, 96))\n        validator_revert_bool(value_1)\n        value3 := value_1\n        value4 := calldataload(add(headStart, 128))\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_2, 32), add(memPtr, 32), _3)\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_rational_0_by_1__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bool__to_t_address_t_address_t_uint256_t_bool__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), iszero(iszero(value3)))\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 256)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), iszero(iszero(value4)))\n        mstore(add(headStart, 160), and(value5, 0xff))\n        mstore(add(headStart, 192), value6)\n        mstore(add(headStart, 224), value7)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 224)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, 0xff))\n        mstore(add(headStart, 160), value5)\n        mstore(add(headStart, 192), value6)\n    }\n    function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_bytes(value1, add(headStart, 64))\n    }\n    function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, shl(5, length)), 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0))\n            tail_2 := abi_encode_bytes(mload(srcPtr), tail_2)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        ret := add(value, 1)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "5416": [
                  {
                    "length": 32,
                    "start": 2072
                  },
                  {
                    "length": 32,
                    "start": 2277
                  },
                  {
                    "length": 32,
                    "start": 2506
                  }
                ],
                "5419": [
                  {
                    "length": 32,
                    "start": 1430
                  },
                  {
                    "length": 32,
                    "start": 1710
                  }
                ],
                "5422": [
                  {
                    "length": 32,
                    "start": 1665
                  }
                ]
              },
              "linkReferences": {},
              "object": "60806040526004361061003f5760003560e01c80631e897afb14610044578063776319811461006d578063a9b62c231461008f578063bd2aded2146100af575b600080fd5b610057610052366004610bdc565b6100dd565b6040516100649190610e75565b60405180910390f35b34801561007957600080fd5b5061008d610088366004610b7a565b610258565b005b34801561009b57600080fd5b5061008d6100aa366004610b7a565b61038e565b3480156100bb57600080fd5b506100cf6100ca366004610c6e565b6103ec565b604051908152602001610064565b60608167ffffffffffffffff8111156100f8576100f8611033565b60405190808252806020026020018201604052801561012b57816020015b60608152602001906001900390816101165790505b50905060005b82811015610251576000803086868581811061014f5761014f611004565b90506020028101906101619190610f08565b60405161016f929190610e12565b600060405180830381855af49150503d80600081146101aa576040519150601f19603f3d011682016040523d82523d6000602084013e6101af565b606091505b50915091508161021e576044815110156101c857600080fd5b600481019050808060200190518101906101e29190610cc0565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102159190610ef5565b60405180910390fd5b8084848151811061023157610231611004565b60200260200101819052505050808061024990610fa4565b915050610131565b5092915050565b6040513360248201523060448201526064810186905260848101859052600160a482015260ff841660c482015260e48101839052610104810182905260009073ffffffffffffffffffffffffffffffffffffffff881690638fcbaf0c90610124015b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516103089190610e22565b6000604051808303816000865af19150503d8060008114610345576040519150601f19603f3d011682016040523d82523d6000602084013e61034a565b606091505b5050905080610385576040517fb78cb0dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b604051336024820152306044820152606481018690526084810185905260ff841660a482015260c4810183905260e4810182905260009073ffffffffffffffffffffffffffffffffffffffff88169063d505accf90610104016102ba565b6000808673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561043557600080fd5b505afa158015610449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046d9190610b56565b905060008773ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156104b757600080fd5b505afa1580156104cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ef9190610b56565b6040805173ffffffffffffffffffffffffffffffffffffffff808616602083015283169181019190915260608101889052861515608082015290915060009060a001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052805160208201207ff6ab6d99000000000000000000000000000000000000000000000000000000008352600483015291506000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063f6ab6d9990602401602060405180830381600087803b1580156105ef57600080fd5b505af1158015610603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106279190610b56565b905073ffffffffffffffffffffffffffffffffffffffff811661072d576040517f250558dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063250558dc906106d8907f0000000000000000000000000000000000000000000000000000000000000000908690600401610e3e565b602060405180830381600087803b1580156106f257600080fd5b505af1158015610706573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072a9190610b56565b90505b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8b1660248201819052604482018b9052906323b872dd90606401602060405180830381600087803b1580156107a257600080fd5b505af11580156107b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107da9190610c51565b506040517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260009182918d16906389afcb44906024016040805180830381600087803b15801561086857600080fd5b505af115801561087c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a09190610da4565b6040517f02b9446c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301819052908716604483015260648201849052600060848301529294509092506302b9446c9060a4016040805180830381600087803b15801561094b57600080fd5b505af115801561095f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109839190610da4565b50506040517f02b9446c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301527f000000000000000000000000000000000000000000000000000000000000000081166024830181905290851660448301526064820183905260006084830152906302b9446c9060a4016040805180830381600087803b158015610a2b57600080fd5b505af1158015610a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a639190610da4565b50506040805133602082015273ffffffffffffffffffffffffffffffffffffffff851691637ba0e2e791016040516020818303038152906040526040518263ffffffff1660e01b8152600401610ab99190610ef5565b602060405180830381600087803b158015610ad357600080fd5b505af1158015610ae7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0b9190610d8b565b965087871015610b47576040517f9b9d48e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505095945050505050565b600060208284031215610b6857600080fd5b8151610b7381611062565b9392505050565b60008060008060008060c08789031215610b9357600080fd5b8635610b9e81611062565b95506020870135945060408701359350606087013560ff81168114610bc257600080fd5b9598949750929560808101359460a0909101359350915050565b60008060208385031215610bef57600080fd5b823567ffffffffffffffff80821115610c0757600080fd5b818501915085601f830112610c1b57600080fd5b813581811115610c2a57600080fd5b8660208260051b8501011115610c3f57600080fd5b60209290920196919550909350505050565b600060208284031215610c6357600080fd5b8151610b7381611087565b600080600080600060a08688031215610c8657600080fd5b8535610c9181611062565b945060208601359350604086013592506060860135610caf81611087565b949793965091946080013592915050565b600060208284031215610cd257600080fd5b815167ffffffffffffffff80821115610cea57600080fd5b818401915084601f830112610cfe57600080fd5b815181811115610d1057610d10611033565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610d5657610d56611033565b81604052828152876020848701011115610d6f57600080fd5b610d80836020830160208801610f74565b979650505050505050565b600060208284031215610d9d57600080fd5b5051919050565b60008060408385031215610db757600080fd5b505080516020909101519092909150565b60008151808452610de0816020860160208601610f74565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8183823760009101908152919050565b60008251610e34818460208701610f74565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000610e6d6040830184610dc8565b949350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610ee8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452610ed6858351610dc8565b94509285019290850190600101610e9c565b5092979650505050505050565b602081526000610b736020830184610dc8565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610f3d57600080fd5b83018035915067ffffffffffffffff821115610f5857600080fd5b602001915036819003821315610f6d57600080fd5b9250929050565b60005b83811015610f8f578181015183820152602001610f77565b83811115610f9e576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610ffd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461108457600080fd5b50565b801515811461108457600080fdfea264697066735822122011b09e4f6bf283f969a06af36e08da0b1c9cad48e7f98ea1f3cc6aebbe0eb4c964736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1E897AFB EQ PUSH2 0x44 JUMPI DUP1 PUSH4 0x77631981 EQ PUSH2 0x6D JUMPI DUP1 PUSH4 0xA9B62C23 EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0xBD2ADED2 EQ PUSH2 0xAF JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x57 PUSH2 0x52 CALLDATASIZE PUSH1 0x4 PUSH2 0xBDC JUMP JUMPDEST PUSH2 0xDD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x64 SWAP2 SWAP1 PUSH2 0xE75 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8D PUSH2 0x88 CALLDATASIZE PUSH1 0x4 PUSH2 0xB7A JUMP JUMPDEST PUSH2 0x258 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8D PUSH2 0xAA CALLDATASIZE PUSH1 0x4 PUSH2 0xB7A JUMP JUMPDEST PUSH2 0x38E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCF PUSH2 0xCA CALLDATASIZE PUSH1 0x4 PUSH2 0xC6E JUMP JUMPDEST PUSH2 0x3EC JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x64 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xF8 JUMPI PUSH2 0xF8 PUSH2 0x1033 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x12B JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x116 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x251 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x14F JUMPI PUSH2 0x14F PUSH2 0x1004 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x161 SWAP2 SWAP1 PUSH2 0xF08 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x16F SWAP3 SWAP2 SWAP1 PUSH2 0xE12 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1AA JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1AF JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x21E JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x1C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1E2 SWAP2 SWAP1 PUSH2 0xCC0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x215 SWAP2 SWAP1 PUSH2 0xEF5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x231 JUMPI PUSH2 0x231 PUSH2 0x1004 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP DUP1 DUP1 PUSH2 0x249 SWAP1 PUSH2 0xFA4 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x131 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xFF DUP5 AND PUSH1 0xC4 DUP3 ADD MSTORE PUSH1 0xE4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH2 0x104 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0x8FCBAF0C SWAP1 PUSH2 0x124 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x308 SWAP2 SWAP1 PUSH2 0xE22 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x345 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x34A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x385 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB78CB0DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xFF DUP5 AND PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xC4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xE4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0x104 ADD PUSH2 0x2BA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDFE1681 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x449 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x46D SWAP2 SWAP1 PUSH2 0xB56 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD21220A7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4CB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4EF SWAP2 SWAP1 PUSH2 0xB56 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x20 DUP4 ADD MSTORE DUP4 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 ADD DUP9 SWAP1 MSTORE DUP7 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH1 0xA0 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 DUP3 ADD KECCAK256 PUSH32 0xF6AB6D9900000000000000000000000000000000000000000000000000000000 DUP4 MSTORE PUSH1 0x4 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xF6AB6D99 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x603 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x627 SWAP2 SWAP1 PUSH2 0xB56 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x72D JUMPI PUSH1 0x40 MLOAD PUSH32 0x250558DC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x250558DC SWAP1 PUSH2 0x6D8 SWAP1 PUSH32 0x0 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xE3E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x706 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x72A SWAP2 SWAP1 PUSH2 0xB56 JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP12 SWAP1 MSTORE SWAP1 PUSH4 0x23B872DD SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7B6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7DA SWAP2 SWAP1 PUSH2 0xC51 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x89AFCB4400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP14 AND SWAP1 PUSH4 0x89AFCB44 SWAP1 PUSH1 0x24 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x868 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x87C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8A0 SWAP2 SWAP1 PUSH2 0xDA4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2B9446C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0x24 DUP4 ADD DUP2 SWAP1 MSTORE SWAP1 DUP8 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH4 0x2B9446C SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x94B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x95F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x983 SWAP2 SWAP1 PUSH2 0xDA4 JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x2B9446C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0x24 DUP4 ADD DUP2 SWAP1 MSTORE SWAP1 DUP6 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE SWAP1 PUSH4 0x2B9446C SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA3F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA63 SWAP2 SWAP1 PUSH2 0xDA4 JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH4 0x7BA0E2E7 SWAP2 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAB9 SWAP2 SWAP1 PUSH2 0xEF5 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xAE7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xB0B SWAP2 SWAP1 PUSH2 0xD8B JUMP JUMPDEST SWAP7 POP DUP8 DUP8 LT ISZERO PUSH2 0xB47 JUMPI PUSH1 0x40 MLOAD PUSH32 0x9B9D48E100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB73 DUP2 PUSH2 0x1062 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0xB93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0xB9E DUP2 PUSH2 0x1062 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xBC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP5 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xBEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xC07 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xC1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xC2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0xC3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xB73 DUP2 PUSH2 0x1087 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xC86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xC91 DUP2 PUSH2 0x1062 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0xCAF DUP2 PUSH2 0x1087 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP2 SWAP5 PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xCEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xCFE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0xD10 JUMPI PUSH2 0xD10 PUSH2 0x1033 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xD56 JUMPI PUSH2 0xD56 PUSH2 0x1033 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xD6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD80 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0xF74 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xDE0 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xF74 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xE34 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xF74 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0xE6D PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0xDC8 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xEE8 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0xED6 DUP6 DUP4 MLOAD PUSH2 0xDC8 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xE9C JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xB73 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xDC8 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0xF3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xF58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0xF6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF8F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF77 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xF9E JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xFFD JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1084 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1084 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GT 0xB0 SWAP15 0x4F PUSH12 0xF283F969A06AF36E08DA0B1C SWAP13 0xAD BASEFEE 0xE7 0xF9 DUP15 LOG1 RETURN 0xCC PUSH11 0xEBBE0EB4C964736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "488:2109:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;714:643:60;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1512:422:62;;;;;;;;;;-1:-1:-1;1512:422:62;;;;;:::i;:::-;;:::i;:::-;;641:410;;;;;;;;;;-1:-1:-1;641:410:62;;;;;:::i;:::-;;:::i;1587:1008:33:-;;;;;;;;;;-1:-1:-1;1587:1008:33;;;;;:::i;:::-;;:::i;:::-;;;9238:25:64;;;9226:2;9211:18;1587:1008:33;9092:177:64;714:643:60;778:22;834:4;822:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;812:34;;862:9;857:494;877:15;;;857:494;;;914:12;;959:4;978;;983:1;978:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;951:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;913:73;;;;1006:7;1001:306;;1133:2;1117:6;:13;:18;1113:32;;;1137:8;;;1113:32;1216:4;1208:6;1204:17;1194:27;;1274:6;1263:28;;;;;;;;;;;;:::i;:::-;1256:36;;;;;;;;;;;:::i;:::-;;;;;;;;1001:306;1334:6;1321:7;1329:1;1321:10;;;;;;;;:::i;:::-;;;;;;:19;;;;899:452;;894:3;;;;;:::i;:::-;;;;857:494;;;;714:643;;;;:::o;1512:422:62:-;1719:91;;1754:10;1719:91;;;6802:34:64;1774:4:62;6852:18:64;;;6845:43;6904:18;;;6897:34;;;6947:18;;;6940:34;;;1796:4:62;6990:19:64;;;6983:51;7083:4;7071:17;;7050:19;;;7043:46;7105:19;;;7098:35;;;7149:19;;;7142:35;;;1690:12:62;;1708:10;;;;1742;;6713:19:64;;1719:91:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1708:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1689:122;;;1897:7;1892:35;;1913:14;;;;;;;;;;;;;;1892:35;1679:255;1512:422;;;;;;:::o;641:410::-;844:88;;879:10;844:88;;;7560:34:64;899:4:62;7610:18:64;;;7603:43;7662:18;;;7655:34;;;7705:18;;;7698:34;;;7781:4;7769:17;;7748:19;;;7741:46;7803:19;;;7796:35;;;7847:19;;;7840:35;;;815:12:62;;833:10;;;;867;;7471:19:64;;844:88:62;7188:693:64;1587:1008:33;1764:17;1793:14;1810:4;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1793:30;;1833:14;1850:4;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1898:48;;;6158:42:64;6227:15;;;1898:48:33;;;6209:34:64;6279:15;;6259:18;;;6252:43;;;;6311:18;;;6304:34;;;6381:14;;6374:22;6354:18;;;6347:50;1833:30:33;;-1:-1:-1;1874:21:33;;6120:19:64;;1898:48:33;;;;;;;;;;;;;;2004:19;;1898:48;2004:19;;;1978:46;;;;;;9238:25:64;1898:48:33;-1:-1:-1;1956:19:33;;1978:11;:25;;;;;9211:18:64;;1978:46:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1956:68;-1:-1:-1;2039:25:33;;;2035:127;;2094:57;;;;;:25;:14;:25;;;;:57;;2128:11;;2142:8;;2094:57;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2080:71;;2035:127;2172:52;;;;;2190:10;2172:52;;;5783:34:64;2172:17:33;;;5833:18:64;;;5826:43;;;5885:18;;;5878:34;;;2172:17:33;;;5695:18:64;;2172:52:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2271:28:33;;;;;:9;2289:8;4889:55:64;;2271:28:33;;;4871:74:64;-1:-1:-1;;;;2271:9:33;;;;;4844:18:64;;2271:28:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2310:68;;;;;:16;5302:15:64;;;2310:68:33;;;5284:34:64;2310:8:33;:16;;5334:18:64;;;5327:43;;;5406:15;;;5386:18;;;5379:43;5438:18;;;5431:34;;;2376:1:33;5481:19:64;;;5474:35;2234:65:33;;-1:-1:-1;2234:65:33;;-1:-1:-1;2310:16:33;;5195:19:64;;2310:68:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;2388:68:33;;;;;:16;5302:15:64;;;2388:68:33;;;5284:34:64;2388:8:33;:16;;5334:18:64;;;5327:43;;;5406:15;;;5386:18;;;5379:43;5438:18;;;5431:34;;;2454:1:33;5481:19:64;;;5474:35;2388:16:33;;;5195:19:64;;2388:68:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;2503:22:33;;;2514:10;2503:22;;;4871:74:64;2479:23:33;;;;;;4844:18:64;2503:22:33;;;;;;;;;;;;2479:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2467:59;;2553:11;2541:9;:23;2537:51;;;2573:15;;;;;;;;;;;;;;2537:51;1783:812;;;;;;1587:1008;;;;;;;:::o;14:251:64:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;185:9;179:16;204:31;229:5;204:31;:::i;:::-;254:5;14:251;-1:-1:-1;;;14:251:64:o;270:687::-;372:6;380;388;396;404;412;465:3;453:9;444:7;440:23;436:33;433:53;;;482:1;479;472:12;433:53;521:9;508:23;540:31;565:5;540:31;:::i;:::-;590:5;-1:-1:-1;642:2:64;627:18;;614:32;;-1:-1:-1;693:2:64;678:18;;665:32;;-1:-1:-1;749:2:64;734:18;;721:32;797:4;784:18;;772:31;;762:59;;817:1;814;807:12;762:59;270:687;;;;-1:-1:-1;270:687:64;;894:3;879:19;;866:33;;946:3;931:19;;;918:33;;-1:-1:-1;270:687:64;-1:-1:-1;;270:687:64:o;962:626::-;1059:6;1067;1120:2;1108:9;1099:7;1095:23;1091:32;1088:52;;;1136:1;1133;1126:12;1088:52;1176:9;1163:23;1205:18;1246:2;1238:6;1235:14;1232:34;;;1262:1;1259;1252:12;1232:34;1300:6;1289:9;1285:22;1275:32;;1345:7;1338:4;1334:2;1330:13;1326:27;1316:55;;1367:1;1364;1357:12;1316:55;1407:2;1394:16;1433:2;1425:6;1422:14;1419:34;;;1449:1;1446;1439:12;1419:34;1502:7;1497:2;1487:6;1484:1;1480:14;1476:2;1472:23;1468:32;1465:45;1462:65;;;1523:1;1520;1513:12;1462:65;1554:2;1546:11;;;;;1576:6;;-1:-1:-1;962:626:64;;-1:-1:-1;;;;962:626:64:o;1593:245::-;1660:6;1713:2;1701:9;1692:7;1688:23;1684:32;1681:52;;;1729:1;1726;1719:12;1681:52;1761:9;1755:16;1780:28;1802:5;1780:28;:::i;1843:614::-;1961:6;1969;1977;1985;1993;2046:3;2034:9;2025:7;2021:23;2017:33;2014:53;;;2063:1;2060;2053:12;2014:53;2102:9;2089:23;2121:31;2146:5;2121:31;:::i;:::-;2171:5;-1:-1:-1;2223:2:64;2208:18;;2195:32;;-1:-1:-1;2274:2:64;2259:18;;2246:32;;-1:-1:-1;2330:2:64;2315:18;;2302:32;2343:30;2302:32;2343:30;:::i;:::-;1843:614;;;;-1:-1:-1;1843:614:64;;2446:3;2431:19;2418:33;;1843:614;-1:-1:-1;;1843:614:64:o;2462:943::-;2542:6;2595:2;2583:9;2574:7;2570:23;2566:32;2563:52;;;2611:1;2608;2601:12;2563:52;2644:9;2638:16;2673:18;2714:2;2706:6;2703:14;2700:34;;;2730:1;2727;2720:12;2700:34;2768:6;2757:9;2753:22;2743:32;;2813:7;2806:4;2802:2;2798:13;2794:27;2784:55;;2835:1;2832;2825:12;2784:55;2864:2;2858:9;2886:2;2882;2879:10;2876:36;;;2892:18;;:::i;:::-;3026:2;3020:9;3088:4;3080:13;;2931:66;3076:22;;;3100:2;3072:31;3068:40;3056:53;;;3124:18;;;3144:22;;;3121:46;3118:72;;;3170:18;;:::i;:::-;3210:10;3206:2;3199:22;3245:2;3237:6;3230:18;3285:7;3280:2;3275;3271;3267:11;3263:20;3260:33;3257:53;;;3306:1;3303;3296:12;3257:53;3319:55;3371:2;3366;3358:6;3354:15;3349:2;3345;3341:11;3319:55;:::i;:::-;3393:6;2462:943;-1:-1:-1;;;;;;;2462:943:64:o;3410:184::-;3480:6;3533:2;3521:9;3512:7;3508:23;3504:32;3501:52;;;3549:1;3546;3539:12;3501:52;-1:-1:-1;3572:16:64;;3410:184;-1:-1:-1;3410:184:64:o;3599:245::-;3678:6;3686;3739:2;3727:9;3718:7;3714:23;3710:32;3707:52;;;3755:1;3752;3745:12;3707:52;-1:-1:-1;;3778:16:64;;3834:2;3819:18;;;3813:25;3778:16;;3813:25;;-1:-1:-1;3599:245:64:o;3849:316::-;3890:3;3928:5;3922:12;3955:6;3950:3;3943:19;3971:63;4027:6;4020:4;4015:3;4011:14;4004:4;3997:5;3993:16;3971:63;:::i;:::-;4079:2;4067:15;4084:66;4063:88;4054:98;;;;4154:4;4050:109;;3849:316;-1:-1:-1;;3849:316:64:o;4170:271::-;4353:6;4345;4340:3;4327:33;4309:3;4379:16;;4404:13;;;4379:16;4170:271;-1:-1:-1;4170:271:64:o;4446:274::-;4575:3;4613:6;4607:13;4629:53;4675:6;4670:3;4663:4;4655:6;4651:17;4629:53;:::i;:::-;4698:16;;;;;4446:274;-1:-1:-1;;4446:274:64:o;7886:337::-;8073:42;8065:6;8061:55;8050:9;8043:74;8153:2;8148;8137:9;8133:18;8126:30;8024:4;8173:44;8213:2;8202:9;8198:18;8190:6;8173:44;:::i;:::-;8165:52;7886:337;-1:-1:-1;;;;7886:337:64:o;8228:859::-;8388:4;8417:2;8457;8446:9;8442:18;8487:2;8476:9;8469:21;8510:6;8545;8539:13;8576:6;8568;8561:22;8614:2;8603:9;8599:18;8592:25;;8676:2;8666:6;8663:1;8659:14;8648:9;8644:30;8640:39;8626:53;;8714:2;8706:6;8702:15;8735:1;8745:313;8759:6;8756:1;8753:13;8745:313;;;8848:66;8836:9;8828:6;8824:22;8820:95;8815:3;8808:108;8939:39;8971:6;8962;8956:13;8939:39;:::i;:::-;8929:49;-1:-1:-1;9036:12:64;;;;9001:15;;;;8781:1;8774:9;8745:313;;;-1:-1:-1;9075:6:64;;8228:859;-1:-1:-1;;;;;;;8228:859:64:o;9274:217::-;9421:2;9410:9;9403:21;9384:4;9441:44;9481:2;9470:9;9466:18;9458:6;9441:44;:::i;9902:580::-;9979:4;9985:6;10045:11;10032:25;10135:66;10124:8;10108:14;10104:29;10100:102;10080:18;10076:127;10066:155;;10217:1;10214;10207:12;10066:155;10244:33;;10296:20;;;-1:-1:-1;10339:18:64;10328:30;;10325:50;;;10371:1;10368;10361:12;10325:50;10404:4;10392:17;;-1:-1:-1;10435:14:64;10431:27;;;10421:38;;10418:58;;;10472:1;10469;10462:12;10418:58;9902:580;;;;;:::o;10487:258::-;10559:1;10569:113;10583:6;10580:1;10577:13;10569:113;;;10659:11;;;10653:18;10640:11;;;10633:39;10605:2;10598:10;10569:113;;;10700:6;10697:1;10694:13;10691:48;;;10735:1;10726:6;10721:3;10717:16;10710:27;10691:48;;10487:258;;;:::o;10750:349::-;10789:3;10820:66;10813:5;10810:77;10807:257;;;10920:77;10917:1;10910:88;11021:4;11018:1;11011:15;11049:4;11046:1;11039:15;10807:257;-1:-1:-1;11091:1:64;11080:13;;10750:349::o;11104:184::-;11156:77;11153:1;11146:88;11253:4;11250:1;11243:15;11277:4;11274:1;11267:15;11293:184;11345:77;11342:1;11335:88;11442:4;11439:1;11432:15;11466:4;11463:1;11456:15;11482:154;11568:42;11561:5;11557:54;11550:5;11547:65;11537:93;;11626:1;11623;11616:12;11537:93;11482:154;:::o;11641:118::-;11727:5;11720:13;11713:21;11706:5;11703:32;11693:60;;11749:1;11746;11739:12"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "859800",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "batch(bytes[])": "infinite",
                "migrate(address,uint256,uint256,bool,uint256)": "infinite",
                "permitThis(address,uint256,uint256,uint8,bytes32,bytes32)": "infinite",
                "permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)": "infinite"
              }
            },
            "methodIdentifiers": {
              "batch(bytes[])": "1e897afb",
              "migrate(address,uint256,uint256,bool,uint256)": "bd2aded2",
              "permitThis(address,uint256,uint256,uint8,bytes32,bytes32)": "a9b62c23",
              "permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)": "77631981"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IBentoBoxMinimal\",\"name\":\"_bentoBox\",\"type\":\"address\"},{\"internalType\":\"contract IPoolFactory\",\"name\":\"_poolFactory\",\"type\":\"address\"},{\"internalType\":\"contract IMasterDeployer\",\"name\":\"_masterDeployer\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"MinimumOutput\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PermitFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"batch\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IUniswapV2Minimal\",\"name\":\"pair\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"swapFee\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"twapSupport\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"minReceived\",\"type\":\"uint256\"}],\"name\":\"migrate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permitThis\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permitThisAllowed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"batch(bytes[])\":{\"details\":\"The `msg.value` should not be trusted for any method callable from this function.\",\"params\":{\"data\":\"ABI-encoded params for each of the calls to make to this contract.\"},\"returns\":{\"results\":\"The results from each of the calls passed in via `data`.\"}},\"migrate(address,uint256,uint256,bool,uint256)\":{\"details\":\"If the pool with the current conditions doesn't exist it will be deployed. \",\"params\":{\"amount\":\"Liquidity amount (Lp token balance) to be migrated.\",\"minReceived\":\"Slippage protection for minting liquidity on the Trident CP pool.\",\"pair\":\"Uniswap V2 style liquidity pool address.\",\"swapFee\":\"Swap fee of the Trident CP pool we are migrating into.\",\"twapSupport\":\"Whether the Trident CP pool we are migrating into supports twap oracles.\"}},\"permitThis(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"amount\":\"Token amount to grant spending right over.\",\"deadline\":\"Termination for signed approval (UTC timestamp in seconds).\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"token\":\"Address of ERC-20 token.\",\"v\":\"The recovery byte of the signature.\"}},\"permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"expiry\":\"Termination for signed approval - UTC timestamp in seconds.\",\"nonce\":\"Token owner's nonce - increases at each call to {permit}.\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"token\":\"Address of ERC-20 token.\",\"v\":\"The recovery byte of the signature.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"batch(bytes[])\":{\"notice\":\"Provides batch function calls for this contract and returns the data from all of them if they all succeed. Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\"},\"migrate(address,uint256,uint256,bool,uint256)\":{\"notice\":\"Function to migrate existing Sushiswap or other Uniswap V2 style pools to Trident.\"},\"permitThis(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Provides EIP-2612 signed approval for this contract to spend user tokens.\"},\"permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Provides DAI-derived signed approval for this contract to spend user tokens.\"}},\"notice\":\"Liquidity migrator from UniV2 style pool to Trident Constant product pool.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/migration/TridentSushiRollCP.sol\":\"TridentSushiRollCP\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @dev Use a library or custom safeTransfer{From} functions when dealing with unknown tokens!\\ninterface IERC20 {\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    function totalSupply() external view returns (uint256);\\n\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    function approve(address spender, uint256 amount) external returns (bool);\\n}\\n\",\"keccak256\":\"0x41da4ec4920467246a08c3d7d653f1327e8508e6bc29e946232cf87cea7e283f\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPoolFactory.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployment interface.\\ninterface IPoolFactory {\\n    function deployPool(bytes calldata _deployData) external returns (address pool);\\n\\n    function configAddress(bytes32 data) external returns (address pool);\\n}\\n\",\"keccak256\":\"0x03b9677a7914f97ca3ae57deb690cb80d0f1ef4d3541573b4dee6d3cebd5df2e\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentRouter.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool router interface.\\ninterface ITridentRouter {\\n    struct Path {\\n        address pool;\\n        bytes data;\\n    }\\n\\n    struct ExactInputSingleParams {\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n        address pool;\\n        address tokenIn;\\n        bytes data;\\n    }\\n\\n    struct ExactInputParams {\\n        address tokenIn;\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n        Path[] path;\\n    }\\n\\n    struct TokenInput {\\n        address token;\\n        bool native;\\n        uint256 amount;\\n    }\\n\\n    struct InitialPath {\\n        address tokenIn;\\n        address pool;\\n        bool native;\\n        uint256 amount;\\n        bytes data;\\n    }\\n\\n    struct PercentagePath {\\n        address tokenIn;\\n        address pool;\\n        uint64 balancePercentage; // Multiplied by 10^6. 100% = 100_000_000\\n        bytes data;\\n    }\\n\\n    struct Output {\\n        address token;\\n        address to;\\n        bool unwrapBento;\\n        uint256 minAmount;\\n    }\\n\\n    struct ComplexPathParams {\\n        InitialPath[] initialPath;\\n        PercentagePath[] percentagePath;\\n        Output[] output;\\n    }\\n}\\n\",\"keccak256\":\"0x40f1af6b213ff8827d515460f9057eb87ddc35d8020501f727d229ea239cbf24\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IUniswapV2Minimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\n\\n/// @notice Minimal Uniswap V2 LP interface.\\ninterface IUniswapV2Minimal is IERC20 {\\n    function token0() external view returns (address);\\n\\n    function token1() external view returns (address);\\n\\n    function burn(address to) external returns (uint256 amount0, uint256 amount1);\\n}\\n\",\"keccak256\":\"0x674f8b036659f1c29d1c5a7e85f3067949f3a3239bc5cf17f476dc83721a0279\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/migration/TridentSushiRollCP.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity 0.8.7;\\n\\nimport \\\"../utils/TridentBatchable.sol\\\";\\nimport \\\"../utils/TridentPermit.sol\\\";\\nimport \\\"../interfaces/IBentoBoxMinimal.sol\\\";\\nimport \\\"../interfaces/ITridentRouter.sol\\\";\\nimport \\\"../interfaces/IMasterDeployer.sol\\\";\\nimport \\\"../interfaces/IPoolFactory.sol\\\";\\nimport \\\"../interfaces/IUniswapV2Minimal.sol\\\";\\nimport \\\"../interfaces/IPool.sol\\\";\\n\\n/// @notice Liquidity migrator from UniV2 style pool to Trident Constant product pool.\\ncontract TridentSushiRollCP is TridentBatchable, TridentPermit {\\n    error MinimumOutput();\\n\\n    IBentoBoxMinimal internal immutable bentoBox;\\n    IPoolFactory internal immutable poolFactory;\\n    IMasterDeployer internal immutable masterDeployer;\\n\\n    constructor(\\n        IBentoBoxMinimal _bentoBox,\\n        IPoolFactory _poolFactory,\\n        IMasterDeployer _masterDeployer\\n    ) {\\n        bentoBox = _bentoBox;\\n        poolFactory = _poolFactory;\\n        masterDeployer = _masterDeployer;\\n    }\\n\\n    /** @notice Function to migrate existing Sushiswap or other Uniswap V2 style pools to Trident.\\n        @param pair Uniswap V2 style liquidity pool address.\\n        @param amount Liquidity amount (Lp token balance) to be migrated.\\n        @param swapFee Swap fee of the Trident CP pool we are migrating into.\\n        @param twapSupport Whether the Trident CP pool we are migrating into supports twap oracles.\\n        @param minReceived Slippage protection for minting liquidity on the Trident CP pool.\\n        @dev If the pool with the current conditions doesn't exist it will be deployed. */\\n    function migrate(\\n        IUniswapV2Minimal pair,\\n        uint256 amount,\\n        uint256 swapFee,\\n        bool twapSupport,\\n        uint256 minReceived\\n    ) external returns (uint256 liquidity) {\\n        address token0 = pair.token0();\\n        address token1 = pair.token1();\\n\\n        bytes memory poolData = abi.encode(token0, token1, swapFee, twapSupport);\\n        address tridentPool = poolFactory.configAddress(keccak256(poolData));\\n\\n        if (tridentPool == address(0)) {\\n            tridentPool = masterDeployer.deployPool(address(poolFactory), poolData);\\n        }\\n\\n        pair.transferFrom(msg.sender, address(pair), amount);\\n        (uint256 amount0, uint256 amount1) = pair.burn(address(bentoBox));\\n\\n        bentoBox.deposit(token0, address(bentoBox), tridentPool, amount0, 0);\\n        bentoBox.deposit(token1, address(bentoBox), tridentPool, amount1, 0);\\n\\n        liquidity = IPool(tridentPool).mint(abi.encode(msg.sender));\\n\\n        if (liquidity < minReceived) revert MinimumOutput();\\n    }\\n}\\n\",\"keccak256\":\"0x972ca45b82f280f36e723fbf14541193c9c76f441c83e73f1bb6f7404f3f6c33\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/TridentBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Generic contract exposing the batch call functionality.\\nabstract contract TridentBatchable {\\n    /// @notice Provides batch function calls for this contract and returns the data from all of them if they all succeed.\\n    /// Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\\n    /// @dev The `msg.value` should not be trusted for any method callable from this function.\\n    /// @param data ABI-encoded params for each of the calls to make to this contract.\\n    /// @return results The results from each of the calls passed in via `data`.\\n    function batch(bytes[] calldata data) external payable returns (bytes[] memory results) {\\n        results = new bytes[](data.length);\\n\\n        for (uint256 i = 0; i < data.length; i++) {\\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\\n\\n            if (!success) {\\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577\\n                if (result.length < 68) revert();\\n                assembly {\\n                    result := add(result, 0x04)\\n                }\\n                revert(abi.decode(result, (string)));\\n            }\\n\\n            results[i] = result;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xba62b6a107dfc9673c0fa801b84ef151459cd62169ca88949a597d910d549659\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/TridentPermit.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Generic contract exposing the permit functionality.\\nabstract contract TridentPermit {\\n    error PermitFailed();\\n\\n    /// @notice Provides EIP-2612 signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param amount Token amount to grant spending right over.\\n    /// @param deadline Termination for signed approval (UTC timestamp in seconds).\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThis(\\n        address token,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0xd505accf, msg.sender, address(this), amount, deadline, v, r, s)); // permit(address,address,uint256,uint256,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n\\n    /// @notice Provides DAI-derived signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param nonce Token owner's nonce - increases at each call to {permit}.\\n    /// @param expiry Termination for signed approval - UTC timestamp in seconds.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThisAllowed(\\n        address token,\\n        uint256 nonce,\\n        uint256 expiry,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0x8fcbaf0c, msg.sender, address(this), nonce, expiry, true, v, r, s)); // permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n}\\n\",\"keccak256\":\"0x41a005fbeccd614c4d0027c168c7fb6ba7689504356ff9040c50d2a3c53d0ec6\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "batch(bytes[])": {
                "notice": "Provides batch function calls for this contract and returns the data from all of them if they all succeed. Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later."
              },
              "migrate(address,uint256,uint256,bool,uint256)": {
                "notice": "Function to migrate existing Sushiswap or other Uniswap V2 style pools to Trident."
              },
              "permitThis(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Provides EIP-2612 signed approval for this contract to spend user tokens."
              },
              "permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Provides DAI-derived signed approval for this contract to spend user tokens."
              }
            },
            "notice": "Liquidity migrator from UniV2 style pool to Trident Constant product pool.",
            "version": 1
          }
        }
      },
      "contracts/migration/TridentSushiRollReference.sol": {
        "IBalancerV1": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "poolAmountIn",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256[]",
                  "name": "minAmountsOut",
                  "type": "uint256[]"
                }
              ],
              "name": "exitPool",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getFinalTokens",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "exitPool(uint256,uint256[])": "b02f0b73",
              "getFinalTokens()": "be3bbd2e"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"poolAmountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFinalTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Interface for handling Balancer V1 LP.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/migration/TridentSushiRollReference.sol\":\"IBalancerV1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\"},\"contracts/migration/TridentSushiRollReference.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport \\\"../utils/TridentBatchable.sol\\\";\\nimport \\\"../utils/TridentPermit.sol\\\";\\n\\n/// @notice Interface for handling Balancer V1 LP.\\ninterface IBalancerV1 {\\n    function getFinalTokens() external view returns (address[] memory);\\n\\n    function exitPool(uint256 poolAmountIn, uint256[] calldata minAmountsOut) external;\\n}\\n\\n/// @notice Interface for handling Balancer V2 LP - `assets` aliased to address for code simplicity.\\ninterface IBalancerV2 {\\n    struct ExitPoolRequest {\\n        address[] assets;\\n        uint256[] minAmountsOut;\\n        bytes userData;\\n        bool toInternalBalance;\\n    }\\n\\n    /// @notice Returns asset tokens from a Balancer V2 pool.\\n    function getPoolTokens(bytes32 poolId) external view returns (address[] memory);\\n\\n    /// @notice Exits liquidity tokens from a Balancer V2 pool.\\n    function exitPool(\\n        bytes32 poolId,\\n        address sender,\\n        address recipient,\\n        ExitPoolRequest calldata request\\n    ) external;\\n}\\n\\n/// @notice Minimal Uniswap V2 LP interface.\\ninterface IUniswapV2Minimal {\\n    function token0() external view returns (address);\\n\\n    function token1() external view returns (address);\\n\\n    function burn(address to) external returns (uint256 amount0, uint256 amount1);\\n}\\n\\n/// @notice Interface for handling Uniswap V3 LP.\\ninterface IUniswapV3 {\\n    /// @notice Returns the position information associated with a given token ID.\\n    /// @dev Throws if the token ID is not valid.\\n    /// @param tokenId The ID of the token that represents the position\\n    /// @return nonce The nonce for permits\\n    /// @return operator The address that is approved for spending\\n    /// @return token0 The address of the token0 for a specific pool\\n    /// @return token1 The address of the token1 for a specific pool\\n    /// @return fee The fee associated with the pool\\n    /// @return tickLower The lower end of the tick range for the position\\n    /// @return tickUpper The higher end of the tick range for the position\\n    /// @return liquidity The liquidity of the position\\n    /// @return feeGrowthInside0LastX128 The fee growth of token0 as of the last action on the individual position\\n    /// @return feeGrowthInside1LastX128 The fee growth of token1 as of the last action on the individual position\\n    /// @return tokensOwed0 The uncollected amount of token0 owed to the position as of the last computation\\n    /// @return tokensOwed1 The uncollected amount of token1 owed to the position as of the last computation\\n    function positions(uint256 tokenId)\\n        external\\n        view\\n        returns (\\n            uint96 nonce,\\n            address operator,\\n            address token0,\\n            address token1,\\n            uint24 fee,\\n            int24 tickLower,\\n            int24 tickUpper,\\n            uint128 liquidity,\\n            uint256 feeGrowthInside0LastX128,\\n            uint256 feeGrowthInside1LastX128,\\n            uint128 tokensOwed0,\\n            uint128 tokensOwed1\\n        );\\n\\n    struct DecreaseLiquidityParams {\\n        uint256 tokenId;\\n        uint128 liquidity;\\n        uint256 amount0Min;\\n        uint256 amount1Min;\\n        uint256 deadline;\\n    }\\n\\n    struct CollectParams {\\n        uint256 tokenId;\\n        address recipient;\\n        uint128 amount0Max;\\n        uint128 amount1Max;\\n    }\\n\\n    // @notice Decreases the amount of liquidity in a position and accounts it to the position\\n    /// @param params tokenId The ID of the token for which liquidity is being decreased,\\n    /// amount The amount by which liquidity will be decreased,\\n    /// amount0Min The minimum amount of token0 that should be accounted for the burned liquidity,\\n    /// amount1Min The minimum amount of token1 that should be accounted for the burned liquidity,\\n    /// deadline The time by which the transaction must be included to effect the change\\n    /// @return amount0 The amount of token0 accounted to the position's tokens owed\\n    /// @return amount1 The amount of token1 accounted to the position's tokens owed\\n    function decreaseLiquidity(DecreaseLiquidityParams calldata params) external payable returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Collects up to a maximum amount of fees owed to a specific position to the recipient\\n    /// @param params tokenId The ID of the NFT for which tokens are being collected,\\n    /// recipient The account that should receive the tokens,\\n    /// amount0Max The maximum amount of token0 to collect,\\n    /// amount1Max The maximum amount of token1 to collect\\n    /// @return amount0 The amount of fees collected in token0\\n    /// @return amount1 The amount of fees collected in token1\\n    function collect(CollectParams calldata params) external payable returns (uint256 amount0, uint256 amount1);\\n}\\n\\n/// @notice Minimal Trident pool router interface.\\ninterface ITridentRouterMinimal {\\n    struct TokenInput {\\n        address token;\\n        bool native;\\n        uint256 amount;\\n    }\\n\\n    /// @notice Add liquidity to a pool.\\n    /// @param tokenInput Token address and amount to add as liquidity.\\n    /// @param pool Pool address to add liquidity to.\\n    /// @param minLiquidity Minimum output liquidity - caps slippage.\\n    /// @param data Data required by the pool to add liquidity.\\n    function addLiquidity(\\n        TokenInput[] calldata tokenInput,\\n        address pool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external payable returns (uint256 liquidity);\\n}\\n\\n/// @notice Liquidity migrator for Trident from popular pool types.\\ncontract TridentSushiRoll {\\n    /* IBalancerV2 internal immutable balancerVault;\\n    IUniswapV3 internal immutable uniNonfungiblePositionManager;\\n    ITridentRouterMinimal internal immutable tridentRouter;\\n\\n    constructor(\\n        IBalancerV2 _balancerVault,\\n        IUniswapV3 _uniNonfungiblePositionManager,\\n        ITridentRouterMinimal _tridentRouter\\n    ) {\\n        balancerVault = _balancerVault;\\n        uniNonfungiblePositionManager = _uniNonfungiblePositionManager;\\n        tridentRouter = _tridentRouter;\\n    }\\n\\n    // **** BAL MIGRATOR **** //\\n    // --------------------- //\\n\\n    function migrateFromBalancerV1toTrident(\\n        IBalancerV1 bPool,\\n        uint256 poolAmountIn,\\n        uint256[] calldata minAmountsOut,\\n        address tridentPool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        address[] memory tokens = bPool.getFinalTokens();\\n\\n        bPool.exitPool(poolAmountIn, minAmountsOut);\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](tokens.length);\\n\\n        unchecked {\\n            for (uint256 i; i < tokens.length; i++) {\\n                input[i].token = tokens[i];\\n                input[i].native = true;\\n                input[i].amount = IERC20(tokens[i]).balanceOf(address(this));\\n                IERC20(tokens[i]).approve(address(tridentRouter), input[i].amount);\\n            }\\n        }\\n\\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\\n    }\\n\\n    function migrateFromBalancerV2toTrident(\\n        bytes32 poolId,\\n        IBalancerV2.ExitPoolRequest calldata request,\\n        address tridentPool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        address[] memory tokens = balancerVault.getPoolTokens(poolId);\\n\\n        balancerVault.exitPool(poolId, msg.sender, address(this), request);\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](tokens.length);\\n\\n        unchecked {\\n            for (uint256 i; i < tokens.length; i++) {\\n                input[i].token = tokens[i];\\n                input[i].native = true;\\n                input[i].amount = IERC20(tokens[i]).balanceOf(address(this));\\n                IERC20(tokens[i]).approve(address(tridentRouter), input[i].amount);\\n            }\\n        }\\n\\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\\n    }\\n\\n    // **** UNI MIGRATOR **** //\\n    // --------------------- //\\n\\n    function migrateFromUniswapV2toTrident(\\n        address pair,\\n        uint256 _liquidity,\\n        address pool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        IERC20(pair).transferFrom(msg.sender, address(pair), _liquidity);\\n\\n        IUniswapV2Minimal(pair).burn(address(this));\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](2);\\n\\n        IERC20 token0 = IERC20(IUniswapV2Minimal(pair).token0());\\n        IERC20 token1 = IERC20(IUniswapV2Minimal(pair).token1());\\n\\n        input[0].token = address(token0);\\n        input[0].native = true;\\n        input[0].amount = token0.balanceOf(address(this));\\n\\n        input[1].token = address(token1);\\n        input[1].native = true;\\n        input[1].amount = token1.balanceOf(address(this));\\n\\n        token0.approve(address(tridentRouter), input[0].amount);\\n        token1.approve(address(tridentRouter), input[1].amount);\\n\\n        liquidity = ITridentRouterMinimal(tridentRouter).addLiquidity(input, pool, minLiquidity, data);\\n    }\\n\\n    function migrateFromUniswapV3toTrident(\\n        IUniswapV3.DecreaseLiquidityParams calldata decreaseLiqParams,\\n        IUniswapV3.CollectParams calldata collectParams,\\n        address tridentPool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        uniNonfungiblePositionManager.decreaseLiquidity(decreaseLiqParams);\\n        uniNonfungiblePositionManager.collect(collectParams);\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](2);\\n\\n        (, , address token0, , , , , , , , , ) = uniNonfungiblePositionManager.positions(decreaseLiqParams.tokenId);\\n        (, , , address token1, , , , , , , , ) = uniNonfungiblePositionManager.positions(decreaseLiqParams.tokenId);\\n\\n        input[0].token = token0;\\n        input[0].native = true;\\n        input[0].amount = IERC20(token0).balanceOf(address(this));\\n\\n        input[1].token = token1;\\n        input[1].native = true;\\n        input[1].amount = IERC20(token1).balanceOf(address(this));\\n\\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\\n    } */\\n}\\n\",\"keccak256\":\"0x4b0475aba9486ab79263b7c3c74dbe81aff5c85c6a41b10b79e5e74c6348fa5b\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/TridentBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Generic contract exposing the batch call functionality.\\nabstract contract TridentBatchable {\\n    /// @notice Provides batch function calls for this contract and returns the data from all of them if they all succeed.\\n    /// Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\\n    /// @dev The `msg.value` should not be trusted for any method callable from this function.\\n    /// @param data ABI-encoded params for each of the calls to make to this contract.\\n    /// @return results The results from each of the calls passed in via `data`.\\n    function batch(bytes[] calldata data) external payable returns (bytes[] memory results) {\\n        results = new bytes[](data.length);\\n\\n        for (uint256 i = 0; i < data.length; i++) {\\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\\n\\n            if (!success) {\\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577\\n                if (result.length < 68) revert();\\n                assembly {\\n                    result := add(result, 0x04)\\n                }\\n                revert(abi.decode(result, (string)));\\n            }\\n\\n            results[i] = result;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xba62b6a107dfc9673c0fa801b84ef151459cd62169ca88949a597d910d549659\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/TridentPermit.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Generic contract exposing the permit functionality.\\nabstract contract TridentPermit {\\n    error PermitFailed();\\n\\n    /// @notice Provides EIP-2612 signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param amount Token amount to grant spending right over.\\n    /// @param deadline Termination for signed approval (UTC timestamp in seconds).\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThis(\\n        address token,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0xd505accf, msg.sender, address(this), amount, deadline, v, r, s)); // permit(address,address,uint256,uint256,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n\\n    /// @notice Provides DAI-derived signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param nonce Token owner's nonce - increases at each call to {permit}.\\n    /// @param expiry Termination for signed approval - UTC timestamp in seconds.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThisAllowed(\\n        address token,\\n        uint256 nonce,\\n        uint256 expiry,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0x8fcbaf0c, msg.sender, address(this), nonce, expiry, true, v, r, s)); // permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n}\\n\",\"keccak256\":\"0x41a005fbeccd614c4d0027c168c7fb6ba7689504356ff9040c50d2a3c53d0ec6\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Interface for handling Balancer V1 LP.",
            "version": 1
          }
        },
        "IBalancerV2": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "poolId",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "address[]",
                      "name": "assets",
                      "type": "address[]"
                    },
                    {
                      "internalType": "uint256[]",
                      "name": "minAmountsOut",
                      "type": "uint256[]"
                    },
                    {
                      "internalType": "bytes",
                      "name": "userData",
                      "type": "bytes"
                    },
                    {
                      "internalType": "bool",
                      "name": "toInternalBalance",
                      "type": "bool"
                    }
                  ],
                  "internalType": "struct IBalancerV2.ExitPoolRequest",
                  "name": "request",
                  "type": "tuple"
                }
              ],
              "name": "exitPool",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "poolId",
                  "type": "bytes32"
                }
              ],
              "name": "getPoolTokens",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "exitPool(bytes32,address,address,(address[],uint256[],bytes,bool))": "8bdb3913",
              "getPoolTokens(bytes32)": "f94d4668"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"minAmountsOut\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"userData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"toInternalBalance\",\"type\":\"bool\"}],\"internalType\":\"struct IBalancerV2.ExitPoolRequest\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"exitPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getPoolTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"exitPool(bytes32,address,address,(address[],uint256[],bytes,bool))\":{\"notice\":\"Exits liquidity tokens from a Balancer V2 pool.\"},\"getPoolTokens(bytes32)\":{\"notice\":\"Returns asset tokens from a Balancer V2 pool.\"}},\"notice\":\"Interface for handling Balancer V2 LP - `assets` aliased to address for code simplicity.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/migration/TridentSushiRollReference.sol\":\"IBalancerV2\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\"},\"contracts/migration/TridentSushiRollReference.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport \\\"../utils/TridentBatchable.sol\\\";\\nimport \\\"../utils/TridentPermit.sol\\\";\\n\\n/// @notice Interface for handling Balancer V1 LP.\\ninterface IBalancerV1 {\\n    function getFinalTokens() external view returns (address[] memory);\\n\\n    function exitPool(uint256 poolAmountIn, uint256[] calldata minAmountsOut) external;\\n}\\n\\n/// @notice Interface for handling Balancer V2 LP - `assets` aliased to address for code simplicity.\\ninterface IBalancerV2 {\\n    struct ExitPoolRequest {\\n        address[] assets;\\n        uint256[] minAmountsOut;\\n        bytes userData;\\n        bool toInternalBalance;\\n    }\\n\\n    /// @notice Returns asset tokens from a Balancer V2 pool.\\n    function getPoolTokens(bytes32 poolId) external view returns (address[] memory);\\n\\n    /// @notice Exits liquidity tokens from a Balancer V2 pool.\\n    function exitPool(\\n        bytes32 poolId,\\n        address sender,\\n        address recipient,\\n        ExitPoolRequest calldata request\\n    ) external;\\n}\\n\\n/// @notice Minimal Uniswap V2 LP interface.\\ninterface IUniswapV2Minimal {\\n    function token0() external view returns (address);\\n\\n    function token1() external view returns (address);\\n\\n    function burn(address to) external returns (uint256 amount0, uint256 amount1);\\n}\\n\\n/// @notice Interface for handling Uniswap V3 LP.\\ninterface IUniswapV3 {\\n    /// @notice Returns the position information associated with a given token ID.\\n    /// @dev Throws if the token ID is not valid.\\n    /// @param tokenId The ID of the token that represents the position\\n    /// @return nonce The nonce for permits\\n    /// @return operator The address that is approved for spending\\n    /// @return token0 The address of the token0 for a specific pool\\n    /// @return token1 The address of the token1 for a specific pool\\n    /// @return fee The fee associated with the pool\\n    /// @return tickLower The lower end of the tick range for the position\\n    /// @return tickUpper The higher end of the tick range for the position\\n    /// @return liquidity The liquidity of the position\\n    /// @return feeGrowthInside0LastX128 The fee growth of token0 as of the last action on the individual position\\n    /// @return feeGrowthInside1LastX128 The fee growth of token1 as of the last action on the individual position\\n    /// @return tokensOwed0 The uncollected amount of token0 owed to the position as of the last computation\\n    /// @return tokensOwed1 The uncollected amount of token1 owed to the position as of the last computation\\n    function positions(uint256 tokenId)\\n        external\\n        view\\n        returns (\\n            uint96 nonce,\\n            address operator,\\n            address token0,\\n            address token1,\\n            uint24 fee,\\n            int24 tickLower,\\n            int24 tickUpper,\\n            uint128 liquidity,\\n            uint256 feeGrowthInside0LastX128,\\n            uint256 feeGrowthInside1LastX128,\\n            uint128 tokensOwed0,\\n            uint128 tokensOwed1\\n        );\\n\\n    struct DecreaseLiquidityParams {\\n        uint256 tokenId;\\n        uint128 liquidity;\\n        uint256 amount0Min;\\n        uint256 amount1Min;\\n        uint256 deadline;\\n    }\\n\\n    struct CollectParams {\\n        uint256 tokenId;\\n        address recipient;\\n        uint128 amount0Max;\\n        uint128 amount1Max;\\n    }\\n\\n    // @notice Decreases the amount of liquidity in a position and accounts it to the position\\n    /// @param params tokenId The ID of the token for which liquidity is being decreased,\\n    /// amount The amount by which liquidity will be decreased,\\n    /// amount0Min The minimum amount of token0 that should be accounted for the burned liquidity,\\n    /// amount1Min The minimum amount of token1 that should be accounted for the burned liquidity,\\n    /// deadline The time by which the transaction must be included to effect the change\\n    /// @return amount0 The amount of token0 accounted to the position's tokens owed\\n    /// @return amount1 The amount of token1 accounted to the position's tokens owed\\n    function decreaseLiquidity(DecreaseLiquidityParams calldata params) external payable returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Collects up to a maximum amount of fees owed to a specific position to the recipient\\n    /// @param params tokenId The ID of the NFT for which tokens are being collected,\\n    /// recipient The account that should receive the tokens,\\n    /// amount0Max The maximum amount of token0 to collect,\\n    /// amount1Max The maximum amount of token1 to collect\\n    /// @return amount0 The amount of fees collected in token0\\n    /// @return amount1 The amount of fees collected in token1\\n    function collect(CollectParams calldata params) external payable returns (uint256 amount0, uint256 amount1);\\n}\\n\\n/// @notice Minimal Trident pool router interface.\\ninterface ITridentRouterMinimal {\\n    struct TokenInput {\\n        address token;\\n        bool native;\\n        uint256 amount;\\n    }\\n\\n    /// @notice Add liquidity to a pool.\\n    /// @param tokenInput Token address and amount to add as liquidity.\\n    /// @param pool Pool address to add liquidity to.\\n    /// @param minLiquidity Minimum output liquidity - caps slippage.\\n    /// @param data Data required by the pool to add liquidity.\\n    function addLiquidity(\\n        TokenInput[] calldata tokenInput,\\n        address pool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external payable returns (uint256 liquidity);\\n}\\n\\n/// @notice Liquidity migrator for Trident from popular pool types.\\ncontract TridentSushiRoll {\\n    /* IBalancerV2 internal immutable balancerVault;\\n    IUniswapV3 internal immutable uniNonfungiblePositionManager;\\n    ITridentRouterMinimal internal immutable tridentRouter;\\n\\n    constructor(\\n        IBalancerV2 _balancerVault,\\n        IUniswapV3 _uniNonfungiblePositionManager,\\n        ITridentRouterMinimal _tridentRouter\\n    ) {\\n        balancerVault = _balancerVault;\\n        uniNonfungiblePositionManager = _uniNonfungiblePositionManager;\\n        tridentRouter = _tridentRouter;\\n    }\\n\\n    // **** BAL MIGRATOR **** //\\n    // --------------------- //\\n\\n    function migrateFromBalancerV1toTrident(\\n        IBalancerV1 bPool,\\n        uint256 poolAmountIn,\\n        uint256[] calldata minAmountsOut,\\n        address tridentPool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        address[] memory tokens = bPool.getFinalTokens();\\n\\n        bPool.exitPool(poolAmountIn, minAmountsOut);\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](tokens.length);\\n\\n        unchecked {\\n            for (uint256 i; i < tokens.length; i++) {\\n                input[i].token = tokens[i];\\n                input[i].native = true;\\n                input[i].amount = IERC20(tokens[i]).balanceOf(address(this));\\n                IERC20(tokens[i]).approve(address(tridentRouter), input[i].amount);\\n            }\\n        }\\n\\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\\n    }\\n\\n    function migrateFromBalancerV2toTrident(\\n        bytes32 poolId,\\n        IBalancerV2.ExitPoolRequest calldata request,\\n        address tridentPool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        address[] memory tokens = balancerVault.getPoolTokens(poolId);\\n\\n        balancerVault.exitPool(poolId, msg.sender, address(this), request);\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](tokens.length);\\n\\n        unchecked {\\n            for (uint256 i; i < tokens.length; i++) {\\n                input[i].token = tokens[i];\\n                input[i].native = true;\\n                input[i].amount = IERC20(tokens[i]).balanceOf(address(this));\\n                IERC20(tokens[i]).approve(address(tridentRouter), input[i].amount);\\n            }\\n        }\\n\\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\\n    }\\n\\n    // **** UNI MIGRATOR **** //\\n    // --------------------- //\\n\\n    function migrateFromUniswapV2toTrident(\\n        address pair,\\n        uint256 _liquidity,\\n        address pool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        IERC20(pair).transferFrom(msg.sender, address(pair), _liquidity);\\n\\n        IUniswapV2Minimal(pair).burn(address(this));\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](2);\\n\\n        IERC20 token0 = IERC20(IUniswapV2Minimal(pair).token0());\\n        IERC20 token1 = IERC20(IUniswapV2Minimal(pair).token1());\\n\\n        input[0].token = address(token0);\\n        input[0].native = true;\\n        input[0].amount = token0.balanceOf(address(this));\\n\\n        input[1].token = address(token1);\\n        input[1].native = true;\\n        input[1].amount = token1.balanceOf(address(this));\\n\\n        token0.approve(address(tridentRouter), input[0].amount);\\n        token1.approve(address(tridentRouter), input[1].amount);\\n\\n        liquidity = ITridentRouterMinimal(tridentRouter).addLiquidity(input, pool, minLiquidity, data);\\n    }\\n\\n    function migrateFromUniswapV3toTrident(\\n        IUniswapV3.DecreaseLiquidityParams calldata decreaseLiqParams,\\n        IUniswapV3.CollectParams calldata collectParams,\\n        address tridentPool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        uniNonfungiblePositionManager.decreaseLiquidity(decreaseLiqParams);\\n        uniNonfungiblePositionManager.collect(collectParams);\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](2);\\n\\n        (, , address token0, , , , , , , , , ) = uniNonfungiblePositionManager.positions(decreaseLiqParams.tokenId);\\n        (, , , address token1, , , , , , , , ) = uniNonfungiblePositionManager.positions(decreaseLiqParams.tokenId);\\n\\n        input[0].token = token0;\\n        input[0].native = true;\\n        input[0].amount = IERC20(token0).balanceOf(address(this));\\n\\n        input[1].token = token1;\\n        input[1].native = true;\\n        input[1].amount = IERC20(token1).balanceOf(address(this));\\n\\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\\n    } */\\n}\\n\",\"keccak256\":\"0x4b0475aba9486ab79263b7c3c74dbe81aff5c85c6a41b10b79e5e74c6348fa5b\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/TridentBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Generic contract exposing the batch call functionality.\\nabstract contract TridentBatchable {\\n    /// @notice Provides batch function calls for this contract and returns the data from all of them if they all succeed.\\n    /// Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\\n    /// @dev The `msg.value` should not be trusted for any method callable from this function.\\n    /// @param data ABI-encoded params for each of the calls to make to this contract.\\n    /// @return results The results from each of the calls passed in via `data`.\\n    function batch(bytes[] calldata data) external payable returns (bytes[] memory results) {\\n        results = new bytes[](data.length);\\n\\n        for (uint256 i = 0; i < data.length; i++) {\\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\\n\\n            if (!success) {\\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577\\n                if (result.length < 68) revert();\\n                assembly {\\n                    result := add(result, 0x04)\\n                }\\n                revert(abi.decode(result, (string)));\\n            }\\n\\n            results[i] = result;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xba62b6a107dfc9673c0fa801b84ef151459cd62169ca88949a597d910d549659\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/TridentPermit.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Generic contract exposing the permit functionality.\\nabstract contract TridentPermit {\\n    error PermitFailed();\\n\\n    /// @notice Provides EIP-2612 signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param amount Token amount to grant spending right over.\\n    /// @param deadline Termination for signed approval (UTC timestamp in seconds).\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThis(\\n        address token,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0xd505accf, msg.sender, address(this), amount, deadline, v, r, s)); // permit(address,address,uint256,uint256,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n\\n    /// @notice Provides DAI-derived signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param nonce Token owner's nonce - increases at each call to {permit}.\\n    /// @param expiry Termination for signed approval - UTC timestamp in seconds.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThisAllowed(\\n        address token,\\n        uint256 nonce,\\n        uint256 expiry,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0x8fcbaf0c, msg.sender, address(this), nonce, expiry, true, v, r, s)); // permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n}\\n\",\"keccak256\":\"0x41a005fbeccd614c4d0027c168c7fb6ba7689504356ff9040c50d2a3c53d0ec6\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "exitPool(bytes32,address,address,(address[],uint256[],bytes,bool))": {
                "notice": "Exits liquidity tokens from a Balancer V2 pool."
              },
              "getPoolTokens(bytes32)": {
                "notice": "Returns asset tokens from a Balancer V2 pool."
              }
            },
            "notice": "Interface for handling Balancer V2 LP - `assets` aliased to address for code simplicity.",
            "version": 1
          }
        },
        "ITridentRouterMinimal": {
          "abi": [
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "bool",
                      "name": "native",
                      "type": "bool"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct ITridentRouterMinimal.TokenInput[]",
                  "name": "tokenInput",
                  "type": "tuple[]"
                },
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "minLiquidity",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "addLiquidity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "addLiquidity((address,bool,uint256)[],address,uint256,bytes)": {
                "params": {
                  "data": "Data required by the pool to add liquidity.",
                  "minLiquidity": "Minimum output liquidity - caps slippage.",
                  "pool": "Pool address to add liquidity to.",
                  "tokenInput": "Token address and amount to add as liquidity."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "addLiquidity((address,bool,uint256)[],address,uint256,bytes)": "2cfcb94f"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"native\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ITridentRouterMinimal.TokenInput[]\",\"name\":\"tokenInput\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minLiquidity\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addLiquidity((address,bool,uint256)[],address,uint256,bytes)\":{\"params\":{\"data\":\"Data required by the pool to add liquidity.\",\"minLiquidity\":\"Minimum output liquidity - caps slippage.\",\"pool\":\"Pool address to add liquidity to.\",\"tokenInput\":\"Token address and amount to add as liquidity.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addLiquidity((address,bool,uint256)[],address,uint256,bytes)\":{\"notice\":\"Add liquidity to a pool.\"}},\"notice\":\"Minimal Trident pool router interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/migration/TridentSushiRollReference.sol\":\"ITridentRouterMinimal\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\"},\"contracts/migration/TridentSushiRollReference.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport \\\"../utils/TridentBatchable.sol\\\";\\nimport \\\"../utils/TridentPermit.sol\\\";\\n\\n/// @notice Interface for handling Balancer V1 LP.\\ninterface IBalancerV1 {\\n    function getFinalTokens() external view returns (address[] memory);\\n\\n    function exitPool(uint256 poolAmountIn, uint256[] calldata minAmountsOut) external;\\n}\\n\\n/// @notice Interface for handling Balancer V2 LP - `assets` aliased to address for code simplicity.\\ninterface IBalancerV2 {\\n    struct ExitPoolRequest {\\n        address[] assets;\\n        uint256[] minAmountsOut;\\n        bytes userData;\\n        bool toInternalBalance;\\n    }\\n\\n    /// @notice Returns asset tokens from a Balancer V2 pool.\\n    function getPoolTokens(bytes32 poolId) external view returns (address[] memory);\\n\\n    /// @notice Exits liquidity tokens from a Balancer V2 pool.\\n    function exitPool(\\n        bytes32 poolId,\\n        address sender,\\n        address recipient,\\n        ExitPoolRequest calldata request\\n    ) external;\\n}\\n\\n/// @notice Minimal Uniswap V2 LP interface.\\ninterface IUniswapV2Minimal {\\n    function token0() external view returns (address);\\n\\n    function token1() external view returns (address);\\n\\n    function burn(address to) external returns (uint256 amount0, uint256 amount1);\\n}\\n\\n/// @notice Interface for handling Uniswap V3 LP.\\ninterface IUniswapV3 {\\n    /// @notice Returns the position information associated with a given token ID.\\n    /// @dev Throws if the token ID is not valid.\\n    /// @param tokenId The ID of the token that represents the position\\n    /// @return nonce The nonce for permits\\n    /// @return operator The address that is approved for spending\\n    /// @return token0 The address of the token0 for a specific pool\\n    /// @return token1 The address of the token1 for a specific pool\\n    /// @return fee The fee associated with the pool\\n    /// @return tickLower The lower end of the tick range for the position\\n    /// @return tickUpper The higher end of the tick range for the position\\n    /// @return liquidity The liquidity of the position\\n    /// @return feeGrowthInside0LastX128 The fee growth of token0 as of the last action on the individual position\\n    /// @return feeGrowthInside1LastX128 The fee growth of token1 as of the last action on the individual position\\n    /// @return tokensOwed0 The uncollected amount of token0 owed to the position as of the last computation\\n    /// @return tokensOwed1 The uncollected amount of token1 owed to the position as of the last computation\\n    function positions(uint256 tokenId)\\n        external\\n        view\\n        returns (\\n            uint96 nonce,\\n            address operator,\\n            address token0,\\n            address token1,\\n            uint24 fee,\\n            int24 tickLower,\\n            int24 tickUpper,\\n            uint128 liquidity,\\n            uint256 feeGrowthInside0LastX128,\\n            uint256 feeGrowthInside1LastX128,\\n            uint128 tokensOwed0,\\n            uint128 tokensOwed1\\n        );\\n\\n    struct DecreaseLiquidityParams {\\n        uint256 tokenId;\\n        uint128 liquidity;\\n        uint256 amount0Min;\\n        uint256 amount1Min;\\n        uint256 deadline;\\n    }\\n\\n    struct CollectParams {\\n        uint256 tokenId;\\n        address recipient;\\n        uint128 amount0Max;\\n        uint128 amount1Max;\\n    }\\n\\n    // @notice Decreases the amount of liquidity in a position and accounts it to the position\\n    /// @param params tokenId The ID of the token for which liquidity is being decreased,\\n    /// amount The amount by which liquidity will be decreased,\\n    /// amount0Min The minimum amount of token0 that should be accounted for the burned liquidity,\\n    /// amount1Min The minimum amount of token1 that should be accounted for the burned liquidity,\\n    /// deadline The time by which the transaction must be included to effect the change\\n    /// @return amount0 The amount of token0 accounted to the position's tokens owed\\n    /// @return amount1 The amount of token1 accounted to the position's tokens owed\\n    function decreaseLiquidity(DecreaseLiquidityParams calldata params) external payable returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Collects up to a maximum amount of fees owed to a specific position to the recipient\\n    /// @param params tokenId The ID of the NFT for which tokens are being collected,\\n    /// recipient The account that should receive the tokens,\\n    /// amount0Max The maximum amount of token0 to collect,\\n    /// amount1Max The maximum amount of token1 to collect\\n    /// @return amount0 The amount of fees collected in token0\\n    /// @return amount1 The amount of fees collected in token1\\n    function collect(CollectParams calldata params) external payable returns (uint256 amount0, uint256 amount1);\\n}\\n\\n/// @notice Minimal Trident pool router interface.\\ninterface ITridentRouterMinimal {\\n    struct TokenInput {\\n        address token;\\n        bool native;\\n        uint256 amount;\\n    }\\n\\n    /// @notice Add liquidity to a pool.\\n    /// @param tokenInput Token address and amount to add as liquidity.\\n    /// @param pool Pool address to add liquidity to.\\n    /// @param minLiquidity Minimum output liquidity - caps slippage.\\n    /// @param data Data required by the pool to add liquidity.\\n    function addLiquidity(\\n        TokenInput[] calldata tokenInput,\\n        address pool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external payable returns (uint256 liquidity);\\n}\\n\\n/// @notice Liquidity migrator for Trident from popular pool types.\\ncontract TridentSushiRoll {\\n    /* IBalancerV2 internal immutable balancerVault;\\n    IUniswapV3 internal immutable uniNonfungiblePositionManager;\\n    ITridentRouterMinimal internal immutable tridentRouter;\\n\\n    constructor(\\n        IBalancerV2 _balancerVault,\\n        IUniswapV3 _uniNonfungiblePositionManager,\\n        ITridentRouterMinimal _tridentRouter\\n    ) {\\n        balancerVault = _balancerVault;\\n        uniNonfungiblePositionManager = _uniNonfungiblePositionManager;\\n        tridentRouter = _tridentRouter;\\n    }\\n\\n    // **** BAL MIGRATOR **** //\\n    // --------------------- //\\n\\n    function migrateFromBalancerV1toTrident(\\n        IBalancerV1 bPool,\\n        uint256 poolAmountIn,\\n        uint256[] calldata minAmountsOut,\\n        address tridentPool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        address[] memory tokens = bPool.getFinalTokens();\\n\\n        bPool.exitPool(poolAmountIn, minAmountsOut);\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](tokens.length);\\n\\n        unchecked {\\n            for (uint256 i; i < tokens.length; i++) {\\n                input[i].token = tokens[i];\\n                input[i].native = true;\\n                input[i].amount = IERC20(tokens[i]).balanceOf(address(this));\\n                IERC20(tokens[i]).approve(address(tridentRouter), input[i].amount);\\n            }\\n        }\\n\\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\\n    }\\n\\n    function migrateFromBalancerV2toTrident(\\n        bytes32 poolId,\\n        IBalancerV2.ExitPoolRequest calldata request,\\n        address tridentPool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        address[] memory tokens = balancerVault.getPoolTokens(poolId);\\n\\n        balancerVault.exitPool(poolId, msg.sender, address(this), request);\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](tokens.length);\\n\\n        unchecked {\\n            for (uint256 i; i < tokens.length; i++) {\\n                input[i].token = tokens[i];\\n                input[i].native = true;\\n                input[i].amount = IERC20(tokens[i]).balanceOf(address(this));\\n                IERC20(tokens[i]).approve(address(tridentRouter), input[i].amount);\\n            }\\n        }\\n\\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\\n    }\\n\\n    // **** UNI MIGRATOR **** //\\n    // --------------------- //\\n\\n    function migrateFromUniswapV2toTrident(\\n        address pair,\\n        uint256 _liquidity,\\n        address pool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        IERC20(pair).transferFrom(msg.sender, address(pair), _liquidity);\\n\\n        IUniswapV2Minimal(pair).burn(address(this));\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](2);\\n\\n        IERC20 token0 = IERC20(IUniswapV2Minimal(pair).token0());\\n        IERC20 token1 = IERC20(IUniswapV2Minimal(pair).token1());\\n\\n        input[0].token = address(token0);\\n        input[0].native = true;\\n        input[0].amount = token0.balanceOf(address(this));\\n\\n        input[1].token = address(token1);\\n        input[1].native = true;\\n        input[1].amount = token1.balanceOf(address(this));\\n\\n        token0.approve(address(tridentRouter), input[0].amount);\\n        token1.approve(address(tridentRouter), input[1].amount);\\n\\n        liquidity = ITridentRouterMinimal(tridentRouter).addLiquidity(input, pool, minLiquidity, data);\\n    }\\n\\n    function migrateFromUniswapV3toTrident(\\n        IUniswapV3.DecreaseLiquidityParams calldata decreaseLiqParams,\\n        IUniswapV3.CollectParams calldata collectParams,\\n        address tridentPool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        uniNonfungiblePositionManager.decreaseLiquidity(decreaseLiqParams);\\n        uniNonfungiblePositionManager.collect(collectParams);\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](2);\\n\\n        (, , address token0, , , , , , , , , ) = uniNonfungiblePositionManager.positions(decreaseLiqParams.tokenId);\\n        (, , , address token1, , , , , , , , ) = uniNonfungiblePositionManager.positions(decreaseLiqParams.tokenId);\\n\\n        input[0].token = token0;\\n        input[0].native = true;\\n        input[0].amount = IERC20(token0).balanceOf(address(this));\\n\\n        input[1].token = token1;\\n        input[1].native = true;\\n        input[1].amount = IERC20(token1).balanceOf(address(this));\\n\\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\\n    } */\\n}\\n\",\"keccak256\":\"0x4b0475aba9486ab79263b7c3c74dbe81aff5c85c6a41b10b79e5e74c6348fa5b\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/TridentBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Generic contract exposing the batch call functionality.\\nabstract contract TridentBatchable {\\n    /// @notice Provides batch function calls for this contract and returns the data from all of them if they all succeed.\\n    /// Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\\n    /// @dev The `msg.value` should not be trusted for any method callable from this function.\\n    /// @param data ABI-encoded params for each of the calls to make to this contract.\\n    /// @return results The results from each of the calls passed in via `data`.\\n    function batch(bytes[] calldata data) external payable returns (bytes[] memory results) {\\n        results = new bytes[](data.length);\\n\\n        for (uint256 i = 0; i < data.length; i++) {\\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\\n\\n            if (!success) {\\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577\\n                if (result.length < 68) revert();\\n                assembly {\\n                    result := add(result, 0x04)\\n                }\\n                revert(abi.decode(result, (string)));\\n            }\\n\\n            results[i] = result;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xba62b6a107dfc9673c0fa801b84ef151459cd62169ca88949a597d910d549659\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/TridentPermit.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Generic contract exposing the permit functionality.\\nabstract contract TridentPermit {\\n    error PermitFailed();\\n\\n    /// @notice Provides EIP-2612 signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param amount Token amount to grant spending right over.\\n    /// @param deadline Termination for signed approval (UTC timestamp in seconds).\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThis(\\n        address token,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0xd505accf, msg.sender, address(this), amount, deadline, v, r, s)); // permit(address,address,uint256,uint256,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n\\n    /// @notice Provides DAI-derived signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param nonce Token owner's nonce - increases at each call to {permit}.\\n    /// @param expiry Termination for signed approval - UTC timestamp in seconds.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThisAllowed(\\n        address token,\\n        uint256 nonce,\\n        uint256 expiry,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0x8fcbaf0c, msg.sender, address(this), nonce, expiry, true, v, r, s)); // permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n}\\n\",\"keccak256\":\"0x41a005fbeccd614c4d0027c168c7fb6ba7689504356ff9040c50d2a3c53d0ec6\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "addLiquidity((address,bool,uint256)[],address,uint256,bytes)": {
                "notice": "Add liquidity to a pool."
              }
            },
            "notice": "Minimal Trident pool router interface.",
            "version": 1
          }
        },
        "IUniswapV2Minimal": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount0",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount1",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token0",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token1",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "burn(address)": "89afcb44",
              "token0()": "0dfe1681",
              "token1()": "d21220a7"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Minimal Uniswap V2 LP interface.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/migration/TridentSushiRollReference.sol\":\"IUniswapV2Minimal\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\"},\"contracts/migration/TridentSushiRollReference.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport \\\"../utils/TridentBatchable.sol\\\";\\nimport \\\"../utils/TridentPermit.sol\\\";\\n\\n/// @notice Interface for handling Balancer V1 LP.\\ninterface IBalancerV1 {\\n    function getFinalTokens() external view returns (address[] memory);\\n\\n    function exitPool(uint256 poolAmountIn, uint256[] calldata minAmountsOut) external;\\n}\\n\\n/// @notice Interface for handling Balancer V2 LP - `assets` aliased to address for code simplicity.\\ninterface IBalancerV2 {\\n    struct ExitPoolRequest {\\n        address[] assets;\\n        uint256[] minAmountsOut;\\n        bytes userData;\\n        bool toInternalBalance;\\n    }\\n\\n    /// @notice Returns asset tokens from a Balancer V2 pool.\\n    function getPoolTokens(bytes32 poolId) external view returns (address[] memory);\\n\\n    /// @notice Exits liquidity tokens from a Balancer V2 pool.\\n    function exitPool(\\n        bytes32 poolId,\\n        address sender,\\n        address recipient,\\n        ExitPoolRequest calldata request\\n    ) external;\\n}\\n\\n/// @notice Minimal Uniswap V2 LP interface.\\ninterface IUniswapV2Minimal {\\n    function token0() external view returns (address);\\n\\n    function token1() external view returns (address);\\n\\n    function burn(address to) external returns (uint256 amount0, uint256 amount1);\\n}\\n\\n/// @notice Interface for handling Uniswap V3 LP.\\ninterface IUniswapV3 {\\n    /// @notice Returns the position information associated with a given token ID.\\n    /// @dev Throws if the token ID is not valid.\\n    /// @param tokenId The ID of the token that represents the position\\n    /// @return nonce The nonce for permits\\n    /// @return operator The address that is approved for spending\\n    /// @return token0 The address of the token0 for a specific pool\\n    /// @return token1 The address of the token1 for a specific pool\\n    /// @return fee The fee associated with the pool\\n    /// @return tickLower The lower end of the tick range for the position\\n    /// @return tickUpper The higher end of the tick range for the position\\n    /// @return liquidity The liquidity of the position\\n    /// @return feeGrowthInside0LastX128 The fee growth of token0 as of the last action on the individual position\\n    /// @return feeGrowthInside1LastX128 The fee growth of token1 as of the last action on the individual position\\n    /// @return tokensOwed0 The uncollected amount of token0 owed to the position as of the last computation\\n    /// @return tokensOwed1 The uncollected amount of token1 owed to the position as of the last computation\\n    function positions(uint256 tokenId)\\n        external\\n        view\\n        returns (\\n            uint96 nonce,\\n            address operator,\\n            address token0,\\n            address token1,\\n            uint24 fee,\\n            int24 tickLower,\\n            int24 tickUpper,\\n            uint128 liquidity,\\n            uint256 feeGrowthInside0LastX128,\\n            uint256 feeGrowthInside1LastX128,\\n            uint128 tokensOwed0,\\n            uint128 tokensOwed1\\n        );\\n\\n    struct DecreaseLiquidityParams {\\n        uint256 tokenId;\\n        uint128 liquidity;\\n        uint256 amount0Min;\\n        uint256 amount1Min;\\n        uint256 deadline;\\n    }\\n\\n    struct CollectParams {\\n        uint256 tokenId;\\n        address recipient;\\n        uint128 amount0Max;\\n        uint128 amount1Max;\\n    }\\n\\n    // @notice Decreases the amount of liquidity in a position and accounts it to the position\\n    /// @param params tokenId The ID of the token for which liquidity is being decreased,\\n    /// amount The amount by which liquidity will be decreased,\\n    /// amount0Min The minimum amount of token0 that should be accounted for the burned liquidity,\\n    /// amount1Min The minimum amount of token1 that should be accounted for the burned liquidity,\\n    /// deadline The time by which the transaction must be included to effect the change\\n    /// @return amount0 The amount of token0 accounted to the position's tokens owed\\n    /// @return amount1 The amount of token1 accounted to the position's tokens owed\\n    function decreaseLiquidity(DecreaseLiquidityParams calldata params) external payable returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Collects up to a maximum amount of fees owed to a specific position to the recipient\\n    /// @param params tokenId The ID of the NFT for which tokens are being collected,\\n    /// recipient The account that should receive the tokens,\\n    /// amount0Max The maximum amount of token0 to collect,\\n    /// amount1Max The maximum amount of token1 to collect\\n    /// @return amount0 The amount of fees collected in token0\\n    /// @return amount1 The amount of fees collected in token1\\n    function collect(CollectParams calldata params) external payable returns (uint256 amount0, uint256 amount1);\\n}\\n\\n/// @notice Minimal Trident pool router interface.\\ninterface ITridentRouterMinimal {\\n    struct TokenInput {\\n        address token;\\n        bool native;\\n        uint256 amount;\\n    }\\n\\n    /// @notice Add liquidity to a pool.\\n    /// @param tokenInput Token address and amount to add as liquidity.\\n    /// @param pool Pool address to add liquidity to.\\n    /// @param minLiquidity Minimum output liquidity - caps slippage.\\n    /// @param data Data required by the pool to add liquidity.\\n    function addLiquidity(\\n        TokenInput[] calldata tokenInput,\\n        address pool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external payable returns (uint256 liquidity);\\n}\\n\\n/// @notice Liquidity migrator for Trident from popular pool types.\\ncontract TridentSushiRoll {\\n    /* IBalancerV2 internal immutable balancerVault;\\n    IUniswapV3 internal immutable uniNonfungiblePositionManager;\\n    ITridentRouterMinimal internal immutable tridentRouter;\\n\\n    constructor(\\n        IBalancerV2 _balancerVault,\\n        IUniswapV3 _uniNonfungiblePositionManager,\\n        ITridentRouterMinimal _tridentRouter\\n    ) {\\n        balancerVault = _balancerVault;\\n        uniNonfungiblePositionManager = _uniNonfungiblePositionManager;\\n        tridentRouter = _tridentRouter;\\n    }\\n\\n    // **** BAL MIGRATOR **** //\\n    // --------------------- //\\n\\n    function migrateFromBalancerV1toTrident(\\n        IBalancerV1 bPool,\\n        uint256 poolAmountIn,\\n        uint256[] calldata minAmountsOut,\\n        address tridentPool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        address[] memory tokens = bPool.getFinalTokens();\\n\\n        bPool.exitPool(poolAmountIn, minAmountsOut);\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](tokens.length);\\n\\n        unchecked {\\n            for (uint256 i; i < tokens.length; i++) {\\n                input[i].token = tokens[i];\\n                input[i].native = true;\\n                input[i].amount = IERC20(tokens[i]).balanceOf(address(this));\\n                IERC20(tokens[i]).approve(address(tridentRouter), input[i].amount);\\n            }\\n        }\\n\\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\\n    }\\n\\n    function migrateFromBalancerV2toTrident(\\n        bytes32 poolId,\\n        IBalancerV2.ExitPoolRequest calldata request,\\n        address tridentPool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        address[] memory tokens = balancerVault.getPoolTokens(poolId);\\n\\n        balancerVault.exitPool(poolId, msg.sender, address(this), request);\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](tokens.length);\\n\\n        unchecked {\\n            for (uint256 i; i < tokens.length; i++) {\\n                input[i].token = tokens[i];\\n                input[i].native = true;\\n                input[i].amount = IERC20(tokens[i]).balanceOf(address(this));\\n                IERC20(tokens[i]).approve(address(tridentRouter), input[i].amount);\\n            }\\n        }\\n\\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\\n    }\\n\\n    // **** UNI MIGRATOR **** //\\n    // --------------------- //\\n\\n    function migrateFromUniswapV2toTrident(\\n        address pair,\\n        uint256 _liquidity,\\n        address pool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        IERC20(pair).transferFrom(msg.sender, address(pair), _liquidity);\\n\\n        IUniswapV2Minimal(pair).burn(address(this));\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](2);\\n\\n        IERC20 token0 = IERC20(IUniswapV2Minimal(pair).token0());\\n        IERC20 token1 = IERC20(IUniswapV2Minimal(pair).token1());\\n\\n        input[0].token = address(token0);\\n        input[0].native = true;\\n        input[0].amount = token0.balanceOf(address(this));\\n\\n        input[1].token = address(token1);\\n        input[1].native = true;\\n        input[1].amount = token1.balanceOf(address(this));\\n\\n        token0.approve(address(tridentRouter), input[0].amount);\\n        token1.approve(address(tridentRouter), input[1].amount);\\n\\n        liquidity = ITridentRouterMinimal(tridentRouter).addLiquidity(input, pool, minLiquidity, data);\\n    }\\n\\n    function migrateFromUniswapV3toTrident(\\n        IUniswapV3.DecreaseLiquidityParams calldata decreaseLiqParams,\\n        IUniswapV3.CollectParams calldata collectParams,\\n        address tridentPool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        uniNonfungiblePositionManager.decreaseLiquidity(decreaseLiqParams);\\n        uniNonfungiblePositionManager.collect(collectParams);\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](2);\\n\\n        (, , address token0, , , , , , , , , ) = uniNonfungiblePositionManager.positions(decreaseLiqParams.tokenId);\\n        (, , , address token1, , , , , , , , ) = uniNonfungiblePositionManager.positions(decreaseLiqParams.tokenId);\\n\\n        input[0].token = token0;\\n        input[0].native = true;\\n        input[0].amount = IERC20(token0).balanceOf(address(this));\\n\\n        input[1].token = token1;\\n        input[1].native = true;\\n        input[1].amount = IERC20(token1).balanceOf(address(this));\\n\\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\\n    } */\\n}\\n\",\"keccak256\":\"0x4b0475aba9486ab79263b7c3c74dbe81aff5c85c6a41b10b79e5e74c6348fa5b\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/TridentBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Generic contract exposing the batch call functionality.\\nabstract contract TridentBatchable {\\n    /// @notice Provides batch function calls for this contract and returns the data from all of them if they all succeed.\\n    /// Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\\n    /// @dev The `msg.value` should not be trusted for any method callable from this function.\\n    /// @param data ABI-encoded params for each of the calls to make to this contract.\\n    /// @return results The results from each of the calls passed in via `data`.\\n    function batch(bytes[] calldata data) external payable returns (bytes[] memory results) {\\n        results = new bytes[](data.length);\\n\\n        for (uint256 i = 0; i < data.length; i++) {\\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\\n\\n            if (!success) {\\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577\\n                if (result.length < 68) revert();\\n                assembly {\\n                    result := add(result, 0x04)\\n                }\\n                revert(abi.decode(result, (string)));\\n            }\\n\\n            results[i] = result;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xba62b6a107dfc9673c0fa801b84ef151459cd62169ca88949a597d910d549659\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/TridentPermit.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Generic contract exposing the permit functionality.\\nabstract contract TridentPermit {\\n    error PermitFailed();\\n\\n    /// @notice Provides EIP-2612 signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param amount Token amount to grant spending right over.\\n    /// @param deadline Termination for signed approval (UTC timestamp in seconds).\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThis(\\n        address token,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0xd505accf, msg.sender, address(this), amount, deadline, v, r, s)); // permit(address,address,uint256,uint256,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n\\n    /// @notice Provides DAI-derived signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param nonce Token owner's nonce - increases at each call to {permit}.\\n    /// @param expiry Termination for signed approval - UTC timestamp in seconds.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThisAllowed(\\n        address token,\\n        uint256 nonce,\\n        uint256 expiry,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0x8fcbaf0c, msg.sender, address(this), nonce, expiry, true, v, r, s)); // permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n}\\n\",\"keccak256\":\"0x41a005fbeccd614c4d0027c168c7fb6ba7689504356ff9040c50d2a3c53d0ec6\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Minimal Uniswap V2 LP interface.",
            "version": 1
          }
        },
        "IUniswapV3": {
          "abi": [
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "tokenId",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address",
                      "name": "recipient",
                      "type": "address"
                    },
                    {
                      "internalType": "uint128",
                      "name": "amount0Max",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint128",
                      "name": "amount1Max",
                      "type": "uint128"
                    }
                  ],
                  "internalType": "struct IUniswapV3.CollectParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "collect",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount0",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount1",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "tokenId",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint128",
                      "name": "liquidity",
                      "type": "uint128"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount0Min",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount1Min",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "deadline",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IUniswapV3.DecreaseLiquidityParams",
                  "name": "params",
                  "type": "tuple"
                }
              ],
              "name": "decreaseLiquidity",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount0",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount1",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "positions",
              "outputs": [
                {
                  "internalType": "uint96",
                  "name": "nonce",
                  "type": "uint96"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                },
                {
                  "internalType": "uint24",
                  "name": "fee",
                  "type": "uint24"
                },
                {
                  "internalType": "int24",
                  "name": "tickLower",
                  "type": "int24"
                },
                {
                  "internalType": "int24",
                  "name": "tickUpper",
                  "type": "int24"
                },
                {
                  "internalType": "uint128",
                  "name": "liquidity",
                  "type": "uint128"
                },
                {
                  "internalType": "uint256",
                  "name": "feeGrowthInside0LastX128",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "feeGrowthInside1LastX128",
                  "type": "uint256"
                },
                {
                  "internalType": "uint128",
                  "name": "tokensOwed0",
                  "type": "uint128"
                },
                {
                  "internalType": "uint128",
                  "name": "tokensOwed1",
                  "type": "uint128"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "collect((uint256,address,uint128,uint128))": {
                "params": {
                  "params": "tokenId The ID of the NFT for which tokens are being collected, recipient The account that should receive the tokens, amount0Max The maximum amount of token0 to collect, amount1Max The maximum amount of token1 to collect"
                },
                "returns": {
                  "amount0": "The amount of fees collected in token0",
                  "amount1": "The amount of fees collected in token1"
                }
              },
              "decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))": {
                "params": {
                  "params": "tokenId The ID of the token for which liquidity is being decreased, amount The amount by which liquidity will be decreased, amount0Min The minimum amount of token0 that should be accounted for the burned liquidity, amount1Min The minimum amount of token1 that should be accounted for the burned liquidity, deadline The time by which the transaction must be included to effect the change"
                },
                "returns": {
                  "amount0": "The amount of token0 accounted to the position's tokens owed",
                  "amount1": "The amount of token1 accounted to the position's tokens owed"
                }
              },
              "positions(uint256)": {
                "details": "Throws if the token ID is not valid.",
                "params": {
                  "tokenId": "The ID of the token that represents the position"
                },
                "returns": {
                  "fee": "The fee associated with the pool",
                  "feeGrowthInside0LastX128": "The fee growth of token0 as of the last action on the individual position",
                  "feeGrowthInside1LastX128": "The fee growth of token1 as of the last action on the individual position",
                  "liquidity": "The liquidity of the position",
                  "nonce": "The nonce for permits",
                  "operator": "The address that is approved for spending",
                  "tickLower": "The lower end of the tick range for the position",
                  "tickUpper": "The higher end of the tick range for the position",
                  "token0": "The address of the token0 for a specific pool",
                  "token1": "The address of the token1 for a specific pool",
                  "tokensOwed0": "The uncollected amount of token0 owed to the position as of the last computation",
                  "tokensOwed1": "The uncollected amount of token1 owed to the position as of the last computation"
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "collect((uint256,address,uint128,uint128))": "fc6f7865",
              "decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))": "0c49ccbe",
              "positions(uint256)": "99fbab88"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount0Max\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1Max\",\"type\":\"uint128\"}],\"internalType\":\"struct IUniswapV3.CollectParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IUniswapV3.DecreaseLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"decreaseLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"tokensOwed1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"collect((uint256,address,uint128,uint128))\":{\"params\":{\"params\":\"tokenId The ID of the NFT for which tokens are being collected, recipient The account that should receive the tokens, amount0Max The maximum amount of token0 to collect, amount1Max The maximum amount of token1 to collect\"},\"returns\":{\"amount0\":\"The amount of fees collected in token0\",\"amount1\":\"The amount of fees collected in token1\"}},\"decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))\":{\"params\":{\"params\":\"tokenId The ID of the token for which liquidity is being decreased, amount The amount by which liquidity will be decreased, amount0Min The minimum amount of token0 that should be accounted for the burned liquidity, amount1Min The minimum amount of token1 that should be accounted for the burned liquidity, deadline The time by which the transaction must be included to effect the change\"},\"returns\":{\"amount0\":\"The amount of token0 accounted to the position's tokens owed\",\"amount1\":\"The amount of token1 accounted to the position's tokens owed\"}},\"positions(uint256)\":{\"details\":\"Throws if the token ID is not valid.\",\"params\":{\"tokenId\":\"The ID of the token that represents the position\"},\"returns\":{\"fee\":\"The fee associated with the pool\",\"feeGrowthInside0LastX128\":\"The fee growth of token0 as of the last action on the individual position\",\"feeGrowthInside1LastX128\":\"The fee growth of token1 as of the last action on the individual position\",\"liquidity\":\"The liquidity of the position\",\"nonce\":\"The nonce for permits\",\"operator\":\"The address that is approved for spending\",\"tickLower\":\"The lower end of the tick range for the position\",\"tickUpper\":\"The higher end of the tick range for the position\",\"token0\":\"The address of the token0 for a specific pool\",\"token1\":\"The address of the token1 for a specific pool\",\"tokensOwed0\":\"The uncollected amount of token0 owed to the position as of the last computation\",\"tokensOwed1\":\"The uncollected amount of token1 owed to the position as of the last computation\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"collect((uint256,address,uint128,uint128))\":{\"notice\":\"Collects up to a maximum amount of fees owed to a specific position to the recipient\"},\"positions(uint256)\":{\"notice\":\"Returns the position information associated with a given token ID.\"}},\"notice\":\"Interface for handling Uniswap V3 LP.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/migration/TridentSushiRollReference.sol\":\"IUniswapV3\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\"},\"contracts/migration/TridentSushiRollReference.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport \\\"../utils/TridentBatchable.sol\\\";\\nimport \\\"../utils/TridentPermit.sol\\\";\\n\\n/// @notice Interface for handling Balancer V1 LP.\\ninterface IBalancerV1 {\\n    function getFinalTokens() external view returns (address[] memory);\\n\\n    function exitPool(uint256 poolAmountIn, uint256[] calldata minAmountsOut) external;\\n}\\n\\n/// @notice Interface for handling Balancer V2 LP - `assets` aliased to address for code simplicity.\\ninterface IBalancerV2 {\\n    struct ExitPoolRequest {\\n        address[] assets;\\n        uint256[] minAmountsOut;\\n        bytes userData;\\n        bool toInternalBalance;\\n    }\\n\\n    /// @notice Returns asset tokens from a Balancer V2 pool.\\n    function getPoolTokens(bytes32 poolId) external view returns (address[] memory);\\n\\n    /// @notice Exits liquidity tokens from a Balancer V2 pool.\\n    function exitPool(\\n        bytes32 poolId,\\n        address sender,\\n        address recipient,\\n        ExitPoolRequest calldata request\\n    ) external;\\n}\\n\\n/// @notice Minimal Uniswap V2 LP interface.\\ninterface IUniswapV2Minimal {\\n    function token0() external view returns (address);\\n\\n    function token1() external view returns (address);\\n\\n    function burn(address to) external returns (uint256 amount0, uint256 amount1);\\n}\\n\\n/// @notice Interface for handling Uniswap V3 LP.\\ninterface IUniswapV3 {\\n    /// @notice Returns the position information associated with a given token ID.\\n    /// @dev Throws if the token ID is not valid.\\n    /// @param tokenId The ID of the token that represents the position\\n    /// @return nonce The nonce for permits\\n    /// @return operator The address that is approved for spending\\n    /// @return token0 The address of the token0 for a specific pool\\n    /// @return token1 The address of the token1 for a specific pool\\n    /// @return fee The fee associated with the pool\\n    /// @return tickLower The lower end of the tick range for the position\\n    /// @return tickUpper The higher end of the tick range for the position\\n    /// @return liquidity The liquidity of the position\\n    /// @return feeGrowthInside0LastX128 The fee growth of token0 as of the last action on the individual position\\n    /// @return feeGrowthInside1LastX128 The fee growth of token1 as of the last action on the individual position\\n    /// @return tokensOwed0 The uncollected amount of token0 owed to the position as of the last computation\\n    /// @return tokensOwed1 The uncollected amount of token1 owed to the position as of the last computation\\n    function positions(uint256 tokenId)\\n        external\\n        view\\n        returns (\\n            uint96 nonce,\\n            address operator,\\n            address token0,\\n            address token1,\\n            uint24 fee,\\n            int24 tickLower,\\n            int24 tickUpper,\\n            uint128 liquidity,\\n            uint256 feeGrowthInside0LastX128,\\n            uint256 feeGrowthInside1LastX128,\\n            uint128 tokensOwed0,\\n            uint128 tokensOwed1\\n        );\\n\\n    struct DecreaseLiquidityParams {\\n        uint256 tokenId;\\n        uint128 liquidity;\\n        uint256 amount0Min;\\n        uint256 amount1Min;\\n        uint256 deadline;\\n    }\\n\\n    struct CollectParams {\\n        uint256 tokenId;\\n        address recipient;\\n        uint128 amount0Max;\\n        uint128 amount1Max;\\n    }\\n\\n    // @notice Decreases the amount of liquidity in a position and accounts it to the position\\n    /// @param params tokenId The ID of the token for which liquidity is being decreased,\\n    /// amount The amount by which liquidity will be decreased,\\n    /// amount0Min The minimum amount of token0 that should be accounted for the burned liquidity,\\n    /// amount1Min The minimum amount of token1 that should be accounted for the burned liquidity,\\n    /// deadline The time by which the transaction must be included to effect the change\\n    /// @return amount0 The amount of token0 accounted to the position's tokens owed\\n    /// @return amount1 The amount of token1 accounted to the position's tokens owed\\n    function decreaseLiquidity(DecreaseLiquidityParams calldata params) external payable returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Collects up to a maximum amount of fees owed to a specific position to the recipient\\n    /// @param params tokenId The ID of the NFT for which tokens are being collected,\\n    /// recipient The account that should receive the tokens,\\n    /// amount0Max The maximum amount of token0 to collect,\\n    /// amount1Max The maximum amount of token1 to collect\\n    /// @return amount0 The amount of fees collected in token0\\n    /// @return amount1 The amount of fees collected in token1\\n    function collect(CollectParams calldata params) external payable returns (uint256 amount0, uint256 amount1);\\n}\\n\\n/// @notice Minimal Trident pool router interface.\\ninterface ITridentRouterMinimal {\\n    struct TokenInput {\\n        address token;\\n        bool native;\\n        uint256 amount;\\n    }\\n\\n    /// @notice Add liquidity to a pool.\\n    /// @param tokenInput Token address and amount to add as liquidity.\\n    /// @param pool Pool address to add liquidity to.\\n    /// @param minLiquidity Minimum output liquidity - caps slippage.\\n    /// @param data Data required by the pool to add liquidity.\\n    function addLiquidity(\\n        TokenInput[] calldata tokenInput,\\n        address pool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external payable returns (uint256 liquidity);\\n}\\n\\n/// @notice Liquidity migrator for Trident from popular pool types.\\ncontract TridentSushiRoll {\\n    /* IBalancerV2 internal immutable balancerVault;\\n    IUniswapV3 internal immutable uniNonfungiblePositionManager;\\n    ITridentRouterMinimal internal immutable tridentRouter;\\n\\n    constructor(\\n        IBalancerV2 _balancerVault,\\n        IUniswapV3 _uniNonfungiblePositionManager,\\n        ITridentRouterMinimal _tridentRouter\\n    ) {\\n        balancerVault = _balancerVault;\\n        uniNonfungiblePositionManager = _uniNonfungiblePositionManager;\\n        tridentRouter = _tridentRouter;\\n    }\\n\\n    // **** BAL MIGRATOR **** //\\n    // --------------------- //\\n\\n    function migrateFromBalancerV1toTrident(\\n        IBalancerV1 bPool,\\n        uint256 poolAmountIn,\\n        uint256[] calldata minAmountsOut,\\n        address tridentPool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        address[] memory tokens = bPool.getFinalTokens();\\n\\n        bPool.exitPool(poolAmountIn, minAmountsOut);\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](tokens.length);\\n\\n        unchecked {\\n            for (uint256 i; i < tokens.length; i++) {\\n                input[i].token = tokens[i];\\n                input[i].native = true;\\n                input[i].amount = IERC20(tokens[i]).balanceOf(address(this));\\n                IERC20(tokens[i]).approve(address(tridentRouter), input[i].amount);\\n            }\\n        }\\n\\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\\n    }\\n\\n    function migrateFromBalancerV2toTrident(\\n        bytes32 poolId,\\n        IBalancerV2.ExitPoolRequest calldata request,\\n        address tridentPool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        address[] memory tokens = balancerVault.getPoolTokens(poolId);\\n\\n        balancerVault.exitPool(poolId, msg.sender, address(this), request);\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](tokens.length);\\n\\n        unchecked {\\n            for (uint256 i; i < tokens.length; i++) {\\n                input[i].token = tokens[i];\\n                input[i].native = true;\\n                input[i].amount = IERC20(tokens[i]).balanceOf(address(this));\\n                IERC20(tokens[i]).approve(address(tridentRouter), input[i].amount);\\n            }\\n        }\\n\\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\\n    }\\n\\n    // **** UNI MIGRATOR **** //\\n    // --------------------- //\\n\\n    function migrateFromUniswapV2toTrident(\\n        address pair,\\n        uint256 _liquidity,\\n        address pool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        IERC20(pair).transferFrom(msg.sender, address(pair), _liquidity);\\n\\n        IUniswapV2Minimal(pair).burn(address(this));\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](2);\\n\\n        IERC20 token0 = IERC20(IUniswapV2Minimal(pair).token0());\\n        IERC20 token1 = IERC20(IUniswapV2Minimal(pair).token1());\\n\\n        input[0].token = address(token0);\\n        input[0].native = true;\\n        input[0].amount = token0.balanceOf(address(this));\\n\\n        input[1].token = address(token1);\\n        input[1].native = true;\\n        input[1].amount = token1.balanceOf(address(this));\\n\\n        token0.approve(address(tridentRouter), input[0].amount);\\n        token1.approve(address(tridentRouter), input[1].amount);\\n\\n        liquidity = ITridentRouterMinimal(tridentRouter).addLiquidity(input, pool, minLiquidity, data);\\n    }\\n\\n    function migrateFromUniswapV3toTrident(\\n        IUniswapV3.DecreaseLiquidityParams calldata decreaseLiqParams,\\n        IUniswapV3.CollectParams calldata collectParams,\\n        address tridentPool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        uniNonfungiblePositionManager.decreaseLiquidity(decreaseLiqParams);\\n        uniNonfungiblePositionManager.collect(collectParams);\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](2);\\n\\n        (, , address token0, , , , , , , , , ) = uniNonfungiblePositionManager.positions(decreaseLiqParams.tokenId);\\n        (, , , address token1, , , , , , , , ) = uniNonfungiblePositionManager.positions(decreaseLiqParams.tokenId);\\n\\n        input[0].token = token0;\\n        input[0].native = true;\\n        input[0].amount = IERC20(token0).balanceOf(address(this));\\n\\n        input[1].token = token1;\\n        input[1].native = true;\\n        input[1].amount = IERC20(token1).balanceOf(address(this));\\n\\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\\n    } */\\n}\\n\",\"keccak256\":\"0x4b0475aba9486ab79263b7c3c74dbe81aff5c85c6a41b10b79e5e74c6348fa5b\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/TridentBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Generic contract exposing the batch call functionality.\\nabstract contract TridentBatchable {\\n    /// @notice Provides batch function calls for this contract and returns the data from all of them if they all succeed.\\n    /// Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\\n    /// @dev The `msg.value` should not be trusted for any method callable from this function.\\n    /// @param data ABI-encoded params for each of the calls to make to this contract.\\n    /// @return results The results from each of the calls passed in via `data`.\\n    function batch(bytes[] calldata data) external payable returns (bytes[] memory results) {\\n        results = new bytes[](data.length);\\n\\n        for (uint256 i = 0; i < data.length; i++) {\\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\\n\\n            if (!success) {\\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577\\n                if (result.length < 68) revert();\\n                assembly {\\n                    result := add(result, 0x04)\\n                }\\n                revert(abi.decode(result, (string)));\\n            }\\n\\n            results[i] = result;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xba62b6a107dfc9673c0fa801b84ef151459cd62169ca88949a597d910d549659\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/TridentPermit.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Generic contract exposing the permit functionality.\\nabstract contract TridentPermit {\\n    error PermitFailed();\\n\\n    /// @notice Provides EIP-2612 signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param amount Token amount to grant spending right over.\\n    /// @param deadline Termination for signed approval (UTC timestamp in seconds).\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThis(\\n        address token,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0xd505accf, msg.sender, address(this), amount, deadline, v, r, s)); // permit(address,address,uint256,uint256,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n\\n    /// @notice Provides DAI-derived signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param nonce Token owner's nonce - increases at each call to {permit}.\\n    /// @param expiry Termination for signed approval - UTC timestamp in seconds.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThisAllowed(\\n        address token,\\n        uint256 nonce,\\n        uint256 expiry,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0x8fcbaf0c, msg.sender, address(this), nonce, expiry, true, v, r, s)); // permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n}\\n\",\"keccak256\":\"0x41a005fbeccd614c4d0027c168c7fb6ba7689504356ff9040c50d2a3c53d0ec6\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "collect((uint256,address,uint128,uint128))": {
                "notice": "Collects up to a maximum amount of fees owed to a specific position to the recipient"
              },
              "positions(uint256)": {
                "notice": "Returns the position information associated with a given token ID."
              }
            },
            "notice": "Interface for handling Uniswap V3 LP.",
            "version": 1
          }
        },
        "TridentSushiRoll": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea264697066735822122084ac9b1b43cd5a87f932ea63df397dfaa04ccd8c3f7b560f9f903efc770e6c4f64736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 0xAC SWAP12 SHL NUMBER 0xCD GAS DUP8 0xF9 ORIGIN 0xEA PUSH4 0xDF397DFA LOG0 0x4C 0xCD DUP13 EXTCODEHASH PUSH28 0x560F9F903EFC770E6C4F64736F6C6343000807003300000000000000 ",
              "sourceMap": "5609:4793:34:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea264697066735822122084ac9b1b43cd5a87f932ea63df397dfaa04ccd8c3f7b560f9f903efc770e6c4f64736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 0xAC SWAP12 SHL NUMBER 0xCD GAS DUP8 0xF9 ORIGIN 0xEA PUSH4 0xDF397DFA LOG0 0x4C 0xCD DUP13 EXTCODEHASH PUSH28 0x560F9F903EFC770E6C4F64736F6C6343000807003300000000000000 ",
              "sourceMap": "5609:4793:34:-:0;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "12600",
                "executionCost": "66",
                "totalCost": "12666"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Liquidity migrator for Trident from popular pool types.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/migration/TridentSushiRollReference.sol\":\"TridentSushiRoll\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\"},\"contracts/migration/TridentSushiRollReference.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/IERC20.sol\\\";\\nimport \\\"../utils/TridentBatchable.sol\\\";\\nimport \\\"../utils/TridentPermit.sol\\\";\\n\\n/// @notice Interface for handling Balancer V1 LP.\\ninterface IBalancerV1 {\\n    function getFinalTokens() external view returns (address[] memory);\\n\\n    function exitPool(uint256 poolAmountIn, uint256[] calldata minAmountsOut) external;\\n}\\n\\n/// @notice Interface for handling Balancer V2 LP - `assets` aliased to address for code simplicity.\\ninterface IBalancerV2 {\\n    struct ExitPoolRequest {\\n        address[] assets;\\n        uint256[] minAmountsOut;\\n        bytes userData;\\n        bool toInternalBalance;\\n    }\\n\\n    /// @notice Returns asset tokens from a Balancer V2 pool.\\n    function getPoolTokens(bytes32 poolId) external view returns (address[] memory);\\n\\n    /// @notice Exits liquidity tokens from a Balancer V2 pool.\\n    function exitPool(\\n        bytes32 poolId,\\n        address sender,\\n        address recipient,\\n        ExitPoolRequest calldata request\\n    ) external;\\n}\\n\\n/// @notice Minimal Uniswap V2 LP interface.\\ninterface IUniswapV2Minimal {\\n    function token0() external view returns (address);\\n\\n    function token1() external view returns (address);\\n\\n    function burn(address to) external returns (uint256 amount0, uint256 amount1);\\n}\\n\\n/// @notice Interface for handling Uniswap V3 LP.\\ninterface IUniswapV3 {\\n    /// @notice Returns the position information associated with a given token ID.\\n    /// @dev Throws if the token ID is not valid.\\n    /// @param tokenId The ID of the token that represents the position\\n    /// @return nonce The nonce for permits\\n    /// @return operator The address that is approved for spending\\n    /// @return token0 The address of the token0 for a specific pool\\n    /// @return token1 The address of the token1 for a specific pool\\n    /// @return fee The fee associated with the pool\\n    /// @return tickLower The lower end of the tick range for the position\\n    /// @return tickUpper The higher end of the tick range for the position\\n    /// @return liquidity The liquidity of the position\\n    /// @return feeGrowthInside0LastX128 The fee growth of token0 as of the last action on the individual position\\n    /// @return feeGrowthInside1LastX128 The fee growth of token1 as of the last action on the individual position\\n    /// @return tokensOwed0 The uncollected amount of token0 owed to the position as of the last computation\\n    /// @return tokensOwed1 The uncollected amount of token1 owed to the position as of the last computation\\n    function positions(uint256 tokenId)\\n        external\\n        view\\n        returns (\\n            uint96 nonce,\\n            address operator,\\n            address token0,\\n            address token1,\\n            uint24 fee,\\n            int24 tickLower,\\n            int24 tickUpper,\\n            uint128 liquidity,\\n            uint256 feeGrowthInside0LastX128,\\n            uint256 feeGrowthInside1LastX128,\\n            uint128 tokensOwed0,\\n            uint128 tokensOwed1\\n        );\\n\\n    struct DecreaseLiquidityParams {\\n        uint256 tokenId;\\n        uint128 liquidity;\\n        uint256 amount0Min;\\n        uint256 amount1Min;\\n        uint256 deadline;\\n    }\\n\\n    struct CollectParams {\\n        uint256 tokenId;\\n        address recipient;\\n        uint128 amount0Max;\\n        uint128 amount1Max;\\n    }\\n\\n    // @notice Decreases the amount of liquidity in a position and accounts it to the position\\n    /// @param params tokenId The ID of the token for which liquidity is being decreased,\\n    /// amount The amount by which liquidity will be decreased,\\n    /// amount0Min The minimum amount of token0 that should be accounted for the burned liquidity,\\n    /// amount1Min The minimum amount of token1 that should be accounted for the burned liquidity,\\n    /// deadline The time by which the transaction must be included to effect the change\\n    /// @return amount0 The amount of token0 accounted to the position's tokens owed\\n    /// @return amount1 The amount of token1 accounted to the position's tokens owed\\n    function decreaseLiquidity(DecreaseLiquidityParams calldata params) external payable returns (uint256 amount0, uint256 amount1);\\n\\n    /// @notice Collects up to a maximum amount of fees owed to a specific position to the recipient\\n    /// @param params tokenId The ID of the NFT for which tokens are being collected,\\n    /// recipient The account that should receive the tokens,\\n    /// amount0Max The maximum amount of token0 to collect,\\n    /// amount1Max The maximum amount of token1 to collect\\n    /// @return amount0 The amount of fees collected in token0\\n    /// @return amount1 The amount of fees collected in token1\\n    function collect(CollectParams calldata params) external payable returns (uint256 amount0, uint256 amount1);\\n}\\n\\n/// @notice Minimal Trident pool router interface.\\ninterface ITridentRouterMinimal {\\n    struct TokenInput {\\n        address token;\\n        bool native;\\n        uint256 amount;\\n    }\\n\\n    /// @notice Add liquidity to a pool.\\n    /// @param tokenInput Token address and amount to add as liquidity.\\n    /// @param pool Pool address to add liquidity to.\\n    /// @param minLiquidity Minimum output liquidity - caps slippage.\\n    /// @param data Data required by the pool to add liquidity.\\n    function addLiquidity(\\n        TokenInput[] calldata tokenInput,\\n        address pool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external payable returns (uint256 liquidity);\\n}\\n\\n/// @notice Liquidity migrator for Trident from popular pool types.\\ncontract TridentSushiRoll {\\n    /* IBalancerV2 internal immutable balancerVault;\\n    IUniswapV3 internal immutable uniNonfungiblePositionManager;\\n    ITridentRouterMinimal internal immutable tridentRouter;\\n\\n    constructor(\\n        IBalancerV2 _balancerVault,\\n        IUniswapV3 _uniNonfungiblePositionManager,\\n        ITridentRouterMinimal _tridentRouter\\n    ) {\\n        balancerVault = _balancerVault;\\n        uniNonfungiblePositionManager = _uniNonfungiblePositionManager;\\n        tridentRouter = _tridentRouter;\\n    }\\n\\n    // **** BAL MIGRATOR **** //\\n    // --------------------- //\\n\\n    function migrateFromBalancerV1toTrident(\\n        IBalancerV1 bPool,\\n        uint256 poolAmountIn,\\n        uint256[] calldata minAmountsOut,\\n        address tridentPool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        address[] memory tokens = bPool.getFinalTokens();\\n\\n        bPool.exitPool(poolAmountIn, minAmountsOut);\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](tokens.length);\\n\\n        unchecked {\\n            for (uint256 i; i < tokens.length; i++) {\\n                input[i].token = tokens[i];\\n                input[i].native = true;\\n                input[i].amount = IERC20(tokens[i]).balanceOf(address(this));\\n                IERC20(tokens[i]).approve(address(tridentRouter), input[i].amount);\\n            }\\n        }\\n\\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\\n    }\\n\\n    function migrateFromBalancerV2toTrident(\\n        bytes32 poolId,\\n        IBalancerV2.ExitPoolRequest calldata request,\\n        address tridentPool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        address[] memory tokens = balancerVault.getPoolTokens(poolId);\\n\\n        balancerVault.exitPool(poolId, msg.sender, address(this), request);\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](tokens.length);\\n\\n        unchecked {\\n            for (uint256 i; i < tokens.length; i++) {\\n                input[i].token = tokens[i];\\n                input[i].native = true;\\n                input[i].amount = IERC20(tokens[i]).balanceOf(address(this));\\n                IERC20(tokens[i]).approve(address(tridentRouter), input[i].amount);\\n            }\\n        }\\n\\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\\n    }\\n\\n    // **** UNI MIGRATOR **** //\\n    // --------------------- //\\n\\n    function migrateFromUniswapV2toTrident(\\n        address pair,\\n        uint256 _liquidity,\\n        address pool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        IERC20(pair).transferFrom(msg.sender, address(pair), _liquidity);\\n\\n        IUniswapV2Minimal(pair).burn(address(this));\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](2);\\n\\n        IERC20 token0 = IERC20(IUniswapV2Minimal(pair).token0());\\n        IERC20 token1 = IERC20(IUniswapV2Minimal(pair).token1());\\n\\n        input[0].token = address(token0);\\n        input[0].native = true;\\n        input[0].amount = token0.balanceOf(address(this));\\n\\n        input[1].token = address(token1);\\n        input[1].native = true;\\n        input[1].amount = token1.balanceOf(address(this));\\n\\n        token0.approve(address(tridentRouter), input[0].amount);\\n        token1.approve(address(tridentRouter), input[1].amount);\\n\\n        liquidity = ITridentRouterMinimal(tridentRouter).addLiquidity(input, pool, minLiquidity, data);\\n    }\\n\\n    function migrateFromUniswapV3toTrident(\\n        IUniswapV3.DecreaseLiquidityParams calldata decreaseLiqParams,\\n        IUniswapV3.CollectParams calldata collectParams,\\n        address tridentPool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) external returns (uint256 liquidity) {\\n        uniNonfungiblePositionManager.decreaseLiquidity(decreaseLiqParams);\\n        uniNonfungiblePositionManager.collect(collectParams);\\n\\n        ITridentRouterMinimal.TokenInput[] memory input = new ITridentRouterMinimal.TokenInput[](2);\\n\\n        (, , address token0, , , , , , , , , ) = uniNonfungiblePositionManager.positions(decreaseLiqParams.tokenId);\\n        (, , , address token1, , , , , , , , ) = uniNonfungiblePositionManager.positions(decreaseLiqParams.tokenId);\\n\\n        input[0].token = token0;\\n        input[0].native = true;\\n        input[0].amount = IERC20(token0).balanceOf(address(this));\\n\\n        input[1].token = token1;\\n        input[1].native = true;\\n        input[1].amount = IERC20(token1).balanceOf(address(this));\\n\\n        liquidity = tridentRouter.addLiquidity(input, tridentPool, minLiquidity, data);\\n    } */\\n}\\n\",\"keccak256\":\"0x4b0475aba9486ab79263b7c3c74dbe81aff5c85c6a41b10b79e5e74c6348fa5b\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/TridentBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Generic contract exposing the batch call functionality.\\nabstract contract TridentBatchable {\\n    /// @notice Provides batch function calls for this contract and returns the data from all of them if they all succeed.\\n    /// Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\\n    /// @dev The `msg.value` should not be trusted for any method callable from this function.\\n    /// @param data ABI-encoded params for each of the calls to make to this contract.\\n    /// @return results The results from each of the calls passed in via `data`.\\n    function batch(bytes[] calldata data) external payable returns (bytes[] memory results) {\\n        results = new bytes[](data.length);\\n\\n        for (uint256 i = 0; i < data.length; i++) {\\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\\n\\n            if (!success) {\\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577\\n                if (result.length < 68) revert();\\n                assembly {\\n                    result := add(result, 0x04)\\n                }\\n                revert(abi.decode(result, (string)));\\n            }\\n\\n            results[i] = result;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xba62b6a107dfc9673c0fa801b84ef151459cd62169ca88949a597d910d549659\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/TridentPermit.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Generic contract exposing the permit functionality.\\nabstract contract TridentPermit {\\n    error PermitFailed();\\n\\n    /// @notice Provides EIP-2612 signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param amount Token amount to grant spending right over.\\n    /// @param deadline Termination for signed approval (UTC timestamp in seconds).\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThis(\\n        address token,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0xd505accf, msg.sender, address(this), amount, deadline, v, r, s)); // permit(address,address,uint256,uint256,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n\\n    /// @notice Provides DAI-derived signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param nonce Token owner's nonce - increases at each call to {permit}.\\n    /// @param expiry Termination for signed approval - UTC timestamp in seconds.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThisAllowed(\\n        address token,\\n        uint256 nonce,\\n        uint256 expiry,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0x8fcbaf0c, msg.sender, address(this), nonce, expiry, true, v, r, s)); // permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n}\\n\",\"keccak256\":\"0x41a005fbeccd614c4d0027c168c7fb6ba7689504356ff9040c50d2a3c53d0ec6\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Liquidity migrator for Trident from popular pool types.",
            "version": 1
          }
        }
      },
      "contracts/mocks/ERC20Mock.sol": {
        "ERC20Mock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "string",
                  "name": "name",
                  "type": "string"
                },
                {
                  "internalType": "string",
                  "name": "symbol",
                  "type": "string"
                },
                {
                  "internalType": "uint256",
                  "name": "supply",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "dst",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "wad",
                  "type": "uint256"
                }
              ],
              "name": "Deposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "src",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "wad",
                  "type": "uint256"
                }
              ],
              "name": "Withdrawal",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "wad",
                  "type": "uint256"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "allowance(address,address)": {
                "details": "See {IERC20-allowance}."
              },
              "approve(address,uint256)": {
                "details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address."
              },
              "balanceOf(address)": {
                "details": "See {IERC20-balanceOf}."
              },
              "decimals()": {
                "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
              },
              "decreaseAllowance(address,uint256)": {
                "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
              },
              "increaseAllowance(address,uint256)": {
                "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
              },
              "name()": {
                "details": "Returns the name of the token."
              },
              "symbol()": {
                "details": "Returns the symbol of the token, usually a shorter version of the name."
              },
              "totalSupply()": {
                "details": "See {IERC20-totalSupply}."
              },
              "transfer(address,uint256)": {
                "details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`."
              },
              "transferFrom(address,address,uint256)": {
                "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_44": {
                  "entryPoint": null,
                  "id": 44,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_5801": {
                  "entryPoint": null,
                  "id": 5801,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_afterTokenTransfer_544": {
                  "entryPoint": null,
                  "id": 544,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_beforeTokenTransfer_533": {
                  "entryPoint": null,
                  "id": 533,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_mint_405": {
                  "entryPoint": 129,
                  "id": 405,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_decode_string_fromMemory": {
                  "entryPoint": 527,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_uint256_fromMemory": {
                  "entryPoint": 710,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 825,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 864,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x41": {
                  "entryPoint": 925,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:2818:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "78:821:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "127:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "136:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "139:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "129:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "129:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "129:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "106:6:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "114:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "102:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "102:17:64"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "121:3:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "98:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "98:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "91:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "91:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "88:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "152:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "168:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "162:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "162:13:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "156:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "184:28:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "202:2:64",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "206:1:64",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "198:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "198:10:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "210:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "194:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "194:18:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "188:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "235:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "237:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "237:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "237:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "227:2:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "231:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "224:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "224:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "221:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "266:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "280:2:64",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "276:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "276:7:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "270:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "292:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "312:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "306:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "306:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "296:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "324:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "346:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "370:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "374:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "366:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "366:13:64"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "381:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "362:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "362:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "386:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "358:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "358:31:64"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "391:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "354:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "354:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "342:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "342:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "328:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "454:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "456:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "456:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "456:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "413:10:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "425:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "410:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "410:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "433:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "445:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "430:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "430:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "407:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "407:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "404:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "492:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "496:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "485:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "485:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "485:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "523:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "531:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "516:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "516:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "516:18:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "543:14:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "553:4:64",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "547:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "603:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "612:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "615:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "605:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "605:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "605:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "580:6:64"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "588:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "576:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "576:15:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "593:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "572:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "572:24:64"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "598:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "569:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "569:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "566:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "628:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "637:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "632:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "693:87:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "memPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "722:6:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "730:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "718:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "718:14:64"
                                            },
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "734:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "714:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "714:23:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "offset",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "753:6:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "761:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "749:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "749:14:64"
                                                },
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "765:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "745:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "745:23:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "739:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "739:30:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "707:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "707:63:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "707:63:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "658:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "661:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "655:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "655:9:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "665:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "667:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "676:1:64"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "679:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "672:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "672:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "667:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "651:3:64",
                                "statements": []
                              },
                              "src": "647:133:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "810:59:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "memPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "839:6:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "847:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "835:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "835:15:64"
                                            },
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "852:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "831:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "831:24:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "857:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "824:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "824:35:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "824:35:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "795:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "798:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "792:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "792:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "789:80:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "878:15:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "887:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "878:5:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_string_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "52:6:64",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "60:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "68:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:885:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1039:488:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1085:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1094:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1097:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1087:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1087:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1087:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1060:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1069:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1056:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1056:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1081:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1052:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1052:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1049:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1110:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1130:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1124:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1124:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1114:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1149:28:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1167:2:64",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1171:1:64",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1163:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1163:10:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1175:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1159:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1159:18:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1153:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1204:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1213:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1216:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1206:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1206:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1206:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1192:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1200:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1189:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1189:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1186:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1229:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1272:9:64"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1283:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1268:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1268:22:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1292:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1239:28:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1239:61:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1229:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1309:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1335:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1346:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1331:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1331:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1325:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1325:25:64"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1313:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1379:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1388:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1391:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1381:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1381:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1381:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1365:8:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1375:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1362:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1362:16:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1359:36:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1404:73:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1447:9:64"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1458:8:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1443:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1443:24:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1469:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_string_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1414:28:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1414:63:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1404:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1486:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1506:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1517:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1502:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1502:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1496:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1496:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1486:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "989:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1000:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1012:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1020:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1028:6:64",
                            "type": ""
                          }
                        ],
                        "src": "904:623:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1706:181:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1723:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1734:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1716:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1716:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1716:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1757:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1768:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1753:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1753:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1773:2:64",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1746:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1746:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1746:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1796:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1807:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1792:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1792:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1812:33:64",
                                    "type": "",
                                    "value": "ERC20: mint to the zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1785:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1785:61:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1785:61:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1855:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1867:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1878:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1863:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1863:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1855:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1683:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1697:4:64",
                            "type": ""
                          }
                        ],
                        "src": "1532:355:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1993:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2003:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2015:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2026:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2011:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2011:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2003:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2045:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2056:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2038:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2038:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2038:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1962:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1973:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1984:4:64",
                            "type": ""
                          }
                        ],
                        "src": "1892:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2122:177:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2157:111:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2178:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2185:3:64",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2190:10:64",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "2181:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2181:20:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2171:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2171:31:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2171:31:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2222:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2225:4:64",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2215:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2215:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2215:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2250:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2253:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2243:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2243:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2243:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2138:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "2145:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "2141:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2141:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2135:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2135:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2132:136:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2277:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "2288:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "2291:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2284:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2284:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "2277:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "2105:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "2108:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "2114:3:64",
                            "type": ""
                          }
                        ],
                        "src": "2074:225:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2359:325:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2369:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2383:1:64",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "2386:4:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2379:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2379:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "2369:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2400:38:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "2430:4:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2436:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "2426:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2426:12:64"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "2404:18:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2477:31:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2479:27:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "2493:6:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2501:4:64",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "2489:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2489:17:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "2479:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "2457:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2450:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2450:26:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2447:61:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2567:111:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2588:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2595:3:64",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2600:10:64",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "2591:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2591:20:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2581:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2581:31:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2581:31:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2632:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2635:4:64",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2625:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2625:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2625:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2660:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2663:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2653:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2653:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2653:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "2523:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "2546:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2554:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2543:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2543:14:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "2520:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2520:38:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2517:161:64"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "2339:4:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "2348:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2304:380:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2721:95:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2738:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2745:3:64",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2750:10:64",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "2741:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2741:20:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2731:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2731:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2731:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2778:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2781:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2771:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2771:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2771:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2802:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2805:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2795:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2795:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2795:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2689:127:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        let _4 := 0x20\n        if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _1) { i := add(i, _4) }\n        {\n            mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n        }\n        if gt(i, _1)\n        {\n            mstore(add(add(memPtr, _1), _4), 0)\n        }\n        array := memPtr\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n        value2 := mload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ERC20: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        sum := add(x, y)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b50604051620013dc380380620013dc8339810160408190526200003491620002c6565b8251839083906200004d90600390602085019062000169565b5080516200006390600490602084019062000169565b5050506200007833826200008160201b60201c565b505050620003b3565b6001600160a01b038216620000dc5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f0919062000339565b90915550506001600160a01b038216600090815260208190526040812080548392906200011f90849062000339565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001779062000360565b90600052602060002090601f0160209004810192826200019b5760008555620001e6565b82601f10620001b657805160ff1916838001178555620001e6565b82800160010185558215620001e6579182015b82811115620001e6578251825591602001919060010190620001c9565b50620001f4929150620001f8565b5090565b5b80821115620001f45760008155600101620001f9565b600082601f8301126200022157600080fd5b81516001600160401b03808211156200023e576200023e6200039d565b604051601f8301601f19908116603f011681019082821181831017156200026957620002696200039d565b816040528381526020925086838588010111156200028657600080fd5b600091505b83821015620002aa57858201830151818301840152908201906200028b565b83821115620002bc5760008385830101525b9695505050505050565b600080600060608486031215620002dc57600080fd5b83516001600160401b0380821115620002f457600080fd5b62000302878388016200020f565b945060208601519150808211156200031957600080fd5b5062000328868287016200020f565b925050604084015190509250925092565b600082198211156200035b57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200037557607f821691505b602082108114156200039757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61101980620003c36000396000f3fe6080604052600436106100d65760003560e01c8063395093511161007f578063a457c2d711610059578063a457c2d714610238578063a9059cbb14610258578063d0e30db014610278578063dd62ed3e1461028057600080fd5b806339509351146101c057806370a08231146101e057806395d89b411461022357600080fd5b806323b872dd116100b057806323b872dd146101645780632e1a7d4d14610184578063313ce567146101a457600080fd5b806306fdde03146100ea578063095ea7b31461011557806318160ddd1461014557600080fd5b366100e5576100e36102d3565b005b600080fd5b3480156100f657600080fd5b506100ff610314565b60405161010c9190610ebe565b60405180910390f35b34801561012157600080fd5b50610135610130366004610e7b565b6103a6565b604051901515815260200161010c565b34801561015157600080fd5b506002545b60405190815260200161010c565b34801561017057600080fd5b5061013561017f366004610e3f565b6103bc565b34801561019057600080fd5b506100e361019f366004610ea5565b6104a7565b3480156101b057600080fd5b506040516012815260200161010c565b3480156101cc57600080fd5b506101356101db366004610e7b565b610517565b3480156101ec57600080fd5b506101566101fb366004610dea565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b34801561022f57600080fd5b506100ff610560565b34801561024457600080fd5b50610135610253366004610e7b565b61056f565b34801561026457600080fd5b50610135610273366004610e7b565b610647565b6100e36102d3565b34801561028c57600080fd5b5061015661029b366004610e0c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6102dd3334610654565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b60606003805461032390610f60565b80601f016020809104026020016040519081016040528092919081815260200182805461034f90610f60565b801561039c5780601f106103715761010080835404028352916020019161039c565b820191906000526020600020905b81548152906001019060200180831161037f57829003601f168201915b5050505050905090565b60006103b3338484610774565b50600192915050565b60006103c9848484610928565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203384529091529020548281101561048f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61049c8533858403610774565b506001949350505050565b6104b13382610bdc565b604051339082156108fc029083906000818181858888f193505050501580156104de573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103b391859061055b908690610f31565b610774565b60606004805461032390610f60565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015610630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610486565b61063d3385858403610774565b5060019392505050565b60006103b3338484610928565b73ffffffffffffffffffffffffffffffffffffffff82166106d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610486565b80600260008282546106e39190610f31565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260408120805483929061071d908490610f31565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8316610816576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff82166108b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166109cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff8216610a6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610b24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b68908490610f31565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610bce91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610c7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d71908490610f49565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161091b565b803573ffffffffffffffffffffffffffffffffffffffff81168114610de557600080fd5b919050565b600060208284031215610dfc57600080fd5b610e0582610dc1565b9392505050565b60008060408385031215610e1f57600080fd5b610e2883610dc1565b9150610e3660208401610dc1565b90509250929050565b600080600060608486031215610e5457600080fd5b610e5d84610dc1565b9250610e6b60208501610dc1565b9150604084013590509250925092565b60008060408385031215610e8e57600080fd5b610e9783610dc1565b946020939093013593505050565b600060208284031215610eb757600080fd5b5035919050565b600060208083528351808285015260005b81811015610eeb57858101830151858201604001528201610ecf565b81811115610efd576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008219821115610f4457610f44610fb4565b500190565b600082821015610f5b57610f5b610fb4565b500390565b600181811c90821680610f7457607f821691505b60208210811415610fae577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220829d0d9c4ddc23541a4b7149bba6af598a7aa78ae0516f60b1a07a135700390064736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x13DC CODESIZE SUB DUP1 PUSH3 0x13DC DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x2C6 JUMP JUMPDEST DUP3 MLOAD DUP4 SWAP1 DUP4 SWAP1 PUSH3 0x4D SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x169 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x63 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x169 JUMP JUMPDEST POP POP POP PUSH3 0x78 CALLER DUP3 PUSH3 0x81 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP PUSH3 0x3B3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0xDC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH3 0xF0 SWAP2 SWAP1 PUSH3 0x339 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH3 0x11F SWAP1 DUP5 SWAP1 PUSH3 0x339 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x177 SWAP1 PUSH3 0x360 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x19B JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x1E6 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x1B6 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x1E6 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x1E6 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x1E6 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x1C9 JUMP JUMPDEST POP PUSH3 0x1F4 SWAP3 SWAP2 POP PUSH3 0x1F8 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x1F4 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1F9 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x221 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x23E JUMPI PUSH3 0x23E PUSH3 0x39D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x269 JUMPI PUSH3 0x269 PUSH3 0x39D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0x286 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x2AA JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0x28B JUMP JUMPDEST DUP4 DUP3 GT ISZERO PUSH3 0x2BC JUMPI PUSH1 0x0 DUP4 DUP6 DUP4 ADD ADD MSTORE JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x2DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x2F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x302 DUP8 DUP4 DUP9 ADD PUSH3 0x20F JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x319 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x328 DUP7 DUP3 DUP8 ADD PUSH3 0x20F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0x35B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x375 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x397 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1019 DUP1 PUSH3 0x3C3 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD6 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x223 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0xE5 JUMPI PUSH2 0xE3 PUSH2 0x2D3 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFF PUSH2 0x314 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10C SWAP2 SWAP1 PUSH2 0xEBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x121 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x130 CALLDATASIZE PUSH1 0x4 PUSH2 0xE7B JUMP JUMPDEST PUSH2 0x3A6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x17F CALLDATASIZE PUSH1 0x4 PUSH2 0xE3F JUMP JUMPDEST PUSH2 0x3BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE3 PUSH2 0x19F CALLDATASIZE PUSH1 0x4 PUSH2 0xEA5 JUMP JUMPDEST PUSH2 0x4A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x1DB CALLDATASIZE PUSH1 0x4 PUSH2 0xE7B JUMP JUMPDEST PUSH2 0x517 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x156 PUSH2 0x1FB CALLDATASIZE PUSH1 0x4 PUSH2 0xDEA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFF PUSH2 0x560 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x253 CALLDATASIZE PUSH1 0x4 PUSH2 0xE7B JUMP JUMPDEST PUSH2 0x56F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0xE7B JUMP JUMPDEST PUSH2 0x647 JUMP JUMPDEST PUSH2 0xE3 PUSH2 0x2D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x156 PUSH2 0x29B CALLDATASIZE PUSH1 0x4 PUSH2 0xE0C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2DD CALLER CALLVALUE PUSH2 0x654 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLVALUE DUP2 MSTORE CALLER SWAP1 PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x323 SWAP1 PUSH2 0xF60 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x34F SWAP1 PUSH2 0xF60 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x39C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x371 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x39C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x37F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B3 CALLER DUP5 DUP5 PUSH2 0x774 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C9 DUP5 DUP5 DUP5 PUSH2 0x928 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x48F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6C6F77616E6365000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x49C DUP6 CALLER DUP6 DUP5 SUB PUSH2 0x774 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x4B1 CALLER DUP3 PUSH2 0xBDC JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 DUP3 ISZERO PUSH2 0x8FC MUL SWAP1 DUP4 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x4DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE CALLER SWAP1 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3B3 SWAP2 DUP6 SWAP1 PUSH2 0x55B SWAP1 DUP7 SWAP1 PUSH2 0xF31 JUMP JUMPDEST PUSH2 0x774 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x323 SWAP1 PUSH2 0xF60 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x630 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH2 0x63D CALLER DUP6 DUP6 DUP5 SUB PUSH2 0x774 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B3 CALLER DUP5 DUP5 PUSH2 0x928 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x6D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x486 JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x6E3 SWAP2 SWAP1 PUSH2 0xF31 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x71D SWAP1 DUP5 SWAP1 PUSH2 0xF31 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x816 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x8B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x9CB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xA6E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0xB24 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP2 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xB68 SWAP1 DUP5 SWAP1 PUSH2 0xF31 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0xBCE SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xC7F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0xD35 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6365000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP4 DUP4 SUB SWAP1 SSTORE PUSH1 0x2 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xD71 SWAP1 DUP5 SWAP1 PUSH2 0xF49 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x91B JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xDE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE05 DUP3 PUSH2 0xDC1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE28 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH2 0xE36 PUSH1 0x20 DUP5 ADD PUSH2 0xDC1 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE5D DUP5 PUSH2 0xDC1 JUMP JUMPDEST SWAP3 POP PUSH2 0xE6B PUSH1 0x20 DUP6 ADD PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE97 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xEEB JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xECF JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xEFD JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xF44 JUMPI PUSH2 0xF44 PUSH2 0xFB4 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xF5B JUMPI PUSH2 0xF5B PUSH2 0xFB4 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xF74 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xFAE JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP3 SWAP14 0xD SWAP13 0x4D 0xDC 0x23 SLOAD BYTE 0x4B PUSH18 0x49BBA6AF598A7AA78AE0516F60B1A07A1357 STOP CODECOPY STOP PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "128:665:35:-:0;;;272:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1972:13:0;;378:4:35;;384:6;;1972:13:0;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;1995:17:0;;;;:7;;:17;;;;;:::i;:::-;;1906:113;;402:25:35::1;408:10;420:6;402:5;;;:25;;:::i;:::-;272:162:::0;;;128:665;;8254:389:0;-1:-1:-1;;;;;8337:21:0;;8329:65;;;;-1:-1:-1;;;8329:65:0;;1734:2:64;8329:65:0;;;1716:21:64;1773:2;1753:18;;;1746:30;1812:33;1792:18;;;1785:61;1863:18;;8329:65:0;;;;;;;;8481:6;8465:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8497:18:0;;:9;:18;;;;;;;;;;:28;;8519:6;;8497:9;:28;;8519:6;;8497:28;:::i;:::-;;;;-1:-1:-1;;8540:37:0;;2038:25:64;;;-1:-1:-1;;;;;8540:37:0;;;8557:1;;8540:37;;2026:2:64;2011:18;8540:37:0;;;;;;;8254:389;;:::o;128:665:35:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;128:665:35;;;-1:-1:-1;128:665:35;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:885:64;68:5;121:3;114:4;106:6;102:17;98:27;88:55;;139:1;136;129:12;88:55;162:13;;-1:-1:-1;;;;;224:10:64;;;221:36;;;237:18;;:::i;:::-;312:2;306:9;280:2;366:13;;-1:-1:-1;;362:22:64;;;386:2;358:31;354:40;342:53;;;410:18;;;430:22;;;407:46;404:72;;;456:18;;:::i;:::-;496:10;492:2;485:22;531:2;523:6;516:18;553:4;543:14;;598:3;593:2;588;580:6;576:15;572:24;569:33;566:53;;;615:1;612;605:12;566:53;637:1;628:10;;647:133;661:2;658:1;655:9;647:133;;;749:14;;;745:23;;739:30;718:14;;;714:23;;707:63;672:10;;;;647:133;;;798:2;795:1;792:9;789:80;;;857:1;852:2;847;839:6;835:15;831:24;824:35;789:80;887:6;14:885;-1:-1:-1;;;;;;14:885:64:o;904:623::-;1012:6;1020;1028;1081:2;1069:9;1060:7;1056:23;1052:32;1049:52;;;1097:1;1094;1087:12;1049:52;1124:16;;-1:-1:-1;;;;;1189:14:64;;;1186:34;;;1216:1;1213;1206:12;1186:34;1239:61;1292:7;1283:6;1272:9;1268:22;1239:61;:::i;:::-;1229:71;;1346:2;1335:9;1331:18;1325:25;1309:41;;1375:2;1365:8;1362:16;1359:36;;;1391:1;1388;1381:12;1359:36;;1414:63;1469:7;1458:8;1447:9;1443:24;1414:63;:::i;:::-;1404:73;;;1517:2;1506:9;1502:18;1496:25;1486:35;;904:623;;;;;:::o;2074:225::-;2114:3;2145:1;2141:6;2138:1;2135:13;2132:136;;;2190:10;2185:3;2181:20;2178:1;2171:31;2225:4;2222:1;2215:15;2253:4;2250:1;2243:15;2132:136;-1:-1:-1;2284:9:64;;2074:225::o;2304:380::-;2383:1;2379:12;;;;2426;;;2447:61;;2501:4;2493:6;2489:17;2479:27;;2447:61;2554:2;2546:6;2543:14;2523:18;2520:38;2517:161;;;2600:10;2595:3;2591:20;2588:1;2581:31;2635:4;2632:1;2625:15;2663:4;2660:1;2653:15;2517:161;;2304:380;;;:::o;2689:127::-;2750:10;2745:3;2741:20;2738:1;2731:31;2781:4;2778:1;2771:15;2805:4;2802:1;2795:15;2689:127;128:665:35;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_5808": {
                  "entryPoint": null,
                  "id": 5808,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_afterTokenTransfer_544": {
                  "entryPoint": null,
                  "id": 544,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_approve_522": {
                  "entryPoint": 1908,
                  "id": 522,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_beforeTokenTransfer_533": {
                  "entryPoint": null,
                  "id": 533,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_burn_477": {
                  "entryPoint": 3036,
                  "id": 477,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_mint_405": {
                  "entryPoint": 1620,
                  "id": 405,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_msgSender_660": {
                  "entryPoint": null,
                  "id": 660,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_transfer_349": {
                  "entryPoint": 2344,
                  "id": 349,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@allowance_137": {
                  "entryPoint": null,
                  "id": 137,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@approve_158": {
                  "entryPoint": 934,
                  "id": 158,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@balanceOf_98": {
                  "entryPoint": null,
                  "id": 98,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@decimals_74": {
                  "entryPoint": null,
                  "id": 74,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@decreaseAllowance_272": {
                  "entryPoint": 1391,
                  "id": 272,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@deposit_5826": {
                  "entryPoint": 723,
                  "id": 5826,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@increaseAllowance_233": {
                  "entryPoint": 1303,
                  "id": 233,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@name_54": {
                  "entryPoint": 788,
                  "id": 54,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@symbol_64": {
                  "entryPoint": 1376,
                  "id": 64,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@totalSupply_84": {
                  "entryPoint": null,
                  "id": 84,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@transferFrom_206": {
                  "entryPoint": 956,
                  "id": 206,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@transfer_119": {
                  "entryPoint": 1607,
                  "id": 119,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@withdraw_5853": {
                  "entryPoint": 1191,
                  "id": 5853,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_address": {
                  "entryPoint": 3521,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 3562,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 3596,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 3647,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 3707,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 3749,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 3774,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 3889,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 3913,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 3936,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 4020,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:7568:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "63:147:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "73:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "95:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "82:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "82:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "73:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "188:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "197:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "200:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "190:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "190:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "190:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "124:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "135:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "142:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "131:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "131:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "121:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "121:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "114:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "114:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "111:93:64"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "42:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "53:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:196:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "285:116:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "331:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "340:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "343:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "333:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "333:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "333:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "306:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "315:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "302:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "302:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "327:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "298:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "298:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "295:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "356:39:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "385:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "366:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "366:29:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "356:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "251:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "262:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "274:6:64",
                            "type": ""
                          }
                        ],
                        "src": "215:186:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "493:173:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "539:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "548:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "551:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "541:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "541:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "541:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "514:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "523:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "510:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "510:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "535:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "506:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "506:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "503:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "564:39:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "593:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "574:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "574:29:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "564:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "612:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "645:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "656:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "641:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "641:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "622:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "622:38:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "612:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "451:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "462:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "474:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "482:6:64",
                            "type": ""
                          }
                        ],
                        "src": "406:260:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "775:224:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "821:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "830:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "833:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "823:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "823:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "823:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "796:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "805:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "792:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "792:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "817:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "788:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "788:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "785:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "846:39:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "875:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "856:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "856:29:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "846:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "894:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "927:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "938:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "923:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "923:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "904:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "904:38:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "894:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "951:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "978:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "989:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "974:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "974:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "961:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "961:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "951:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "725:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "736:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "748:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "756:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "764:6:64",
                            "type": ""
                          }
                        ],
                        "src": "671:328:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1091:167:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1137:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1146:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1149:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1139:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1139:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1139:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1112:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1121:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1108:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1108:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1133:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1104:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1104:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1101:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1162:39:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1191:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1172:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1172:29:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1162:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1210:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1237:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1248:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1233:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1233:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1220:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1220:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1210:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1049:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1060:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1072:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1080:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1004:254:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1333:110:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1379:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1388:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1391:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1381:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1381:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1381:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1354:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1363:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1350:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1350:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1375:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1346:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1346:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1343:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1404:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1427:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1414:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1414:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1404:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1299:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1310:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1322:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1263:180:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1543:92:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1553:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1565:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1576:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1561:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1561:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1553:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1595:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1620:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1613:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1613:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "1606:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1606:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1588:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1588:41:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1588:41:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1512:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1523:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1534:4:64",
                            "type": ""
                          }
                        ],
                        "src": "1448:187:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1761:535:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1771:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1781:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1775:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1799:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1810:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1792:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1792:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1792:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1822:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1842:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1836:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1836:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1826:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1869:9:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1880:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1865:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1865:18:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1885:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1858:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1858:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1858:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1901:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1910:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1905:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1970:90:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1999:9:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2010:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1995:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1995:17:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2014:2:64",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1991:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1991:26:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2033:6:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2041:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2029:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2029:14:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2045:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2025:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2025:23:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2019:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2019:30:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1984:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1984:66:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1984:66:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1931:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1934:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1928:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1928:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1942:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1944:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1953:1:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1956:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1949:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1949:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1944:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1924:3:64",
                                "statements": []
                              },
                              "src": "1920:140:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2094:66:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2123:9:64"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2134:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2119:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2119:22:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2143:2:64",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2115:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2115:31:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2148:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2108:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2108:42:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2108:42:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2075:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2078:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2072:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2072:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2069:91:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2169:121:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2185:9:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2204:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2212:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2200:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2200:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2217:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2196:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2196:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2181:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2181:104:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2287:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2177:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2177:113:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2169:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1730:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1741:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1752:4:64",
                            "type": ""
                          }
                        ],
                        "src": "1640:656:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2475:225:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2492:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2503:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2485:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2485:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2485:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2526:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2537:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2522:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2522:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2542:2:64",
                                    "type": "",
                                    "value": "35"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2515:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2515:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2515:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2565:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2576:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2561:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2561:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2581:34:64",
                                    "type": "",
                                    "value": "ERC20: transfer to the zero addr"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2554:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2554:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2554:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2636:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2647:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2632:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2632:18:64"
                                  },
                                  {
                                    "hexValue": "657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2652:5:64",
                                    "type": "",
                                    "value": "ess"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2625:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2625:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2625:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2667:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2679:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2690:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2675:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2675:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2667:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2452:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2466:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2301:399:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2879:224:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2896:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2907:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2889:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2889:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2889:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2930:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2941:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2926:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2926:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2946:2:64",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2919:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2919:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2919:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2969:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2980:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2965:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2965:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2985:34:64",
                                    "type": "",
                                    "value": "ERC20: burn amount exceeds balan"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2958:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2958:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2958:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3040:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3051:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3036:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3036:18:64"
                                  },
                                  {
                                    "hexValue": "6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3056:4:64",
                                    "type": "",
                                    "value": "ce"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3029:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3029:32:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3029:32:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3070:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3082:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3093:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3078:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3078:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3070:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2856:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2870:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2705:398:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3282:224:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3299:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3310:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3292:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3292:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3292:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3333:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3344:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3329:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3329:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3349:2:64",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3322:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3322:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3322:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3372:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3383:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3368:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3368:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a20617070726f766520746f20746865207a65726f206164647265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3388:34:64",
                                    "type": "",
                                    "value": "ERC20: approve to the zero addre"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3361:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3361:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3361:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3443:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3454:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3439:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3439:18:64"
                                  },
                                  {
                                    "hexValue": "7373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3459:4:64",
                                    "type": "",
                                    "value": "ss"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3432:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3432:32:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3432:32:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3473:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3485:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3496:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3481:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3481:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3473:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3259:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3273:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3108:398:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3685:228:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3702:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3713:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3695:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3695:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3695:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3736:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3747:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3732:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3732:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3752:2:64",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3725:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3725:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3725:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3775:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3786:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3771:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3771:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3791:34:64",
                                    "type": "",
                                    "value": "ERC20: transfer amount exceeds b"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3764:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3764:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3764:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3846:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3857:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3842:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3842:18:64"
                                  },
                                  {
                                    "hexValue": "616c616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3862:8:64",
                                    "type": "",
                                    "value": "alance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3835:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3835:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3835:36:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3880:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3892:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3903:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3888:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3888:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3880:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3662:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3676:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3511:402:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4092:230:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4109:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4120:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4102:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4102:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4102:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4143:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4154:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4139:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4139:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4159:2:64",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4132:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4132:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4132:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4182:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4193:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4178:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4178:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4198:34:64",
                                    "type": "",
                                    "value": "ERC20: transfer amount exceeds a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4171:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4171:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4171:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4253:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4264:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4249:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4249:18:64"
                                  },
                                  {
                                    "hexValue": "6c6c6f77616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4269:10:64",
                                    "type": "",
                                    "value": "llowance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4242:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4242:38:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4242:38:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4289:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4301:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4312:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4297:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4297:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4289:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4069:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4083:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3918:404:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4501:223:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4518:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4529:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4511:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4511:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4511:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4552:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4563:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4548:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4548:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4568:2:64",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4541:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4541:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4541:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4591:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4602:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4587:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4587:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f20616464726573",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4607:34:64",
                                    "type": "",
                                    "value": "ERC20: burn from the zero addres"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4580:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4580:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4580:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4662:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4673:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4658:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4658:18:64"
                                  },
                                  {
                                    "hexValue": "73",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4678:3:64",
                                    "type": "",
                                    "value": "s"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4651:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4651:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4651:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4691:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4703:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4714:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4699:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4699:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4691:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4478:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4492:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4327:397:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4903:227:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4920:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4931:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4913:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4913:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4913:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4954:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4965:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4950:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4950:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4970:2:64",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4943:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4943:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4943:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4993:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5004:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4989:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4989:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f206164",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5009:34:64",
                                    "type": "",
                                    "value": "ERC20: transfer from the zero ad"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4982:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4982:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4982:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5064:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5075:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5060:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5060:18:64"
                                  },
                                  {
                                    "hexValue": "6472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5080:7:64",
                                    "type": "",
                                    "value": "dress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5053:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5053:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5053:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5097:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5109:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5120:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5105:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5105:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5097:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4880:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4894:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4729:401:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5309:226:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5326:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5337:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5319:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5319:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5319:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5360:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5371:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5356:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5356:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5376:2:64",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5349:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5349:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5349:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5399:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5410:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5395:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5395:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f20616464",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5415:34:64",
                                    "type": "",
                                    "value": "ERC20: approve from the zero add"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5388:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5388:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5388:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5470:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5481:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5466:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5466:18:64"
                                  },
                                  {
                                    "hexValue": "72657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5486:6:64",
                                    "type": "",
                                    "value": "ress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5459:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5459:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5459:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5502:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5514:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5525:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5510:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5510:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5502:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5286:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5300:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5135:400:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5714:227:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5731:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5742:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5724:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5724:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5724:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5765:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5776:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5761:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5761:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5781:2:64",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5754:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5754:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5754:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5804:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5815:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5800:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5800:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5820:34:64",
                                    "type": "",
                                    "value": "ERC20: decreased allowance below"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5793:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5793:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5793:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5875:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5886:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5871:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5871:18:64"
                                  },
                                  {
                                    "hexValue": "207a65726f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5891:7:64",
                                    "type": "",
                                    "value": " zero"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5864:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5864:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5864:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5908:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5920:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5931:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5916:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5916:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5908:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5691:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5705:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5540:401:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6120:181:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6137:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6148:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6130:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6130:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6130:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6171:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6182:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6167:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6167:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6187:2:64",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6160:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6160:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6160:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6210:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6221:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6206:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6206:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6226:33:64",
                                    "type": "",
                                    "value": "ERC20: mint to the zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6199:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6199:61:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6199:61:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6269:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6281:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6292:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6277:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6277:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6269:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6097:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6111:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5946:355:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6407:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6417:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6429:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6440:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6425:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6425:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6417:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6459:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6470:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6452:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6452:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6452:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6376:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6387:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6398:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6306:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6585:87:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6595:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6607:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6618:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6603:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6603:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6595:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6637:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6652:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6660:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6648:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6648:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6630:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6630:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6630:36:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6554:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6565:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6576:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6488:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6725:80:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6752:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "6754:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6754:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6754:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "6741:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "6748:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "6744:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6744:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6738:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6738:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6735:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6783:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "6794:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "6797:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6790:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6790:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "6783:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "6708:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "6711:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "6717:3:64",
                            "type": ""
                          }
                        ],
                        "src": "6677:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6859:76:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6881:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "6883:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6883:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6883:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "6875:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "6878:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6872:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6872:8:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6869:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6912:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "6924:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "6927:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "6920:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6920:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "6912:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "6841:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "6844:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "6850:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6810:125:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6995:382:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7005:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7019:1:64",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "7022:4:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "7015:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7015:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "7005:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7036:38:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "7066:4:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7072:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "7062:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7062:12:64"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "7040:18:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7113:31:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7115:27:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "7129:6:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7137:4:64",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "7125:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7125:17:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "7115:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "7093:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7086:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7086:26:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7083:61:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7203:168:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7224:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7227:77:64",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7217:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7217:88:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7217:88:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7325:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7328:4:64",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7318:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7318:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7318:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7353:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7356:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7346:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7346:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7346:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "7159:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "7182:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7190:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7179:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7179:14:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "7156:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7156:38:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7153:218:64"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "6975:4:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "6984:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6940:437:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7414:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7431:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7434:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7424:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7424:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7424:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7528:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7531:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7521:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7521:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7521:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7552:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7555:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "7545:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7545:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7545:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "7382:184:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n    function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n        mstore(add(headStart, 96), \"ess\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC20: burn amount exceeds balan\")\n        mstore(add(headStart, 96), \"ce\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"ERC20: transfer amount exceeds b\")\n        mstore(add(headStart, 96), \"alance\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"ERC20: transfer amount exceeds a\")\n        mstore(add(headStart, 96), \"llowance\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC20: burn from the zero addres\")\n        mstore(add(headStart, 96), \"s\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: decreased allowance below\")\n        mstore(add(headStart, 96), \" zero\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ERC20: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600436106100d65760003560e01c8063395093511161007f578063a457c2d711610059578063a457c2d714610238578063a9059cbb14610258578063d0e30db014610278578063dd62ed3e1461028057600080fd5b806339509351146101c057806370a08231146101e057806395d89b411461022357600080fd5b806323b872dd116100b057806323b872dd146101645780632e1a7d4d14610184578063313ce567146101a457600080fd5b806306fdde03146100ea578063095ea7b31461011557806318160ddd1461014557600080fd5b366100e5576100e36102d3565b005b600080fd5b3480156100f657600080fd5b506100ff610314565b60405161010c9190610ebe565b60405180910390f35b34801561012157600080fd5b50610135610130366004610e7b565b6103a6565b604051901515815260200161010c565b34801561015157600080fd5b506002545b60405190815260200161010c565b34801561017057600080fd5b5061013561017f366004610e3f565b6103bc565b34801561019057600080fd5b506100e361019f366004610ea5565b6104a7565b3480156101b057600080fd5b506040516012815260200161010c565b3480156101cc57600080fd5b506101356101db366004610e7b565b610517565b3480156101ec57600080fd5b506101566101fb366004610dea565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b34801561022f57600080fd5b506100ff610560565b34801561024457600080fd5b50610135610253366004610e7b565b61056f565b34801561026457600080fd5b50610135610273366004610e7b565b610647565b6100e36102d3565b34801561028c57600080fd5b5061015661029b366004610e0c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6102dd3334610654565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b60606003805461032390610f60565b80601f016020809104026020016040519081016040528092919081815260200182805461034f90610f60565b801561039c5780601f106103715761010080835404028352916020019161039c565b820191906000526020600020905b81548152906001019060200180831161037f57829003601f168201915b5050505050905090565b60006103b3338484610774565b50600192915050565b60006103c9848484610928565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203384529091529020548281101561048f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61049c8533858403610774565b506001949350505050565b6104b13382610bdc565b604051339082156108fc029083906000818181858888f193505050501580156104de573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103b391859061055b908690610f31565b610774565b60606004805461032390610f60565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015610630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610486565b61063d3385858403610774565b5060019392505050565b60006103b3338484610928565b73ffffffffffffffffffffffffffffffffffffffff82166106d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610486565b80600260008282546106e39190610f31565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260408120805483929061071d908490610f31565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8316610816576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff82166108b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166109cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff8216610a6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610b24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b68908490610f31565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610bce91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610c7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d71908490610f49565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161091b565b803573ffffffffffffffffffffffffffffffffffffffff81168114610de557600080fd5b919050565b600060208284031215610dfc57600080fd5b610e0582610dc1565b9392505050565b60008060408385031215610e1f57600080fd5b610e2883610dc1565b9150610e3660208401610dc1565b90509250929050565b600080600060608486031215610e5457600080fd5b610e5d84610dc1565b9250610e6b60208501610dc1565b9150604084013590509250925092565b60008060408385031215610e8e57600080fd5b610e9783610dc1565b946020939093013593505050565b600060208284031215610eb757600080fd5b5035919050565b600060208083528351808285015260005b81811015610eeb57858101830151858201604001528201610ecf565b81811115610efd576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008219821115610f4457610f44610fb4565b500190565b600082821015610f5b57610f5b610fb4565b500390565b600181811c90821680610f7457607f821691505b60208210811415610fae577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220829d0d9c4ddc23541a4b7149bba6af598a7aa78ae0516f60b1a07a135700390064736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD6 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x223 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0xE5 JUMPI PUSH2 0xE3 PUSH2 0x2D3 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFF PUSH2 0x314 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10C SWAP2 SWAP1 PUSH2 0xEBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x121 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x130 CALLDATASIZE PUSH1 0x4 PUSH2 0xE7B JUMP JUMPDEST PUSH2 0x3A6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x17F CALLDATASIZE PUSH1 0x4 PUSH2 0xE3F JUMP JUMPDEST PUSH2 0x3BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE3 PUSH2 0x19F CALLDATASIZE PUSH1 0x4 PUSH2 0xEA5 JUMP JUMPDEST PUSH2 0x4A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x1DB CALLDATASIZE PUSH1 0x4 PUSH2 0xE7B JUMP JUMPDEST PUSH2 0x517 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x156 PUSH2 0x1FB CALLDATASIZE PUSH1 0x4 PUSH2 0xDEA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFF PUSH2 0x560 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x253 CALLDATASIZE PUSH1 0x4 PUSH2 0xE7B JUMP JUMPDEST PUSH2 0x56F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0xE7B JUMP JUMPDEST PUSH2 0x647 JUMP JUMPDEST PUSH2 0xE3 PUSH2 0x2D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x156 PUSH2 0x29B CALLDATASIZE PUSH1 0x4 PUSH2 0xE0C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2DD CALLER CALLVALUE PUSH2 0x654 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLVALUE DUP2 MSTORE CALLER SWAP1 PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x323 SWAP1 PUSH2 0xF60 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x34F SWAP1 PUSH2 0xF60 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x39C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x371 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x39C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x37F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B3 CALLER DUP5 DUP5 PUSH2 0x774 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C9 DUP5 DUP5 DUP5 PUSH2 0x928 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x48F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6C6F77616E6365000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x49C DUP6 CALLER DUP6 DUP5 SUB PUSH2 0x774 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x4B1 CALLER DUP3 PUSH2 0xBDC JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 DUP3 ISZERO PUSH2 0x8FC MUL SWAP1 DUP4 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x4DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE CALLER SWAP1 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3B3 SWAP2 DUP6 SWAP1 PUSH2 0x55B SWAP1 DUP7 SWAP1 PUSH2 0xF31 JUMP JUMPDEST PUSH2 0x774 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x323 SWAP1 PUSH2 0xF60 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x630 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH2 0x63D CALLER DUP6 DUP6 DUP5 SUB PUSH2 0x774 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B3 CALLER DUP5 DUP5 PUSH2 0x928 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x6D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x486 JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x6E3 SWAP2 SWAP1 PUSH2 0xF31 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x71D SWAP1 DUP5 SWAP1 PUSH2 0xF31 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x816 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x8B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x9CB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xA6E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0xB24 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP2 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xB68 SWAP1 DUP5 SWAP1 PUSH2 0xF31 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0xBCE SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xC7F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0xD35 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6365000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP4 DUP4 SUB SWAP1 SSTORE PUSH1 0x2 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xD71 SWAP1 DUP5 SWAP1 PUSH2 0xF49 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x91B JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xDE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE05 DUP3 PUSH2 0xDC1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE28 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH2 0xE36 PUSH1 0x20 DUP5 ADD PUSH2 0xDC1 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE5D DUP5 PUSH2 0xDC1 JUMP JUMPDEST SWAP3 POP PUSH2 0xE6B PUSH1 0x20 DUP6 ADD PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE97 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xEEB JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xECF JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xEFD JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xF44 JUMPI PUSH2 0xF44 PUSH2 0xFB4 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xF5B JUMPI PUSH2 0xF5B PUSH2 0xFB4 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xF74 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xFAE JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP3 SWAP14 0xD SWAP13 0x4D 0xDC 0x23 SLOAD BYTE 0x4B PUSH18 0x49BBA6AF598A7AA78AE0516F60B1A07A1357 STOP CODECOPY STOP PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "128:665:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;477:9;:7;:9::i;:::-;128:665;;;;;2084:98:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4181:166;;;;;;;;;;-1:-1:-1;4181:166:0;;;;;:::i;:::-;;:::i;:::-;;;1613:14:64;;1606:22;1588:41;;1576:2;1561:18;4181:166:0;1448:187:64;3172:106:0;;;;;;;;;;-1:-1:-1;3259:12:0;;3172:106;;;6452:25:64;;;6440:2;6425:18;3172:106:0;6306:177:64;4814:478:0;;;;;;;;;;-1:-1:-1;4814:478:0;;;;;:::i;:::-;;:::i;629:162:35:-;;;;;;;;;;-1:-1:-1;629:162:35;;;;;:::i;:::-;;:::i;3021:91:0:-;;;;;;;;;;-1:-1:-1;3021:91:0;;3103:2;6630:36:64;;6618:2;6603:18;3021:91:0;6488:184:64;5687:212:0;;;;;;;;;;-1:-1:-1;5687:212:0;;;;;:::i;:::-;;:::i;3336:125::-;;;;;;;;;;-1:-1:-1;3336:125:0;;;;;:::i;:::-;3436:18;;3410:7;3436:18;;;;;;;;;;;;3336:125;2295:102;;;;;;;;;;;;;:::i;6386:405::-;;;;;;;;;;-1:-1:-1;6386:405:0;;;;;:::i;:::-;;:::i;3664:172::-;;;;;;;;;;-1:-1:-1;3664:172:0;;;;;:::i;:::-;;:::i;499:124:35:-;;;:::i;3894:149:0:-;;;;;;;;;;-1:-1:-1;3894:149:0;;;;;:::i;:::-;4009:18;;;;3983:7;4009:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3894:149;499:124:35;543:28;549:10;561:9;543:5;:28::i;:::-;586:30;;606:9;6452:25:64;;594:10:35;;586:30;;6440:2:64;6425:18;586:30:35;;;;;;;499:124::o;2084:98:0:-;2138:13;2170:5;2163:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2084:98;:::o;4181:166::-;4264:4;4280:39;666:10:3;4303:7:0;4312:6;4280:8;:39::i;:::-;-1:-1:-1;4336:4:0;4181:166;;;;:::o;4814:478::-;4950:4;4966:36;4976:6;4984:9;4995:6;4966:9;:36::i;:::-;5040:19;;;5013:24;5040:19;;;:11;:19;;;;;;;;666:10:3;5040:33:0;;;;;;;;5091:26;;;;5083:79;;;;;;;4120:2:64;5083:79:0;;;4102:21:64;4159:2;4139:18;;;4132:30;4198:34;4178:18;;;4171:62;4269:10;4249:18;;;4242:38;4297:19;;5083:79:0;;;;;;;;;5196:57;5205:6;666:10:3;5246:6:0;5227:16;:25;5196:8;:57::i;:::-;-1:-1:-1;5281:4:0;;4814:478;-1:-1:-1;;;;4814:478:0:o;629:162:35:-;677:22;683:10;695:3;677:5;:22::i;:::-;709:33;;717:10;;709:33;;;;;738:3;;709:33;;;;738:3;717:10;709:33;;;;;;;;;;;;;;;;;;;;-1:-1:-1;757:27:35;;6452:25:64;;;768:10:35;;757:27;;6440:2:64;6425:18;757:27:35;;;;;;;629:162;:::o;5687:212:0:-;666:10:3;5775:4:0;5823:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;5775:4;;5791:80;;5814:7;;5823:47;;5860:10;;5823:47;:::i;:::-;5791:8;:80::i;2295:102::-;2351:13;2383:7;2376:14;;;;;:::i;6386:405::-;666:10:3;6479:4:0;6522:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;6574:35;;;;6566:85;;;;;;;5742:2:64;6566:85:0;;;5724:21:64;5781:2;5761:18;;;5754:30;5820:34;5800:18;;;5793:62;5891:7;5871:18;;;5864:35;5916:19;;6566:85:0;5540:401:64;6566:85:0;6685:67;666:10:3;6708:7:0;6736:15;6717:16;:34;6685:8;:67::i;:::-;-1:-1:-1;6780:4:0;;6386:405;-1:-1:-1;;;6386:405:0:o;3664:172::-;3750:4;3766:42;666:10:3;3790:9:0;3801:6;3766:9;:42::i;8254:389::-;8337:21;;;8329:65;;;;;;;6148:2:64;8329:65:0;;;6130:21:64;6187:2;6167:18;;;6160:30;6226:33;6206:18;;;6199:61;6277:18;;8329:65:0;5946:355:64;8329:65:0;8481:6;8465:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;8497:18:0;;;:9;:18;;;;;;;;;;:28;;8519:6;;8497:9;:28;;8519:6;;8497:28;:::i;:::-;;;;-1:-1:-1;;8540:37:0;;6452:25:64;;;8540:37:0;;;;8557:1;;8540:37;;6440:2:64;6425:18;8540:37:0;;;;;;;8254:389;;:::o;9962:370::-;10093:19;;;10085:68;;;;;;;5337:2:64;10085:68:0;;;5319:21:64;5376:2;5356:18;;;5349:30;5415:34;5395:18;;;5388:62;5486:6;5466:18;;;5459:34;5510:19;;10085:68:0;5135:400:64;10085:68:0;10171:21;;;10163:68;;;;;;;3310:2:64;10163:68:0;;;3292:21:64;3349:2;3329:18;;;3322:30;3388:34;3368:18;;;3361:62;3459:4;3439:18;;;3432:32;3481:19;;10163:68:0;3108:398:64;10163:68:0;10242:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10293:32;;6452:25:64;;;10293:32:0;;6425:18:64;10293:32:0;;;;;;;;9962:370;;;:::o;7265:713::-;7400:20;;;7392:70;;;;;;;4931:2:64;7392:70:0;;;4913:21:64;4970:2;4950:18;;;4943:30;5009:34;4989:18;;;4982:62;5080:7;5060:18;;;5053:35;5105:19;;7392:70:0;4729:401:64;7392:70:0;7480:23;;;7472:71;;;;;;;2503:2:64;7472:71:0;;;2485:21:64;2542:2;2522:18;;;2515:30;2581:34;2561:18;;;2554:62;2652:5;2632:18;;;2625:33;2675:19;;7472:71:0;2301:399:64;7472:71:0;7636:17;;;7612:21;7636:17;;;;;;;;;;;7671:23;;;;7663:74;;;;;;;3713:2:64;7663:74:0;;;3695:21:64;3752:2;3732:18;;;3725:30;3791:34;3771:18;;;3764:62;3862:8;3842:18;;;3835:36;3888:19;;7663:74:0;3511:402:64;7663:74:0;7771:17;;;;:9;:17;;;;;;;;;;;7791:22;;;7771:42;;7833:20;;;;;;;;:30;;7807:6;;7771:9;7833:30;;7807:6;;7833:30;:::i;:::-;;;;;;;;7896:9;7879:35;;7888:6;7879:35;;;7907:6;7879:35;;;;6452:25:64;;6440:2;6425:18;;6306:177;7879:35:0;;;;;;;;7382:596;7265:713;;;:::o;8963:576::-;9046:21;;;9038:67;;;;;;;4529:2:64;9038:67:0;;;4511:21:64;4568:2;4548:18;;;4541:30;4607:34;4587:18;;;4580:62;4678:3;4658:18;;;4651:31;4699:19;;9038:67:0;4327:397:64;9038:67:0;9201:18;;;9176:22;9201:18;;;;;;;;;;;9237:24;;;;9229:71;;;;;;;2907:2:64;9229:71:0;;;2889:21:64;2946:2;2926:18;;;2919:30;2985:34;2965:18;;;2958:62;3056:4;3036:18;;;3029:32;3078:19;;9229:71:0;2705:398:64;9229:71:0;9334:18;;;:9;:18;;;;;;;;;;9355:23;;;9334:44;;9398:12;:22;;9372:6;;9334:9;9398:22;;9372:6;;9398:22;:::i;:::-;;;;-1:-1:-1;;9436:37:0;;6452:25:64;;;9462:1:0;;9436:37;;;;;;6440:2:64;6425:18;9436:37:0;6306:177:64;14:196;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;:::-;356:39;215:186;-1:-1:-1;;;215:186:64:o;406:260::-;474:6;482;535:2;523:9;514:7;510:23;506:32;503:52;;;551:1;548;541:12;503:52;574:29;593:9;574:29;:::i;:::-;564:39;;622:38;656:2;645:9;641:18;622:38;:::i;:::-;612:48;;406:260;;;;;:::o;671:328::-;748:6;756;764;817:2;805:9;796:7;792:23;788:32;785:52;;;833:1;830;823:12;785:52;856:29;875:9;856:29;:::i;:::-;846:39;;904:38;938:2;927:9;923:18;904:38;:::i;:::-;894:48;;989:2;978:9;974:18;961:32;951:42;;671:328;;;;;:::o;1004:254::-;1072:6;1080;1133:2;1121:9;1112:7;1108:23;1104:32;1101:52;;;1149:1;1146;1139:12;1101:52;1172:29;1191:9;1172:29;:::i;:::-;1162:39;1248:2;1233:18;;;;1220:32;;-1:-1:-1;;;1004:254:64:o;1263:180::-;1322:6;1375:2;1363:9;1354:7;1350:23;1346:32;1343:52;;;1391:1;1388;1381:12;1343:52;-1:-1:-1;1414:23:64;;1263:180;-1:-1:-1;1263:180:64:o;1640:656::-;1752:4;1781:2;1810;1799:9;1792:21;1842:6;1836:13;1885:6;1880:2;1869:9;1865:18;1858:34;1910:1;1920:140;1934:6;1931:1;1928:13;1920:140;;;2029:14;;;2025:23;;2019:30;1995:17;;;2014:2;1991:26;1984:66;1949:10;;1920:140;;;2078:6;2075:1;2072:13;2069:91;;;2148:1;2143:2;2134:6;2123:9;2119:22;2115:31;2108:42;2069:91;-1:-1:-1;2212:2:64;2200:15;2217:66;2196:88;2181:104;;;;2287:2;2177:113;;1640:656;-1:-1:-1;;;1640:656:64:o;6677:128::-;6717:3;6748:1;6744:6;6741:1;6738:13;6735:39;;;6754:18;;:::i;:::-;-1:-1:-1;6790:9:64;;6677:128::o;6810:125::-;6850:4;6878:1;6875;6872:8;6869:34;;;6883:18;;:::i;:::-;-1:-1:-1;6920:9:64;;6810:125::o;6940:437::-;7019:1;7015:12;;;;7062;;;7083:61;;7137:4;7129:6;7125:17;7115:27;;7083:61;7190:2;7182:6;7179:14;7159:18;7156:38;7153:218;;;7227:77;7224:1;7217:88;7328:4;7325:1;7318:15;7356:4;7353:1;7346:15;7153:218;;6940:437;;;:::o;7382:184::-;7434:77;7431:1;7424:88;7531:4;7528:1;7521:15;7555:4;7552:1;7545:15"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "824200",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "allowance(address,address)": "infinite",
                "approve(address,uint256)": "24595",
                "balanceOf(address)": "2561",
                "decimals()": "244",
                "decreaseAllowance(address,uint256)": "26851",
                "deposit()": "infinite",
                "increaseAllowance(address,uint256)": "26898",
                "name()": "infinite",
                "symbol()": "infinite",
                "totalSupply()": "2349",
                "transfer(address,uint256)": "51125",
                "transferFrom(address,address,uint256)": "infinite",
                "withdraw(uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "deposit()": "d0e30db0",
              "increaseAllowance(address,uint256)": "39509351",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "withdraw(uint256)": "2e1a7d4d"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"supply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/ERC20Mock.sol\":\"ERC20Mock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"./extensions/IERC20Metadata.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20PresetMinterPauser}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20 is Context, IERC20, IERC20Metadata {\\n    mapping(address => uint256) private _balances;\\n\\n    mapping(address => mapping(address => uint256)) private _allowances;\\n\\n    uint256 private _totalSupply;\\n\\n    string private _name;\\n    string private _symbol;\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * The default value of {decimals} is 18. To select a different value for\\n     * {decimals} you should overload it.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the value {ERC20} uses, unless this function is\\n     * overridden;\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual override returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual override returns (uint256) {\\n        return _totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual override returns (uint256) {\\n        return _balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `recipient` cannot be the zero address.\\n     * - the caller must have a balance of at least `amount`.\\n     */\\n    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\\n        _transfer(_msgSender(), recipient, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n        return _allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n        _approve(_msgSender(), spender, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * Requirements:\\n     *\\n     * - `sender` and `recipient` cannot be the zero address.\\n     * - `sender` must have a balance of at least `amount`.\\n     * - the caller must have allowance for ``sender``'s tokens of at least\\n     * `amount`.\\n     */\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) public virtual override returns (bool) {\\n        _transfer(sender, recipient, amount);\\n\\n        uint256 currentAllowance = _allowances[sender][_msgSender()];\\n        require(currentAllowance >= amount, \\\"ERC20: transfer amount exceeds allowance\\\");\\n        unchecked {\\n            _approve(sender, _msgSender(), currentAllowance - amount);\\n        }\\n\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\\n     *\\n     * This is an alternative to {approve} that can be used as a mitigation for\\n     * problems described in {IERC20-approve}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n     *\\n     * This is an alternative to {approve} that can be used as a mitigation for\\n     * problems described in {IERC20-approve}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     * - `spender` must have allowance for the caller of at least\\n     * `subtractedValue`.\\n     */\\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n        uint256 currentAllowance = _allowances[_msgSender()][spender];\\n        require(currentAllowance >= subtractedValue, \\\"ERC20: decreased allowance below zero\\\");\\n        unchecked {\\n            _approve(_msgSender(), spender, currentAllowance - subtractedValue);\\n        }\\n\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves `amount` of tokens from `sender` to `recipient`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `sender` cannot be the zero address.\\n     * - `recipient` cannot be the zero address.\\n     * - `sender` must have a balance of at least `amount`.\\n     */\\n    function _transfer(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) internal virtual {\\n        require(sender != address(0), \\\"ERC20: transfer from the zero address\\\");\\n        require(recipient != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(sender, recipient, amount);\\n\\n        uint256 senderBalance = _balances[sender];\\n        require(senderBalance >= amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n        unchecked {\\n            _balances[sender] = senderBalance - amount;\\n        }\\n        _balances[recipient] += amount;\\n\\n        emit Transfer(sender, recipient, amount);\\n\\n        _afterTokenTransfer(sender, recipient, amount);\\n    }\\n\\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n     * the total supply.\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function _mint(address account, uint256 amount) internal virtual {\\n        require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n        _beforeTokenTransfer(address(0), account, amount);\\n\\n        _totalSupply += amount;\\n        _balances[account] += amount;\\n        emit Transfer(address(0), account, amount);\\n\\n        _afterTokenTransfer(address(0), account, amount);\\n    }\\n\\n    /**\\n     * @dev Destroys `amount` tokens from `account`, reducing the\\n     * total supply.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     * - `account` must have at least `amount` tokens.\\n     */\\n    function _burn(address account, uint256 amount) internal virtual {\\n        require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n        _beforeTokenTransfer(account, address(0), amount);\\n\\n        uint256 accountBalance = _balances[account];\\n        require(accountBalance >= amount, \\\"ERC20: burn amount exceeds balance\\\");\\n        unchecked {\\n            _balances[account] = accountBalance - amount;\\n        }\\n        _totalSupply -= amount;\\n\\n        emit Transfer(account, address(0), amount);\\n\\n        _afterTokenTransfer(account, address(0), amount);\\n    }\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     */\\n    function _approve(\\n        address owner,\\n        address spender,\\n        uint256 amount\\n    ) internal virtual {\\n        require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n        require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n        _allowances[owner][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n     * will be transferred to `to`.\\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n     * has been transferred to `to`.\\n     * - when `from` is zero, `amount` tokens have been minted for `to`.\\n     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {}\\n}\\n\",\"keccak256\":\"0xb03df8481a954604ad0c9125680893b2e3f7ff770fe470e38b89ac61b84e8072\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x83fe24f5c04a56091e50f4a345ff504c8bff658a76d4c43b16878c8f940c53b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\"},\"contracts/mocks/ERC20Mock.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/ERC20.sol\\\";\\n\\ncontract ERC20Mock is ERC20 {\\n    event Deposit(address indexed dst, uint256 wad);\\n    event Withdrawal(address indexed src, uint256 wad);\\n\\n    constructor(\\n        string memory name,\\n        string memory symbol,\\n        uint256 supply\\n    ) ERC20(name, symbol) {\\n        _mint(msg.sender, supply);\\n    }\\n\\n    receive() external payable {\\n        deposit();\\n    }\\n\\n    function deposit() public payable {\\n        _mint(msg.sender, msg.value);\\n        emit Deposit(msg.sender, msg.value);\\n    }\\n\\n    function withdraw(uint256 wad) public {\\n        _burn(msg.sender, wad);\\n        payable(msg.sender).transfer(wad);\\n        emit Withdrawal(msg.sender, wad);\\n    }\\n}\\n\",\"keccak256\":\"0x9294760772aff36ab62b66b0dabdcec99f07f9c9043009fb6db21118aa7e7d04\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 15,
                "contract": "contracts/mocks/ERC20Mock.sol:ERC20Mock",
                "label": "_balances",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 21,
                "contract": "contracts/mocks/ERC20Mock.sol:ERC20Mock",
                "label": "_allowances",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
              },
              {
                "astId": 23,
                "contract": "contracts/mocks/ERC20Mock.sol:ERC20Mock",
                "label": "_totalSupply",
                "offset": 0,
                "slot": "2",
                "type": "t_uint256"
              },
              {
                "astId": 25,
                "contract": "contracts/mocks/ERC20Mock.sol:ERC20Mock",
                "label": "_name",
                "offset": 0,
                "slot": "3",
                "type": "t_string_storage"
              },
              {
                "astId": 27,
                "contract": "contracts/mocks/ERC20Mock.sol:ERC20Mock",
                "label": "_symbol",
                "offset": 0,
                "slot": "4",
                "type": "t_string_storage"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_mapping(t_address,t_mapping(t_address,t_uint256))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_uint256)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/mocks/TridentMathConsumerMock.sol": {
        "TridentMathConsumerMock": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "x",
                  "type": "uint256"
                }
              ],
              "name": "sqrt",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610267806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063677342ce14610030575b600080fd5b61004361003e3660046101e9565b610055565b60405190815260200160405180910390f35b600061006082610066565b92915050565b60008161007557506000919050565b816001700100000000000000000000000000000000821061009b5760809190911c9060401b5b6801000000000000000082106100b65760409190911c9060201b5b64010000000082106100cd5760209190911c9060101b5b6201000082106100e25760109190911c9060081b5b61010082106100f65760089190911c9060041b5b601082106101095760049190911c9060021b5b600882106101155760011b5b600181858161012657610126610202565b048201901c9050600181858161013e5761013e610202565b048201901c9050600181858161015657610156610202565b048201901c9050600181858161016e5761016e610202565b048201901c9050600181858161018657610186610202565b048201901c9050600181858161019e5761019e610202565b048201901c905060018185816101b6576101b6610202565b048201901c905060008185816101ce576101ce610202565b0490508082106101de57806101e0565b815b95945050505050565b6000602082840312156101fb57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea264697066735822122063ee37a0f52f6d341e85c76d19d7d25b91a60229a09c36de367131a15790ac8864736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x267 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x677342CE EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x1E9 JUMP JUMPDEST PUSH2 0x55 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x60 DUP3 PUSH2 0x66 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x75 JUMPI POP PUSH1 0x0 SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x9B JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0xB6 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0xCD JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0xE2 JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0xF6 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x109 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0x115 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x126 JUMPI PUSH2 0x126 PUSH2 0x202 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x13E JUMPI PUSH2 0x13E PUSH2 0x202 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x156 JUMPI PUSH2 0x156 PUSH2 0x202 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x16E JUMPI PUSH2 0x16E PUSH2 0x202 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x186 JUMPI PUSH2 0x186 PUSH2 0x202 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x19E JUMPI PUSH2 0x19E PUSH2 0x202 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1B6 JUMPI PUSH2 0x1B6 PUSH2 0x202 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x1CE JUMPI PUSH2 0x1CE PUSH2 0x202 JUMP JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x1DE JUMPI DUP1 PUSH2 0x1E0 JUMP JUMPDEST DUP2 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0xEE37A0F5 0x2F PUSH14 0x341E85C76D19D7D25B91A60229A0 SWAP13 CALLDATASIZE 0xDE CALLDATASIZE PUSH18 0x31A15790AC8864736F6C6343000807003300 ",
              "sourceMap": "111:139:36:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@sqrt_3138": {
                  "entryPoint": 102,
                  "id": 3138,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@sqrt_5870": {
                  "entryPoint": 85,
                  "id": 5870,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 489,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x12": {
                  "entryPoint": 514,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:567:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:110:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "130:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "139:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "142:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "132:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "132:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "132:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "105:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "114:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "101:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "101:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "126:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "94:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "155:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "178:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "165:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "165:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "155:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "61:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "73:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:180:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "300:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "310:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "322:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "333:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "318:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "318:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "310:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "352:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "363:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "345:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "345:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "345:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "269:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "280:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "291:4:64",
                            "type": ""
                          }
                        ],
                        "src": "199:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "413:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "430:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "433:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "423:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "423:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "423:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "527:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "530:4:64",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "520:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "520:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "520:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "551:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "554:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "544:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "544:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "544:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "381:184:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c8063677342ce14610030575b600080fd5b61004361003e3660046101e9565b610055565b60405190815260200160405180910390f35b600061006082610066565b92915050565b60008161007557506000919050565b816001700100000000000000000000000000000000821061009b5760809190911c9060401b5b6801000000000000000082106100b65760409190911c9060201b5b64010000000082106100cd5760209190911c9060101b5b6201000082106100e25760109190911c9060081b5b61010082106100f65760089190911c9060041b5b601082106101095760049190911c9060021b5b600882106101155760011b5b600181858161012657610126610202565b048201901c9050600181858161013e5761013e610202565b048201901c9050600181858161015657610156610202565b048201901c9050600181858161016e5761016e610202565b048201901c9050600181858161018657610186610202565b048201901c9050600181858161019e5761019e610202565b048201901c905060018185816101b6576101b6610202565b048201901c905060008185816101ce576101ce610202565b0490508082106101de57806101e0565b815b95945050505050565b6000602082840312156101fb57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea264697066735822122063ee37a0f52f6d341e85c76d19d7d25b91a60229a09c36de367131a15790ac8864736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x677342CE EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x1E9 JUMP JUMPDEST PUSH2 0x55 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0x60 DUP3 PUSH2 0x66 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x75 JUMPI POP PUSH1 0x0 SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x9B JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0xB6 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0xCD JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0xE2 JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0xF6 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x109 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0x115 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x126 JUMPI PUSH2 0x126 PUSH2 0x202 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x13E JUMPI PUSH2 0x13E PUSH2 0x202 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x156 JUMPI PUSH2 0x156 PUSH2 0x202 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x16E JUMPI PUSH2 0x16E PUSH2 0x202 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x186 JUMPI PUSH2 0x186 PUSH2 0x202 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x19E JUMPI PUSH2 0x19E PUSH2 0x202 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x1B6 JUMPI PUSH2 0x1B6 PUSH2 0x202 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x1CE JUMPI PUSH2 0x1CE PUSH2 0x202 JUMP JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x1DE JUMPI DUP1 PUSH2 0x1E0 JUMP JUMPDEST DUP2 JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0xEE37A0F5 0x2F PUSH14 0x341E85C76D19D7D25B91A60229A0 SWAP13 CALLDATASIZE 0xDE CALLDATASIZE PUSH18 0x31A15790AC8864736F6C6343000807003300 ",
              "sourceMap": "111:139:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;150:98;;;;;;:::i;:::-;;:::i;:::-;;;345:25:64;;;333:2;318:18;150:98:36;;;;;;;;196:7;222:19;239:1;222:16;:19::i;:::-;215:26;150:98;-1:-1:-1;;150:98:36:o;505:1431:24:-;553:14;607:6;603:1317;;-1:-1:-1;624:1:24;505:1431;;;:::o;603:1317::-;675:1;706;735:35;729:41;;725:128;;801:3;794:10;;;;;832:2;826:8;725:128;880:19;874:2;:25;870:111;;930:2;923:9;;;;;960:2;954:8;870:111;1008:11;1002:2;:17;998:103;;1050:2;1043:9;;;;;1080:2;1074:8;998:103;1128:7;1122:2;:13;1118:98;;1166:2;1159:9;;;;;1196:1;1190:7;1118:98;1243:5;1237:2;:11;1233:95;;1279:1;1272:8;;;;;1308:1;1302:7;1233:95;1355:4;1349:2;:10;1345:94;;1390:1;1383:8;;;;;1419:1;1413:7;1345:94;1466:3;1460:2;:9;1456:63;;1499:1;1493:7;1456:63;1555:1;1549;1545;:5;;;;;:::i;:::-;;1541:1;:9;1540:16;;1536:20;;1593:1;1587;1583;:5;;;;;:::i;:::-;;1579:1;:9;1578:16;;1574:20;;1631:1;1625;1621;:5;;;;;:::i;:::-;;1617:1;:9;1616:16;;1612:20;;1669:1;1663;1659;:5;;;;;:::i;:::-;;1655:1;:9;1654:16;;1650:20;;1707:1;1701;1697;:5;;;;;:::i;:::-;;1693:1;:9;1692:16;;1688:20;;1745:1;1739;1735;:5;;;;;:::i;:::-;;1731:1;:9;1730:16;;1726:20;;1783:1;1777;1773;:5;;;;;:::i;:::-;;1769:1;:9;1768:16;;1764:20;;1845:10;1862:1;1858;:5;;;;;:::i;:::-;;1845:18;;1894:2;1890:1;:6;:15;;1903:2;1890:15;;;1899:1;1890:15;1881:24;505:1431;-1:-1:-1;;;;;505:1431:24:o;14:180:64:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:64;;14:180;-1:-1:-1;14:180:64:o;381:184::-;433:77;430:1;423:88;530:4;527:1;520:15;554:4;551:1;544:15"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "123000",
                "executionCost": "171",
                "totalCost": "123171"
              },
              "external": {
                "sqrt(uint256)": "1046"
              }
            },
            "methodIdentifiers": {
              "sqrt(uint256)": "677342ce"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"}],\"name\":\"sqrt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/TridentMathConsumerMock.sol\":\"TridentMathConsumerMock\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/libraries/TridentMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident sqrt helper library.\\nlibrary TridentMath {\\n    /// @notice Calculate sqrt (x) rounding down, where `x` is unsigned 256-bit integer number.\\n    /// @dev Adapted from https://github.com/abdk-consulting/abdk-libraries-solidity/blob/master/ABDKMath64x64.sol, \\n    /// \\u00a9 2019 ABDK Consulting, License-Identifier: BSD-4-Clause.\\n    /// @param x Unsigned 256-bit integer number.\\n    /// @return result Sqrt result.\\n    function sqrt(uint256 x) internal pure returns (uint256 result) {\\n        unchecked {\\n            if (x == 0) result = 0;\\n            else {\\n                uint256 xx = x;\\n                uint256 r = 1;\\n                if (xx >= 0x100000000000000000000000000000000) {\\n                    xx >>= 128;\\n                    r <<= 64;\\n                }\\n                if (xx >= 0x10000000000000000) {\\n                    xx >>= 64;\\n                    r <<= 32;\\n                }\\n                if (xx >= 0x100000000) {\\n                    xx >>= 32;\\n                    r <<= 16;\\n                }\\n                if (xx >= 0x10000) {\\n                    xx >>= 16;\\n                    r <<= 8;\\n                }\\n                if (xx >= 0x100) {\\n                    xx >>= 8;\\n                    r <<= 4;\\n                }\\n                if (xx >= 0x10) {\\n                    xx >>= 4;\\n                    r <<= 2;\\n                }\\n                if (xx >= 0x8) {\\n                    r <<= 1;\\n                }\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1; // @dev Seven iterations should be enough.\\n                uint256 r1 = x / r;\\n                result = r < r1 ? r : r1;\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xccbada517ace78149a4602ce782e6faf408404ee300569b8adf76e0eb7f0dd3b\",\"license\":\"GPL-3.0-or-later\"},\"contracts/mocks/TridentMathConsumerMock.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"../libraries/TridentMath.sol\\\";\\n\\ncontract TridentMathConsumerMock {\\n    function sqrt(uint256 x) public pure returns (uint256) {\\n        return TridentMath.sqrt(x);\\n    }\\n}\\n\",\"keccak256\":\"0x08df190d47e6b791003f349cf0415b40e5c20e31ec9d2637720e3592e0432942\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/mocks/WETH9.sol": {
        "WETH9": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "dst",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "wad",
                  "type": "uint256"
                }
              ],
              "name": "Deposit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "src",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "wad",
                  "type": "uint256"
                }
              ],
              "name": "Withdrawal",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "wad",
                  "type": "uint256"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "allowance(address,address)": {
                "details": "See {IERC20-allowance}."
              },
              "approve(address,uint256)": {
                "details": "See {IERC20-approve}. Requirements: - `spender` cannot be the zero address."
              },
              "balanceOf(address)": {
                "details": "See {IERC20-balanceOf}."
              },
              "decimals()": {
                "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}."
              },
              "decreaseAllowance(address,uint256)": {
                "details": "Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`."
              },
              "increaseAllowance(address,uint256)": {
                "details": "Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address."
              },
              "name()": {
                "details": "Returns the name of the token."
              },
              "symbol()": {
                "details": "Returns the symbol of the token, usually a shorter version of the name."
              },
              "totalSupply()": {
                "details": "See {IERC20-totalSupply}."
              },
              "transfer(address,uint256)": {
                "details": "See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`."
              },
              "transferFrom(address,address,uint256)": {
                "details": "See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_44": {
                  "entryPoint": null,
                  "id": 44,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_5801": {
                  "entryPoint": null,
                  "id": 5801,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_5885": {
                  "entryPoint": null,
                  "id": 5885,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_afterTokenTransfer_544": {
                  "entryPoint": null,
                  "id": 544,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_beforeTokenTransfer_533": {
                  "entryPoint": null,
                  "id": 533,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_mint_405": {
                  "entryPoint": 158,
                  "id": 405,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 556,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 595,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1168:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "188:181:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "205:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "216:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "198:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "198:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "198:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "239:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "250:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "235:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "235:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "255:2:64",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "228:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "228:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "228:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "278:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "289:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "274:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "274:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "294:33:64",
                                    "type": "",
                                    "value": "ERC20: mint to the zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "267:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "267:61:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "267:61:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "337:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "349:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "360:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "345:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "345:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "337:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "165:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "179:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14:355:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "475:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "485:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "497:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "508:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "493:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "493:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "485:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "527:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "538:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "520:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "520:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "520:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "444:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "455:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "466:4:64",
                            "type": ""
                          }
                        ],
                        "src": "374:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "604:177:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "639:111:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "660:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "667:3:64",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "672:10:64",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "663:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "663:20:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "653:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "653:31:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "653:31:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "704:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "707:4:64",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "697:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "697:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "697:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "732:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "735:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "725:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "725:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "725:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "620:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "627:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "623:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "623:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "617:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "617:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "614:136:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "759:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "770:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "773:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "766:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "766:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "759:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "587:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "590:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "596:3:64",
                            "type": ""
                          }
                        ],
                        "src": "556:225:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "841:325:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "851:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "865:1:64",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "868:4:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "861:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "861:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "851:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "882:38:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "912:4:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "918:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "908:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "908:12:64"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "886:18:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "959:31:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "961:27:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "975:6:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "983:4:64",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "971:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "971:17:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "961:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "939:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "932:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "932:26:64"
                              },
                              "nodeType": "YulIf",
                              "src": "929:61:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1049:111:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1070:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1077:3:64",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "1082:10:64",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "1073:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1073:20:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1063:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1063:31:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1063:31:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1114:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1117:4:64",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1107:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1107:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1107:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1142:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1145:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1135:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1135:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1135:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "1005:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "1028:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1036:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1025:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1025:14:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "1002:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1002:38:64"
                              },
                              "nodeType": "YulIf",
                              "src": "999:161:64"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "821:4:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "830:6:64",
                            "type": ""
                          }
                        ],
                        "src": "786:380:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ERC20: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        sum := add(x, y)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b5060405180604001604052806005815260200164574554483960d81b81525060405180604001604052806005815260200164574554483960d81b8152506000828281600390805190602001906200006a92919062000186565b5080516200008090600490602084019062000186565b5050506200009533826200009e60201b60201c565b50505062000290565b6001600160a01b038216620000f95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200010d91906200022c565b90915550506001600160a01b038216600090815260208190526040812080548392906200013c9084906200022c565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001949062000253565b90600052602060002090601f016020900481019282620001b8576000855562000203565b82601f10620001d357805160ff191683800117855562000203565b8280016001018555821562000203579182015b8281111562000203578251825591602001919060010190620001e6565b506200021192915062000215565b5090565b5b8082111562000211576000815560010162000216565b600082198211156200024e57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200026857607f821691505b602082108114156200028a57634e487b7160e01b600052602260045260246000fd5b50919050565b61101980620002a06000396000f3fe6080604052600436106100d65760003560e01c8063395093511161007f578063a457c2d711610059578063a457c2d714610238578063a9059cbb14610258578063d0e30db014610278578063dd62ed3e1461028057600080fd5b806339509351146101c057806370a08231146101e057806395d89b411461022357600080fd5b806323b872dd116100b057806323b872dd146101645780632e1a7d4d14610184578063313ce567146101a457600080fd5b806306fdde03146100ea578063095ea7b31461011557806318160ddd1461014557600080fd5b366100e5576100e36102d3565b005b600080fd5b3480156100f657600080fd5b506100ff610314565b60405161010c9190610ebe565b60405180910390f35b34801561012157600080fd5b50610135610130366004610e7b565b6103a6565b604051901515815260200161010c565b34801561015157600080fd5b506002545b60405190815260200161010c565b34801561017057600080fd5b5061013561017f366004610e3f565b6103bc565b34801561019057600080fd5b506100e361019f366004610ea5565b6104a7565b3480156101b057600080fd5b506040516012815260200161010c565b3480156101cc57600080fd5b506101356101db366004610e7b565b610517565b3480156101ec57600080fd5b506101566101fb366004610dea565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b34801561022f57600080fd5b506100ff610560565b34801561024457600080fd5b50610135610253366004610e7b565b61056f565b34801561026457600080fd5b50610135610273366004610e7b565b610647565b6100e36102d3565b34801561028c57600080fd5b5061015661029b366004610e0c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6102dd3334610654565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b60606003805461032390610f60565b80601f016020809104026020016040519081016040528092919081815260200182805461034f90610f60565b801561039c5780601f106103715761010080835404028352916020019161039c565b820191906000526020600020905b81548152906001019060200180831161037f57829003601f168201915b5050505050905090565b60006103b3338484610774565b50600192915050565b60006103c9848484610928565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203384529091529020548281101561048f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61049c8533858403610774565b506001949350505050565b6104b13382610bdc565b604051339082156108fc029083906000818181858888f193505050501580156104de573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103b391859061055b908690610f31565b610774565b60606004805461032390610f60565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015610630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610486565b61063d3385858403610774565b5060019392505050565b60006103b3338484610928565b73ffffffffffffffffffffffffffffffffffffffff82166106d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610486565b80600260008282546106e39190610f31565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260408120805483929061071d908490610f31565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8316610816576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff82166108b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166109cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff8216610a6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610b24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b68908490610f31565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610bce91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610c7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d71908490610f49565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161091b565b803573ffffffffffffffffffffffffffffffffffffffff81168114610de557600080fd5b919050565b600060208284031215610dfc57600080fd5b610e0582610dc1565b9392505050565b60008060408385031215610e1f57600080fd5b610e2883610dc1565b9150610e3660208401610dc1565b90509250929050565b600080600060608486031215610e5457600080fd5b610e5d84610dc1565b9250610e6b60208501610dc1565b9150604084013590509250925092565b60008060408385031215610e8e57600080fd5b610e9783610dc1565b946020939093013593505050565b600060208284031215610eb757600080fd5b5035919050565b600060208083528351808285015260005b81811015610eeb57858101830151858201604001528201610ecf565b81811115610efd576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008219821115610f4457610f44610fb4565b500190565b600082821015610f5b57610f5b610fb4565b500390565b600181811c90821680610f7457607f821691505b60208210811415610fae577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122084d4ac902191147a49f917aa81a72fe8b5962f80431bb7e21b7951b8e032ed6164736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x5745544839 PUSH1 0xD8 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x5745544839 PUSH1 0xD8 SHL DUP2 MSTORE POP PUSH1 0x0 DUP3 DUP3 DUP2 PUSH1 0x3 SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH3 0x6A SWAP3 SWAP2 SWAP1 PUSH3 0x186 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x80 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x186 JUMP JUMPDEST POP POP POP PUSH3 0x95 CALLER DUP3 PUSH3 0x9E PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP PUSH3 0x290 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0xF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH3 0x10D SWAP2 SWAP1 PUSH3 0x22C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH3 0x13C SWAP1 DUP5 SWAP1 PUSH3 0x22C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x194 SWAP1 PUSH3 0x253 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x1B8 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x203 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x1D3 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x203 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x203 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x203 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x1E6 JUMP JUMPDEST POP PUSH3 0x211 SWAP3 SWAP2 POP PUSH3 0x215 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x211 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x216 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0x24E JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x268 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x28A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1019 DUP1 PUSH3 0x2A0 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD6 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x223 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0xE5 JUMPI PUSH2 0xE3 PUSH2 0x2D3 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFF PUSH2 0x314 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10C SWAP2 SWAP1 PUSH2 0xEBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x121 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x130 CALLDATASIZE PUSH1 0x4 PUSH2 0xE7B JUMP JUMPDEST PUSH2 0x3A6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x17F CALLDATASIZE PUSH1 0x4 PUSH2 0xE3F JUMP JUMPDEST PUSH2 0x3BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE3 PUSH2 0x19F CALLDATASIZE PUSH1 0x4 PUSH2 0xEA5 JUMP JUMPDEST PUSH2 0x4A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x1DB CALLDATASIZE PUSH1 0x4 PUSH2 0xE7B JUMP JUMPDEST PUSH2 0x517 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x156 PUSH2 0x1FB CALLDATASIZE PUSH1 0x4 PUSH2 0xDEA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFF PUSH2 0x560 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x253 CALLDATASIZE PUSH1 0x4 PUSH2 0xE7B JUMP JUMPDEST PUSH2 0x56F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0xE7B JUMP JUMPDEST PUSH2 0x647 JUMP JUMPDEST PUSH2 0xE3 PUSH2 0x2D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x156 PUSH2 0x29B CALLDATASIZE PUSH1 0x4 PUSH2 0xE0C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2DD CALLER CALLVALUE PUSH2 0x654 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLVALUE DUP2 MSTORE CALLER SWAP1 PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x323 SWAP1 PUSH2 0xF60 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x34F SWAP1 PUSH2 0xF60 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x39C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x371 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x39C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x37F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B3 CALLER DUP5 DUP5 PUSH2 0x774 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C9 DUP5 DUP5 DUP5 PUSH2 0x928 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x48F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6C6F77616E6365000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x49C DUP6 CALLER DUP6 DUP5 SUB PUSH2 0x774 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x4B1 CALLER DUP3 PUSH2 0xBDC JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 DUP3 ISZERO PUSH2 0x8FC MUL SWAP1 DUP4 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x4DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE CALLER SWAP1 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3B3 SWAP2 DUP6 SWAP1 PUSH2 0x55B SWAP1 DUP7 SWAP1 PUSH2 0xF31 JUMP JUMPDEST PUSH2 0x774 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x323 SWAP1 PUSH2 0xF60 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x630 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH2 0x63D CALLER DUP6 DUP6 DUP5 SUB PUSH2 0x774 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B3 CALLER DUP5 DUP5 PUSH2 0x928 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x6D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x486 JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x6E3 SWAP2 SWAP1 PUSH2 0xF31 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x71D SWAP1 DUP5 SWAP1 PUSH2 0xF31 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x816 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x8B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x9CB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xA6E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0xB24 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP2 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xB68 SWAP1 DUP5 SWAP1 PUSH2 0xF31 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0xBCE SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xC7F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0xD35 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6365000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP4 DUP4 SUB SWAP1 SSTORE PUSH1 0x2 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xD71 SWAP1 DUP5 SWAP1 PUSH2 0xF49 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x91B JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xDE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE05 DUP3 PUSH2 0xDC1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE28 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH2 0xE36 PUSH1 0x20 DUP5 ADD PUSH2 0xDC1 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE5D DUP5 PUSH2 0xDC1 JUMP JUMPDEST SWAP3 POP PUSH2 0xE6B PUSH1 0x20 DUP6 ADD PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE97 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xEEB JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xECF JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xEFD JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xF44 JUMPI PUSH2 0xF44 PUSH2 0xFB4 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xF5B JUMPI PUSH2 0xF5B PUSH2 0xFB4 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xF74 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xFAE JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 0xD4 0xAC SWAP1 0x21 SWAP2 EQ PUSH27 0x49F917AA81A72FE8B5962F80431BB7E21B7951B8E032ED6164736F PUSH13 0x63430008070033000000000000 ",
              "sourceMap": "98:83:37:-:0;;;132:47;;;;;;;;;;272:162:35;;;;;;;;;;;;;-1:-1:-1;;;272:162:35;;;;;;;;;;;;;;;;-1:-1:-1;;;272:162:35;;;174:1:37;378:4:35;384:6;1980:5:0;1972;:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1995:17:0;;;;:7;;:17;;;;;:::i;:::-;;1906:113;;402:25:35::1;408:10;420:6;402:5;;;:25;;:::i;:::-;272:162:::0;;;98:83:37;;8254:389:0;-1:-1:-1;;;;;8337:21:0;;8329:65;;;;-1:-1:-1;;;8329:65:0;;216:2:64;8329:65:0;;;198:21:64;255:2;235:18;;;228:30;294:33;274:18;;;267:61;345:18;;8329:65:0;;;;;;;;8481:6;8465:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8497:18:0;;:9;:18;;;;;;;;;;:28;;8519:6;;8497:9;:28;;8519:6;;8497:28;:::i;:::-;;;;-1:-1:-1;;8540:37:0;;520:25:64;;;-1:-1:-1;;;;;8540:37:0;;;8557:1;;8540:37;;508:2:64;493:18;8540:37:0;;;;;;;8254:389;;:::o;98:83:37:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;98:83:37;;;-1:-1:-1;98:83:37;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;556:225:64;596:3;627:1;623:6;620:1;617:13;614:136;;;672:10;667:3;663:20;660:1;653:31;707:4;704:1;697:15;735:4;732:1;725:15;614:136;-1:-1:-1;766:9:64;;556:225::o;786:380::-;865:1;861:12;;;;908;;;929:61;;983:4;975:6;971:17;961:27;;929:61;1036:2;1028:6;1025:14;1005:18;1002:38;999:161;;;1082:10;1077:3;1073:20;1070:1;1063:31;1117:4;1114:1;1107:15;1145:4;1142:1;1135:15;999:161;;786:380;;;:::o;:::-;98:83:37;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_5808": {
                  "entryPoint": null,
                  "id": 5808,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_afterTokenTransfer_544": {
                  "entryPoint": null,
                  "id": 544,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_approve_522": {
                  "entryPoint": 1908,
                  "id": 522,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_beforeTokenTransfer_533": {
                  "entryPoint": null,
                  "id": 533,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_burn_477": {
                  "entryPoint": 3036,
                  "id": 477,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_mint_405": {
                  "entryPoint": 1620,
                  "id": 405,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_msgSender_660": {
                  "entryPoint": null,
                  "id": 660,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_transfer_349": {
                  "entryPoint": 2344,
                  "id": 349,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@allowance_137": {
                  "entryPoint": null,
                  "id": 137,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@approve_158": {
                  "entryPoint": 934,
                  "id": 158,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@balanceOf_98": {
                  "entryPoint": null,
                  "id": 98,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@decimals_74": {
                  "entryPoint": null,
                  "id": 74,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@decreaseAllowance_272": {
                  "entryPoint": 1391,
                  "id": 272,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@deposit_5826": {
                  "entryPoint": 723,
                  "id": 5826,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@increaseAllowance_233": {
                  "entryPoint": 1303,
                  "id": 233,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@name_54": {
                  "entryPoint": 788,
                  "id": 54,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@symbol_64": {
                  "entryPoint": 1376,
                  "id": 64,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@totalSupply_84": {
                  "entryPoint": null,
                  "id": 84,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@transferFrom_206": {
                  "entryPoint": 956,
                  "id": 206,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@transfer_119": {
                  "entryPoint": 1607,
                  "id": 119,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@withdraw_5853": {
                  "entryPoint": 1191,
                  "id": 5853,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_address": {
                  "entryPoint": 3521,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 3562,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 3596,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 3647,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 3707,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 3749,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 3774,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 3889,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 3913,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "extract_byte_array_length": {
                  "entryPoint": 3936,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 4020,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:7568:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "63:147:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "73:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "95:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "82:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "82:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "73:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "188:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "197:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "200:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "190:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "190:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "190:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "124:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "135:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "142:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "131:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "131:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "121:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "121:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "114:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "114:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "111:93:64"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "42:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "53:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:196:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "285:116:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "331:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "340:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "343:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "333:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "333:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "333:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "306:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "315:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "302:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "302:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "327:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "298:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "298:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "295:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "356:39:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "385:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "366:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "366:29:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "356:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "251:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "262:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "274:6:64",
                            "type": ""
                          }
                        ],
                        "src": "215:186:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "493:173:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "539:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "548:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "551:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "541:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "541:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "541:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "514:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "523:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "510:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "510:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "535:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "506:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "506:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "503:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "564:39:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "593:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "574:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "574:29:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "564:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "612:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "645:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "656:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "641:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "641:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "622:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "622:38:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "612:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "451:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "462:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "474:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "482:6:64",
                            "type": ""
                          }
                        ],
                        "src": "406:260:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "775:224:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "821:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "830:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "833:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "823:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "823:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "823:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "796:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "805:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "792:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "792:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "817:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "788:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "788:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "785:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "846:39:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "875:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "856:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "856:29:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "846:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "894:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "927:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "938:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "923:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "923:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "904:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "904:38:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "894:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "951:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "978:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "989:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "974:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "974:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "961:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "961:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "951:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "725:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "736:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "748:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "756:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "764:6:64",
                            "type": ""
                          }
                        ],
                        "src": "671:328:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1091:167:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1137:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1146:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1149:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1139:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1139:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1139:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1112:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1121:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1108:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1108:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1133:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1104:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1104:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1101:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1162:39:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1191:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1172:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1172:29:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1162:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1210:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1237:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1248:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1233:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1233:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1220:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1220:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1210:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1049:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1060:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1072:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1080:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1004:254:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1333:110:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1379:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1388:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1391:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1381:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1381:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1381:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1354:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1363:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1350:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1350:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1375:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1346:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1346:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1343:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1404:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1427:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1414:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1414:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1404:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1299:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1310:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1322:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1263:180:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1543:92:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1553:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1565:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1576:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1561:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1561:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1553:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1595:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1620:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1613:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1613:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "1606:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1606:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1588:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1588:41:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1588:41:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1512:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1523:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1534:4:64",
                            "type": ""
                          }
                        ],
                        "src": "1448:187:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1761:535:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1771:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1781:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1775:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1799:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1810:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1792:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1792:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1792:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1822:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1842:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1836:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1836:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1826:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1869:9:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1880:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1865:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1865:18:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1885:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1858:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1858:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1858:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1901:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1910:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1905:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1970:90:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1999:9:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2010:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1995:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1995:17:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2014:2:64",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1991:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1991:26:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2033:6:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2041:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2029:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2029:14:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2045:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2025:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2025:23:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2019:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2019:30:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1984:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1984:66:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1984:66:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1931:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1934:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1928:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1928:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1942:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1944:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1953:1:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1956:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1949:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1949:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1944:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1924:3:64",
                                "statements": []
                              },
                              "src": "1920:140:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2094:66:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2123:9:64"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2134:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2119:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2119:22:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2143:2:64",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2115:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2115:31:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2148:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2108:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2108:42:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2108:42:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2075:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2078:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2072:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2072:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2069:91:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2169:121:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2185:9:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2204:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2212:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2200:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2200:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2217:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2196:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2196:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2181:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2181:104:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2287:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2177:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2177:113:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2169:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1730:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1741:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1752:4:64",
                            "type": ""
                          }
                        ],
                        "src": "1640:656:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2475:225:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2492:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2503:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2485:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2485:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2485:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2526:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2537:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2522:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2522:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2542:2:64",
                                    "type": "",
                                    "value": "35"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2515:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2515:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2515:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2565:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2576:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2561:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2561:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2581:34:64",
                                    "type": "",
                                    "value": "ERC20: transfer to the zero addr"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2554:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2554:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2554:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2636:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2647:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2632:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2632:18:64"
                                  },
                                  {
                                    "hexValue": "657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2652:5:64",
                                    "type": "",
                                    "value": "ess"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2625:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2625:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2625:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2667:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2679:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2690:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2675:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2675:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2667:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2452:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2466:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2301:399:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2879:224:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2896:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2907:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2889:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2889:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2889:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2930:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2941:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2926:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2926:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2946:2:64",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2919:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2919:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2919:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2969:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2980:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2965:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2965:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2985:34:64",
                                    "type": "",
                                    "value": "ERC20: burn amount exceeds balan"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2958:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2958:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2958:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3040:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3051:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3036:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3036:18:64"
                                  },
                                  {
                                    "hexValue": "6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3056:4:64",
                                    "type": "",
                                    "value": "ce"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3029:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3029:32:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3029:32:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3070:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3082:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3093:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3078:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3078:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3070:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2856:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2870:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2705:398:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3282:224:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3299:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3310:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3292:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3292:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3292:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3333:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3344:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3329:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3329:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3349:2:64",
                                    "type": "",
                                    "value": "34"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3322:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3322:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3322:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3372:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3383:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3368:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3368:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a20617070726f766520746f20746865207a65726f206164647265",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3388:34:64",
                                    "type": "",
                                    "value": "ERC20: approve to the zero addre"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3361:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3361:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3361:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3443:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3454:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3439:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3439:18:64"
                                  },
                                  {
                                    "hexValue": "7373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3459:4:64",
                                    "type": "",
                                    "value": "ss"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3432:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3432:32:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3432:32:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3473:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3485:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3496:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3481:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3481:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3473:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3259:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3273:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3108:398:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3685:228:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3702:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3713:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3695:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3695:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3695:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3736:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3747:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3732:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3732:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3752:2:64",
                                    "type": "",
                                    "value": "38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3725:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3725:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3725:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3775:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3786:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3771:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3771:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3791:34:64",
                                    "type": "",
                                    "value": "ERC20: transfer amount exceeds b"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3764:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3764:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3764:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3846:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3857:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3842:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3842:18:64"
                                  },
                                  {
                                    "hexValue": "616c616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3862:8:64",
                                    "type": "",
                                    "value": "alance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3835:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3835:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3835:36:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3880:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3892:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3903:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3888:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3888:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3880:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3662:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3676:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3511:402:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4092:230:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4109:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4120:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4102:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4102:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4102:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4143:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4154:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4139:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4139:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4159:2:64",
                                    "type": "",
                                    "value": "40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4132:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4132:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4132:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4182:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4193:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4178:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4178:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732061",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4198:34:64",
                                    "type": "",
                                    "value": "ERC20: transfer amount exceeds a"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4171:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4171:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4171:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4253:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4264:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4249:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4249:18:64"
                                  },
                                  {
                                    "hexValue": "6c6c6f77616e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4269:10:64",
                                    "type": "",
                                    "value": "llowance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4242:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4242:38:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4242:38:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4289:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4301:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4312:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4297:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4297:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4289:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4069:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4083:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3918:404:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4501:223:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4518:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4529:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4511:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4511:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4511:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4552:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4563:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4548:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4548:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4568:2:64",
                                    "type": "",
                                    "value": "33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4541:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4541:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4541:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4591:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4602:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4587:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4587:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f20616464726573",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4607:34:64",
                                    "type": "",
                                    "value": "ERC20: burn from the zero addres"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4580:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4580:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4580:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4662:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4673:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4658:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4658:18:64"
                                  },
                                  {
                                    "hexValue": "73",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4678:3:64",
                                    "type": "",
                                    "value": "s"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4651:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4651:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4651:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4691:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4703:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4714:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4699:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4699:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4691:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4478:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4492:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4327:397:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4903:227:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4920:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4931:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4913:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4913:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4913:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4954:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4965:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4950:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4950:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4970:2:64",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4943:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4943:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4943:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4993:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5004:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4989:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4989:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f206164",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5009:34:64",
                                    "type": "",
                                    "value": "ERC20: transfer from the zero ad"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4982:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4982:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4982:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5064:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5075:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5060:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5060:18:64"
                                  },
                                  {
                                    "hexValue": "6472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5080:7:64",
                                    "type": "",
                                    "value": "dress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5053:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5053:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5053:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5097:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5109:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5120:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5105:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5105:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5097:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4880:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4894:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4729:401:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5309:226:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5326:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5337:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5319:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5319:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5319:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5360:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5371:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5356:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5356:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5376:2:64",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5349:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5349:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5349:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5399:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5410:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5395:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5395:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f20616464",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5415:34:64",
                                    "type": "",
                                    "value": "ERC20: approve from the zero add"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5388:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5388:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5388:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5470:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5481:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5466:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5466:18:64"
                                  },
                                  {
                                    "hexValue": "72657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5486:6:64",
                                    "type": "",
                                    "value": "ress"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5459:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5459:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5459:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5502:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5514:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5525:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5510:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5510:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5502:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5286:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5300:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5135:400:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5714:227:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5731:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5742:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5724:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5724:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5724:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5765:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5776:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5761:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5761:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5781:2:64",
                                    "type": "",
                                    "value": "37"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5754:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5754:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5754:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5804:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5815:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5800:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5800:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5820:34:64",
                                    "type": "",
                                    "value": "ERC20: decreased allowance below"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5793:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5793:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5793:62:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5875:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5886:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5871:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5871:18:64"
                                  },
                                  {
                                    "hexValue": "207a65726f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5891:7:64",
                                    "type": "",
                                    "value": " zero"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5864:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5864:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5864:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5908:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5920:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5931:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5916:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5916:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5908:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5691:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5705:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5540:401:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6120:181:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6137:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6148:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6130:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6130:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6130:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6171:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6182:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6167:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6167:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6187:2:64",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6160:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6160:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6160:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6210:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6221:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6206:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6206:18:64"
                                  },
                                  {
                                    "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6226:33:64",
                                    "type": "",
                                    "value": "ERC20: mint to the zero address"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6199:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6199:61:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6199:61:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6269:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6281:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6292:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6277:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6277:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6269:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6097:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6111:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5946:355:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6407:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6417:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6429:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6440:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6425:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6425:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6417:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6459:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6470:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6452:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6452:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6452:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6376:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6387:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6398:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6306:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6585:87:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6595:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6607:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6618:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6603:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6603:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6595:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6637:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6652:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6660:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6648:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6648:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6630:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6630:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6630:36:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6554:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6565:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6576:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6488:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6725:80:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6752:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "6754:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6754:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6754:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "6741:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "6748:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "6744:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6744:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6738:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6738:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6735:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6783:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "6794:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "6797:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6790:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6790:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "6783:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "6708:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "6711:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "6717:3:64",
                            "type": ""
                          }
                        ],
                        "src": "6677:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6859:76:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6881:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "6883:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6883:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6883:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "6875:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "6878:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6872:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6872:8:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6869:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6912:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "6924:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "6927:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "6920:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6920:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "6912:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "6841:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "6844:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "6850:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6810:125:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6995:382:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7005:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7019:1:64",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "7022:4:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "7015:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7015:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "7005:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7036:38:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "7066:4:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7072:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "7062:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7062:12:64"
                              },
                              "variables": [
                                {
                                  "name": "outOfPlaceEncoding",
                                  "nodeType": "YulTypedName",
                                  "src": "7040:18:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7113:31:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7115:27:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "7129:6:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7137:4:64",
                                          "type": "",
                                          "value": "0x7f"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "7125:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7125:17:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "7115:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "7093:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7086:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7086:26:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7083:61:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7203:168:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7224:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7227:77:64",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7217:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7217:88:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7217:88:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7325:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7328:4:64",
                                          "type": "",
                                          "value": "0x22"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7318:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7318:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7318:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7353:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7356:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7346:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7346:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7346:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "outOfPlaceEncoding",
                                    "nodeType": "YulIdentifier",
                                    "src": "7159:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "7182:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7190:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7179:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7179:14:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "7156:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7156:38:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7153:218:64"
                            }
                          ]
                        },
                        "name": "extract_byte_array_length",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "data",
                            "nodeType": "YulTypedName",
                            "src": "6975:4:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "6984:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6940:437:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7414:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7431:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7434:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7424:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7424:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7424:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7528:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7531:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7521:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7521:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7521:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7552:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7555:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "7545:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7545:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7545:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "7382:184:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n    function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n        mstore(add(headStart, 96), \"ess\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC20: burn amount exceeds balan\")\n        mstore(add(headStart, 96), \"ce\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"ERC20: transfer amount exceeds b\")\n        mstore(add(headStart, 96), \"alance\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"ERC20: transfer amount exceeds a\")\n        mstore(add(headStart, 96), \"llowance\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC20: burn from the zero addres\")\n        mstore(add(headStart, 96), \"s\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: decreased allowance below\")\n        mstore(add(headStart, 96), \" zero\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ERC20: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600436106100d65760003560e01c8063395093511161007f578063a457c2d711610059578063a457c2d714610238578063a9059cbb14610258578063d0e30db014610278578063dd62ed3e1461028057600080fd5b806339509351146101c057806370a08231146101e057806395d89b411461022357600080fd5b806323b872dd116100b057806323b872dd146101645780632e1a7d4d14610184578063313ce567146101a457600080fd5b806306fdde03146100ea578063095ea7b31461011557806318160ddd1461014557600080fd5b366100e5576100e36102d3565b005b600080fd5b3480156100f657600080fd5b506100ff610314565b60405161010c9190610ebe565b60405180910390f35b34801561012157600080fd5b50610135610130366004610e7b565b6103a6565b604051901515815260200161010c565b34801561015157600080fd5b506002545b60405190815260200161010c565b34801561017057600080fd5b5061013561017f366004610e3f565b6103bc565b34801561019057600080fd5b506100e361019f366004610ea5565b6104a7565b3480156101b057600080fd5b506040516012815260200161010c565b3480156101cc57600080fd5b506101356101db366004610e7b565b610517565b3480156101ec57600080fd5b506101566101fb366004610dea565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b34801561022f57600080fd5b506100ff610560565b34801561024457600080fd5b50610135610253366004610e7b565b61056f565b34801561026457600080fd5b50610135610273366004610e7b565b610647565b6100e36102d3565b34801561028c57600080fd5b5061015661029b366004610e0c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6102dd3334610654565b60405134815233907fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9060200160405180910390a2565b60606003805461032390610f60565b80601f016020809104026020016040519081016040528092919081815260200182805461034f90610f60565b801561039c5780601f106103715761010080835404028352916020019161039c565b820191906000526020600020905b81548152906001019060200180831161037f57829003601f168201915b5050505050905090565b60006103b3338484610774565b50600192915050565b60006103c9848484610928565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203384529091529020548281101561048f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61049c8533858403610774565b506001949350505050565b6104b13382610bdc565b604051339082156108fc029083906000818181858888f193505050501580156104de573d6000803e3d6000fd5b5060405181815233907f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b659060200160405180910390a250565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916103b391859061055b908690610f31565b610774565b60606004805461032390610f60565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915281205482811015610630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610486565b61063d3385858403610774565b5060019392505050565b60006103b3338484610928565b73ffffffffffffffffffffffffffffffffffffffff82166106d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610486565b80600260008282546106e39190610f31565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260408120805483929061071d908490610f31565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8316610816576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff82166108b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166109cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff8216610a6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610b24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b68908490610f31565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610bce91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610c7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610486565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d71908490610f49565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161091b565b803573ffffffffffffffffffffffffffffffffffffffff81168114610de557600080fd5b919050565b600060208284031215610dfc57600080fd5b610e0582610dc1565b9392505050565b60008060408385031215610e1f57600080fd5b610e2883610dc1565b9150610e3660208401610dc1565b90509250929050565b600080600060608486031215610e5457600080fd5b610e5d84610dc1565b9250610e6b60208501610dc1565b9150604084013590509250925092565b60008060408385031215610e8e57600080fd5b610e9783610dc1565b946020939093013593505050565b600060208284031215610eb757600080fd5b5035919050565b600060208083528351808285015260005b81811015610eeb57858101830151858201604001528201610ecf565b81811115610efd576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008219821115610f4457610f44610fb4565b500190565b600082821015610f5b57610f5b610fb4565b500390565b600181811c90821680610f7457607f821691505b60208210811415610fae577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea264697066735822122084d4ac902191147a49f917aa81a72fe8b5962f80431bb7e21b7951b8e032ed6164736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD6 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x7F JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x238 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x258 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x1C0 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1E0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x223 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xB0 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x184 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEA JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x115 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0xE5 JUMPI PUSH2 0xE3 PUSH2 0x2D3 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFF PUSH2 0x314 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10C SWAP2 SWAP1 PUSH2 0xEBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x121 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x130 CALLDATASIZE PUSH1 0x4 PUSH2 0xE7B JUMP JUMPDEST PUSH2 0x3A6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x17F CALLDATASIZE PUSH1 0x4 PUSH2 0xE3F JUMP JUMPDEST PUSH2 0x3BC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE3 PUSH2 0x19F CALLDATASIZE PUSH1 0x4 PUSH2 0xEA5 JUMP JUMPDEST PUSH2 0x4A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x1DB CALLDATASIZE PUSH1 0x4 PUSH2 0xE7B JUMP JUMPDEST PUSH2 0x517 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x156 PUSH2 0x1FB CALLDATASIZE PUSH1 0x4 PUSH2 0xDEA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x22F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xFF PUSH2 0x560 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x244 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x253 CALLDATASIZE PUSH1 0x4 PUSH2 0xE7B JUMP JUMPDEST PUSH2 0x56F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x264 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x135 PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0xE7B JUMP JUMPDEST PUSH2 0x647 JUMP JUMPDEST PUSH2 0xE3 PUSH2 0x2D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x156 PUSH2 0x29B CALLDATASIZE PUSH1 0x4 PUSH2 0xE0C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x2DD CALLER CALLVALUE PUSH2 0x654 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLVALUE DUP2 MSTORE CALLER SWAP1 PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x323 SWAP1 PUSH2 0xF60 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x34F SWAP1 PUSH2 0xF60 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x39C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x371 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x39C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x37F JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B3 CALLER DUP5 DUP5 PUSH2 0x774 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C9 DUP5 DUP5 DUP5 PUSH2 0x928 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x48F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6C6F77616E6365000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x49C DUP6 CALLER DUP6 DUP5 SUB PUSH2 0x774 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x4B1 CALLER DUP3 PUSH2 0xBDC JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER SWAP1 DUP3 ISZERO PUSH2 0x8FC MUL SWAP1 DUP4 SWAP1 PUSH1 0x0 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x4DE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE CALLER SWAP1 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x3B3 SWAP2 DUP6 SWAP1 PUSH2 0x55B SWAP1 DUP7 SWAP1 PUSH2 0xF31 JUMP JUMPDEST PUSH2 0x774 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x323 SWAP1 PUSH2 0xF60 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x630 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x207A65726F000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH2 0x63D CALLER DUP6 DUP6 DUP5 SUB PUSH2 0x774 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B3 CALLER DUP5 DUP5 PUSH2 0x928 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x6D1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x486 JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x6E3 SWAP2 SWAP1 PUSH2 0xF31 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x71D SWAP1 DUP5 SWAP1 PUSH2 0xF31 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x816 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x8B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7373000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x9CB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6472657373000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xA6E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6573730000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0xB24 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x616C616E63650000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP6 SUB SWAP1 SSTORE SWAP2 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xB68 SWAP1 DUP5 SWAP1 PUSH2 0xF31 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0xBCE SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0xC7F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7300000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0xD35 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6365000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x486 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP4 DUP4 SUB SWAP1 SSTORE PUSH1 0x2 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xD71 SWAP1 DUP5 SWAP1 PUSH2 0xF49 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x91B JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xDE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xDFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE05 DUP3 PUSH2 0xDC1 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE28 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH2 0xE36 PUSH1 0x20 DUP5 ADD PUSH2 0xDC1 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE5D DUP5 PUSH2 0xDC1 JUMP JUMPDEST SWAP3 POP PUSH2 0xE6B PUSH1 0x20 DUP6 ADD PUSH2 0xDC1 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE97 DUP4 PUSH2 0xDC1 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xEB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xEEB JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0xECF JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xEFD JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xF44 JUMPI PUSH2 0xF44 PUSH2 0xFB4 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xF5B JUMPI PUSH2 0xF5B PUSH2 0xFB4 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0xF74 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0xFAE JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 0xD4 0xAC SWAP1 0x21 SWAP2 EQ PUSH27 0x49F917AA81A72FE8B5962F80431BB7E21B7951B8E032ED6164736F PUSH13 0x63430008070033000000000000 ",
              "sourceMap": "98:83:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;477:9:35;:7;:9::i;:::-;98:83:37;;;;;2084:98:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4181:166;;;;;;;;;;-1:-1:-1;4181:166:0;;;;;:::i;:::-;;:::i;:::-;;;1613:14:64;;1606:22;1588:41;;1576:2;1561:18;4181:166:0;1448:187:64;3172:106:0;;;;;;;;;;-1:-1:-1;3259:12:0;;3172:106;;;6452:25:64;;;6440:2;6425:18;3172:106:0;6306:177:64;4814:478:0;;;;;;;;;;-1:-1:-1;4814:478:0;;;;;:::i;:::-;;:::i;629:162:35:-;;;;;;;;;;-1:-1:-1;629:162:35;;;;;:::i;:::-;;:::i;3021:91:0:-;;;;;;;;;;-1:-1:-1;3021:91:0;;3103:2;6630:36:64;;6618:2;6603:18;3021:91:0;6488:184:64;5687:212:0;;;;;;;;;;-1:-1:-1;5687:212:0;;;;;:::i;:::-;;:::i;3336:125::-;;;;;;;;;;-1:-1:-1;3336:125:0;;;;;:::i;:::-;3436:18;;3410:7;3436:18;;;;;;;;;;;;3336:125;2295:102;;;;;;;;;;;;;:::i;6386:405::-;;;;;;;;;;-1:-1:-1;6386:405:0;;;;;:::i;:::-;;:::i;3664:172::-;;;;;;;;;;-1:-1:-1;3664:172:0;;;;;:::i;:::-;;:::i;499:124:35:-;;;:::i;3894:149:0:-;;;;;;;;;;-1:-1:-1;3894:149:0;;;;;:::i;:::-;4009:18;;;;3983:7;4009:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3894:149;499:124:35;543:28;549:10;561:9;543:5;:28::i;:::-;586:30;;606:9;6452:25:64;;594:10:35;;586:30;;6440:2:64;6425:18;586:30:35;;;;;;;499:124::o;2084:98:0:-;2138:13;2170:5;2163:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2084:98;:::o;4181:166::-;4264:4;4280:39;666:10:3;4303:7:0;4312:6;4280:8;:39::i;:::-;-1:-1:-1;4336:4:0;4181:166;;;;:::o;4814:478::-;4950:4;4966:36;4976:6;4984:9;4995:6;4966:9;:36::i;:::-;5040:19;;;5013:24;5040:19;;;:11;:19;;;;;;;;666:10:3;5040:33:0;;;;;;;;5091:26;;;;5083:79;;;;;;;4120:2:64;5083:79:0;;;4102:21:64;4159:2;4139:18;;;4132:30;4198:34;4178:18;;;4171:62;4269:10;4249:18;;;4242:38;4297:19;;5083:79:0;;;;;;;;;5196:57;5205:6;666:10:3;5246:6:0;5227:16;:25;5196:8;:57::i;:::-;-1:-1:-1;5281:4:0;;4814:478;-1:-1:-1;;;;4814:478:0:o;629:162:35:-;677:22;683:10;695:3;677:5;:22::i;:::-;709:33;;717:10;;709:33;;;;;738:3;;709:33;;;;738:3;717:10;709:33;;;;;;;;;;;;;;;;;;;;-1:-1:-1;757:27:35;;6452:25:64;;;768:10:35;;757:27;;6440:2:64;6425:18;757:27:35;;;;;;;629:162;:::o;5687:212:0:-;666:10:3;5775:4:0;5823:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;5775:4;;5791:80;;5814:7;;5823:47;;5860:10;;5823:47;:::i;:::-;5791:8;:80::i;2295:102::-;2351:13;2383:7;2376:14;;;;;:::i;6386:405::-;666:10:3;6479:4:0;6522:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;6574:35;;;;6566:85;;;;;;;5742:2:64;6566:85:0;;;5724:21:64;5781:2;5761:18;;;5754:30;5820:34;5800:18;;;5793:62;5891:7;5871:18;;;5864:35;5916:19;;6566:85:0;5540:401:64;6566:85:0;6685:67;666:10:3;6708:7:0;6736:15;6717:16;:34;6685:8;:67::i;:::-;-1:-1:-1;6780:4:0;;6386:405;-1:-1:-1;;;6386:405:0:o;3664:172::-;3750:4;3766:42;666:10:3;3790:9:0;3801:6;3766:9;:42::i;8254:389::-;8337:21;;;8329:65;;;;;;;6148:2:64;8329:65:0;;;6130:21:64;6187:2;6167:18;;;6160:30;6226:33;6206:18;;;6199:61;6277:18;;8329:65:0;5946:355:64;8329:65:0;8481:6;8465:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;8497:18:0;;;:9;:18;;;;;;;;;;:28;;8519:6;;8497:9;:28;;8519:6;;8497:28;:::i;:::-;;;;-1:-1:-1;;8540:37:0;;6452:25:64;;;8540:37:0;;;;8557:1;;8540:37;;6440:2:64;6425:18;8540:37:0;;;;;;;8254:389;;:::o;9962:370::-;10093:19;;;10085:68;;;;;;;5337:2:64;10085:68:0;;;5319:21:64;5376:2;5356:18;;;5349:30;5415:34;5395:18;;;5388:62;5486:6;5466:18;;;5459:34;5510:19;;10085:68:0;5135:400:64;10085:68:0;10171:21;;;10163:68;;;;;;;3310:2:64;10163:68:0;;;3292:21:64;3349:2;3329:18;;;3322:30;3388:34;3368:18;;;3361:62;3459:4;3439:18;;;3432:32;3481:19;;10163:68:0;3108:398:64;10163:68:0;10242:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10293:32;;6452:25:64;;;10293:32:0;;6425:18:64;10293:32:0;;;;;;;;9962:370;;;:::o;7265:713::-;7400:20;;;7392:70;;;;;;;4931:2:64;7392:70:0;;;4913:21:64;4970:2;4950:18;;;4943:30;5009:34;4989:18;;;4982:62;5080:7;5060:18;;;5053:35;5105:19;;7392:70:0;4729:401:64;7392:70:0;7480:23;;;7472:71;;;;;;;2503:2:64;7472:71:0;;;2485:21:64;2542:2;2522:18;;;2515:30;2581:34;2561:18;;;2554:62;2652:5;2632:18;;;2625:33;2675:19;;7472:71:0;2301:399:64;7472:71:0;7636:17;;;7612:21;7636:17;;;;;;;;;;;7671:23;;;;7663:74;;;;;;;3713:2:64;7663:74:0;;;3695:21:64;3752:2;3732:18;;;3725:30;3791:34;3771:18;;;3764:62;3862:8;3842:18;;;3835:36;3888:19;;7663:74:0;3511:402:64;7663:74:0;7771:17;;;;:9;:17;;;;;;;;;;;7791:22;;;7771:42;;7833:20;;;;;;;;:30;;7807:6;;7771:9;7833:30;;7807:6;;7833:30;:::i;:::-;;;;;;;;7896:9;7879:35;;7888:6;7879:35;;;7907:6;7879:35;;;;6452:25:64;;6440:2;6425:18;;6306:177;7879:35:0;;;;;;;;7382:596;7265:713;;;:::o;8963:576::-;9046:21;;;9038:67;;;;;;;4529:2:64;9038:67:0;;;4511:21:64;4568:2;4548:18;;;4541:30;4607:34;4587:18;;;4580:62;4678:3;4658:18;;;4651:31;4699:19;;9038:67:0;4327:397:64;9038:67:0;9201:18;;;9176:22;9201:18;;;;;;;;;;;9237:24;;;;9229:71;;;;;;;2907:2:64;9229:71:0;;;2889:21:64;2946:2;2926:18;;;2919:30;2985:34;2965:18;;;2958:62;3056:4;3036:18;;;3029:32;3078:19;;9229:71:0;2705:398:64;9229:71:0;9334:18;;;:9;:18;;;;;;;;;;9355:23;;;9334:44;;9398:12;:22;;9372:6;;9334:9;9398:22;;9372:6;;9398:22;:::i;:::-;;;;-1:-1:-1;;9436:37:0;;6452:25:64;;;9462:1:0;;9436:37;;;;;;6440:2:64;6425:18;9436:37:0;6306:177:64;14:196;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:186::-;274:6;327:2;315:9;306:7;302:23;298:32;295:52;;;343:1;340;333:12;295:52;366:29;385:9;366:29;:::i;:::-;356:39;215:186;-1:-1:-1;;;215:186:64:o;406:260::-;474:6;482;535:2;523:9;514:7;510:23;506:32;503:52;;;551:1;548;541:12;503:52;574:29;593:9;574:29;:::i;:::-;564:39;;622:38;656:2;645:9;641:18;622:38;:::i;:::-;612:48;;406:260;;;;;:::o;671:328::-;748:6;756;764;817:2;805:9;796:7;792:23;788:32;785:52;;;833:1;830;823:12;785:52;856:29;875:9;856:29;:::i;:::-;846:39;;904:38;938:2;927:9;923:18;904:38;:::i;:::-;894:48;;989:2;978:9;974:18;961:32;951:42;;671:328;;;;;:::o;1004:254::-;1072:6;1080;1133:2;1121:9;1112:7;1108:23;1104:32;1101:52;;;1149:1;1146;1139:12;1101:52;1172:29;1191:9;1172:29;:::i;:::-;1162:39;1248:2;1233:18;;;;1220:32;;-1:-1:-1;;;1004:254:64:o;1263:180::-;1322:6;1375:2;1363:9;1354:7;1350:23;1346:32;1343:52;;;1391:1;1388;1381:12;1343:52;-1:-1:-1;1414:23:64;;1263:180;-1:-1:-1;1263:180:64:o;1640:656::-;1752:4;1781:2;1810;1799:9;1792:21;1842:6;1836:13;1885:6;1880:2;1869:9;1865:18;1858:34;1910:1;1920:140;1934:6;1931:1;1928:13;1920:140;;;2029:14;;;2025:23;;2019:30;1995:17;;;2014:2;1991:26;1984:66;1949:10;;1920:140;;;2078:6;2075:1;2072:13;2069:91;;;2148:1;2143:2;2134:6;2123:9;2119:22;2115:31;2108:42;2069:91;-1:-1:-1;2212:2:64;2200:15;2217:66;2196:88;2181:104;;;;2287:2;2177:113;;1640:656;-1:-1:-1;;;1640:656:64:o;6677:128::-;6717:3;6748:1;6744:6;6741:1;6738:13;6735:39;;;6754:18;;:::i;:::-;-1:-1:-1;6790:9:64;;6677:128::o;6810:125::-;6850:4;6878:1;6875;6872:8;6869:34;;;6883:18;;:::i;:::-;-1:-1:-1;6920:9:64;;6810:125::o;6940:437::-;7019:1;7015:12;;;;7062;;;7083:61;;7137:4;7129:6;7125:17;7115:27;;7083:61;7190:2;7182:6;7179:14;7159:18;7156:38;7153:218;;;7227:77;7224:1;7217:88;7328:4;7325:1;7318:15;7356:4;7353:1;7346:15;7153:218;;6940:437;;;:::o;7382:184::-;7434:77;7431:1;7424:88;7531:4;7528:1;7521:15;7555:4;7552:1;7545:15"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "824200",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "allowance(address,address)": "infinite",
                "approve(address,uint256)": "24595",
                "balanceOf(address)": "2561",
                "decimals()": "244",
                "decreaseAllowance(address,uint256)": "26851",
                "deposit()": "infinite",
                "increaseAllowance(address,uint256)": "26898",
                "name()": "infinite",
                "symbol()": "infinite",
                "totalSupply()": "2349",
                "transfer(address,uint256)": "51125",
                "transferFrom(address,address,uint256)": "infinite",
                "withdraw(uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "deposit()": "d0e30db0",
              "increaseAllowance(address,uint256)": "39509351",
              "name()": "06fdde03",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "withdraw(uint256)": "2e1a7d4d"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/WETH9.sol\":\"WETH9\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC20.sol\\\";\\nimport \\\"./extensions/IERC20Metadata.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC20} interface.\\n *\\n * This implementation is agnostic to the way tokens are created. This means\\n * that a supply mechanism has to be added in a derived contract using {_mint}.\\n * For a generic mechanism see {ERC20PresetMinterPauser}.\\n *\\n * TIP: For a detailed writeup see our guide\\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\\n * to implement supply mechanisms].\\n *\\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\\n * instead returning `false` on failure. This behavior is nonetheless\\n * conventional and does not conflict with the expectations of ERC20\\n * applications.\\n *\\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\\n * This allows applications to reconstruct the allowance for all accounts just\\n * by listening to said events. Other implementations of the EIP may not emit\\n * these events, as it isn't required by the specification.\\n *\\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\\n * functions have been added to mitigate the well-known issues around setting\\n * allowances. See {IERC20-approve}.\\n */\\ncontract ERC20 is Context, IERC20, IERC20Metadata {\\n    mapping(address => uint256) private _balances;\\n\\n    mapping(address => mapping(address => uint256)) private _allowances;\\n\\n    uint256 private _totalSupply;\\n\\n    string private _name;\\n    string private _symbol;\\n\\n    /**\\n     * @dev Sets the values for {name} and {symbol}.\\n     *\\n     * The default value of {decimals} is 18. To select a different value for\\n     * {decimals} you should overload it.\\n     *\\n     * All two of these values are immutable: they can only be set once during\\n     * construction.\\n     */\\n    constructor(string memory name_, string memory symbol_) {\\n        _name = name_;\\n        _symbol = symbol_;\\n    }\\n\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() public view virtual override returns (string memory) {\\n        return _name;\\n    }\\n\\n    /**\\n     * @dev Returns the symbol of the token, usually a shorter version of the\\n     * name.\\n     */\\n    function symbol() public view virtual override returns (string memory) {\\n        return _symbol;\\n    }\\n\\n    /**\\n     * @dev Returns the number of decimals used to get its user representation.\\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\\n     * be displayed to a user as `5.05` (`505 / 10 ** 2`).\\n     *\\n     * Tokens usually opt for a value of 18, imitating the relationship between\\n     * Ether and Wei. This is the value {ERC20} uses, unless this function is\\n     * overridden;\\n     *\\n     * NOTE: This information is only used for _display_ purposes: it in\\n     * no way affects any of the arithmetic of the contract, including\\n     * {IERC20-balanceOf} and {IERC20-transfer}.\\n     */\\n    function decimals() public view virtual override returns (uint8) {\\n        return 18;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-totalSupply}.\\n     */\\n    function totalSupply() public view virtual override returns (uint256) {\\n        return _totalSupply;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-balanceOf}.\\n     */\\n    function balanceOf(address account) public view virtual override returns (uint256) {\\n        return _balances[account];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transfer}.\\n     *\\n     * Requirements:\\n     *\\n     * - `recipient` cannot be the zero address.\\n     * - the caller must have a balance of at least `amount`.\\n     */\\n    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\\n        _transfer(_msgSender(), recipient, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-allowance}.\\n     */\\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\\n        return _allowances[owner][spender];\\n    }\\n\\n    /**\\n     * @dev See {IERC20-approve}.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\\n        _approve(_msgSender(), spender, amount);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev See {IERC20-transferFrom}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance. This is not\\n     * required by the EIP. See the note at the beginning of {ERC20}.\\n     *\\n     * Requirements:\\n     *\\n     * - `sender` and `recipient` cannot be the zero address.\\n     * - `sender` must have a balance of at least `amount`.\\n     * - the caller must have allowance for ``sender``'s tokens of at least\\n     * `amount`.\\n     */\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) public virtual override returns (bool) {\\n        _transfer(sender, recipient, amount);\\n\\n        uint256 currentAllowance = _allowances[sender][_msgSender()];\\n        require(currentAllowance >= amount, \\\"ERC20: transfer amount exceeds allowance\\\");\\n        unchecked {\\n            _approve(sender, _msgSender(), currentAllowance - amount);\\n        }\\n\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\\n     *\\n     * This is an alternative to {approve} that can be used as a mitigation for\\n     * problems described in {IERC20-approve}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     */\\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\\n        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\\n     *\\n     * This is an alternative to {approve} that can be used as a mitigation for\\n     * problems described in {IERC20-approve}.\\n     *\\n     * Emits an {Approval} event indicating the updated allowance.\\n     *\\n     * Requirements:\\n     *\\n     * - `spender` cannot be the zero address.\\n     * - `spender` must have allowance for the caller of at least\\n     * `subtractedValue`.\\n     */\\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\\n        uint256 currentAllowance = _allowances[_msgSender()][spender];\\n        require(currentAllowance >= subtractedValue, \\\"ERC20: decreased allowance below zero\\\");\\n        unchecked {\\n            _approve(_msgSender(), spender, currentAllowance - subtractedValue);\\n        }\\n\\n        return true;\\n    }\\n\\n    /**\\n     * @dev Moves `amount` of tokens from `sender` to `recipient`.\\n     *\\n     * This internal function is equivalent to {transfer}, and can be used to\\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\\n     *\\n     * Emits a {Transfer} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `sender` cannot be the zero address.\\n     * - `recipient` cannot be the zero address.\\n     * - `sender` must have a balance of at least `amount`.\\n     */\\n    function _transfer(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) internal virtual {\\n        require(sender != address(0), \\\"ERC20: transfer from the zero address\\\");\\n        require(recipient != address(0), \\\"ERC20: transfer to the zero address\\\");\\n\\n        _beforeTokenTransfer(sender, recipient, amount);\\n\\n        uint256 senderBalance = _balances[sender];\\n        require(senderBalance >= amount, \\\"ERC20: transfer amount exceeds balance\\\");\\n        unchecked {\\n            _balances[sender] = senderBalance - amount;\\n        }\\n        _balances[recipient] += amount;\\n\\n        emit Transfer(sender, recipient, amount);\\n\\n        _afterTokenTransfer(sender, recipient, amount);\\n    }\\n\\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\\n     * the total supply.\\n     *\\n     * Emits a {Transfer} event with `from` set to the zero address.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     */\\n    function _mint(address account, uint256 amount) internal virtual {\\n        require(account != address(0), \\\"ERC20: mint to the zero address\\\");\\n\\n        _beforeTokenTransfer(address(0), account, amount);\\n\\n        _totalSupply += amount;\\n        _balances[account] += amount;\\n        emit Transfer(address(0), account, amount);\\n\\n        _afterTokenTransfer(address(0), account, amount);\\n    }\\n\\n    /**\\n     * @dev Destroys `amount` tokens from `account`, reducing the\\n     * total supply.\\n     *\\n     * Emits a {Transfer} event with `to` set to the zero address.\\n     *\\n     * Requirements:\\n     *\\n     * - `account` cannot be the zero address.\\n     * - `account` must have at least `amount` tokens.\\n     */\\n    function _burn(address account, uint256 amount) internal virtual {\\n        require(account != address(0), \\\"ERC20: burn from the zero address\\\");\\n\\n        _beforeTokenTransfer(account, address(0), amount);\\n\\n        uint256 accountBalance = _balances[account];\\n        require(accountBalance >= amount, \\\"ERC20: burn amount exceeds balance\\\");\\n        unchecked {\\n            _balances[account] = accountBalance - amount;\\n        }\\n        _totalSupply -= amount;\\n\\n        emit Transfer(account, address(0), amount);\\n\\n        _afterTokenTransfer(account, address(0), amount);\\n    }\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\\n     *\\n     * This internal function is equivalent to `approve`, and can be used to\\n     * e.g. set automatic allowances for certain subsystems, etc.\\n     *\\n     * Emits an {Approval} event.\\n     *\\n     * Requirements:\\n     *\\n     * - `owner` cannot be the zero address.\\n     * - `spender` cannot be the zero address.\\n     */\\n    function _approve(\\n        address owner,\\n        address spender,\\n        uint256 amount\\n    ) internal virtual {\\n        require(owner != address(0), \\\"ERC20: approve from the zero address\\\");\\n        require(spender != address(0), \\\"ERC20: approve to the zero address\\\");\\n\\n        _allowances[owner][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    /**\\n     * @dev Hook that is called before any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n     * will be transferred to `to`.\\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _beforeTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {}\\n\\n    /**\\n     * @dev Hook that is called after any transfer of tokens. This includes\\n     * minting and burning.\\n     *\\n     * Calling conditions:\\n     *\\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\\n     * has been transferred to `to`.\\n     * - when `from` is zero, `amount` tokens have been minted for `to`.\\n     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.\\n     * - `from` and `to` are never both zero.\\n     *\\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n     */\\n    function _afterTokenTransfer(\\n        address from,\\n        address to,\\n        uint256 amount\\n    ) internal virtual {}\\n}\\n\",\"keccak256\":\"0xb03df8481a954604ad0c9125680893b2e3f7ff770fe470e38b89ac61b84e8072\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC20 standard as defined in the EIP.\\n */\\ninterface IERC20 {\\n    /**\\n     * @dev Returns the amount of tokens in existence.\\n     */\\n    function totalSupply() external view returns (uint256);\\n\\n    /**\\n     * @dev Returns the amount of tokens owned by `account`.\\n     */\\n    function balanceOf(address account) external view returns (uint256);\\n\\n    /**\\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transfer(address recipient, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Returns the remaining number of tokens that `spender` will be\\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\\n     * zero by default.\\n     *\\n     * This value changes when {approve} or {transferFrom} are called.\\n     */\\n    function allowance(address owner, address spender) external view returns (uint256);\\n\\n    /**\\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\\n     * that someone may use both the old and the new allowance by unfortunate\\n     * transaction ordering. One possible solution to mitigate this race\\n     * condition is to first reduce the spender's allowance to 0 and set the\\n     * desired value afterwards:\\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\\n     *\\n     * Emits an {Approval} event.\\n     */\\n    function approve(address spender, uint256 amount) external returns (bool);\\n\\n    /**\\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\\n     * allowance mechanism. `amount` is then deducted from the caller's\\n     * allowance.\\n     *\\n     * Returns a boolean value indicating whether the operation succeeded.\\n     *\\n     * Emits a {Transfer} event.\\n     */\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool);\\n\\n    /**\\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\\n     * another (`to`).\\n     *\\n     * Note that `value` may be zero.\\n     */\\n    event Transfer(address indexed from, address indexed to, uint256 value);\\n\\n    /**\\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\\n     * a call to {approve}. `value` is the new allowance.\\n     */\\n    event Approval(address indexed owner, address indexed spender, uint256 value);\\n}\\n\",\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC20.sol\\\";\\n\\n/**\\n * @dev Interface for the optional metadata functions from the ERC20 standard.\\n *\\n * _Available since v4.1._\\n */\\ninterface IERC20Metadata is IERC20 {\\n    /**\\n     * @dev Returns the name of the token.\\n     */\\n    function name() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the symbol of the token.\\n     */\\n    function symbol() external view returns (string memory);\\n\\n    /**\\n     * @dev Returns the decimals places of the token.\\n     */\\n    function decimals() external view returns (uint8);\\n}\\n\",\"keccak256\":\"0x83fe24f5c04a56091e50f4a345ff504c8bff658a76d4c43b16878c8f940c53b2\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n    function _msgSender() internal view virtual returns (address) {\\n        return msg.sender;\\n    }\\n\\n    function _msgData() internal view virtual returns (bytes calldata) {\\n        return msg.data;\\n    }\\n}\\n\",\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\"},\"contracts/mocks/ERC20Mock.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"@openzeppelin/contracts/token/ERC20/ERC20.sol\\\";\\n\\ncontract ERC20Mock is ERC20 {\\n    event Deposit(address indexed dst, uint256 wad);\\n    event Withdrawal(address indexed src, uint256 wad);\\n\\n    constructor(\\n        string memory name,\\n        string memory symbol,\\n        uint256 supply\\n    ) ERC20(name, symbol) {\\n        _mint(msg.sender, supply);\\n    }\\n\\n    receive() external payable {\\n        deposit();\\n    }\\n\\n    function deposit() public payable {\\n        _mint(msg.sender, msg.value);\\n        emit Deposit(msg.sender, msg.value);\\n    }\\n\\n    function withdraw(uint256 wad) public {\\n        _burn(msg.sender, wad);\\n        payable(msg.sender).transfer(wad);\\n        emit Withdrawal(msg.sender, wad);\\n    }\\n}\\n\",\"keccak256\":\"0x9294760772aff36ab62b66b0dabdcec99f07f9c9043009fb6db21118aa7e7d04\",\"license\":\"GPL-3.0-or-later\"},\"contracts/mocks/WETH9.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8.2;\\n\\nimport \\\"./ERC20Mock.sol\\\";\\n\\ncontract WETH9 is ERC20Mock {\\n    constructor() ERC20Mock(\\\"WETH9\\\", \\\"WETH9\\\", 0) {}\\n}\\n\",\"keccak256\":\"0x5ec60ad98594024b50ef952ce03858b038bc4ade42655af8f34939c7c2bf3768\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 15,
                "contract": "contracts/mocks/WETH9.sol:WETH9",
                "label": "_balances",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 21,
                "contract": "contracts/mocks/WETH9.sol:WETH9",
                "label": "_allowances",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
              },
              {
                "astId": 23,
                "contract": "contracts/mocks/WETH9.sol:WETH9",
                "label": "_totalSupply",
                "offset": 0,
                "slot": "2",
                "type": "t_uint256"
              },
              {
                "astId": 25,
                "contract": "contracts/mocks/WETH9.sol:WETH9",
                "label": "_name",
                "offset": 0,
                "slot": "3",
                "type": "t_string_storage"
              },
              {
                "astId": 27,
                "contract": "contracts/mocks/WETH9.sol:WETH9",
                "label": "_symbol",
                "offset": 0,
                "slot": "4",
                "type": "t_string_storage"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_mapping(t_address,t_mapping(t_address,t_uint256))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_uint256)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_string_storage": {
                "encoding": "bytes",
                "label": "string",
                "numberOfBytes": "32"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/pool/ConstantProductPool.sol": {
        "ConstantProductPool": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount0",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount1",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount0",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount1",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "name": "Mint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenIn",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOut",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "name": "Swap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "reserve0",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "reserve1",
                  "type": "uint256"
                }
              ],
              "name": "Sync",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "domainSeperator",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFeeTo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPool.TokenAmount[]",
                  "name": "withdrawnAmounts",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burnSingle",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "flashSwap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "getAmountIn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "finalAmountIn",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "getAmountOut",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "finalAmountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAssets",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getNativeReserves",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_nativeReserve0",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_nativeReserve1",
                  "type": "uint256"
                },
                {
                  "internalType": "uint32",
                  "name": "_blockTimestampLast",
                  "type": "uint32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getReserves",
              "outputs": [
                {
                  "internalType": "uint112",
                  "name": "_reserve0",
                  "type": "uint112"
                },
                {
                  "internalType": "uint112",
                  "name": "_reserve1",
                  "type": "uint112"
                },
                {
                  "internalType": "uint32",
                  "name": "_blockTimestampLast",
                  "type": "uint32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "kLast",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolIdentifier",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price0CumulativeLast",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price1CumulativeLast",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "swap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "swapFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token0",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token1",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "updateBarFee",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "The reserves are stored as bento shares.      The curve is applied to shares as well. This pool does not care about the underlying amounts.",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "params": {
                  "amount": "The maximum collective `amount` that `spender` can pull.",
                  "spender": "Address of the party that can pull tokens from `msg.sender`'s account."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "burn(bytes)": {
                "details": "Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens."
              },
              "burnSingle(bytes)": {
                "details": "Burns LP tokens sent to this contract and swaps one of the output tokens for another - i.e., the user gets a single token out by burning LP tokens."
              },
              "flashSwap(bytes)": {
                "details": "Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage."
              },
              "getAmountIn(bytes)": {
                "details": "The pool does not need to include a trade simulator directly in itself - it can use a library.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "finalAmountIn": "The amount of input tokens that are required from the user if the trade is executed."
                }
              },
              "getAmountOut(bytes)": {
                "details": "The pool does not need to include a trade simulator directly in itself - it can use a library.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "finalAmountOut": "The amount of output tokens that will be sent to the user if the trade is executed."
                }
              },
              "getAssets()": {
                "returns": {
                  "assets": "An array of tokens supported by the pool."
                }
              },
              "getNativeReserves()": {
                "details": "returned values are the native ERC20 token amounts."
              },
              "getReserves()": {
                "details": "returned values are in terms of BentoBox \"shares\"."
              },
              "mint(bytes)": {
                "details": "Mints LP tokens - should be called via the router after transferring `bento` tokens. The router must ensure that sufficient LP tokens are minted by using the return value."
              },
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "amount": "The number of tokens that are approved (2^256-1 means infinite).",
                  "deadline": "The time at which to expire the signature.",
                  "owner": "The address to approve from.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "spender": "The address to be approved.",
                  "v": "The recovery byte of the signature."
                }
              },
              "swap(bytes)": {
                "details": "Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage."
              },
              "transfer(address,uint256)": {
                "params": {
                  "amount": "The token `amount` to move.",
                  "recipient": "The address to move tokens to."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "transferFrom(address,address,uint256)": {
                "params": {
                  "amount": "The token `amount` to move.",
                  "recipient": "The address to move tokens to.",
                  "sender": "Address to pull tokens `from`."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "updateBarFee()": {
                "details": "Updates `barFee` for Trident protocol."
              }
            },
            "stateVariables": {
              "poolIdentifier": {
                "return": "A unique identifier for the pool type.",
                "returns": {
                  "_0": "A unique identifier for the pool type."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_11960": {
                  "entryPoint": null,
                  "id": 11960,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_6135": {
                  "entryPoint": null,
                  "id": 6135,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_calculateDomainSeparator_11995": {
                  "entryPoint": null,
                  "id": 11995,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_address_fromMemory": {
                  "entryPoint": 1233,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 1251,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_uint256t_bool_fromMemory": {
                  "entryPoint": 1290,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory": {
                  "entryPoint": 1386,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 1627,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_436b5627177a9781148596ddddd93f72d53dd82575a018216d5aaf2a8219ec9e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x41": {
                  "entryPoint": 1653,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 1675,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:4545:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "74:78:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "84:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "99:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "93:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "93:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "84:5:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "140:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "115:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "115:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "115:31:64"
                            }
                          ]
                        },
                        "name": "abi_decode_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "53:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "64:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:138:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "238:170:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "284:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "293:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "296:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "286:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "286:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "286:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "259:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "268:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "255:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "255:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "280:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "251:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "251:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "248:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "309:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "328:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "322:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "322:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "313:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "372:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "347:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "347:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "347:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "387:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "397:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "387:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "204:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "215:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "227:6:64",
                            "type": ""
                          }
                        ],
                        "src": "157:251:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "558:480:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "605:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "614:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "617:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "607:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "607:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "607:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "579:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "588:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "575:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "575:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "600:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "571:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "571:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "568:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "630:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "649:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "643:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "643:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "634:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "693:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "668:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "668:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "668:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "708:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "718:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "708:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "732:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "757:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "768:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "753:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "753:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "747:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "747:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "736:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "806:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "781:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "781:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "781:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "823:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "833:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "823:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "849:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "869:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "880:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "865:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "865:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "859:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "859:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "849:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "893:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "918:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "929:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "914:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "914:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "908:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "908:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "897:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "990:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "999:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1002:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "992:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "992:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "992:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "955:7:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "978:7:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "971:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "971:15:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "964:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "964:23:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "952:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "952:36:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "945:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "945:44:64"
                              },
                              "nodeType": "YulIf",
                              "src": "942:64:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1015:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "1025:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1015:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_uint256t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "500:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "511:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "523:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "531:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "539:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "547:6:64",
                            "type": ""
                          }
                        ],
                        "src": "413:625:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1150:1066:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1196:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1205:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1208:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1198:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1198:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1198:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1171:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1180:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1167:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1167:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1192:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1163:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1163:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1160:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1221:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1241:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1235:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1235:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1225:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1260:28:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1278:2:64",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1282:1:64",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1274:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1274:10:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1286:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1270:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1270:18:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1264:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1315:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1324:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1327:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1317:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1317:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1317:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1303:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1311:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1300:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1300:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1297:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1340:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1354:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1365:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1350:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1350:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1344:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1420:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1429:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1432:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1422:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1422:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1422:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1399:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1403:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1395:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1395:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1410:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1391:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1391:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1384:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1384:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1381:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1445:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1461:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1455:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1455:9:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1449:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1487:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1489:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1489:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1489:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1479:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1483:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1476:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1476:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1473:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1518:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1532:2:64",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "1528:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1528:7:64"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "1522:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1544:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1564:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1558:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1558:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1548:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1576:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1598:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1622:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1626:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1618:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1618:13:64"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "1633:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "1614:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1614:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1638:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1610:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1610:31:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "1643:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1606:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1606:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1594:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1594:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1580:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1706:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1708:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1708:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1708:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1665:10:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1677:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1662:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1662:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1685:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1697:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1682:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1682:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1659:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1659:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1656:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1744:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1748:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1737:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1737:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1737:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1775:6:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1783:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1768:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1768:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1768:18:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1795:14:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1805:4:64",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "1799:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1855:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1864:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1867:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1857:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1857:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1857:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1832:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1836:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1828:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1828:11:64"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "1841:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1824:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1824:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1846:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1821:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1821:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1818:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1880:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1889:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1884:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1945:83:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "memPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1974:6:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1982:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1970:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1970:14:64"
                                            },
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "1986:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1966:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1966:23:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_2",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2005:2:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2009:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2001:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2001:10:64"
                                                },
                                                {
                                                  "name": "_5",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2013:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1997:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1997:19:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1991:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1991:26:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1959:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1959:59:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1959:59:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1910:1:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1913:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1907:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1907:9:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1917:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1919:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1928:1:64"
                                        },
                                        {
                                          "name": "_5",
                                          "nodeType": "YulIdentifier",
                                          "src": "1931:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1924:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1924:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1919:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1903:3:64",
                                "statements": []
                              },
                              "src": "1899:129:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2058:59:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "memPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2087:6:64"
                                                },
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2095:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2083:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2083:15:64"
                                            },
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "2100:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2079:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2079:24:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2105:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2072:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2072:35:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2072:35:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2043:1:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2046:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2040:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2040:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2037:80:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2126:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "2136:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2126:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2151:59:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2195:9:64"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "2206:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2191:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2191:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2161:29:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2161:49:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2151:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1108:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1119:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1131:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1139:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1043:1173:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2302:103:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2348:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2357:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2360:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2350:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2350:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2350:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2323:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2332:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2319:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2319:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2344:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2315:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2315:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2312:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2373:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2389:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2383:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2383:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2373:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2268:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2279:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2291:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2221:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2623:276:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2633:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2645:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2656:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2641:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2641:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2633:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2676:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2687:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2669:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2669:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2669:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2714:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2725:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2710:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2710:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2730:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2703:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2703:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2703:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2757:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2768:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2753:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2753:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2773:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2746:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2746:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2746:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2800:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2811:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2796:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2796:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2816:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2789:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2789:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2789:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2843:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2854:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2839:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2839:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "2864:6:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2880:3:64",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2885:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "2876:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2876:11:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2889:1:64",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "2872:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2872:19:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2860:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2860:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2832:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2832:61:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2832:61:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2560:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2571:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2579:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2587:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2595:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2603:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2614:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2410:489:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3078:163:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3095:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3106:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3088:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3088:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3088:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3129:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3140:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3125:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3125:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3145:2:64",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3118:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3118:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3118:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3168:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3179:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3164:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3164:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f544f4b454e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3184:15:64",
                                    "type": "",
                                    "value": "INVALID_TOKEN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3157:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3157:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3157:43:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3209:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3221:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3232:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3217:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3217:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3209:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_436b5627177a9781148596ddddd93f72d53dd82575a018216d5aaf2a8219ec9e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3055:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3069:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2904:337:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3420:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3437:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3448:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3430:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3430:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3430:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3471:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3482:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3467:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3467:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3487:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3460:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3460:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3460:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3510:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3521:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3506:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3506:18:64"
                                  },
                                  {
                                    "hexValue": "5a45524f5f41444452455353",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3526:14:64",
                                    "type": "",
                                    "value": "ZERO_ADDRESS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3499:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3499:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3499:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3550:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3562:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3573:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3558:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3558:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3550:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3397:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3411:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3246:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3761:169:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3778:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3789:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3771:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3771:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3771:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3812:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3823:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3808:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3808:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3828:2:64",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3801:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3801:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3801:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3851:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3862:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3847:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3847:18:64"
                                  },
                                  {
                                    "hexValue": "4944454e544943414c5f414444524553534553",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3867:21:64",
                                    "type": "",
                                    "value": "IDENTICAL_ADDRESSES"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3840:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3840:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3840:49:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3898:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3910:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3921:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3906:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3906:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3898:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3738:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3752:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3587:343:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4109:166:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4126:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4137:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4119:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4119:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4119:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4160:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4171:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4156:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4156:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4176:2:64",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4149:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4149:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4149:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4199:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4210:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4195:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4195:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f535741505f464545",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4215:18:64",
                                    "type": "",
                                    "value": "INVALID_SWAP_FEE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4188:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4188:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4188:46:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4243:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4255:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4266:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4251:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4251:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4243:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4086:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4100:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3935:340:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4312:95:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4329:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4336:3:64",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4341:10:64",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "4332:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4332:20:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4322:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4322:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4322:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4369:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4372:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4362:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4362:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4362:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4393:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4396:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "4386:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4386:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4386:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "4280:127:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4457:86:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4521:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4530:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4533:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4523:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4523:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4523:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "4480:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "4491:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "4506:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "4511:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4502:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4502:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4515:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "4498:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4498:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "4487:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4487:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "4477:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4477:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4470:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4470:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4467:70:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "4446:5:64",
                            "type": ""
                          }
                        ],
                        "src": "4412:131:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        validator_revert_address(value)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_uint256t_bool_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := mload(add(headStart, 64))\n        let value_2 := mload(add(headStart, 96))\n        if iszero(eq(value_2, iszero(iszero(value_2)))) { revert(0, 0) }\n        value3 := value_2\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        let _5 := 0x20\n        if gt(add(add(_2, _3), _5), dataEnd) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _3) { i := add(i, _5) }\n        {\n            mstore(add(add(memPtr, i), _5), mload(add(add(_2, i), _5)))\n        }\n        if gt(i, _3)\n        {\n            mstore(add(add(memPtr, _3), _5), 0)\n        }\n        value0 := memPtr\n        value1 := abi_decode_address_fromMemory(add(headStart, _5))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_436b5627177a9781148596ddddd93f72d53dd82575a018216d5aaf2a8219ec9e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"INVALID_TOKEN\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"ZERO_ADDRESS\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"IDENTICAL_ADDRESSES\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"INVALID_SWAP_FEE\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101a06040523480156200001257600080fd5b50604051620045ab380380620045ab83398101604081905262000035916200056a565b4660805262000112604080518082018252600e81526d29bab9b434902628102a37b5b2b760911b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b60a08181525050600080600080858060200190518101906200013591906200050a565b929650909450925090506001600160a01b0384166200018a5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064015b60405180910390fd5b826001600160a01b0316846001600160a01b03161415620001ee5760405162461bcd60e51b815260206004820152601360248201527f4944454e544943414c5f41444452455353455300000000000000000000000000604482015260640162000181565b6001600160a01b038416301415620002395760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015260640162000181565b6001600160a01b038316301415620002845760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015260640162000181565b612710821115620002cb5760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f535741505f46454560801b604482015260640162000181565b6001600160601b0319606085811b82166101605284901b166101805260c082905261271082900360e052604080516360a56c0160e11b815290516001600160a01b0387169163c14ad802916004808301926020929190829003018186803b1580156200033657600080fd5b505afa1580156200034b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037191906200065b565b600481905550846001600160a01b0316630c0a0cd26040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b157600080fd5b505afa158015620003c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ec9190620004e3565b6001600160a01b0316610100816001600160a01b031660601b81525050846001600160a01b0316634da318276040518163ffffffff1660e01b815260040160206040518083038186803b1580156200044357600080fd5b505afa15801562000458573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047e9190620004e3565b6001600160601b0319606091821b8116610120529086901b166101405260016009558015620004c557600880546001600160e01b0316600160e01b4263ffffffff16021790555b505050505050620006a4565b8051620004de816200068b565b919050565b600060208284031215620004f657600080fd5b815162000503816200068b565b9392505050565b600080600080608085870312156200052157600080fd5b84516200052e816200068b565b602086015190945062000541816200068b565b60408601516060870151919450925080151581146200055f57600080fd5b939692955090935050565b600080604083850312156200057e57600080fd5b82516001600160401b03808211156200059657600080fd5b818501915085601f830112620005ab57600080fd5b815181811115620005c057620005c062000675565b604051601f8201601f19908116603f01168101908382118183101715620005eb57620005eb62000675565b816040528281526020935088848487010111156200060857600080fd5b600091505b828210156200062c57848201840151818301850152908301906200060d565b828211156200063e5760008484830101525b955062000650915050858201620004d1565b925050509250929050565b6000602082840312156200066e57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114620006a157600080fd5b50565b60805160a05160c05160e0516101005160601c6101205160601c6101405160601c6101605160601c6101805160601c613d7662000835600039600081816106060152818161085e0152818161098d01528181610a3b015281816110be015281816111c60152818161145c0152818161179c0152818161180b01528181611b6201528181611cc10152818161221f01528181612530015281816125b70152612e16015260008181610364015281816107da01528181610b2001528181610c4f015281816110920152818161115d015281816114e201528181611748015281816118ec01528181611a5c01528181611c53015281816121a0015281816125ec015281816126d70152612d2c0152600081816105df015261208801526000818161042301528181611aa901528181611baa01528181612bb001528181612c8c01528181612d5f0152612e470152600081816103180152613250015260008181612aee01526134ab01526000818161044a0152818161356d01526135d8015260006113c30152600061129a0152613d766000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c8063627dd56a11610145578063a69840a8116100bd578063c14ad8021161008c578063d21220a711610071578063d21220a714610601578063d505accf14610628578063dd62ed3e1461063b57600080fd5b8063c14ad802146105d1578063cf58879a146105da57600080fd5b8063a69840a814610571578063a8f1f52e14610598578063a9059cbb146105ab578063af8c09bf146105be57600080fd5b80637464fc3d116101145780637ecebe00116100f95780637ecebe001461050b57806392bc32191461052b57806395d89b411461053557600080fd5b80637464fc3d146104ef5780637ba0e2e7146104f857600080fd5b8063627dd56a1461047e57806365dfc7671461049157806367e4ac2c146104ba57806370a08231146104cf57600080fd5b80632a07b6c7116101d8578063499a3c50116101a757806354cf2aeb1161018c57806354cf2aeb146104455780635909c0d51461046c5780635a3d54931461047557600080fd5b8063499a3c501461040b5780634da318271461041e57600080fd5b80632a07b6c7146103a257806330adf81f146103c2578063313ce567146103e95780633644e5151461040357600080fd5b80630c0a0cd2116102145780630c0a0cd2146103135780630dfe16811461035f57806318160ddd1461038657806323b872dd1461038f57600080fd5b8063053da1c81461024657806306fdde031461026c5780630902f1ac146102b5578063095ea7b3146102f0575b600080fd5b610259610254366004613961565b610666565b6040519081526020015b60405180910390f35b6102a86040518060400160405280600e81526020017f5375736869204c5020546f6b656e00000000000000000000000000000000000081525081565b6040516102639190613b3a565b6102bd610d0b565b604080516dffffffffffffffffffffffffffff948516815293909216602084015263ffffffff1690820152606001610263565b6103036102fe366004613844565b610d74565b6040519015158152602001610263565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610263565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b61025960005481565b61030361039d3660046138a9565b610ded565b6103b56103b0366004613961565b610f39565b6040516102639190613ad5565b6102597f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103f1601281565b60405160ff9091168152602001610263565b610259611296565b610259610419366004613961565b6113e5565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b61025960055481565b61025960065481565b61025961048c366004613961565b6115cd565b6104996119bd565b60408051938452602084019290925263ffffffff1690820152606001610263565b6104c2611c31565b6040516102639190613a7b565b6102596104dd366004613695565b60016020526000908152604090205481565b61025960075481565b610259610506366004613961565b611d30565b610259610519366004613695565b60036020526000908152604090205481565b610533612086565b005b6102a86040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b6102597f54726964656e743a436f6e7374616e7450726f6475637400000000000000000081565b6102596105a6366004613961565b612129565b6103036105b9366004613844565b6122fd565b6102596105cc366004613961565b612382565b61025960045481565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b6105336106363660046138ea565b612794565b610259610649366004613870565b600260209081526000928352604080842090915290825290205481565b60006009546001146106d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60026009556000808080806106f087890189613700565b9450945094509450945060008060006107586008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092506000836dffffffffffffffffffffffffffff16116107d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f504f4f4c5f554e494e495449414c495a4544000000000000000000000000000060448201526064016106d0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610a395761085785846dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff16612ae6565b98506108857f00000000000000000000000000000000000000000000000000000000000000008a8989612b49565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b1906108c1908790600401613b3a565b600060405180830381600087803b1580156108db57600080fd5b505af11580156108ef573d6000803e3d6000fd5b505050506000806108fe612cef565b9150915086856dffffffffffffffffffffffffffff168303101561097e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e0000000000000000000060448201526064016106d0565b61098b8282878787612ec9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610a2a929190918252602082015260400190565b60405180910390a45050610cf7565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106d0565b610b1985836dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff16612ae6565b9850610b477f00000000000000000000000000000000000000000000000000000000000000008a8989612b49565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b190610b83908790600401613b3a565b600060405180830381600087803b158015610b9d57600080fd5b505af1158015610bb1573d6000803e3d6000fd5b50505050600080610bc0612cef565b9150915086846dffffffffffffffffffffffffffff1682031015610c40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e0000000000000000000060448201526064016106d0565b610c4d8282878787612ec9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610cec929190918252602082015260400190565b60405180910390a450505b505060016009555094979650505050505050565b6000806000610d696008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250909192565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ddc9086815260200190565b60405180910390a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610e8a5773ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915281208054849290610e84908490613c0f565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604081208054849290610ebf908490613c0f565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260016020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f279086815260200190565b60405180910390a35060019392505050565b6060600954600114610fa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106d0565b6002600955600080610fbb8486018661380f565b91509150600080600061101d6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b92509250925060008061102e612cef565b3060009081526001602052604081205492945090925061104e87876131a8565b50905060008161105e8685613bd2565b6110689190613b97565b90506000826110778686613bd2565b6110819190613b97565b905061108d308561328f565b6110b97f0000000000000000000000000000000000000000000000000000000000000000838d8d612b49565b6110e57f0000000000000000000000000000000000000000000000000000000000000000828d8d612b49565b818603955080850394506110fc86868b8b8b612ec9565b61110e6111098688613bd2565b613322565b6007556040805160028082526060820190925290816020015b6040805180820190915260008082526020820152815260200190600190039081611127579050509b5060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001838152508c6000815181106111ae576111ae613cbd565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001828152508c60018151811061121757611217613cbd565b60209081029190910181019190915260408051848152918201839052810185905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a35050600160095550979a9950505050505050505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146113c05750604080518082018252600e81527f5375736869204c5020546f6b656e00000000000000000000000000000000000060209182015281518083018352600181527f31000000000000000000000000000000000000000000000000000000000000009082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600080806113f584860186613844565b915091506000806114556008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b50915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156114e0576114d983836dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff166134a7565b94506115c3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e00000000000000000000000060448201526064016106d0565b6115c083826dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff166134a7565b94505b5050505092915050565b600060095460011461163b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106d0565b600260095560008080611650858701876136b9565b92509250925060008060006116b46008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092506000836dffffffffffffffffffffffffffff1611611734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f504f4f4c5f554e494e495449414c495a4544000000000000000000000000000060448201526064016106d0565b60008061173f612cef565b915091506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415611809577f00000000000000000000000000000000000000000000000000000000000000009050866dffffffffffffffffffffffffffff16840391506117fd82886dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff16612ae6565b9a508a83039250611925565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16146118be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106d0565b50506008546dffffffffffffffffffffffffffff6e01000000000000000000000000000090910481168203907f00000000000000000000000000000000000000000000000000000000000000009061191d908390888116908a16612ae6565b9a508a840393505b611931818c8b8b612b49565b61193e8484898989612ec9565b8073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062858f604051610cec929190918252602082015260400190565b600080600080600080611a1f6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b6040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526dffffffffffffffffffffffffffff851660248301526000604483015293965091945092507f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b158015611aed57600080fd5b505afa158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2591906139d3565b6040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526dffffffffffffffffffffffffffff85166024830152600060448301529197507f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b158015611bee57600080fd5b505afa158015611c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2691906139d3565b959690945092505050565b60408051600280825260608083018452926020830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110611c8557611c85613cbd565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611cf357611cf3613cbd565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b6000600954600114611d9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106d0565b60026009556000611db183850185613695565b90506000806000611e116008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250600080611e22612cef565b90925090506000611e366111098385613bd2565b90506000611e546dffffffffffffffffffffffffffff881685613c0f565b90506000611e726dffffffffffffffffffffffffffff881685613c0f565b9050600080611ea384848c6dffffffffffffffffffffffffffff168c6dffffffffffffffffffffffffffff16613512565b9092509050611eb2828b613b4d565b9950611ebe818a613b4d565b9850600080611ecd8c8c6131a8565b915091508160001415611f7057600086118015611eea5750600085115b611f50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f414d4f554e5453000000000000000000000000000000000060448201526064016106d0565b611f5c6103e888613c0f565b9d50611f6b60006103e8613615565b611f8c565b80870381611f7e8483613bd2565b611f889190613b97565b9e50505b8d611ff3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e54454400000060448201526064016106d0565b611ffd8d8f613615565b61200a89898e8e8e612ec9565b600787905560408051878152602081018790529081018f90528e9073ffffffffffffffffffffffffffffffffffffffff8f169033907ff9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e9060600160405180910390a350506001600955509a9d9c50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b1580156120ec57600080fd5b505afa158015612100573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212491906139d3565b600455565b6000808061213984860186613844565b915091506000806121996008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b50915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561221d576114d983836dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff16612ae6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146122d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106d0565b6115c083826dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff16612ae6565b3360009081526001602052604081208054839190839061231e908490613c0f565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ddc9086815260200190565b60006009546001146123f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106d0565b600260095560008080612405858701876136b9565b92509250925060008060006124696008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b30600090815260016020526040812054939650919450925061248b85856131a8565b5090506000816124ab6dffffffffffffffffffffffffffff881685613bd2565b6124b59190613b97565b90506000826124d46dffffffffffffffffffffffffffff881686613bd2565b6124de9190613b97565b90506125216124fd826dffffffffffffffffffffffffffff8916613c0f565b612517846dffffffffffffffffffffffffffff8b16613c0f565b6111099190613bd2565b60075561252e308561328f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614156125ea576125b18283896dffffffffffffffffffffffffffff160383896dffffffffffffffffffffffffffff1603612ae6565b016125de7f0000000000000000000000000000000000000000000000000000000000000000828b8b612b49565b809a5060009150612705565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161461269f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e00000000000000000000000060448201526064016106d0565b6126ce8182886dffffffffffffffffffffffffffff1603848a6dffffffffffffffffffffffffffff1603612ae6565b820191506126fe7f0000000000000000000000000000000000000000000000000000000000000000838b8b612b49565b5098508860005b600080612710612cef565b9150915061272182828b8b8b612ec9565b604080518581526020810185905290810187905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a35050600160095550989b9a5050505050505050505050565b428410156127fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016106d0565b6000612808611296565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c9290919061286383613c26565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016129049291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa15801561298d573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590612a0857508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612a6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e4154555245000000000000000060448201526064016106d0565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b600080612b137f000000000000000000000000000000000000000000000000000000000000000086613bd2565b905080612b2261271086613bd2565b612b2c9190613b7f565b612b368483613bd2565b612b409190613b97565b95945050505050565b8015612c32576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152306024830152838116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b158015612bf357600080fd5b505af1158015612c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2b91906139ec565b5050612ce9565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301528381166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401600060405180830381600087803b158015612cd057600080fd5b505af1158015612ce4573d6000803e3d6000fd5b505050505b50505050565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015230602483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063f7888aec9060440160206040518083038186803b158015612da157600080fd5b505afa158015612db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd991906139d3565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301529193507f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b158015612e8b57600080fd5b505afa158015612e9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec391906139d3565b90509091565b6dffffffffffffffffffffffffffff8511801590612ef557506dffffffffffffffffffffffffffff8411155b612f5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4f564552464c4f5700000000000000000000000000000000000000000000000060448201526064016106d0565b63ffffffff8116612fbd57600880546dffffffffffffffffffffffffffff8681166e010000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090921690881617179055613168565b4263ffffffff80821690831614801590612fe657506dffffffffffffffffffffffffffff841615155b801561300157506dffffffffffffffffffffffffffff831615155b156130c65781810360006dffffffffffffffffffffffffffff86167bffffffffffffffffffffffffffff0000000000000000000000000000607087901b168161304c5761304c613c8e565b600580549290910463ffffffff851681029092019055905060006dffffffffffffffffffffffffffff8616607088901b7bffffffffffffffffffffffffffff000000000000000000000000000016816130a7576130a7613c8e565b0490508263ffffffff1681026006600082825401925050819055505050505b6008805463ffffffff9092167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8881166e010000000000000000000000000000027fffffffff00000000000000000000000000000000000000000000000000000000909516908a161793909317929092169190911790555b60408051868152602081018690527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a15050505050565b600080546007549091908015613287576131d86111096dffffffffffffffffffffffffffff808716908816613bd2565b915080821115613287576004546000816131f28486613c0f565b6131fc9087613bd2565b6132069190613bd2565b905060006132148484613bd2565b8561322185612710613c0f565b61322b9190613bd2565b6132359190613b7f565b905060006132438284613b97565b90508015613282576132757f000000000000000000000000000000000000000000000000000000000000000082613615565b61327f8188613b7f565b96505b505050505b509250929050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812080548392906132c4908490613c0f565b909155505060008054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b60008161333157506000919050565b81600170010000000000000000000000000000000082106133575760809190911c9060401b5b6801000000000000000082106133725760409190911c9060201b5b64010000000082106133895760209190911c9060101b5b62010000821061339e5760109190911c9060081b5b61010082106133b25760089190911c9060041b5b601082106133c55760049190911c9060021b5b600882106133d15760011b5b60018185816133e2576133e2613c8e565b048201901c905060018185816133fa576133fa613c8e565b048201901c9050600181858161341257613412613c8e565b048201901c9050600181858161342a5761342a613c8e565b048201901c9050600181858161344257613442613c8e565b048201901c9050600181858161345a5761345a613c8e565b048201901c9050600181858161347257613472613c8e565b048201901c9050600081858161348a5761348a613c8e565b04905080821061349a578061349c565b815b93505050505b919050565b60007f00000000000000000000000000000000000000000000000000000000000000006134d48584613c0f565b6134de9190613bd2565b6127106134eb8686613bd2565b6134f59190613bd2565b6134ff9190613b97565b61350a906001613b7f565b949350505050565b600080831580613520575082155b156135305750600090508061360c565b60008461353d8589613bd2565b6135479190613b97565b90508581116135a25761355d6127106002613bd2565b6135678288613c0f565b613591907f0000000000000000000000000000000000000000000000000000000000000000613bd2565b61359b9190613b97565b915061360a565b6000846135af8789613bd2565b6135b99190613b97565b90506135c86127106002613bd2565b6135d2828a613c0f565b6135fc907f0000000000000000000000000000000000000000000000000000000000000000613bd2565b6136069190613b97565b9350505b505b94509492505050565b806000808282546136269190613b7f565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101613316565b803580151581146134a257600080fd5b6000602082840312156136a757600080fd5b81356136b281613d1b565b9392505050565b6000806000606084860312156136ce57600080fd5b83356136d981613d1b565b925060208401356136e981613d1b565b91506136f760408501613685565b90509250925092565b600080600080600060a0868803121561371857600080fd5b853561372381613d1b565b9450602086013561373381613d1b565b935061374160408701613685565b925060608601359150608086013567ffffffffffffffff8082111561376557600080fd5b818801915088601f83011261377957600080fd5b81358181111561378b5761378b613cec565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156137d1576137d1613cec565b816040528281528b60208487010111156137ea57600080fd5b8260208601602083013760006020848301015280955050505050509295509295909350565b6000806040838503121561382257600080fd5b823561382d81613d1b565b915061383b60208401613685565b90509250929050565b6000806040838503121561385757600080fd5b823561386281613d1b565b946020939093013593505050565b6000806040838503121561388357600080fd5b823561388e81613d1b565b9150602083013561389e81613d1b565b809150509250929050565b6000806000606084860312156138be57600080fd5b83356138c981613d1b565b925060208401356138d981613d1b565b929592945050506040919091013590565b600080600080600080600060e0888a03121561390557600080fd5b873561391081613d1b565b9650602088013561392081613d1b565b95506040880135945060608801359350608088013560ff8116811461394457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806020838503121561397457600080fd5b823567ffffffffffffffff8082111561398c57600080fd5b818501915085601f8301126139a057600080fd5b8135818111156139af57600080fd5b8660208285010111156139c157600080fd5b60209290920196919550909350505050565b6000602082840312156139e557600080fd5b5051919050565b600080604083850312156139ff57600080fd5b505080516020909101519092909150565b6000815180845260005b81811015613a3657602081850181015186830182015201613a1a565b81811115613a48576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020808252825182820181905260009190848201906040850190845b81811015613ac957835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613a97565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015613b2d578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101613af2565b5091979650505050505050565b6020815260006136b26020830184613a10565b60006dffffffffffffffffffffffffffff808316818516808303821115613b7657613b76613c5f565b01949350505050565b60008219821115613b9257613b92613c5f565b500190565b600082613bcd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c0a57613c0a613c5f565b500290565b600082821015613c2157613c21613c5f565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c5857613c58613c5f565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114613d3d57600080fd5b5056fea2646970667358221220bb078510fffdf67ed7dc18a1522f433526c7a6cfd9a607fd03877e6111685ff464736f6c63430008070033",
              "opcodes": "PUSH2 0x1A0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x45AB CODESIZE SUB DUP1 PUSH3 0x45AB DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x56A JUMP JUMPDEST CHAINID PUSH1 0x80 MSTORE PUSH3 0x112 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x29BAB9B434902628102A37B5B2B7 PUSH1 0x91 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP6 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x135 SWAP2 SWAP1 PUSH3 0x50A JUMP JUMPDEST SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x18A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A45524F5F41444452455353 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x1EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4944454E544943414C5F41444452455353455300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ ISZERO PUSH3 0x239 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FAA27A5A2A7 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ ISZERO PUSH3 0x284 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FAA27A5A2A7 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST PUSH2 0x2710 DUP3 GT ISZERO PUSH3 0x2CB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x494E56414C49445F535741505F464545 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 DUP2 SHL DUP3 AND PUSH2 0x160 MSTORE DUP5 SWAP1 SHL AND PUSH2 0x180 MSTORE PUSH1 0xC0 DUP3 SWAP1 MSTORE PUSH2 0x2710 DUP3 SWAP1 SUB PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x60A56C01 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0xC14AD802 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x34B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x371 SWAP2 SWAP1 PUSH3 0x65B JUMP JUMPDEST PUSH1 0x4 DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0A0CD2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x3EC SWAP2 SWAP1 PUSH3 0x4E3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x100 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4DA31827 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x458 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x47E SWAP2 SWAP1 PUSH3 0x4E3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH2 0x120 MSTORE SWAP1 DUP7 SWAP1 SHL AND PUSH2 0x140 MSTORE PUSH1 0x1 PUSH1 0x9 SSTORE DUP1 ISZERO PUSH3 0x4C5 JUMPI PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0xE0 SHL TIMESTAMP PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP PUSH3 0x6A4 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x4DE DUP2 PUSH3 0x68B JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x503 DUP2 PUSH3 0x68B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH3 0x52E DUP2 PUSH3 0x68B JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH3 0x541 DUP2 PUSH3 0x68B JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x55F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x5AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x5C0 JUMPI PUSH3 0x5C0 PUSH3 0x675 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x5EB JUMPI PUSH3 0x5EB PUSH3 0x675 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE PUSH1 0x20 SWAP4 POP DUP9 DUP5 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP3 DUP3 LT ISZERO PUSH3 0x62C JUMPI DUP5 DUP3 ADD DUP5 ADD MLOAD DUP2 DUP4 ADD DUP6 ADD MSTORE SWAP1 DUP4 ADD SWAP1 PUSH3 0x60D JUMP JUMPDEST DUP3 DUP3 GT ISZERO PUSH3 0x63E JUMPI PUSH1 0x0 DUP5 DUP5 DUP4 ADD ADD MSTORE JUMPDEST SWAP6 POP PUSH3 0x650 SWAP2 POP POP DUP6 DUP3 ADD PUSH3 0x4D1 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x66E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x160 MLOAD PUSH1 0x60 SHR PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x3D76 PUSH3 0x835 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x606 ADD MSTORE DUP2 DUP2 PUSH2 0x85E ADD MSTORE DUP2 DUP2 PUSH2 0x98D ADD MSTORE DUP2 DUP2 PUSH2 0xA3B ADD MSTORE DUP2 DUP2 PUSH2 0x10BE ADD MSTORE DUP2 DUP2 PUSH2 0x11C6 ADD MSTORE DUP2 DUP2 PUSH2 0x145C ADD MSTORE DUP2 DUP2 PUSH2 0x179C ADD MSTORE DUP2 DUP2 PUSH2 0x180B ADD MSTORE DUP2 DUP2 PUSH2 0x1B62 ADD MSTORE DUP2 DUP2 PUSH2 0x1CC1 ADD MSTORE DUP2 DUP2 PUSH2 0x221F ADD MSTORE DUP2 DUP2 PUSH2 0x2530 ADD MSTORE DUP2 DUP2 PUSH2 0x25B7 ADD MSTORE PUSH2 0x2E16 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x364 ADD MSTORE DUP2 DUP2 PUSH2 0x7DA ADD MSTORE DUP2 DUP2 PUSH2 0xB20 ADD MSTORE DUP2 DUP2 PUSH2 0xC4F ADD MSTORE DUP2 DUP2 PUSH2 0x1092 ADD MSTORE DUP2 DUP2 PUSH2 0x115D ADD MSTORE DUP2 DUP2 PUSH2 0x14E2 ADD MSTORE DUP2 DUP2 PUSH2 0x1748 ADD MSTORE DUP2 DUP2 PUSH2 0x18EC ADD MSTORE DUP2 DUP2 PUSH2 0x1A5C ADD MSTORE DUP2 DUP2 PUSH2 0x1C53 ADD MSTORE DUP2 DUP2 PUSH2 0x21A0 ADD MSTORE DUP2 DUP2 PUSH2 0x25EC ADD MSTORE DUP2 DUP2 PUSH2 0x26D7 ADD MSTORE PUSH2 0x2D2C ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x5DF ADD MSTORE PUSH2 0x2088 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x423 ADD MSTORE DUP2 DUP2 PUSH2 0x1AA9 ADD MSTORE DUP2 DUP2 PUSH2 0x1BAA ADD MSTORE DUP2 DUP2 PUSH2 0x2BB0 ADD MSTORE DUP2 DUP2 PUSH2 0x2C8C ADD MSTORE DUP2 DUP2 PUSH2 0x2D5F ADD MSTORE PUSH2 0x2E47 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x318 ADD MSTORE PUSH2 0x3250 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x2AEE ADD MSTORE PUSH2 0x34AB ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x44A ADD MSTORE DUP2 DUP2 PUSH2 0x356D ADD MSTORE PUSH2 0x35D8 ADD MSTORE PUSH1 0x0 PUSH2 0x13C3 ADD MSTORE PUSH1 0x0 PUSH2 0x129A ADD MSTORE PUSH2 0x3D76 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x241 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x627DD56A GT PUSH2 0x145 JUMPI DUP1 PUSH4 0xA69840A8 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xC14AD802 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x601 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x628 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x63B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x5D1 JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x571 JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x598 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5AB JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x5BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7464FC3D GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x50B JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x52B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x535 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x4EF JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x4F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x627DD56A EQ PUSH2 0x47E JUMPI DUP1 PUSH4 0x65DFC767 EQ PUSH2 0x491 JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x54CF2AEB GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x445 JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x40B JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x41E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x3A2 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x214 JUMPI DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x313 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x35F JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2B5 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2F0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x259 PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x666 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x3B3A JUMP JUMPDEST PUSH2 0x2BD PUSH2 0xD0B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x303 PUSH2 0x2FE CALLDATASIZE PUSH1 0x4 PUSH2 0x3844 JUMP JUMPDEST PUSH2 0xD74 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x303 PUSH2 0x39D CALLDATASIZE PUSH1 0x4 PUSH2 0x38A9 JUMP JUMPDEST PUSH2 0xDED JUMP JUMPDEST PUSH2 0x3B5 PUSH2 0x3B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0xF39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x3AD5 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x3F1 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x1296 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x419 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x13E5 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x48C CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x15CD JUMP JUMPDEST PUSH2 0x499 PUSH2 0x19BD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH4 0xFFFFFFFF AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x4C2 PUSH2 0x1C31 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x3A7B JUMP JUMPDEST PUSH2 0x259 PUSH2 0x4DD CALLDATASIZE PUSH1 0x4 PUSH2 0x3695 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x506 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x1D30 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x519 CALLDATASIZE PUSH1 0x4 PUSH2 0x3695 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x533 PUSH2 0x2086 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x54726964656E743A436F6E7374616E7450726F64756374000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x5A6 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x2129 JUMP JUMPDEST PUSH2 0x303 PUSH2 0x5B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3844 JUMP JUMPDEST PUSH2 0x22FD JUMP JUMPDEST PUSH2 0x259 PUSH2 0x5CC CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x2382 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x533 PUSH2 0x636 CALLDATASIZE PUSH1 0x4 PUSH2 0x38EA JUMP JUMPDEST PUSH2 0x2794 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x649 CALLDATASIZE PUSH1 0x4 PUSH2 0x3870 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x6D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x6F0 DUP8 DUP10 ADD DUP10 PUSH2 0x3700 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x758 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0x7D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C5F554E494E495449414C495A45440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xA39 JUMPI PUSH2 0x857 DUP6 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST SWAP9 POP PUSH2 0x885 PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x2B49 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x8C1 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3B3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 PUSH2 0x8FE PUSH2 0x2CEF JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 SUB LT ISZERO PUSH2 0x97E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x98B DUP3 DUP3 DUP8 DUP8 DUP8 PUSH2 0x2EC9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP11 DUP16 PUSH1 0x40 MLOAD PUSH2 0xA2A SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH2 0xCF7 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xAEE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0xB19 DUP6 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST SWAP9 POP PUSH2 0xB47 PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x2B49 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0xB83 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3B3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 PUSH2 0xBC0 PUSH2 0x2CEF JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 SUB LT ISZERO PUSH2 0xC40 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0xC4D DUP3 DUP3 DUP8 DUP8 DUP8 PUSH2 0x2EC9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP11 DUP16 PUSH1 0x40 MLOAD PUSH2 0xCEC SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xD69 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xDDC SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xE8A JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xE84 SWAP1 DUP5 SWAP1 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xEBF SWAP1 DUP5 SWAP1 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xF27 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0xFA7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 PUSH2 0xFBB DUP5 DUP7 ADD DUP7 PUSH2 0x380F JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x101D PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x102E PUSH2 0x2CEF JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH2 0x104E DUP8 DUP8 PUSH2 0x31A8 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x105E DUP7 DUP6 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x1068 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x1077 DUP7 DUP7 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x1081 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH2 0x108D ADDRESS DUP6 PUSH2 0x328F JUMP JUMPDEST PUSH2 0x10B9 PUSH32 0x0 DUP4 DUP14 DUP14 PUSH2 0x2B49 JUMP JUMPDEST PUSH2 0x10E5 PUSH32 0x0 DUP3 DUP14 DUP14 PUSH2 0x2B49 JUMP JUMPDEST DUP2 DUP7 SUB SWAP6 POP DUP1 DUP6 SUB SWAP5 POP PUSH2 0x10FC DUP7 DUP7 DUP12 DUP12 DUP12 PUSH2 0x2EC9 JUMP JUMPDEST PUSH2 0x110E PUSH2 0x1109 DUP7 DUP9 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3322 JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1127 JUMPI SWAP1 POP POP SWAP12 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP13 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x11AE JUMPI PUSH2 0x11AE PUSH2 0x3CBD JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP13 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1217 JUMPI PUSH2 0x1217 PUSH2 0x3CBD JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP2 DUP3 ADD DUP4 SWAP1 MSTORE DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP8 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x13C0 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x13F5 DUP5 DUP7 ADD DUP7 PUSH2 0x3844 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1455 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x14E0 JUMPI PUSH2 0x14D9 DUP4 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x34A7 JUMP JUMPDEST SWAP5 POP PUSH2 0x15C3 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1595 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x15C0 DUP4 DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x34A7 JUMP JUMPDEST SWAP5 POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x163B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x1650 DUP6 DUP8 ADD DUP8 PUSH2 0x36B9 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x16B4 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0x1734 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C5F554E494E495449414C495A45440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x173F PUSH2 0x2CEF JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1809 JUMPI PUSH32 0x0 SWAP1 POP DUP7 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 SUB SWAP2 POP PUSH2 0x17FD DUP3 DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST SWAP11 POP DUP11 DUP4 SUB SWAP3 POP PUSH2 0x1925 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x18BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST POP POP PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH15 0x10000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 AND DUP3 SUB SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x191D SWAP1 DUP4 SWAP1 DUP9 DUP2 AND SWAP1 DUP11 AND PUSH2 0x2AE6 JUMP JUMPDEST SWAP11 POP DUP11 DUP5 SUB SWAP4 POP JUMPDEST PUSH2 0x1931 DUP2 DUP13 DUP12 DUP12 PUSH2 0x2B49 JUMP JUMPDEST PUSH2 0x193E DUP5 DUP5 DUP10 DUP10 DUP10 PUSH2 0x2EC9 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP6 DUP16 PUSH1 0x40 MLOAD PUSH2 0xCEC SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1A1F PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B25 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE SWAP2 SWAP8 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C02 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C26 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST SWAP6 SWAP7 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1C85 JUMPI PUSH2 0x1C85 PUSH2 0x3CBD JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1CF3 JUMPI PUSH2 0x1CF3 PUSH2 0x3CBD JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x1D9E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 PUSH2 0x1DB1 DUP4 DUP6 ADD DUP6 PUSH2 0x3695 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1E11 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x1E22 PUSH2 0x2CEF JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x1E36 PUSH2 0x1109 DUP4 DUP6 PUSH2 0x3BD2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E54 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E72 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1EA3 DUP5 DUP5 DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3512 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1EB2 DUP3 DUP12 PUSH2 0x3B4D JUMP JUMPDEST SWAP10 POP PUSH2 0x1EBE DUP2 DUP11 PUSH2 0x3B4D JUMP JUMPDEST SWAP9 POP PUSH1 0x0 DUP1 PUSH2 0x1ECD DUP13 DUP13 PUSH2 0x31A8 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ ISZERO PUSH2 0x1F70 JUMPI PUSH1 0x0 DUP7 GT DUP1 ISZERO PUSH2 0x1EEA JUMPI POP PUSH1 0x0 DUP6 GT JUMPDEST PUSH2 0x1F50 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F414D4F554E54530000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x1F5C PUSH2 0x3E8 DUP9 PUSH2 0x3C0F JUMP JUMPDEST SWAP14 POP PUSH2 0x1F6B PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x3615 JUMP JUMPDEST PUSH2 0x1F8C JUMP JUMPDEST DUP1 DUP8 SUB DUP2 PUSH2 0x1F7E DUP5 DUP4 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x1F88 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP15 POP POP JUMPDEST DUP14 PUSH2 0x1FF3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F4C49515549444954595F4D494E544544000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x1FFD DUP14 DUP16 PUSH2 0x3615 JUMP JUMPDEST PUSH2 0x200A DUP10 DUP10 DUP15 DUP15 DUP15 PUSH2 0x2EC9 JUMP JUMPDEST PUSH1 0x7 DUP8 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 DUP2 ADD DUP16 SWAP1 MSTORE DUP15 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP1 CALLER SWAP1 PUSH32 0xF9C32FBC56FF04F32A233EBC26E388564223745E28ABD8D0781DD906537F563E SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP11 SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2100 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2124 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x2139 DUP5 DUP7 ADD DUP7 PUSH2 0x3844 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x2199 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x221D JUMPI PUSH2 0x14D9 DUP4 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x22D2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x15C0 DUP4 DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP4 SWAP1 PUSH2 0x231E SWAP1 DUP5 SWAP1 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xDDC SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x23F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x2405 DUP6 DUP8 ADD DUP8 PUSH2 0x36B9 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2469 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x248B DUP6 DUP6 PUSH2 0x31A8 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x24AB PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x24B5 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x24D4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP7 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x24DE SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH2 0x2521 PUSH2 0x24FD DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x2517 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x1109 SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH2 0x252E ADDRESS DUP6 PUSH2 0x328F JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x25EA JUMPI PUSH2 0x25B1 DUP3 DUP4 DUP10 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 DUP10 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2AE6 JUMP JUMPDEST ADD PUSH2 0x25DE PUSH32 0x0 DUP3 DUP12 DUP12 PUSH2 0x2B49 JUMP JUMPDEST DUP1 SWAP11 POP PUSH1 0x0 SWAP2 POP PUSH2 0x2705 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x269F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x26CE DUP2 DUP3 DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP5 DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2AE6 JUMP JUMPDEST DUP3 ADD SWAP2 POP PUSH2 0x26FE PUSH32 0x0 DUP4 DUP12 DUP12 PUSH2 0x2B49 JUMP JUMPDEST POP SWAP9 POP DUP9 PUSH1 0x0 JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2710 PUSH2 0x2CEF JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2721 DUP3 DUP3 DUP12 DUP12 DUP12 PUSH2 0x2EC9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP9 SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x27FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2808 PUSH2 0x1296 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP3 DUP13 SWAP3 DUP13 SWAP3 DUP13 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x2863 DUP4 PUSH2 0x3C26 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2904 SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x298D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2A08 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2A6E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2B13 PUSH32 0x0 DUP7 PUSH2 0x3BD2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2B22 PUSH2 0x2710 DUP7 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x2B2C SWAP2 SWAP1 PUSH2 0x3B7F JUMP JUMPDEST PUSH2 0x2B36 DUP5 DUP4 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x2B40 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2C32 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C07 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C2B SWAP2 SWAP1 PUSH2 0x39EC JUMP JUMPDEST POP POP PUSH2 0x2CE9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CE4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DB5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DD9 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E9F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EC3 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST SWAP1 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 GT DUP1 ISZERO SWAP1 PUSH2 0x2EF5 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT ISZERO JUMPDEST PUSH2 0x2F5B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564552464C4F57000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x2FBD JUMPI PUSH1 0x8 DUP1 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH15 0x10000000000000000000000000000 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP1 DUP9 AND OR OR SWAP1 SSTORE PUSH2 0x3168 JUMP JUMPDEST TIMESTAMP PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP1 DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2FE6 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3001 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x30C6 JUMPI DUP2 DUP2 SUB PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 PUSH1 0x70 DUP8 SWAP1 SHL AND DUP2 PUSH2 0x304C JUMPI PUSH2 0x304C PUSH2 0x3C8E JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF DUP6 AND DUP2 MUL SWAP1 SWAP3 ADD SWAP1 SSTORE SWAP1 POP PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x70 DUP9 SWAP1 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND DUP2 PUSH2 0x30A7 JUMPI PUSH2 0x30A7 PUSH2 0x3C8E JUMP JUMPDEST DIV SWAP1 POP DUP3 PUSH4 0xFFFFFFFF AND DUP2 MUL PUSH1 0x6 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH15 0x10000000000000000000000000000 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP1 DUP11 AND OR SWAP4 SWAP1 SWAP4 OR SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH32 0xCF2AA50876CDFBB541206F89AF0EE78D44A2ABF8D328E37FA4917F982149848A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x7 SLOAD SWAP1 SWAP2 SWAP1 DUP1 ISZERO PUSH2 0x3287 JUMPI PUSH2 0x31D8 PUSH2 0x1109 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND SWAP1 DUP9 AND PUSH2 0x3BD2 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3287 JUMPI PUSH1 0x4 SLOAD PUSH1 0x0 DUP2 PUSH2 0x31F2 DUP5 DUP7 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x31FC SWAP1 DUP8 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3206 SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3214 DUP5 DUP5 PUSH2 0x3BD2 JUMP JUMPDEST DUP6 PUSH2 0x3221 DUP6 PUSH2 0x2710 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x322B SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3235 SWAP2 SWAP1 PUSH2 0x3B7F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3243 DUP3 DUP5 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3282 JUMPI PUSH2 0x3275 PUSH32 0x0 DUP3 PUSH2 0x3615 JUMP JUMPDEST PUSH2 0x327F DUP2 DUP9 PUSH2 0x3B7F JUMP JUMPDEST SWAP7 POP JUMPDEST POP POP POP POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x32C4 SWAP1 DUP5 SWAP1 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP1 SLOAD DUP3 SWAP1 SUB DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x3331 JUMPI POP PUSH1 0x0 SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x3357 JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x3372 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x3389 JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x339E JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x33B2 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x33C5 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0x33D1 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x33E2 JUMPI PUSH2 0x33E2 PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x33FA JUMPI PUSH2 0x33FA PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3412 JUMPI PUSH2 0x3412 PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x342A JUMPI PUSH2 0x342A PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3442 JUMPI PUSH2 0x3442 PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x345A JUMPI PUSH2 0x345A PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3472 JUMPI PUSH2 0x3472 PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x348A JUMPI PUSH2 0x348A PUSH2 0x3C8E JUMP JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x349A JUMPI DUP1 PUSH2 0x349C JUMP JUMPDEST DUP2 JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH2 0x34D4 DUP6 DUP5 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x34DE SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x2710 PUSH2 0x34EB DUP7 DUP7 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x34F5 SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x34FF SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST PUSH2 0x350A SWAP1 PUSH1 0x1 PUSH2 0x3B7F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 ISZERO DUP1 PUSH2 0x3520 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x3530 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x360C JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x353D DUP6 DUP10 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3547 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 GT PUSH2 0x35A2 JUMPI PUSH2 0x355D PUSH2 0x2710 PUSH1 0x2 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3567 DUP3 DUP9 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x3591 SWAP1 PUSH32 0x0 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x359B SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP2 POP PUSH2 0x360A JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x35AF DUP8 DUP10 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x35B9 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH2 0x35C8 PUSH2 0x2710 PUSH1 0x2 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x35D2 DUP3 DUP11 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x35FC SWAP1 PUSH32 0x0 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3606 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP4 POP POP JUMPDEST POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0x3626 SWAP2 SWAP1 PUSH2 0x3B7F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x3316 JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x34A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x36A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x36B2 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x36CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x36D9 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x36E9 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP2 POP PUSH2 0x36F7 PUSH1 0x40 DUP6 ADD PUSH2 0x3685 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3723 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3733 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP4 POP PUSH2 0x3741 PUSH1 0x40 DUP8 ADD PUSH2 0x3685 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x378B JUMPI PUSH2 0x378B PUSH2 0x3CEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x37D1 JUMPI PUSH2 0x37D1 PUSH2 0x3CEC JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP12 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x37EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3822 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x382D DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP2 POP PUSH2 0x383B PUSH1 0x20 DUP5 ADD PUSH2 0x3685 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3857 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3862 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3883 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x388E DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x389E DUP2 PUSH2 0x3D1B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x38BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x38C9 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x38D9 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3905 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x3910 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x3920 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3944 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3974 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x398C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x39A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x39AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x39C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x39E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3A36 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x3A1A JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x3A48 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3AC9 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3A97 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3B2D JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3AF2 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x36B2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3A10 JUMP JUMPDEST PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x3B76 JUMPI PUSH2 0x3B76 PUSH2 0x3C5F JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3B92 JUMPI PUSH2 0x3B92 PUSH2 0x3C5F JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3BCD JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3C0A JUMPI PUSH2 0x3C0A PUSH2 0x3C5F JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3C21 JUMPI PUSH2 0x3C21 PUSH2 0x3C5F JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x3C58 JUMPI PUSH2 0x3C58 PUSH2 0x3C5F JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3D3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB SMOD DUP6 LT SELFDESTRUCT REVERT 0xF6 PUSH31 0xD7DC18A1522F433526C7A6CFD9A607FD03877E6111685FF464736F6C634300 ADDMOD SMOD STOP CALLER ",
              "sourceMap": "576:17477:38:-:0;;;1932:1222;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1490:13:45;1462:41;;;;1866:4;;;;;;;;;;;-1:-1:-1;1866:4:45;;;;;1900:10;;;;;;;;;;-1:-1:-1;1900:10:45;;;;1709:278;;1737:95;1709:278;;;2669:25:64;1850:22:45;2710:18:64;;;2703:34;1890:21:45;2753:18:64;;;2746:34;2796:18;;;2789:34;;;;1968:4:45;2839:19:64;;;;2832:61;;;;1709:278:45;;;;;;;;;;2641:19:64;;;;1709:278:45;;1686:311;;;;;1513:47;;;;;;2006:15:38;2023;2040:16;2058:17;2103:11;2079:92;;;;;;;;;;;;:::i;:::-;2005:166;;-1:-1:-1;2005:166:38;;-1:-1:-1;2005:166:38;-1:-1:-1;2005:166:38;-1:-1:-1;;2250:21:38;;2242:46;;;;-1:-1:-1;2242:46:38;;3448:2:64;2242:46:38;;;3430:21:64;3487:2;3467:18;;;3460:30;-1:-1:-1;3506:18:64;;;3499:42;3558:18;;2242:46:38;;;;;;;;;-1:-1:-1;2306:18:38;;;;;;;;2298:50;;;;-1:-1:-1;2298:50:38;;3789:2:64;2298:50:38;;;3771:21:64;3828:2;3808:18;;;3801:30;3867:21;3847:18;;;3840:49;3906:18;;2298:50:38;3587:343:64;2298:50:38;2385:4;-1:-1:-1;2366:24:38;;;;2358:50;;;;-1:-1:-1;2358:50:38;;3106:2:64;2358:50:38;;;3088:21:64;3145:2;3125:18;;;3118:30;-1:-1:-1;3164:18:64;;;3157:43;3217:18;;2358:50:38;2904:337:64;2358:50:38;2445:4;-1:-1:-1;2426:24:38;;;;2418:50;;;;-1:-1:-1;2418:50:38;;3106:2:64;2418:50:38;;;3088:21:64;3145:2;3125:18;;;3118:30;-1:-1:-1;3164:18:64;;;3157:43;3217:18;;2418:50:38;2904:337:64;2418:50:38;1065:5;2486:8;:19;;2478:48;;;;-1:-1:-1;2478:48:38;;4137:2:64;2478:48:38;;;4119:21:64;4176:2;4156:18;;;4149:30;-1:-1:-1;4195:18:64;;;4188:46;4251:18;;2478:48:38;3935:340:64;2478:48:38;-1:-1:-1;;2537:16:38;;;;;;;2563;;;;;;2589:18;;;;1065:5;2766:18;;;2741:43;;2813:41;;;-1:-1:-1;2813:41:38;;;;-1:-1:-1;2813:39:38;;;;;:41;;;;;;;;;;;;;;:39;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2804:6;:50;;;;2891:15;-1:-1:-1;;;;;2875:41:38;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2864:54;;;;;;2953:40;;;;;;;;-1:-1:-1;2953:38:38;;;;;:40;;;;;;;;;;;;;;:38;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;2928:66:38;;;;;;;3004:49;;;;;;;-1:-1:-1;3063:8:38;:12;3085:62;;;;3103:18;:44;;-1:-1:-1;3103:44:38;-1:-1:-1;3131:15:38;3103:44;;;;;;3085:62;1995:1159;;;;1932:1222;;576:17477;;14:138:64;93:13;;115:31;93:13;115:31;:::i;:::-;14:138;;;:::o;157:251::-;227:6;280:2;268:9;259:7;255:23;251:32;248:52;;;296:1;293;286:12;248:52;328:9;322:16;347:31;372:5;347:31;:::i;:::-;397:5;157:251;-1:-1:-1;;;157:251:64:o;413:625::-;523:6;531;539;547;600:3;588:9;579:7;575:23;571:33;568:53;;;617:1;614;607:12;568:53;649:9;643:16;668:31;693:5;668:31;:::i;:::-;768:2;753:18;;747:25;718:5;;-1:-1:-1;781:33:64;747:25;781:33;:::i;:::-;880:2;865:18;;859:25;929:2;914:18;;908:25;833:7;;-1:-1:-1;859:25:64;-1:-1:-1;971:15:64;;964:23;952:36;;942:64;;1002:1;999;992:12;942:64;413:625;;;;-1:-1:-1;413:625:64;;-1:-1:-1;;413:625:64:o;1043:1173::-;1131:6;1139;1192:2;1180:9;1171:7;1167:23;1163:32;1160:52;;;1208:1;1205;1198:12;1160:52;1235:16;;-1:-1:-1;1300:14:64;;;1297:34;;;1327:1;1324;1317:12;1297:34;1365:6;1354:9;1350:22;1340:32;;1410:7;1403:4;1399:2;1395:13;1391:27;1381:55;;1432:1;1429;1422:12;1381:55;1461:2;1455:9;1483:2;1479;1476:10;1473:36;;;1489:18;;:::i;:::-;1564:2;1558:9;1532:2;1618:13;;-1:-1:-1;;1614:22:64;;;1638:2;1610:31;1606:40;1594:53;;;1662:18;;;1682:22;;;1659:46;1656:72;;;1708:18;;:::i;:::-;1748:10;1744:2;1737:22;1783:2;1775:6;1768:18;1805:4;1795:14;;1846:7;1841:2;1836;1832;1828:11;1824:20;1821:33;1818:53;;;1867:1;1864;1857:12;1818:53;1889:1;1880:10;;1899:129;1913:2;1910:1;1907:9;1899:129;;;2001:10;;;1997:19;;1991:26;1970:14;;;1966:23;;1959:59;1924:10;;;;1899:129;;;2046:2;2043:1;2040:9;2037:80;;;2105:1;2100:2;2095;2087:6;2083:15;2079:24;2072:35;2037:80;2136:6;-1:-1:-1;2161:49:64;;-1:-1:-1;;2191:18:64;;;2161:49;:::i;:::-;2151:59;;;;1043:1173;;;;;:::o;2221:184::-;2291:6;2344:2;2332:9;2323:7;2319:23;2315:32;2312:52;;;2360:1;2357;2350:12;2312:52;-1:-1:-1;2383:16:64;;2221:184;-1:-1:-1;2221:184:64:o;4280:127::-;4341:10;4336:3;4332:20;4329:1;4322:31;4372:4;4369:1;4362:15;4396:4;4393:1;4386:15;4412:131;-1:-1:-1;4487:31:64;;4477:42;;4467:70;;4533:1;4530;4523:12;4467:70;4412:131;:::o;:::-;576:17477:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@DOMAIN_SEPARATOR_12013": {
                  "entryPoint": 4758,
                  "id": 12013,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@PERMIT_TYPEHASH_11941": {
                  "entryPoint": null,
                  "id": 11941,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_balance_7054": {
                  "entryPoint": 11503,
                  "id": 7054,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@_burn_12278": {
                  "entryPoint": 12943,
                  "id": 12278,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_calculateDomainSeparator_11995": {
                  "entryPoint": null,
                  "id": 11995,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_getAmountIn_7347": {
                  "entryPoint": 13479,
                  "id": 7347,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@_getAmountOut_7316": {
                  "entryPoint": 10982,
                  "id": 7316,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@_getReserves_7024": {
                  "entryPoint": null,
                  "id": 7024,
                  "parameterSlots": 0,
                  "returnSlots": 3
                },
                "@_mintFee_7284": {
                  "entryPoint": 12712,
                  "id": 7284,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@_mint_12250": {
                  "entryPoint": 13845,
                  "id": 12250,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_nonOptimalMintFee_7471": {
                  "entryPoint": 13586,
                  "id": 7471,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "@_transfer_7388": {
                  "entryPoint": 11081,
                  "id": 7388,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_update_7194": {
                  "entryPoint": 11977,
                  "id": 7194,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@allowance_11929": {
                  "entryPoint": null,
                  "id": 11929,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@approve_12042": {
                  "entryPoint": 3444,
                  "id": 12042,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@balanceOf_11922": {
                  "entryPoint": null,
                  "id": 11922,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@barFeeTo_5947": {
                  "entryPoint": null,
                  "id": 5947,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@barFee_5959": {
                  "entryPoint": null,
                  "id": 5959,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@bento_5950": {
                  "entryPoint": null,
                  "id": 5950,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@burnSingle_6671": {
                  "entryPoint": 9090,
                  "id": 6671,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@burn_6483": {
                  "entryPoint": 3897,
                  "id": 6483,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@decimals_11915": {
                  "entryPoint": null,
                  "id": 11915,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@flashSwap_6989": {
                  "entryPoint": 1638,
                  "id": 6989,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAmountIn_7617": {
                  "entryPoint": 5093,
                  "id": 7617,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAmountOut_7558": {
                  "entryPoint": 8489,
                  "id": 7558,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAssets_7499": {
                  "entryPoint": 7217,
                  "id": 7499,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@getNativeReserves_7673": {
                  "entryPoint": 6589,
                  "id": 7673,
                  "parameterSlots": 0,
                  "returnSlots": 3
                },
                "@getReserves_7631": {
                  "entryPoint": 3339,
                  "id": 7631,
                  "parameterSlots": 0,
                  "returnSlots": 3
                },
                "@kLast_5965": {
                  "entryPoint": null,
                  "id": 5965,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@masterDeployer_5953": {
                  "entryPoint": null,
                  "id": 5953,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@mint_6315": {
                  "entryPoint": 7472,
                  "id": 6315,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@name_11909": {
                  "entryPoint": null,
                  "id": 11909,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@nonces_11946": {
                  "entryPoint": null,
                  "id": 11946,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@permit_12222": {
                  "entryPoint": 10132,
                  "id": 12222,
                  "parameterSlots": 7,
                  "returnSlots": 0
                },
                "@poolIdentifier_5975": {
                  "entryPoint": null,
                  "id": 5975,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@price0CumulativeLast_5961": {
                  "entryPoint": null,
                  "id": 5961,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@price1CumulativeLast_5963": {
                  "entryPoint": null,
                  "id": 5963,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@sqrt_3138": {
                  "entryPoint": 13090,
                  "id": 3138,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@swapFee_5943": {
                  "entryPoint": null,
                  "id": 5943,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@swap_6811": {
                  "entryPoint": 5581,
                  "id": 6811,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@symbol_11912": {
                  "entryPoint": null,
                  "id": 11912,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@token0_5955": {
                  "entryPoint": null,
                  "id": 5955,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@token1_5957": {
                  "entryPoint": null,
                  "id": 5957,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@totalSupply_11917": {
                  "entryPoint": null,
                  "id": 11917,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@transferFrom_12133": {
                  "entryPoint": 3565,
                  "id": 12133,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@transfer_12076": {
                  "entryPoint": 8957,
                  "id": 12076,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@updateBarFee_7002": {
                  "entryPoint": 8326,
                  "id": 7002,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_bool": {
                  "entryPoint": 13957,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 13973,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payable": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_bool": {
                  "entryPoint": 14009,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_boolt_uint256t_bytes_memory_ptr": {
                  "entryPoint": 14080,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_address_payablet_bool": {
                  "entryPoint": 14351,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_address_payablet_uint256": {
                  "entryPoint": 14404,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 14448,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 14505,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32": {
                  "entryPoint": 14570,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 7
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes_calldata_ptr": {
                  "entryPoint": 14689,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 14803,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_uint256_fromMemory": {
                  "entryPoint": 14828,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_bytes": {
                  "entryPoint": 14864,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint112_t_bool__to_t_address_t_uint256_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14971,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 15061,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 15162,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_367fa6588260d42fbdfeaa882c8e665dba6ef7b9ada04c67c61530ffc1768fee__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7e6e8c13ba2f1d0f0273f8e22d59ed43b72e50c3f6c54bb315c74036cac1301c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint112_t_uint112_t_uint32__to_t_uint112_t_uint112_t_uint32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256_t_uint32__to_t_uint256_t_uint256_t_uint32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint112": {
                  "entryPoint": 15181,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 15231,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 15255,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 15314,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 15375,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 15398,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 15455,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": 15502,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 15549,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 15596,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 15643,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:21009:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "60:114:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "70:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "92:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "79:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "79:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "70:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "152:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "161:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "164:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "154:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "154:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "154:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "121:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "142:5:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "135:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "135:13:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "128:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "128:21:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "118:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "118:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "111:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "111:40:64"
                              },
                              "nodeType": "YulIf",
                              "src": "108:60:64"
                            }
                          ]
                        },
                        "name": "abi_decode_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "39:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "50:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:160:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "249:177:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "295:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "304:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "307:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "297:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "297:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "297:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "270:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "279:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "266:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "266:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "291:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "262:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "262:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "259:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "320:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "346:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "333:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "333:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "324:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "390:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "365:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "365:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "365:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "405:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "415:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "405:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "215:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "226:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "238:6:64",
                            "type": ""
                          }
                        ],
                        "src": "179:247:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "509:177:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "555:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "564:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "567:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "557:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "557:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "557:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "530:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "539:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "526:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "526:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "551:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "522:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "522:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "519:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "580:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "606:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "593:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "593:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "584:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "650:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "625:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "625:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "625:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "665:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "675:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "665:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payable",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "475:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "486:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "498:6:64",
                            "type": ""
                          }
                        ],
                        "src": "431:255:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "808:355:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "854:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "863:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "866:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "856:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "856:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "856:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "829:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "838:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "825:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "825:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "850:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "821:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "821:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "818:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "879:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "905:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "892:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "892:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "883:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "949:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "924:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "924:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "924:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "964:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "974:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "964:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "988:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1020:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1031:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1016:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1016:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1003:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1003:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "992:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1069:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1044:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1044:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1044:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1086:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1096:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1086:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1112:45:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1142:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1153:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1138:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1138:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "1122:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1122:35:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1112:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "758:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "769:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "781:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "789:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "797:6:64",
                            "type": ""
                          }
                        ],
                        "src": "691:472:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1328:1250:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1375:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1384:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1387:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1377:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1377:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1377:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1349:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1358:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1345:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1345:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1370:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1341:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1341:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1338:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1400:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1426:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1413:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1413:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1404:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1470:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1445:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1445:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1445:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1485:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1495:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1485:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1509:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1541:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1552:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1537:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1537:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1524:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1524:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1513:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1590:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1565:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1565:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1565:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1607:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1617:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1607:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1633:45:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1663:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1674:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1659:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1659:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "1643:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1643:35:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1633:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1687:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1714:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1725:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1710:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1710:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1697:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1697:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1687:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1738:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1769:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1780:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1765:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1765:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1752:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1752:33:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1742:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1794:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1804:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1798:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1849:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1858:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1861:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1851:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1851:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1851:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1837:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1845:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1834:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1834:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1831:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1874:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1888:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1899:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1884:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1884:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1878:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1954:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1963:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1966:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1956:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1956:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1956:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1933:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1937:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1929:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1929:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1944:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1925:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1925:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1918:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1918:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1915:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1979:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2002:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1989:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1989:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1983:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2028:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2030:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2030:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2030:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2020:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2024:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2017:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2017:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2014:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2059:76:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2069:66:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "2063:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2144:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2164:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2158:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2158:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2148:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2176:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2198:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2222:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2226:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2218:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2218:13:64"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "2233:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "2214:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2214:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2238:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2210:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2210:31:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "2243:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2206:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2206:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2194:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2194:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2180:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2306:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2308:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2308:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2308:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2265:10:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2277:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2262:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2262:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2285:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2297:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2282:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2282:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2259:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2259:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2256:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2344:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2348:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2337:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2337:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2337:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2375:6:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2383:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2368:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2368:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2368:18:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2432:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2441:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2444:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2434:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2434:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2434:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2409:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2413:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2405:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2405:11:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2418:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2401:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2401:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2423:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2398:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2398:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2395:53:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2474:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2482:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2470:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2470:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2491:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2495:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2487:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2487:11:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2500:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "2457:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2457:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2457:46:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "2527:6:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2535:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2523:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2523:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2540:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2519:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2519:24:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2545:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2512:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2512:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2512:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2556:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "2566:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2556:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_boolt_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1262:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1273:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1285:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1293:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1301:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1309:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1317:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1168:1410:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2675:231:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2721:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2730:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2733:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2723:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2723:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2723:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2696:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2705:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2692:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2692:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2717:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2688:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2688:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2685:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2746:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2772:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2759:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2759:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2750:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2816:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2791:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2791:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2791:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2831:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2841:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2831:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2855:45:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2885:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2896:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2881:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2881:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "2865:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2865:35:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2855:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2633:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2644:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2656:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2664:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2583:323:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3006:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3052:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3061:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3064:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3054:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3054:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3054:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3027:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3036:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3023:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3023:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3048:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3019:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3019:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3016:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3077:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3103:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3090:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3090:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3081:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3147:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3122:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3122:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3122:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3162:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3172:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3162:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3186:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3213:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3224:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3209:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3209:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3196:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3196:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3186:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2964:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2975:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2987:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2995:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2911:323:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3326:301:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3372:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3381:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3384:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3374:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3374:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3374:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3347:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3356:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3343:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3343:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3368:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3339:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3339:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3336:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3397:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3423:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3410:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3410:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3401:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3467:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3442:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3442:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3442:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3482:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3492:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3482:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3506:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3538:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3549:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3534:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3534:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3521:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3521:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3510:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3587:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3562:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3562:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3562:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3604:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3614:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3604:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3284:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3295:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3307:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3315:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3239:388:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3736:352:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3782:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3791:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3794:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3784:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3784:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3784:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3757:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3766:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3753:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3753:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3778:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3749:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3749:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3746:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3807:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3833:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3820:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3820:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3811:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3877:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3852:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3852:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3852:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3892:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3902:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3892:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3916:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3948:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3959:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3944:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3944:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3931:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3931:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3920:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3997:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3972:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3972:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3972:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4014:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4024:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4014:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4040:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4067:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4078:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4063:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4063:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4050:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4050:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4040:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3686:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3697:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3709:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3717:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3725:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3632:456:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4263:659:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4310:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4319:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4322:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4312:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4312:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4312:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4284:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4293:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4280:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4280:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4305:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4276:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4276:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4273:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4335:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4361:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4348:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4348:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4339:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4405:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4380:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4380:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4380:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4420:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4430:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4420:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4444:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4476:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4487:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4472:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4472:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4459:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4459:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4448:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4525:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4500:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4500:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4500:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4542:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4552:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4542:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4568:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4595:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4606:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4591:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4591:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4578:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4578:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4568:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4619:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4646:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4657:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4642:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4642:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4629:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4629:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4619:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4670:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4702:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4713:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4698:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4698:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4685:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4685:33:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4674:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4770:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4779:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4782:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4772:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4772:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4772:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4740:7:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "4753:7:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4762:4:64",
                                            "type": "",
                                            "value": "0xff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "4749:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4749:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "4737:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4737:31:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4730:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4730:39:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4727:59:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4795:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "4805:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "4795:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4821:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4848:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4859:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4844:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4844:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4831:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4831:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "4821:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4873:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4900:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4911:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4896:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4896:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4883:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4883:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4873:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4181:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4192:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4204:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4212:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4220:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4228:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "4236:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "4244:6:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "4252:6:64",
                            "type": ""
                          }
                        ],
                        "src": "4093:829:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5014:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5060:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5069:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5072:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5062:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5062:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5062:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5035:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5044:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5031:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5031:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5056:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5027:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5027:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5024:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5085:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5111:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5098:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5098:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5089:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5155:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5130:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5130:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5130:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5170:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5180:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5170:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5194:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5221:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5232:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5217:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5217:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5204:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5204:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5194:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4972:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4983:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4995:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5003:6:64",
                            "type": ""
                          }
                        ],
                        "src": "4927:315:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5336:502:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5382:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5391:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5394:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5384:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5384:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5384:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5357:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5366:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5353:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5353:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5378:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5349:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5349:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5346:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5407:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5434:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5421:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5421:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "5411:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5453:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5463:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5457:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5508:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5517:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5520:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5510:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5510:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5510:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5496:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5504:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5493:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5493:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5490:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5533:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5547:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5558:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5543:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5543:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5537:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5613:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5622:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5625:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5615:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5615:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5615:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "5592:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5596:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5588:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5588:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5603:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5584:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5584:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5577:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5577:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5574:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5638:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5665:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5652:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5652:16:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "5642:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5695:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5704:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5707:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5697:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5697:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5697:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5683:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5691:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5680:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5680:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5677:34:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5761:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5770:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5773:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5763:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5763:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5763:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "5734:2:64"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "5738:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5730:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5730:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5747:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5726:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5726:24:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5752:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5723:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5723:37:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5720:57:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5786:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5800:2:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5804:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5796:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5796:11:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5786:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5816:16:64",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "5826:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5816:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5294:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5305:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5317:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5325:6:64",
                            "type": ""
                          }
                        ],
                        "src": "5247:591:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5924:103:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5970:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5979:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5982:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5972:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5972:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5972:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5945:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5954:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5941:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5941:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5966:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5937:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5937:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5934:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5995:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6011:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6005:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6005:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5995:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5890:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5901:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5913:6:64",
                            "type": ""
                          }
                        ],
                        "src": "5843:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6130:147:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6176:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6185:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6188:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6178:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6178:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6178:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6151:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6160:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6147:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6147:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6172:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6143:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6143:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6140:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6201:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6217:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6211:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6211:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6201:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6236:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6256:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6267:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6252:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6252:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6246:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6246:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6236:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6088:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6099:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6111:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6119:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6032:245:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6331:481:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6341:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6361:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6355:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6355:12:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6345:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6383:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6388:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6376:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6376:19:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6376:19:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6404:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6413:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6408:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6475:110:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "6489:14:64",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "6499:4:64",
                                      "type": "",
                                      "value": "0x20"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "6493:2:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6531:3:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6536:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6527:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6527:11:64"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "6540:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6523:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6523:20:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6559:5:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6566:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6555:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "6555:13:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6570:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6551:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6551:22:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6545:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6545:29:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6516:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6516:59:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6516:59:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6434:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6437:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6431:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6431:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6445:21:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6447:17:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6456:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6459:4:64",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6452:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6452:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6447:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6427:3:64",
                                "statements": []
                              },
                              "src": "6423:162:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6619:62:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6648:3:64"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6653:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6644:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6644:16:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "6662:4:64",
                                              "type": "",
                                              "value": "0x20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6640:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6640:27:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6669:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6633:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6633:38:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6633:38:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6600:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6603:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6597:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6597:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6594:87:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6690:116:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6705:3:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "6718:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6726:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "6714:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6714:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6731:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "6710:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6710:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6701:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6701:98:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6801:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6697:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6697:109:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6690:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6308:5:64",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6315:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6323:3:64",
                            "type": ""
                          }
                        ],
                        "src": "6282:530:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7065:196:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "7082:3:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7087:66:64",
                                    "type": "",
                                    "value": "0x1901000000000000000000000000000000000000000000000000000000000000"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7075:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7075:79:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7075:79:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7174:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7179:1:64",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7170:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7170:11:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7183:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7163:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7163:27:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7163:27:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7210:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7215:2:64",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7206:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7206:12:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7220:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7199:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7199:28:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7199:28:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7236:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "7247:3:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7252:2:64",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7243:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7243:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7236:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7033:3:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7038:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7046:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7057:3:64",
                            "type": ""
                          }
                        ],
                        "src": "6817:444:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7367:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7377:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7389:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7400:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7385:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7385:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7377:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7419:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "7434:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7442:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7430:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7430:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7412:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7412:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7412:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7336:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7347:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7358:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7266:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7626:198:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7636:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7648:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7659:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7644:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7644:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7636:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7671:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7681:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7675:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7739:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "7754:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7762:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7750:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7750:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7732:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7732:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7732:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7786:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7797:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7782:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7782:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7806:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7814:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7802:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7802:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7775:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7775:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7775:43:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7587:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7598:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7606:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7617:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7497:327:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8050:338:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8060:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8072:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8083:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8068:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8068:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8060:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8096:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8106:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8100:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8164:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8179:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8187:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8175:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8175:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8157:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8157:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8157:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8211:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8222:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8207:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8207:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8231:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8239:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8227:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8227:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8200:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8200:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8200:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8263:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8274:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8259:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8259:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8283:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8291:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8279:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8279:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8252:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8252:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8252:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8315:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8326:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8311:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8311:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "8331:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8304:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8304:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8304:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8358:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8369:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8354:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8354:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "8375:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8347:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8347:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8347:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7987:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7998:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "8006:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8014:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8022:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8030:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8041:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7829:559:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8578:294:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8588:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8600:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8611:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8596:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8596:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8588:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8624:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8634:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8628:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8692:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8707:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8715:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8703:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8703:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8685:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8685:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8685:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8739:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8750:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8735:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8735:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8759:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8767:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8755:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8755:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8728:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8728:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8728:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8791:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8802:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8787:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8787:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8811:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8819:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8807:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8807:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8780:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8780:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8780:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8843:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8854:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8839:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8839:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "8859:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8832:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8832:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8832:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8523:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "8534:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8542:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8550:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8558:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8569:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8393:479:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9028:264:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9038:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9050:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9061:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9046:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9046:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9038:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9080:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "9095:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9103:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9091:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9091:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9073:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9073:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9073:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9167:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9178:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9163:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9163:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9187:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9195:30:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9183:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9183:43:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9156:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9156:71:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9156:71:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9247:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9258:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9243:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9243:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "9277:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "9270:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9270:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "9263:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9263:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9236:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9236:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9236:50:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint112_t_bool__to_t_address_t_uint256_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8981:9:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8992:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9000:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9008:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9019:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8877:415:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9448:530:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9458:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9468:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9462:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9479:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9497:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9508:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9493:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9493:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9483:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9527:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9538:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9520:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9520:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9520:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9550:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "9561:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "9554:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9576:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9596:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9590:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9590:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "9580:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9619:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9627:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9612:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9612:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9612:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9643:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9654:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9665:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9650:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9650:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "9643:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9677:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9695:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9703:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9691:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9691:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "9681:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9715:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9724:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "9719:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9783:169:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "9804:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9819:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "9813:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "9813:13:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "9828:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "9809:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9809:62:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "9797:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9797:75:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9797:75:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9885:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "9896:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9901:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9892:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9892:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "9885:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9917:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "9931:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9939:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9927:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9927:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "9917:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "9745:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9748:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9742:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9742:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "9756:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9758:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "9767:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9770:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9763:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9763:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "9758:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "9738:3:64",
                                "statements": []
                              },
                              "src": "9734:218:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9961:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "9969:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9961:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9417:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9428:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9439:4:64",
                            "type": ""
                          }
                        ],
                        "src": "9297:681:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10192:636:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10202:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10212:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10206:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10223:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10241:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10252:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10237:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10237:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10227:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10271:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10282:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10264:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10264:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10264:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10294:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "10305:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "10298:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10320:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10340:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10334:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10334:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "10324:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10363:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10371:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10356:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10356:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10356:22:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10387:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10397:2:64",
                                "type": "",
                                "value": "64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "10391:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10408:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10419:9:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "10430:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10415:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10415:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "10408:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10442:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10460:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10468:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10456:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10456:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "10446:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10480:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10489:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "10484:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10548:254:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "10562:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "10578:6:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "10572:5:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10572:13:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "10566:2:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "10605:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10620:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "10614:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "10614:9:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "10625:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "10610:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10610:58:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10598:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10598:71:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10598:71:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "10693:3:64"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "10698:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "10689:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10689:12:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10713:2:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10717:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "10709:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "10709:11:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "10703:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10703:18:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10682:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10682:40:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10682:40:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10735:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "10746:3:64"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "10751:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10742:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10742:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "10735:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10767:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "10781:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "10789:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10777:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10777:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10767:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "10510:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10513:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10507:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10507:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "10521:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10523:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "10532:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10535:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10528:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10528:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "10523:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "10503:3:64",
                                "statements": []
                              },
                              "src": "10499:303:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10811:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "10819:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10811:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10161:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10172:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10183:4:64",
                            "type": ""
                          }
                        ],
                        "src": "9983:845:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10928:92:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10938:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10950:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10961:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10946:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10946:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10938:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10980:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "11005:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "10998:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10998:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "10991:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10991:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10973:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10973:41:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10973:41:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10897:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10908:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10919:4:64",
                            "type": ""
                          }
                        ],
                        "src": "10833:187:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11126:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11136:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11148:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11159:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11144:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11144:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11136:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11178:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11189:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11171:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11171:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11171:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11095:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11106:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11117:4:64",
                            "type": ""
                          }
                        ],
                        "src": "11025:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11448:373:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11458:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11470:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11481:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11466:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11466:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11458:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11501:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11512:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11494:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11494:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11494:25:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11528:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11538:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11532:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11600:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11611:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11596:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11596:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11620:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11628:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11616:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11616:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11589:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11589:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11589:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11652:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11663:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11648:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11648:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "11672:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11680:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11668:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11668:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11641:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11641:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11641:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11704:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11715:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11700:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11700:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "11720:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11693:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11693:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11693:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11747:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11758:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11743:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11743:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "11764:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11736:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11736:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11736:35:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11791:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11802:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11787:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11787:19:64"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "11808:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11780:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11780:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11780:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11377:9:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "11388:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "11396:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "11404:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "11412:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11420:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11428:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11439:4:64",
                            "type": ""
                          }
                        ],
                        "src": "11207:614:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12039:299:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12049:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12061:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12072:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12057:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12057:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12049:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12092:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12103:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12085:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12085:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12085:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12130:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12141:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12126:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12126:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12146:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12119:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12119:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12119:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12173:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12184:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12169:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12169:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "12189:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12162:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12162:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12162:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12216:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12227:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12212:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12212:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "12232:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12205:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12205:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12205:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12259:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12270:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12255:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12255:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "12280:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12288:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12276:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12276:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12248:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12248:84:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12248:84:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11976:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "11987:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "11995:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "12003:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12011:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12019:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12030:4:64",
                            "type": ""
                          }
                        ],
                        "src": "11826:512:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12524:217:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12534:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12546:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12557:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12542:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12542:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12534:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12577:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12588:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12570:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12570:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12570:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12615:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12626:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12611:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12611:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12635:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12643:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12631:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12631:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12604:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12604:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12604:45:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12669:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12680:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12665:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12665:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "12685:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12658:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12658:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12658:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12712:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12723:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12708:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12708:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "12728:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12701:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12701:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12701:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12469:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "12480:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "12488:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12496:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12504:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12515:4:64",
                            "type": ""
                          }
                        ],
                        "src": "12343:398:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12865:98:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12882:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12893:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12875:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12875:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12875:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12905:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12930:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12942:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12953:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12938:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12938:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "12913:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12913:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12905:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12834:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12845:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12856:4:64",
                            "type": ""
                          }
                        ],
                        "src": "12746:217:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13094:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13104:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13116:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13127:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13112:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13112:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13104:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13146:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "13161:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13169:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13157:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13157:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13139:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13139:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13139:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13063:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13074:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13085:4:64",
                            "type": ""
                          }
                        ],
                        "src": "12968:251:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13349:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13359:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13371:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13382:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13367:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13367:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13359:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13401:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "13416:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13424:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13412:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13412:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13394:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13394:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13394:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13318:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13329:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13340:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13224:250:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13600:98:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13617:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13628:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13610:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13610:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13610:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13640:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "13665:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13677:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13688:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13673:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13673:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "13648:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13648:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13640:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13569:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13580:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13591:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13479:219:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13877:174:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13894:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13905:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13887:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13887:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13887:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13928:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13939:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13924:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13924:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13944:2:64",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13917:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13917:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13917:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13967:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13978:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13963:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13963:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f5045524d49545f5349474e4154555245",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13983:26:64",
                                    "type": "",
                                    "value": "INVALID_PERMIT_SIGNATURE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13956:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13956:54:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13956:54:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14019:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14031:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14042:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14027:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14027:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14019:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13854:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13868:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13703:348:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14230:168:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14247:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14258:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14240:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14240:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14240:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14281:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14292:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14277:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14277:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14297:2:64",
                                    "type": "",
                                    "value": "18"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14270:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14270:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14270:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14320:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14331:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14316:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14316:18:64"
                                  },
                                  {
                                    "hexValue": "504f4f4c5f554e494e495449414c495a4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14336:20:64",
                                    "type": "",
                                    "value": "POOL_UNINITIALIZED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14309:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14309:48:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14309:48:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14366:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14378:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14389:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14374:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14374:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14366:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_367fa6588260d42fbdfeaa882c8e665dba6ef7b9ada04c67c61530ffc1768fee__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14207:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14221:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14056:342:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14577:172:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14594:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14605:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14587:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14587:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14587:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14628:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14639:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14624:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14624:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14644:2:64",
                                    "type": "",
                                    "value": "22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14617:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14617:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14617:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14667:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14678:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14663:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14663:18:64"
                                  },
                                  {
                                    "hexValue": "494e53554646494349454e545f414d4f554e545f494e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14683:24:64",
                                    "type": "",
                                    "value": "INSUFFICIENT_AMOUNT_IN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14656:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14656:52:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14656:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14717:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14729:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14740:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14725:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14725:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14717:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14554:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14568:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14403:346:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14928:169:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14945:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14956:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14938:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14938:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14938:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14979:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14990:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14975:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14975:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14995:2:64",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14968:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14968:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14968:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15018:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15029:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15014:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15014:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f494e5055545f544f4b454e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15034:21:64",
                                    "type": "",
                                    "value": "INVALID_INPUT_TOKEN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15007:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15007:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15007:49:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15065:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15077:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15088:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15073:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15073:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15065:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14905:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14919:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14754:343:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15276:170:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15293:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15304:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15286:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15286:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15286:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15327:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15338:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15323:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15323:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15343:2:64",
                                    "type": "",
                                    "value": "20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15316:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15316:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15316:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15366:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15377:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15362:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15362:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f4f55545055545f544f4b454e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15382:22:64",
                                    "type": "",
                                    "value": "INVALID_OUTPUT_TOKEN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15355:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15355:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15355:50:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15414:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15426:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15437:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15422:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15422:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15414:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15253:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15267:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15102:344:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15625:179:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15642:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15653:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15635:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15635:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15635:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15676:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15687:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15672:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15672:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15692:2:64",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15665:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15665:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15665:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15715:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15726:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15711:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15711:18:64"
                                  },
                                  {
                                    "hexValue": "494e53554646494349454e545f4c49515549444954595f4d494e544544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15731:31:64",
                                    "type": "",
                                    "value": "INSUFFICIENT_LIQUIDITY_MINTED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15704:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15704:59:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15704:59:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15772:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15784:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15795:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15780:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15780:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15772:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15602:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15616:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15451:353:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15983:165:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16000:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16011:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15993:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15993:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15993:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16034:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16045:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16030:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16030:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16050:2:64",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16023:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16023:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16023:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16073:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16084:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16069:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16069:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f414d4f554e5453",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16089:17:64",
                                    "type": "",
                                    "value": "INVALID_AMOUNTS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16062:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16062:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16062:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16116:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16128:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16139:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16124:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16124:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16116:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7e6e8c13ba2f1d0f0273f8e22d59ed43b72e50c3f6c54bb315c74036cac1301c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15960:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15974:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15809:339:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16327:157:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16344:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16355:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16337:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16337:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16337:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16378:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16389:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16374:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16374:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16394:1:64",
                                    "type": "",
                                    "value": "8"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16367:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16367:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16367:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16416:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16427:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16412:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16412:18:64"
                                  },
                                  {
                                    "hexValue": "4f564552464c4f57",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16432:10:64",
                                    "type": "",
                                    "value": "OVERFLOW"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16405:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16405:38:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16405:38:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16452:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16464:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16475:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16460:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16460:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16452:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16304:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16318:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16153:331:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16663:173:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16680:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16691:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16673:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16673:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16673:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16714:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16725:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16710:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16710:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16730:2:64",
                                    "type": "",
                                    "value": "23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16703:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16703:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16703:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16753:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16764:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16749:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16749:18:64"
                                  },
                                  {
                                    "hexValue": "5045524d49545f444541444c494e455f45585049524544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16769:25:64",
                                    "type": "",
                                    "value": "PERMIT_DEADLINE_EXPIRED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16742:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16742:53:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16742:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16804:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16816:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16827:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16812:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16812:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16804:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16640:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16654:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16489:347:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17015:155:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17032:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17043:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17025:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17025:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17025:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17066:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17077:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17062:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17062:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17082:1:64",
                                    "type": "",
                                    "value": "6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17055:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17055:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17055:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17104:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17115:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17100:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17100:18:64"
                                  },
                                  {
                                    "hexValue": "4c4f434b4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17120:8:64",
                                    "type": "",
                                    "value": "LOCKED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17093:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17093:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17093:36:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17138:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17150:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17161:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17146:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17146:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17138:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16992:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17006:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16841:329:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17330:246:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17340:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17352:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17363:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17348:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17348:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17340:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17375:40:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "17385:30:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17379:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17431:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "17446:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17454:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17442:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17442:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17424:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17424:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17424:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17478:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17489:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17474:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17474:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17498:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17506:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17494:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17494:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17467:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17467:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17467:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17530:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17541:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17526:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17526:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "17550:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17558:10:64",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17546:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17546:23:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17519:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17519:51:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17519:51:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint112_t_uint112_t_uint32__to_t_uint112_t_uint112_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17283:9:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17294:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17302:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17310:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17321:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17175:401:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17682:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17692:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17704:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17715:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17700:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17700:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17692:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17734:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "17745:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17727:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17727:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17727:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17651:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17662:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17673:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17581:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17892:119:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17902:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17914:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17925:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17910:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17910:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17902:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17944:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "17955:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17937:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17937:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17937:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17982:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17993:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17978:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17978:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17998:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17971:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17971:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17971:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17853:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17864:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17872:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17883:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17763:248:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18173:162:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18183:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18195:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18206:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18191:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18191:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18183:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18225:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18236:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18218:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18218:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18218:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18263:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18274:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18259:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18259:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18279:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18252:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18252:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18252:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18306:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18317:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18302:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18302:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "18322:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18295:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18295:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18295:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18126:9:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "18137:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18145:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18153:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18164:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18016:319:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18495:179:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18505:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18517:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18528:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18513:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18513:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18505:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18547:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18558:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18540:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18540:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18540:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18585:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18596:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18581:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18581:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18601:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18574:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18574:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18574:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18628:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18639:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18624:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18624:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "18648:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18656:10:64",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18644:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18644:23:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18617:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18617:51:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18617:51:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint32__to_t_uint256_t_uint256_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18448:9:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "18459:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18467:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18475:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18486:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18340:334:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18776:87:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18786:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18798:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18809:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18794:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18794:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18786:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18828:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "18843:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18851:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18839:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18839:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18821:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18821:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18821:36:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18745:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18756:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18767:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18679:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18916:201:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18926:40:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "18936:30:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18930:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18975:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18990:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18993:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "18986:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18986:10:64"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18979:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19005:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "19020:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19023:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "19016:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19016:10:64"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19009:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19060:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "19062:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19062:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19062:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19041:3:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19050:2:64"
                                      },
                                      {
                                        "name": "y_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19054:3:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "19046:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19046:12:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19038:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19038:21:64"
                              },
                              "nodeType": "YulIf",
                              "src": "19035:47:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19091:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19102:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19107:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19098:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19098:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "19091:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint112",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "18899:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "18902:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "18908:3:64",
                            "type": ""
                          }
                        ],
                        "src": "18868:249:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19170:80:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19197:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "19199:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19199:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19199:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "19186:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "19193:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "19189:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19189:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19183:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19183:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "19180:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19228:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "19239:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "19242:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19235:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19235:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "19228:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "19153:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "19156:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "19162:3:64",
                            "type": ""
                          }
                        ],
                        "src": "19122:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19301:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19332:168:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19353:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19356:77:64",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "19346:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19346:88:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19346:88:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19454:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19457:4:64",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "19447:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19447:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19447:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19482:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19485:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "19475:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19475:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19475:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "19321:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "19314:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19314:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "19311:189:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19509:14:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "19518:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "19521:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "19514:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19514:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "19509:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "19286:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "19289:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "19295:1:64",
                            "type": ""
                          }
                        ],
                        "src": "19255:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19586:176:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19705:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "19707:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19707:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19707:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "19617:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "19610:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19610:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "19603:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19603:17:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "19625:1:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "19632:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "19700:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "19628:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19628:74:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "19622:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19622:81:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "19599:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19599:105:64"
                              },
                              "nodeType": "YulIf",
                              "src": "19596:131:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19736:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "19751:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "19754:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "19747:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19747:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "19736:7:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "19565:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "19568:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "19574:7:64",
                            "type": ""
                          }
                        ],
                        "src": "19534:228:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19816:76:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19838:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "19840:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19840:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19840:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "19832:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "19835:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19829:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19829:8:64"
                              },
                              "nodeType": "YulIf",
                              "src": "19826:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19869:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "19881:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "19884:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "19877:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19877:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "19869:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "19798:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "19801:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "19807:4:64",
                            "type": ""
                          }
                        ],
                        "src": "19767:125:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19944:148:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20035:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "20037:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20037:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20037:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "19960:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19967:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "19957:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19957:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "19954:103:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20066:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "20077:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20084:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20073:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20073:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "20066:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "19926:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "19936:3:64",
                            "type": ""
                          }
                        ],
                        "src": "19897:195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20129:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20146:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20149:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20139:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20139:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20139:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20243:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20246:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20236:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20236:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20236:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20267:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20270:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "20260:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20260:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20260:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "20097:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20318:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20335:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20338:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20328:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20328:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20328:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20432:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20435:4:64",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20425:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20425:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20425:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20456:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20459:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "20449:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20449:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20449:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "20286:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20507:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20524:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20527:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20517:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20517:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20517:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20621:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20624:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20614:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20614:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20614:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20645:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20648:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "20638:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20638:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20638:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "20475:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20696:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20713:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20716:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20706:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20706:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20706:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20810:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20813:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20803:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20803:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20803:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20834:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20837:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "20827:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20827:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20827:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "20664:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20898:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20985:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20994:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20997:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "20987:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20987:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20987:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "20921:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "20932:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "20939:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "20928:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20928:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "20918:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20918:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "20911:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20911:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "20908:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "20887:5:64",
                            "type": ""
                          }
                        ],
                        "src": "20853:154:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_bool(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payable(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_bool(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := abi_decode_bool(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_boolt_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := abi_decode_bool(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value4 := memPtr\n    }\n    function abi_decode_tuple_t_address_payablet_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := abi_decode_bool(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_address_payablet_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let value_2 := calldataload(add(headStart, 128))\n        if iszero(eq(value_2, and(value_2, 0xff))) { revert(0, 0) }\n        value4 := value_2\n        value5 := calldataload(add(headStart, 160))\n        value6 := calldataload(add(headStart, 192))\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            let _1 := 0x20\n            mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(pos, length), 0x20), 0)\n        }\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, 0x1901000000000000000000000000000000000000000000000000000000000000)\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_address_t_uint112_t_bool__to_t_address_t_uint256_t_bool__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffff))\n        mstore(add(headStart, 64), iszero(iszero(value2)))\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        let _2 := 64\n        pos := add(headStart, _2)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _3 := mload(srcPtr)\n            mstore(pos, and(mload(_3), 0xffffffffffffffffffffffffffffffffffffffff))\n            mstore(add(pos, _1), mload(add(_3, _1)))\n            pos := add(pos, _2)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, value0)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"INVALID_PERMIT_SIGNATURE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_367fa6588260d42fbdfeaa882c8e665dba6ef7b9ada04c67c61530ffc1768fee__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 18)\n        mstore(add(headStart, 64), \"POOL_UNINITIALIZED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"INSUFFICIENT_AMOUNT_IN\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"INVALID_INPUT_TOKEN\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"INVALID_OUTPUT_TOKEN\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"INSUFFICIENT_LIQUIDITY_MINTED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_7e6e8c13ba2f1d0f0273f8e22d59ed43b72e50c3f6c54bb315c74036cac1301c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"INVALID_AMOUNTS\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 8)\n        mstore(add(headStart, 64), \"OVERFLOW\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"PERMIT_DEADLINE_EXPIRED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 6)\n        mstore(add(headStart, 64), \"LOCKED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint112_t_uint112_t_uint32__to_t_uint112_t_uint112_t_uint32__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, 0xffffffff))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_uint32__to_t_uint256_t_uint256_t_uint32__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, 0xffffffff))\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function checked_add_t_uint112(x, y) -> sum\n    {\n        let _1 := 0xffffffffffffffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "5943": [
                  {
                    "length": 32,
                    "start": 1098
                  },
                  {
                    "length": 32,
                    "start": 13677
                  },
                  {
                    "length": 32,
                    "start": 13784
                  }
                ],
                "5945": [
                  {
                    "length": 32,
                    "start": 10990
                  },
                  {
                    "length": 32,
                    "start": 13483
                  }
                ],
                "5947": [
                  {
                    "length": 32,
                    "start": 792
                  },
                  {
                    "length": 32,
                    "start": 12880
                  }
                ],
                "5950": [
                  {
                    "length": 32,
                    "start": 1059
                  },
                  {
                    "length": 32,
                    "start": 6825
                  },
                  {
                    "length": 32,
                    "start": 7082
                  },
                  {
                    "length": 32,
                    "start": 11184
                  },
                  {
                    "length": 32,
                    "start": 11404
                  },
                  {
                    "length": 32,
                    "start": 11615
                  },
                  {
                    "length": 32,
                    "start": 11847
                  }
                ],
                "5953": [
                  {
                    "length": 32,
                    "start": 1503
                  },
                  {
                    "length": 32,
                    "start": 8328
                  }
                ],
                "5955": [
                  {
                    "length": 32,
                    "start": 868
                  },
                  {
                    "length": 32,
                    "start": 2010
                  },
                  {
                    "length": 32,
                    "start": 2848
                  },
                  {
                    "length": 32,
                    "start": 3151
                  },
                  {
                    "length": 32,
                    "start": 4242
                  },
                  {
                    "length": 32,
                    "start": 4445
                  },
                  {
                    "length": 32,
                    "start": 5346
                  },
                  {
                    "length": 32,
                    "start": 5960
                  },
                  {
                    "length": 32,
                    "start": 6380
                  },
                  {
                    "length": 32,
                    "start": 6748
                  },
                  {
                    "length": 32,
                    "start": 7251
                  },
                  {
                    "length": 32,
                    "start": 8608
                  },
                  {
                    "length": 32,
                    "start": 9708
                  },
                  {
                    "length": 32,
                    "start": 9943
                  },
                  {
                    "length": 32,
                    "start": 11564
                  }
                ],
                "5957": [
                  {
                    "length": 32,
                    "start": 1542
                  },
                  {
                    "length": 32,
                    "start": 2142
                  },
                  {
                    "length": 32,
                    "start": 2445
                  },
                  {
                    "length": 32,
                    "start": 2619
                  },
                  {
                    "length": 32,
                    "start": 4286
                  },
                  {
                    "length": 32,
                    "start": 4550
                  },
                  {
                    "length": 32,
                    "start": 5212
                  },
                  {
                    "length": 32,
                    "start": 6044
                  },
                  {
                    "length": 32,
                    "start": 6155
                  },
                  {
                    "length": 32,
                    "start": 7010
                  },
                  {
                    "length": 32,
                    "start": 7361
                  },
                  {
                    "length": 32,
                    "start": 8735
                  },
                  {
                    "length": 32,
                    "start": 9520
                  },
                  {
                    "length": 32,
                    "start": 9655
                  },
                  {
                    "length": 32,
                    "start": 11798
                  }
                ],
                "11932": [
                  {
                    "length": 32,
                    "start": 4762
                  }
                ],
                "11935": [
                  {
                    "length": 32,
                    "start": 5059
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106102415760003560e01c8063627dd56a11610145578063a69840a8116100bd578063c14ad8021161008c578063d21220a711610071578063d21220a714610601578063d505accf14610628578063dd62ed3e1461063b57600080fd5b8063c14ad802146105d1578063cf58879a146105da57600080fd5b8063a69840a814610571578063a8f1f52e14610598578063a9059cbb146105ab578063af8c09bf146105be57600080fd5b80637464fc3d116101145780637ecebe00116100f95780637ecebe001461050b57806392bc32191461052b57806395d89b411461053557600080fd5b80637464fc3d146104ef5780637ba0e2e7146104f857600080fd5b8063627dd56a1461047e57806365dfc7671461049157806367e4ac2c146104ba57806370a08231146104cf57600080fd5b80632a07b6c7116101d8578063499a3c50116101a757806354cf2aeb1161018c57806354cf2aeb146104455780635909c0d51461046c5780635a3d54931461047557600080fd5b8063499a3c501461040b5780634da318271461041e57600080fd5b80632a07b6c7146103a257806330adf81f146103c2578063313ce567146103e95780633644e5151461040357600080fd5b80630c0a0cd2116102145780630c0a0cd2146103135780630dfe16811461035f57806318160ddd1461038657806323b872dd1461038f57600080fd5b8063053da1c81461024657806306fdde031461026c5780630902f1ac146102b5578063095ea7b3146102f0575b600080fd5b610259610254366004613961565b610666565b6040519081526020015b60405180910390f35b6102a86040518060400160405280600e81526020017f5375736869204c5020546f6b656e00000000000000000000000000000000000081525081565b6040516102639190613b3a565b6102bd610d0b565b604080516dffffffffffffffffffffffffffff948516815293909216602084015263ffffffff1690820152606001610263565b6103036102fe366004613844565b610d74565b6040519015158152602001610263565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610263565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b61025960005481565b61030361039d3660046138a9565b610ded565b6103b56103b0366004613961565b610f39565b6040516102639190613ad5565b6102597f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103f1601281565b60405160ff9091168152602001610263565b610259611296565b610259610419366004613961565b6113e5565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b61025960055481565b61025960065481565b61025961048c366004613961565b6115cd565b6104996119bd565b60408051938452602084019290925263ffffffff1690820152606001610263565b6104c2611c31565b6040516102639190613a7b565b6102596104dd366004613695565b60016020526000908152604090205481565b61025960075481565b610259610506366004613961565b611d30565b610259610519366004613695565b60036020526000908152604090205481565b610533612086565b005b6102a86040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b6102597f54726964656e743a436f6e7374616e7450726f6475637400000000000000000081565b6102596105a6366004613961565b612129565b6103036105b9366004613844565b6122fd565b6102596105cc366004613961565b612382565b61025960045481565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b6105336106363660046138ea565b612794565b610259610649366004613870565b600260209081526000928352604080842090915290825290205481565b60006009546001146106d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60026009556000808080806106f087890189613700565b9450945094509450945060008060006107586008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092506000836dffffffffffffffffffffffffffff16116107d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f504f4f4c5f554e494e495449414c495a4544000000000000000000000000000060448201526064016106d0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610a395761085785846dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff16612ae6565b98506108857f00000000000000000000000000000000000000000000000000000000000000008a8989612b49565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b1906108c1908790600401613b3a565b600060405180830381600087803b1580156108db57600080fd5b505af11580156108ef573d6000803e3d6000fd5b505050506000806108fe612cef565b9150915086856dffffffffffffffffffffffffffff168303101561097e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e0000000000000000000060448201526064016106d0565b61098b8282878787612ec9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610a2a929190918252602082015260400190565b60405180910390a45050610cf7565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106d0565b610b1985836dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff16612ae6565b9850610b477f00000000000000000000000000000000000000000000000000000000000000008a8989612b49565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b190610b83908790600401613b3a565b600060405180830381600087803b158015610b9d57600080fd5b505af1158015610bb1573d6000803e3d6000fd5b50505050600080610bc0612cef565b9150915086846dffffffffffffffffffffffffffff1682031015610c40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e0000000000000000000060448201526064016106d0565b610c4d8282878787612ec9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610cec929190918252602082015260400190565b60405180910390a450505b505060016009555094979650505050505050565b6000806000610d696008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250909192565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ddc9086815260200190565b60405180910390a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610e8a5773ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915281208054849290610e84908490613c0f565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604081208054849290610ebf908490613c0f565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260016020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f279086815260200190565b60405180910390a35060019392505050565b6060600954600114610fa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106d0565b6002600955600080610fbb8486018661380f565b91509150600080600061101d6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b92509250925060008061102e612cef565b3060009081526001602052604081205492945090925061104e87876131a8565b50905060008161105e8685613bd2565b6110689190613b97565b90506000826110778686613bd2565b6110819190613b97565b905061108d308561328f565b6110b97f0000000000000000000000000000000000000000000000000000000000000000838d8d612b49565b6110e57f0000000000000000000000000000000000000000000000000000000000000000828d8d612b49565b818603955080850394506110fc86868b8b8b612ec9565b61110e6111098688613bd2565b613322565b6007556040805160028082526060820190925290816020015b6040805180820190915260008082526020820152815260200190600190039081611127579050509b5060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001838152508c6000815181106111ae576111ae613cbd565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001828152508c60018151811061121757611217613cbd565b60209081029190910181019190915260408051848152918201839052810185905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a35050600160095550979a9950505050505050505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146113c05750604080518082018252600e81527f5375736869204c5020546f6b656e00000000000000000000000000000000000060209182015281518083018352600181527f31000000000000000000000000000000000000000000000000000000000000009082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600080806113f584860186613844565b915091506000806114556008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b50915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156114e0576114d983836dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff166134a7565b94506115c3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e00000000000000000000000060448201526064016106d0565b6115c083826dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff166134a7565b94505b5050505092915050565b600060095460011461163b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106d0565b600260095560008080611650858701876136b9565b92509250925060008060006116b46008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092506000836dffffffffffffffffffffffffffff1611611734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f504f4f4c5f554e494e495449414c495a4544000000000000000000000000000060448201526064016106d0565b60008061173f612cef565b915091506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415611809577f00000000000000000000000000000000000000000000000000000000000000009050866dffffffffffffffffffffffffffff16840391506117fd82886dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff16612ae6565b9a508a83039250611925565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16146118be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106d0565b50506008546dffffffffffffffffffffffffffff6e01000000000000000000000000000090910481168203907f00000000000000000000000000000000000000000000000000000000000000009061191d908390888116908a16612ae6565b9a508a840393505b611931818c8b8b612b49565b61193e8484898989612ec9565b8073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062858f604051610cec929190918252602082015260400190565b600080600080600080611a1f6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b6040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526dffffffffffffffffffffffffffff851660248301526000604483015293965091945092507f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b158015611aed57600080fd5b505afa158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2591906139d3565b6040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526dffffffffffffffffffffffffffff85166024830152600060448301529197507f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b158015611bee57600080fd5b505afa158015611c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2691906139d3565b959690945092505050565b60408051600280825260608083018452926020830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110611c8557611c85613cbd565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611cf357611cf3613cbd565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b6000600954600114611d9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106d0565b60026009556000611db183850185613695565b90506000806000611e116008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250600080611e22612cef565b90925090506000611e366111098385613bd2565b90506000611e546dffffffffffffffffffffffffffff881685613c0f565b90506000611e726dffffffffffffffffffffffffffff881685613c0f565b9050600080611ea384848c6dffffffffffffffffffffffffffff168c6dffffffffffffffffffffffffffff16613512565b9092509050611eb2828b613b4d565b9950611ebe818a613b4d565b9850600080611ecd8c8c6131a8565b915091508160001415611f7057600086118015611eea5750600085115b611f50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f414d4f554e5453000000000000000000000000000000000060448201526064016106d0565b611f5c6103e888613c0f565b9d50611f6b60006103e8613615565b611f8c565b80870381611f7e8483613bd2565b611f889190613b97565b9e50505b8d611ff3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e54454400000060448201526064016106d0565b611ffd8d8f613615565b61200a89898e8e8e612ec9565b600787905560408051878152602081018790529081018f90528e9073ffffffffffffffffffffffffffffffffffffffff8f169033907ff9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e9060600160405180910390a350506001600955509a9d9c50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b1580156120ec57600080fd5b505afa158015612100573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212491906139d3565b600455565b6000808061213984860186613844565b915091506000806121996008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b50915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561221d576114d983836dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff16612ae6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146122d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106d0565b6115c083826dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff16612ae6565b3360009081526001602052604081208054839190839061231e908490613c0f565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ddc9086815260200190565b60006009546001146123f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106d0565b600260095560008080612405858701876136b9565b92509250925060008060006124696008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b30600090815260016020526040812054939650919450925061248b85856131a8565b5090506000816124ab6dffffffffffffffffffffffffffff881685613bd2565b6124b59190613b97565b90506000826124d46dffffffffffffffffffffffffffff881686613bd2565b6124de9190613b97565b90506125216124fd826dffffffffffffffffffffffffffff8916613c0f565b612517846dffffffffffffffffffffffffffff8b16613c0f565b6111099190613bd2565b60075561252e308561328f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614156125ea576125b18283896dffffffffffffffffffffffffffff160383896dffffffffffffffffffffffffffff1603612ae6565b016125de7f0000000000000000000000000000000000000000000000000000000000000000828b8b612b49565b809a5060009150612705565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161461269f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e00000000000000000000000060448201526064016106d0565b6126ce8182886dffffffffffffffffffffffffffff1603848a6dffffffffffffffffffffffffffff1603612ae6565b820191506126fe7f0000000000000000000000000000000000000000000000000000000000000000838b8b612b49565b5098508860005b600080612710612cef565b9150915061272182828b8b8b612ec9565b604080518581526020810185905290810187905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a35050600160095550989b9a5050505050505050505050565b428410156127fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016106d0565b6000612808611296565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c9290919061286383613c26565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016129049291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa15801561298d573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590612a0857508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612a6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e4154555245000000000000000060448201526064016106d0565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b600080612b137f000000000000000000000000000000000000000000000000000000000000000086613bd2565b905080612b2261271086613bd2565b612b2c9190613b7f565b612b368483613bd2565b612b409190613b97565b95945050505050565b8015612c32576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152306024830152838116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b158015612bf357600080fd5b505af1158015612c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2b91906139ec565b5050612ce9565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301528381166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401600060405180830381600087803b158015612cd057600080fd5b505af1158015612ce4573d6000803e3d6000fd5b505050505b50505050565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015230602483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063f7888aec9060440160206040518083038186803b158015612da157600080fd5b505afa158015612db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd991906139d3565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301529193507f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b158015612e8b57600080fd5b505afa158015612e9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec391906139d3565b90509091565b6dffffffffffffffffffffffffffff8511801590612ef557506dffffffffffffffffffffffffffff8411155b612f5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4f564552464c4f5700000000000000000000000000000000000000000000000060448201526064016106d0565b63ffffffff8116612fbd57600880546dffffffffffffffffffffffffffff8681166e010000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090921690881617179055613168565b4263ffffffff80821690831614801590612fe657506dffffffffffffffffffffffffffff841615155b801561300157506dffffffffffffffffffffffffffff831615155b156130c65781810360006dffffffffffffffffffffffffffff86167bffffffffffffffffffffffffffff0000000000000000000000000000607087901b168161304c5761304c613c8e565b600580549290910463ffffffff851681029092019055905060006dffffffffffffffffffffffffffff8616607088901b7bffffffffffffffffffffffffffff000000000000000000000000000016816130a7576130a7613c8e565b0490508263ffffffff1681026006600082825401925050819055505050505b6008805463ffffffff9092167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8881166e010000000000000000000000000000027fffffffff00000000000000000000000000000000000000000000000000000000909516908a161793909317929092169190911790555b60408051868152602081018690527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a15050505050565b600080546007549091908015613287576131d86111096dffffffffffffffffffffffffffff808716908816613bd2565b915080821115613287576004546000816131f28486613c0f565b6131fc9087613bd2565b6132069190613bd2565b905060006132148484613bd2565b8561322185612710613c0f565b61322b9190613bd2565b6132359190613b7f565b905060006132438284613b97565b90508015613282576132757f000000000000000000000000000000000000000000000000000000000000000082613615565b61327f8188613b7f565b96505b505050505b509250929050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812080548392906132c4908490613c0f565b909155505060008054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b60008161333157506000919050565b81600170010000000000000000000000000000000082106133575760809190911c9060401b5b6801000000000000000082106133725760409190911c9060201b5b64010000000082106133895760209190911c9060101b5b62010000821061339e5760109190911c9060081b5b61010082106133b25760089190911c9060041b5b601082106133c55760049190911c9060021b5b600882106133d15760011b5b60018185816133e2576133e2613c8e565b048201901c905060018185816133fa576133fa613c8e565b048201901c9050600181858161341257613412613c8e565b048201901c9050600181858161342a5761342a613c8e565b048201901c9050600181858161344257613442613c8e565b048201901c9050600181858161345a5761345a613c8e565b048201901c9050600181858161347257613472613c8e565b048201901c9050600081858161348a5761348a613c8e565b04905080821061349a578061349c565b815b93505050505b919050565b60007f00000000000000000000000000000000000000000000000000000000000000006134d48584613c0f565b6134de9190613bd2565b6127106134eb8686613bd2565b6134f59190613bd2565b6134ff9190613b97565b61350a906001613b7f565b949350505050565b600080831580613520575082155b156135305750600090508061360c565b60008461353d8589613bd2565b6135479190613b97565b90508581116135a25761355d6127106002613bd2565b6135678288613c0f565b613591907f0000000000000000000000000000000000000000000000000000000000000000613bd2565b61359b9190613b97565b915061360a565b6000846135af8789613bd2565b6135b99190613b97565b90506135c86127106002613bd2565b6135d2828a613c0f565b6135fc907f0000000000000000000000000000000000000000000000000000000000000000613bd2565b6136069190613b97565b9350505b505b94509492505050565b806000808282546136269190613b7f565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101613316565b803580151581146134a257600080fd5b6000602082840312156136a757600080fd5b81356136b281613d1b565b9392505050565b6000806000606084860312156136ce57600080fd5b83356136d981613d1b565b925060208401356136e981613d1b565b91506136f760408501613685565b90509250925092565b600080600080600060a0868803121561371857600080fd5b853561372381613d1b565b9450602086013561373381613d1b565b935061374160408701613685565b925060608601359150608086013567ffffffffffffffff8082111561376557600080fd5b818801915088601f83011261377957600080fd5b81358181111561378b5761378b613cec565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156137d1576137d1613cec565b816040528281528b60208487010111156137ea57600080fd5b8260208601602083013760006020848301015280955050505050509295509295909350565b6000806040838503121561382257600080fd5b823561382d81613d1b565b915061383b60208401613685565b90509250929050565b6000806040838503121561385757600080fd5b823561386281613d1b565b946020939093013593505050565b6000806040838503121561388357600080fd5b823561388e81613d1b565b9150602083013561389e81613d1b565b809150509250929050565b6000806000606084860312156138be57600080fd5b83356138c981613d1b565b925060208401356138d981613d1b565b929592945050506040919091013590565b600080600080600080600060e0888a03121561390557600080fd5b873561391081613d1b565b9650602088013561392081613d1b565b95506040880135945060608801359350608088013560ff8116811461394457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806020838503121561397457600080fd5b823567ffffffffffffffff8082111561398c57600080fd5b818501915085601f8301126139a057600080fd5b8135818111156139af57600080fd5b8660208285010111156139c157600080fd5b60209290920196919550909350505050565b6000602082840312156139e557600080fd5b5051919050565b600080604083850312156139ff57600080fd5b505080516020909101519092909150565b6000815180845260005b81811015613a3657602081850181015186830182015201613a1a565b81811115613a48576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020808252825182820181905260009190848201906040850190845b81811015613ac957835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613a97565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015613b2d578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101613af2565b5091979650505050505050565b6020815260006136b26020830184613a10565b60006dffffffffffffffffffffffffffff808316818516808303821115613b7657613b76613c5f565b01949350505050565b60008219821115613b9257613b92613c5f565b500190565b600082613bcd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c0a57613c0a613c5f565b500290565b600082821015613c2157613c21613c5f565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c5857613c58613c5f565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114613d3d57600080fd5b5056fea2646970667358221220bb078510fffdf67ed7dc18a1522f433526c7a6cfd9a607fd03877e6111685ff464736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x241 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x627DD56A GT PUSH2 0x145 JUMPI DUP1 PUSH4 0xA69840A8 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xC14AD802 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x601 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x628 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x63B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x5D1 JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x571 JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x598 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5AB JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x5BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7464FC3D GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x50B JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x52B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x535 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x4EF JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x4F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x627DD56A EQ PUSH2 0x47E JUMPI DUP1 PUSH4 0x65DFC767 EQ PUSH2 0x491 JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x54CF2AEB GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x445 JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x40B JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x41E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x3A2 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x214 JUMPI DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x313 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x35F JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2B5 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2F0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x259 PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x666 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x3B3A JUMP JUMPDEST PUSH2 0x2BD PUSH2 0xD0B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x303 PUSH2 0x2FE CALLDATASIZE PUSH1 0x4 PUSH2 0x3844 JUMP JUMPDEST PUSH2 0xD74 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x303 PUSH2 0x39D CALLDATASIZE PUSH1 0x4 PUSH2 0x38A9 JUMP JUMPDEST PUSH2 0xDED JUMP JUMPDEST PUSH2 0x3B5 PUSH2 0x3B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0xF39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x3AD5 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x3F1 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x1296 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x419 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x13E5 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x48C CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x15CD JUMP JUMPDEST PUSH2 0x499 PUSH2 0x19BD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH4 0xFFFFFFFF AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x4C2 PUSH2 0x1C31 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x3A7B JUMP JUMPDEST PUSH2 0x259 PUSH2 0x4DD CALLDATASIZE PUSH1 0x4 PUSH2 0x3695 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x506 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x1D30 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x519 CALLDATASIZE PUSH1 0x4 PUSH2 0x3695 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x533 PUSH2 0x2086 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x54726964656E743A436F6E7374616E7450726F64756374000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x5A6 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x2129 JUMP JUMPDEST PUSH2 0x303 PUSH2 0x5B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3844 JUMP JUMPDEST PUSH2 0x22FD JUMP JUMPDEST PUSH2 0x259 PUSH2 0x5CC CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x2382 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x533 PUSH2 0x636 CALLDATASIZE PUSH1 0x4 PUSH2 0x38EA JUMP JUMPDEST PUSH2 0x2794 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x649 CALLDATASIZE PUSH1 0x4 PUSH2 0x3870 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x6D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x6F0 DUP8 DUP10 ADD DUP10 PUSH2 0x3700 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x758 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0x7D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C5F554E494E495449414C495A45440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xA39 JUMPI PUSH2 0x857 DUP6 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST SWAP9 POP PUSH2 0x885 PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x2B49 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x8C1 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3B3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 PUSH2 0x8FE PUSH2 0x2CEF JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 SUB LT ISZERO PUSH2 0x97E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x98B DUP3 DUP3 DUP8 DUP8 DUP8 PUSH2 0x2EC9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP11 DUP16 PUSH1 0x40 MLOAD PUSH2 0xA2A SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH2 0xCF7 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xAEE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0xB19 DUP6 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST SWAP9 POP PUSH2 0xB47 PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x2B49 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0xB83 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3B3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 PUSH2 0xBC0 PUSH2 0x2CEF JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 SUB LT ISZERO PUSH2 0xC40 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0xC4D DUP3 DUP3 DUP8 DUP8 DUP8 PUSH2 0x2EC9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP11 DUP16 PUSH1 0x40 MLOAD PUSH2 0xCEC SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xD69 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xDDC SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xE8A JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xE84 SWAP1 DUP5 SWAP1 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xEBF SWAP1 DUP5 SWAP1 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xF27 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0xFA7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 PUSH2 0xFBB DUP5 DUP7 ADD DUP7 PUSH2 0x380F JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x101D PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x102E PUSH2 0x2CEF JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH2 0x104E DUP8 DUP8 PUSH2 0x31A8 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x105E DUP7 DUP6 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x1068 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x1077 DUP7 DUP7 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x1081 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH2 0x108D ADDRESS DUP6 PUSH2 0x328F JUMP JUMPDEST PUSH2 0x10B9 PUSH32 0x0 DUP4 DUP14 DUP14 PUSH2 0x2B49 JUMP JUMPDEST PUSH2 0x10E5 PUSH32 0x0 DUP3 DUP14 DUP14 PUSH2 0x2B49 JUMP JUMPDEST DUP2 DUP7 SUB SWAP6 POP DUP1 DUP6 SUB SWAP5 POP PUSH2 0x10FC DUP7 DUP7 DUP12 DUP12 DUP12 PUSH2 0x2EC9 JUMP JUMPDEST PUSH2 0x110E PUSH2 0x1109 DUP7 DUP9 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3322 JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1127 JUMPI SWAP1 POP POP SWAP12 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP13 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x11AE JUMPI PUSH2 0x11AE PUSH2 0x3CBD JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP13 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1217 JUMPI PUSH2 0x1217 PUSH2 0x3CBD JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP2 DUP3 ADD DUP4 SWAP1 MSTORE DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP8 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x13C0 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x13F5 DUP5 DUP7 ADD DUP7 PUSH2 0x3844 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1455 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x14E0 JUMPI PUSH2 0x14D9 DUP4 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x34A7 JUMP JUMPDEST SWAP5 POP PUSH2 0x15C3 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1595 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x15C0 DUP4 DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x34A7 JUMP JUMPDEST SWAP5 POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x163B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x1650 DUP6 DUP8 ADD DUP8 PUSH2 0x36B9 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x16B4 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0x1734 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C5F554E494E495449414C495A45440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x173F PUSH2 0x2CEF JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1809 JUMPI PUSH32 0x0 SWAP1 POP DUP7 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 SUB SWAP2 POP PUSH2 0x17FD DUP3 DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST SWAP11 POP DUP11 DUP4 SUB SWAP3 POP PUSH2 0x1925 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x18BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST POP POP PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH15 0x10000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 AND DUP3 SUB SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x191D SWAP1 DUP4 SWAP1 DUP9 DUP2 AND SWAP1 DUP11 AND PUSH2 0x2AE6 JUMP JUMPDEST SWAP11 POP DUP11 DUP5 SUB SWAP4 POP JUMPDEST PUSH2 0x1931 DUP2 DUP13 DUP12 DUP12 PUSH2 0x2B49 JUMP JUMPDEST PUSH2 0x193E DUP5 DUP5 DUP10 DUP10 DUP10 PUSH2 0x2EC9 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP6 DUP16 PUSH1 0x40 MLOAD PUSH2 0xCEC SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1A1F PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B25 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE SWAP2 SWAP8 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C02 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C26 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST SWAP6 SWAP7 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1C85 JUMPI PUSH2 0x1C85 PUSH2 0x3CBD JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1CF3 JUMPI PUSH2 0x1CF3 PUSH2 0x3CBD JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x1D9E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 PUSH2 0x1DB1 DUP4 DUP6 ADD DUP6 PUSH2 0x3695 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1E11 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x1E22 PUSH2 0x2CEF JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x1E36 PUSH2 0x1109 DUP4 DUP6 PUSH2 0x3BD2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E54 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E72 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1EA3 DUP5 DUP5 DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3512 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1EB2 DUP3 DUP12 PUSH2 0x3B4D JUMP JUMPDEST SWAP10 POP PUSH2 0x1EBE DUP2 DUP11 PUSH2 0x3B4D JUMP JUMPDEST SWAP9 POP PUSH1 0x0 DUP1 PUSH2 0x1ECD DUP13 DUP13 PUSH2 0x31A8 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ ISZERO PUSH2 0x1F70 JUMPI PUSH1 0x0 DUP7 GT DUP1 ISZERO PUSH2 0x1EEA JUMPI POP PUSH1 0x0 DUP6 GT JUMPDEST PUSH2 0x1F50 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F414D4F554E54530000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x1F5C PUSH2 0x3E8 DUP9 PUSH2 0x3C0F JUMP JUMPDEST SWAP14 POP PUSH2 0x1F6B PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x3615 JUMP JUMPDEST PUSH2 0x1F8C JUMP JUMPDEST DUP1 DUP8 SUB DUP2 PUSH2 0x1F7E DUP5 DUP4 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x1F88 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP15 POP POP JUMPDEST DUP14 PUSH2 0x1FF3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F4C49515549444954595F4D494E544544000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x1FFD DUP14 DUP16 PUSH2 0x3615 JUMP JUMPDEST PUSH2 0x200A DUP10 DUP10 DUP15 DUP15 DUP15 PUSH2 0x2EC9 JUMP JUMPDEST PUSH1 0x7 DUP8 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 DUP2 ADD DUP16 SWAP1 MSTORE DUP15 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP1 CALLER SWAP1 PUSH32 0xF9C32FBC56FF04F32A233EBC26E388564223745E28ABD8D0781DD906537F563E SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP11 SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2100 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2124 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x2139 DUP5 DUP7 ADD DUP7 PUSH2 0x3844 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x2199 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x221D JUMPI PUSH2 0x14D9 DUP4 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x22D2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x15C0 DUP4 DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP4 SWAP1 PUSH2 0x231E SWAP1 DUP5 SWAP1 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xDDC SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x23F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x2405 DUP6 DUP8 ADD DUP8 PUSH2 0x36B9 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2469 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x248B DUP6 DUP6 PUSH2 0x31A8 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x24AB PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x24B5 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x24D4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP7 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x24DE SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH2 0x2521 PUSH2 0x24FD DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x2517 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x1109 SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH2 0x252E ADDRESS DUP6 PUSH2 0x328F JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x25EA JUMPI PUSH2 0x25B1 DUP3 DUP4 DUP10 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 DUP10 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2AE6 JUMP JUMPDEST ADD PUSH2 0x25DE PUSH32 0x0 DUP3 DUP12 DUP12 PUSH2 0x2B49 JUMP JUMPDEST DUP1 SWAP11 POP PUSH1 0x0 SWAP2 POP PUSH2 0x2705 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x269F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x26CE DUP2 DUP3 DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP5 DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2AE6 JUMP JUMPDEST DUP3 ADD SWAP2 POP PUSH2 0x26FE PUSH32 0x0 DUP4 DUP12 DUP12 PUSH2 0x2B49 JUMP JUMPDEST POP SWAP9 POP DUP9 PUSH1 0x0 JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2710 PUSH2 0x2CEF JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2721 DUP3 DUP3 DUP12 DUP12 DUP12 PUSH2 0x2EC9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP9 SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x27FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2808 PUSH2 0x1296 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP3 DUP13 SWAP3 DUP13 SWAP3 DUP13 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x2863 DUP4 PUSH2 0x3C26 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2904 SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x298D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2A08 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2A6E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2B13 PUSH32 0x0 DUP7 PUSH2 0x3BD2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2B22 PUSH2 0x2710 DUP7 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x2B2C SWAP2 SWAP1 PUSH2 0x3B7F JUMP JUMPDEST PUSH2 0x2B36 DUP5 DUP4 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x2B40 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2C32 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C07 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C2B SWAP2 SWAP1 PUSH2 0x39EC JUMP JUMPDEST POP POP PUSH2 0x2CE9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CE4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DB5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DD9 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E9F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EC3 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST SWAP1 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 GT DUP1 ISZERO SWAP1 PUSH2 0x2EF5 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT ISZERO JUMPDEST PUSH2 0x2F5B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564552464C4F57000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x2FBD JUMPI PUSH1 0x8 DUP1 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH15 0x10000000000000000000000000000 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP1 DUP9 AND OR OR SWAP1 SSTORE PUSH2 0x3168 JUMP JUMPDEST TIMESTAMP PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP1 DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2FE6 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3001 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x30C6 JUMPI DUP2 DUP2 SUB PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 PUSH1 0x70 DUP8 SWAP1 SHL AND DUP2 PUSH2 0x304C JUMPI PUSH2 0x304C PUSH2 0x3C8E JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF DUP6 AND DUP2 MUL SWAP1 SWAP3 ADD SWAP1 SSTORE SWAP1 POP PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x70 DUP9 SWAP1 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND DUP2 PUSH2 0x30A7 JUMPI PUSH2 0x30A7 PUSH2 0x3C8E JUMP JUMPDEST DIV SWAP1 POP DUP3 PUSH4 0xFFFFFFFF AND DUP2 MUL PUSH1 0x6 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH15 0x10000000000000000000000000000 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP1 DUP11 AND OR SWAP4 SWAP1 SWAP4 OR SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH32 0xCF2AA50876CDFBB541206F89AF0EE78D44A2ABF8D328E37FA4917F982149848A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x7 SLOAD SWAP1 SWAP2 SWAP1 DUP1 ISZERO PUSH2 0x3287 JUMPI PUSH2 0x31D8 PUSH2 0x1109 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND SWAP1 DUP9 AND PUSH2 0x3BD2 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3287 JUMPI PUSH1 0x4 SLOAD PUSH1 0x0 DUP2 PUSH2 0x31F2 DUP5 DUP7 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x31FC SWAP1 DUP8 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3206 SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3214 DUP5 DUP5 PUSH2 0x3BD2 JUMP JUMPDEST DUP6 PUSH2 0x3221 DUP6 PUSH2 0x2710 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x322B SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3235 SWAP2 SWAP1 PUSH2 0x3B7F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3243 DUP3 DUP5 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3282 JUMPI PUSH2 0x3275 PUSH32 0x0 DUP3 PUSH2 0x3615 JUMP JUMPDEST PUSH2 0x327F DUP2 DUP9 PUSH2 0x3B7F JUMP JUMPDEST SWAP7 POP JUMPDEST POP POP POP POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x32C4 SWAP1 DUP5 SWAP1 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP1 SLOAD DUP3 SWAP1 SUB DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x3331 JUMPI POP PUSH1 0x0 SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x3357 JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x3372 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x3389 JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x339E JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x33B2 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x33C5 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0x33D1 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x33E2 JUMPI PUSH2 0x33E2 PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x33FA JUMPI PUSH2 0x33FA PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3412 JUMPI PUSH2 0x3412 PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x342A JUMPI PUSH2 0x342A PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3442 JUMPI PUSH2 0x3442 PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x345A JUMPI PUSH2 0x345A PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3472 JUMPI PUSH2 0x3472 PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x348A JUMPI PUSH2 0x348A PUSH2 0x3C8E JUMP JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x349A JUMPI DUP1 PUSH2 0x349C JUMP JUMPDEST DUP2 JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH2 0x34D4 DUP6 DUP5 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x34DE SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x2710 PUSH2 0x34EB DUP7 DUP7 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x34F5 SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x34FF SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST PUSH2 0x350A SWAP1 PUSH1 0x1 PUSH2 0x3B7F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 ISZERO DUP1 PUSH2 0x3520 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x3530 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x360C JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x353D DUP6 DUP10 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3547 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 GT PUSH2 0x35A2 JUMPI PUSH2 0x355D PUSH2 0x2710 PUSH1 0x2 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3567 DUP3 DUP9 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x3591 SWAP1 PUSH32 0x0 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x359B SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP2 POP PUSH2 0x360A JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x35AF DUP8 DUP10 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x35B9 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH2 0x35C8 PUSH2 0x2710 PUSH1 0x2 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x35D2 DUP3 DUP11 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x35FC SWAP1 PUSH32 0x0 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3606 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP4 POP POP JUMPDEST POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0x3626 SWAP2 SWAP1 PUSH2 0x3B7F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x3316 JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x34A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x36A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x36B2 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x36CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x36D9 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x36E9 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP2 POP PUSH2 0x36F7 PUSH1 0x40 DUP6 ADD PUSH2 0x3685 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3723 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3733 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP4 POP PUSH2 0x3741 PUSH1 0x40 DUP8 ADD PUSH2 0x3685 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x378B JUMPI PUSH2 0x378B PUSH2 0x3CEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x37D1 JUMPI PUSH2 0x37D1 PUSH2 0x3CEC JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP12 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x37EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3822 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x382D DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP2 POP PUSH2 0x383B PUSH1 0x20 DUP5 ADD PUSH2 0x3685 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3857 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3862 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3883 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x388E DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x389E DUP2 PUSH2 0x3D1B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x38BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x38C9 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x38D9 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3905 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x3910 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x3920 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3944 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3974 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x398C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x39A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x39AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x39C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x39E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3A36 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x3A1A JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x3A48 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3AC9 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3A97 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3B2D JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3AF2 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x36B2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3A10 JUMP JUMPDEST PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x3B76 JUMPI PUSH2 0x3B76 PUSH2 0x3C5F JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3B92 JUMPI PUSH2 0x3B92 PUSH2 0x3C5F JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3BCD JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3C0A JUMPI PUSH2 0x3C0A PUSH2 0x3C5F JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3C21 JUMPI PUSH2 0x3C21 PUSH2 0x3C5F JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x3C58 JUMPI PUSH2 0x3C58 PUSH2 0x3C5F JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3D3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB SMOD DUP6 LT SELFDESTRUCT REVERT 0xF6 PUSH31 0xD7DC18A1522F433526C7A6CFD9A607FD03877E6111685FF464736F6C634300 ADDMOD SMOD STOP CALLER ",
              "sourceMap": "576:17477:38:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9772:1679;;;;;;:::i;:::-;;:::i;:::-;;;11171:25:64;;;11159:2;11144:18;9772:1679:38;;;;;;;;486:46:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17267:222:38:-;;;:::i;:::-;;;;17385:30:64;17442:15;;;17424:34;;17494:15;;;;17489:2;17474:18;;17467:43;17558:10;17546:23;17526:18;;;17519:51;17363:2;17348:18;17267:222:38;17175:401:64;2581:203:45;;;;;;:::i;:::-;;:::i;:::-;;;10998:14:64;;10991:22;10973:41;;10961:2;10946:18;2581:203:45;10833:187:64;1242:33:38;;;;;;;;7442:42:64;7430:55;;;7412:74;;7400:2;7385:18;1242:33:38;7266:226:64;1379:31:38;;;;;623:26:45;;;;;;3741:564;;;;;;:::i;:::-;;:::i;4926:1387:38:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1182:145:45:-;;1232:95;1182:145;;581:35;;614:2;581:35;;;;;18851:4:64;18839:17;;;18821:36;;18809:2;18794:18;581:35:45;18679:184:64;2071:201:45;;;:::i;16666:531:38:-;;;;;;:::i;:::-;;:::i;1281:39::-;;;;;1148:32;;;;;1481:35;;;;;;1522;;;;;;8407:1236;;;;;;:::i;:::-;;:::i;17560:491::-;;;:::i;:::-;;;;18540:25:64;;;18596:2;18581:18;;18574:34;;;;18656:10;18644:23;18624:18;;;18617:51;18528:2;18513:18;17560:491:38;18340:334:64;15950:174:38;;;:::i;:::-;;;;;;;:::i;697:44:45:-;;;;;;:::i;:::-;;;;;;;;;;;;;;1563:20:38;;;;;;3353:1447;;;;;;:::i;:::-;;:::i;1390:41:45:-;;;;;;:::i;:::-;;;;;;;;;;;;;;11509:97:38;;;:::i;:::-;;538:37:45;;;;;;;;;;;;;;;;;;;;;1693:75:38;;;;;16130:530;;;;;;:::i;:::-;;:::i;3024:393:45:-;;;;;;:::i;:::-;;:::i;6488:1791:38:-;;;;;;:::i;:::-;;:::i;1454:21::-;;;;;;1326:47;;;;;1416:31;;;;;4785:796:45;;;;;;:::i;:::-;;:::i;802:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;9772:1679:38;9842:17;1840:8;;1852:1;1840:13;1832:32;;;;;;;17043:2:64;1832:32:38;;;17025:21:64;17082:1;17062:18;;;17055:29;17120:8;17100:18;;;17093:36;17146:18;;1832:32:38;;;;;;;;;1885:1;1874:8;:12;9872:15:::1;::::0;;;;9968:92:::1;::::0;;::::1;9992:4:::0;9968:92:::1;:::i;:::-;9871:189;;;;;;;;;;10071:17;10090::::0;10109:26:::1;10139:14;11821:8:::0;;;;;;;11851;;;;;;;11891:18;;;;;;;11612:304;10139:14:::1;10070:83;;;;;;10183:1;10171:9;:13;;;10163:44;;;::::0;::::1;::::0;;14258:2:64;10163:44:38::1;::::0;::::1;14240:21:64::0;14297:2;14277:18;;;14270:30;14336:20;14316:18;;;14309:48;14374:18;;10163:44:38::1;14056:342:64::0;10163:44:38::1;10256:6;10245:17;;:7;:17;;;10241:1194;;;10294:45;10308:8;10318:9;10294:45;;10329:9;10294:45;;:13;:45::i;:::-;10282:57;;10357:52;10367:6;10375:9;10386;10397:11;10357:9;:52::i;:::-;10427:55;::::0;;;;10442:10:::1;::::0;10427:46:::1;::::0;:55:::1;::::0;10474:7;;10427:55:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10501:16;10519::::0;10539:10:::1;:8;:10::i;:::-;10500:49;;;;10599:8;10586:9;10575:20;;:8;:20;:32;;10567:67;;;::::0;::::1;::::0;;14605:2:64;10567:67:38::1;::::0;::::1;14587:21:64::0;14644:2;14624:18;;;14617:30;14683:24;14663:18;;;14656:52;14725:18;;10567:67:38::1;14403:346:64::0;10567:67:38::1;10652:70;10660:8;10670;10680:9;10691;10702:19;10652:7;:70::i;:::-;10770:6;10745:53;;10761:7;10745:53;;10750:9;10745:53;;;10778:8;10788:9;10745:53;;;;;;17937:25:64::0;;;17993:2;17978:18;;17971:34;17925:2;17910:18;;17763:248;10745:53:38::1;;;;;;;;10264:549;;10241:1194;;;10856:6;10845:17;;:7;:17;;;10837:49;;;::::0;::::1;::::0;;14956:2:64;10837:49:38::1;::::0;::::1;14938:21:64::0;14995:2;14975:18;;;14968:30;15034:21;15014:18;;;15007:49;15073:18;;10837:49:38::1;14754:343:64::0;10837:49:38::1;10916:45;10930:8;10940:9;10916:45;;10951:9;10916:45;;:13;:45::i;:::-;10904:57;;10979:52;10989:6;10997:9;11008;11019:11;10979:9;:52::i;:::-;11049:55;::::0;;;;11064:10:::1;::::0;11049:46:::1;::::0;:55:::1;::::0;11096:7;;11049:55:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11123:16;11141::::0;11161:10:::1;:8;:10::i;:::-;11122:49;;;;11221:8;11208:9;11197:20;;:8;:20;:32;;11189:67;;;::::0;::::1;::::0;;14605:2:64;11189:67:38::1;::::0;::::1;14587:21:64::0;14644:2;14624:18;;;14617:30;14683:24;14663:18;;;14656:52;14725:18;;11189:67:38::1;14403:346:64::0;11189:67:38::1;11274:70;11282:8;11292;11302:9;11313;11324:19;11274:7;:70::i;:::-;11392:6;11367:53;;11383:7;11367:53;;11372:9;11367:53;;;11400:8;11410:9;11367:53;;;;;;17937:25:64::0;;;17993:2;17978:18;;17971:34;17925:2;17910:18;;17763:248;11367:53:38::1;;;;;;;;10819:616;;10241:1194;-1:-1:-1::0;;1918:1:38;1907:8;:12;-1:-1:-1;9772:1679:38;;;-1:-1:-1;;;;;;;9772:1679:38:o;17267:222::-;17348:17;17379;17410:26;17468:14;11821:8;;;;;;;11851;;;;;;;11891:18;;;;;;;11612:304;17468:14;17461:21;;;;;;17267:222;;;:::o;2581:203:45:-;2675:10;2649:4;2665:21;;;:9;:21;;;;;;;;;:30;;;;;;;;;;:39;;;2719:37;2649:4;;2665:30;;2719:37;;;;2698:6;11171:25:64;;11159:2;11144:18;;11025:177;2719:37:45;;;;;;;;-1:-1:-1;2773:4:45;2581:203;;;;:::o;3741:564::-;3882:17;;;3862:4;3882:17;;;:9;:17;;;;;;;;3900:10;3882:29;;;;;;;;3915:17;3882:50;3878:120;;3948:17;;;;;;;:9;:17;;;;;;;;3966:10;3948:29;;;;;;;:39;;3981:6;;3948:17;:39;;3981:6;;3948:39;:::i;:::-;;;;-1:-1:-1;;3878:120:45;4007:17;;;;;;;:9;:17;;;;;:27;;4028:6;;4007:17;:27;;4028:6;;4007:27;:::i;:::-;;;;-1:-1:-1;;4187:20:45;;;;;;;;:9;:20;;;;;;;:30;;;;;;4242:35;4187:20;;4242:35;;;;;;;4211:6;11171:25:64;;11159:2;11144:18;;11025:177;4242:35:45;;;;;;;;-1:-1:-1;4294:4:45;3741:564;;;;;:::o;4926:1387:38:-;4991:43;1840:8;;1852:1;1840:13;1832:32;;;;;;;17043:2:64;1832:32:38;;;17025:21:64;17082:1;17062:18;;;17055:29;17120:8;17100:18;;;17093:36;17146:18;;1832:32:38;16841:329:64;1832:32:38;1885:1;1874:8;:12;5047:17:::1;::::0;5086:33:::1;::::0;;::::1;5097:4:::0;5086:33:::1;:::i;:::-;5046:73;;;;5130:17;5149::::0;5168:26:::1;5198:14;11821:8:::0;;;;;;;11851;;;;;;;11891:18;;;;;;;11612:304;5198:14:::1;5129:83;;;;;;5223:16;5241::::0;5261:10:::1;:8;:10::i;:::-;5319:4;5281:17;5301:24:::0;;;:9:::1;:24;::::0;;;;;5222:49;;-1:-1:-1;5222:49:38;;-1:-1:-1;5363:30:38::1;5372:9:::0;5383;5363:8:::1;:30::i;:::-;-1:-1:-1::0;5336:57:38;-1:-1:-1;5404:15:38::1;5336:57:::0;5423:20:::1;5435:8:::0;5423:9;:20:::1;:::i;:::-;5422:37;;;;:::i;:::-;5404:55:::0;-1:-1:-1;5469:15:38::1;5512:12:::0;5488:20:::1;5500:8:::0;5488:9;:20:::1;:::i;:::-;5487:37;;;;:::i;:::-;5469:55;;5535:31;5549:4;5556:9;5535:5;:31::i;:::-;5576:50;5586:6;5594:7;5603:9;5614:11;5576:9;:50::i;:::-;5636;5646:6;5654:7;5663:9;5674:11;5636:9;:50::i;:::-;5828:7;5816:19;;;;5861:7;5849:19;;;;5888:70;5896:8;5906;5916:9;5927;5938:19;5888:7;:70::i;:::-;5976:37;5993:19;6004:8:::0;5993;:19:::1;:::i;:::-;5976:16;:37::i;:::-;5968:5;:45:::0;6043:20:::1;::::0;;6061:1:::1;6043:20:::0;;;;;::::1;::::0;;;;::::1;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;6043:20:38::1;;;;;;;;;;;;;;;6024:39;;6095:54;;;;;;;;6123:6;6095:54;;;;;;6140:7;6095:54;;::::0;6073:16:::1;6090:1;6073:19;;;;;;;;:::i;:::-;;;;;;:76;;;;6181:54;;;;;;;;6209:6;6181:54;;;;;;6226:7;6181:54;;::::0;6159:16:::1;6176:1;6159:19;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;:76;;;;6250:56:::1;::::0;;18218:25:64;;;18259:18;;;18252:34;;;18302:18;;18295:34;;;6250:56:38::1;::::0;::::1;::::0;6255:10:::1;::::0;6250:56:::1;::::0;18206:2:64;18191:18;6250:56:38::1;;;;;;;-1:-1:-1::0;;1918:1:38;1907:8;:12;-1:-1:-1;4926:1387:38;;;-1:-1:-1;;;;;;;;;;4926:1387:38:o;2071:201:45:-;2120:23;2190:25;2173:13;:42;:92;;-1:-1:-1;1866:4:45;;;;;;;;;;;;;;;;;1900:10;;;;;;;;;;;;;;;1709:278;;1737:95;1709:278;;;12085:25:64;1850:22:45;12126:18:64;;;12119:34;1890:21:45;12169:18:64;;;12162:34;1929:13:45;12212:18:64;;;12205:34;1968:4:45;12255:19:64;;;;12248:84;;;;1709:278:45;;;;;;;;;;12057:19:64;;;;1709:278:45;;;1686:311;;;;;;2071:201::o;2173:92::-;-1:-1:-1;2218:17:45;;2071:201::o;16666:531:38:-;16738:21;;;16811:36;;;;16822:4;16811:36;:::i;:::-;16771:76;;;;16858:17;16877;16900:14;11821:8;;;;;;;11851;;;;;;;11891:18;;;;;;;11612:304;16900:14;16857:57;;;;;16940:6;16928:18;;:8;:18;;;16924:267;;;16978:45;16991:9;17002;16978:45;;17013:9;16978:45;;:12;:45::i;:::-;16962:61;;16924:267;;;17074:6;17062:18;;:8;:18;;;17054:51;;;;;;;15304:2:64;17054:51:38;;;15286:21:64;15343:2;15323:18;;;15316:30;15382:22;15362:18;;;15355:50;15422:18;;17054:51:38;15102:344:64;17054:51:38;17135:45;17148:9;17159;17135:45;;17170:9;17135:45;;:12;:45::i;:::-;17119:61;;16924:267;16761:436;;;;16666:531;;;;:::o;8407:1236::-;8472:17;1840:8;;1852:1;1840:13;1832:32;;;;;;;17043:2:64;1832:32:38;;;17025:21:64;17082:1;17062:18;;;17055:29;17120:8;17100:18;;;17093:36;17146:18;;1832:32:38;16841:329:64;1832:32:38;1885:1;1874:8;:12;8502:15:::1;::::0;;8558:42:::1;::::0;;::::1;8569:4:::0;8558:42:::1;:::i;:::-;8501:99;;;;;;8611:17;8630::::0;8649:26:::1;8679:14;11821:8:::0;;;;;;;11851;;;;;;;11891:18;;;;;;;11612:304;8679:14:::1;8610:83;;;;;;8723:1;8711:9;:13;;;8703:44;;;::::0;::::1;::::0;;14258:2:64;8703:44:38::1;::::0;::::1;14240:21:64::0;14297:2;14277:18;;;14270:30;14336:20;14316:18;;;14309:48;14374:18;;8703:44:38::1;14056:342:64::0;8703:44:38::1;8758:16;8776::::0;8796:10:::1;:8;:10::i;:::-;8757:49;;;;8816:16;8842::::0;8907:6:::1;8896:17;;:7;:17;;;8892:521;;;8944:6;8933:17;;8990:9;8979:20;;:8;:20;8968:31;;9029:45;9043:8;9053:9;9029:45;;9064:9;9029:45;;:13;:45::i;:::-;9017:57;;9104:9;9092:21;;;;8892:521;;;9171:6;9160:17;;:7;:17;;;9152:49;;;::::0;::::1;::::0;;14956:2:64;9152:49:38::1;::::0;::::1;14938:21:64::0;14995:2;14975:18;;;14968:30;15034:21;15014:18;;;15007:49;15073:18;;9152:49:38::1;14754:343:64::0;9152:49:38::1;-1:-1:-1::0;;9276:8:38::1;::::0;::::1;::::0;;;::::1;::::0;::::1;9265:19:::0;::::1;::::0;9230:6:::1;::::0;9314:45:::1;::::0;9265:19;;9314:45;;::::1;::::0;;::::1;:13;:45::i;:::-;9302:57;;9389:9;9377:21;;;;8892:521;9432:54;9442:8;9452:9;9463;9474:11;9432:9;:54::i;:::-;9496:70;9504:8;9514;9524:9;9535;9546:19;9496:7;:70::i;:::-;9606:8;9581:55;;9597:7;9581:55;;9586:9;9581:55;;;9616:8;9626:9;9581:55;;;;;;17937:25:64::0;;;17993:2;17978:18;;17971:34;17925:2;17910:18;;17763:248;17560:491:38;17647:23;17684;17721:26;17773:17;17792;17811:27;17842:14;11821:8;;;;;;;11851;;;;;;;11891:18;;;;;;;11612:304;17842:14;17884:40;;;;;:14;17899:6;9091:55:64;;17884:40:38;;;9073:74:64;9195:30;9183:43;;9163:18;;;9156:71;-1:-1:-1;9243:18:64;;;9236:50;9183:43;;-1:-1:-1;17772:84:38;;-1:-1:-1;17772:84:38;-1:-1:-1;17884:5:38;:14;;;;;;9046:18:64;;17884:40:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17952;;;;;:14;17967:6;9091:55:64;;17952:40:38;;;9073:74:64;9195:30;9183:43;;9163:18;;;9156:71;-1:-1:-1;9243:18:64;;;9236:50;17866:58:38;;-1:-1:-1;17952:5:38;:14;;;;;;9046:18:64;;17952:40:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17560:491;;18024:20;;-1:-1:-1;17560:491:38;-1:-1:-1;;;17560:491:38:o;15950:174::-;16045:16;;;16059:1;16045:16;;;16001:23;16045:16;;;;;16001:23;16045:16;;;;;;;;;;-1:-1:-1;16045:16:38;16036:25;;16083:6;16071;16078:1;16071:9;;;;;;;;:::i;:::-;;;;;;:18;;;;;;;;;;;16111:6;16099;16106:1;16099:9;;;;;;;;:::i;:::-;;;;;;:18;;;;;;;;;;;15950:174;:::o;3353:1447::-;3418:17;1840:8;;1852:1;1840:13;1832:32;;;;;;;17043:2:64;1832:32:38;;;17025:21:64;17082:1;17062:18;;;17055:29;17120:8;17100:18;;;17093:36;17146:18;;1832:32:38;16841:329:64;1832:32:38;1885:1;1874:8;:12;3447:17:::1;3467:27;::::0;;::::1;3478:4:::0;3467:27:::1;:::i;:::-;3447:47;;3505:17;3524::::0;3543:26:::1;3573:14;11821:8:::0;;;;;;;11851;;;;;;;11891:18;;;;;;;11612:304;3573:14:::1;3504:83;;;;;;3598:16;3616::::0;3636:10:::1;:8;:10::i;:::-;3597:49:::0;;-1:-1:-1;3597:49:38;-1:-1:-1;3657:16:38::1;3676:37;3693:19;3597:49:::0;;3693:19:::1;:::i;3676:37::-;3657:56:::0;-1:-1:-1;3723:15:38::1;3741:20;;::::0;::::1;:8:::0;:20:::1;:::i;:::-;3723:38:::0;-1:-1:-1;3771:15:38::1;3789:20;;::::0;::::1;:8:::0;:20:::1;:::i;:::-;3771:38;;3821:12;3835::::0;3851:58:::1;3870:7;3879;3888:9;3851:58;;3899:9;3851:58;;:18;:58::i;:::-;3820:89:::0;;-1:-1:-1;3820:89:38;-1:-1:-1;3919:26:38::1;3820:89:::0;3919:26;::::1;:::i;:::-;::::0;-1:-1:-1;3955:26:38::1;3976:4:::0;3955:26;::::1;:::i;:::-;;;3993:20;4015:9:::0;4028:30:::1;4037:9;4048;4028:8;:30::i;:::-;3992:66;;;;4073:12;4089:1;4073:17;4069:390;;;4124:1;4114:7;:11;:26;;;;;4139:1;4129:7;:11;4114:26;4106:54;;;::::0;::::1;::::0;;16011:2:64;4106:54:38::1;::::0;::::1;15993:21:64::0;16050:2;16030:18;;;16023:30;16089:17;16069:18;;;16062:45;16124:18;;4106:54:38::1;15809:339:64::0;4106:54:38::1;4186:28;973:4;4186:8:::0;:28:::1;:::i;:::-;4174:40;;4228:36;4242:1;973:4;4228:5;:36::i;:::-;4069:390;;;4366:12:::0;;::::1;4377:1:::0;4419:24:::1;4431:12:::0;4366;4419:24:::1;:::i;:::-;4418:30;;;;:::i;:::-;4406:42;;4281:178;4069:390;4476:14:::0;4468:56:::1;;;::::0;::::1;::::0;;15653:2:64;4468:56:38::1;::::0;::::1;15635:21:64::0;15692:2;15672:18;;;15665:30;15731:31;15711:18;;;15704:59;15780:18;;4468:56:38::1;15451:353:64::0;4468:56:38::1;4534:27;4540:9;4551;4534:5;:27::i;:::-;4571:70;4579:8;4589;4599:9;4610;4621:19;4571:7;:70::i;:::-;4651:5;:16:::0;;;4729:64:::1;::::0;;18218:25:64;;;18274:2;18259:18;;18252:34;;;18302:18;;;18295:34;;;4705:9:38;;4729:64:::1;::::0;::::1;::::0;4734:10:::1;::::0;4729:64:::1;::::0;18206:2:64;18191:18;4729:64:38::1;;;;;;;-1:-1:-1::0;;1918:1:38;1907:8;:12;-1:-1:-1;3353:1447:38;;;-1:-1:-1;;;;;;;;;;;;;3353:1447:38:o;11509:97::-;11575:14;11559:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11550:6;:49;11509:97::o;16130:530::-;16203:22;;;16275:36;;;;16286:4;16275:36;:::i;:::-;16237:74;;;;16322:17;16341;16364:14;11821:8;;;;;;;11851;;;;;;;11891:18;;;;;;;11612:304;16364:14;16321:57;;;;;16403:6;16392:17;;:7;:17;;;16388:266;;;16442:45;16456:8;16466:9;16442:45;;16477:9;16442:45;;:13;:45::i;16388:266::-;16537:6;16526:17;;:7;:17;;;16518:49;;;;;;;14956:2:64;16518:49:38;;;14938:21:64;14995:2;14975:18;;;14968:30;15034:21;15014:18;;;15007:49;15073:18;;16518:49:38;14754:343:64;16518:49:38;16598:45;16612:8;16622:9;16598:45;;16633:9;16598:45;;:13;:45::i;3024:393:45:-;3121:10;3095:4;3111:21;;;:9;:21;;;;;:31;;3136:6;;3111:21;3095:4;;3111:31;;3136:6;;3111:31;:::i;:::-;;;;-1:-1:-1;;3295:20:45;;;;;;;:9;:20;;;;;;;:30;;;;;;3350:39;3359:10;;3350:39;;;;3319:6;11171:25:64;;11159:2;11144:18;;11025:177;6488:1791:38;6559:17;1840:8;;1852:1;1840:13;1832:32;;;;;;;17043:2:64;1832:32:38;;;17025:21:64;17082:1;17062:18;;;17055:29;17120:8;17100:18;;;17093:36;17146:18;;1832:32:38;16841:329:64;1832:32:38;1885:1;1874:8;:12;6589:16:::1;::::0;;6646:42:::1;::::0;;::::1;6657:4:::0;6646:42:::1;:::i;:::-;6588:100;;;;;;6699:17;6718::::0;6737:26:::1;6767:14;11821:8:::0;;;;;;;11851;;;;;;;11891:18;;;;;;;11612:304;6767:14:::1;6829:4;6791:17;6811:24:::0;;;:9:::1;:24;::::0;;;;;6698:83;;-1:-1:-1;6698:83:38;;-1:-1:-1;6698:83:38;-1:-1:-1;6873:30:38::1;6698:83:::0;;6873:8:::1;:30::i;:::-;-1:-1:-1::0;6846:57:38;-1:-1:-1;6914:15:38::1;6846:57:::0;6933:21:::1;;::::0;::::1;:9:::0;:21:::1;:::i;:::-;6932:38;;;;:::i;:::-;6914:56:::0;-1:-1:-1;6980:15:38::1;7024:12:::0;6999:21:::1;;::::0;::::1;:9:::0;:21:::1;:::i;:::-;6998:38;;;;:::i;:::-;6980:56:::0;-1:-1:-1;7055:63:38::1;7097:19;6980:56:::0;7097:19:::1;::::0;::::1;;:::i;:::-;7073;7085:7:::0;7073:19:::1;::::0;::::1;;:::i;:::-;7072:45;;;;:::i;7055:63::-;7047:5;:71:::0;7129:31:::1;7143:4;7150:9:::0;7129:5:::1;:31::i;:::-;7249:6;7237:18;;:8;:18;;;7233:818;;;7469:64;7483:7;7504;7492:9;:19;;;7525:7;7513:9;:19;;;7469:13;:64::i;:::-;7458:75;7551:50;7561:6;7458:75:::0;7578:9;7589:11;7551:9:::1;:50::i;:::-;7631:7;7619:19;;7666:1;7656:11;;7233:818;;;7778:6;7766:18;;:8;:18;;;7758:51;;;::::0;::::1;::::0;;15304:2:64;7758:51:38::1;::::0;::::1;15286:21:64::0;15343:2;15323:18;;;15316:30;15382:22;15362:18;;;15355:50;15422:18;;7758:51:38::1;15102:344:64::0;7758:51:38::1;7838:64;7852:7;7873;7861:9;:19;;;7894:7;7882:9;:19;;;7838:13;:64::i;:::-;7827:75;;;;7920:50;7930:6;7938:7;7947:9;7958:11;7920:9;:50::i;:::-;-1:-1:-1::0;8000:7:38;-1:-1:-1;8000:7:38;8035:1:::1;7233:818;8072:16;8090::::0;8110:10:::1;:8;:10::i;:::-;8071:49;;;;8130:70;8138:8;8148;8158:9;8169;8180:19;8130:7;:70::i;:::-;8216:56;::::0;;18218:25:64;;;18274:2;18259:18;;18252:34;;;18302:18;;;18295:34;;;8216:56:38::1;::::0;::::1;::::0;8221:10:::1;::::0;8216:56:::1;::::0;18206:2:64;18191:18;8216:56:38::1;;;;;;;-1:-1:-1::0;;1918:1:38;1907:8;:12;-1:-1:-1;6488:1791:38;;;-1:-1:-1;;;;;;;;;;;6488:1791:38:o;4785:796:45:-;4999:15;4987:8;:27;;4979:63;;;;;;;16691:2:64;4979:63:45;;;16673:21:64;16730:2;16710:18;;;16703:30;16769:25;16749:18;;;16742:53;16812:18;;4979:63:45;16489:347:64;4979:63:45;5052:14;5154:18;:16;:18::i;:::-;5252:13;;;;;;;:6;:13;;;;;:15;;1232:95;;5228:5;;5235:7;;5244:6;;5252:15;;:13;:15;;;:::i;:::-;;;;-1:-1:-1;5200:78:45;;;;;;11494:25:64;;;;11538:42;11616:15;;;11596:18;;;11589:43;11668:15;;;;11648:18;;;11641:43;11700:18;;;11693:34;11743:19;;;11736:35;11787:19;;;11780:35;;;11466:19;;5200:78:45;;;;;;;;;;;;5190:89;;;;;;5092:201;;;;;;;;7087:66:64;7075:79;;7179:1;7170:11;;7163:27;;;;7215:2;7206:12;;7199:28;7252:2;7243:12;;6817:444;5092:201:45;;;;;;;;;;;;;;5069:234;;5092:201;5069:234;;;;5313:24;5340:26;;;;;;;;;12570:25:64;;;12643:4;12631:17;;12611:18;;;12604:45;;;;12665:18;;;12658:34;;;12708:18;;;12701:34;;;5069:234:45;;-1:-1:-1;5313:24:45;5340:26;;12542:19:64;;5340:26:45;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5340:26:45;;;;;;-1:-1:-1;;5384:30:45;;;;;;;:59;;;5438:5;5418:25;;:16;:25;;;5384:59;5376:96;;;;;;;13905:2:64;5376:96:45;;;13887:21:64;13944:2;13924:18;;;13917:30;13983:26;13963:18;;;13956:54;14027:18;;5376:96:45;13703:348:64;5376:96:45;5482:27;;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:45;;;5542:32;11171:25:64;;;5482:36:45;;5542:32;;;;;11144:18:64;5542:32:45;;;;;;;4969:612;;4785:796;;;;;;;:::o;14236:346:38:-;14381:17;;14436:33;14447:22;14436:8;:33;:::i;:::-;14410:59;-1:-1:-1;14410:59:38;14531:25;1065:5;14531:15;:25;:::i;:::-;:43;;;;:::i;:::-;14492:34;14510:16;14492:15;:34;:::i;:::-;14491:84;;;;:::i;:::-;14479:96;14236:346;-1:-1:-1;;;;;14236:346:38:o;14888:315::-;15029:11;15025:172;;;15056:51;;;;;:14;8175:15:64;;;15056:51:38;;;8157:34:64;15086:4:38;8207:18:64;;;8200:43;8279:15;;;8259:18;;;8252:43;15097:1:38;8311:18:64;;;8304:34;8354:19;;;8347:35;;;15056:5:38;:14;;;;8068:19:64;;15056:51:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;15025:172;;;15138:48;;;;;:14;8703:15:64;;;15138:48:38;;;8685:34:64;15168:4:38;8735:18:64;;;8728:43;8807:15;;;8787:18;;;8780:43;8839:18;;;8832:34;;;15138:5:38;:14;;;;8596:19:64;;15138:48:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15025:172;14888:315;;;;:::o;11922:204::-;12022:38;;;;;:15;12038:6;7750:15:64;;12022:38:38;;;7732:34:64;12054:4:38;7782:18:64;;;7775:43;-1:-1:-1;;;;12022:5:38;:15;;;;7644:18:64;;12022:38:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12081;;;;;:15;12097:6;7750:15:64;;12081:38:38;;;7732:34:64;12113:4:38;7782:18:64;;;7775:43;12011:49:38;;-1:-1:-1;12081:5:38;:15;;;;;;7644:18:64;;12081:38:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12070:49;;11922:204;;:::o;12132:1255::-;12336:17;12324:29;;;;;:62;;-1:-1:-1;12369:17:38;12357:29;;;12324:62;12316:83;;;;;;;16355:2:64;12316:83:38;;;16337:21:64;16394:1;16374:18;;;16367:29;16432:10;16412:18;;;16405:38;16460:18;;12316:83:38;16153:331:64;12316:83:38;12413:24;;;12409:933;;12518:8;:28;;;12560;;;;;;;;;12518;;;12560;;;;12409:933;;;12650:15;12684:37;;;;;;;;;;;:55;;-1:-1:-1;12725:14:38;;;;;12684:55;:73;;;;-1:-1:-1;12743:14:38;;;;;12684:73;12680:519;;;12830:36;;;12809:18;12905:45;;;12906:31;1020:3;12906:31;;;;12905:45;;;;;:::i;:::-;12972:20;:44;;12905:45;;;;12996:20;;;;;12972:44;;;;;12905:45;-1:-1:-1;;13055:45:38;;;1020:3;13056:31;;;;;13055:45;;;;;:::i;:::-;;13038:62;;13155:11;13146:20;;:6;:20;13122;;:44;;;;;;;;;;;12777:408;;;12680:519;13212:8;:28;;13296:35;;;;;;;13212:28;13254;;;;;;;;;13212;;;13254;;;;;13296:35;;;;;;;;;;12409:933;13356:24;;;17937:25:64;;;17993:2;17978:18;;17971:34;;;13356:24:38;;17910:18:64;13356:24:38;;;;;;;12132:1255;;;;;:::o;13393:837::-;13467:20;13532:11;;13570:5;;13532:11;;13467:20;13589:11;;13585:639;;13627:48;13644:30;;;;;;:18;;:30;:::i;13627:48::-;13616:59;;13704:6;13693:8;:17;13689:525;;;13809:6;;13791:15;13809:6;13869:17;13880:6;13869:8;:17;:::i;:::-;13853:34;;:12;:34;:::i;:::-;:44;;;;:::i;:::-;13833:64;-1:-1:-1;13915:19:38;13970:16;13980:6;13970:7;:16;:::i;:::-;13959:8;13938:17;13948:7;1065:5;13938:17;:::i;:::-;13937:30;;;;:::i;:::-;:49;;;;:::i;:::-;13915:71;-1:-1:-1;14004:17:38;14024:23;13915:71;14024:9;:23;:::i;:::-;14004:43;-1:-1:-1;14070:14:38;;14066:134;;14108:26;14114:8;14124:9;14108:5;:26::i;:::-;14156:25;14172:9;14156:25;;:::i;:::-;;;14066:134;13712:502;;;;13689:525;13507:723;13393:837;;;;;:::o;5937:332:45:-;6003:17;;;;;;;:9;:17;;;;;:27;;6024:6;;6003:17;:27;;6024:6;;6003:27;:::i;:::-;;;;-1:-1:-1;;6180:11:45;:21;;;;;;;6226:36;;11171:25:64;;;6226:36:45;;;;;;11159:2:64;11144:18;6226:36:45;;;;;;;;5937:332;;:::o;505:1431:24:-;553:14;607:6;603:1317;;-1:-1:-1;624:1:24;505:1431;;;:::o;603:1317::-;675:1;706;735:35;729:41;;725:128;;801:3;794:10;;;;;832:2;826:8;725:128;880:19;874:2;:25;870:111;;930:2;923:9;;;;;960:2;954:8;870:111;1008:11;1002:2;:17;998:103;;1050:2;1043:9;;;;;1080:2;1074:8;998:103;1128:7;1122:2;:13;1118:98;;1166:2;1159:9;;;;;1196:1;1190:7;1118:98;1243:5;1237:2;:11;1233:95;;1279:1;1272:8;;;;;1308:1;1302:7;1233:95;1355:4;1349:2;:10;1345:94;;1390:1;1383:8;;;;;1419:1;1413:7;1345:94;1466:3;1460:2;:9;1456:63;;1499:1;1493:7;1456:63;1555:1;1549;1545;:5;;;;;:::i;:::-;;1541:1;:9;1540:16;;1536:20;;1593:1;1587;1583;:5;;;;;:::i;:::-;;1579:1;:9;1578:16;;1574:20;;1631:1;1625;1621;:5;;;;;:::i;:::-;;1617:1;:9;1616:16;;1612:20;;1669:1;1663;1659;:5;;;;;:::i;:::-;;1655:1;:9;1654:16;;1650:20;;1707:1;1701;1697;:5;;;;;:::i;:::-;;1693:1;:9;1692:16;;1688:20;;1745:1;1739;1735;:5;;;;;:::i;:::-;;1731:1;:9;1730:16;;1726:20;;1783:1;1777;1773;:5;;;;;:::i;:::-;;1769:1;:9;1768:16;;1764:20;;1845:10;1862:1;1858;:5;;;;;:::i;:::-;;1845:18;;1894:2;1890:1;:6;:15;;1903:2;1890:15;;;1899:1;1890:15;1881:24;;644:1276;;;603:1317;505:1431;;;:::o;14588:294:38:-;14733:16;14848:22;14816:28;14835:9;14816:16;:28;:::i;:::-;14815:55;;;;:::i;:::-;1065:5;14773:27;14791:9;14773:15;:27;:::i;:::-;:37;;;;:::i;:::-;14772:99;;;;:::i;:::-;:103;;14874:1;14772:103;:::i;:::-;14761:114;14588:294;-1:-1:-1;;;;14588:294:38:o;15302:642::-;15465:17;;15517:14;;;:32;;-1:-1:-1;15535:14:38;;15517:32;15513:51;;;-1:-1:-1;15559:1:38;;-1:-1:-1;15559:1:38;15551:13;;15513:51;15574:22;15624:9;15600:20;15611:9;15600:8;:20;:::i;:::-;15599:34;;;;:::i;:::-;15574:59;;15665:8;15647:14;:26;15643:295;;15744:11;1065:5;15744:1;:11;:::i;:::-;15713:25;15724:14;15713:8;:25;:::i;:::-;15702:37;;:7;:37;:::i;:::-;15701:55;;;;:::i;:::-;15689:67;;15643:295;;;15787:22;15837:9;15813:20;15824:9;15813:8;:20;:::i;:::-;15812:34;;;;:::i;:::-;15787:59;-1:-1:-1;15915:11:38;1065:5;15915:1;:11;:::i;:::-;15884:25;15895:14;15884:8;:25;:::i;:::-;15873:37;;:7;:37;:::i;:::-;15872:55;;;;:::i;:::-;15860:67;;15773:165;15643:295;15503:441;15302:642;;;;;;;;:::o;5587:344:45:-;5671:6;5656:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;5830:20:45;;;;;;;:9;:20;;;;;;;;:30;;;;;;5885:39;11171:25:64;;;5885:39:45;;11144:18:64;5885:39:45;11025:177:64;14:160;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;179:247;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;:::-;415:5;179:247;-1:-1:-1;;;179:247:64:o;691:472::-;781:6;789;797;850:2;838:9;829:7;825:23;821:32;818:52;;;866:1;863;856:12;818:52;905:9;892:23;924:31;949:5;924:31;:::i;:::-;974:5;-1:-1:-1;1031:2:64;1016:18;;1003:32;1044:33;1003:32;1044:33;:::i;:::-;1096:7;-1:-1:-1;1122:35:64;1153:2;1138:18;;1122:35;:::i;:::-;1112:45;;691:472;;;;;:::o;1168:1410::-;1285:6;1293;1301;1309;1317;1370:3;1358:9;1349:7;1345:23;1341:33;1338:53;;;1387:1;1384;1377:12;1338:53;1426:9;1413:23;1445:31;1470:5;1445:31;:::i;:::-;1495:5;-1:-1:-1;1552:2:64;1537:18;;1524:32;1565:33;1524:32;1565:33;:::i;:::-;1617:7;-1:-1:-1;1643:35:64;1674:2;1659:18;;1643:35;:::i;:::-;1633:45;;1725:2;1714:9;1710:18;1697:32;1687:42;;1780:3;1769:9;1765:19;1752:33;1804:18;1845:2;1837:6;1834:14;1831:34;;;1861:1;1858;1851:12;1831:34;1899:6;1888:9;1884:22;1874:32;;1944:7;1937:4;1933:2;1929:13;1925:27;1915:55;;1966:1;1963;1956:12;1915:55;2002:2;1989:16;2024:2;2020;2017:10;2014:36;;;2030:18;;:::i;:::-;2164:2;2158:9;2226:4;2218:13;;2069:66;2214:22;;;2238:2;2210:31;2206:40;2194:53;;;2262:18;;;2282:22;;;2259:46;2256:72;;;2308:18;;:::i;:::-;2348:10;2344:2;2337:22;2383:2;2375:6;2368:18;2423:7;2418:2;2413;2409;2405:11;2401:20;2398:33;2395:53;;;2444:1;2441;2434:12;2395:53;2500:2;2495;2491;2487:11;2482:2;2474:6;2470:15;2457:46;2545:1;2540:2;2535;2527:6;2523:15;2519:24;2512:35;2566:6;2556:16;;;;;;;1168:1410;;;;;;;;:::o;2583:323::-;2656:6;2664;2717:2;2705:9;2696:7;2692:23;2688:32;2685:52;;;2733:1;2730;2723:12;2685:52;2772:9;2759:23;2791:31;2816:5;2791:31;:::i;:::-;2841:5;-1:-1:-1;2865:35:64;2896:2;2881:18;;2865:35;:::i;:::-;2855:45;;2583:323;;;;;:::o;2911:::-;2987:6;2995;3048:2;3036:9;3027:7;3023:23;3019:32;3016:52;;;3064:1;3061;3054:12;3016:52;3103:9;3090:23;3122:31;3147:5;3122:31;:::i;:::-;3172:5;3224:2;3209:18;;;;3196:32;;-1:-1:-1;;;2911:323:64:o;3239:388::-;3307:6;3315;3368:2;3356:9;3347:7;3343:23;3339:32;3336:52;;;3384:1;3381;3374:12;3336:52;3423:9;3410:23;3442:31;3467:5;3442:31;:::i;:::-;3492:5;-1:-1:-1;3549:2:64;3534:18;;3521:32;3562:33;3521:32;3562:33;:::i;:::-;3614:7;3604:17;;;3239:388;;;;;:::o;3632:456::-;3709:6;3717;3725;3778:2;3766:9;3757:7;3753:23;3749:32;3746:52;;;3794:1;3791;3784:12;3746:52;3833:9;3820:23;3852:31;3877:5;3852:31;:::i;:::-;3902:5;-1:-1:-1;3959:2:64;3944:18;;3931:32;3972:33;3931:32;3972:33;:::i;:::-;3632:456;;4024:7;;-1:-1:-1;;;4078:2:64;4063:18;;;;4050:32;;3632:456::o;4093:829::-;4204:6;4212;4220;4228;4236;4244;4252;4305:3;4293:9;4284:7;4280:23;4276:33;4273:53;;;4322:1;4319;4312:12;4273:53;4361:9;4348:23;4380:31;4405:5;4380:31;:::i;:::-;4430:5;-1:-1:-1;4487:2:64;4472:18;;4459:32;4500:33;4459:32;4500:33;:::i;:::-;4552:7;-1:-1:-1;4606:2:64;4591:18;;4578:32;;-1:-1:-1;4657:2:64;4642:18;;4629:32;;-1:-1:-1;4713:3:64;4698:19;;4685:33;4762:4;4749:18;;4737:31;;4727:59;;4782:1;4779;4772:12;4727:59;4093:829;;;;-1:-1:-1;4093:829:64;;;;4805:7;4859:3;4844:19;;4831:33;;-1:-1:-1;4911:3:64;4896:19;;;4883:33;;4093:829;-1:-1:-1;;4093:829:64:o;5247:591::-;5317:6;5325;5378:2;5366:9;5357:7;5353:23;5349:32;5346:52;;;5394:1;5391;5384:12;5346:52;5434:9;5421:23;5463:18;5504:2;5496:6;5493:14;5490:34;;;5520:1;5517;5510:12;5490:34;5558:6;5547:9;5543:22;5533:32;;5603:7;5596:4;5592:2;5588:13;5584:27;5574:55;;5625:1;5622;5615:12;5574:55;5665:2;5652:16;5691:2;5683:6;5680:14;5677:34;;;5707:1;5704;5697:12;5677:34;5752:7;5747:2;5738:6;5734:2;5730:15;5726:24;5723:37;5720:57;;;5773:1;5770;5763:12;5720:57;5804:2;5796:11;;;;;5826:6;;-1:-1:-1;5247:591:64;;-1:-1:-1;;;;5247:591:64:o;5843:184::-;5913:6;5966:2;5954:9;5945:7;5941:23;5937:32;5934:52;;;5982:1;5979;5972:12;5934:52;-1:-1:-1;6005:16:64;;5843:184;-1:-1:-1;5843:184:64:o;6032:245::-;6111:6;6119;6172:2;6160:9;6151:7;6147:23;6143:32;6140:52;;;6188:1;6185;6178:12;6140:52;-1:-1:-1;;6211:16:64;;6267:2;6252:18;;;6246:25;6211:16;;6246:25;;-1:-1:-1;6032:245:64:o;6282:530::-;6323:3;6361:5;6355:12;6388:6;6383:3;6376:19;6413:1;6423:162;6437:6;6434:1;6431:13;6423:162;;;6499:4;6555:13;;;6551:22;;6545:29;6527:11;;;6523:20;;6516:59;6452:12;6423:162;;;6603:6;6600:1;6597:13;6594:87;;;6669:1;6662:4;6653:6;6648:3;6644:16;6640:27;6633:38;6594:87;-1:-1:-1;6726:2:64;6714:15;6731:66;6710:88;6701:98;;;;6801:4;6697:109;;6282:530;-1:-1:-1;;6282:530:64:o;9297:681::-;9468:2;9520:21;;;9590:13;;9493:18;;;9612:22;;;9439:4;;9468:2;9691:15;;;;9665:2;9650:18;;;9439:4;9734:218;9748:6;9745:1;9742:13;9734:218;;;9813:13;;9828:42;9809:62;9797:75;;9927:15;;;;9892:12;;;;9770:1;9763:9;9734:218;;;-1:-1:-1;9969:3:64;;9297:681;-1:-1:-1;;;;;;9297:681:64:o;9983:845::-;10212:2;10264:21;;;10334:13;;10237:18;;;10356:22;;;10183:4;;10212:2;10397;;10415:18;;;;10456:15;;;10183:4;10499:303;10513:6;10510:1;10507:13;10499:303;;;10572:13;;10614:9;;10625:42;10610:58;10598:71;;10709:11;;10703:18;10689:12;;;10682:40;10742:12;;;;10777:15;;;;10535:1;10528:9;10499:303;;;-1:-1:-1;10819:3:64;;9983:845;-1:-1:-1;;;;;;;9983:845:64:o;12746:217::-;12893:2;12882:9;12875:21;12856:4;12913:44;12953:2;12942:9;12938:18;12930:6;12913:44;:::i;18868:249::-;18908:3;18936:30;18993:2;18990:1;18986:10;19023:2;19020:1;19016:10;19054:3;19050:2;19046:12;19041:3;19038:21;19035:47;;;19062:18;;:::i;:::-;19098:13;;18868:249;-1:-1:-1;;;;18868:249:64:o;19122:128::-;19162:3;19193:1;19189:6;19186:1;19183:13;19180:39;;;19199:18;;:::i;:::-;-1:-1:-1;19235:9:64;;19122:128::o;19255:274::-;19295:1;19321;19311:189;;19356:77;19353:1;19346:88;19457:4;19454:1;19447:15;19485:4;19482:1;19475:15;19311:189;-1:-1:-1;19514:9:64;;19255:274::o;19534:228::-;19574:7;19700:1;19632:66;19628:74;19625:1;19622:81;19617:1;19610:9;19603:17;19599:105;19596:131;;;19707:18;;:::i;:::-;-1:-1:-1;19747:9:64;;19534:228::o;19767:125::-;19807:4;19835:1;19832;19829:8;19826:34;;;19840:18;;:::i;:::-;-1:-1:-1;19877:9:64;;19767:125::o;19897:195::-;19936:3;19967:66;19960:5;19957:77;19954:103;;;20037:18;;:::i;:::-;-1:-1:-1;20084:1:64;20073:13;;19897:195::o;20097:184::-;20149:77;20146:1;20139:88;20246:4;20243:1;20236:15;20270:4;20267:1;20260:15;20286:184;20338:77;20335:1;20328:88;20435:4;20432:1;20425:15;20459:4;20456:1;20449:15;20475:184;20527:77;20524:1;20517:88;20624:4;20621:1;20614:15;20648:4;20645:1;20638:15;20664:184;20716:77;20713:1;20706:88;20813:4;20810:1;20803:15;20837:4;20834:1;20827:15;20853:154;20939:42;20932:5;20928:54;20921:5;20918:65;20908:93;;20997:1;20994;20987:12;20908:93;20853:154;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "3146800",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "DOMAIN_SEPARATOR()": "infinite",
                "PERMIT_TYPEHASH()": "252",
                "allowance(address,address)": "infinite",
                "approve(address,uint256)": "24582",
                "balanceOf(address)": "2602",
                "barFee()": "2351",
                "barFeeTo()": "infinite",
                "bento()": "infinite",
                "burn(bytes)": "infinite",
                "burnSingle(bytes)": "infinite",
                "decimals()": "294",
                "flashSwap(bytes)": "infinite",
                "getAmountIn(bytes)": "infinite",
                "getAmountOut(bytes)": "infinite",
                "getAssets()": "infinite",
                "getNativeReserves()": "infinite",
                "getReserves()": "2561",
                "kLast()": "2352",
                "masterDeployer()": "infinite",
                "mint(bytes)": "infinite",
                "name()": "infinite",
                "nonces(address)": "2557",
                "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "infinite",
                "poolIdentifier()": "229",
                "price0CumulativeLast()": "2373",
                "price1CumulativeLast()": "2395",
                "swap(bytes)": "infinite",
                "swapFee()": "infinite",
                "symbol()": "infinite",
                "token0()": "infinite",
                "token1()": "infinite",
                "totalSupply()": "2374",
                "transfer(address,uint256)": "50958",
                "transferFrom(address,address,uint256)": "infinite",
                "updateBarFee()": "infinite"
              },
              "internal": {
                "_balance()": "infinite",
                "_getAmountIn(uint256,uint256,uint256)": "infinite",
                "_getAmountOut(uint256,uint256,uint256)": "infinite",
                "_getReserves()": "infinite",
                "_mintFee(uint112,uint112)": "infinite",
                "_nonOptimalMintFee(uint256,uint256,uint256,uint256)": "infinite",
                "_transfer(address,uint256,address,bool)": "infinite",
                "_update(uint256,uint256,uint112,uint112,uint32)": "infinite"
              }
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "PERMIT_TYPEHASH()": "30adf81f",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "barFee()": "c14ad802",
              "barFeeTo()": "0c0a0cd2",
              "bento()": "4da31827",
              "burn(bytes)": "2a07b6c7",
              "burnSingle(bytes)": "af8c09bf",
              "decimals()": "313ce567",
              "flashSwap(bytes)": "053da1c8",
              "getAmountIn(bytes)": "499a3c50",
              "getAmountOut(bytes)": "a8f1f52e",
              "getAssets()": "67e4ac2c",
              "getNativeReserves()": "65dfc767",
              "getReserves()": "0902f1ac",
              "kLast()": "7464fc3d",
              "masterDeployer()": "cf58879a",
              "mint(bytes)": "7ba0e2e7",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "poolIdentifier()": "a69840a8",
              "price0CumulativeLast()": "5909c0d5",
              "price1CumulativeLast()": "5a3d5493",
              "swap(bytes)": "627dd56a",
              "swapFee()": "54cf2aeb",
              "symbol()": "95d89b41",
              "token0()": "0dfe1681",
              "token1()": "d21220a7",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "updateBarFee()": "92bc3219"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_deployData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_masterDeployer\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reserve0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reserve1\",\"type\":\"uint256\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"domainSeperator\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"barFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"barFeeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bento\",\"outputs\":[{\"internalType\":\"contract IBentoBoxMinimal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burn\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPool.TokenAmount[]\",\"name\":\"withdrawnAmounts\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burnSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"finalAmountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"finalAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAssets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNativeReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_nativeReserve0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_nativeReserve1\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterDeployer\",\"outputs\":[{\"internalType\":\"contract IMasterDeployer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolIdentifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateBarFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The reserves are stored as bento shares.      The curve is applied to shares as well. This pool does not care about the underlying amounts.\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"params\":{\"amount\":\"The maximum collective `amount` that `spender` can pull.\",\"spender\":\"Address of the party that can pull tokens from `msg.sender`'s account.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"burn(bytes)\":{\"details\":\"Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\"},\"burnSingle(bytes)\":{\"details\":\"Burns LP tokens sent to this contract and swaps one of the output tokens for another - i.e., the user gets a single token out by burning LP tokens.\"},\"flashSwap(bytes)\":{\"details\":\"Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage.\"},\"getAmountIn(bytes)\":{\"details\":\"The pool does not need to include a trade simulator directly in itself - it can use a library.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"finalAmountIn\":\"The amount of input tokens that are required from the user if the trade is executed.\"}},\"getAmountOut(bytes)\":{\"details\":\"The pool does not need to include a trade simulator directly in itself - it can use a library.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"finalAmountOut\":\"The amount of output tokens that will be sent to the user if the trade is executed.\"}},\"getAssets()\":{\"returns\":{\"assets\":\"An array of tokens supported by the pool.\"}},\"getNativeReserves()\":{\"details\":\"returned values are the native ERC20 token amounts.\"},\"getReserves()\":{\"details\":\"returned values are in terms of BentoBox \\\"shares\\\".\"},\"mint(bytes)\":{\"details\":\"Mints LP tokens - should be called via the router after transferring `bento` tokens. The router must ensure that sufficient LP tokens are minted by using the return value.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"amount\":\"The number of tokens that are approved (2^256-1 means infinite).\",\"deadline\":\"The time at which to expire the signature.\",\"owner\":\"The address to approve from.\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"spender\":\"The address to be approved.\",\"v\":\"The recovery byte of the signature.\"}},\"swap(bytes)\":{\"details\":\"Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\"},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The token `amount` to move.\",\"recipient\":\"The address to move tokens to.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The token `amount` to move.\",\"recipient\":\"The address to move tokens to.\",\"sender\":\"Address to pull tokens `from`.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"updateBarFee()\":{\"details\":\"Updates `barFee` for Trident protocol.\"}},\"stateVariables\":{\"poolIdentifier\":{\"return\":\"A unique identifier for the pool type.\",\"returns\":{\"_0\":\"A unique identifier for the pool type.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"EIP-712 typehash for this contract's domain.\"},\"PERMIT_TYPEHASH()\":{\"notice\":\"EIP-712 typehash for this contract's {permit} struct.\"},\"allowance(address,address)\":{\"notice\":\"owner -> spender -> allowance mapping.\"},\"approve(address,uint256)\":{\"notice\":\"Approves `amount` from `msg.sender` to be spent by `spender`.\"},\"balanceOf(address)\":{\"notice\":\"owner -> balance mapping.\"},\"getAmountIn(bytes)\":{\"notice\":\"Simulates a trade and returns the expected output.\"},\"getAmountOut(bytes)\":{\"notice\":\"Simulates a trade and returns the expected output.\"},\"nonces(address)\":{\"notice\":\"owner -> nonce mapping used in {permit}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Triggers an approval from `owner` to `spender`.\"},\"transfer(address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `msg.sender` to `recipient`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\"}},\"notice\":\"Trident exchange pool template with constant product formula for swapping between an ERC-20 token pair.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/ConstantProductPool.sol\":\"ConstantProductPool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentCallee.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool callback interface.\\ninterface ITridentCallee {\\n    function tridentSwapCallback(bytes calldata data) external;\\n\\n    function tridentMintCallback(bytes calldata data) external;\\n}\\n\",\"keccak256\":\"0x256e838362a3064201b37b3b7c08bc1421b173a6fea633176123f0b827b868c9\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/TridentMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident sqrt helper library.\\nlibrary TridentMath {\\n    /// @notice Calculate sqrt (x) rounding down, where `x` is unsigned 256-bit integer number.\\n    /// @dev Adapted from https://github.com/abdk-consulting/abdk-libraries-solidity/blob/master/ABDKMath64x64.sol, \\n    /// \\u00a9 2019 ABDK Consulting, License-Identifier: BSD-4-Clause.\\n    /// @param x Unsigned 256-bit integer number.\\n    /// @return result Sqrt result.\\n    function sqrt(uint256 x) internal pure returns (uint256 result) {\\n        unchecked {\\n            if (x == 0) result = 0;\\n            else {\\n                uint256 xx = x;\\n                uint256 r = 1;\\n                if (xx >= 0x100000000000000000000000000000000) {\\n                    xx >>= 128;\\n                    r <<= 64;\\n                }\\n                if (xx >= 0x10000000000000000) {\\n                    xx >>= 64;\\n                    r <<= 32;\\n                }\\n                if (xx >= 0x100000000) {\\n                    xx >>= 32;\\n                    r <<= 16;\\n                }\\n                if (xx >= 0x10000) {\\n                    xx >>= 16;\\n                    r <<= 8;\\n                }\\n                if (xx >= 0x100) {\\n                    xx >>= 8;\\n                    r <<= 4;\\n                }\\n                if (xx >= 0x10) {\\n                    xx >>= 4;\\n                    r <<= 2;\\n                }\\n                if (xx >= 0x8) {\\n                    r <<= 1;\\n                }\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1; // @dev Seven iterations should be enough.\\n                uint256 r1 = x / r;\\n                result = r < r1 ? r : r1;\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xccbada517ace78149a4602ce782e6faf408404ee300569b8adf76e0eb7f0dd3b\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/ConstantProductPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../interfaces/IBentoBoxMinimal.sol\\\";\\nimport \\\"../interfaces/IMasterDeployer.sol\\\";\\nimport \\\"../interfaces/IPool.sol\\\";\\nimport \\\"../interfaces/ITridentCallee.sol\\\";\\nimport \\\"../libraries/TridentMath.sol\\\";\\nimport \\\"./TridentERC20.sol\\\";\\n\\n/// @notice Trident exchange pool template with constant product formula for swapping between an ERC-20 token pair.\\n/// @dev The reserves are stored as bento shares.\\n///      The curve is applied to shares as well. This pool does not care about the underlying amounts.\\ncontract ConstantProductPool is IPool, TridentERC20 {\\n    event Mint(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\\n    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\\n    event Sync(uint256 reserve0, uint256 reserve1);\\n\\n    uint256 internal constant MINIMUM_LIQUIDITY = 1000;\\n\\n    uint8 internal constant PRECISION = 112;\\n    uint256 internal constant MAX_FEE = 10000; // @dev 100%.\\n    uint256 internal constant MAX_FEE_SQUARE = 100000000;\\n    uint256 public immutable swapFee;\\n    uint256 internal immutable MAX_FEE_MINUS_SWAP_FEE;\\n\\n    address public immutable barFeeTo;\\n    IBentoBoxMinimal public immutable bento;\\n    IMasterDeployer public immutable masterDeployer;\\n    address public immutable token0;\\n    address public immutable token1;\\n\\n    uint256 public barFee;\\n    uint256 public price0CumulativeLast;\\n    uint256 public price1CumulativeLast;\\n    uint256 public kLast;\\n\\n    uint112 internal reserve0;\\n    uint112 internal reserve1;\\n    uint32 internal blockTimestampLast;\\n\\n    bytes32 public constant override poolIdentifier = \\\"Trident:ConstantProduct\\\";\\n\\n    uint256 internal unlocked;\\n    modifier lock() {\\n        require(unlocked == 1, \\\"LOCKED\\\");\\n        unlocked = 2;\\n        _;\\n        unlocked = 1;\\n    }\\n\\n    constructor(bytes memory _deployData, address _masterDeployer) {\\n        (address _token0, address _token1, uint256 _swapFee, bool _twapSupport) = abi.decode(\\n            _deployData,\\n            (address, address, uint256, bool)\\n        );\\n\\n        // @dev Factory ensures that the tokens are sorted.\\n        require(_token0 != address(0), \\\"ZERO_ADDRESS\\\");\\n        require(_token0 != _token1, \\\"IDENTICAL_ADDRESSES\\\");\\n        require(_token0 != address(this), \\\"INVALID_TOKEN\\\");\\n        require(_token1 != address(this), \\\"INVALID_TOKEN\\\");\\n        require(_swapFee <= MAX_FEE, \\\"INVALID_SWAP_FEE\\\");\\n\\n        token0 = _token0;\\n        token1 = _token1;\\n        swapFee = _swapFee;\\n        // @dev This is safe from underflow - `swapFee` cannot exceed `MAX_FEE` per previous check.\\n        unchecked {\\n            MAX_FEE_MINUS_SWAP_FEE = MAX_FEE - _swapFee;\\n        }\\n        barFee = IMasterDeployer(_masterDeployer).barFee();\\n        barFeeTo = IMasterDeployer(_masterDeployer).barFeeTo();\\n        bento = IBentoBoxMinimal(IMasterDeployer(_masterDeployer).bento());\\n        masterDeployer = IMasterDeployer(_masterDeployer);\\n        unlocked = 1;\\n        if (_twapSupport) blockTimestampLast = uint32(block.timestamp);\\n    }\\n\\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\\n    /// The router must ensure that sufficient LP tokens are minted by using the return value.\\n    function mint(bytes calldata data) public override lock returns (uint256 liquidity) {\\n        address recipient = abi.decode(data, (address));\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n\\n        uint256 computed = TridentMath.sqrt(balance0 * balance1);\\n        uint256 amount0 = balance0 - _reserve0;\\n        uint256 amount1 = balance1 - _reserve1;\\n\\n        (uint256 fee0, uint256 fee1) = _nonOptimalMintFee(amount0, amount1, _reserve0, _reserve1);\\n        _reserve0 += uint112(fee0);\\n        _reserve1 += uint112(fee1);\\n\\n        (uint256 _totalSupply, uint256 k) = _mintFee(_reserve0, _reserve1);\\n\\n        if (_totalSupply == 0) {\\n            require(amount0 > 0 && amount1 > 0, \\\"INVALID_AMOUNTS\\\");\\n            liquidity = computed - MINIMUM_LIQUIDITY;\\n            _mint(address(0), MINIMUM_LIQUIDITY);\\n        } else {\\n            uint256 kIncrease;\\n            unchecked {\\n                kIncrease = computed - k;\\n            }\\n            liquidity = (kIncrease * _totalSupply) / k;\\n        }\\n        require(liquidity != 0, \\\"INSUFFICIENT_LIQUIDITY_MINTED\\\");\\n        _mint(recipient, liquidity);\\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n        kLast = computed;\\n        uint256 liquidityForEvent = liquidity;\\n        emit Mint(msg.sender, amount0, amount1, recipient, liquidityForEvent);\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\\n    function burn(bytes calldata data) public override lock returns (IPool.TokenAmount[] memory withdrawnAmounts) {\\n        (address recipient, bool unwrapBento) = abi.decode(data, (address, bool));\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 liquidity = balanceOf[address(this)];\\n\\n        (uint256 _totalSupply, ) = _mintFee(_reserve0, _reserve1);\\n\\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\\n\\n        _burn(address(this), liquidity);\\n        _transfer(token0, amount0, recipient, unwrapBento);\\n        _transfer(token1, amount1, recipient, unwrapBento);\\n        // @dev This is safe from underflow - amounts are lesser figures derived from balances.\\n        unchecked {\\n            balance0 -= amount0;\\n            balance1 -= amount1;\\n        }\\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n        kLast = TridentMath.sqrt(balance0 * balance1);\\n\\n        withdrawnAmounts = new TokenAmount[](2);\\n        withdrawnAmounts[0] = TokenAmount({token: address(token0), amount: amount0});\\n        withdrawnAmounts[1] = TokenAmount({token: address(token1), amount: amount1});\\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\\n    /// - i.e., the user gets a single token out by burning LP tokens.\\n    function burnSingle(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenOut, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        uint256 liquidity = balanceOf[address(this)];\\n\\n        (uint256 _totalSupply, ) = _mintFee(_reserve0, _reserve1);\\n\\n        uint256 amount0 = (liquidity * _reserve0) / _totalSupply;\\n        uint256 amount1 = (liquidity * _reserve1) / _totalSupply;\\n\\n        kLast = TridentMath.sqrt((_reserve0 - amount0) * (_reserve1 - amount1));\\n\\n        _burn(address(this), liquidity);\\n\\n        // Swap one token for another\\n        unchecked {\\n            if (tokenOut == token1) {\\n                // @dev Swap `token0` for `token1`\\n                // - calculate `amountOut` as if the user first withdrew balanced liquidity and then swapped `token0` for `token1`.\\n                amount1 += _getAmountOut(amount0, _reserve0 - amount0, _reserve1 - amount1);\\n                _transfer(token1, amount1, recipient, unwrapBento);\\n                amountOut = amount1;\\n                amount0 = 0;\\n            } else {\\n                // @dev Swap `token1` for `token0`.\\n                require(tokenOut == token0, \\\"INVALID_OUTPUT_TOKEN\\\");\\n                amount0 += _getAmountOut(amount1, _reserve1 - amount1, _reserve0 - amount0);\\n                _transfer(token0, amount0, recipient, unwrapBento);\\n                amountOut = amount0;\\n                amount1 = 0;\\n            }\\n        }\\n\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n\\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\\n    function swap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        require(_reserve0 > 0, \\\"POOL_UNINITIALIZED\\\");\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 amountIn;\\n        address tokenOut;\\n        unchecked {\\n            if (tokenIn == token0) {\\n                tokenOut = token1;\\n                amountIn = balance0 - _reserve0;\\n                amountOut = _getAmountOut(amountIn, _reserve0, _reserve1);\\n                balance1 -= amountOut;\\n            } else {\\n                require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n                tokenOut = token0;\\n                amountIn = balance1 - reserve1;\\n                amountOut = _getAmountOut(amountIn, _reserve1, _reserve0);\\n                balance0 -= amountOut;\\n            }\\n        }\\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage.\\n    function flashSwap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address recipient, bool unwrapBento, uint256 amountIn, bytes memory context) = abi.decode(\\n            data,\\n            (address, address, bool, uint256, bytes)\\n        );\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        require(_reserve0 > 0, \\\"POOL_UNINITIALIZED\\\");\\n        unchecked {\\n            if (tokenIn == token0) {\\n                amountOut = _getAmountOut(amountIn, _reserve0, _reserve1);\\n                _transfer(token1, amountOut, recipient, unwrapBento);\\n                ITridentCallee(msg.sender).tridentSwapCallback(context);\\n                (uint256 balance0, uint256 balance1) = _balance();\\n                require(balance0 - _reserve0 >= amountIn, \\\"INSUFFICIENT_AMOUNT_IN\\\");\\n                _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n                emit Swap(recipient, tokenIn, token1, amountIn, amountOut);\\n            } else {\\n                require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n                amountOut = _getAmountOut(amountIn, _reserve1, _reserve0);\\n                _transfer(token0, amountOut, recipient, unwrapBento);\\n                ITridentCallee(msg.sender).tridentSwapCallback(context);\\n                (uint256 balance0, uint256 balance1) = _balance();\\n                require(balance1 - _reserve1 >= amountIn, \\\"INSUFFICIENT_AMOUNT_IN\\\");\\n                _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n                emit Swap(recipient, tokenIn, token0, amountIn, amountOut);\\n            }\\n        }\\n    }\\n\\n    /// @dev Updates `barFee` for Trident protocol.\\n    function updateBarFee() public {\\n        barFee = IMasterDeployer(masterDeployer).barFee();\\n    }\\n\\n    function _getReserves()\\n        internal\\n        view\\n        returns (\\n            uint112 _reserve0,\\n            uint112 _reserve1,\\n            uint32 _blockTimestampLast\\n        )\\n    {\\n        _reserve0 = reserve0;\\n        _reserve1 = reserve1;\\n        _blockTimestampLast = blockTimestampLast;\\n    }\\n\\n    function _balance() internal view returns (uint256 balance0, uint256 balance1) {\\n        balance0 = bento.balanceOf(token0, address(this));\\n        balance1 = bento.balanceOf(token1, address(this));\\n    }\\n\\n    function _update(\\n        uint256 balance0,\\n        uint256 balance1,\\n        uint112 _reserve0,\\n        uint112 _reserve1,\\n        uint32 _blockTimestampLast\\n    ) internal {\\n        require(balance0 <= type(uint112).max && balance1 <= type(uint112).max, \\\"OVERFLOW\\\");\\n        if (_blockTimestampLast == 0) {\\n            // @dev TWAP support is disabled for gas efficiency.\\n            reserve0 = uint112(balance0);\\n            reserve1 = uint112(balance1);\\n        } else {\\n            uint32 blockTimestamp = uint32(block.timestamp);\\n            if (blockTimestamp != _blockTimestampLast && _reserve0 != 0 && _reserve1 != 0) {\\n                unchecked {\\n                    uint32 timeElapsed = blockTimestamp - _blockTimestampLast;\\n                    uint256 price0 = (uint256(_reserve1) << PRECISION) / _reserve0;\\n                    price0CumulativeLast += price0 * timeElapsed;\\n                    uint256 price1 = (uint256(_reserve0) << PRECISION) / _reserve1;\\n                    price1CumulativeLast += price1 * timeElapsed;\\n                }\\n            }\\n            reserve0 = uint112(balance0);\\n            reserve1 = uint112(balance1);\\n            blockTimestampLast = blockTimestamp;\\n        }\\n        emit Sync(balance0, balance1);\\n    }\\n\\n    function _mintFee(uint112 _reserve0, uint112 _reserve1) internal returns (uint256 _totalSupply, uint256 computed) {\\n        _totalSupply = totalSupply;\\n        uint256 _kLast = kLast;\\n        if (_kLast != 0) {\\n            computed = TridentMath.sqrt(uint256(_reserve0) * _reserve1);\\n            if (computed > _kLast) {\\n                // @dev `barFee` % of increase in liquidity.\\n                uint256 _barFee = barFee;\\n                uint256 numerator = _totalSupply * (computed - _kLast) * _barFee;\\n                uint256 denominator = (MAX_FEE - _barFee) * computed + _barFee * _kLast;\\n                uint256 liquidity = numerator / denominator;\\n\\n                if (liquidity != 0) {\\n                    _mint(barFeeTo, liquidity);\\n                    _totalSupply += liquidity;\\n                }\\n            }\\n        }\\n    }\\n\\n    function _getAmountOut(\\n        uint256 amountIn,\\n        uint256 reserveAmountIn,\\n        uint256 reserveAmountOut\\n    ) internal view returns (uint256 amountOut) {\\n        uint256 amountInWithFee = amountIn * MAX_FEE_MINUS_SWAP_FEE;\\n        amountOut = (amountInWithFee * reserveAmountOut) / (reserveAmountIn * MAX_FEE + amountInWithFee);\\n    }\\n\\n    function _getAmountIn(\\n        uint256 amountOut,\\n        uint256 reserveAmountIn,\\n        uint256 reserveAmountOut\\n    ) internal view returns (uint256 amountIn) {\\n        amountIn = (reserveAmountIn * amountOut * MAX_FEE) / ((reserveAmountOut - amountOut) * MAX_FEE_MINUS_SWAP_FEE) + 1;\\n    }\\n\\n    function _transfer(\\n        address token,\\n        uint256 shares,\\n        address to,\\n        bool unwrapBento\\n    ) internal {\\n        if (unwrapBento) {\\n            bento.withdraw(token, address(this), to, 0, shares);\\n        } else {\\n            bento.transfer(token, address(this), to, shares);\\n        }\\n    }\\n\\n    /// @dev This fee is charged to cover for `swapFee` when users add unbalanced liquidity.\\n    function _nonOptimalMintFee(\\n        uint256 _amount0,\\n        uint256 _amount1,\\n        uint256 _reserve0,\\n        uint256 _reserve1\\n    ) internal view returns (uint256 token0Fee, uint256 token1Fee) {\\n        if (_reserve0 == 0 || _reserve1 == 0) return (0, 0);\\n        uint256 amount1Optimal = (_amount0 * _reserve1) / _reserve0;\\n        if (amount1Optimal <= _amount1) {\\n            token1Fee = (swapFee * (_amount1 - amount1Optimal)) / (2 * MAX_FEE);\\n        } else {\\n            uint256 amount0Optimal = (_amount1 * _reserve0) / _reserve1;\\n            token0Fee = (swapFee * (_amount0 - amount0Optimal)) / (2 * MAX_FEE);\\n        }\\n    }\\n\\n    function getAssets() public view override returns (address[] memory assets) {\\n        assets = new address[](2);\\n        assets[0] = token0;\\n        assets[1] = token1;\\n    }\\n\\n    function getAmountOut(bytes calldata data) public view override returns (uint256 finalAmountOut) {\\n        (address tokenIn, uint256 amountIn) = abi.decode(data, (address, uint256));\\n        (uint112 _reserve0, uint112 _reserve1, ) = _getReserves();\\n        if (tokenIn == token0) {\\n            finalAmountOut = _getAmountOut(amountIn, _reserve0, _reserve1);\\n        } else {\\n            require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n            finalAmountOut = _getAmountOut(amountIn, _reserve1, _reserve0);\\n        }\\n    }\\n\\n    function getAmountIn(bytes calldata data) public view override returns (uint256 finalAmountIn) {\\n        (address tokenOut, uint256 amountOut) = abi.decode(data, (address, uint256));\\n        (uint112 _reserve0, uint112 _reserve1, ) = _getReserves();\\n        if (tokenOut == token1) {\\n            finalAmountIn = _getAmountIn(amountOut, _reserve0, _reserve1);\\n        } else {\\n            require(tokenOut == token0, \\\"INVALID_OUTPUT_TOKEN\\\");\\n            finalAmountIn = _getAmountIn(amountOut, _reserve1, _reserve0);\\n        }\\n    }\\n\\n    /// @dev returned values are in terms of BentoBox \\\"shares\\\".\\n    function getReserves()\\n        public\\n        view\\n        returns (\\n            uint112 _reserve0,\\n            uint112 _reserve1,\\n            uint32 _blockTimestampLast\\n        )\\n    {\\n        return _getReserves();\\n    }\\n\\n    /// @dev returned values are the native ERC20 token amounts.\\n    function getNativeReserves()\\n        public\\n        view\\n        returns (\\n            uint256 _nativeReserve0,\\n            uint256 _nativeReserve1,\\n            uint32 _blockTimestampLast\\n        )\\n    {\\n        (uint112 _reserve0, uint112 _reserve1, uint32 __blockTimestampLast) = _getReserves();\\n        _nativeReserve0 = bento.toAmount(token0, _reserve0, false);\\n        _nativeReserve1 = bento.toAmount(token1, _reserve1, false);\\n        _blockTimestampLast = __blockTimestampLast;\\n    }\\n}\\n\",\"keccak256\":\"0x0de09b6ee01817a5ad1c8cbfbd19b4afcd45f6e50486ed2034c9159aaff2645a\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/TridentERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool ERC-20 with EIP-2612 extension.\\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol,\\n/// License-Identifier: AGPL-3.0-only.\\nabstract contract TridentERC20 {\\n    event Transfer(address indexed sender, address indexed recipient, uint256 amount);\\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\\n\\n    string public constant name = \\\"Sushi LP Token\\\";\\n    string public constant symbol = \\\"SLP\\\";\\n    uint8 public constant decimals = 18;\\n\\n    uint256 public totalSupply;\\n    /// @notice owner -> balance mapping.\\n    mapping(address => uint256) public balanceOf;\\n    /// @notice owner -> spender -> allowance mapping.\\n    mapping(address => mapping(address => uint256)) public allowance;\\n\\n    /// @notice Chain Id at this contract's deployment.\\n    uint256 internal immutable DOMAIN_SEPARATOR_CHAIN_ID;\\n    /// @notice EIP-712 typehash for this contract's domain at deployment.\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n    /// @notice EIP-712 typehash for this contract's {permit} struct.\\n    bytes32 public constant PERMIT_TYPEHASH =\\n        keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n    /// @notice owner -> nonce mapping used in {permit}.\\n    mapping(address => uint256) public nonces;\\n\\n    constructor() {\\n        DOMAIN_SEPARATOR_CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _calculateDomainSeparator();\\n    }\\n\\n    function _calculateDomainSeparator() internal view returns (bytes32 domainSeperator) {\\n        domainSeperator = keccak256(\\n            abi.encode(\\n                keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"),\\n                keccak256(bytes(name)),\\n                keccak256(bytes(\\\"1\\\")),\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    /// @notice EIP-712 typehash for this contract's domain.\\n    function DOMAIN_SEPARATOR() public view returns (bytes32 domainSeperator) {\\n        domainSeperator = block.chainid == DOMAIN_SEPARATOR_CHAIN_ID ? _DOMAIN_SEPARATOR : _calculateDomainSeparator();\\n    }\\n\\n    /// @notice Approves `amount` from `msg.sender` to be spent by `spender`.\\n    /// @param spender Address of the party that can pull tokens from `msg.sender`'s account.\\n    /// @param amount The maximum collective `amount` that `spender` can pull.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function approve(address spender, uint256 amount) external returns (bool) {\\n        allowance[msg.sender][spender] = amount;\\n        emit Approval(msg.sender, spender, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `msg.sender` to `recipient`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transfer(address recipient, uint256 amount) external returns (bool) {\\n        balanceOf[msg.sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(msg.sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\\n    /// @param sender Address to pull tokens `from`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool) {\\n        if (allowance[sender][msg.sender] != type(uint256).max) {\\n            allowance[sender][msg.sender] -= amount;\\n        }\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Triggers an approval from `owner` to `spender`.\\n    /// @param owner The address to approve from.\\n    /// @param spender The address to be approved.\\n    /// @param amount The number of tokens that are approved (2^256-1 means infinite).\\n    /// @param deadline The time at which to expire the signature.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        require(deadline >= block.timestamp, \\\"PERMIT_DEADLINE_EXPIRED\\\");\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                \\\"\\\\x19\\\\x01\\\",\\n                DOMAIN_SEPARATOR(),\\n                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))\\n            )\\n        );\\n        address recoveredAddress = ecrecover(digest, v, r, s);\\n        require(recoveredAddress != address(0) && recoveredAddress == owner, \\\"INVALID_PERMIT_SIGNATURE\\\");\\n        allowance[recoveredAddress][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    function _mint(address recipient, uint256 amount) internal {\\n        totalSupply += amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(address(0), recipient, amount);\\n    }\\n\\n    function _burn(address sender, uint256 amount) internal {\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from underflow - users won't ever\\n        // have a balance larger than `totalSupply`.\\n        unchecked {\\n            totalSupply -= amount;\\n        }\\n        emit Transfer(sender, address(0), amount);\\n    }\\n}\\n\",\"keccak256\":\"0xb249a6d507f6911b7de4f9655a9736710fac9847982ad9afa18650db9a84794d\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 11917,
                "contract": "contracts/pool/ConstantProductPool.sol:ConstantProductPool",
                "label": "totalSupply",
                "offset": 0,
                "slot": "0",
                "type": "t_uint256"
              },
              {
                "astId": 11922,
                "contract": "contracts/pool/ConstantProductPool.sol:ConstantProductPool",
                "label": "balanceOf",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 11929,
                "contract": "contracts/pool/ConstantProductPool.sol:ConstantProductPool",
                "label": "allowance",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
              },
              {
                "astId": 11946,
                "contract": "contracts/pool/ConstantProductPool.sol:ConstantProductPool",
                "label": "nonces",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 5959,
                "contract": "contracts/pool/ConstantProductPool.sol:ConstantProductPool",
                "label": "barFee",
                "offset": 0,
                "slot": "4",
                "type": "t_uint256"
              },
              {
                "astId": 5961,
                "contract": "contracts/pool/ConstantProductPool.sol:ConstantProductPool",
                "label": "price0CumulativeLast",
                "offset": 0,
                "slot": "5",
                "type": "t_uint256"
              },
              {
                "astId": 5963,
                "contract": "contracts/pool/ConstantProductPool.sol:ConstantProductPool",
                "label": "price1CumulativeLast",
                "offset": 0,
                "slot": "6",
                "type": "t_uint256"
              },
              {
                "astId": 5965,
                "contract": "contracts/pool/ConstantProductPool.sol:ConstantProductPool",
                "label": "kLast",
                "offset": 0,
                "slot": "7",
                "type": "t_uint256"
              },
              {
                "astId": 5967,
                "contract": "contracts/pool/ConstantProductPool.sol:ConstantProductPool",
                "label": "reserve0",
                "offset": 0,
                "slot": "8",
                "type": "t_uint112"
              },
              {
                "astId": 5969,
                "contract": "contracts/pool/ConstantProductPool.sol:ConstantProductPool",
                "label": "reserve1",
                "offset": 14,
                "slot": "8",
                "type": "t_uint112"
              },
              {
                "astId": 5971,
                "contract": "contracts/pool/ConstantProductPool.sol:ConstantProductPool",
                "label": "blockTimestampLast",
                "offset": 28,
                "slot": "8",
                "type": "t_uint32"
              },
              {
                "astId": 5977,
                "contract": "contracts/pool/ConstantProductPool.sol:ConstantProductPool",
                "label": "unlocked",
                "offset": 0,
                "slot": "9",
                "type": "t_uint256"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_mapping(t_address,t_mapping(t_address,t_uint256))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_uint256)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_uint112": {
                "encoding": "inplace",
                "label": "uint112",
                "numberOfBytes": "14"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint32": {
                "encoding": "inplace",
                "label": "uint32",
                "numberOfBytes": "4"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "DOMAIN_SEPARATOR()": {
                "notice": "EIP-712 typehash for this contract's domain."
              },
              "PERMIT_TYPEHASH()": {
                "notice": "EIP-712 typehash for this contract's {permit} struct."
              },
              "allowance(address,address)": {
                "notice": "owner -> spender -> allowance mapping."
              },
              "approve(address,uint256)": {
                "notice": "Approves `amount` from `msg.sender` to be spent by `spender`."
              },
              "balanceOf(address)": {
                "notice": "owner -> balance mapping."
              },
              "getAmountIn(bytes)": {
                "notice": "Simulates a trade and returns the expected output."
              },
              "getAmountOut(bytes)": {
                "notice": "Simulates a trade and returns the expected output."
              },
              "nonces(address)": {
                "notice": "owner -> nonce mapping used in {permit}."
              },
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Triggers an approval from `owner` to `spender`."
              },
              "transfer(address,uint256)": {
                "notice": "Transfers `amount` tokens from `msg.sender` to `recipient`."
              },
              "transferFrom(address,address,uint256)": {
                "notice": "Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`."
              }
            },
            "notice": "Trident exchange pool template with constant product formula for swapping between an ERC-20 token pair.",
            "version": 1
          }
        }
      },
      "contracts/pool/ConstantProductPoolFactory.sol": {
        "ConstantProductPoolFactory": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "InvalidTokenOrder",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnauthorisedDeployer",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ZeroAddress",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "configAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "startIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "name": "getPools",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "pairPools",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                }
              ],
              "name": "poolsCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Mudit Gupta.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_11730": {
                  "entryPoint": null,
                  "id": 11730,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_7690": {
                  "entryPoint": null,
                  "id": 7690,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 109,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:306:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:290:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b5060405161536038038061536083398101604081905261002f9161006d565b806001600160a01b0381166100575760405163d92e233d60e01b815260040160405180910390fd5b60601b6001600160601b0319166080525061009d565b60006020828403121561007f57600080fd5b81516001600160a01b038116811461009657600080fd5b9392505050565b60805160601c6152976100c96000396000818161015a0152818161038d015261054201526152976000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c806371a25812116200005657806371a25812146200012e578063cf58879a1462000154578063f6ab6d99146200017c57600080fd5b8063169c4cef146200008057806327c3cae114620000c15780635bc93d6c14620000d8575b600080fd5b620000976200009136600462000938565b620001b5565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b62000097620000d2366004620009e3565b62000208565b6200011f620000e9366004620008fa565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526020818152604080832093909416825291909152205490565b604051908152602001620000b8565b620001456200013f3660046200097e565b62000401565b604051620000b8919062000abc565b620000977f000000000000000000000000000000000000000000000000000000000000000081565b620000976200018d366004620009c9565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60006020528260005260406000206020528160005260406000208181548110620001de57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16925083915050565b6000806000806000858060200190518101906200022691906200089a565b93509350935093508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16111562000267579192915b6040805173ffffffffffffffffffffffffffffffffffffffff808716602083015285169181019190915260608101839052811515608082015260a001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152600280845260608401909252975060009190816020016020820280368337019050509050848160008151811062000309576200030962000c32565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083816001815181106200035a576200035a62000c32565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101820152875190880120604051819089907f000000000000000000000000000000000000000000000000000000000000000090620003b8906200088c565b620003c592919062000b18565b8190604051809103906000f5905080158015620003e6573d6000803e3d6000fd5b509650620003f68783836200052a565b505050505050919050565b60608167ffffffffffffffff8111156200041f576200041f62000c61565b60405190808252806020026020018201604052801562000449578160200160208202803683370190505b50905060005b82811015620005215773ffffffffffffffffffffffffffffffffffffffff80871660009081526020818152604080832093891683529290522062000494828662000bac565b81548110620004a757620004a762000c32565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110620004e757620004e762000c32565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015280620005188162000bc7565b9150506200044f565b50949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146200059a576040517f03781a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555b600183510381101562000886578281600101815181106200060c576200060c62000c32565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106200063f576200063f62000c32565b602002602001015173ffffffffffffffffffffffffffffffffffffffff161062000695576040517f3f06bf8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015b83518110156200087c57600080858481518110620006bc57620006bc62000c32565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085838151811062000715576200071562000c32565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409091016000908120805460018101825590825291812090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915584518190869084908110620007a457620007a462000c32565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858481518110620007fd57620007fd62000c32565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604090910160009081208054600180820183559183529290912090910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001692881692909217909155016200069a565b50600101620005e7565b50505050565b6145ab8062000cb783390190565b60008060008060808587031215620008b157600080fd5b8451620008be8162000c90565b6020860151909450620008d18162000c90565b6040860151606087015191945092508015158114620008ef57600080fd5b939692955090935050565b600080604083850312156200090e57600080fd5b82356200091b8162000c90565b915060208301356200092d8162000c90565b809150509250929050565b6000806000606084860312156200094e57600080fd5b83356200095b8162000c90565b925060208401356200096d8162000c90565b929592945050506040919091013590565b600080600080608085870312156200099557600080fd5b8435620009a28162000c90565b93506020850135620009b48162000c90565b93969395505050506040820135916060013590565b600060208284031215620009dc57600080fd5b5035919050565b600060208284031215620009f657600080fd5b813567ffffffffffffffff8082111562000a0f57600080fd5b818401915084601f83011262000a2457600080fd5b81358181111562000a395762000a3962000c61565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171562000a825762000a8262000c61565b8160405282815287602084870101111562000a9c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6020808252825182820181905260009190848201906040850190845b8181101562000b0c57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162000ad8565b50909695505050505050565b604081526000835180604084015260005b8181101562000b48576020818701810151606086840101520162000b29565b8181111562000b5b576000606083860101525b5073ffffffffffffffffffffffffffffffffffffffff93909316602083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b6000821982111562000bc25762000bc262000c03565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000bfc5762000bfc62000c03565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811462000cb357600080fd5b5056fe6101a06040523480156200001257600080fd5b50604051620045ab380380620045ab83398101604081905262000035916200056a565b4660805262000112604080518082018252600e81526d29bab9b434902628102a37b5b2b760911b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b60a08181525050600080600080858060200190518101906200013591906200050a565b929650909450925090506001600160a01b0384166200018a5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064015b60405180910390fd5b826001600160a01b0316846001600160a01b03161415620001ee5760405162461bcd60e51b815260206004820152601360248201527f4944454e544943414c5f41444452455353455300000000000000000000000000604482015260640162000181565b6001600160a01b038416301415620002395760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015260640162000181565b6001600160a01b038316301415620002845760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015260640162000181565b612710821115620002cb5760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f535741505f46454560801b604482015260640162000181565b6001600160601b0319606085811b82166101605284901b166101805260c082905261271082900360e052604080516360a56c0160e11b815290516001600160a01b0387169163c14ad802916004808301926020929190829003018186803b1580156200033657600080fd5b505afa1580156200034b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037191906200065b565b600481905550846001600160a01b0316630c0a0cd26040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b157600080fd5b505afa158015620003c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ec9190620004e3565b6001600160a01b0316610100816001600160a01b031660601b81525050846001600160a01b0316634da318276040518163ffffffff1660e01b815260040160206040518083038186803b1580156200044357600080fd5b505afa15801562000458573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047e9190620004e3565b6001600160601b0319606091821b8116610120529086901b166101405260016009558015620004c557600880546001600160e01b0316600160e01b4263ffffffff16021790555b505050505050620006a4565b8051620004de816200068b565b919050565b600060208284031215620004f657600080fd5b815162000503816200068b565b9392505050565b600080600080608085870312156200052157600080fd5b84516200052e816200068b565b602086015190945062000541816200068b565b60408601516060870151919450925080151581146200055f57600080fd5b939692955090935050565b600080604083850312156200057e57600080fd5b82516001600160401b03808211156200059657600080fd5b818501915085601f830112620005ab57600080fd5b815181811115620005c057620005c062000675565b604051601f8201601f19908116603f01168101908382118183101715620005eb57620005eb62000675565b816040528281526020935088848487010111156200060857600080fd5b600091505b828210156200062c57848201840151818301850152908301906200060d565b828211156200063e5760008484830101525b955062000650915050858201620004d1565b925050509250929050565b6000602082840312156200066e57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114620006a157600080fd5b50565b60805160a05160c05160e0516101005160601c6101205160601c6101405160601c6101605160601c6101805160601c613d7662000835600039600081816106060152818161085e0152818161098d01528181610a3b015281816110be015281816111c60152818161145c0152818161179c0152818161180b01528181611b6201528181611cc10152818161221f01528181612530015281816125b70152612e16015260008181610364015281816107da01528181610b2001528181610c4f015281816110920152818161115d015281816114e201528181611748015281816118ec01528181611a5c01528181611c53015281816121a0015281816125ec015281816126d70152612d2c0152600081816105df015261208801526000818161042301528181611aa901528181611baa01528181612bb001528181612c8c01528181612d5f0152612e470152600081816103180152613250015260008181612aee01526134ab01526000818161044a0152818161356d01526135d8015260006113c30152600061129a0152613d766000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c8063627dd56a11610145578063a69840a8116100bd578063c14ad8021161008c578063d21220a711610071578063d21220a714610601578063d505accf14610628578063dd62ed3e1461063b57600080fd5b8063c14ad802146105d1578063cf58879a146105da57600080fd5b8063a69840a814610571578063a8f1f52e14610598578063a9059cbb146105ab578063af8c09bf146105be57600080fd5b80637464fc3d116101145780637ecebe00116100f95780637ecebe001461050b57806392bc32191461052b57806395d89b411461053557600080fd5b80637464fc3d146104ef5780637ba0e2e7146104f857600080fd5b8063627dd56a1461047e57806365dfc7671461049157806367e4ac2c146104ba57806370a08231146104cf57600080fd5b80632a07b6c7116101d8578063499a3c50116101a757806354cf2aeb1161018c57806354cf2aeb146104455780635909c0d51461046c5780635a3d54931461047557600080fd5b8063499a3c501461040b5780634da318271461041e57600080fd5b80632a07b6c7146103a257806330adf81f146103c2578063313ce567146103e95780633644e5151461040357600080fd5b80630c0a0cd2116102145780630c0a0cd2146103135780630dfe16811461035f57806318160ddd1461038657806323b872dd1461038f57600080fd5b8063053da1c81461024657806306fdde031461026c5780630902f1ac146102b5578063095ea7b3146102f0575b600080fd5b610259610254366004613961565b610666565b6040519081526020015b60405180910390f35b6102a86040518060400160405280600e81526020017f5375736869204c5020546f6b656e00000000000000000000000000000000000081525081565b6040516102639190613b3a565b6102bd610d0b565b604080516dffffffffffffffffffffffffffff948516815293909216602084015263ffffffff1690820152606001610263565b6103036102fe366004613844565b610d74565b6040519015158152602001610263565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610263565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b61025960005481565b61030361039d3660046138a9565b610ded565b6103b56103b0366004613961565b610f39565b6040516102639190613ad5565b6102597f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103f1601281565b60405160ff9091168152602001610263565b610259611296565b610259610419366004613961565b6113e5565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b61025960055481565b61025960065481565b61025961048c366004613961565b6115cd565b6104996119bd565b60408051938452602084019290925263ffffffff1690820152606001610263565b6104c2611c31565b6040516102639190613a7b565b6102596104dd366004613695565b60016020526000908152604090205481565b61025960075481565b610259610506366004613961565b611d30565b610259610519366004613695565b60036020526000908152604090205481565b610533612086565b005b6102a86040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b6102597f54726964656e743a436f6e7374616e7450726f6475637400000000000000000081565b6102596105a6366004613961565b612129565b6103036105b9366004613844565b6122fd565b6102596105cc366004613961565b612382565b61025960045481565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b6105336106363660046138ea565b612794565b610259610649366004613870565b600260209081526000928352604080842090915290825290205481565b60006009546001146106d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60026009556000808080806106f087890189613700565b9450945094509450945060008060006107586008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092506000836dffffffffffffffffffffffffffff16116107d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f504f4f4c5f554e494e495449414c495a4544000000000000000000000000000060448201526064016106d0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610a395761085785846dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff16612ae6565b98506108857f00000000000000000000000000000000000000000000000000000000000000008a8989612b49565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b1906108c1908790600401613b3a565b600060405180830381600087803b1580156108db57600080fd5b505af11580156108ef573d6000803e3d6000fd5b505050506000806108fe612cef565b9150915086856dffffffffffffffffffffffffffff168303101561097e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e0000000000000000000060448201526064016106d0565b61098b8282878787612ec9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610a2a929190918252602082015260400190565b60405180910390a45050610cf7565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106d0565b610b1985836dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff16612ae6565b9850610b477f00000000000000000000000000000000000000000000000000000000000000008a8989612b49565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b190610b83908790600401613b3a565b600060405180830381600087803b158015610b9d57600080fd5b505af1158015610bb1573d6000803e3d6000fd5b50505050600080610bc0612cef565b9150915086846dffffffffffffffffffffffffffff1682031015610c40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e0000000000000000000060448201526064016106d0565b610c4d8282878787612ec9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610cec929190918252602082015260400190565b60405180910390a450505b505060016009555094979650505050505050565b6000806000610d696008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250909192565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ddc9086815260200190565b60405180910390a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610e8a5773ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915281208054849290610e84908490613c0f565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604081208054849290610ebf908490613c0f565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260016020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f279086815260200190565b60405180910390a35060019392505050565b6060600954600114610fa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106d0565b6002600955600080610fbb8486018661380f565b91509150600080600061101d6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b92509250925060008061102e612cef565b3060009081526001602052604081205492945090925061104e87876131a8565b50905060008161105e8685613bd2565b6110689190613b97565b90506000826110778686613bd2565b6110819190613b97565b905061108d308561328f565b6110b97f0000000000000000000000000000000000000000000000000000000000000000838d8d612b49565b6110e57f0000000000000000000000000000000000000000000000000000000000000000828d8d612b49565b818603955080850394506110fc86868b8b8b612ec9565b61110e6111098688613bd2565b613322565b6007556040805160028082526060820190925290816020015b6040805180820190915260008082526020820152815260200190600190039081611127579050509b5060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001838152508c6000815181106111ae576111ae613cbd565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001828152508c60018151811061121757611217613cbd565b60209081029190910181019190915260408051848152918201839052810185905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a35050600160095550979a9950505050505050505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146113c05750604080518082018252600e81527f5375736869204c5020546f6b656e00000000000000000000000000000000000060209182015281518083018352600181527f31000000000000000000000000000000000000000000000000000000000000009082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600080806113f584860186613844565b915091506000806114556008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b50915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156114e0576114d983836dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff166134a7565b94506115c3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e00000000000000000000000060448201526064016106d0565b6115c083826dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff166134a7565b94505b5050505092915050565b600060095460011461163b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106d0565b600260095560008080611650858701876136b9565b92509250925060008060006116b46008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092506000836dffffffffffffffffffffffffffff1611611734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f504f4f4c5f554e494e495449414c495a4544000000000000000000000000000060448201526064016106d0565b60008061173f612cef565b915091506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415611809577f00000000000000000000000000000000000000000000000000000000000000009050866dffffffffffffffffffffffffffff16840391506117fd82886dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff16612ae6565b9a508a83039250611925565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16146118be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106d0565b50506008546dffffffffffffffffffffffffffff6e01000000000000000000000000000090910481168203907f00000000000000000000000000000000000000000000000000000000000000009061191d908390888116908a16612ae6565b9a508a840393505b611931818c8b8b612b49565b61193e8484898989612ec9565b8073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062858f604051610cec929190918252602082015260400190565b600080600080600080611a1f6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b6040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526dffffffffffffffffffffffffffff851660248301526000604483015293965091945092507f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b158015611aed57600080fd5b505afa158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2591906139d3565b6040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526dffffffffffffffffffffffffffff85166024830152600060448301529197507f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b158015611bee57600080fd5b505afa158015611c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2691906139d3565b959690945092505050565b60408051600280825260608083018452926020830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110611c8557611c85613cbd565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611cf357611cf3613cbd565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b6000600954600114611d9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106d0565b60026009556000611db183850185613695565b90506000806000611e116008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250600080611e22612cef565b90925090506000611e366111098385613bd2565b90506000611e546dffffffffffffffffffffffffffff881685613c0f565b90506000611e726dffffffffffffffffffffffffffff881685613c0f565b9050600080611ea384848c6dffffffffffffffffffffffffffff168c6dffffffffffffffffffffffffffff16613512565b9092509050611eb2828b613b4d565b9950611ebe818a613b4d565b9850600080611ecd8c8c6131a8565b915091508160001415611f7057600086118015611eea5750600085115b611f50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f414d4f554e5453000000000000000000000000000000000060448201526064016106d0565b611f5c6103e888613c0f565b9d50611f6b60006103e8613615565b611f8c565b80870381611f7e8483613bd2565b611f889190613b97565b9e50505b8d611ff3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e54454400000060448201526064016106d0565b611ffd8d8f613615565b61200a89898e8e8e612ec9565b600787905560408051878152602081018790529081018f90528e9073ffffffffffffffffffffffffffffffffffffffff8f169033907ff9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e9060600160405180910390a350506001600955509a9d9c50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b1580156120ec57600080fd5b505afa158015612100573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212491906139d3565b600455565b6000808061213984860186613844565b915091506000806121996008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b50915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561221d576114d983836dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff16612ae6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146122d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106d0565b6115c083826dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff16612ae6565b3360009081526001602052604081208054839190839061231e908490613c0f565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ddc9086815260200190565b60006009546001146123f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106d0565b600260095560008080612405858701876136b9565b92509250925060008060006124696008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b30600090815260016020526040812054939650919450925061248b85856131a8565b5090506000816124ab6dffffffffffffffffffffffffffff881685613bd2565b6124b59190613b97565b90506000826124d46dffffffffffffffffffffffffffff881686613bd2565b6124de9190613b97565b90506125216124fd826dffffffffffffffffffffffffffff8916613c0f565b612517846dffffffffffffffffffffffffffff8b16613c0f565b6111099190613bd2565b60075561252e308561328f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614156125ea576125b18283896dffffffffffffffffffffffffffff160383896dffffffffffffffffffffffffffff1603612ae6565b016125de7f0000000000000000000000000000000000000000000000000000000000000000828b8b612b49565b809a5060009150612705565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161461269f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e00000000000000000000000060448201526064016106d0565b6126ce8182886dffffffffffffffffffffffffffff1603848a6dffffffffffffffffffffffffffff1603612ae6565b820191506126fe7f0000000000000000000000000000000000000000000000000000000000000000838b8b612b49565b5098508860005b600080612710612cef565b9150915061272182828b8b8b612ec9565b604080518581526020810185905290810187905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a35050600160095550989b9a5050505050505050505050565b428410156127fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016106d0565b6000612808611296565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c9290919061286383613c26565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016129049291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa15801561298d573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590612a0857508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612a6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e4154555245000000000000000060448201526064016106d0565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b600080612b137f000000000000000000000000000000000000000000000000000000000000000086613bd2565b905080612b2261271086613bd2565b612b2c9190613b7f565b612b368483613bd2565b612b409190613b97565b95945050505050565b8015612c32576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152306024830152838116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b158015612bf357600080fd5b505af1158015612c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2b91906139ec565b5050612ce9565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301528381166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401600060405180830381600087803b158015612cd057600080fd5b505af1158015612ce4573d6000803e3d6000fd5b505050505b50505050565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015230602483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063f7888aec9060440160206040518083038186803b158015612da157600080fd5b505afa158015612db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd991906139d3565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301529193507f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b158015612e8b57600080fd5b505afa158015612e9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec391906139d3565b90509091565b6dffffffffffffffffffffffffffff8511801590612ef557506dffffffffffffffffffffffffffff8411155b612f5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4f564552464c4f5700000000000000000000000000000000000000000000000060448201526064016106d0565b63ffffffff8116612fbd57600880546dffffffffffffffffffffffffffff8681166e010000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090921690881617179055613168565b4263ffffffff80821690831614801590612fe657506dffffffffffffffffffffffffffff841615155b801561300157506dffffffffffffffffffffffffffff831615155b156130c65781810360006dffffffffffffffffffffffffffff86167bffffffffffffffffffffffffffff0000000000000000000000000000607087901b168161304c5761304c613c8e565b600580549290910463ffffffff851681029092019055905060006dffffffffffffffffffffffffffff8616607088901b7bffffffffffffffffffffffffffff000000000000000000000000000016816130a7576130a7613c8e565b0490508263ffffffff1681026006600082825401925050819055505050505b6008805463ffffffff9092167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8881166e010000000000000000000000000000027fffffffff00000000000000000000000000000000000000000000000000000000909516908a161793909317929092169190911790555b60408051868152602081018690527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a15050505050565b600080546007549091908015613287576131d86111096dffffffffffffffffffffffffffff808716908816613bd2565b915080821115613287576004546000816131f28486613c0f565b6131fc9087613bd2565b6132069190613bd2565b905060006132148484613bd2565b8561322185612710613c0f565b61322b9190613bd2565b6132359190613b7f565b905060006132438284613b97565b90508015613282576132757f000000000000000000000000000000000000000000000000000000000000000082613615565b61327f8188613b7f565b96505b505050505b509250929050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812080548392906132c4908490613c0f565b909155505060008054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b60008161333157506000919050565b81600170010000000000000000000000000000000082106133575760809190911c9060401b5b6801000000000000000082106133725760409190911c9060201b5b64010000000082106133895760209190911c9060101b5b62010000821061339e5760109190911c9060081b5b61010082106133b25760089190911c9060041b5b601082106133c55760049190911c9060021b5b600882106133d15760011b5b60018185816133e2576133e2613c8e565b048201901c905060018185816133fa576133fa613c8e565b048201901c9050600181858161341257613412613c8e565b048201901c9050600181858161342a5761342a613c8e565b048201901c9050600181858161344257613442613c8e565b048201901c9050600181858161345a5761345a613c8e565b048201901c9050600181858161347257613472613c8e565b048201901c9050600081858161348a5761348a613c8e565b04905080821061349a578061349c565b815b93505050505b919050565b60007f00000000000000000000000000000000000000000000000000000000000000006134d48584613c0f565b6134de9190613bd2565b6127106134eb8686613bd2565b6134f59190613bd2565b6134ff9190613b97565b61350a906001613b7f565b949350505050565b600080831580613520575082155b156135305750600090508061360c565b60008461353d8589613bd2565b6135479190613b97565b90508581116135a25761355d6127106002613bd2565b6135678288613c0f565b613591907f0000000000000000000000000000000000000000000000000000000000000000613bd2565b61359b9190613b97565b915061360a565b6000846135af8789613bd2565b6135b99190613b97565b90506135c86127106002613bd2565b6135d2828a613c0f565b6135fc907f0000000000000000000000000000000000000000000000000000000000000000613bd2565b6136069190613b97565b9350505b505b94509492505050565b806000808282546136269190613b7f565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101613316565b803580151581146134a257600080fd5b6000602082840312156136a757600080fd5b81356136b281613d1b565b9392505050565b6000806000606084860312156136ce57600080fd5b83356136d981613d1b565b925060208401356136e981613d1b565b91506136f760408501613685565b90509250925092565b600080600080600060a0868803121561371857600080fd5b853561372381613d1b565b9450602086013561373381613d1b565b935061374160408701613685565b925060608601359150608086013567ffffffffffffffff8082111561376557600080fd5b818801915088601f83011261377957600080fd5b81358181111561378b5761378b613cec565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156137d1576137d1613cec565b816040528281528b60208487010111156137ea57600080fd5b8260208601602083013760006020848301015280955050505050509295509295909350565b6000806040838503121561382257600080fd5b823561382d81613d1b565b915061383b60208401613685565b90509250929050565b6000806040838503121561385757600080fd5b823561386281613d1b565b946020939093013593505050565b6000806040838503121561388357600080fd5b823561388e81613d1b565b9150602083013561389e81613d1b565b809150509250929050565b6000806000606084860312156138be57600080fd5b83356138c981613d1b565b925060208401356138d981613d1b565b929592945050506040919091013590565b600080600080600080600060e0888a03121561390557600080fd5b873561391081613d1b565b9650602088013561392081613d1b565b95506040880135945060608801359350608088013560ff8116811461394457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806020838503121561397457600080fd5b823567ffffffffffffffff8082111561398c57600080fd5b818501915085601f8301126139a057600080fd5b8135818111156139af57600080fd5b8660208285010111156139c157600080fd5b60209290920196919550909350505050565b6000602082840312156139e557600080fd5b5051919050565b600080604083850312156139ff57600080fd5b505080516020909101519092909150565b6000815180845260005b81811015613a3657602081850181015186830182015201613a1a565b81811115613a48576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020808252825182820181905260009190848201906040850190845b81811015613ac957835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613a97565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015613b2d578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101613af2565b5091979650505050505050565b6020815260006136b26020830184613a10565b60006dffffffffffffffffffffffffffff808316818516808303821115613b7657613b76613c5f565b01949350505050565b60008219821115613b9257613b92613c5f565b500190565b600082613bcd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c0a57613c0a613c5f565b500290565b600082821015613c2157613c21613c5f565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c5857613c58613c5f565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114613d3d57600080fd5b5056fea2646970667358221220bb078510fffdf67ed7dc18a1522f433526c7a6cfd9a607fd03877e6111685ff464736f6c63430008070033a26469706673582212201be62110666c5bed67567f199d6ff16deb95b17ff418a87b38aabf1019ba1c7b64736f6c63430008070033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x5360 CODESIZE SUB DUP1 PUSH2 0x5360 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x6D JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x57 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE POP PUSH2 0x9D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0x5297 PUSH2 0xC9 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x15A ADD MSTORE DUP2 DUP2 PUSH2 0x38D ADD MSTORE PUSH2 0x542 ADD MSTORE PUSH2 0x5297 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x71A25812 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x71A25812 EQ PUSH3 0x12E JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH3 0x154 JUMPI DUP1 PUSH4 0xF6AB6D99 EQ PUSH3 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x169C4CEF EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x27C3CAE1 EQ PUSH3 0xC1 JUMPI DUP1 PUSH4 0x5BC93D6C EQ PUSH3 0xD8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x938 JUMP JUMPDEST PUSH3 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x97 PUSH3 0xD2 CALLDATASIZE PUSH1 0x4 PUSH3 0x9E3 JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH3 0x11F PUSH3 0xE9 CALLDATASIZE PUSH1 0x4 PUSH3 0x8FA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xB8 JUMP JUMPDEST PUSH3 0x145 PUSH3 0x13F CALLDATASIZE PUSH1 0x4 PUSH3 0x97E JUMP JUMPDEST PUSH3 0x401 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xB8 SWAP2 SWAP1 PUSH3 0xABC JUMP JUMPDEST PUSH3 0x97 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0x97 PUSH3 0x18D CALLDATASIZE PUSH1 0x4 PUSH3 0x9C9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP3 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH3 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP DUP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x226 SWAP2 SWAP1 PUSH3 0x89A JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH3 0x267 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x20 DUP4 ADD MSTORE DUP6 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE PUSH1 0x2 DUP1 DUP5 MSTORE PUSH1 0x60 DUP5 ADD SWAP1 SWAP3 MSTORE SWAP8 POP PUSH1 0x0 SWAP2 SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP5 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH3 0x309 JUMPI PUSH3 0x309 PUSH3 0xC32 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP4 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH3 0x35A JUMPI PUSH3 0x35A PUSH3 0xC32 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE DUP8 MLOAD SWAP1 DUP9 ADD KECCAK256 PUSH1 0x40 MLOAD DUP2 SWAP1 DUP10 SWAP1 PUSH32 0x0 SWAP1 PUSH3 0x3B8 SWAP1 PUSH3 0x88C JUMP JUMPDEST PUSH3 0x3C5 SWAP3 SWAP2 SWAP1 PUSH3 0xB18 JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH3 0x3E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP7 POP PUSH3 0x3F6 DUP8 DUP4 DUP4 PUSH3 0x52A JUMP JUMPDEST POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x41F JUMPI PUSH3 0x41F PUSH3 0xC61 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x449 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x521 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH3 0x494 DUP3 DUP7 PUSH3 0xBAC JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH3 0x4A7 JUMPI PUSH3 0x4A7 PUSH3 0xC32 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x4E7 JUMPI PUSH3 0x4E7 PUSH3 0xC32 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x518 DUP2 PUSH3 0xBC7 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x44F JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH3 0x59A JUMPI PUSH1 0x40 MLOAD PUSH32 0x3781A5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH3 0x886 JUMPI DUP3 DUP2 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH3 0x60C JUMPI PUSH3 0x60C PUSH3 0xC32 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x63F JUMPI PUSH3 0x63F PUSH3 0xC32 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH3 0x695 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3F06BF8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH3 0x87C JUMPI PUSH1 0x0 DUP1 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x6BC JUMPI PUSH3 0x6BC PUSH3 0xC32 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x715 JUMPI PUSH3 0x715 PUSH3 0xC32 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP3 MSTORE SWAP2 DUP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP5 MLOAD DUP2 SWAP1 DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH3 0x7A4 JUMPI PUSH3 0x7A4 PUSH3 0xC32 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x7FD JUMPI PUSH3 0x7FD PUSH3 0xC32 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE SWAP2 DUP4 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE ADD PUSH3 0x69A JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH3 0x5E7 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x45AB DUP1 PUSH3 0xCB7 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x8B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH3 0x8BE DUP2 PUSH3 0xC90 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH3 0x8D1 DUP2 PUSH3 0xC90 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x8EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x90E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH3 0x91B DUP2 PUSH3 0xC90 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH3 0x92D DUP2 PUSH3 0xC90 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x94E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH3 0x95B DUP2 PUSH3 0xC90 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH3 0x96D DUP2 PUSH3 0xC90 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x995 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH3 0x9A2 DUP2 PUSH3 0xC90 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH3 0x9B4 DUP2 PUSH3 0xC90 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x9DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x9F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0xA0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA39 JUMPI PUSH3 0xA39 PUSH3 0xC61 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA82 JUMPI PUSH3 0xA82 PUSH3 0xC61 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xB0C JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0xAD8 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xB48 JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH3 0xB29 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0xB5B JUMPI PUSH1 0x0 PUSH1 0x60 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD PUSH1 0x60 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0xBC2 JUMPI PUSH3 0xBC2 PUSH3 0xC03 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH3 0xBFC JUMPI PUSH3 0xBFC PUSH3 0xC03 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0xCB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH2 0x1A0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x45AB CODESIZE SUB DUP1 PUSH3 0x45AB DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x56A JUMP JUMPDEST CHAINID PUSH1 0x80 MSTORE PUSH3 0x112 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x29BAB9B434902628102A37B5B2B7 PUSH1 0x91 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP6 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x135 SWAP2 SWAP1 PUSH3 0x50A JUMP JUMPDEST SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x18A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A45524F5F41444452455353 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x1EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4944454E544943414C5F41444452455353455300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ ISZERO PUSH3 0x239 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FAA27A5A2A7 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ ISZERO PUSH3 0x284 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FAA27A5A2A7 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST PUSH2 0x2710 DUP3 GT ISZERO PUSH3 0x2CB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x494E56414C49445F535741505F464545 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 DUP2 SHL DUP3 AND PUSH2 0x160 MSTORE DUP5 SWAP1 SHL AND PUSH2 0x180 MSTORE PUSH1 0xC0 DUP3 SWAP1 MSTORE PUSH2 0x2710 DUP3 SWAP1 SUB PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x60A56C01 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0xC14AD802 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x34B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x371 SWAP2 SWAP1 PUSH3 0x65B JUMP JUMPDEST PUSH1 0x4 DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0A0CD2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x3EC SWAP2 SWAP1 PUSH3 0x4E3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x100 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4DA31827 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x458 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x47E SWAP2 SWAP1 PUSH3 0x4E3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH2 0x120 MSTORE SWAP1 DUP7 SWAP1 SHL AND PUSH2 0x140 MSTORE PUSH1 0x1 PUSH1 0x9 SSTORE DUP1 ISZERO PUSH3 0x4C5 JUMPI PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0xE0 SHL TIMESTAMP PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP PUSH3 0x6A4 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x4DE DUP2 PUSH3 0x68B JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x503 DUP2 PUSH3 0x68B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH3 0x52E DUP2 PUSH3 0x68B JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH3 0x541 DUP2 PUSH3 0x68B JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x55F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x5AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x5C0 JUMPI PUSH3 0x5C0 PUSH3 0x675 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x5EB JUMPI PUSH3 0x5EB PUSH3 0x675 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE PUSH1 0x20 SWAP4 POP DUP9 DUP5 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP3 DUP3 LT ISZERO PUSH3 0x62C JUMPI DUP5 DUP3 ADD DUP5 ADD MLOAD DUP2 DUP4 ADD DUP6 ADD MSTORE SWAP1 DUP4 ADD SWAP1 PUSH3 0x60D JUMP JUMPDEST DUP3 DUP3 GT ISZERO PUSH3 0x63E JUMPI PUSH1 0x0 DUP5 DUP5 DUP4 ADD ADD MSTORE JUMPDEST SWAP6 POP PUSH3 0x650 SWAP2 POP POP DUP6 DUP3 ADD PUSH3 0x4D1 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x66E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x160 MLOAD PUSH1 0x60 SHR PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x3D76 PUSH3 0x835 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x606 ADD MSTORE DUP2 DUP2 PUSH2 0x85E ADD MSTORE DUP2 DUP2 PUSH2 0x98D ADD MSTORE DUP2 DUP2 PUSH2 0xA3B ADD MSTORE DUP2 DUP2 PUSH2 0x10BE ADD MSTORE DUP2 DUP2 PUSH2 0x11C6 ADD MSTORE DUP2 DUP2 PUSH2 0x145C ADD MSTORE DUP2 DUP2 PUSH2 0x179C ADD MSTORE DUP2 DUP2 PUSH2 0x180B ADD MSTORE DUP2 DUP2 PUSH2 0x1B62 ADD MSTORE DUP2 DUP2 PUSH2 0x1CC1 ADD MSTORE DUP2 DUP2 PUSH2 0x221F ADD MSTORE DUP2 DUP2 PUSH2 0x2530 ADD MSTORE DUP2 DUP2 PUSH2 0x25B7 ADD MSTORE PUSH2 0x2E16 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x364 ADD MSTORE DUP2 DUP2 PUSH2 0x7DA ADD MSTORE DUP2 DUP2 PUSH2 0xB20 ADD MSTORE DUP2 DUP2 PUSH2 0xC4F ADD MSTORE DUP2 DUP2 PUSH2 0x1092 ADD MSTORE DUP2 DUP2 PUSH2 0x115D ADD MSTORE DUP2 DUP2 PUSH2 0x14E2 ADD MSTORE DUP2 DUP2 PUSH2 0x1748 ADD MSTORE DUP2 DUP2 PUSH2 0x18EC ADD MSTORE DUP2 DUP2 PUSH2 0x1A5C ADD MSTORE DUP2 DUP2 PUSH2 0x1C53 ADD MSTORE DUP2 DUP2 PUSH2 0x21A0 ADD MSTORE DUP2 DUP2 PUSH2 0x25EC ADD MSTORE DUP2 DUP2 PUSH2 0x26D7 ADD MSTORE PUSH2 0x2D2C ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x5DF ADD MSTORE PUSH2 0x2088 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x423 ADD MSTORE DUP2 DUP2 PUSH2 0x1AA9 ADD MSTORE DUP2 DUP2 PUSH2 0x1BAA ADD MSTORE DUP2 DUP2 PUSH2 0x2BB0 ADD MSTORE DUP2 DUP2 PUSH2 0x2C8C ADD MSTORE DUP2 DUP2 PUSH2 0x2D5F ADD MSTORE PUSH2 0x2E47 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x318 ADD MSTORE PUSH2 0x3250 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x2AEE ADD MSTORE PUSH2 0x34AB ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x44A ADD MSTORE DUP2 DUP2 PUSH2 0x356D ADD MSTORE PUSH2 0x35D8 ADD MSTORE PUSH1 0x0 PUSH2 0x13C3 ADD MSTORE PUSH1 0x0 PUSH2 0x129A ADD MSTORE PUSH2 0x3D76 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x241 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x627DD56A GT PUSH2 0x145 JUMPI DUP1 PUSH4 0xA69840A8 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xC14AD802 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x601 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x628 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x63B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x5D1 JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x571 JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x598 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5AB JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x5BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7464FC3D GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x50B JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x52B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x535 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x4EF JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x4F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x627DD56A EQ PUSH2 0x47E JUMPI DUP1 PUSH4 0x65DFC767 EQ PUSH2 0x491 JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x54CF2AEB GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x445 JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x40B JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x41E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x3A2 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x214 JUMPI DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x313 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x35F JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2B5 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2F0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x259 PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x666 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x3B3A JUMP JUMPDEST PUSH2 0x2BD PUSH2 0xD0B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x303 PUSH2 0x2FE CALLDATASIZE PUSH1 0x4 PUSH2 0x3844 JUMP JUMPDEST PUSH2 0xD74 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x303 PUSH2 0x39D CALLDATASIZE PUSH1 0x4 PUSH2 0x38A9 JUMP JUMPDEST PUSH2 0xDED JUMP JUMPDEST PUSH2 0x3B5 PUSH2 0x3B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0xF39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x3AD5 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x3F1 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x1296 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x419 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x13E5 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x48C CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x15CD JUMP JUMPDEST PUSH2 0x499 PUSH2 0x19BD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH4 0xFFFFFFFF AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x4C2 PUSH2 0x1C31 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x3A7B JUMP JUMPDEST PUSH2 0x259 PUSH2 0x4DD CALLDATASIZE PUSH1 0x4 PUSH2 0x3695 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x506 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x1D30 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x519 CALLDATASIZE PUSH1 0x4 PUSH2 0x3695 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x533 PUSH2 0x2086 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x54726964656E743A436F6E7374616E7450726F64756374000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x5A6 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x2129 JUMP JUMPDEST PUSH2 0x303 PUSH2 0x5B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3844 JUMP JUMPDEST PUSH2 0x22FD JUMP JUMPDEST PUSH2 0x259 PUSH2 0x5CC CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x2382 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x533 PUSH2 0x636 CALLDATASIZE PUSH1 0x4 PUSH2 0x38EA JUMP JUMPDEST PUSH2 0x2794 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x649 CALLDATASIZE PUSH1 0x4 PUSH2 0x3870 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x6D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x6F0 DUP8 DUP10 ADD DUP10 PUSH2 0x3700 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x758 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0x7D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C5F554E494E495449414C495A45440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xA39 JUMPI PUSH2 0x857 DUP6 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST SWAP9 POP PUSH2 0x885 PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x2B49 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x8C1 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3B3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 PUSH2 0x8FE PUSH2 0x2CEF JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 SUB LT ISZERO PUSH2 0x97E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x98B DUP3 DUP3 DUP8 DUP8 DUP8 PUSH2 0x2EC9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP11 DUP16 PUSH1 0x40 MLOAD PUSH2 0xA2A SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH2 0xCF7 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xAEE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0xB19 DUP6 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST SWAP9 POP PUSH2 0xB47 PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x2B49 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0xB83 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3B3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 PUSH2 0xBC0 PUSH2 0x2CEF JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 SUB LT ISZERO PUSH2 0xC40 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0xC4D DUP3 DUP3 DUP8 DUP8 DUP8 PUSH2 0x2EC9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP11 DUP16 PUSH1 0x40 MLOAD PUSH2 0xCEC SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xD69 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xDDC SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xE8A JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xE84 SWAP1 DUP5 SWAP1 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xEBF SWAP1 DUP5 SWAP1 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xF27 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0xFA7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 PUSH2 0xFBB DUP5 DUP7 ADD DUP7 PUSH2 0x380F JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x101D PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x102E PUSH2 0x2CEF JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH2 0x104E DUP8 DUP8 PUSH2 0x31A8 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x105E DUP7 DUP6 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x1068 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x1077 DUP7 DUP7 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x1081 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH2 0x108D ADDRESS DUP6 PUSH2 0x328F JUMP JUMPDEST PUSH2 0x10B9 PUSH32 0x0 DUP4 DUP14 DUP14 PUSH2 0x2B49 JUMP JUMPDEST PUSH2 0x10E5 PUSH32 0x0 DUP3 DUP14 DUP14 PUSH2 0x2B49 JUMP JUMPDEST DUP2 DUP7 SUB SWAP6 POP DUP1 DUP6 SUB SWAP5 POP PUSH2 0x10FC DUP7 DUP7 DUP12 DUP12 DUP12 PUSH2 0x2EC9 JUMP JUMPDEST PUSH2 0x110E PUSH2 0x1109 DUP7 DUP9 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3322 JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1127 JUMPI SWAP1 POP POP SWAP12 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP13 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x11AE JUMPI PUSH2 0x11AE PUSH2 0x3CBD JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP13 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1217 JUMPI PUSH2 0x1217 PUSH2 0x3CBD JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP2 DUP3 ADD DUP4 SWAP1 MSTORE DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP8 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x13C0 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x13F5 DUP5 DUP7 ADD DUP7 PUSH2 0x3844 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1455 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x14E0 JUMPI PUSH2 0x14D9 DUP4 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x34A7 JUMP JUMPDEST SWAP5 POP PUSH2 0x15C3 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1595 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x15C0 DUP4 DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x34A7 JUMP JUMPDEST SWAP5 POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x163B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x1650 DUP6 DUP8 ADD DUP8 PUSH2 0x36B9 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x16B4 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0x1734 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C5F554E494E495449414C495A45440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x173F PUSH2 0x2CEF JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1809 JUMPI PUSH32 0x0 SWAP1 POP DUP7 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 SUB SWAP2 POP PUSH2 0x17FD DUP3 DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST SWAP11 POP DUP11 DUP4 SUB SWAP3 POP PUSH2 0x1925 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x18BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST POP POP PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH15 0x10000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 AND DUP3 SUB SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x191D SWAP1 DUP4 SWAP1 DUP9 DUP2 AND SWAP1 DUP11 AND PUSH2 0x2AE6 JUMP JUMPDEST SWAP11 POP DUP11 DUP5 SUB SWAP4 POP JUMPDEST PUSH2 0x1931 DUP2 DUP13 DUP12 DUP12 PUSH2 0x2B49 JUMP JUMPDEST PUSH2 0x193E DUP5 DUP5 DUP10 DUP10 DUP10 PUSH2 0x2EC9 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP6 DUP16 PUSH1 0x40 MLOAD PUSH2 0xCEC SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1A1F PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B25 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE SWAP2 SWAP8 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C02 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C26 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST SWAP6 SWAP7 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1C85 JUMPI PUSH2 0x1C85 PUSH2 0x3CBD JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1CF3 JUMPI PUSH2 0x1CF3 PUSH2 0x3CBD JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x1D9E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 PUSH2 0x1DB1 DUP4 DUP6 ADD DUP6 PUSH2 0x3695 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1E11 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x1E22 PUSH2 0x2CEF JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x1E36 PUSH2 0x1109 DUP4 DUP6 PUSH2 0x3BD2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E54 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E72 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1EA3 DUP5 DUP5 DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3512 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1EB2 DUP3 DUP12 PUSH2 0x3B4D JUMP JUMPDEST SWAP10 POP PUSH2 0x1EBE DUP2 DUP11 PUSH2 0x3B4D JUMP JUMPDEST SWAP9 POP PUSH1 0x0 DUP1 PUSH2 0x1ECD DUP13 DUP13 PUSH2 0x31A8 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ ISZERO PUSH2 0x1F70 JUMPI PUSH1 0x0 DUP7 GT DUP1 ISZERO PUSH2 0x1EEA JUMPI POP PUSH1 0x0 DUP6 GT JUMPDEST PUSH2 0x1F50 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F414D4F554E54530000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x1F5C PUSH2 0x3E8 DUP9 PUSH2 0x3C0F JUMP JUMPDEST SWAP14 POP PUSH2 0x1F6B PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x3615 JUMP JUMPDEST PUSH2 0x1F8C JUMP JUMPDEST DUP1 DUP8 SUB DUP2 PUSH2 0x1F7E DUP5 DUP4 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x1F88 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP15 POP POP JUMPDEST DUP14 PUSH2 0x1FF3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F4C49515549444954595F4D494E544544000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x1FFD DUP14 DUP16 PUSH2 0x3615 JUMP JUMPDEST PUSH2 0x200A DUP10 DUP10 DUP15 DUP15 DUP15 PUSH2 0x2EC9 JUMP JUMPDEST PUSH1 0x7 DUP8 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 DUP2 ADD DUP16 SWAP1 MSTORE DUP15 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP1 CALLER SWAP1 PUSH32 0xF9C32FBC56FF04F32A233EBC26E388564223745E28ABD8D0781DD906537F563E SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP11 SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2100 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2124 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x2139 DUP5 DUP7 ADD DUP7 PUSH2 0x3844 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x2199 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x221D JUMPI PUSH2 0x14D9 DUP4 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x22D2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x15C0 DUP4 DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP4 SWAP1 PUSH2 0x231E SWAP1 DUP5 SWAP1 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xDDC SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x23F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x2405 DUP6 DUP8 ADD DUP8 PUSH2 0x36B9 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2469 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x248B DUP6 DUP6 PUSH2 0x31A8 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x24AB PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x24B5 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x24D4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP7 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x24DE SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH2 0x2521 PUSH2 0x24FD DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x2517 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x1109 SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH2 0x252E ADDRESS DUP6 PUSH2 0x328F JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x25EA JUMPI PUSH2 0x25B1 DUP3 DUP4 DUP10 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 DUP10 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2AE6 JUMP JUMPDEST ADD PUSH2 0x25DE PUSH32 0x0 DUP3 DUP12 DUP12 PUSH2 0x2B49 JUMP JUMPDEST DUP1 SWAP11 POP PUSH1 0x0 SWAP2 POP PUSH2 0x2705 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x269F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x26CE DUP2 DUP3 DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP5 DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2AE6 JUMP JUMPDEST DUP3 ADD SWAP2 POP PUSH2 0x26FE PUSH32 0x0 DUP4 DUP12 DUP12 PUSH2 0x2B49 JUMP JUMPDEST POP SWAP9 POP DUP9 PUSH1 0x0 JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2710 PUSH2 0x2CEF JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2721 DUP3 DUP3 DUP12 DUP12 DUP12 PUSH2 0x2EC9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP9 SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x27FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2808 PUSH2 0x1296 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP3 DUP13 SWAP3 DUP13 SWAP3 DUP13 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x2863 DUP4 PUSH2 0x3C26 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2904 SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x298D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2A08 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2A6E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2B13 PUSH32 0x0 DUP7 PUSH2 0x3BD2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2B22 PUSH2 0x2710 DUP7 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x2B2C SWAP2 SWAP1 PUSH2 0x3B7F JUMP JUMPDEST PUSH2 0x2B36 DUP5 DUP4 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x2B40 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2C32 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C07 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C2B SWAP2 SWAP1 PUSH2 0x39EC JUMP JUMPDEST POP POP PUSH2 0x2CE9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CE4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DB5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DD9 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E9F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EC3 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST SWAP1 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 GT DUP1 ISZERO SWAP1 PUSH2 0x2EF5 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT ISZERO JUMPDEST PUSH2 0x2F5B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564552464C4F57000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x2FBD JUMPI PUSH1 0x8 DUP1 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH15 0x10000000000000000000000000000 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP1 DUP9 AND OR OR SWAP1 SSTORE PUSH2 0x3168 JUMP JUMPDEST TIMESTAMP PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP1 DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2FE6 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3001 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x30C6 JUMPI DUP2 DUP2 SUB PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 PUSH1 0x70 DUP8 SWAP1 SHL AND DUP2 PUSH2 0x304C JUMPI PUSH2 0x304C PUSH2 0x3C8E JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF DUP6 AND DUP2 MUL SWAP1 SWAP3 ADD SWAP1 SSTORE SWAP1 POP PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x70 DUP9 SWAP1 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND DUP2 PUSH2 0x30A7 JUMPI PUSH2 0x30A7 PUSH2 0x3C8E JUMP JUMPDEST DIV SWAP1 POP DUP3 PUSH4 0xFFFFFFFF AND DUP2 MUL PUSH1 0x6 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH15 0x10000000000000000000000000000 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP1 DUP11 AND OR SWAP4 SWAP1 SWAP4 OR SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH32 0xCF2AA50876CDFBB541206F89AF0EE78D44A2ABF8D328E37FA4917F982149848A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x7 SLOAD SWAP1 SWAP2 SWAP1 DUP1 ISZERO PUSH2 0x3287 JUMPI PUSH2 0x31D8 PUSH2 0x1109 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND SWAP1 DUP9 AND PUSH2 0x3BD2 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3287 JUMPI PUSH1 0x4 SLOAD PUSH1 0x0 DUP2 PUSH2 0x31F2 DUP5 DUP7 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x31FC SWAP1 DUP8 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3206 SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3214 DUP5 DUP5 PUSH2 0x3BD2 JUMP JUMPDEST DUP6 PUSH2 0x3221 DUP6 PUSH2 0x2710 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x322B SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3235 SWAP2 SWAP1 PUSH2 0x3B7F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3243 DUP3 DUP5 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3282 JUMPI PUSH2 0x3275 PUSH32 0x0 DUP3 PUSH2 0x3615 JUMP JUMPDEST PUSH2 0x327F DUP2 DUP9 PUSH2 0x3B7F JUMP JUMPDEST SWAP7 POP JUMPDEST POP POP POP POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x32C4 SWAP1 DUP5 SWAP1 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP1 SLOAD DUP3 SWAP1 SUB DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x3331 JUMPI POP PUSH1 0x0 SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x3357 JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x3372 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x3389 JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x339E JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x33B2 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x33C5 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0x33D1 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x33E2 JUMPI PUSH2 0x33E2 PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x33FA JUMPI PUSH2 0x33FA PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3412 JUMPI PUSH2 0x3412 PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x342A JUMPI PUSH2 0x342A PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3442 JUMPI PUSH2 0x3442 PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x345A JUMPI PUSH2 0x345A PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3472 JUMPI PUSH2 0x3472 PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x348A JUMPI PUSH2 0x348A PUSH2 0x3C8E JUMP JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x349A JUMPI DUP1 PUSH2 0x349C JUMP JUMPDEST DUP2 JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH2 0x34D4 DUP6 DUP5 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x34DE SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x2710 PUSH2 0x34EB DUP7 DUP7 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x34F5 SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x34FF SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST PUSH2 0x350A SWAP1 PUSH1 0x1 PUSH2 0x3B7F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 ISZERO DUP1 PUSH2 0x3520 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x3530 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x360C JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x353D DUP6 DUP10 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3547 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 GT PUSH2 0x35A2 JUMPI PUSH2 0x355D PUSH2 0x2710 PUSH1 0x2 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3567 DUP3 DUP9 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x3591 SWAP1 PUSH32 0x0 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x359B SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP2 POP PUSH2 0x360A JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x35AF DUP8 DUP10 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x35B9 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH2 0x35C8 PUSH2 0x2710 PUSH1 0x2 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x35D2 DUP3 DUP11 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x35FC SWAP1 PUSH32 0x0 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3606 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP4 POP POP JUMPDEST POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0x3626 SWAP2 SWAP1 PUSH2 0x3B7F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x3316 JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x34A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x36A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x36B2 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x36CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x36D9 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x36E9 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP2 POP PUSH2 0x36F7 PUSH1 0x40 DUP6 ADD PUSH2 0x3685 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3723 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3733 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP4 POP PUSH2 0x3741 PUSH1 0x40 DUP8 ADD PUSH2 0x3685 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x378B JUMPI PUSH2 0x378B PUSH2 0x3CEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x37D1 JUMPI PUSH2 0x37D1 PUSH2 0x3CEC JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP12 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x37EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3822 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x382D DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP2 POP PUSH2 0x383B PUSH1 0x20 DUP5 ADD PUSH2 0x3685 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3857 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3862 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3883 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x388E DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x389E DUP2 PUSH2 0x3D1B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x38BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x38C9 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x38D9 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3905 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x3910 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x3920 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3944 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3974 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x398C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x39A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x39AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x39C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x39E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3A36 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x3A1A JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x3A48 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3AC9 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3A97 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3B2D JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3AF2 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x36B2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3A10 JUMP JUMPDEST PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x3B76 JUMPI PUSH2 0x3B76 PUSH2 0x3C5F JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3B92 JUMPI PUSH2 0x3B92 PUSH2 0x3C5F JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3BCD JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3C0A JUMPI PUSH2 0x3C0A PUSH2 0x3C5F JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3C21 JUMPI PUSH2 0x3C21 PUSH2 0x3C5F JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x3C58 JUMPI PUSH2 0x3C58 PUSH2 0x3C5F JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3D3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB SMOD DUP6 LT SELFDESTRUCT REVERT 0xF6 PUSH31 0xD7DC18A1522F433526C7A6CFD9A607FD03877E6111685FF464736F6C634300 ADDMOD SMOD STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL 0xE6 0x21 LT PUSH7 0x6C5BED67567F19 SWAP14 PUSH16 0xF16DEB95B17FF418A87B38AABF1019BA SHR PUSH28 0x64736F6C634300080700330000000000000000000000000000000000 ",
              "sourceMap": "258:970:39:-:0;;;316:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;366:15;-1:-1:-1;;;;;634:29:44;;630:55;;672:13;;-1:-1:-1;;;672:13:44;;;;;;;;;;;630:55;695:32;;-1:-1:-1;;;;;;695:32:44;;;-1:-1:-1;258:970:39;;14:290:64;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:64;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:64:o;:::-;258:970:39;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_registerPool_11818": {
                  "entryPoint": 1322,
                  "id": 11818,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@configAddress_11692": {
                  "entryPoint": null,
                  "id": 11692,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@deployPool_7792": {
                  "entryPoint": 520,
                  "id": 7792,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getPools_11886": {
                  "entryPoint": 1025,
                  "id": 11886,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@masterDeployer_11681": {
                  "entryPoint": null,
                  "id": 11681,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@poolsCount_11837": {
                  "entryPoint": null,
                  "id": 11837,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@pools_11688": {
                  "entryPoint": 437,
                  "id": 11688,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_uint256t_bool_fromMemory": {
                  "entryPoint": 2202,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 2298,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 2360,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256": {
                  "entryPoint": 2430,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 2505,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_memory_ptr": {
                  "entryPoint": 2531,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_bool__to_t_address_t_address_t_uint256_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 2748,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed": {
                  "entryPoint": 2840,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 2988,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 3015,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 3075,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 3122,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 3169,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 3216,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:6602:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "159:480:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "206:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "215:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "218:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "208:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "208:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "208:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "180:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "189:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "176:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "176:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "201:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "172:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "172:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "169:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "231:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "250:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "244:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "244:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "235:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "294:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "269:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "269:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "269:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "309:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "319:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "309:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "333:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "358:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "369:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "354:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "354:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "348:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "348:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "337:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "407:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "382:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "382:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "382:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "424:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "434:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "424:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "450:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "470:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "481:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "466:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "466:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "460:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "460:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "450:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "494:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "519:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "530:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "515:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "515:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "509:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "509:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "498:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "591:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "600:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "603:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "593:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "593:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "593:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "556:7:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "579:7:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "572:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "572:15:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "565:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "565:23:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "553:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "553:36:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "546:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "546:44:64"
                              },
                              "nodeType": "YulIf",
                              "src": "543:64:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "616:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "626:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "616:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_uint256t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "101:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "112:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "124:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "132:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "140:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "148:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:625:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "731:301:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "777:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "786:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "789:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "779:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "779:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "779:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "752:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "761:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "748:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "748:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "773:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "744:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "744:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "741:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "802:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "828:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "815:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "815:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "806:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "872:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "847:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "847:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "847:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "887:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "897:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "887:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "911:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "943:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "954:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "939:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "939:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "926:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "926:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "915:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "992:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "967:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "967:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "967:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1009:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1019:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1009:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "689:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "700:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "712:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "720:6:64",
                            "type": ""
                          }
                        ],
                        "src": "644:388:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1141:352:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1187:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1196:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1199:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1189:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1189:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1189:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1162:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1171:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1158:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1158:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1183:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1154:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1154:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1151:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1212:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1238:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1225:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1225:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1216:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1282:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1257:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1257:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1257:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1297:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1307:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1297:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1321:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1353:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1364:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1349:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1349:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1336:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1336:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1325:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1402:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1377:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1377:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1377:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1419:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1429:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1419:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1445:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1472:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1483:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1468:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1468:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1455:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1455:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1445:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1091:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1102:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1114:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1122:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1130:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1037:456:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1619:404:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1666:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1675:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1678:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1668:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1668:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1668:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1640:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1649:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1636:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1636:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1661:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1632:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1632:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1629:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1691:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1717:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1704:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1704:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1695:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1761:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1736:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1736:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1736:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1776:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1786:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1776:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1800:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1832:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1843:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1828:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1828:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1815:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1815:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1804:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1881:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1856:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1856:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1856:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1898:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1908:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1898:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1924:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1951:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1962:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1947:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1947:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1934:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1934:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1924:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1975:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2002:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2013:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1998:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1998:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1985:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1985:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1975:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1561:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1572:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1584:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1592:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1600:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1608:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1498:525:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2098:110:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2144:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2153:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2156:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2146:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2146:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2146:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2119:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2128:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2115:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2115:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2140:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2111:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2111:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2108:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2169:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2192:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2179:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2179:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2169:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2064:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2075:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2087:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2028:180:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2292:901:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2338:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2347:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2350:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2340:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2340:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2340:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2313:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2322:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2309:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2309:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2334:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2305:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2305:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2302:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2363:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2390:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2377:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2377:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2367:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2409:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2419:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2413:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2464:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2473:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2476:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2466:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2466:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2466:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2452:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2460:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2449:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2449:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2446:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2489:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2503:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2514:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2499:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2499:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2493:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2569:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2578:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2581:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2571:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2571:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2571:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2548:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2552:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2544:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2544:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2559:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2540:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2540:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2533:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2533:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2530:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2594:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2617:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2604:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2604:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2598:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2643:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2645:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2645:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2645:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2635:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2639:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2632:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2632:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2629:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2674:76:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2684:66:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "2678:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2759:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2779:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2773:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2773:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2763:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2791:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2813:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2837:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2841:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2833:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2833:13:64"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "2848:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "2829:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2829:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2853:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2825:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2825:31:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "2858:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2821:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2821:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2809:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2809:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2795:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2921:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2923:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2923:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2923:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2880:10:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2892:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2877:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2877:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2900:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2912:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2897:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2897:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2874:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2874:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2871:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2959:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2963:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2952:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2952:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2952:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2990:6:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2998:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2983:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2983:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2983:18:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3047:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3056:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3059:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3049:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3049:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3049:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "3024:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3028:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3020:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3020:11:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3033:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3016:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3016:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3038:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3013:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3013:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3010:53:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3089:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3097:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3085:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3085:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3106:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3110:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3102:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3102:11:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3115:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "3072:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3072:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3072:46:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "3142:6:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3150:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3138:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3138:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3155:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3134:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3134:24:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3160:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3127:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3127:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3127:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3171:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "3181:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3171:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2258:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2269:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2281:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2213:980:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3299:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3309:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3321:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3332:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3317:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3317:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3309:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3351:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3366:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3374:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3362:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3362:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3344:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3344:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3344:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3268:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3279:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3290:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3198:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3608:301:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3618:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3630:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3641:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3626:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3626:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3618:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3654:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3664:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3658:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3722:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3737:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3745:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3733:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3733:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3715:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3715:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3715:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3769:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3780:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3765:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3765:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3789:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3797:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3785:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3785:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3758:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3758:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3758:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3821:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3832:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3817:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3817:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3837:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3810:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3810:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3810:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3864:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3875:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3860:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3860:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3894:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "3887:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3887:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "3880:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3880:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3853:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3853:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3853:50:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bool__to_t_address_t_address_t_uint256_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3553:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3564:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3572:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3580:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3588:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3599:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3429:480:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4065:530:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4075:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4085:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4079:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4096:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4114:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4125:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4110:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4110:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4100:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4144:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4155:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4137:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4137:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4137:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4167:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "4178:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "4171:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4193:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4213:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4207:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4207:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "4197:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4236:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4244:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4229:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4229:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4229:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4260:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4271:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4282:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4267:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4267:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "4260:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4294:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4312:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4320:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4308:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4308:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4298:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4332:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4341:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "4336:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4400:169:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "4421:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4436:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "4430:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4430:13:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4445:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "4426:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4426:62:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4414:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4414:75:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4414:75:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4502:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "4513:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4518:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4509:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4509:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4502:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4534:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "4548:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4556:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4544:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4544:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4534:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4362:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4365:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4359:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4359:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4373:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4375:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "4384:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4387:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4380:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4380:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "4375:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4355:3:64",
                                "statements": []
                              },
                              "src": "4351:218:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4578:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "4586:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4578:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4034:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4045:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4056:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3914:681:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4747:612:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4764:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4775:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4757:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4757:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4757:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4787:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4807:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4801:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4801:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "4791:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4834:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4845:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4830:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4830:18:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4850:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4823:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4823:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4823:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4866:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4875:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "4870:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4937:92:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4966:9:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4977:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "4962:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4962:17:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4981:2:64",
                                              "type": "",
                                              "value": "96"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4958:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4958:26:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5000:6:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5008:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4996:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "4996:14:64"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "5012:4:64",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "4992:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4992:25:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "4986:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4986:32:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4951:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4951:68:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4951:68:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4896:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4899:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4893:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4893:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4907:21:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4909:17:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "4918:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4921:4:64",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4914:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4914:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "4909:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4889:3:64",
                                "statements": []
                              },
                              "src": "4885:144:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5063:66:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5092:9:64"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5103:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "5088:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5088:22:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5112:2:64",
                                              "type": "",
                                              "value": "96"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "5084:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5084:31:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5117:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5077:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5077:42:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5077:42:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "5044:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5047:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5041:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5041:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5038:91:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5138:121:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5154:9:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "5173:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5181:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5169:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5169:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5186:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "5165:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5165:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5150:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5150:104:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5256:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5146:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5146:113:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5138:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5279:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5290:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5275:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5275:20:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5301:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5309:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5297:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5297:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5268:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5268:85:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5268:85:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4708:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4719:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4727:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4738:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4600:759:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5465:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5475:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5487:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5498:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5483:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5483:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5475:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5517:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5528:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5510:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5510:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5510:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5434:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5445:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5456:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5364:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5594:80:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5621:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "5623:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5623:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5623:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "5610:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "5617:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "5613:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5613:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5607:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5607:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5604:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5652:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "5663:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "5666:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5659:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5659:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "5652:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "5577:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "5580:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "5586:3:64",
                            "type": ""
                          }
                        ],
                        "src": "5546:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5726:148:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5817:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "5819:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5819:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5819:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5742:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5749:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "5739:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5739:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5736:103:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5848:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5859:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5866:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5855:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5855:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "5848:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "5708:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "5718:3:64",
                            "type": ""
                          }
                        ],
                        "src": "5679:195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5911:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5928:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5931:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5921:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5921:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5921:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6025:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6028:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6018:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6018:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6018:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6049:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6052:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6042:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6042:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6042:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "5879:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6100:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6117:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6120:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6110:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6110:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6110:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6214:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6217:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6207:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6207:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6207:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6238:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6241:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6231:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6231:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6231:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6068:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6289:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6306:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6309:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6299:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6299:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6299:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6403:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6406:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6396:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6396:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6396:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6427:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6430:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6420:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6420:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6420:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6257:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6491:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6578:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6587:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6590:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6580:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6580:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6580:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6514:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "6525:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6532:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "6521:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6521:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "6511:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6511:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6504:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6504:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6501:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6480:5:64",
                            "type": ""
                          }
                        ],
                        "src": "6446:154:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_payablet_address_payablet_uint256t_bool_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := mload(add(headStart, 64))\n        let value_2 := mload(add(headStart, 96))\n        if iszero(eq(value_2, iszero(iszero(value_2)))) { revert(0, 0) }\n        value3 := value_2\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_bytes_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value0 := memPtr\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bool__to_t_address_t_address_t_uint256_t_bool__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), iszero(iszero(value3)))\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let length := mload(value0)\n        mstore(add(headStart, 64), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(add(headStart, i), 96), mload(add(add(value0, i), 0x20)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 96), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 96)\n        mstore(add(headStart, 0x20), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "11681": [
                  {
                    "length": 32,
                    "start": 346
                  },
                  {
                    "length": 32,
                    "start": 909
                  },
                  {
                    "length": 32,
                    "start": 1346
                  }
                ]
              },
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b50600436106200007b5760003560e01c806371a25812116200005657806371a25812146200012e578063cf58879a1462000154578063f6ab6d99146200017c57600080fd5b8063169c4cef146200008057806327c3cae114620000c15780635bc93d6c14620000d8575b600080fd5b620000976200009136600462000938565b620001b5565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b62000097620000d2366004620009e3565b62000208565b6200011f620000e9366004620008fa565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526020818152604080832093909416825291909152205490565b604051908152602001620000b8565b620001456200013f3660046200097e565b62000401565b604051620000b8919062000abc565b620000977f000000000000000000000000000000000000000000000000000000000000000081565b620000976200018d366004620009c9565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60006020528260005260406000206020528160005260406000208181548110620001de57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16925083915050565b6000806000806000858060200190518101906200022691906200089a565b93509350935093508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16111562000267579192915b6040805173ffffffffffffffffffffffffffffffffffffffff808716602083015285169181019190915260608101839052811515608082015260a001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152600280845260608401909252975060009190816020016020820280368337019050509050848160008151811062000309576200030962000c32565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505083816001815181106200035a576200035a62000c32565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101820152875190880120604051819089907f000000000000000000000000000000000000000000000000000000000000000090620003b8906200088c565b620003c592919062000b18565b8190604051809103906000f5905080158015620003e6573d6000803e3d6000fd5b509650620003f68783836200052a565b505050505050919050565b60608167ffffffffffffffff8111156200041f576200041f62000c61565b60405190808252806020026020018201604052801562000449578160200160208202803683370190505b50905060005b82811015620005215773ffffffffffffffffffffffffffffffffffffffff80871660009081526020818152604080832093891683529290522062000494828662000bac565b81548110620004a757620004a762000c32565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110620004e757620004e762000c32565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015280620005188162000bc7565b9150506200044f565b50949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146200059a576040517f03781a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555b600183510381101562000886578281600101815181106200060c576200060c62000c32565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106200063f576200063f62000c32565b602002602001015173ffffffffffffffffffffffffffffffffffffffff161062000695576040517f3f06bf8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015b83518110156200087c57600080858481518110620006bc57620006bc62000c32565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085838151811062000715576200071562000c32565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409091016000908120805460018101825590825291812090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915584518190869084908110620007a457620007a462000c32565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858481518110620007fd57620007fd62000c32565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604090910160009081208054600180820183559183529290912090910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001692881692909217909155016200069a565b50600101620005e7565b50505050565b6145ab8062000cb783390190565b60008060008060808587031215620008b157600080fd5b8451620008be8162000c90565b6020860151909450620008d18162000c90565b6040860151606087015191945092508015158114620008ef57600080fd5b939692955090935050565b600080604083850312156200090e57600080fd5b82356200091b8162000c90565b915060208301356200092d8162000c90565b809150509250929050565b6000806000606084860312156200094e57600080fd5b83356200095b8162000c90565b925060208401356200096d8162000c90565b929592945050506040919091013590565b600080600080608085870312156200099557600080fd5b8435620009a28162000c90565b93506020850135620009b48162000c90565b93969395505050506040820135916060013590565b600060208284031215620009dc57600080fd5b5035919050565b600060208284031215620009f657600080fd5b813567ffffffffffffffff8082111562000a0f57600080fd5b818401915084601f83011262000a2457600080fd5b81358181111562000a395762000a3962000c61565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171562000a825762000a8262000c61565b8160405282815287602084870101111562000a9c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6020808252825182820181905260009190848201906040850190845b8181101562000b0c57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162000ad8565b50909695505050505050565b604081526000835180604084015260005b8181101562000b48576020818701810151606086840101520162000b29565b8181111562000b5b576000606083860101525b5073ffffffffffffffffffffffffffffffffffffffff93909316602083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b6000821982111562000bc25762000bc262000c03565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000bfc5762000bfc62000c03565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811462000cb357600080fd5b5056fe6101a06040523480156200001257600080fd5b50604051620045ab380380620045ab83398101604081905262000035916200056a565b4660805262000112604080518082018252600e81526d29bab9b434902628102a37b5b2b760911b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b60a08181525050600080600080858060200190518101906200013591906200050a565b929650909450925090506001600160a01b0384166200018a5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064015b60405180910390fd5b826001600160a01b0316846001600160a01b03161415620001ee5760405162461bcd60e51b815260206004820152601360248201527f4944454e544943414c5f41444452455353455300000000000000000000000000604482015260640162000181565b6001600160a01b038416301415620002395760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015260640162000181565b6001600160a01b038316301415620002845760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b604482015260640162000181565b612710821115620002cb5760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f535741505f46454560801b604482015260640162000181565b6001600160601b0319606085811b82166101605284901b166101805260c082905261271082900360e052604080516360a56c0160e11b815290516001600160a01b0387169163c14ad802916004808301926020929190829003018186803b1580156200033657600080fd5b505afa1580156200034b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037191906200065b565b600481905550846001600160a01b0316630c0a0cd26040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b157600080fd5b505afa158015620003c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ec9190620004e3565b6001600160a01b0316610100816001600160a01b031660601b81525050846001600160a01b0316634da318276040518163ffffffff1660e01b815260040160206040518083038186803b1580156200044357600080fd5b505afa15801562000458573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047e9190620004e3565b6001600160601b0319606091821b8116610120529086901b166101405260016009558015620004c557600880546001600160e01b0316600160e01b4263ffffffff16021790555b505050505050620006a4565b8051620004de816200068b565b919050565b600060208284031215620004f657600080fd5b815162000503816200068b565b9392505050565b600080600080608085870312156200052157600080fd5b84516200052e816200068b565b602086015190945062000541816200068b565b60408601516060870151919450925080151581146200055f57600080fd5b939692955090935050565b600080604083850312156200057e57600080fd5b82516001600160401b03808211156200059657600080fd5b818501915085601f830112620005ab57600080fd5b815181811115620005c057620005c062000675565b604051601f8201601f19908116603f01168101908382118183101715620005eb57620005eb62000675565b816040528281526020935088848487010111156200060857600080fd5b600091505b828210156200062c57848201840151818301850152908301906200060d565b828211156200063e5760008484830101525b955062000650915050858201620004d1565b925050509250929050565b6000602082840312156200066e57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114620006a157600080fd5b50565b60805160a05160c05160e0516101005160601c6101205160601c6101405160601c6101605160601c6101805160601c613d7662000835600039600081816106060152818161085e0152818161098d01528181610a3b015281816110be015281816111c60152818161145c0152818161179c0152818161180b01528181611b6201528181611cc10152818161221f01528181612530015281816125b70152612e16015260008181610364015281816107da01528181610b2001528181610c4f015281816110920152818161115d015281816114e201528181611748015281816118ec01528181611a5c01528181611c53015281816121a0015281816125ec015281816126d70152612d2c0152600081816105df015261208801526000818161042301528181611aa901528181611baa01528181612bb001528181612c8c01528181612d5f0152612e470152600081816103180152613250015260008181612aee01526134ab01526000818161044a0152818161356d01526135d8015260006113c30152600061129a0152613d766000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c8063627dd56a11610145578063a69840a8116100bd578063c14ad8021161008c578063d21220a711610071578063d21220a714610601578063d505accf14610628578063dd62ed3e1461063b57600080fd5b8063c14ad802146105d1578063cf58879a146105da57600080fd5b8063a69840a814610571578063a8f1f52e14610598578063a9059cbb146105ab578063af8c09bf146105be57600080fd5b80637464fc3d116101145780637ecebe00116100f95780637ecebe001461050b57806392bc32191461052b57806395d89b411461053557600080fd5b80637464fc3d146104ef5780637ba0e2e7146104f857600080fd5b8063627dd56a1461047e57806365dfc7671461049157806367e4ac2c146104ba57806370a08231146104cf57600080fd5b80632a07b6c7116101d8578063499a3c50116101a757806354cf2aeb1161018c57806354cf2aeb146104455780635909c0d51461046c5780635a3d54931461047557600080fd5b8063499a3c501461040b5780634da318271461041e57600080fd5b80632a07b6c7146103a257806330adf81f146103c2578063313ce567146103e95780633644e5151461040357600080fd5b80630c0a0cd2116102145780630c0a0cd2146103135780630dfe16811461035f57806318160ddd1461038657806323b872dd1461038f57600080fd5b8063053da1c81461024657806306fdde031461026c5780630902f1ac146102b5578063095ea7b3146102f0575b600080fd5b610259610254366004613961565b610666565b6040519081526020015b60405180910390f35b6102a86040518060400160405280600e81526020017f5375736869204c5020546f6b656e00000000000000000000000000000000000081525081565b6040516102639190613b3a565b6102bd610d0b565b604080516dffffffffffffffffffffffffffff948516815293909216602084015263ffffffff1690820152606001610263565b6103036102fe366004613844565b610d74565b6040519015158152602001610263565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610263565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b61025960005481565b61030361039d3660046138a9565b610ded565b6103b56103b0366004613961565b610f39565b6040516102639190613ad5565b6102597f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103f1601281565b60405160ff9091168152602001610263565b610259611296565b610259610419366004613961565b6113e5565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b61025960055481565b61025960065481565b61025961048c366004613961565b6115cd565b6104996119bd565b60408051938452602084019290925263ffffffff1690820152606001610263565b6104c2611c31565b6040516102639190613a7b565b6102596104dd366004613695565b60016020526000908152604090205481565b61025960075481565b610259610506366004613961565b611d30565b610259610519366004613695565b60036020526000908152604090205481565b610533612086565b005b6102a86040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b6102597f54726964656e743a436f6e7374616e7450726f6475637400000000000000000081565b6102596105a6366004613961565b612129565b6103036105b9366004613844565b6122fd565b6102596105cc366004613961565b612382565b61025960045481565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b61033a7f000000000000000000000000000000000000000000000000000000000000000081565b6105336106363660046138ea565b612794565b610259610649366004613870565b600260209081526000928352604080842090915290825290205481565b60006009546001146106d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60026009556000808080806106f087890189613700565b9450945094509450945060008060006107586008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092506000836dffffffffffffffffffffffffffff16116107d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f504f4f4c5f554e494e495449414c495a4544000000000000000000000000000060448201526064016106d0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610a395761085785846dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff16612ae6565b98506108857f00000000000000000000000000000000000000000000000000000000000000008a8989612b49565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b1906108c1908790600401613b3a565b600060405180830381600087803b1580156108db57600080fd5b505af11580156108ef573d6000803e3d6000fd5b505050506000806108fe612cef565b9150915086856dffffffffffffffffffffffffffff168303101561097e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e0000000000000000000060448201526064016106d0565b61098b8282878787612ec9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610a2a929190918252602082015260400190565b60405180910390a45050610cf7565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106d0565b610b1985836dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff16612ae6565b9850610b477f00000000000000000000000000000000000000000000000000000000000000008a8989612b49565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b190610b83908790600401613b3a565b600060405180830381600087803b158015610b9d57600080fd5b505af1158015610bb1573d6000803e3d6000fd5b50505050600080610bc0612cef565b9150915086846dffffffffffffffffffffffffffff1682031015610c40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e0000000000000000000060448201526064016106d0565b610c4d8282878787612ec9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610cec929190918252602082015260400190565b60405180910390a450505b505060016009555094979650505050505050565b6000806000610d696008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250909192565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ddc9086815260200190565b60405180910390a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610e8a5773ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915281208054849290610e84908490613c0f565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604081208054849290610ebf908490613c0f565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260016020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f279086815260200190565b60405180910390a35060019392505050565b6060600954600114610fa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106d0565b6002600955600080610fbb8486018661380f565b91509150600080600061101d6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b92509250925060008061102e612cef565b3060009081526001602052604081205492945090925061104e87876131a8565b50905060008161105e8685613bd2565b6110689190613b97565b90506000826110778686613bd2565b6110819190613b97565b905061108d308561328f565b6110b97f0000000000000000000000000000000000000000000000000000000000000000838d8d612b49565b6110e57f0000000000000000000000000000000000000000000000000000000000000000828d8d612b49565b818603955080850394506110fc86868b8b8b612ec9565b61110e6111098688613bd2565b613322565b6007556040805160028082526060820190925290816020015b6040805180820190915260008082526020820152815260200190600190039081611127579050509b5060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001838152508c6000815181106111ae576111ae613cbd565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001828152508c60018151811061121757611217613cbd565b60209081029190910181019190915260408051848152918201839052810185905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a35050600160095550979a9950505050505050505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146113c05750604080518082018252600e81527f5375736869204c5020546f6b656e00000000000000000000000000000000000060209182015281518083018352600181527f31000000000000000000000000000000000000000000000000000000000000009082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600080806113f584860186613844565b915091506000806114556008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b50915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156114e0576114d983836dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff166134a7565b94506115c3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e00000000000000000000000060448201526064016106d0565b6115c083826dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff166134a7565b94505b5050505092915050565b600060095460011461163b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106d0565b600260095560008080611650858701876136b9565b92509250925060008060006116b46008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092506000836dffffffffffffffffffffffffffff1611611734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f504f4f4c5f554e494e495449414c495a4544000000000000000000000000000060448201526064016106d0565b60008061173f612cef565b915091506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415611809577f00000000000000000000000000000000000000000000000000000000000000009050866dffffffffffffffffffffffffffff16840391506117fd82886dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff16612ae6565b9a508a83039250611925565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16146118be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106d0565b50506008546dffffffffffffffffffffffffffff6e01000000000000000000000000000090910481168203907f00000000000000000000000000000000000000000000000000000000000000009061191d908390888116908a16612ae6565b9a508a840393505b611931818c8b8b612b49565b61193e8484898989612ec9565b8073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062858f604051610cec929190918252602082015260400190565b600080600080600080611a1f6008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b6040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526dffffffffffffffffffffffffffff851660248301526000604483015293965091945092507f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b158015611aed57600080fd5b505afa158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2591906139d3565b6040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526dffffffffffffffffffffffffffff85166024830152600060448301529197507f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b158015611bee57600080fd5b505afa158015611c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2691906139d3565b959690945092505050565b60408051600280825260608083018452926020830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110611c8557611c85613cbd565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611cf357611cf3613cbd565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b6000600954600114611d9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106d0565b60026009556000611db183850185613695565b90506000806000611e116008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250600080611e22612cef565b90925090506000611e366111098385613bd2565b90506000611e546dffffffffffffffffffffffffffff881685613c0f565b90506000611e726dffffffffffffffffffffffffffff881685613c0f565b9050600080611ea384848c6dffffffffffffffffffffffffffff168c6dffffffffffffffffffffffffffff16613512565b9092509050611eb2828b613b4d565b9950611ebe818a613b4d565b9850600080611ecd8c8c6131a8565b915091508160001415611f7057600086118015611eea5750600085115b611f50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f414d4f554e5453000000000000000000000000000000000060448201526064016106d0565b611f5c6103e888613c0f565b9d50611f6b60006103e8613615565b611f8c565b80870381611f7e8483613bd2565b611f889190613b97565b9e50505b8d611ff3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e54454400000060448201526064016106d0565b611ffd8d8f613615565b61200a89898e8e8e612ec9565b600787905560408051878152602081018790529081018f90528e9073ffffffffffffffffffffffffffffffffffffffff8f169033907ff9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e9060600160405180910390a350506001600955509a9d9c50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b1580156120ec57600080fd5b505afa158015612100573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212491906139d3565b600455565b6000808061213984860186613844565b915091506000806121996008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b50915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561221d576114d983836dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff16612ae6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146122d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106d0565b6115c083826dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff16612ae6565b3360009081526001602052604081208054839190839061231e908490613c0f565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ddc9086815260200190565b60006009546001146123f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106d0565b600260095560008080612405858701876136b9565b92509250925060008060006124696008546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b30600090815260016020526040812054939650919450925061248b85856131a8565b5090506000816124ab6dffffffffffffffffffffffffffff881685613bd2565b6124b59190613b97565b90506000826124d46dffffffffffffffffffffffffffff881686613bd2565b6124de9190613b97565b90506125216124fd826dffffffffffffffffffffffffffff8916613c0f565b612517846dffffffffffffffffffffffffffff8b16613c0f565b6111099190613bd2565b60075561252e308561328f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614156125ea576125b18283896dffffffffffffffffffffffffffff160383896dffffffffffffffffffffffffffff1603612ae6565b016125de7f0000000000000000000000000000000000000000000000000000000000000000828b8b612b49565b809a5060009150612705565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161461269f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e00000000000000000000000060448201526064016106d0565b6126ce8182886dffffffffffffffffffffffffffff1603848a6dffffffffffffffffffffffffffff1603612ae6565b820191506126fe7f0000000000000000000000000000000000000000000000000000000000000000838b8b612b49565b5098508860005b600080612710612cef565b9150915061272182828b8b8b612ec9565b604080518581526020810185905290810187905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a35050600160095550989b9a5050505050505050505050565b428410156127fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016106d0565b6000612808611296565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c9290919061286383613c26565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016129049291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa15801561298d573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590612a0857508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612a6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e4154555245000000000000000060448201526064016106d0565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b600080612b137f000000000000000000000000000000000000000000000000000000000000000086613bd2565b905080612b2261271086613bd2565b612b2c9190613b7f565b612b368483613bd2565b612b409190613b97565b95945050505050565b8015612c32576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152306024830152838116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b158015612bf357600080fd5b505af1158015612c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2b91906139ec565b5050612ce9565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301528381166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401600060405180830381600087803b158015612cd057600080fd5b505af1158015612ce4573d6000803e3d6000fd5b505050505b50505050565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015230602483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063f7888aec9060440160206040518083038186803b158015612da157600080fd5b505afa158015612db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd991906139d3565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301529193507f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b158015612e8b57600080fd5b505afa158015612e9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec391906139d3565b90509091565b6dffffffffffffffffffffffffffff8511801590612ef557506dffffffffffffffffffffffffffff8411155b612f5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4f564552464c4f5700000000000000000000000000000000000000000000000060448201526064016106d0565b63ffffffff8116612fbd57600880546dffffffffffffffffffffffffffff8681166e010000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090921690881617179055613168565b4263ffffffff80821690831614801590612fe657506dffffffffffffffffffffffffffff841615155b801561300157506dffffffffffffffffffffffffffff831615155b156130c65781810360006dffffffffffffffffffffffffffff86167bffffffffffffffffffffffffffff0000000000000000000000000000607087901b168161304c5761304c613c8e565b600580549290910463ffffffff851681029092019055905060006dffffffffffffffffffffffffffff8616607088901b7bffffffffffffffffffffffffffff000000000000000000000000000016816130a7576130a7613c8e565b0490508263ffffffff1681026006600082825401925050819055505050505b6008805463ffffffff9092167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8881166e010000000000000000000000000000027fffffffff00000000000000000000000000000000000000000000000000000000909516908a161793909317929092169190911790555b60408051868152602081018690527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a15050505050565b600080546007549091908015613287576131d86111096dffffffffffffffffffffffffffff808716908816613bd2565b915080821115613287576004546000816131f28486613c0f565b6131fc9087613bd2565b6132069190613bd2565b905060006132148484613bd2565b8561322185612710613c0f565b61322b9190613bd2565b6132359190613b7f565b905060006132438284613b97565b90508015613282576132757f000000000000000000000000000000000000000000000000000000000000000082613615565b61327f8188613b7f565b96505b505050505b509250929050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812080548392906132c4908490613c0f565b909155505060008054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b60008161333157506000919050565b81600170010000000000000000000000000000000082106133575760809190911c9060401b5b6801000000000000000082106133725760409190911c9060201b5b64010000000082106133895760209190911c9060101b5b62010000821061339e5760109190911c9060081b5b61010082106133b25760089190911c9060041b5b601082106133c55760049190911c9060021b5b600882106133d15760011b5b60018185816133e2576133e2613c8e565b048201901c905060018185816133fa576133fa613c8e565b048201901c9050600181858161341257613412613c8e565b048201901c9050600181858161342a5761342a613c8e565b048201901c9050600181858161344257613442613c8e565b048201901c9050600181858161345a5761345a613c8e565b048201901c9050600181858161347257613472613c8e565b048201901c9050600081858161348a5761348a613c8e565b04905080821061349a578061349c565b815b93505050505b919050565b60007f00000000000000000000000000000000000000000000000000000000000000006134d48584613c0f565b6134de9190613bd2565b6127106134eb8686613bd2565b6134f59190613bd2565b6134ff9190613b97565b61350a906001613b7f565b949350505050565b600080831580613520575082155b156135305750600090508061360c565b60008461353d8589613bd2565b6135479190613b97565b90508581116135a25761355d6127106002613bd2565b6135678288613c0f565b613591907f0000000000000000000000000000000000000000000000000000000000000000613bd2565b61359b9190613b97565b915061360a565b6000846135af8789613bd2565b6135b99190613b97565b90506135c86127106002613bd2565b6135d2828a613c0f565b6135fc907f0000000000000000000000000000000000000000000000000000000000000000613bd2565b6136069190613b97565b9350505b505b94509492505050565b806000808282546136269190613b7f565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101613316565b803580151581146134a257600080fd5b6000602082840312156136a757600080fd5b81356136b281613d1b565b9392505050565b6000806000606084860312156136ce57600080fd5b83356136d981613d1b565b925060208401356136e981613d1b565b91506136f760408501613685565b90509250925092565b600080600080600060a0868803121561371857600080fd5b853561372381613d1b565b9450602086013561373381613d1b565b935061374160408701613685565b925060608601359150608086013567ffffffffffffffff8082111561376557600080fd5b818801915088601f83011261377957600080fd5b81358181111561378b5761378b613cec565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156137d1576137d1613cec565b816040528281528b60208487010111156137ea57600080fd5b8260208601602083013760006020848301015280955050505050509295509295909350565b6000806040838503121561382257600080fd5b823561382d81613d1b565b915061383b60208401613685565b90509250929050565b6000806040838503121561385757600080fd5b823561386281613d1b565b946020939093013593505050565b6000806040838503121561388357600080fd5b823561388e81613d1b565b9150602083013561389e81613d1b565b809150509250929050565b6000806000606084860312156138be57600080fd5b83356138c981613d1b565b925060208401356138d981613d1b565b929592945050506040919091013590565b600080600080600080600060e0888a03121561390557600080fd5b873561391081613d1b565b9650602088013561392081613d1b565b95506040880135945060608801359350608088013560ff8116811461394457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806020838503121561397457600080fd5b823567ffffffffffffffff8082111561398c57600080fd5b818501915085601f8301126139a057600080fd5b8135818111156139af57600080fd5b8660208285010111156139c157600080fd5b60209290920196919550909350505050565b6000602082840312156139e557600080fd5b5051919050565b600080604083850312156139ff57600080fd5b505080516020909101519092909150565b6000815180845260005b81811015613a3657602081850181015186830182015201613a1a565b81811115613a48576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020808252825182820181905260009190848201906040850190845b81811015613ac957835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613a97565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015613b2d578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101613af2565b5091979650505050505050565b6020815260006136b26020830184613a10565b60006dffffffffffffffffffffffffffff808316818516808303821115613b7657613b76613c5f565b01949350505050565b60008219821115613b9257613b92613c5f565b500190565b600082613bcd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c0a57613c0a613c5f565b500290565b600082821015613c2157613c21613c5f565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613c5857613c58613c5f565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114613d3d57600080fd5b5056fea2646970667358221220bb078510fffdf67ed7dc18a1522f433526c7a6cfd9a607fd03877e6111685ff464736f6c63430008070033a26469706673582212201be62110666c5bed67567f199d6ff16deb95b17ff418a87b38aabf1019ba1c7b64736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x71A25812 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x71A25812 EQ PUSH3 0x12E JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH3 0x154 JUMPI DUP1 PUSH4 0xF6AB6D99 EQ PUSH3 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x169C4CEF EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x27C3CAE1 EQ PUSH3 0xC1 JUMPI DUP1 PUSH4 0x5BC93D6C EQ PUSH3 0xD8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x938 JUMP JUMPDEST PUSH3 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x97 PUSH3 0xD2 CALLDATASIZE PUSH1 0x4 PUSH3 0x9E3 JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH3 0x11F PUSH3 0xE9 CALLDATASIZE PUSH1 0x4 PUSH3 0x8FA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xB8 JUMP JUMPDEST PUSH3 0x145 PUSH3 0x13F CALLDATASIZE PUSH1 0x4 PUSH3 0x97E JUMP JUMPDEST PUSH3 0x401 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xB8 SWAP2 SWAP1 PUSH3 0xABC JUMP JUMPDEST PUSH3 0x97 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0x97 PUSH3 0x18D CALLDATASIZE PUSH1 0x4 PUSH3 0x9C9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP3 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH3 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP DUP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x226 SWAP2 SWAP1 PUSH3 0x89A JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH3 0x267 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x20 DUP4 ADD MSTORE DUP6 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE PUSH1 0x2 DUP1 DUP5 MSTORE PUSH1 0x60 DUP5 ADD SWAP1 SWAP3 MSTORE SWAP8 POP PUSH1 0x0 SWAP2 SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP5 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH3 0x309 JUMPI PUSH3 0x309 PUSH3 0xC32 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP4 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH3 0x35A JUMPI PUSH3 0x35A PUSH3 0xC32 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE DUP8 MLOAD SWAP1 DUP9 ADD KECCAK256 PUSH1 0x40 MLOAD DUP2 SWAP1 DUP10 SWAP1 PUSH32 0x0 SWAP1 PUSH3 0x3B8 SWAP1 PUSH3 0x88C JUMP JUMPDEST PUSH3 0x3C5 SWAP3 SWAP2 SWAP1 PUSH3 0xB18 JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH3 0x3E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP7 POP PUSH3 0x3F6 DUP8 DUP4 DUP4 PUSH3 0x52A JUMP JUMPDEST POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x41F JUMPI PUSH3 0x41F PUSH3 0xC61 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x449 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x521 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH3 0x494 DUP3 DUP7 PUSH3 0xBAC JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH3 0x4A7 JUMPI PUSH3 0x4A7 PUSH3 0xC32 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x4E7 JUMPI PUSH3 0x4E7 PUSH3 0xC32 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x518 DUP2 PUSH3 0xBC7 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x44F JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH3 0x59A JUMPI PUSH1 0x40 MLOAD PUSH32 0x3781A5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH3 0x886 JUMPI DUP3 DUP2 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH3 0x60C JUMPI PUSH3 0x60C PUSH3 0xC32 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x63F JUMPI PUSH3 0x63F PUSH3 0xC32 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH3 0x695 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3F06BF8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH3 0x87C JUMPI PUSH1 0x0 DUP1 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x6BC JUMPI PUSH3 0x6BC PUSH3 0xC32 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x715 JUMPI PUSH3 0x715 PUSH3 0xC32 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP3 MSTORE SWAP2 DUP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP5 MLOAD DUP2 SWAP1 DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH3 0x7A4 JUMPI PUSH3 0x7A4 PUSH3 0xC32 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x7FD JUMPI PUSH3 0x7FD PUSH3 0xC32 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE SWAP2 DUP4 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE ADD PUSH3 0x69A JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH3 0x5E7 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x45AB DUP1 PUSH3 0xCB7 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x8B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH3 0x8BE DUP2 PUSH3 0xC90 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH3 0x8D1 DUP2 PUSH3 0xC90 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x8EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x90E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH3 0x91B DUP2 PUSH3 0xC90 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH3 0x92D DUP2 PUSH3 0xC90 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x94E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH3 0x95B DUP2 PUSH3 0xC90 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH3 0x96D DUP2 PUSH3 0xC90 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x995 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH3 0x9A2 DUP2 PUSH3 0xC90 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH3 0x9B4 DUP2 PUSH3 0xC90 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x9DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x9F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0xA0F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA39 JUMPI PUSH3 0xA39 PUSH3 0xC61 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA82 JUMPI PUSH3 0xA82 PUSH3 0xC61 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xB0C JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0xAD8 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xB48 JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH3 0xB29 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0xB5B JUMPI PUSH1 0x0 PUSH1 0x60 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD PUSH1 0x60 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0xBC2 JUMPI PUSH3 0xBC2 PUSH3 0xC03 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH3 0xBFC JUMPI PUSH3 0xBFC PUSH3 0xC03 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0xCB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH2 0x1A0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x45AB CODESIZE SUB DUP1 PUSH3 0x45AB DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x56A JUMP JUMPDEST CHAINID PUSH1 0x80 MSTORE PUSH3 0x112 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x29BAB9B434902628102A37B5B2B7 PUSH1 0x91 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP6 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x135 SWAP2 SWAP1 PUSH3 0x50A JUMP JUMPDEST SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x18A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A45524F5F41444452455353 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x1EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4944454E544943414C5F41444452455353455300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ ISZERO PUSH3 0x239 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FAA27A5A2A7 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ADDRESS EQ ISZERO PUSH3 0x284 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FAA27A5A2A7 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST PUSH2 0x2710 DUP3 GT ISZERO PUSH3 0x2CB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x494E56414C49445F535741505F464545 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 DUP2 SHL DUP3 AND PUSH2 0x160 MSTORE DUP5 SWAP1 SHL AND PUSH2 0x180 MSTORE PUSH1 0xC0 DUP3 SWAP1 MSTORE PUSH2 0x2710 DUP3 SWAP1 SUB PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x60A56C01 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0xC14AD802 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x34B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x371 SWAP2 SWAP1 PUSH3 0x65B JUMP JUMPDEST PUSH1 0x4 DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0A0CD2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3C6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x3EC SWAP2 SWAP1 PUSH3 0x4E3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x100 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4DA31827 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x458 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x47E SWAP2 SWAP1 PUSH3 0x4E3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH2 0x120 MSTORE SWAP1 DUP7 SWAP1 SHL AND PUSH2 0x140 MSTORE PUSH1 0x1 PUSH1 0x9 SSTORE DUP1 ISZERO PUSH3 0x4C5 JUMPI PUSH1 0x8 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0xE0 SHL TIMESTAMP PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP PUSH3 0x6A4 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x4DE DUP2 PUSH3 0x68B JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x4F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x503 DUP2 PUSH3 0x68B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH3 0x52E DUP2 PUSH3 0x68B JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH3 0x541 DUP2 PUSH3 0x68B JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x60 DUP8 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x55F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x5AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x5C0 JUMPI PUSH3 0x5C0 PUSH3 0x675 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x5EB JUMPI PUSH3 0x5EB PUSH3 0x675 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE PUSH1 0x20 SWAP4 POP DUP9 DUP5 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP3 DUP3 LT ISZERO PUSH3 0x62C JUMPI DUP5 DUP3 ADD DUP5 ADD MLOAD DUP2 DUP4 ADD DUP6 ADD MSTORE SWAP1 DUP4 ADD SWAP1 PUSH3 0x60D JUMP JUMPDEST DUP3 DUP3 GT ISZERO PUSH3 0x63E JUMPI PUSH1 0x0 DUP5 DUP5 DUP4 ADD ADD MSTORE JUMPDEST SWAP6 POP PUSH3 0x650 SWAP2 POP POP DUP6 DUP3 ADD PUSH3 0x4D1 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x66E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x6A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x160 MLOAD PUSH1 0x60 SHR PUSH2 0x180 MLOAD PUSH1 0x60 SHR PUSH2 0x3D76 PUSH3 0x835 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x606 ADD MSTORE DUP2 DUP2 PUSH2 0x85E ADD MSTORE DUP2 DUP2 PUSH2 0x98D ADD MSTORE DUP2 DUP2 PUSH2 0xA3B ADD MSTORE DUP2 DUP2 PUSH2 0x10BE ADD MSTORE DUP2 DUP2 PUSH2 0x11C6 ADD MSTORE DUP2 DUP2 PUSH2 0x145C ADD MSTORE DUP2 DUP2 PUSH2 0x179C ADD MSTORE DUP2 DUP2 PUSH2 0x180B ADD MSTORE DUP2 DUP2 PUSH2 0x1B62 ADD MSTORE DUP2 DUP2 PUSH2 0x1CC1 ADD MSTORE DUP2 DUP2 PUSH2 0x221F ADD MSTORE DUP2 DUP2 PUSH2 0x2530 ADD MSTORE DUP2 DUP2 PUSH2 0x25B7 ADD MSTORE PUSH2 0x2E16 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x364 ADD MSTORE DUP2 DUP2 PUSH2 0x7DA ADD MSTORE DUP2 DUP2 PUSH2 0xB20 ADD MSTORE DUP2 DUP2 PUSH2 0xC4F ADD MSTORE DUP2 DUP2 PUSH2 0x1092 ADD MSTORE DUP2 DUP2 PUSH2 0x115D ADD MSTORE DUP2 DUP2 PUSH2 0x14E2 ADD MSTORE DUP2 DUP2 PUSH2 0x1748 ADD MSTORE DUP2 DUP2 PUSH2 0x18EC ADD MSTORE DUP2 DUP2 PUSH2 0x1A5C ADD MSTORE DUP2 DUP2 PUSH2 0x1C53 ADD MSTORE DUP2 DUP2 PUSH2 0x21A0 ADD MSTORE DUP2 DUP2 PUSH2 0x25EC ADD MSTORE DUP2 DUP2 PUSH2 0x26D7 ADD MSTORE PUSH2 0x2D2C ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x5DF ADD MSTORE PUSH2 0x2088 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x423 ADD MSTORE DUP2 DUP2 PUSH2 0x1AA9 ADD MSTORE DUP2 DUP2 PUSH2 0x1BAA ADD MSTORE DUP2 DUP2 PUSH2 0x2BB0 ADD MSTORE DUP2 DUP2 PUSH2 0x2C8C ADD MSTORE DUP2 DUP2 PUSH2 0x2D5F ADD MSTORE PUSH2 0x2E47 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x318 ADD MSTORE PUSH2 0x3250 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x2AEE ADD MSTORE PUSH2 0x34AB ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x44A ADD MSTORE DUP2 DUP2 PUSH2 0x356D ADD MSTORE PUSH2 0x35D8 ADD MSTORE PUSH1 0x0 PUSH2 0x13C3 ADD MSTORE PUSH1 0x0 PUSH2 0x129A ADD MSTORE PUSH2 0x3D76 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x241 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x627DD56A GT PUSH2 0x145 JUMPI DUP1 PUSH4 0xA69840A8 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xC14AD802 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x601 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x628 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x63B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x5D1 JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x571 JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x598 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5AB JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x5BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7464FC3D GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x50B JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x52B JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x535 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x4EF JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x4F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x627DD56A EQ PUSH2 0x47E JUMPI DUP1 PUSH4 0x65DFC767 EQ PUSH2 0x491 JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x54CF2AEB GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x445 JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x40B JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x41E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x3A2 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3E9 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x403 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x214 JUMPI DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x313 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x35F JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x38F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2B5 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2F0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x259 PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x666 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x3B3A JUMP JUMPDEST PUSH2 0x2BD PUSH2 0xD0B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x303 PUSH2 0x2FE CALLDATASIZE PUSH1 0x4 PUSH2 0x3844 JUMP JUMPDEST PUSH2 0xD74 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x303 PUSH2 0x39D CALLDATASIZE PUSH1 0x4 PUSH2 0x38A9 JUMP JUMPDEST PUSH2 0xDED JUMP JUMPDEST PUSH2 0x3B5 PUSH2 0x3B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0xF39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x3AD5 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x3F1 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x1296 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x419 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x13E5 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x48C CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x15CD JUMP JUMPDEST PUSH2 0x499 PUSH2 0x19BD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH4 0xFFFFFFFF AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x4C2 PUSH2 0x1C31 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x3A7B JUMP JUMPDEST PUSH2 0x259 PUSH2 0x4DD CALLDATASIZE PUSH1 0x4 PUSH2 0x3695 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x506 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x1D30 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x519 CALLDATASIZE PUSH1 0x4 PUSH2 0x3695 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x533 PUSH2 0x2086 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x54726964656E743A436F6E7374616E7450726F64756374000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x5A6 CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x2129 JUMP JUMPDEST PUSH2 0x303 PUSH2 0x5B9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3844 JUMP JUMPDEST PUSH2 0x22FD JUMP JUMPDEST PUSH2 0x259 PUSH2 0x5CC CALLDATASIZE PUSH1 0x4 PUSH2 0x3961 JUMP JUMPDEST PUSH2 0x2382 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x33A PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x533 PUSH2 0x636 CALLDATASIZE PUSH1 0x4 PUSH2 0x38EA JUMP JUMPDEST PUSH2 0x2794 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x649 CALLDATASIZE PUSH1 0x4 PUSH2 0x3870 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x6D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x6F0 DUP8 DUP10 ADD DUP10 PUSH2 0x3700 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x758 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0x7D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C5F554E494E495449414C495A45440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xA39 JUMPI PUSH2 0x857 DUP6 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST SWAP9 POP PUSH2 0x885 PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x2B49 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x8C1 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3B3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 PUSH2 0x8FE PUSH2 0x2CEF JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 SUB LT ISZERO PUSH2 0x97E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x98B DUP3 DUP3 DUP8 DUP8 DUP8 PUSH2 0x2EC9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP11 DUP16 PUSH1 0x40 MLOAD PUSH2 0xA2A SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH2 0xCF7 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xAEE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0xB19 DUP6 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST SWAP9 POP PUSH2 0xB47 PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x2B49 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0xB83 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3B3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBB1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 PUSH2 0xBC0 PUSH2 0x2CEF JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 SUB LT ISZERO PUSH2 0xC40 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0xC4D DUP3 DUP3 DUP8 DUP8 DUP8 PUSH2 0x2EC9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP11 DUP16 PUSH1 0x40 MLOAD PUSH2 0xCEC SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xD69 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xDDC SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xE8A JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xE84 SWAP1 DUP5 SWAP1 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xEBF SWAP1 DUP5 SWAP1 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xF27 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0xFA7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 PUSH2 0xFBB DUP5 DUP7 ADD DUP7 PUSH2 0x380F JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x101D PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x102E PUSH2 0x2CEF JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH2 0x104E DUP8 DUP8 PUSH2 0x31A8 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x105E DUP7 DUP6 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x1068 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x1077 DUP7 DUP7 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x1081 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH2 0x108D ADDRESS DUP6 PUSH2 0x328F JUMP JUMPDEST PUSH2 0x10B9 PUSH32 0x0 DUP4 DUP14 DUP14 PUSH2 0x2B49 JUMP JUMPDEST PUSH2 0x10E5 PUSH32 0x0 DUP3 DUP14 DUP14 PUSH2 0x2B49 JUMP JUMPDEST DUP2 DUP7 SUB SWAP6 POP DUP1 DUP6 SUB SWAP5 POP PUSH2 0x10FC DUP7 DUP7 DUP12 DUP12 DUP12 PUSH2 0x2EC9 JUMP JUMPDEST PUSH2 0x110E PUSH2 0x1109 DUP7 DUP9 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3322 JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1127 JUMPI SWAP1 POP POP SWAP12 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP13 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x11AE JUMPI PUSH2 0x11AE PUSH2 0x3CBD JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP13 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1217 JUMPI PUSH2 0x1217 PUSH2 0x3CBD JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP2 DUP3 ADD DUP4 SWAP1 MSTORE DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP8 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x13C0 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x13F5 DUP5 DUP7 ADD DUP7 PUSH2 0x3844 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1455 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x14E0 JUMPI PUSH2 0x14D9 DUP4 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x34A7 JUMP JUMPDEST SWAP5 POP PUSH2 0x15C3 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1595 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x15C0 DUP4 DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x34A7 JUMP JUMPDEST SWAP5 POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x163B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x1650 DUP6 DUP8 ADD DUP8 PUSH2 0x36B9 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x16B4 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT PUSH2 0x1734 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x504F4F4C5F554E494E495449414C495A45440000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x173F PUSH2 0x2CEF JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1809 JUMPI PUSH32 0x0 SWAP1 POP DUP7 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 SUB SWAP2 POP PUSH2 0x17FD DUP3 DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST SWAP11 POP DUP11 DUP4 SUB SWAP3 POP PUSH2 0x1925 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x18BE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST POP POP PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH15 0x10000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 AND DUP3 SUB SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x191D SWAP1 DUP4 SWAP1 DUP9 DUP2 AND SWAP1 DUP11 AND PUSH2 0x2AE6 JUMP JUMPDEST SWAP11 POP DUP11 DUP5 SUB SWAP4 POP JUMPDEST PUSH2 0x1931 DUP2 DUP13 DUP12 DUP12 PUSH2 0x2B49 JUMP JUMPDEST PUSH2 0x193E DUP5 DUP5 DUP10 DUP10 DUP10 PUSH2 0x2EC9 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP6 DUP16 PUSH1 0x40 MLOAD PUSH2 0xCEC SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1A1F PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B25 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE SWAP2 SWAP8 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C02 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C26 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST SWAP6 SWAP7 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1C85 JUMPI PUSH2 0x1C85 PUSH2 0x3CBD JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1CF3 JUMPI PUSH2 0x1CF3 PUSH2 0x3CBD JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x1D9E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 PUSH2 0x1DB1 DUP4 DUP6 ADD DUP6 PUSH2 0x3695 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1E11 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x1E22 PUSH2 0x2CEF JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x1E36 PUSH2 0x1109 DUP4 DUP6 PUSH2 0x3BD2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E54 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E72 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1EA3 DUP5 DUP5 DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3512 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1EB2 DUP3 DUP12 PUSH2 0x3B4D JUMP JUMPDEST SWAP10 POP PUSH2 0x1EBE DUP2 DUP11 PUSH2 0x3B4D JUMP JUMPDEST SWAP9 POP PUSH1 0x0 DUP1 PUSH2 0x1ECD DUP13 DUP13 PUSH2 0x31A8 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ ISZERO PUSH2 0x1F70 JUMPI PUSH1 0x0 DUP7 GT DUP1 ISZERO PUSH2 0x1EEA JUMPI POP PUSH1 0x0 DUP6 GT JUMPDEST PUSH2 0x1F50 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F414D4F554E54530000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x1F5C PUSH2 0x3E8 DUP9 PUSH2 0x3C0F JUMP JUMPDEST SWAP14 POP PUSH2 0x1F6B PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x3615 JUMP JUMPDEST PUSH2 0x1F8C JUMP JUMPDEST DUP1 DUP8 SUB DUP2 PUSH2 0x1F7E DUP5 DUP4 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x1F88 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP15 POP POP JUMPDEST DUP14 PUSH2 0x1FF3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F4C49515549444954595F4D494E544544000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x1FFD DUP14 DUP16 PUSH2 0x3615 JUMP JUMPDEST PUSH2 0x200A DUP10 DUP10 DUP15 DUP15 DUP15 PUSH2 0x2EC9 JUMP JUMPDEST PUSH1 0x7 DUP8 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 DUP2 ADD DUP16 SWAP1 MSTORE DUP15 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP1 CALLER SWAP1 PUSH32 0xF9C32FBC56FF04F32A233EBC26E388564223745E28ABD8D0781DD906537F563E SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP11 SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2100 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2124 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x2139 DUP5 DUP7 ADD DUP7 PUSH2 0x3844 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x2199 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x221D JUMPI PUSH2 0x14D9 DUP4 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x22D2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x15C0 DUP4 DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2AE6 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP4 SWAP1 PUSH2 0x231E SWAP1 DUP5 SWAP1 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xDDC SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x23F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x2405 DUP6 DUP8 ADD DUP8 PUSH2 0x36B9 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2469 PUSH1 0x8 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x248B DUP6 DUP6 PUSH2 0x31A8 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x24AB PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x24B5 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x24D4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP7 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x24DE SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH2 0x2521 PUSH2 0x24FD DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x2517 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x1109 SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST PUSH1 0x7 SSTORE PUSH2 0x252E ADDRESS DUP6 PUSH2 0x328F JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x25EA JUMPI PUSH2 0x25B1 DUP3 DUP4 DUP10 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 DUP10 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2AE6 JUMP JUMPDEST ADD PUSH2 0x25DE PUSH32 0x0 DUP3 DUP12 DUP12 PUSH2 0x2B49 JUMP JUMPDEST DUP1 SWAP11 POP PUSH1 0x0 SWAP2 POP PUSH2 0x2705 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x269F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH2 0x26CE DUP2 DUP3 DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP5 DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x2AE6 JUMP JUMPDEST DUP3 ADD SWAP2 POP PUSH2 0x26FE PUSH32 0x0 DUP4 DUP12 DUP12 PUSH2 0x2B49 JUMP JUMPDEST POP SWAP9 POP DUP9 PUSH1 0x0 JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2710 PUSH2 0x2CEF JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2721 DUP3 DUP3 DUP12 DUP12 DUP12 PUSH2 0x2EC9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP9 SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x27FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2808 PUSH2 0x1296 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP3 DUP13 SWAP3 DUP13 SWAP3 DUP13 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x2863 DUP4 PUSH2 0x3C26 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2904 SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x298D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2A08 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2A6E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2B13 PUSH32 0x0 DUP7 PUSH2 0x3BD2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2B22 PUSH2 0x2710 DUP7 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x2B2C SWAP2 SWAP1 PUSH2 0x3B7F JUMP JUMPDEST PUSH2 0x2B36 DUP5 DUP4 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x2B40 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2C32 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C07 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C2B SWAP2 SWAP1 PUSH2 0x39EC JUMP JUMPDEST POP POP PUSH2 0x2CE9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2CD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CE4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2DB5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DD9 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E8B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E9F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EC3 SWAP2 SWAP1 PUSH2 0x39D3 JUMP JUMPDEST SWAP1 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 GT DUP1 ISZERO SWAP1 PUSH2 0x2EF5 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT ISZERO JUMPDEST PUSH2 0x2F5B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564552464C4F57000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6D0 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x2FBD JUMPI PUSH1 0x8 DUP1 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH15 0x10000000000000000000000000000 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP1 DUP9 AND OR OR SWAP1 SSTORE PUSH2 0x3168 JUMP JUMPDEST TIMESTAMP PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP1 DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2FE6 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3001 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x30C6 JUMPI DUP2 DUP2 SUB PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 PUSH1 0x70 DUP8 SWAP1 SHL AND DUP2 PUSH2 0x304C JUMPI PUSH2 0x304C PUSH2 0x3C8E JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF DUP6 AND DUP2 MUL SWAP1 SWAP3 ADD SWAP1 SSTORE SWAP1 POP PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x70 DUP9 SWAP1 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND DUP2 PUSH2 0x30A7 JUMPI PUSH2 0x30A7 PUSH2 0x3C8E JUMP JUMPDEST DIV SWAP1 POP DUP3 PUSH4 0xFFFFFFFF AND DUP2 MUL PUSH1 0x6 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP JUMPDEST PUSH1 0x8 DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH15 0x10000000000000000000000000000 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP1 DUP11 AND OR SWAP4 SWAP1 SWAP4 OR SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH32 0xCF2AA50876CDFBB541206F89AF0EE78D44A2ABF8D328E37FA4917F982149848A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x7 SLOAD SWAP1 SWAP2 SWAP1 DUP1 ISZERO PUSH2 0x3287 JUMPI PUSH2 0x31D8 PUSH2 0x1109 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND SWAP1 DUP9 AND PUSH2 0x3BD2 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3287 JUMPI PUSH1 0x4 SLOAD PUSH1 0x0 DUP2 PUSH2 0x31F2 DUP5 DUP7 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x31FC SWAP1 DUP8 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3206 SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3214 DUP5 DUP5 PUSH2 0x3BD2 JUMP JUMPDEST DUP6 PUSH2 0x3221 DUP6 PUSH2 0x2710 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x322B SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3235 SWAP2 SWAP1 PUSH2 0x3B7F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3243 DUP3 DUP5 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3282 JUMPI PUSH2 0x3275 PUSH32 0x0 DUP3 PUSH2 0x3615 JUMP JUMPDEST PUSH2 0x327F DUP2 DUP9 PUSH2 0x3B7F JUMP JUMPDEST SWAP7 POP JUMPDEST POP POP POP POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x32C4 SWAP1 DUP5 SWAP1 PUSH2 0x3C0F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP1 SLOAD DUP3 SWAP1 SUB DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x3331 JUMPI POP PUSH1 0x0 SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x3357 JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x3372 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x3389 JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x339E JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x33B2 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x33C5 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0x33D1 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x33E2 JUMPI PUSH2 0x33E2 PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x33FA JUMPI PUSH2 0x33FA PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3412 JUMPI PUSH2 0x3412 PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x342A JUMPI PUSH2 0x342A PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3442 JUMPI PUSH2 0x3442 PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x345A JUMPI PUSH2 0x345A PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3472 JUMPI PUSH2 0x3472 PUSH2 0x3C8E JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x348A JUMPI PUSH2 0x348A PUSH2 0x3C8E JUMP JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x349A JUMPI DUP1 PUSH2 0x349C JUMP JUMPDEST DUP2 JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH2 0x34D4 DUP6 DUP5 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x34DE SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x2710 PUSH2 0x34EB DUP7 DUP7 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x34F5 SWAP2 SWAP1 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x34FF SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST PUSH2 0x350A SWAP1 PUSH1 0x1 PUSH2 0x3B7F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 ISZERO DUP1 PUSH2 0x3520 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x3530 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x360C JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x353D DUP6 DUP10 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3547 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 GT PUSH2 0x35A2 JUMPI PUSH2 0x355D PUSH2 0x2710 PUSH1 0x2 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3567 DUP3 DUP9 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x3591 SWAP1 PUSH32 0x0 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x359B SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP2 POP PUSH2 0x360A JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x35AF DUP8 DUP10 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x35B9 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP1 POP PUSH2 0x35C8 PUSH2 0x2710 PUSH1 0x2 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x35D2 DUP3 DUP11 PUSH2 0x3C0F JUMP JUMPDEST PUSH2 0x35FC SWAP1 PUSH32 0x0 PUSH2 0x3BD2 JUMP JUMPDEST PUSH2 0x3606 SWAP2 SWAP1 PUSH2 0x3B97 JUMP JUMPDEST SWAP4 POP POP JUMPDEST POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0x3626 SWAP2 SWAP1 PUSH2 0x3B7F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x3316 JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x34A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x36A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x36B2 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x36CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x36D9 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x36E9 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP2 POP PUSH2 0x36F7 PUSH1 0x40 DUP6 ADD PUSH2 0x3685 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3723 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3733 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP4 POP PUSH2 0x3741 PUSH1 0x40 DUP8 ADD PUSH2 0x3685 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3765 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x378B JUMPI PUSH2 0x378B PUSH2 0x3CEC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x37D1 JUMPI PUSH2 0x37D1 PUSH2 0x3CEC JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP12 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x37EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3822 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x382D DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP2 POP PUSH2 0x383B PUSH1 0x20 DUP5 ADD PUSH2 0x3685 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3857 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3862 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3883 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x388E DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x389E DUP2 PUSH2 0x3D1B JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x38BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x38C9 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x38D9 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3905 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x3910 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x3920 DUP2 PUSH2 0x3D1B JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3944 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3974 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x398C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x39A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x39AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x39C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x39E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x39FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3A36 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x3A1A JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x3A48 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3AC9 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3A97 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3B2D JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3AF2 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x36B2 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3A10 JUMP JUMPDEST PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x3B76 JUMPI PUSH2 0x3B76 PUSH2 0x3C5F JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3B92 JUMPI PUSH2 0x3B92 PUSH2 0x3C5F JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3BCD JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3C0A JUMPI PUSH2 0x3C0A PUSH2 0x3C5F JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3C21 JUMPI PUSH2 0x3C21 PUSH2 0x3C5F JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x3C58 JUMPI PUSH2 0x3C58 PUSH2 0x3C5F JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3D3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB SMOD DUP6 LT SELFDESTRUCT REVERT 0xF6 PUSH31 0xD7DC18A1522F433526C7A6CFD9A607FD03877E6111685FF464736F6C634300 ADDMOD SMOD STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHL 0xE6 0x21 LT PUSH7 0x6C5BED67567F19 SWAP14 PUSH16 0xF16DEB95B17FF418A87B38AABF1019BA SHR PUSH28 0x64736F6C634300080700330000000000000000000000000000000000 ",
              "sourceMap": "258:970:39:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:62:44;;;;;;:::i;:::-;;:::i;:::-;;;3374:42:64;3362:55;;;3344:74;;3332:2;3317:18;250:62:44;;;;;;;;391:835:39;;;;;;:::i;:::-;;:::i;1535:143:44:-;;;;;;:::i;:::-;1643:13;;;;1610;1643;;;;;;;;;;;:21;;;;;;;;;;;:28;;1535:143;;;;5510:25:64;;;5498:2;5483:18;1535:143:44;5364:177:64;1684:345:44;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;204:39::-;;;;;318:48;;;;;;:::i;:::-;;;;;;;;;;;;;;;;250:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;250:62:44;;-1:-1:-1;;250:62:44:o;391:835:39:-;455:12;480:14;496;512:15;529:16;560:11;549:58;;;;;;;;;;;;:::i;:::-;479:128;;;;;;;;631:6;622:15;;:6;:15;;;618:81;;;673:6;;681;618:81;762:48;;;3664:42:64;3733:15;;;762:48:39;;;3715:34:64;3785:15;;3765:18;;;3758:43;;;;3817:18;;;3810:34;;;3887:14;;3880:22;3860:18;;;3853:50;3626:19;;762:48:39;;;;;;;;;;861:1;847:16;;;;;;;;;762:48;-1:-1:-1;821:23:39;;762:48;847:16;;;;;;;;;;;;-1:-1:-1;847:16:39;821:42;;885:6;873;880:1;873:9;;;;;;;;:::i;:::-;;;;;;:18;;;;;;;;;;;913:6;901;908:1;901:9;;;;;;;;:::i;:::-;:18;;;;:9;;;;;;;;;;:18;1064:22;;;;;;1111:64;;1064:22;;1074:11;;1160:14;;1111:64;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;1096:80;;1186:33;1200:4;1206:6;1214:4;1186:13;:33::i;:::-;469:757;;;;;;391:835;;;:::o;1684:345:44:-;1830:26;1894:5;1880:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1880:20:44;;1868:32;;1915:9;1910:113;1934:5;1930:1;:9;1910:113;;;1975:13;;;;:5;:13;;;;;;;;;;;:21;;;;;;;;;1997:14;2010:1;1997:10;:14;:::i;:::-;1975:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1960:9;1970:1;1960:12;;;;;;;;:::i;:::-;:52;;;;:12;;;;;;;;;;;:52;1941:3;;;;:::i;:::-;;;;1910:113;;;;1684:345;;;;;;:::o;740:789::-;500:10;:28;514:14;500:28;;496:63;;537:22;;;;;;;;;;;;;;496:63;936:19:::1;::::0;;;:13:::1;:19;::::0;;;;:26;;;::::1;;::::0;::::1;;::::0;;1174:339:::1;1210:1;1194:6;:13;:17;1190:1;:21;1174:339;;;1253:6;1260:1;1264;1260:5;1253:13;;;;;;;;:::i;:::-;;;;;;;1240:26;;:6;1247:1;1240:9;;;;;;;;:::i;:::-;;;;;;;:26;;;1236:58;;1275:19;;;;;;;;;;;;;;1236:58;1333:1;1329:5:::0;::::1;1312:187;1340:6;:13;1336:1;:17;1312:187;;;1382:5;:16:::0;1388:6:::1;1395:1;1388:9;;;;;;;;:::i;:::-;;;;;;;1382:16;;;;;;;;;;;;;;;:27;1399:6;1406:1;1399:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;1382:27:::1;::::0;;::::1;::::0;;;;::::1;::::0;;;;;;;;-1:-1:-1;1382:27:44;;;:38;;::::1;::::0;::::1;::::0;;;;;;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;1448:9;;-1:-1:-1;;1448:9:44;;1455:1;;1448:9;::::1;;;;;:::i;:::-;;;;;;;1442:16;;;;;;;;;;;;;;;:27;1459:6;1466:1;1459:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;1442:27:::1;::::0;;::::1;::::0;;;;::::1;::::0;;;;;;;;-1:-1:-1;1442:27:44;;;:38;;::::1;::::0;;::::1;::::0;;;;;;;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;1355:3:::1;1312:187;;;-1:-1:-1::0;1213:3:44::1;;1174:339;;;;740:789:::0;;;:::o;-1:-1:-1:-;;;;;;;;:::o;14:625:64:-;124:6;132;140;148;201:3;189:9;180:7;176:23;172:33;169:53;;;218:1;215;208:12;169:53;250:9;244:16;269:31;294:5;269:31;:::i;:::-;369:2;354:18;;348:25;319:5;;-1:-1:-1;382:33:64;348:25;382:33;:::i;:::-;481:2;466:18;;460:25;530:2;515:18;;509:25;434:7;;-1:-1:-1;460:25:64;-1:-1:-1;572:15:64;;565:23;553:36;;543:64;;603:1;600;593:12;543:64;14:625;;;;-1:-1:-1;14:625:64;;-1:-1:-1;;14:625:64:o;644:388::-;712:6;720;773:2;761:9;752:7;748:23;744:32;741:52;;;789:1;786;779:12;741:52;828:9;815:23;847:31;872:5;847:31;:::i;:::-;897:5;-1:-1:-1;954:2:64;939:18;;926:32;967:33;926:32;967:33;:::i;:::-;1019:7;1009:17;;;644:388;;;;;:::o;1037:456::-;1114:6;1122;1130;1183:2;1171:9;1162:7;1158:23;1154:32;1151:52;;;1199:1;1196;1189:12;1151:52;1238:9;1225:23;1257:31;1282:5;1257:31;:::i;:::-;1307:5;-1:-1:-1;1364:2:64;1349:18;;1336:32;1377:33;1336:32;1377:33;:::i;:::-;1037:456;;1429:7;;-1:-1:-1;;;1483:2:64;1468:18;;;;1455:32;;1037:456::o;1498:525::-;1584:6;1592;1600;1608;1661:3;1649:9;1640:7;1636:23;1632:33;1629:53;;;1678:1;1675;1668:12;1629:53;1717:9;1704:23;1736:31;1761:5;1736:31;:::i;:::-;1786:5;-1:-1:-1;1843:2:64;1828:18;;1815:32;1856:33;1815:32;1856:33;:::i;:::-;1498:525;;1908:7;;-1:-1:-1;;;;1962:2:64;1947:18;;1934:32;;2013:2;1998:18;1985:32;;1498:525::o;2028:180::-;2087:6;2140:2;2128:9;2119:7;2115:23;2111:32;2108:52;;;2156:1;2153;2146:12;2108:52;-1:-1:-1;2179:23:64;;2028:180;-1:-1:-1;2028:180:64:o;2213:980::-;2281:6;2334:2;2322:9;2313:7;2309:23;2305:32;2302:52;;;2350:1;2347;2340:12;2302:52;2390:9;2377:23;2419:18;2460:2;2452:6;2449:14;2446:34;;;2476:1;2473;2466:12;2446:34;2514:6;2503:9;2499:22;2489:32;;2559:7;2552:4;2548:2;2544:13;2540:27;2530:55;;2581:1;2578;2571:12;2530:55;2617:2;2604:16;2639:2;2635;2632:10;2629:36;;;2645:18;;:::i;:::-;2779:2;2773:9;2841:4;2833:13;;2684:66;2829:22;;;2853:2;2825:31;2821:40;2809:53;;;2877:18;;;2897:22;;;2874:46;2871:72;;;2923:18;;:::i;:::-;2963:10;2959:2;2952:22;2998:2;2990:6;2983:18;3038:7;3033:2;3028;3024;3020:11;3016:20;3013:33;3010:53;;;3059:1;3056;3049:12;3010:53;3115:2;3110;3106;3102:11;3097:2;3089:6;3085:15;3072:46;3160:1;3138:15;;;3155:2;3134:24;3127:35;;;;-1:-1:-1;3142:6:64;2213:980;-1:-1:-1;;;;;2213:980:64:o;3914:681::-;4085:2;4137:21;;;4207:13;;4110:18;;;4229:22;;;4056:4;;4085:2;4308:15;;;;4282:2;4267:18;;;4056:4;4351:218;4365:6;4362:1;4359:13;4351:218;;;4430:13;;4445:42;4426:62;4414:75;;4544:15;;;;4509:12;;;;4387:1;4380:9;4351:218;;;-1:-1:-1;4586:3:64;;3914:681;-1:-1:-1;;;;;;3914:681:64:o;4600:759::-;4775:2;4764:9;4757:21;4738:4;4807:6;4801:13;4850:6;4845:2;4834:9;4830:18;4823:34;4875:1;4885:144;4899:6;4896:1;4893:13;4885:144;;;5012:4;4996:14;;;4992:25;;4986:32;4981:2;4962:17;;;4958:26;4951:68;4914:12;4885:144;;;5047:6;5044:1;5041:13;5038:91;;;5117:1;5112:2;5103:6;5092:9;5088:22;5084:31;5077:42;5038:91;-1:-1:-1;5309:42:64;5297:55;;;;5290:4;5275:20;;5268:85;-1:-1:-1;5181:2:64;5169:15;;;;5186:66;5165:88;5150:104;5256:2;5146:113;;4600:759;-1:-1:-1;4600:759:64:o;5546:128::-;5586:3;5617:1;5613:6;5610:1;5607:13;5604:39;;;5623:18;;:::i;:::-;-1:-1:-1;5659:9:64;;5546:128::o;5679:195::-;5718:3;5749:66;5742:5;5739:77;5736:103;;;5819:18;;:::i;:::-;-1:-1:-1;5866:1:64;5855:13;;5679:195::o;5879:184::-;5931:77;5928:1;5921:88;6028:4;6025:1;6018:15;6052:4;6049:1;6042:15;6068:184;6120:77;6117:1;6110:88;6217:4;6214:1;6207:15;6241:4;6238:1;6231:15;6257:184;6309:77;6306:1;6299:88;6406:4;6403:1;6396:15;6430:4;6427:1;6420:15;6446:154;6532:42;6525:5;6521:54;6514:5;6511:65;6501:93;;6590:1;6587;6580:12;6501:93;6446:154;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "4228600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "configAddress(bytes32)": "2486",
                "deployPool(bytes)": "infinite",
                "getPools(address,address,uint256,uint256)": "infinite",
                "masterDeployer()": "infinite",
                "pools(address,address,uint256)": "infinite",
                "poolsCount(address,address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "configAddress(bytes32)": "f6ab6d99",
              "deployPool(bytes)": "27c3cae1",
              "getPools(address,address,uint256,uint256)": "71a25812",
              "masterDeployer()": "cf58879a",
              "pools(address,address,uint256)": "169c4cef",
              "poolsCount(address,address)": "5bc93d6c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_masterDeployer\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidTokenOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorisedDeployer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"configAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_deployData\",\"type\":\"bytes\"}],\"name\":\"deployPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pairPools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterDeployer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pools\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"}],\"name\":\"poolsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Mudit Gupta.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contract for deploying Trident exchange Constant Product Pool with configurations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/ConstantProductPoolFactory.sol\":\"ConstantProductPoolFactory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentCallee.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool callback interface.\\ninterface ITridentCallee {\\n    function tridentSwapCallback(bytes calldata data) external;\\n\\n    function tridentMintCallback(bytes calldata data) external;\\n}\\n\",\"keccak256\":\"0x256e838362a3064201b37b3b7c08bc1421b173a6fea633176123f0b827b868c9\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/TridentMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident sqrt helper library.\\nlibrary TridentMath {\\n    /// @notice Calculate sqrt (x) rounding down, where `x` is unsigned 256-bit integer number.\\n    /// @dev Adapted from https://github.com/abdk-consulting/abdk-libraries-solidity/blob/master/ABDKMath64x64.sol, \\n    /// \\u00a9 2019 ABDK Consulting, License-Identifier: BSD-4-Clause.\\n    /// @param x Unsigned 256-bit integer number.\\n    /// @return result Sqrt result.\\n    function sqrt(uint256 x) internal pure returns (uint256 result) {\\n        unchecked {\\n            if (x == 0) result = 0;\\n            else {\\n                uint256 xx = x;\\n                uint256 r = 1;\\n                if (xx >= 0x100000000000000000000000000000000) {\\n                    xx >>= 128;\\n                    r <<= 64;\\n                }\\n                if (xx >= 0x10000000000000000) {\\n                    xx >>= 64;\\n                    r <<= 32;\\n                }\\n                if (xx >= 0x100000000) {\\n                    xx >>= 32;\\n                    r <<= 16;\\n                }\\n                if (xx >= 0x10000) {\\n                    xx >>= 16;\\n                    r <<= 8;\\n                }\\n                if (xx >= 0x100) {\\n                    xx >>= 8;\\n                    r <<= 4;\\n                }\\n                if (xx >= 0x10) {\\n                    xx >>= 4;\\n                    r <<= 2;\\n                }\\n                if (xx >= 0x8) {\\n                    r <<= 1;\\n                }\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1; // @dev Seven iterations should be enough.\\n                uint256 r1 = x / r;\\n                result = r < r1 ? r : r1;\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xccbada517ace78149a4602ce782e6faf408404ee300569b8adf76e0eb7f0dd3b\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/ConstantProductPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../interfaces/IBentoBoxMinimal.sol\\\";\\nimport \\\"../interfaces/IMasterDeployer.sol\\\";\\nimport \\\"../interfaces/IPool.sol\\\";\\nimport \\\"../interfaces/ITridentCallee.sol\\\";\\nimport \\\"../libraries/TridentMath.sol\\\";\\nimport \\\"./TridentERC20.sol\\\";\\n\\n/// @notice Trident exchange pool template with constant product formula for swapping between an ERC-20 token pair.\\n/// @dev The reserves are stored as bento shares.\\n///      The curve is applied to shares as well. This pool does not care about the underlying amounts.\\ncontract ConstantProductPool is IPool, TridentERC20 {\\n    event Mint(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\\n    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\\n    event Sync(uint256 reserve0, uint256 reserve1);\\n\\n    uint256 internal constant MINIMUM_LIQUIDITY = 1000;\\n\\n    uint8 internal constant PRECISION = 112;\\n    uint256 internal constant MAX_FEE = 10000; // @dev 100%.\\n    uint256 internal constant MAX_FEE_SQUARE = 100000000;\\n    uint256 public immutable swapFee;\\n    uint256 internal immutable MAX_FEE_MINUS_SWAP_FEE;\\n\\n    address public immutable barFeeTo;\\n    IBentoBoxMinimal public immutable bento;\\n    IMasterDeployer public immutable masterDeployer;\\n    address public immutable token0;\\n    address public immutable token1;\\n\\n    uint256 public barFee;\\n    uint256 public price0CumulativeLast;\\n    uint256 public price1CumulativeLast;\\n    uint256 public kLast;\\n\\n    uint112 internal reserve0;\\n    uint112 internal reserve1;\\n    uint32 internal blockTimestampLast;\\n\\n    bytes32 public constant override poolIdentifier = \\\"Trident:ConstantProduct\\\";\\n\\n    uint256 internal unlocked;\\n    modifier lock() {\\n        require(unlocked == 1, \\\"LOCKED\\\");\\n        unlocked = 2;\\n        _;\\n        unlocked = 1;\\n    }\\n\\n    constructor(bytes memory _deployData, address _masterDeployer) {\\n        (address _token0, address _token1, uint256 _swapFee, bool _twapSupport) = abi.decode(\\n            _deployData,\\n            (address, address, uint256, bool)\\n        );\\n\\n        // @dev Factory ensures that the tokens are sorted.\\n        require(_token0 != address(0), \\\"ZERO_ADDRESS\\\");\\n        require(_token0 != _token1, \\\"IDENTICAL_ADDRESSES\\\");\\n        require(_token0 != address(this), \\\"INVALID_TOKEN\\\");\\n        require(_token1 != address(this), \\\"INVALID_TOKEN\\\");\\n        require(_swapFee <= MAX_FEE, \\\"INVALID_SWAP_FEE\\\");\\n\\n        token0 = _token0;\\n        token1 = _token1;\\n        swapFee = _swapFee;\\n        // @dev This is safe from underflow - `swapFee` cannot exceed `MAX_FEE` per previous check.\\n        unchecked {\\n            MAX_FEE_MINUS_SWAP_FEE = MAX_FEE - _swapFee;\\n        }\\n        barFee = IMasterDeployer(_masterDeployer).barFee();\\n        barFeeTo = IMasterDeployer(_masterDeployer).barFeeTo();\\n        bento = IBentoBoxMinimal(IMasterDeployer(_masterDeployer).bento());\\n        masterDeployer = IMasterDeployer(_masterDeployer);\\n        unlocked = 1;\\n        if (_twapSupport) blockTimestampLast = uint32(block.timestamp);\\n    }\\n\\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\\n    /// The router must ensure that sufficient LP tokens are minted by using the return value.\\n    function mint(bytes calldata data) public override lock returns (uint256 liquidity) {\\n        address recipient = abi.decode(data, (address));\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n\\n        uint256 computed = TridentMath.sqrt(balance0 * balance1);\\n        uint256 amount0 = balance0 - _reserve0;\\n        uint256 amount1 = balance1 - _reserve1;\\n\\n        (uint256 fee0, uint256 fee1) = _nonOptimalMintFee(amount0, amount1, _reserve0, _reserve1);\\n        _reserve0 += uint112(fee0);\\n        _reserve1 += uint112(fee1);\\n\\n        (uint256 _totalSupply, uint256 k) = _mintFee(_reserve0, _reserve1);\\n\\n        if (_totalSupply == 0) {\\n            require(amount0 > 0 && amount1 > 0, \\\"INVALID_AMOUNTS\\\");\\n            liquidity = computed - MINIMUM_LIQUIDITY;\\n            _mint(address(0), MINIMUM_LIQUIDITY);\\n        } else {\\n            uint256 kIncrease;\\n            unchecked {\\n                kIncrease = computed - k;\\n            }\\n            liquidity = (kIncrease * _totalSupply) / k;\\n        }\\n        require(liquidity != 0, \\\"INSUFFICIENT_LIQUIDITY_MINTED\\\");\\n        _mint(recipient, liquidity);\\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n        kLast = computed;\\n        uint256 liquidityForEvent = liquidity;\\n        emit Mint(msg.sender, amount0, amount1, recipient, liquidityForEvent);\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\\n    function burn(bytes calldata data) public override lock returns (IPool.TokenAmount[] memory withdrawnAmounts) {\\n        (address recipient, bool unwrapBento) = abi.decode(data, (address, bool));\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 liquidity = balanceOf[address(this)];\\n\\n        (uint256 _totalSupply, ) = _mintFee(_reserve0, _reserve1);\\n\\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\\n\\n        _burn(address(this), liquidity);\\n        _transfer(token0, amount0, recipient, unwrapBento);\\n        _transfer(token1, amount1, recipient, unwrapBento);\\n        // @dev This is safe from underflow - amounts are lesser figures derived from balances.\\n        unchecked {\\n            balance0 -= amount0;\\n            balance1 -= amount1;\\n        }\\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n        kLast = TridentMath.sqrt(balance0 * balance1);\\n\\n        withdrawnAmounts = new TokenAmount[](2);\\n        withdrawnAmounts[0] = TokenAmount({token: address(token0), amount: amount0});\\n        withdrawnAmounts[1] = TokenAmount({token: address(token1), amount: amount1});\\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\\n    /// - i.e., the user gets a single token out by burning LP tokens.\\n    function burnSingle(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenOut, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        uint256 liquidity = balanceOf[address(this)];\\n\\n        (uint256 _totalSupply, ) = _mintFee(_reserve0, _reserve1);\\n\\n        uint256 amount0 = (liquidity * _reserve0) / _totalSupply;\\n        uint256 amount1 = (liquidity * _reserve1) / _totalSupply;\\n\\n        kLast = TridentMath.sqrt((_reserve0 - amount0) * (_reserve1 - amount1));\\n\\n        _burn(address(this), liquidity);\\n\\n        // Swap one token for another\\n        unchecked {\\n            if (tokenOut == token1) {\\n                // @dev Swap `token0` for `token1`\\n                // - calculate `amountOut` as if the user first withdrew balanced liquidity and then swapped `token0` for `token1`.\\n                amount1 += _getAmountOut(amount0, _reserve0 - amount0, _reserve1 - amount1);\\n                _transfer(token1, amount1, recipient, unwrapBento);\\n                amountOut = amount1;\\n                amount0 = 0;\\n            } else {\\n                // @dev Swap `token1` for `token0`.\\n                require(tokenOut == token0, \\\"INVALID_OUTPUT_TOKEN\\\");\\n                amount0 += _getAmountOut(amount1, _reserve1 - amount1, _reserve0 - amount0);\\n                _transfer(token0, amount0, recipient, unwrapBento);\\n                amountOut = amount0;\\n                amount1 = 0;\\n            }\\n        }\\n\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n\\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\\n    function swap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        require(_reserve0 > 0, \\\"POOL_UNINITIALIZED\\\");\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 amountIn;\\n        address tokenOut;\\n        unchecked {\\n            if (tokenIn == token0) {\\n                tokenOut = token1;\\n                amountIn = balance0 - _reserve0;\\n                amountOut = _getAmountOut(amountIn, _reserve0, _reserve1);\\n                balance1 -= amountOut;\\n            } else {\\n                require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n                tokenOut = token0;\\n                amountIn = balance1 - reserve1;\\n                amountOut = _getAmountOut(amountIn, _reserve1, _reserve0);\\n                balance0 -= amountOut;\\n            }\\n        }\\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage.\\n    function flashSwap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address recipient, bool unwrapBento, uint256 amountIn, bytes memory context) = abi.decode(\\n            data,\\n            (address, address, bool, uint256, bytes)\\n        );\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        require(_reserve0 > 0, \\\"POOL_UNINITIALIZED\\\");\\n        unchecked {\\n            if (tokenIn == token0) {\\n                amountOut = _getAmountOut(amountIn, _reserve0, _reserve1);\\n                _transfer(token1, amountOut, recipient, unwrapBento);\\n                ITridentCallee(msg.sender).tridentSwapCallback(context);\\n                (uint256 balance0, uint256 balance1) = _balance();\\n                require(balance0 - _reserve0 >= amountIn, \\\"INSUFFICIENT_AMOUNT_IN\\\");\\n                _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n                emit Swap(recipient, tokenIn, token1, amountIn, amountOut);\\n            } else {\\n                require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n                amountOut = _getAmountOut(amountIn, _reserve1, _reserve0);\\n                _transfer(token0, amountOut, recipient, unwrapBento);\\n                ITridentCallee(msg.sender).tridentSwapCallback(context);\\n                (uint256 balance0, uint256 balance1) = _balance();\\n                require(balance1 - _reserve1 >= amountIn, \\\"INSUFFICIENT_AMOUNT_IN\\\");\\n                _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n                emit Swap(recipient, tokenIn, token0, amountIn, amountOut);\\n            }\\n        }\\n    }\\n\\n    /// @dev Updates `barFee` for Trident protocol.\\n    function updateBarFee() public {\\n        barFee = IMasterDeployer(masterDeployer).barFee();\\n    }\\n\\n    function _getReserves()\\n        internal\\n        view\\n        returns (\\n            uint112 _reserve0,\\n            uint112 _reserve1,\\n            uint32 _blockTimestampLast\\n        )\\n    {\\n        _reserve0 = reserve0;\\n        _reserve1 = reserve1;\\n        _blockTimestampLast = blockTimestampLast;\\n    }\\n\\n    function _balance() internal view returns (uint256 balance0, uint256 balance1) {\\n        balance0 = bento.balanceOf(token0, address(this));\\n        balance1 = bento.balanceOf(token1, address(this));\\n    }\\n\\n    function _update(\\n        uint256 balance0,\\n        uint256 balance1,\\n        uint112 _reserve0,\\n        uint112 _reserve1,\\n        uint32 _blockTimestampLast\\n    ) internal {\\n        require(balance0 <= type(uint112).max && balance1 <= type(uint112).max, \\\"OVERFLOW\\\");\\n        if (_blockTimestampLast == 0) {\\n            // @dev TWAP support is disabled for gas efficiency.\\n            reserve0 = uint112(balance0);\\n            reserve1 = uint112(balance1);\\n        } else {\\n            uint32 blockTimestamp = uint32(block.timestamp);\\n            if (blockTimestamp != _blockTimestampLast && _reserve0 != 0 && _reserve1 != 0) {\\n                unchecked {\\n                    uint32 timeElapsed = blockTimestamp - _blockTimestampLast;\\n                    uint256 price0 = (uint256(_reserve1) << PRECISION) / _reserve0;\\n                    price0CumulativeLast += price0 * timeElapsed;\\n                    uint256 price1 = (uint256(_reserve0) << PRECISION) / _reserve1;\\n                    price1CumulativeLast += price1 * timeElapsed;\\n                }\\n            }\\n            reserve0 = uint112(balance0);\\n            reserve1 = uint112(balance1);\\n            blockTimestampLast = blockTimestamp;\\n        }\\n        emit Sync(balance0, balance1);\\n    }\\n\\n    function _mintFee(uint112 _reserve0, uint112 _reserve1) internal returns (uint256 _totalSupply, uint256 computed) {\\n        _totalSupply = totalSupply;\\n        uint256 _kLast = kLast;\\n        if (_kLast != 0) {\\n            computed = TridentMath.sqrt(uint256(_reserve0) * _reserve1);\\n            if (computed > _kLast) {\\n                // @dev `barFee` % of increase in liquidity.\\n                uint256 _barFee = barFee;\\n                uint256 numerator = _totalSupply * (computed - _kLast) * _barFee;\\n                uint256 denominator = (MAX_FEE - _barFee) * computed + _barFee * _kLast;\\n                uint256 liquidity = numerator / denominator;\\n\\n                if (liquidity != 0) {\\n                    _mint(barFeeTo, liquidity);\\n                    _totalSupply += liquidity;\\n                }\\n            }\\n        }\\n    }\\n\\n    function _getAmountOut(\\n        uint256 amountIn,\\n        uint256 reserveAmountIn,\\n        uint256 reserveAmountOut\\n    ) internal view returns (uint256 amountOut) {\\n        uint256 amountInWithFee = amountIn * MAX_FEE_MINUS_SWAP_FEE;\\n        amountOut = (amountInWithFee * reserveAmountOut) / (reserveAmountIn * MAX_FEE + amountInWithFee);\\n    }\\n\\n    function _getAmountIn(\\n        uint256 amountOut,\\n        uint256 reserveAmountIn,\\n        uint256 reserveAmountOut\\n    ) internal view returns (uint256 amountIn) {\\n        amountIn = (reserveAmountIn * amountOut * MAX_FEE) / ((reserveAmountOut - amountOut) * MAX_FEE_MINUS_SWAP_FEE) + 1;\\n    }\\n\\n    function _transfer(\\n        address token,\\n        uint256 shares,\\n        address to,\\n        bool unwrapBento\\n    ) internal {\\n        if (unwrapBento) {\\n            bento.withdraw(token, address(this), to, 0, shares);\\n        } else {\\n            bento.transfer(token, address(this), to, shares);\\n        }\\n    }\\n\\n    /// @dev This fee is charged to cover for `swapFee` when users add unbalanced liquidity.\\n    function _nonOptimalMintFee(\\n        uint256 _amount0,\\n        uint256 _amount1,\\n        uint256 _reserve0,\\n        uint256 _reserve1\\n    ) internal view returns (uint256 token0Fee, uint256 token1Fee) {\\n        if (_reserve0 == 0 || _reserve1 == 0) return (0, 0);\\n        uint256 amount1Optimal = (_amount0 * _reserve1) / _reserve0;\\n        if (amount1Optimal <= _amount1) {\\n            token1Fee = (swapFee * (_amount1 - amount1Optimal)) / (2 * MAX_FEE);\\n        } else {\\n            uint256 amount0Optimal = (_amount1 * _reserve0) / _reserve1;\\n            token0Fee = (swapFee * (_amount0 - amount0Optimal)) / (2 * MAX_FEE);\\n        }\\n    }\\n\\n    function getAssets() public view override returns (address[] memory assets) {\\n        assets = new address[](2);\\n        assets[0] = token0;\\n        assets[1] = token1;\\n    }\\n\\n    function getAmountOut(bytes calldata data) public view override returns (uint256 finalAmountOut) {\\n        (address tokenIn, uint256 amountIn) = abi.decode(data, (address, uint256));\\n        (uint112 _reserve0, uint112 _reserve1, ) = _getReserves();\\n        if (tokenIn == token0) {\\n            finalAmountOut = _getAmountOut(amountIn, _reserve0, _reserve1);\\n        } else {\\n            require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n            finalAmountOut = _getAmountOut(amountIn, _reserve1, _reserve0);\\n        }\\n    }\\n\\n    function getAmountIn(bytes calldata data) public view override returns (uint256 finalAmountIn) {\\n        (address tokenOut, uint256 amountOut) = abi.decode(data, (address, uint256));\\n        (uint112 _reserve0, uint112 _reserve1, ) = _getReserves();\\n        if (tokenOut == token1) {\\n            finalAmountIn = _getAmountIn(amountOut, _reserve0, _reserve1);\\n        } else {\\n            require(tokenOut == token0, \\\"INVALID_OUTPUT_TOKEN\\\");\\n            finalAmountIn = _getAmountIn(amountOut, _reserve1, _reserve0);\\n        }\\n    }\\n\\n    /// @dev returned values are in terms of BentoBox \\\"shares\\\".\\n    function getReserves()\\n        public\\n        view\\n        returns (\\n            uint112 _reserve0,\\n            uint112 _reserve1,\\n            uint32 _blockTimestampLast\\n        )\\n    {\\n        return _getReserves();\\n    }\\n\\n    /// @dev returned values are the native ERC20 token amounts.\\n    function getNativeReserves()\\n        public\\n        view\\n        returns (\\n            uint256 _nativeReserve0,\\n            uint256 _nativeReserve1,\\n            uint32 _blockTimestampLast\\n        )\\n    {\\n        (uint112 _reserve0, uint112 _reserve1, uint32 __blockTimestampLast) = _getReserves();\\n        _nativeReserve0 = bento.toAmount(token0, _reserve0, false);\\n        _nativeReserve1 = bento.toAmount(token1, _reserve1, false);\\n        _blockTimestampLast = __blockTimestampLast;\\n    }\\n}\\n\",\"keccak256\":\"0x0de09b6ee01817a5ad1c8cbfbd19b4afcd45f6e50486ed2034c9159aaff2645a\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/ConstantProductPoolFactory.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./ConstantProductPool.sol\\\";\\nimport \\\"./PoolDeployer.sol\\\";\\n\\n/// @notice Contract for deploying Trident exchange Constant Product Pool with configurations.\\n/// @author Mudit Gupta.\\ncontract ConstantProductPoolFactory is PoolDeployer {\\n    constructor(address _masterDeployer) PoolDeployer(_masterDeployer) {}\\n\\n    function deployPool(bytes memory _deployData) external returns (address pool) {\\n        (address tokenA, address tokenB, uint256 swapFee, bool twapSupport) = abi.decode(_deployData, (address, address, uint256, bool));\\n\\n        if (tokenA > tokenB) {\\n            (tokenA, tokenB) = (tokenB, tokenA);\\n        }\\n\\n        // @dev Strips any extra data.\\n        _deployData = abi.encode(tokenA, tokenB, swapFee, twapSupport);\\n\\n        address[] memory tokens = new address[](2);\\n        tokens[0] = tokenA;\\n        tokens[1] = tokenB;\\n\\n        // @dev Salt is not actually needed since `_deployData` is part of creationCode and already contains the salt.\\n        bytes32 salt = keccak256(_deployData);\\n        pool = address(new ConstantProductPool{salt: salt}(_deployData, masterDeployer));\\n        _registerPool(pool, tokens, salt);\\n    }\\n}\\n\",\"keccak256\":\"0x3deab7704b9619a914ae8b6c4b933392e1049a761457a06f61af3e2bbe3f97d1\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/PoolDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer for whitelisted template factories.\\n/// @author Mudit Gupta.\\nabstract contract PoolDeployer {\\n    address public immutable masterDeployer;\\n\\n    mapping(address => mapping(address => address[])) public pools;\\n    mapping(bytes32 => address) public configAddress;\\n\\n    error UnauthorisedDeployer();\\n    error ZeroAddress();\\n    error InvalidTokenOrder();\\n\\n    modifier onlyMaster() {\\n        if (msg.sender != masterDeployer) revert UnauthorisedDeployer();\\n        _;\\n    }\\n\\n    constructor(address _masterDeployer) {\\n        if (_masterDeployer == address(0)) revert ZeroAddress();\\n        masterDeployer = _masterDeployer;\\n    }\\n\\n    function _registerPool(\\n        address pool,\\n        address[] memory tokens,\\n        bytes32 salt\\n    ) internal onlyMaster {\\n        // @dev Store the address of the deployed contract.\\n        configAddress[salt] = pool;\\n        // @dev Attacker used underflow, it was not very effective. poolimon!\\n        // null token array would cause deployment to fail via out of bounds memory axis/gas limit.\\n        unchecked {\\n            for (uint256 i; i < tokens.length - 1; i++) {\\n                if (tokens[i] >= tokens[i + 1]) revert InvalidTokenOrder();\\n                for (uint256 j = i + 1; j < tokens.length; j++) {\\n                    pools[tokens[i]][tokens[j]].push(pool);\\n                    pools[tokens[j]][tokens[i]].push(pool);\\n                }\\n            }\\n        }\\n    }\\n\\n    function poolsCount(address token0, address token1) external view returns (uint256 count) {\\n        count = pools[token0][token1].length;\\n    }\\n\\n    function getPools(\\n        address token0,\\n        address token1,\\n        uint256 startIndex,\\n        uint256 count\\n    ) external view returns (address[] memory pairPools) {\\n        pairPools = new address[](count);\\n        for (uint256 i = 0; i < count; i++) {\\n            pairPools[i] = pools[token0][token1][startIndex + i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x34c44a489ccaf9a7b2bc05527113552a2ebc5a8b4b9d47035e465c39cf569b81\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/TridentERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool ERC-20 with EIP-2612 extension.\\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol,\\n/// License-Identifier: AGPL-3.0-only.\\nabstract contract TridentERC20 {\\n    event Transfer(address indexed sender, address indexed recipient, uint256 amount);\\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\\n\\n    string public constant name = \\\"Sushi LP Token\\\";\\n    string public constant symbol = \\\"SLP\\\";\\n    uint8 public constant decimals = 18;\\n\\n    uint256 public totalSupply;\\n    /// @notice owner -> balance mapping.\\n    mapping(address => uint256) public balanceOf;\\n    /// @notice owner -> spender -> allowance mapping.\\n    mapping(address => mapping(address => uint256)) public allowance;\\n\\n    /// @notice Chain Id at this contract's deployment.\\n    uint256 internal immutable DOMAIN_SEPARATOR_CHAIN_ID;\\n    /// @notice EIP-712 typehash for this contract's domain at deployment.\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n    /// @notice EIP-712 typehash for this contract's {permit} struct.\\n    bytes32 public constant PERMIT_TYPEHASH =\\n        keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n    /// @notice owner -> nonce mapping used in {permit}.\\n    mapping(address => uint256) public nonces;\\n\\n    constructor() {\\n        DOMAIN_SEPARATOR_CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _calculateDomainSeparator();\\n    }\\n\\n    function _calculateDomainSeparator() internal view returns (bytes32 domainSeperator) {\\n        domainSeperator = keccak256(\\n            abi.encode(\\n                keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"),\\n                keccak256(bytes(name)),\\n                keccak256(bytes(\\\"1\\\")),\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    /// @notice EIP-712 typehash for this contract's domain.\\n    function DOMAIN_SEPARATOR() public view returns (bytes32 domainSeperator) {\\n        domainSeperator = block.chainid == DOMAIN_SEPARATOR_CHAIN_ID ? _DOMAIN_SEPARATOR : _calculateDomainSeparator();\\n    }\\n\\n    /// @notice Approves `amount` from `msg.sender` to be spent by `spender`.\\n    /// @param spender Address of the party that can pull tokens from `msg.sender`'s account.\\n    /// @param amount The maximum collective `amount` that `spender` can pull.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function approve(address spender, uint256 amount) external returns (bool) {\\n        allowance[msg.sender][spender] = amount;\\n        emit Approval(msg.sender, spender, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `msg.sender` to `recipient`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transfer(address recipient, uint256 amount) external returns (bool) {\\n        balanceOf[msg.sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(msg.sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\\n    /// @param sender Address to pull tokens `from`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool) {\\n        if (allowance[sender][msg.sender] != type(uint256).max) {\\n            allowance[sender][msg.sender] -= amount;\\n        }\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Triggers an approval from `owner` to `spender`.\\n    /// @param owner The address to approve from.\\n    /// @param spender The address to be approved.\\n    /// @param amount The number of tokens that are approved (2^256-1 means infinite).\\n    /// @param deadline The time at which to expire the signature.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        require(deadline >= block.timestamp, \\\"PERMIT_DEADLINE_EXPIRED\\\");\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                \\\"\\\\x19\\\\x01\\\",\\n                DOMAIN_SEPARATOR(),\\n                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))\\n            )\\n        );\\n        address recoveredAddress = ecrecover(digest, v, r, s);\\n        require(recoveredAddress != address(0) && recoveredAddress == owner, \\\"INVALID_PERMIT_SIGNATURE\\\");\\n        allowance[recoveredAddress][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    function _mint(address recipient, uint256 amount) internal {\\n        totalSupply += amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(address(0), recipient, amount);\\n    }\\n\\n    function _burn(address sender, uint256 amount) internal {\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from underflow - users won't ever\\n        // have a balance larger than `totalSupply`.\\n        unchecked {\\n            totalSupply -= amount;\\n        }\\n        emit Transfer(sender, address(0), amount);\\n    }\\n}\\n\",\"keccak256\":\"0xb249a6d507f6911b7de4f9655a9736710fac9847982ad9afa18650db9a84794d\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 11688,
                "contract": "contracts/pool/ConstantProductPoolFactory.sol:ConstantProductPoolFactory",
                "label": "pools",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_address,t_mapping(t_address,t_array(t_address)dyn_storage))"
              },
              {
                "astId": 11692,
                "contract": "contracts/pool/ConstantProductPoolFactory.sol:ConstantProductPoolFactory",
                "label": "configAddress",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_bytes32,t_address)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_address)dyn_storage": {
                "base": "t_address",
                "encoding": "dynamic_array",
                "label": "address[]",
                "numberOfBytes": "32"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_array(t_address)dyn_storage)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => address[])",
                "numberOfBytes": "32",
                "value": "t_array(t_address)dyn_storage"
              },
              "t_mapping(t_address,t_mapping(t_address,t_array(t_address)dyn_storage))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => address[]))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_array(t_address)dyn_storage)"
              },
              "t_mapping(t_bytes32,t_address)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Contract for deploying Trident exchange Constant Product Pool with configurations.",
            "version": 1
          }
        }
      },
      "contracts/pool/HybridPool.sol": {
        "HybridPool": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount0",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount1",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount0",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount1",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "name": "Mint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenIn",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOut",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "name": "Swap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "reserve0",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "reserve1",
                  "type": "uint256"
                }
              ],
              "name": "Sync",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "A",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "domainSeperator",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFeeTo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPool.TokenAmount[]",
                  "name": "withdrawnAmounts",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burnSingle",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "flashSwap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "getAmountIn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "getAmountOut",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "finalAmountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAssets",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getReserves",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_reserve0",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_reserve1",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getVirtualPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "virtualPrice",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolIdentifier",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "swap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "swapFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token0",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token0PrecisionMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token1",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token1PrecisionMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "updateBarFee",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "The reserves are stored as bento shares. However, the stableswap invariant is applied to the underlying amounts.      The API uses the underlying amounts.",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "params": {
                  "amount": "The maximum collective `amount` that `spender` can pull.",
                  "spender": "Address of the party that can pull tokens from `msg.sender`'s account."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "burn(bytes)": {
                "details": "Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens."
              },
              "burnSingle(bytes)": {
                "details": "Burns LP tokens sent to this contract and swaps one of the output tokens for another - i.e., the user gets a single token out by burning LP tokens."
              },
              "flashSwap(bytes)": {
                "details": "Swaps one token for another with payload. The router must support swap callbacks and ensure there isn't too much slippage."
              },
              "getAmountOut(bytes)": {
                "details": "The pool does not need to include a trade simulator directly in itself - it can use a library.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "finalAmountOut": "The amount of output tokens that will be sent to the user if the trade is executed."
                }
              },
              "getAssets()": {
                "returns": {
                  "assets": "An array of tokens supported by the pool."
                }
              },
              "mint(bytes)": {
                "details": "Mints LP tokens - should be called via the router after transferring `bento` tokens. The router must ensure that sufficient LP tokens are minted by using the return value."
              },
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "amount": "The number of tokens that are approved (2^256-1 means infinite).",
                  "deadline": "The time at which to expire the signature.",
                  "owner": "The address to approve from.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "spender": "The address to be approved.",
                  "v": "The recovery byte of the signature."
                }
              },
              "swap(bytes)": {
                "details": "Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage."
              },
              "transfer(address,uint256)": {
                "params": {
                  "amount": "The token `amount` to move.",
                  "recipient": "The address to move tokens to."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "transferFrom(address,address,uint256)": {
                "params": {
                  "amount": "The token `amount` to move.",
                  "recipient": "The address to move tokens to.",
                  "sender": "Address to pull tokens `from`."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "updateBarFee()": {
                "details": "Updates `barFee` for Trident protocol."
              }
            },
            "stateVariables": {
              "MAX_LOOP_LIMIT": {
                "details": "Constant value used as max loop limit."
              },
              "poolIdentifier": {
                "return": "A unique identifier for the pool type.",
                "returns": {
                  "_0": "A unique identifier for the pool type."
                }
              },
              "token0PrecisionMultiplier": {
                "details": "Multipliers for each pooled token's precision to get to POOL_PRECISION_DECIMALS. For example, TBTC has 18 decimals, so the multiplier should be 1. WBTC has 8, so the multiplier should be 10 ** 18 / 10 ** 8 => 10 ** 10."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_11960": {
                  "entryPoint": null,
                  "id": 11960,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_8069": {
                  "entryPoint": null,
                  "id": 8069,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_calculateDomainSeparator_11995": {
                  "entryPoint": null,
                  "id": 11995,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_address_fromMemory": {
                  "entryPoint": 1418,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 1436,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_uint256t_uint256_fromMemory": {
                  "entryPoint": 1475,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory": {
                  "entryPoint": 1552,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 1793,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint8_fromMemory": {
                  "entryPoint": 1819,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_784abf5ee5ac26c0ab454d7180fc6674dd424c889acd4d27298540d9febc99d6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_exp_helper": {
                  "entryPoint": 1856,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "checked_exp_t_uint256_t_uint8": {
                  "entryPoint": 1929,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_exp_unsigned": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 2122,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint8": {
                  "entryPoint": 2156,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 2194,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 2216,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 2238,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:6602:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "74:78:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "84:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "99:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "93:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "93:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "84:5:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "140:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "115:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "115:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "115:31:64"
                            }
                          ]
                        },
                        "name": "abi_decode_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "53:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "64:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:138:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "238:170:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "284:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "293:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "296:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "286:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "286:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "286:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "259:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "268:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "255:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "255:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "280:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "251:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "251:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "248:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "309:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "328:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "322:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "322:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "313:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "372:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "347:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "347:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "347:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "387:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "397:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "387:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "204:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "215:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "227:6:64",
                            "type": ""
                          }
                        ],
                        "src": "157:251:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "561:376:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "608:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "617:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "620:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "610:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "610:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "610:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "582:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "591:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "578:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "578:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "603:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "574:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "574:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "571:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "633:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "652:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "646:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "646:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "637:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "696:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "671:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "671:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "671:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "711:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "721:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "711:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "735:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "760:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "771:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "756:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "756:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "750:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "750:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "739:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "809:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "784:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "784:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "784:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "826:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "836:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "826:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "852:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "872:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "883:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "868:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "868:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "862:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "862:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "852:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "896:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "916:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "927:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "912:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "912:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "906:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "906:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "896:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_uint256t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "503:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "514:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "526:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "534:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "542:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "550:6:64",
                            "type": ""
                          }
                        ],
                        "src": "413:524:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1049:1066:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1095:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1104:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1107:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1097:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1097:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1097:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1070:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1079:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1066:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1066:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1091:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1062:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1062:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1059:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1120:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1140:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1134:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1134:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1124:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1159:28:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1177:2:64",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1181:1:64",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1173:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1173:10:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1185:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1169:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1169:18:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1163:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1214:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1223:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1226:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1216:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1216:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1216:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1202:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1210:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1199:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1199:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1196:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1239:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1253:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1264:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1249:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1249:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1243:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1319:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1328:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1331:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1321:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1321:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1321:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1298:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1302:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1294:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1294:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1309:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1290:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1290:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1283:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1283:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1280:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1344:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1360:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1354:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1354:9:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1348:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1386:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1388:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1388:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1388:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1378:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1382:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1375:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1375:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1372:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1417:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1431:2:64",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "1427:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1427:7:64"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "1421:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1443:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1463:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1457:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1457:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1447:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1475:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1497:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1521:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1525:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1517:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1517:13:64"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "1532:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "1513:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1513:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1537:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1509:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1509:31:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "1542:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1505:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1505:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1493:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1493:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1479:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1605:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1607:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1607:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1607:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1564:10:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1576:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1561:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1561:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1584:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1596:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1581:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1581:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1558:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1558:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1555:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1643:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1647:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1636:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1636:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1636:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1674:6:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1682:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1667:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1667:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1667:18:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1694:14:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1704:4:64",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "1698:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1754:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1763:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1766:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1756:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1756:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1756:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1731:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1735:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1727:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1727:11:64"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "1740:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1723:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1723:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1745:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1720:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1720:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1717:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1779:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1788:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1783:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1844:83:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "memPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1873:6:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1881:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1869:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1869:14:64"
                                            },
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "1885:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1865:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1865:23:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_2",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1904:2:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "1908:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1900:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "1900:10:64"
                                                },
                                                {
                                                  "name": "_5",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1912:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1896:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1896:19:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1890:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1890:26:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1858:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1858:59:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1858:59:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1809:1:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1812:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1806:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1806:9:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1816:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1818:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1827:1:64"
                                        },
                                        {
                                          "name": "_5",
                                          "nodeType": "YulIdentifier",
                                          "src": "1830:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1823:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1823:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1818:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1802:3:64",
                                "statements": []
                              },
                              "src": "1798:129:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1957:59:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "memPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1986:6:64"
                                                },
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1994:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "1982:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "1982:15:64"
                                            },
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "1999:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1978:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1978:24:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2004:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1971:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1971:35:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1971:35:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1942:1:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1945:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1939:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1939:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1936:80:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2025:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "2035:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2025:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2050:59:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2094:9:64"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "2105:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2090:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2090:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2060:29:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2060:49:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2050:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1007:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1018:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1030:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1038:6:64",
                            "type": ""
                          }
                        ],
                        "src": "942:1173:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2201:103:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2247:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2256:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2259:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2249:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2249:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2249:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2222:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2231:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2218:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2218:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2243:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2214:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2214:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2211:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2272:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2288:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2282:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2282:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2272:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2167:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2178:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2190:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2120:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2388:194:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2434:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2443:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2446:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2436:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2436:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2436:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2409:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2418:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2405:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2405:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2430:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2401:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2401:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2398:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2459:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2478:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2472:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2472:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2463:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2536:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2545:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2548:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2538:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2538:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2538:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2510:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2521:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2528:4:64",
                                            "type": "",
                                            "value": "0xff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2517:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2517:16:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2507:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2507:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2500:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2500:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2497:55:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2561:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2571:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2561:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint8_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2354:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2365:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2377:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2309:273:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2800:276:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2810:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2822:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2833:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2818:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2818:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2810:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2853:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2864:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2846:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2846:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2846:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2891:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2902:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2887:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2887:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2907:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2880:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2880:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2880:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2934:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2945:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2930:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2930:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2950:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2923:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2923:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2923:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2977:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2988:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2973:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2973:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2993:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2966:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2966:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2966:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3020:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3031:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3016:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3016:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "3041:6:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3057:3:64",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3062:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "3053:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3053:11:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3066:1:64",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "3049:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3049:19:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3037:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3037:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3009:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3009:61:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3009:61:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2737:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2748:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2756:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2764:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2772:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2780:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2791:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2587:489:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3255:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3272:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3283:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3265:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3265:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3265:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3306:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3317:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3302:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3302:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3322:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3295:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3295:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3295:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3345:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3356:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3341:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3341:18:64"
                                  },
                                  {
                                    "hexValue": "5a45524f5f41444452455353",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3361:14:64",
                                    "type": "",
                                    "value": "ZERO_ADDRESS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3334:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3334:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3334:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3385:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3397:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3408:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3393:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3393:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3385:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3232:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3246:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3081:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3596:155:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3613:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3624:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3606:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3606:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3606:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3647:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3658:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3643:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3643:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3663:1:64",
                                    "type": "",
                                    "value": "6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3636:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3636:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3636:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3685:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3696:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3681:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3681:18:64"
                                  },
                                  {
                                    "hexValue": "5a45524f5f41",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3701:8:64",
                                    "type": "",
                                    "value": "ZERO_A"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3674:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3674:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3674:36:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3719:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3731:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3742:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3727:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3727:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3719:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_784abf5ee5ac26c0ab454d7180fc6674dd424c889acd4d27298540d9febc99d6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3573:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3587:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3422:329:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3930:169:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3947:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3958:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3940:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3940:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3940:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3981:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3992:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3977:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3977:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3997:2:64",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3970:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3970:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3970:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4020:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4031:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4016:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4016:18:64"
                                  },
                                  {
                                    "hexValue": "4944454e544943414c5f414444524553534553",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4036:21:64",
                                    "type": "",
                                    "value": "IDENTICAL_ADDRESSES"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4009:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4009:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4009:49:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4067:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4079:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4090:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4075:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4075:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4067:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3907:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3921:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3756:343:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4278:166:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4295:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4306:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4288:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4288:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4288:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4329:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4340:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4325:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4325:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4345:2:64",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4318:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4318:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4318:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4368:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4379:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4364:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4364:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f535741505f464545",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4384:18:64",
                                    "type": "",
                                    "value": "INVALID_SWAP_FEE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4357:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4357:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4357:46:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4412:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4424:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4435:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4420:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4420:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4412:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4255:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4269:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4104:340:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4513:358:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4523:16:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4538:1:64",
                                "type": "",
                                "value": "1"
                              },
                              "variables": [
                                {
                                  "name": "power_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4527:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4548:16:64",
                              "value": {
                                "name": "power_1",
                                "nodeType": "YulIdentifier",
                                "src": "4557:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "4548:5:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4573:13:64",
                              "value": {
                                "name": "_base",
                                "nodeType": "YulIdentifier",
                                "src": "4581:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "base",
                                  "nodeType": "YulIdentifier",
                                  "src": "4573:4:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4637:228:64",
                                "statements": [
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "4682:22:64",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "panic_error_0x11",
                                              "nodeType": "YulIdentifier",
                                              "src": "4684:16:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4684:18:64"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "4684:18:64"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "4657:4:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "4671:1:64",
                                                  "type": "",
                                                  "value": "0"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "not",
                                                "nodeType": "YulIdentifier",
                                                "src": "4667:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4667:6:64"
                                            },
                                            {
                                              "name": "base",
                                              "nodeType": "YulIdentifier",
                                              "src": "4675:4:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "4663:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4663:17:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "4654:2:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4654:27:64"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "4651:53:64"
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "4743:29:64",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "4745:25:64",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "power",
                                                "nodeType": "YulIdentifier",
                                                "src": "4758:5:64"
                                              },
                                              {
                                                "name": "base",
                                                "nodeType": "YulIdentifier",
                                                "src": "4765:4:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "4754:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4754:16:64"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "power",
                                              "nodeType": "YulIdentifier",
                                              "src": "4745:5:64"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "4724:8:64"
                                        },
                                        {
                                          "name": "power_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4734:7:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "4720:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4720:22:64"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "4717:55:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4785:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "4797:4:64"
                                        },
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "4803:4:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nodeType": "YulIdentifier",
                                        "src": "4793:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4793:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "base",
                                        "nodeType": "YulIdentifier",
                                        "src": "4785:4:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4821:34:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "power_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4837:7:64"
                                        },
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "4846:8:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4833:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4833:22:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "exponent",
                                        "nodeType": "YulIdentifier",
                                        "src": "4821:8:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "4606:8:64"
                                  },
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4616:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4603:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4603:21:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4625:3:64",
                                "statements": []
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4599:3:64",
                                "statements": []
                              },
                              "src": "4595:270:64"
                            }
                          ]
                        },
                        "name": "checked_exp_helper",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "_base",
                            "nodeType": "YulTypedName",
                            "src": "4477:5:64",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "4484:8:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "4497:5:64",
                            "type": ""
                          },
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "4504:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4449:422:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4944:72:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4954:56:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "4984:4:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "exponent",
                                        "nodeType": "YulIdentifier",
                                        "src": "4994:8:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5004:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4990:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4990:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "checked_exp_unsigned",
                                  "nodeType": "YulIdentifier",
                                  "src": "4963:20:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4963:47:64"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "4954:5:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_exp_t_uint256_t_uint8",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "4915:4:64",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "4921:8:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "4934:5:64",
                            "type": ""
                          }
                        ],
                        "src": "4876:140:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5080:747:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5118:52:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5132:10:64",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "5141:1:64",
                                      "type": "",
                                      "value": "1"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "5132:5:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "5155:5:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "5100:8:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5093:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5093:16:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5090:80:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5203:52:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5217:10:64",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "5226:1:64",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "5217:5:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "5240:5:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "5189:4:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5182:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5182:12:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5179:76:64"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "5291:52:64",
                                    "statements": [
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "5305:10:64",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5314:1:64",
                                          "type": "",
                                          "value": "1"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "5305:5:64"
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulLeave",
                                        "src": "5328:5:64"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "5284:59:64",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5289:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "5359:123:64",
                                    "statements": [
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "5394:22:64",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "panic_error_0x11",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5396:16:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5396:18:64"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "5396:18:64"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "exponent",
                                              "nodeType": "YulIdentifier",
                                              "src": "5379:8:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5389:3:64",
                                              "type": "",
                                              "value": "255"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "5376:2:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5376:17:64"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "5373:43:64"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "5429:25:64",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "exponent",
                                              "nodeType": "YulIdentifier",
                                              "src": "5442:8:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5452:1:64",
                                              "type": "",
                                              "value": "1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "5438:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5438:16:64"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "5429:5:64"
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulLeave",
                                        "src": "5467:5:64"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "5352:130:64",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5357:1:64",
                                    "type": "",
                                    "value": "2"
                                  }
                                }
                              ],
                              "expression": {
                                "name": "base",
                                "nodeType": "YulIdentifier",
                                "src": "5271:4:64"
                              },
                              "nodeType": "YulSwitch",
                              "src": "5264:218:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5580:70:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5594:28:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "5607:4:64"
                                        },
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "5613:8:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "exp",
                                        "nodeType": "YulIdentifier",
                                        "src": "5603:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5603:19:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "5594:5:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "5635:5:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "base",
                                            "nodeType": "YulIdentifier",
                                            "src": "5504:4:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5510:2:64",
                                            "type": "",
                                            "value": "11"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "5501:2:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5501:12:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "exponent",
                                            "nodeType": "YulIdentifier",
                                            "src": "5518:8:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5528:2:64",
                                            "type": "",
                                            "value": "78"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "5515:2:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5515:16:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5497:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5497:35:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "base",
                                            "nodeType": "YulIdentifier",
                                            "src": "5541:4:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5547:3:64",
                                            "type": "",
                                            "value": "307"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "5538:2:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5538:13:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "exponent",
                                            "nodeType": "YulIdentifier",
                                            "src": "5556:8:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5566:2:64",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "5553:2:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5553:16:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5534:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5534:36:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "5494:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5494:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5491:159:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5659:57:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "5701:4:64"
                                  },
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "5707:8:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "checked_exp_helper",
                                  "nodeType": "YulIdentifier",
                                  "src": "5682:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5682:34:64"
                              },
                              "variables": [
                                {
                                  "name": "power_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5663:7:64",
                                  "type": ""
                                },
                                {
                                  "name": "base_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5672:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5761:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "5763:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5763:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5763:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5731:7:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5748:1:64",
                                            "type": "",
                                            "value": "0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "5744:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5744:6:64"
                                      },
                                      {
                                        "name": "base_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5752:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "div",
                                      "nodeType": "YulIdentifier",
                                      "src": "5740:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5740:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5728:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5728:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5725:58:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5792:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5805:7:64"
                                  },
                                  {
                                    "name": "base_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5814:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "5801:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5801:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "5792:5:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_exp_unsigned",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "5051:4:64",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "5057:8:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "5070:5:64",
                            "type": ""
                          }
                        ],
                        "src": "5021:806:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5884:116:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5943:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "5945:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5945:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5945:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "5915:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "5908:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5908:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "5901:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5901:17:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "5923:1:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5934:1:64",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "5930:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5930:6:64"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "5938:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "5926:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5926:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5920:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5920:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "5897:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5897:45:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5894:71:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5974:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "5989:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "5992:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "5985:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5985:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "5974:7:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "5863:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "5866:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "5872:7:64",
                            "type": ""
                          }
                        ],
                        "src": "5832:168:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6052:148:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6062:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "6077:1:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6080:4:64",
                                    "type": "",
                                    "value": "0xff"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "6073:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6073:12:64"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6066:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6094:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "6109:1:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6112:4:64",
                                    "type": "",
                                    "value": "0xff"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "6105:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6105:12:64"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6098:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6142:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "6144:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6144:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6144:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6132:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6137:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6129:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6129:12:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6126:38:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6173:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6185:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6190:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "6181:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6181:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "6173:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint8",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "6034:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "6037:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "6043:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6005:195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6237:95:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6254:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6261:3:64",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6266:10:64",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "6257:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6257:20:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6247:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6247:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6247:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6294:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6297:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6287:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6287:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6287:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6318:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6321:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6311:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6311:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6311:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6205:127:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6369:95:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6386:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6393:3:64",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6398:10:64",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "6389:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6389:20:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6379:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6379:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6379:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6426:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6429:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6419:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6419:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6419:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6450:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6453:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6443:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6443:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6443:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6337:127:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6514:86:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6578:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6587:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6590:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6580:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6580:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6580:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6537:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "6548:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "6563:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "6568:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6559:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "6559:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6572:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "6555:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6555:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "6544:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6544:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "6534:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6534:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6527:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6527:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6524:70:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6503:5:64",
                            "type": ""
                          }
                        ],
                        "src": "6469:131:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        validator_revert_address(value)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := mload(add(headStart, 64))\n        value3 := mload(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        let _5 := 0x20\n        if gt(add(add(_2, _3), _5), dataEnd) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _3) { i := add(i, _5) }\n        {\n            mstore(add(add(memPtr, i), _5), mload(add(add(_2, i), _5)))\n        }\n        if gt(i, _3)\n        {\n            mstore(add(add(memPtr, _3), _5), 0)\n        }\n        value0 := memPtr\n        value1 := abi_decode_address_fromMemory(add(headStart, _5))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_decode_tuple_t_uint8_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"ZERO_ADDRESS\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_784abf5ee5ac26c0ab454d7180fc6674dd424c889acd4d27298540d9febc99d6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 6)\n        mstore(add(headStart, 64), \"ZERO_A\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"IDENTICAL_ADDRESSES\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"INVALID_SWAP_FEE\")\n        tail := add(headStart, 96)\n    }\n    function checked_exp_helper(_base, exponent) -> power, base\n    {\n        let power_1 := 1\n        power := power_1\n        base := _base\n        for { } gt(exponent, power_1) { }\n        {\n            if gt(base, div(not(0), base)) { panic_error_0x11() }\n            if and(exponent, power_1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(power_1, exponent)\n        }\n    }\n    function checked_exp_t_uint256_t_uint8(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, and(exponent, 0xff))\n    }\n    function checked_exp_unsigned(base, exponent) -> power\n    {\n        if iszero(exponent)\n        {\n            power := 1\n            leave\n        }\n        if iszero(base)\n        {\n            power := 0\n            leave\n        }\n        switch base\n        case 1 {\n            power := 1\n            leave\n        }\n        case 2 {\n            if gt(exponent, 255) { panic_error_0x11() }\n            power := shl(exponent, 1)\n            leave\n        }\n        if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n        {\n            power := exp(base, exponent)\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent)\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_sub_t_uint8(x, y) -> diff\n    {\n        let x_1 := and(x, 0xff)\n        let y_1 := and(y, 0xff)\n        if lt(x_1, y_1) { panic_error_0x11() }\n        diff := sub(x_1, y_1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6102006040523480156200001257600080fd5b506040516200513b3803806200513b833981016040819052620000359162000610565b4660805262000112604080518082018252600e81526d29bab9b434902628102a37b5b2b760911b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b60a0818152505060008060008085806020019051810190620001359190620005c3565b929650909450925090506001600160a01b0384166200018a5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064015b60405180910390fd5b826001600160a01b0316846001600160a01b03161415620001ee5760405162461bcd60e51b815260206004820152601360248201527f4944454e544943414c5f41444452455353455300000000000000000000000000604482015260640162000181565b612710821115620002355760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f535741505f46454560801b604482015260640162000181565b806200026d5760405162461bcd60e51b81526020600482015260066024820152655a45524f5f4160d01b604482015260640162000181565b6001600160601b0319606085811b82166101405284901b166101605260c0829052604080516360a56c0160e11b815290516001600160a01b0387169163c14ad802916004808301926020929190829003018186803b158015620002cf57600080fd5b505afa158015620002e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030a919062000701565b600481905550846001600160a01b0316630c0a0cd26040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034a57600080fd5b505afa1580156200035f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038591906200059c565b6001600160a01b0316610120816001600160a01b031660601b81525050846001600160a01b0316634da318276040518163ffffffff1660e01b815260040160206040518083038186803b158015620003dc57600080fd5b505afa158015620003f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041791906200059c565b6001600160601b0319606091821b811660e0529086901b1661010052610180819052620004468160026200084a565b6101a08181525050836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200048857600080fd5b505afa1580156200049d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c391906200071b565b620004d09060126200086c565b620004dd90600a62000789565b6101c08181525050826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200051f57600080fd5b505afa15801562000534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055a91906200071b565b620005679060126200086c565b6200057490600a62000789565b6101e0525050600160075550620008d792505050565b80516200059781620008be565b919050565b600060208284031215620005af57600080fd5b8151620005bc81620008be565b9392505050565b60008060008060808587031215620005da57600080fd5b8451620005e781620008be565b6020860151909450620005fa81620008be565b6040860151606090960151949790965092505050565b600080604083850312156200062457600080fd5b82516001600160401b03808211156200063c57600080fd5b818501915085601f8301126200065157600080fd5b815181811115620006665762000666620008a8565b604051601f8201601f19908116603f01168101908382118183101715620006915762000691620008a8565b81604052828152602093508884848701011115620006ae57600080fd5b600091505b82821015620006d25784820184015181830185015290830190620006b3565b82821115620006e45760008484830101525b9550620006f69150508582016200058a565b925050509250929050565b6000602082840312156200071457600080fd5b5051919050565b6000602082840312156200072e57600080fd5b815160ff81168114620005bc57600080fd5b600181815b808511156200078157816000190482111562000765576200076562000892565b808516156200077357918102915b93841c939080029062000745565b509250929050565b6000620005bc60ff841683600082620007a55750600162000844565b81620007b45750600062000844565b8160018114620007cd5760028114620007d857620007f8565b600191505062000844565b60ff841115620007ec57620007ec62000892565b50506001821b62000844565b5060208310610133831016604e8410600b84101617156200081d575081810a62000844565b62000829838362000740565b806000190482111562000840576200084062000892565b0290505b92915050565b600081600019048311821515161562000867576200086762000892565b500290565b600060ff821660ff84168082101562000889576200088962000892565b90039392505050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114620008d457600080fd5b50565b60805160a05160c05160e05160601c6101005160601c6101205160601c6101405160601c6101605160601c610180516101a0516101c0516101e0516145e062000b5b6000396000818161042c01528181612ae401528181612b7e01528181612bb7015261349f01526000818161059b01528181612ac101528181612b4301528181612bf2015261347c015260008181613ac901528181613b1f01528181613bca0152613c140152600061065f0152600081816105f2015281816107ee015281816108a201528181610ae301528181610bd401528181610d0e015281816112970152818161137b015281816116b8015281816116ed0152818161191601528181611e8e01528181611f6b015281816122ca0152818161234c01528181612a0101528181612fa30152818161362a01526137f801526000818161034601528181610728015281816107b8015281816108f201528181610c0a01528181610cbe0152818161126b015281816113120152818161165f015281816117a7015281816118a801528181611dfe0152818161205c0152818161238101528181612464015281816128e701528181612e080152818161351301526137140152600081816102fa01526131460152600081816105cb0152611c65015260008181610405015281816108100152818161093901528181610c2c01528181610d5501528181611d7e01528181611e52015281816120200152818161294801528181612a3a01528181612e3c01528181612fd50152818161327f01528181613354015281816135710152818161365b01528181613742015261382601526000818161045301528181612b0a01528181613934015261399f015260006115920152600061146901526145e06000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c806367e4ac2c11610145578063af8c09bf116100bd578063d21220a71161008c578063dd62ed3e11610071578063dd62ed3e14610627578063e25aa5fa14610652578063f446c1d01461065a57600080fd5b8063d21220a7146105ed578063d505accf1461061457600080fd5b8063af8c09bf14610583578063baa8c7cb14610596578063c14ad802146105bd578063cf58879a146105c657600080fd5b806392bc321911610114578063a69840a8116100f9578063a69840a814610536578063a8f1f52e1461055d578063a9059cbb1461057057600080fd5b806392bc3219146104f057806395d89b41146104fa57600080fd5b806367e4ac2c1461048857806370a082311461049d5780637ba0e2e7146104bd5780637ecebe00146104d057600080fd5b80632a07b6c7116101d8578063499a3c50116101a75780634e25dc471161018c5780634e25dc471461042757806354cf2aeb1461044e578063627dd56a1461047557600080fd5b8063499a3c50146103ed5780634da318271461040057600080fd5b80632a07b6c71461038457806330adf81f146103a4578063313ce567146103cb5780633644e515146103e557600080fd5b80630c0a0cd2116102145780630c0a0cd2146102f55780630dfe16811461034157806318160ddd1461036857806323b872dd1461037157600080fd5b8063053da1c81461024657806306fdde031461026c5780630902f1ac146102b5578063095ea7b3146102d2575b600080fd5b610259610254366004614031565b610681565b6040519081526020015b60405180910390f35b6102a86040518060400160405280600e81526020017f5375736869204c5020546f6b656e00000000000000000000000000000000000081525081565b6040516102639190614265565b6102bd610f9c565b60408051928352602083019190915201610263565b6102e56102e0366004613f14565b610fb0565b6040519015158152602001610263565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610263565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b61025960005481565b6102e561037f366004613f79565b61102a565b610397610392366004614031565b611176565b6040516102639190614200565b6102597f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103d3601281565b60405160ff9091168152602001610263565b610259611465565b6102596103fb366004614031565b6115b4565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b610259610483366004614031565b6115bb565b610490611886565b60405161026391906141a6565b6102596104ab366004613d88565b60016020526000908152604090205481565b6102596104cb366004614031565b611985565b6102596104de366004613d88565b60036020526000908152604090205481565b6104f8611c63565b005b6102a86040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b6102597f54726964656e743a487962726964506f6f6c000000000000000000000000000081565b61025961056b366004614031565b611d06565b6102e561057e366004613f14565b61213d565b610259610591366004614031565b6121c2565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b61025960045481565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b6104f8610622366004613fba565b61250a565b610259610635366004613f40565b600260209081526000928352604080842090915290825290205481565b61025961285c565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b60006007546001146106f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600260075560008080808061070b87890189613dec565b945094509450945094506000806107206128a7565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610ae157506040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052600060448301527f0000000000000000000000000000000000000000000000000000000000000000917f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b15801561085457600080fd5b505afa158015610868573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088c91906140fe565b945061089b8584846001612abd565b98506108ca7f0000000000000000000000000000000000000000000000000000000000000000888b878a612c31565b6040517ff7888aec0000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff81811660048401523060248401526000927f00000000000000000000000000000000000000000000000000000000000000009190911691635662311891839063f7888aec9060440160206040518083038186803b15801561098657600080fd5b505afa15801561099a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109be91906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b158015610a2e57600080fd5b505afa158015610a42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6691906140fe565b905085610a738583614479565b1015610adb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e0000000000000000000060448201526064016106eb565b50610ef9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610b96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106eb565b506040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052600060448301527f0000000000000000000000000000000000000000000000000000000000000000917f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b158015610c7057600080fd5b505afa158015610c84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca891906140fe565b9450610cb78584846000612abd565b9850610ce67f0000000000000000000000000000000000000000000000000000000000000000888b878a612c31565b6040517ff7888aec0000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff81811660048401523060248401526000927f00000000000000000000000000000000000000000000000000000000000000009190911691635662311891839063f7888aec9060440160206040518083038186803b158015610da257600080fd5b505afa158015610db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dda91906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b158015610e4a57600080fd5b505afa158015610e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8291906140fe565b905085610e8f8483614479565b1015610ef7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e0000000000000000000060448201526064016106eb565b505b610f01612cba565b8073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062888d604051610f80929190918252602082015260400190565b60405180910390a4505060016007555094979650505050505050565b600080610fa76128a7565b90939092509050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906110189086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146110c75773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152812080548492906110c1908490614479565b90915550505b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020526040812080548492906110fc908490614479565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260016020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111649086815260200190565b60405180910390a35060019392505050565b60606007546001146111e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106eb565b60026007556000806111f884860186613edf565b91509150600080611207612dcb565b3060009081526001602052604081205492945090925061122784846130b4565b509050600081611237868561443c565b61124191906142df565b9050600082611250868661443c565b61125a91906142df565b90506112663085613185565b6112927f0000000000000000000000000000000000000000000000000000000000000000838a8a613218565b6112be7f0000000000000000000000000000000000000000000000000000000000000000828a8a613218565b6112c6612cba565b6040805160028082526060820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816112dc57905050985060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001838152508960008151811061136357611363614527565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200182815250896001815181106113cc576113cc614527565b60209081029190910101526113f36113e48388614479565b6113ee8388614479565b613478565b600655604080518381526020810183905290810185905273ffffffffffffffffffffffffffffffffffffffff89169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a3505060016007555094979650505050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461158f5750604080518082018252600e81527f5375736869204c5020546f6b656e00000000000000000000000000000000000060209182015281518083018352600181527f31000000000000000000000000000000000000000000000000000000000000009082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000806000fd5b6000600754600114611629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106eb565b60026007556000808061163e85870187613da5565b9250925092506000806000806116526134d3565b93509350935093506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614156116eb5750508382037f00000000000000000000000000000000000000000000000000000000000000006116e48287876001612abd565b99506117d6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146117a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106eb565b50508281037f00000000000000000000000000000000000000000000000000000000000000006117d38287876000612abd565b99505b6117e2818b8a8a613218565b6117ea612cba565b8073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062858e604051611869929190918252602082015260400190565b60405180910390a450506001600755509598975050505050505050565b60408051600280825260608083018452926020830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106118da576118da614527565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061194857611948614527565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b60006007546001146119f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106eb565b60026007556000611a0683850185613d88565b9050600080611a136128a7565b91509150600080611a22612dcb565b915091506000611a328383613478565b90506000611a408685614479565b90506000611a4e8685614479565b9050600080611a5f84848b8b6138d9565b9092509050611a7e6dffffffffffffffffffffffffffff83168a6142c7565b9850611a9a6dffffffffffffffffffffffffffff8216896142c7565b9750600080611aa98b8b6130b4565b915091508160001415611b4c57600086118015611ac65750600085115b611b2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f414d4f554e5453000000000000000000000000000000000060448201526064016106eb565b611b386103e888614479565b9c50611b4760006103e86139dc565b611b6f565b8082611b58828a614479565b611b62919061443c565b611b6c91906142df565b9c505b8c611bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e54454400000060448201526064016106eb565b611be08c8e6139dc565b611be8612cba565b600687905560408051878152602081018790529081018e90528d9073ffffffffffffffffffffffffffffffffffffffff8e169033907ff9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e9060600160405180910390a35050600160075550999c9b505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b158015611cc957600080fd5b505afa158015611cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0191906140fe565b600455565b60008080611d1684860186613f14565b91509150600080611d256128a7565b6040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015260248201879052600060448301529294509092507f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b158015611dc257600080fd5b505afa158015611dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfa91906140fe565b92507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611f69577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663da5139ca7f0000000000000000000000000000000000000000000000000000000000000000611eba8686866001612abd565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b158015611f2a57600080fd5b505afa158015611f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6291906140fe565b9450612133565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461201e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106eb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663da5139ca7f00000000000000000000000000000000000000000000000000000000000000006120888686866000612abd565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b1580156120f857600080fd5b505afa15801561210c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213091906140fe565b94505b5050505092915050565b3360009081526001602052604081208054839190839061215e908490614479565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110189086815260200190565b6000600754600114612230576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106eb565b60026007556000808061224585870187613da5565b925092509250600080612256612dcb565b3060009081526001602052604081205492945090925061227684846130b4565b509050600081612286868561443c565b61229091906142df565b905060008261229f868661443c565b6122a991906142df565b90506122b53085613185565b6122c26113e48388614479565b6006819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141561237f5761233b8261232a8189614479565b6123348489614479565b6001612abd565b61234590826142c7565b90506123737f0000000000000000000000000000000000000000000000000000000000000000828a8a613218565b80995060009150612492565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614612434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e00000000000000000000000060448201526064016106eb565b612453816124428489614479565b61244c8489614479565b6000612abd565b61245d90836142c7565b915061248b7f0000000000000000000000000000000000000000000000000000000000000000838a8a613218565b5097508760005b61249a612cba565b604080518381526020810183905290810185905273ffffffffffffffffffffffffffffffffffffffff89169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a350506001600755509598975050505050505050565b42841015612574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016106eb565b600061257e611465565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c929091906125d983614490565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161267a9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612703573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061277e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6127e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e4154555245000000000000000060448201526064016106eb565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b60008060006128696128a7565b9150915060006128798383613478565b60005490915061288b6012600a614373565b612895908361443c565b61289f91906142df565b935050505090565b6005546040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526fffffffffffffffffffffffffffffffff808416602484018190526000604485015293700100000000000000000000000000000000900416917f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b15801561298c57600080fd5b505afa1580156129a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c491906140fe565b6040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201849052600060448301529193507f0000000000000000000000000000000000000000000000000000000000000000909116906356623118906064015b60206040518083038186803b158015612a7f57600080fd5b505afa158015612a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab791906140fe565b90509091565b60007f000000000000000000000000000000000000000000000000000000000000000084027f000000000000000000000000000000000000000000000000000000000000000084026127107f0000000000000000000000000000000000000000000000000000000000000000880204870383612b398484613a4c565b90508515612bb5577f0000000000000000000000000000000000000000000000000000000000000000820284016000612b728284613b9f565b905060018186030396507f00000000000000000000000000000000000000000000000000000000000000008781612bab57612bab6144f8565b0496505050612c25565b7f0000000000000000000000000000000000000000000000000000000000000000820283016000612be68284613b9f565b905060018187030396507f00000000000000000000000000000000000000000000000000000000000000008781612c1f57612c1f6144f8565b04965050505b50505050949350505050565b612c3d85848684613218565b815115612cb3576040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b190612c80908590600401614265565b600060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b505050505b5050505050565b600080612cc5612dcb565b90925090506fffffffffffffffffffffffffffffffff8211801590612cfa57506fffffffffffffffffffffffffffffffff8111155b612d60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4f564552464c4f5700000000000000000000000000000000000000000000000060448201526064016106eb565b6fffffffffffffffffffffffffffffffff818116700100000000000000000000000000000000029083161760055560408051838152602081018390527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a15050565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000818116600484015230602484015260009283927f00000000000000000000000000000000000000000000000000000000000000001691635662311891839063f7888aec9060440160206040518083038186803b158015612e8657600080fd5b505afa158015612e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebe91906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b158015612f2e57600080fd5b505afa158015612f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6691906140fe565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081811660048401523060248401529294507f00000000000000000000000000000000000000000000000000000000000000001691635662311891839063f7888aec9060440160206040518083038186803b15801561301f57600080fd5b505afa158015613033573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305791906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260006044820152606401612a67565b60008054600654909190801561317d576130ce8585613478565b91508082111561317d576004546000816130e88486614479565b6130f2908761443c565b6130fc919061443c565b9050600061310a848461443c565b8561311785612710614479565b613121919061443c565b61312b91906142c7565b9050600061313982846142df565b905080156131785761316b7f0000000000000000000000000000000000000000000000000000000000000000826139dc565b61317581886142c7565b96505b505050505b509250929050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812080548392906131ba908490614479565b909155505060008054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b8015613301576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152306024830152838116604483015260648201859052600060848301527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b1580156132c257600080fd5b505af11580156132d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132fa9190614117565b5050613472565b6040517fda5139ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052600060448301527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90869030908690859063da5139ca9060640160206040518083038186803b1580156133a457600080fd5b505afa1580156133b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133dc91906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff94851660048201529284166024840152921660448201526064810191909152608401600060405180830381600087803b15801561345957600080fd5b505af115801561346d573d6000803e3d6000fd5b505050505b50505050565b60007f000000000000000000000000000000000000000000000000000000000000000083027f000000000000000000000000000000000000000000000000000000000000000083026134ca8282613a4c565b95945050505050565b6005546040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301526fffffffffffffffffffffffffffffffff808416937001000000000000000000000000000000009004169160009182917f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b1580156135b557600080fd5b505afa1580156135c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135ed91906140fe565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301529193507f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b15801561369f57600080fd5b505afa1580156136b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d791906140fe565b6040517f4ffe34db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301529192506000917f00000000000000000000000000000000000000000000000000000000000000001690634ffe34db90602401604080518083038186803b15801561378357600080fd5b505afa158015613797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137bb91906140a3565b6040517f4ffe34db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301529192506000917f00000000000000000000000000000000000000000000000000000000000000001690634ffe34db90602401604080518083038186803b15801561386757600080fd5b505afa15801561387b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061389f91906140a3565b90506138ab8287613cd1565b95506138b78186613cd1565b94506138c38285613cd1565b93506138cf8184613cd1565b9250505090919293565b6000808315806138e7575082155b156138f7575060009050806139d3565b600084613904858961443c565b61390e91906142df565b905085811161396957613924612710600261443c565b61392e8288614479565b613958907f000000000000000000000000000000000000000000000000000000000000000061443c565b61396291906142df565b91506139d1565b600084613976878961443c565b61398091906142df565b905061398f612710600261443c565b613999828a614479565b6139c3907f000000000000000000000000000000000000000000000000000000000000000061443c565b6139cd91906142df565b9350505b505b94509492505050565b806000808282546139ed91906142c7565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161320c565b600080613a5983856142c7565b905080613a6557600091505b600081815b610100811015613b95576000600487848a613a85828061443c565b613a8f91906142df565b613a99919061443c565b613aa391906142df565b613aad91906142df565b9050829350806003613abf919061443c565b836001613aed60647f00000000000000000000000000000000000000000000000000000000000000006142df565b613af79190614479565b613b01919061443c565b613b0b91906142c7565b83613b1783600261443c565b6064613b43897f000000000000000000000000000000000000000000000000000000000000000061443c565b613b4d91906142df565b613b5791906142c7565b613b61919061443c565b613b6b91906142df565b9250613b778385613d31565b15613b825750613b95565b5080613b8d81614490565b915050613a6a565b5095945050505050565b600080613bad84600261443c565b613bb7848061443c565b613bc191906142df565b90506064613bf07f0000000000000000000000000000000000000000000000000000000000000000600261443c565b613bfa91906142df565b613c04848361443c565b613c0e91906142df565b905060007f0000000000000000000000000000000000000000000000000000000000000000613c3e60648661443c565b613c4891906142df565b613c5290866142c7565b9050600084935060005b610100811015612133578491508583613c7684600261443c565b613c8091906142c7565b613c8a9190614479565b84613c95878061443c565b613c9f91906142c7565b613ca991906142df565b9450613cb58583613d31565b15613cbf57612133565b80613cc981614490565b915050613c5c565b600082602001516fffffffffffffffffffffffffffffffff1660001415613cf9575080611024565b602083015183516fffffffffffffffffffffffffffffffff91821691613d2091168461443c565b613d2a91906142df565b9392505050565b600081831115613d48575060018183031115611024565b506001919003111590565b80358015158114613d6357600080fd5b919050565b80516fffffffffffffffffffffffffffffffff81168114613d6357600080fd5b600060208284031215613d9a57600080fd5b8135613d2a81614585565b600080600060608486031215613dba57600080fd5b8335613dc581614585565b92506020840135613dd581614585565b9150613de360408501613d53565b90509250925092565b600080600080600060a08688031215613e0457600080fd5b8535613e0f81614585565b9450602086810135613e2081614585565b9450613e2e60408801613d53565b935060608701359250608087013567ffffffffffffffff80821115613e5257600080fd5b818901915089601f830112613e6657600080fd5b813581811115613e7857613e78614556565b613ea8847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614278565b91508082528a84828501011115613ebe57600080fd5b80848401858401376000848284010152508093505050509295509295909350565b60008060408385031215613ef257600080fd5b8235613efd81614585565b9150613f0b60208401613d53565b90509250929050565b60008060408385031215613f2757600080fd5b8235613f3281614585565b946020939093013593505050565b60008060408385031215613f5357600080fd5b8235613f5e81614585565b91506020830135613f6e81614585565b809150509250929050565b600080600060608486031215613f8e57600080fd5b8335613f9981614585565b92506020840135613fa981614585565b929592945050506040919091013590565b600080600080600080600060e0888a031215613fd557600080fd5b8735613fe081614585565b96506020880135613ff081614585565b95506040880135945060608801359350608088013560ff8116811461401457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806020838503121561404457600080fd5b823567ffffffffffffffff8082111561405c57600080fd5b818501915085601f83011261407057600080fd5b81358181111561407f57600080fd5b86602082850101111561409157600080fd5b60209290920196919550909350505050565b6000604082840312156140b557600080fd5b6040516040810181811067ffffffffffffffff821117156140d8576140d8614556565b6040526140e483613d68565b81526140f260208401613d68565b60208201529392505050565b60006020828403121561411057600080fd5b5051919050565b6000806040838503121561412a57600080fd5b505080516020909101519092909150565b6000815180845260005b8181101561416157602081850181015186830182015201614145565b81811115614173576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020808252825182820181905260009190848201906040850190845b818110156141f457835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016141c2565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015614258578151805173ffffffffffffffffffffffffffffffffffffffff16855286015186850152928401929085019060010161421d565b5091979650505050505050565b602081526000613d2a602083018461413b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156142bf576142bf614556565b604052919050565b600082198211156142da576142da6144c9565b500190565b600082614315577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600181815b8085111561317d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115614359576143596144c9565b8085161561436657918102915b93841c939080029061431f565b6000613d2a60ff84168360008261438c57506001611024565b8161439957506000611024565b81600181146143af57600281146143b9576143d5565b6001915050611024565b60ff8411156143ca576143ca6144c9565b50506001821b611024565b5060208310610133831016604e8410600b84101617156143f8575081810a611024565b614402838361431a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115614434576144346144c9565b029392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614474576144746144c9565b500290565b60008282101561448b5761448b6144c9565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156144c2576144c26144c9565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146145a757600080fd5b5056fea2646970667358221220f5bed7b73a8d176b55d9233a65288c602eab9db5c240e7b511f16e85c948723064736f6c63430008070033",
              "opcodes": "PUSH2 0x200 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x513B CODESIZE SUB DUP1 PUSH3 0x513B DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x610 JUMP JUMPDEST CHAINID PUSH1 0x80 MSTORE PUSH3 0x112 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x29BAB9B434902628102A37B5B2B7 PUSH1 0x91 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP6 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x135 SWAP2 SWAP1 PUSH3 0x5C3 JUMP JUMPDEST SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x18A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A45524F5F41444452455353 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x1EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4944454E544943414C5F41444452455353455300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST PUSH2 0x2710 DUP3 GT ISZERO PUSH3 0x235 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x494E56414C49445F535741505F464545 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST DUP1 PUSH3 0x26D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x5A45524F5F41 PUSH1 0xD0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 DUP2 SHL DUP3 AND PUSH2 0x140 MSTORE DUP5 SWAP1 SHL AND PUSH2 0x160 MSTORE PUSH1 0xC0 DUP3 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x60A56C01 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0xC14AD802 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x30A SWAP2 SWAP1 PUSH3 0x701 JUMP JUMPDEST PUSH1 0x4 DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0A0CD2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x35F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x385 SWAP2 SWAP1 PUSH3 0x59C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x120 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4DA31827 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x417 SWAP2 SWAP1 PUSH3 0x59C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xE0 MSTORE SWAP1 DUP7 SWAP1 SHL AND PUSH2 0x100 MSTORE PUSH2 0x180 DUP2 SWAP1 MSTORE PUSH3 0x446 DUP2 PUSH1 0x2 PUSH3 0x84A JUMP JUMPDEST PUSH2 0x1A0 DUP2 DUP2 MSTORE POP POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x488 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x49D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x4C3 SWAP2 SWAP1 PUSH3 0x71B JUMP JUMPDEST PUSH3 0x4D0 SWAP1 PUSH1 0x12 PUSH3 0x86C JUMP JUMPDEST PUSH3 0x4DD SWAP1 PUSH1 0xA PUSH3 0x789 JUMP JUMPDEST PUSH2 0x1C0 DUP2 DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x534 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x55A SWAP2 SWAP1 PUSH3 0x71B JUMP JUMPDEST PUSH3 0x567 SWAP1 PUSH1 0x12 PUSH3 0x86C JUMP JUMPDEST PUSH3 0x574 SWAP1 PUSH1 0xA PUSH3 0x789 JUMP JUMPDEST PUSH2 0x1E0 MSTORE POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP PUSH3 0x8D7 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x597 DUP2 PUSH3 0x8BE JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x5BC DUP2 PUSH3 0x8BE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH3 0x5E7 DUP2 PUSH3 0x8BE JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH3 0x5FA DUP2 PUSH3 0x8BE JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x624 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x63C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x651 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x666 JUMPI PUSH3 0x666 PUSH3 0x8A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x691 JUMPI PUSH3 0x691 PUSH3 0x8A8 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE PUSH1 0x20 SWAP4 POP DUP9 DUP5 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP3 DUP3 LT ISZERO PUSH3 0x6D2 JUMPI DUP5 DUP3 ADD DUP5 ADD MLOAD DUP2 DUP4 ADD DUP6 ADD MSTORE SWAP1 DUP4 ADD SWAP1 PUSH3 0x6B3 JUMP JUMPDEST DUP3 DUP3 GT ISZERO PUSH3 0x6E4 JUMPI PUSH1 0x0 DUP5 DUP5 DUP4 ADD ADD MSTORE JUMPDEST SWAP6 POP PUSH3 0x6F6 SWAP2 POP POP DUP6 DUP3 ADD PUSH3 0x58A JUMP JUMPDEST SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x72E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH3 0x5BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH3 0x781 JUMPI DUP2 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x765 JUMPI PUSH3 0x765 PUSH3 0x892 JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH3 0x773 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH3 0x745 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x5BC PUSH1 0xFF DUP5 AND DUP4 PUSH1 0x0 DUP3 PUSH3 0x7A5 JUMPI POP PUSH1 0x1 PUSH3 0x844 JUMP JUMPDEST DUP2 PUSH3 0x7B4 JUMPI POP PUSH1 0x0 PUSH3 0x844 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH3 0x7CD JUMPI PUSH1 0x2 DUP2 EQ PUSH3 0x7D8 JUMPI PUSH3 0x7F8 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH3 0x844 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH3 0x7EC JUMPI PUSH3 0x7EC PUSH3 0x892 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH3 0x844 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH3 0x81D JUMPI POP DUP2 DUP2 EXP PUSH3 0x844 JUMP JUMPDEST PUSH3 0x829 DUP4 DUP4 PUSH3 0x740 JUMP JUMPDEST DUP1 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x840 JUMPI PUSH3 0x840 PUSH3 0x892 JUMP JUMPDEST MUL SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH3 0x867 JUMPI PUSH3 0x867 PUSH3 0x892 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND PUSH1 0xFF DUP5 AND DUP1 DUP3 LT ISZERO PUSH3 0x889 JUMPI PUSH3 0x889 PUSH3 0x892 JUMP JUMPDEST SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x8D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x160 MLOAD PUSH1 0x60 SHR PUSH2 0x180 MLOAD PUSH2 0x1A0 MLOAD PUSH2 0x1C0 MLOAD PUSH2 0x1E0 MLOAD PUSH2 0x45E0 PUSH3 0xB5B PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x42C ADD MSTORE DUP2 DUP2 PUSH2 0x2AE4 ADD MSTORE DUP2 DUP2 PUSH2 0x2B7E ADD MSTORE DUP2 DUP2 PUSH2 0x2BB7 ADD MSTORE PUSH2 0x349F ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x59B ADD MSTORE DUP2 DUP2 PUSH2 0x2AC1 ADD MSTORE DUP2 DUP2 PUSH2 0x2B43 ADD MSTORE DUP2 DUP2 PUSH2 0x2BF2 ADD MSTORE PUSH2 0x347C ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x3AC9 ADD MSTORE DUP2 DUP2 PUSH2 0x3B1F ADD MSTORE DUP2 DUP2 PUSH2 0x3BCA ADD MSTORE PUSH2 0x3C14 ADD MSTORE PUSH1 0x0 PUSH2 0x65F ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x5F2 ADD MSTORE DUP2 DUP2 PUSH2 0x7EE ADD MSTORE DUP2 DUP2 PUSH2 0x8A2 ADD MSTORE DUP2 DUP2 PUSH2 0xAE3 ADD MSTORE DUP2 DUP2 PUSH2 0xBD4 ADD MSTORE DUP2 DUP2 PUSH2 0xD0E ADD MSTORE DUP2 DUP2 PUSH2 0x1297 ADD MSTORE DUP2 DUP2 PUSH2 0x137B ADD MSTORE DUP2 DUP2 PUSH2 0x16B8 ADD MSTORE DUP2 DUP2 PUSH2 0x16ED ADD MSTORE DUP2 DUP2 PUSH2 0x1916 ADD MSTORE DUP2 DUP2 PUSH2 0x1E8E ADD MSTORE DUP2 DUP2 PUSH2 0x1F6B ADD MSTORE DUP2 DUP2 PUSH2 0x22CA ADD MSTORE DUP2 DUP2 PUSH2 0x234C ADD MSTORE DUP2 DUP2 PUSH2 0x2A01 ADD MSTORE DUP2 DUP2 PUSH2 0x2FA3 ADD MSTORE DUP2 DUP2 PUSH2 0x362A ADD MSTORE PUSH2 0x37F8 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x346 ADD MSTORE DUP2 DUP2 PUSH2 0x728 ADD MSTORE DUP2 DUP2 PUSH2 0x7B8 ADD MSTORE DUP2 DUP2 PUSH2 0x8F2 ADD MSTORE DUP2 DUP2 PUSH2 0xC0A ADD MSTORE DUP2 DUP2 PUSH2 0xCBE ADD MSTORE DUP2 DUP2 PUSH2 0x126B ADD MSTORE DUP2 DUP2 PUSH2 0x1312 ADD MSTORE DUP2 DUP2 PUSH2 0x165F ADD MSTORE DUP2 DUP2 PUSH2 0x17A7 ADD MSTORE DUP2 DUP2 PUSH2 0x18A8 ADD MSTORE DUP2 DUP2 PUSH2 0x1DFE ADD MSTORE DUP2 DUP2 PUSH2 0x205C ADD MSTORE DUP2 DUP2 PUSH2 0x2381 ADD MSTORE DUP2 DUP2 PUSH2 0x2464 ADD MSTORE DUP2 DUP2 PUSH2 0x28E7 ADD MSTORE DUP2 DUP2 PUSH2 0x2E08 ADD MSTORE DUP2 DUP2 PUSH2 0x3513 ADD MSTORE PUSH2 0x3714 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x2FA ADD MSTORE PUSH2 0x3146 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x5CB ADD MSTORE PUSH2 0x1C65 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x405 ADD MSTORE DUP2 DUP2 PUSH2 0x810 ADD MSTORE DUP2 DUP2 PUSH2 0x939 ADD MSTORE DUP2 DUP2 PUSH2 0xC2C ADD MSTORE DUP2 DUP2 PUSH2 0xD55 ADD MSTORE DUP2 DUP2 PUSH2 0x1D7E ADD MSTORE DUP2 DUP2 PUSH2 0x1E52 ADD MSTORE DUP2 DUP2 PUSH2 0x2020 ADD MSTORE DUP2 DUP2 PUSH2 0x2948 ADD MSTORE DUP2 DUP2 PUSH2 0x2A3A ADD MSTORE DUP2 DUP2 PUSH2 0x2E3C ADD MSTORE DUP2 DUP2 PUSH2 0x2FD5 ADD MSTORE DUP2 DUP2 PUSH2 0x327F ADD MSTORE DUP2 DUP2 PUSH2 0x3354 ADD MSTORE DUP2 DUP2 PUSH2 0x3571 ADD MSTORE DUP2 DUP2 PUSH2 0x365B ADD MSTORE DUP2 DUP2 PUSH2 0x3742 ADD MSTORE PUSH2 0x3826 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x453 ADD MSTORE DUP2 DUP2 PUSH2 0x2B0A ADD MSTORE DUP2 DUP2 PUSH2 0x3934 ADD MSTORE PUSH2 0x399F ADD MSTORE PUSH1 0x0 PUSH2 0x1592 ADD MSTORE PUSH1 0x0 PUSH2 0x1469 ADD MSTORE PUSH2 0x45E0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x241 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x67E4AC2C GT PUSH2 0x145 JUMPI DUP1 PUSH4 0xAF8C09BF GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x627 JUMPI DUP1 PUSH4 0xE25AA5FA EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0xF446C1D0 EQ PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x5ED JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x614 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x583 JUMPI DUP1 PUSH4 0xBAA8C7CB EQ PUSH2 0x596 JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x5BD JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x92BC3219 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xA69840A8 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x536 JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x55D JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x4F0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x488 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x49D JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x4E25DC47 GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x4E25DC47 EQ PUSH2 0x427 JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x44E JUMPI DUP1 PUSH4 0x627DD56A EQ PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x3ED JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3CB JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x3E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x214 JUMPI DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x341 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x368 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x371 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2B5 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2D2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x259 PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x681 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x4265 JUMP JUMPDEST PUSH2 0x2BD PUSH2 0xF9C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x2E5 PUSH2 0x2E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F14 JUMP JUMPDEST PUSH2 0xFB0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2E5 PUSH2 0x37F CALLDATASIZE PUSH1 0x4 PUSH2 0x3F79 JUMP JUMPDEST PUSH2 0x102A JUMP JUMPDEST PUSH2 0x397 PUSH2 0x392 CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x1465 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x3FB CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x15B4 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x483 CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x490 PUSH2 0x1886 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x41A6 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x4AB CALLDATASIZE PUSH1 0x4 PUSH2 0x3D88 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x4CB CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x1985 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x4DE CALLDATASIZE PUSH1 0x4 PUSH2 0x3D88 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x4F8 PUSH2 0x1C63 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x54726964656E743A487962726964506F6F6C0000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x56B CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x1D06 JUMP JUMPDEST PUSH2 0x2E5 PUSH2 0x57E CALLDATASIZE PUSH1 0x4 PUSH2 0x3F14 JUMP JUMPDEST PUSH2 0x213D JUMP JUMPDEST PUSH2 0x259 PUSH2 0x591 CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x21C2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x4F8 PUSH2 0x622 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FBA JUMP JUMPDEST PUSH2 0x250A JUMP JUMPDEST PUSH2 0x259 PUSH2 0x635 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F40 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x285C JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x6F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x70B DUP8 DUP10 ADD DUP10 PUSH2 0x3DEC JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x0 DUP1 PUSH2 0x720 PUSH2 0x28A7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xAE1 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x854 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x868 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x88C SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP5 POP PUSH2 0x89B DUP6 DUP5 DUP5 PUSH1 0x1 PUSH2 0x2ABD JUMP JUMPDEST SWAP9 POP PUSH2 0x8CA PUSH32 0x0 DUP9 DUP12 DUP8 DUP11 PUSH2 0x2C31 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x4 DUP5 ADD MSTORE ADDRESS PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x0 SWAP3 PUSH32 0x0 SWAP2 SWAP1 SWAP2 AND SWAP2 PUSH4 0x56623118 SWAP2 DUP4 SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x99A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9BE SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA42 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA66 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0xA73 DUP6 DUP4 PUSH2 0x4479 JUMP JUMPDEST LT ISZERO PUSH2 0xADB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST POP PUSH2 0xEF9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB96 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCA8 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP5 POP PUSH2 0xCB7 DUP6 DUP5 DUP5 PUSH1 0x0 PUSH2 0x2ABD JUMP JUMPDEST SWAP9 POP PUSH2 0xCE6 PUSH32 0x0 DUP9 DUP12 DUP8 DUP11 PUSH2 0x2C31 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x4 DUP5 ADD MSTORE ADDRESS PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x0 SWAP3 PUSH32 0x0 SWAP2 SWAP1 SWAP2 AND SWAP2 PUSH4 0x56623118 SWAP2 DUP4 SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDB6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDDA SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE5E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE82 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0xE8F DUP5 DUP4 PUSH2 0x4479 JUMP JUMPDEST LT ISZERO PUSH2 0xEF7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST POP JUMPDEST PUSH2 0xF01 PUSH2 0x2CBA JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP9 DUP14 PUSH1 0x40 MLOAD PUSH2 0xF80 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xFA7 PUSH2 0x28A7 JUMP JUMPDEST SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x1018 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x10C7 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x10C1 SWAP1 DUP5 SWAP1 PUSH2 0x4479 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x10FC SWAP1 DUP5 SWAP1 PUSH2 0x4479 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x1164 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x11E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 PUSH2 0x11F8 DUP5 DUP7 ADD DUP7 PUSH2 0x3EDF JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1207 PUSH2 0x2DCB JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH2 0x1227 DUP5 DUP5 PUSH2 0x30B4 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x1237 DUP7 DUP6 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x1241 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x1250 DUP7 DUP7 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x125A SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH2 0x1266 ADDRESS DUP6 PUSH2 0x3185 JUMP JUMPDEST PUSH2 0x1292 PUSH32 0x0 DUP4 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST PUSH2 0x12BE PUSH32 0x0 DUP3 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST PUSH2 0x12C6 PUSH2 0x2CBA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x12DC JUMPI SWAP1 POP POP SWAP9 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP10 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1363 JUMPI PUSH2 0x1363 PUSH2 0x4527 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP10 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x13CC JUMPI PUSH2 0x13CC PUSH2 0x4527 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x13F3 PUSH2 0x13E4 DUP4 DUP9 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x13EE DUP4 DUP9 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x3478 JUMP JUMPDEST PUSH1 0x6 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x158F JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x1629 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x163E DUP6 DUP8 ADD DUP8 PUSH2 0x3DA5 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1652 PUSH2 0x34D3 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x16EB JUMPI POP POP DUP4 DUP3 SUB PUSH32 0x0 PUSH2 0x16E4 DUP3 DUP8 DUP8 PUSH1 0x1 PUSH2 0x2ABD JUMP JUMPDEST SWAP10 POP PUSH2 0x17D6 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x17A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST POP POP DUP3 DUP2 SUB PUSH32 0x0 PUSH2 0x17D3 DUP3 DUP8 DUP8 PUSH1 0x0 PUSH2 0x2ABD JUMP JUMPDEST SWAP10 POP JUMPDEST PUSH2 0x17E2 DUP2 DUP12 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST PUSH2 0x17EA PUSH2 0x2CBA JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP6 DUP15 PUSH1 0x40 MLOAD PUSH2 0x1869 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP6 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x18DA JUMPI PUSH2 0x18DA PUSH2 0x4527 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1948 JUMPI PUSH2 0x1948 PUSH2 0x4527 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x19F3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 PUSH2 0x1A06 DUP4 DUP6 ADD DUP6 PUSH2 0x3D88 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1A13 PUSH2 0x28A7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1A22 PUSH2 0x2DCB JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x1A32 DUP4 DUP4 PUSH2 0x3478 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A40 DUP7 DUP6 PUSH2 0x4479 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A4E DUP7 DUP6 PUSH2 0x4479 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1A5F DUP5 DUP5 DUP12 DUP12 PUSH2 0x38D9 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1A7E PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP11 PUSH2 0x42C7 JUMP JUMPDEST SWAP9 POP PUSH2 0x1A9A PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP10 PUSH2 0x42C7 JUMP JUMPDEST SWAP8 POP PUSH1 0x0 DUP1 PUSH2 0x1AA9 DUP12 DUP12 PUSH2 0x30B4 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ ISZERO PUSH2 0x1B4C JUMPI PUSH1 0x0 DUP7 GT DUP1 ISZERO PUSH2 0x1AC6 JUMPI POP PUSH1 0x0 DUP6 GT JUMPDEST PUSH2 0x1B2C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F414D4F554E54530000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH2 0x1B38 PUSH2 0x3E8 DUP9 PUSH2 0x4479 JUMP JUMPDEST SWAP13 POP PUSH2 0x1B47 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x39DC JUMP JUMPDEST PUSH2 0x1B6F JUMP JUMPDEST DUP1 DUP3 PUSH2 0x1B58 DUP3 DUP11 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x1B62 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x1B6C SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP13 POP JUMPDEST DUP13 PUSH2 0x1BD6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F4C49515549444954595F4D494E544544000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH2 0x1BE0 DUP13 DUP15 PUSH2 0x39DC JUMP JUMPDEST PUSH2 0x1BE8 PUSH2 0x2CBA JUMP JUMPDEST PUSH1 0x6 DUP8 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 DUP2 ADD DUP15 SWAP1 MSTORE DUP14 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP1 CALLER SWAP1 PUSH32 0xF9C32FBC56FF04F32A233EBC26E388564223745E28ABD8D0781DD906537F563E SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP10 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CDD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D01 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x1D16 DUP5 DUP7 ADD DUP7 PUSH2 0x3F14 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1D25 PUSH2 0x28A7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP8 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DD6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1DFA SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP3 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1F69 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA5139CA PUSH32 0x0 PUSH2 0x1EBA DUP7 DUP7 DUP7 PUSH1 0x1 PUSH2 0x2ABD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F3E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F62 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP5 POP PUSH2 0x2133 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x201E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA5139CA PUSH32 0x0 PUSH2 0x2088 DUP7 DUP7 DUP7 PUSH1 0x0 PUSH2 0x2ABD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x210C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2130 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP5 POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP4 SWAP1 PUSH2 0x215E SWAP1 DUP5 SWAP1 PUSH2 0x4479 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x1018 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x2230 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x2245 DUP6 DUP8 ADD DUP8 PUSH2 0x3DA5 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x2256 PUSH2 0x2DCB JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH2 0x2276 DUP5 DUP5 PUSH2 0x30B4 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x2286 DUP7 DUP6 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x2290 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x229F DUP7 DUP7 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x22A9 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH2 0x22B5 ADDRESS DUP6 PUSH2 0x3185 JUMP JUMPDEST PUSH2 0x22C2 PUSH2 0x13E4 DUP4 DUP9 PUSH2 0x4479 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x237F JUMPI PUSH2 0x233B DUP3 PUSH2 0x232A DUP2 DUP10 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x2334 DUP5 DUP10 PUSH2 0x4479 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2ABD JUMP JUMPDEST PUSH2 0x2345 SWAP1 DUP3 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 POP PUSH2 0x2373 PUSH32 0x0 DUP3 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST DUP1 SWAP10 POP PUSH1 0x0 SWAP2 POP PUSH2 0x2492 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2434 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH2 0x2453 DUP2 PUSH2 0x2442 DUP5 DUP10 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x244C DUP5 DUP10 PUSH2 0x4479 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2ABD JUMP JUMPDEST PUSH2 0x245D SWAP1 DUP4 PUSH2 0x42C7 JUMP JUMPDEST SWAP2 POP PUSH2 0x248B PUSH32 0x0 DUP4 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST POP SWAP8 POP DUP8 PUSH1 0x0 JUMPDEST PUSH2 0x249A PUSH2 0x2CBA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP6 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x2574 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x257E PUSH2 0x1465 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP3 DUP13 SWAP3 DUP13 SWAP3 DUP13 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x25D9 DUP4 PUSH2 0x4490 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x267A SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2703 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x277E JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x27E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2869 PUSH2 0x28A7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x2879 DUP4 DUP4 PUSH2 0x3478 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP PUSH2 0x288B PUSH1 0x12 PUSH1 0xA PUSH2 0x4373 JUMP JUMPDEST PUSH2 0x2895 SWAP1 DUP4 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x289F SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x24 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP6 ADD MSTORE SWAP4 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x298C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x29C4 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A93 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2AB7 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP1 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP5 MUL PUSH32 0x0 DUP5 MUL PUSH2 0x2710 PUSH32 0x0 DUP9 MUL DIV DUP8 SUB DUP4 PUSH2 0x2B39 DUP5 DUP5 PUSH2 0x3A4C JUMP JUMPDEST SWAP1 POP DUP6 ISZERO PUSH2 0x2BB5 JUMPI PUSH32 0x0 DUP3 MUL DUP5 ADD PUSH1 0x0 PUSH2 0x2B72 DUP3 DUP5 PUSH2 0x3B9F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 DUP7 SUB SUB SWAP7 POP PUSH32 0x0 DUP8 DUP2 PUSH2 0x2BAB JUMPI PUSH2 0x2BAB PUSH2 0x44F8 JUMP JUMPDEST DIV SWAP7 POP POP POP PUSH2 0x2C25 JUMP JUMPDEST PUSH32 0x0 DUP3 MUL DUP4 ADD PUSH1 0x0 PUSH2 0x2BE6 DUP3 DUP5 PUSH2 0x3B9F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 DUP8 SUB SUB SWAP7 POP PUSH32 0x0 DUP8 DUP2 PUSH2 0x2C1F JUMPI PUSH2 0x2C1F PUSH2 0x44F8 JUMP JUMPDEST DIV SWAP7 POP POP POP JUMPDEST POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2C3D DUP6 DUP5 DUP7 DUP5 PUSH2 0x3218 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2CB3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x2C80 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x4265 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CAE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2CC5 PUSH2 0x2DCB JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 GT DUP1 ISZERO SWAP1 PUSH2 0x2CFA JUMPI POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO JUMPDEST PUSH2 0x2D60 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564552464C4F57000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP1 DUP4 AND OR PUSH1 0x5 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH32 0xCF2AA50876CDFBB541206F89AF0EE78D44A2ABF8D328E37FA4917F982149848A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 DUP2 AND PUSH1 0x4 DUP5 ADD MSTORE ADDRESS PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH32 0x0 AND SWAP2 PUSH4 0x56623118 SWAP2 DUP4 SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E9A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EBE SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F42 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F66 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 DUP2 AND PUSH1 0x4 DUP5 ADD MSTORE ADDRESS PUSH1 0x24 DUP5 ADD MSTORE SWAP3 SWAP5 POP PUSH32 0x0 AND SWAP2 PUSH4 0x56623118 SWAP2 DUP4 SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x301F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3033 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3057 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x6 SLOAD SWAP1 SWAP2 SWAP1 DUP1 ISZERO PUSH2 0x317D JUMPI PUSH2 0x30CE DUP6 DUP6 PUSH2 0x3478 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x317D JUMPI PUSH1 0x4 SLOAD PUSH1 0x0 DUP2 PUSH2 0x30E8 DUP5 DUP7 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x30F2 SWAP1 DUP8 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x30FC SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x310A DUP5 DUP5 PUSH2 0x443C JUMP JUMPDEST DUP6 PUSH2 0x3117 DUP6 PUSH2 0x2710 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x3121 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x312B SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3139 DUP3 DUP5 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3178 JUMPI PUSH2 0x316B PUSH32 0x0 DUP3 PUSH2 0x39DC JUMP JUMPDEST PUSH2 0x3175 DUP2 DUP9 PUSH2 0x42C7 JUMP JUMPDEST SWAP7 POP JUMPDEST POP POP POP POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x31BA SWAP1 DUP5 SWAP1 PUSH2 0x4479 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP1 SLOAD DUP3 SWAP1 SUB DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3301 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x32FA SWAP2 SWAP1 PUSH2 0x4117 JUMP JUMPDEST POP POP PUSH2 0x3472 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDA5139CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 DUP7 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP6 SWAP1 PUSH4 0xDA5139CA SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x33B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x33DC SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP8 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x24 DUP5 ADD MSTORE SWAP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x346D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP4 MUL PUSH32 0x0 DUP4 MUL PUSH2 0x34CA DUP3 DUP3 PUSH2 0x3A4C JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND SWAP4 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND SWAP2 PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35C9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x35ED SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x369F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x36B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x36D7 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x4FFE34DB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0x4FFE34DB SWAP1 PUSH1 0x24 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3783 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3797 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37BB SWAP2 SWAP1 PUSH2 0x40A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x4FFE34DB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0x4FFE34DB SWAP1 PUSH1 0x24 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3867 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x387B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x389F SWAP2 SWAP1 PUSH2 0x40A3 JUMP JUMPDEST SWAP1 POP PUSH2 0x38AB DUP3 DUP8 PUSH2 0x3CD1 JUMP JUMPDEST SWAP6 POP PUSH2 0x38B7 DUP2 DUP7 PUSH2 0x3CD1 JUMP JUMPDEST SWAP5 POP PUSH2 0x38C3 DUP3 DUP6 PUSH2 0x3CD1 JUMP JUMPDEST SWAP4 POP PUSH2 0x38CF DUP2 DUP5 PUSH2 0x3CD1 JUMP JUMPDEST SWAP3 POP POP POP SWAP1 SWAP2 SWAP3 SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 ISZERO DUP1 PUSH2 0x38E7 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x38F7 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x39D3 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x3904 DUP6 DUP10 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x390E SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP DUP6 DUP2 GT PUSH2 0x3969 JUMPI PUSH2 0x3924 PUSH2 0x2710 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x392E DUP3 DUP9 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x3958 SWAP1 PUSH32 0x0 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3962 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP2 POP PUSH2 0x39D1 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x3976 DUP8 DUP10 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3980 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH2 0x398F PUSH2 0x2710 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3999 DUP3 DUP11 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x39C3 SWAP1 PUSH32 0x0 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x39CD SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP4 POP POP JUMPDEST POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0x39ED SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x320C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3A59 DUP4 DUP6 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3A65 JUMPI PUSH1 0x0 SWAP2 POP JUMPDEST PUSH1 0x0 DUP2 DUP2 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x3B95 JUMPI PUSH1 0x0 PUSH1 0x4 DUP8 DUP5 DUP11 PUSH2 0x3A85 DUP3 DUP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3A8F SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3A99 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3AA3 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3AAD SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP DUP3 SWAP4 POP DUP1 PUSH1 0x3 PUSH2 0x3ABF SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH2 0x3AED PUSH1 0x64 PUSH32 0x0 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3AF7 SWAP2 SWAP1 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x3B01 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3B0B SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST DUP4 PUSH2 0x3B17 DUP4 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH1 0x64 PUSH2 0x3B43 DUP10 PUSH32 0x0 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3B4D SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3B57 SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST PUSH2 0x3B61 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3B6B SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP3 POP PUSH2 0x3B77 DUP4 DUP6 PUSH2 0x3D31 JUMP JUMPDEST ISZERO PUSH2 0x3B82 JUMPI POP PUSH2 0x3B95 JUMP JUMPDEST POP DUP1 PUSH2 0x3B8D DUP2 PUSH2 0x4490 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3A6A JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3BAD DUP5 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3BB7 DUP5 DUP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3BC1 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH1 0x64 PUSH2 0x3BF0 PUSH32 0x0 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3BFA SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3C04 DUP5 DUP4 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3C0E SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH2 0x3C3E PUSH1 0x64 DUP7 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3C48 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3C52 SWAP1 DUP7 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 SWAP4 POP PUSH1 0x0 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x2133 JUMPI DUP5 SWAP2 POP DUP6 DUP4 PUSH2 0x3C76 DUP5 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3C80 SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST PUSH2 0x3C8A SWAP2 SWAP1 PUSH2 0x4479 JUMP JUMPDEST DUP5 PUSH2 0x3C95 DUP8 DUP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3C9F SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST PUSH2 0x3CA9 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP5 POP PUSH2 0x3CB5 DUP6 DUP4 PUSH2 0x3D31 JUMP JUMPDEST ISZERO PUSH2 0x3CBF JUMPI PUSH2 0x2133 JUMP JUMPDEST DUP1 PUSH2 0x3CC9 DUP2 PUSH2 0x4490 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3C5C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x20 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 EQ ISZERO PUSH2 0x3CF9 JUMPI POP DUP1 PUSH2 0x1024 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH2 0x3D20 SWAP2 AND DUP5 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3D2A SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 GT ISZERO PUSH2 0x3D48 JUMPI POP PUSH1 0x1 DUP2 DUP4 SUB GT ISZERO PUSH2 0x1024 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 SUB GT ISZERO SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3D63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3D63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3D9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3D2A DUP2 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3DBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3DC5 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3DD5 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP2 POP PUSH2 0x3DE3 PUSH1 0x40 DUP6 ADD PUSH2 0x3D53 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3E04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3E0F DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 DUP2 ADD CALLDATALOAD PUSH2 0x3E20 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP5 POP PUSH2 0x3E2E PUSH1 0x40 DUP9 ADD PUSH2 0x3D53 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3E52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3E78 JUMPI PUSH2 0x3E78 PUSH2 0x4556 JUMP JUMPDEST PUSH2 0x3EA8 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x4278 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP11 DUP5 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3EBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP5 DUP5 ADD DUP6 DUP5 ADD CALLDATACOPY PUSH1 0x0 DUP5 DUP3 DUP5 ADD ADD MSTORE POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3EFD DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP2 POP PUSH2 0x3F0B PUSH1 0x20 DUP5 ADD PUSH2 0x3D53 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3F32 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3F5E DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3F6E DUP2 PUSH2 0x4585 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3F8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3F99 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3FA9 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3FD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x3FE0 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x3FF0 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x4014 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x405C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4070 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x407F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x4091 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x40D8 JUMPI PUSH2 0x40D8 PUSH2 0x4556 JUMP JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x40E4 DUP4 PUSH2 0x3D68 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x40F2 PUSH1 0x20 DUP5 ADD PUSH2 0x3D68 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x412A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4161 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x4145 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x4173 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x41F4 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x41C2 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4258 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x421D JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x3D2A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x413B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x42BF JUMPI PUSH2 0x42BF PUSH2 0x4556 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x42DA JUMPI PUSH2 0x42DA PUSH2 0x44C9 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4315 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x317D JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x4359 JUMPI PUSH2 0x4359 PUSH2 0x44C9 JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x4366 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x431F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D2A PUSH1 0xFF DUP5 AND DUP4 PUSH1 0x0 DUP3 PUSH2 0x438C JUMPI POP PUSH1 0x1 PUSH2 0x1024 JUMP JUMPDEST DUP2 PUSH2 0x4399 JUMPI POP PUSH1 0x0 PUSH2 0x1024 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x43AF JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x43B9 JUMPI PUSH2 0x43D5 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x1024 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x43CA JUMPI PUSH2 0x43CA PUSH2 0x44C9 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x1024 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x43F8 JUMPI POP DUP2 DUP2 EXP PUSH2 0x1024 JUMP JUMPDEST PUSH2 0x4402 DUP4 DUP4 PUSH2 0x431A JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x4434 JUMPI PUSH2 0x4434 PUSH2 0x44C9 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x4474 JUMPI PUSH2 0x4474 PUSH2 0x44C9 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x448B JUMPI PUSH2 0x448B PUSH2 0x44C9 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x44C2 JUMPI PUSH2 0x44C2 PUSH2 0x44C9 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x45A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE2 0xBE 0xD7 0xB7 GASPRICE DUP14 OR PUSH12 0x55D9233A65288C602EAB9DB5 0xC2 BLOCKHASH 0xE7 0xB5 GT CALL PUSH15 0x85C948723064736F6C634300080700 CALLER ",
              "sourceMap": "630:18814:40:-:0;;;2406:1067;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1490:13:45;1462:41;;;;1866:4;;;;;;;;;;;-1:-1:-1;1866:4:45;;;;;1900:10;;;;;;;;;;-1:-1:-1;1900:10:45;;;;1709:278;;1737:95;1709:278;;;2846:25:64;1850:22:45;2887:18:64;;;2880:34;1890:21:45;2930:18:64;;;2923:34;2973:18;;;2966:34;;;;1968:4:45;3016:19:64;;;;3009:61;;;;1709:278:45;;;;;;;;;;2818:19:64;;;;1709:278:45;;1686:311;;;;;1513:47;;;;;;2480:15:40;2497;2514:16;2532:9;2556:11;2545:61;;;;;;;;;;;;:::i;:::-;2479:127;;-1:-1:-1;2479:127:40;;-1:-1:-1;2479:127:40;-1:-1:-1;2479:127:40;-1:-1:-1;;2685:21:40;;2677:46;;;;-1:-1:-1;2677:46:40;;3283:2:64;2677:46:40;;;3265:21:64;3322:2;3302:18;;;3295:30;-1:-1:-1;3341:18:64;;;3334:42;3393:18;;2677:46:40;;;;;;;;;-1:-1:-1;2741:18:40;;;;;;;;2733:50;;;;-1:-1:-1;2733:50:40;;3958:2:64;2733:50:40;;;3940:21:64;3997:2;3977:18;;;3970:30;4036:21;4016:18;;;4009:49;4075:18;;2733:50:40;3756:343:64;2733:50:40;1284:5;2801:8;:19;;2793:48;;;;-1:-1:-1;2793:48:40;;4306:2:64;2793:48:40;;;4288:21:64;4345:2;4325:18;;;4318:30;-1:-1:-1;4364:18:64;;;4357:46;4420:18;;2793:48:40;4104:340:64;2793:48:40;2859:6;2851:25;;;;-1:-1:-1;2851:25:40;;3624:2:64;2851:25:40;;;3606:21:64;3663:1;3643:18;;;3636:29;-1:-1:-1;3681:18:64;;;3674:36;3727:18;;2851:25:40;3422:329:64;2851:25:40;-1:-1:-1;;2887:16:40;;;;;;;2913;;;;;;2939:18;;;;2976:41;;;-1:-1:-1;2976:41:40;;;;-1:-1:-1;2976:39:40;;;;;:41;;;;;;;;;;;;;;:39;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2967:6;:50;;;;3054:15;-1:-1:-1;;;;;3038:41:40;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3027:54;;;;;;3116:40;;;;;;;;-1:-1:-1;3116:38:40;;;;;:40;;;;;;;;;;;;;;:38;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;3091:66:40;;;;;;;3167:49;;;;;;;3226:5;;;;3247;3226;3247:1;:5;:::i;:::-;3241:11;;3315:32;;;;;;;;-1:-1:-1;3315:30:40;;;;;:32;;;;;;;;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3304:43;;614:2:45;3304:43:40;:::i;:::-;3290:58;;3298:2;3290:58;:::i;:::-;3262:86;;3411:32;;;;;;;;-1:-1:-1;3411:30:40;;;;;:32;;;;;;;;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3400:43;;614:2:45;3400:43:40;:::i;:::-;3386:58;;3394:2;3386:58;:::i;:::-;3358:86;;-1:-1:-1;;3465:1:40;3454:8;:12;-1:-1:-1;630:18814:40;;-1:-1:-1;;;630:18814:40;14:138:64;93:13;;115:31;93:13;115:31;:::i;:::-;14:138;;;:::o;157:251::-;227:6;280:2;268:9;259:7;255:23;251:32;248:52;;;296:1;293;286:12;248:52;328:9;322:16;347:31;372:5;347:31;:::i;:::-;397:5;157:251;-1:-1:-1;;;157:251:64:o;413:524::-;526:6;534;542;550;603:3;591:9;582:7;578:23;574:33;571:53;;;620:1;617;610:12;571:53;652:9;646:16;671:31;696:5;671:31;:::i;:::-;771:2;756:18;;750:25;721:5;;-1:-1:-1;784:33:64;750:25;784:33;:::i;:::-;883:2;868:18;;862:25;927:2;912:18;;;906:25;413:524;;836:7;;-1:-1:-1;413:524:64;-1:-1:-1;;;413:524:64:o;942:1173::-;1030:6;1038;1091:2;1079:9;1070:7;1066:23;1062:32;1059:52;;;1107:1;1104;1097:12;1059:52;1134:16;;-1:-1:-1;1199:14:64;;;1196:34;;;1226:1;1223;1216:12;1196:34;1264:6;1253:9;1249:22;1239:32;;1309:7;1302:4;1298:2;1294:13;1290:27;1280:55;;1331:1;1328;1321:12;1280:55;1360:2;1354:9;1382:2;1378;1375:10;1372:36;;;1388:18;;:::i;:::-;1463:2;1457:9;1431:2;1517:13;;-1:-1:-1;;1513:22:64;;;1537:2;1509:31;1505:40;1493:53;;;1561:18;;;1581:22;;;1558:46;1555:72;;;1607:18;;:::i;:::-;1647:10;1643:2;1636:22;1682:2;1674:6;1667:18;1704:4;1694:14;;1745:7;1740:2;1735;1731;1727:11;1723:20;1720:33;1717:53;;;1766:1;1763;1756:12;1717:53;1788:1;1779:10;;1798:129;1812:2;1809:1;1806:9;1798:129;;;1900:10;;;1896:19;;1890:26;1869:14;;;1865:23;;1858:59;1823:10;;;;1798:129;;;1945:2;1942:1;1939:9;1936:80;;;2004:1;1999:2;1994;1986:6;1982:15;1978:24;1971:35;1936:80;2035:6;-1:-1:-1;2060:49:64;;-1:-1:-1;;2090:18:64;;;2060:49;:::i;:::-;2050:59;;;;942:1173;;;;;:::o;2120:184::-;2190:6;2243:2;2231:9;2222:7;2218:23;2214:32;2211:52;;;2259:1;2256;2249:12;2211:52;-1:-1:-1;2282:16:64;;2120:184;-1:-1:-1;2120:184:64:o;2309:273::-;2377:6;2430:2;2418:9;2409:7;2405:23;2401:32;2398:52;;;2446:1;2443;2436:12;2398:52;2478:9;2472:16;2528:4;2521:5;2517:16;2510:5;2507:27;2497:55;;2548:1;2545;2538:12;4449:422;4538:1;4581:5;4538:1;4595:270;4616:7;4606:8;4603:21;4595:270;;;4675:4;4671:1;4667:6;4663:17;4657:4;4654:27;4651:53;;;4684:18;;:::i;:::-;4734:7;4724:8;4720:22;4717:55;;;4754:16;;;;4717:55;4833:22;;;;4793:15;;;;4595:270;;;4599:3;4449:422;;;;;:::o;4876:140::-;4934:5;4963:47;5004:4;4994:8;4990:19;4984:4;5070:5;5100:8;5090:80;;-1:-1:-1;5141:1:64;5155:5;;5090:80;5189:4;5179:76;;-1:-1:-1;5226:1:64;5240:5;;5179:76;5271:4;5289:1;5284:59;;;;5357:1;5352:130;;;;5264:218;;5284:59;5314:1;5305:10;;5328:5;;;5352:130;5389:3;5379:8;5376:17;5373:43;;;5396:18;;:::i;:::-;-1:-1:-1;;5452:1:64;5438:16;;5467:5;;5264:218;;5566:2;5556:8;5553:16;5547:3;5541:4;5538:13;5534:36;5528:2;5518:8;5515:16;5510:2;5504:4;5501:12;5497:35;5494:77;5491:159;;;-1:-1:-1;5603:19:64;;;5635:5;;5491:159;5682:34;5707:8;5701:4;5682:34;:::i;:::-;5752:6;5748:1;5744:6;5740:19;5731:7;5728:32;5725:58;;;5763:18;;:::i;:::-;5801:20;;-1:-1:-1;5021:806:64;;;;;:::o;5832:168::-;5872:7;5938:1;5934;5930:6;5926:14;5923:1;5920:21;5915:1;5908:9;5901:17;5897:45;5894:71;;;5945:18;;:::i;:::-;-1:-1:-1;5985:9:64;;5832:168::o;6005:195::-;6043:4;6080;6077:1;6073:12;6112:4;6109:1;6105:12;6137:3;6132;6129:12;6126:38;;;6144:18;;:::i;:::-;6181:13;;;6005:195;-1:-1:-1;;;6005:195:64:o;6205:127::-;6266:10;6261:3;6257:20;6254:1;6247:31;6297:4;6294:1;6287:15;6321:4;6318:1;6311:15;6337:127;6398:10;6393:3;6389:20;6386:1;6379:31;6429:4;6426:1;6419:15;6453:4;6450:1;6443:15;6469:131;-1:-1:-1;6544:31:64;;6534:42;;6524:70;;6590:1;6587;6580:12;6524:70;6469:131;:::o;:::-;630:18814:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@A_7875": {
                  "entryPoint": null,
                  "id": 7875,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@DOMAIN_SEPARATOR_12013": {
                  "entryPoint": 5221,
                  "id": 12013,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@PERMIT_TYPEHASH_11941": {
                  "entryPoint": null,
                  "id": 11941,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_balance_9099": {
                  "entryPoint": 11723,
                  "id": 9099,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@_burn_12278": {
                  "entryPoint": 12677,
                  "id": 12278,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_calculateDomainSeparator_11995": {
                  "entryPoint": null,
                  "id": 11995,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_computeLiquidityFromAdjustedBalances_9388": {
                  "entryPoint": 14924,
                  "id": 9388,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_computeLiquidity_9281": {
                  "entryPoint": 13432,
                  "id": 9281,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_getAmountOut_9204": {
                  "entryPoint": 10941,
                  "id": 9204,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_getReservesAndBalances_9010": {
                  "entryPoint": 13523,
                  "id": 9010,
                  "parameterSlots": 0,
                  "returnSlots": 4
                },
                "@_getReserves_8924": {
                  "entryPoint": 10407,
                  "id": 8924,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@_getY_9486": {
                  "entryPoint": 15263,
                  "id": 9486,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_mintFee_9571": {
                  "entryPoint": 12468,
                  "id": 9571,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@_mint_12250": {
                  "entryPoint": 14812,
                  "id": 12250,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_nonOptimalMintFee_9654": {
                  "entryPoint": 14553,
                  "id": 9654,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "@_processSwap_8890": {
                  "entryPoint": 11313,
                  "id": 8890,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@_transfer_9250": {
                  "entryPoint": 12824,
                  "id": 9250,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_updateReserves_9059": {
                  "entryPoint": 11450,
                  "id": 9059,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@allowance_11929": {
                  "entryPoint": null,
                  "id": 11929,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@approve_12042": {
                  "entryPoint": 4016,
                  "id": 12042,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@balanceOf_11922": {
                  "entryPoint": null,
                  "id": 11922,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@barFeeTo_7869": {
                  "entryPoint": null,
                  "id": 7869,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@barFee_7887": {
                  "entryPoint": null,
                  "id": 7887,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@bento_7864": {
                  "entryPoint": null,
                  "id": 7864,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@burnSingle_8545": {
                  "entryPoint": 8642,
                  "id": 8545,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@burn_8374": {
                  "entryPoint": 4470,
                  "id": 8374,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@decimals_11915": {
                  "entryPoint": null,
                  "id": 11915,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@flashSwap_8845": {
                  "entryPoint": 1665,
                  "id": 8845,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAmountIn_9774": {
                  "entryPoint": 5556,
                  "id": 9774,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAmountOut_9762": {
                  "entryPoint": 7430,
                  "id": 9762,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAssets_9682": {
                  "entryPoint": 6278,
                  "id": 9682,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@getReserves_9789": {
                  "entryPoint": 3996,
                  "id": 9789,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@getVirtualPrice_9824": {
                  "entryPoint": 10332,
                  "id": 9824,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@masterDeployer_7867": {
                  "entryPoint": null,
                  "id": 7867,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@mint_8233": {
                  "entryPoint": 6533,
                  "id": 8233,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@name_11909": {
                  "entryPoint": null,
                  "id": 11909,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@nonces_11946": {
                  "entryPoint": null,
                  "id": 11946,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@permit_12222": {
                  "entryPoint": 9482,
                  "id": 12222,
                  "parameterSlots": 7,
                  "returnSlots": 0
                },
                "@poolIdentifier_7897": {
                  "entryPoint": null,
                  "id": 7897,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@swapFee_7861": {
                  "entryPoint": null,
                  "id": 7861,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@swap_8663": {
                  "entryPoint": 5563,
                  "id": 8663,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@symbol_11912": {
                  "entryPoint": null,
                  "id": 11912,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@toElastic_2928": {
                  "entryPoint": 15569,
                  "id": 2928,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@token0PrecisionMultiplier_7883": {
                  "entryPoint": null,
                  "id": 7883,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@token0_7871": {
                  "entryPoint": null,
                  "id": 7871,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@token1PrecisionMultiplier_7885": {
                  "entryPoint": null,
                  "id": 7885,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@token1_7873": {
                  "entryPoint": null,
                  "id": 7873,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@totalSupply_11917": {
                  "entryPoint": null,
                  "id": 11917,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@transferFrom_12133": {
                  "entryPoint": 4138,
                  "id": 12133,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@transfer_12076": {
                  "entryPoint": 8509,
                  "id": 12076,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@updateBarFee_8856": {
                  "entryPoint": 7267,
                  "id": 8856,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@within1_2851": {
                  "entryPoint": 15665,
                  "id": 2851,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_bool": {
                  "entryPoint": 15699,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 15752,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payable": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_bool": {
                  "entryPoint": 15781,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_boolt_uint256t_bytes_memory_ptr": {
                  "entryPoint": 15852,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_address_payablet_bool": {
                  "entryPoint": 16095,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_address_payablet_uint256": {
                  "entryPoint": 16148,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 16192,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 16249,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32": {
                  "entryPoint": 16314,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 7
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes_calldata_ptr": {
                  "entryPoint": 16433,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_struct$_Rebase_$2859_memory_ptr_fromMemory": {
                  "entryPoint": 16547,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 16638,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_uint256_fromMemory": {
                  "entryPoint": 16663,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_uint128_fromMemory": {
                  "entryPoint": 15720,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_bytes": {
                  "entryPoint": 16699,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_rational_0_by_1__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256_t_bool__to_t_address_t_uint256_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16806,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16896,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16997,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_7e6e8c13ba2f1d0f0273f8e22d59ed43b72e50c3f6c54bb315c74036cac1301c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 17016,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 17095,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 17119,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_exp_helper": {
                  "entryPoint": 17178,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "checked_exp_t_uint256_t_uint8": {
                  "entryPoint": 17267,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_exp_unsigned": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 17468,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 17529,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 17552,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 17609,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": 17656,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 17703,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 17750,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 17797,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:22060:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "60:114:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "70:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "92:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "79:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "79:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "70:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "152:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "161:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "164:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "154:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "154:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "154:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "121:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "142:5:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "135:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "135:13:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "128:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "128:21:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "118:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "118:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "111:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "111:40:64"
                              },
                              "nodeType": "YulIf",
                              "src": "108:60:64"
                            }
                          ]
                        },
                        "name": "abi_decode_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "39:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "50:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:160:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "239:132:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "249:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "264:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "258:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "258:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "249:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "349:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "358:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "361:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "351:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "351:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "351:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "293:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "304:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "311:34:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "300:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "300:46:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "290:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "290:57:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "283:65:64"
                              },
                              "nodeType": "YulIf",
                              "src": "280:85:64"
                            }
                          ]
                        },
                        "name": "abi_decode_uint128_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "218:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "229:5:64",
                            "type": ""
                          }
                        ],
                        "src": "179:192:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "446:177:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "492:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "501:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "504:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "494:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "494:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "494:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "467:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "476:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "463:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "463:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "488:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "459:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "459:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "456:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "517:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "543:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "530:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "530:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "521:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "587:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "562:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "562:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "562:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "602:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "612:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "602:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "412:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "423:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "435:6:64",
                            "type": ""
                          }
                        ],
                        "src": "376:247:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "706:177:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "752:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "761:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "764:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "754:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "754:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "754:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "727:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "736:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "723:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "723:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "748:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "719:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "719:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "716:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "777:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "803:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "790:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "790:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "781:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "847:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "822:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "822:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "822:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "862:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "872:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "862:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payable",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "672:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "683:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "695:6:64",
                            "type": ""
                          }
                        ],
                        "src": "628:255:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1005:355:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1051:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1060:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1063:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1053:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1053:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1053:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1026:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1035:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1022:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1022:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1047:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1018:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1018:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1015:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1076:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1102:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1089:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1089:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1080:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1146:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1121:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1121:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1121:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1161:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1171:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1161:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1185:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1217:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1228:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1213:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1213:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1200:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1200:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1189:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1266:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1241:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1241:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1241:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1283:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1293:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1283:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1309:45:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1339:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1350:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1335:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1335:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "1319:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1319:35:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1309:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "955:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "966:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "978:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "986:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "994:6:64",
                            "type": ""
                          }
                        ],
                        "src": "888:472:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1525:1092:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1572:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1581:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1584:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1574:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1574:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1574:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1546:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1555:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1542:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1542:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1567:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1538:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1538:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1535:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1597:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1623:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1610:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1610:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1601:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1667:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1642:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1642:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1642:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1682:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1692:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1682:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1706:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1716:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1710:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1727:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1759:9:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1770:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1755:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1755:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1742:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1742:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1731:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1808:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1783:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1783:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1783:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1825:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1835:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1825:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1851:45:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1881:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1892:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1877:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1877:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "1861:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1861:35:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1851:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1905:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1932:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1943:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1928:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1928:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1915:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1915:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1905:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1956:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1987:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1998:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1983:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1983:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1970:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1970:33:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1960:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2012:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2022:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2016:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2067:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2076:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2079:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2069:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2069:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2069:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2055:6:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2063:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2052:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2052:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2049:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2092:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2106:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2117:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2102:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2102:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2096:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2172:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2181:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2184:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2174:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2174:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2174:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2151:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2155:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2147:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2147:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2162:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2143:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2143:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2136:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2136:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2133:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2197:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2220:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2207:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2207:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "2201:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2246:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2248:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2248:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2248:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "2238:2:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2242:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2235:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2235:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2232:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2277:125:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "2318:2:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2322:4:64",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2314:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2314:13:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2329:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2310:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2310:86:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2398:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2306:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2306:95:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2290:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2290:112:64"
                              },
                              "variables": [
                                {
                                  "name": "array",
                                  "nodeType": "YulTypedName",
                                  "src": "2281:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "2418:5:64"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "2425:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2411:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2411:17:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2411:17:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2474:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2483:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2486:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2476:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2476:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2476:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2451:2:64"
                                          },
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "2455:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2447:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2447:11:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2460:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2443:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2443:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2465:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2440:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2440:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2437:53:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "2516:5:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2523:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2512:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2512:14:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "2532:2:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2536:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2528:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2528:11:64"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "2541:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "2499:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2499:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2499:45:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array",
                                            "nodeType": "YulIdentifier",
                                            "src": "2568:5:64"
                                          },
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "2575:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2564:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2564:14:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2580:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2560:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2560:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2585:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2553:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2553:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2553:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2596:15:64",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "2606:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2596:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_boolt_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1459:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1470:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1482:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1490:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1498:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1506:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1514:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1365:1252:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2714:231:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2760:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2769:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2772:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2762:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2762:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2762:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2735:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2744:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2731:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2731:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2756:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2727:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2727:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2724:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2785:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2811:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2798:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2798:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2789:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2855:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2830:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2830:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2830:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2870:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2880:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2870:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2894:45:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2924:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2935:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2920:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2920:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "2904:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2904:35:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2894:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2672:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2683:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2695:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2703:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2622:323:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3045:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3091:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3100:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3103:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3093:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3093:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3093:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3066:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3075:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3062:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3062:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3087:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3058:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3058:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3055:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3116:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3142:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3129:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3129:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3120:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3186:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3161:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3161:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3161:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3201:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3211:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3201:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3225:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3252:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3263:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3248:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3248:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3235:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3235:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3225:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3003:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3014:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3026:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3034:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2950:323:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3365:301:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3411:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3420:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3423:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3413:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3413:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3413:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3386:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3395:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3382:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3382:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3407:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3378:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3378:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3375:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3436:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3462:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3449:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3449:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3440:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3506:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3481:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3481:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3481:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3521:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3531:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3521:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3545:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3577:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3588:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3573:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3573:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3560:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3560:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3549:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3626:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3601:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3601:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3601:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3643:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3653:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3643:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3323:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3334:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3346:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3354:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3278:388:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3775:352:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3821:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3830:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3833:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3823:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3823:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3823:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3796:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3805:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3792:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3792:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3817:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3788:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3788:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3785:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3846:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3872:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3859:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3859:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3850:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3916:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3891:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3891:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3891:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3931:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3941:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3931:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3955:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3987:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3998:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3983:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3983:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3970:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3970:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3959:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4036:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4011:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4011:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4011:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4053:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4063:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4053:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4079:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4106:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4117:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4102:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4102:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4089:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4089:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4079:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3725:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3736:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3748:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3756:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3764:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3671:456:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4302:659:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4349:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4358:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4361:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4351:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4351:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4351:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4323:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4332:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4319:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4319:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4344:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4315:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4315:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4312:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4374:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4400:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4387:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4387:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4378:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4444:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4419:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4419:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4419:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4459:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4469:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4459:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4483:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4515:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4526:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4511:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4511:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4498:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4498:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4487:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4564:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4539:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4539:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4539:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4581:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4591:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4581:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4607:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4634:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4645:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4630:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4630:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4617:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4617:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4607:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4658:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4685:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4696:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4681:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4681:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4668:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4668:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4658:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4709:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4741:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4752:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4737:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4737:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4724:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4724:33:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4713:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4809:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4818:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4821:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4811:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4811:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4811:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4779:7:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "4792:7:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4801:4:64",
                                            "type": "",
                                            "value": "0xff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "4788:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4788:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "4776:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4776:31:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4769:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4769:39:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4766:59:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4834:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "4844:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "4834:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4860:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4887:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4898:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4883:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4883:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4870:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4870:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "4860:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4912:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4939:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4950:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4935:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4935:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4922:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4922:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4912:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4220:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4231:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4243:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4251:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4259:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4267:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "4275:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "4283:6:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "4291:6:64",
                            "type": ""
                          }
                        ],
                        "src": "4132:829:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5053:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5099:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5108:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5111:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5101:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5101:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5101:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5074:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5083:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5070:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5070:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5095:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5066:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5066:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5063:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5124:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5150:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5137:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5137:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5128:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5194:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5169:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5169:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5169:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5209:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5219:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5209:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5233:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5260:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5271:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5256:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5256:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5243:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5243:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5233:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5011:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5022:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5034:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5042:6:64",
                            "type": ""
                          }
                        ],
                        "src": "4966:315:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5375:502:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5421:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5430:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5433:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5423:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5423:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5423:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5396:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5405:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5392:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5392:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5417:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5388:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5388:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5385:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5446:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5473:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5460:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5460:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "5450:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5492:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5502:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5496:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5547:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5556:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5559:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5549:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5549:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5549:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5535:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5543:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5532:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5532:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5529:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5572:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5586:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5597:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5582:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5582:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5576:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5652:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5661:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5664:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5654:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5654:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5654:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "5631:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5635:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5627:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5627:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5642:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5623:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5623:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5616:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5616:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5613:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5677:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5704:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5691:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5691:16:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "5681:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5734:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5743:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5746:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5736:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5736:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5736:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5722:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5730:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5719:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5719:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5716:34:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5800:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5809:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5812:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5802:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5802:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5802:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "5773:2:64"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "5777:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5769:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5769:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5786:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5765:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5765:24:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5791:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5762:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5762:37:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5759:57:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5825:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5839:2:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5843:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5835:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5835:11:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5825:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5855:16:64",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "5865:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5855:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5333:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5344:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5356:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5364:6:64",
                            "type": ""
                          }
                        ],
                        "src": "5286:591:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5987:443:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6033:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6042:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6045:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6035:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6035:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6035:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6008:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6017:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6004:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6004:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6029:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6000:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6000:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5997:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6058:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6078:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6072:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6072:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "6062:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6090:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "6112:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6120:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6108:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6108:15:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "6094:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6198:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "6200:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6200:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6200:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6141:10:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6153:18:64",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "6138:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6138:34:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6177:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6189:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "6174:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6174:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "6135:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6135:62:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6132:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6236:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "6240:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6229:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6229:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6229:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "6267:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6305:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint128_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "6275:29:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6275:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6260:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6260:56:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6260:56:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6336:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6344:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6332:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6332:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "6383:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6394:2:64",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6379:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6379:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint128_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "6349:29:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6349:49:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6325:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6325:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6325:74:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6408:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "6418:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6408:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_Rebase_$2859_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5953:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5964:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5976:6:64",
                            "type": ""
                          }
                        ],
                        "src": "5882:548:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6516:103:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6562:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6571:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6574:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6564:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6564:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6564:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6537:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6546:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6533:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6533:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6558:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6529:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6529:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6526:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6587:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6603:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6597:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6597:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6587:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6482:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6493:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6505:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6435:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6722:147:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6768:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6777:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6780:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6770:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6770:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6770:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6743:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6752:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6739:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6739:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6764:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6735:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6735:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6732:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6793:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6809:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6803:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6803:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6793:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6828:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6848:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6859:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6844:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6844:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6838:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6838:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6828:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6680:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6691:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6703:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6711:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6624:245:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6923:481:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6933:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6953:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6947:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6947:12:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6937:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6975:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6980:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6968:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6968:19:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6968:19:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6996:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7005:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "7000:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7067:110:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "7081:14:64",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "7091:4:64",
                                      "type": "",
                                      "value": "0x20"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "7085:2:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7123:3:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7128:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "7119:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7119:11:64"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "7132:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "7115:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7115:20:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "7151:5:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "7158:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7147:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "7147:13:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7162:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "7143:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7143:22:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "7137:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7137:29:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7108:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7108:59:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7108:59:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7026:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7029:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7023:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7023:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "7037:21:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7039:17:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "7048:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7051:4:64",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7044:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7044:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "7039:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "7019:3:64",
                                "statements": []
                              },
                              "src": "7015:162:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7211:62:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7240:3:64"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7245:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "7236:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7236:16:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "7254:4:64",
                                              "type": "",
                                              "value": "0x20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "7232:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7232:27:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7261:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7225:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7225:38:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7225:38:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7192:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7195:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7189:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7189:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7186:87:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7282:116:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7297:3:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "7310:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7318:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "7306:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7306:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7323:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "7302:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7302:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7293:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7293:98:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7393:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7289:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7289:109:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7282:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6900:5:64",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6907:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6915:3:64",
                            "type": ""
                          }
                        ],
                        "src": "6874:530:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7657:196:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "7674:3:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7679:66:64",
                                    "type": "",
                                    "value": "0x1901000000000000000000000000000000000000000000000000000000000000"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7667:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7667:79:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7667:79:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7766:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7771:1:64",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7762:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7762:11:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7775:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7755:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7755:27:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7755:27:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7802:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7807:2:64",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7798:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7798:12:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7812:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7791:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7791:28:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7791:28:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7828:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "7839:3:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7844:2:64",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7835:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7835:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7828:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7625:3:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7630:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7638:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7649:3:64",
                            "type": ""
                          }
                        ],
                        "src": "7409:444:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7959:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7969:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7981:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7992:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7977:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7977:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7969:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8011:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8026:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8034:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8022:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8022:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8004:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8004:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8004:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7928:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7939:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7950:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7858:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8218:198:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8228:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8240:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8251:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8236:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8236:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8228:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8263:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8273:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8267:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8331:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8346:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8354:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8342:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8342:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8324:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8324:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8324:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8378:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8389:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8374:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8374:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8398:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8406:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8394:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8394:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8367:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8367:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8367:43:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8179:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8190:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8198:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8209:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8089:327:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8606:294:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8616:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8628:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8639:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8624:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8624:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8616:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8652:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8662:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8656:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8720:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8735:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8743:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8731:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8731:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8713:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8713:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8713:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8767:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8778:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8763:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8763:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8787:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8795:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8783:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8783:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8756:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8756:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8756:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8819:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8830:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8815:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8815:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8839:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8847:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8835:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8835:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8808:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8808:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8808:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8871:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8882:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8867:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8867:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "8887:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8860:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8860:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8860:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8551:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "8562:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8570:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8578:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8586:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8597:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8421:479:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9126:338:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9136:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9148:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9159:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9144:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9144:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9136:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9172:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9182:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9176:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9240:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "9255:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9263:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9251:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9251:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9233:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9233:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9233:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9287:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9298:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9283:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9283:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9307:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9315:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9303:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9303:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9276:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9276:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9276:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9339:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9350:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9335:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9335:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "9359:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9367:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9355:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9355:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9328:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9328:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9328:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9391:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9402:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9387:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9387:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "9407:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9380:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9380:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9380:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9434:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9445:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9430:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9430:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "9451:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9423:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9423:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9423:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_rational_0_by_1__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9063:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "9074:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9082:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9090:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9098:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9106:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9117:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8905:559:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9620:227:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9630:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9642:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9653:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9638:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9638:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9630:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9672:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "9687:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9695:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9683:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9683:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9665:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9665:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9665:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9759:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9770:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9755:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9755:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9775:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9748:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9748:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9748:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9802:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9813:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9798:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9798:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "9832:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "9825:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9825:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "9818:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9818:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9791:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9791:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9791:50:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256_t_bool__to_t_address_t_uint256_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9573:9:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9584:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9592:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9600:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9611:4:64",
                            "type": ""
                          }
                        ],
                        "src": "9469:378:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10003:530:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10013:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10023:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10017:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10034:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10052:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10063:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10048:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10048:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10038:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10082:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10093:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10075:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10075:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10075:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10105:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "10116:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "10109:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10131:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10151:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10145:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10145:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "10135:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10174:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10182:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10167:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10167:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10167:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10198:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10209:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10220:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10205:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10205:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "10198:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10232:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10250:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10258:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10246:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10246:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "10236:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10270:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10279:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "10274:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10338:169:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "10359:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10374:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "10368:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "10368:13:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "10383:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "10364:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10364:62:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10352:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10352:75:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10352:75:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10440:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "10451:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "10456:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10447:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10447:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "10440:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10472:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "10486:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "10494:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10482:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10482:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10472:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "10300:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10303:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10297:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10297:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "10311:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10313:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "10322:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10325:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10318:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10318:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "10313:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "10293:3:64",
                                "statements": []
                              },
                              "src": "10289:218:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10516:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "10524:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10516:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9972:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9983:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9994:4:64",
                            "type": ""
                          }
                        ],
                        "src": "9852:681:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10747:636:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10757:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10767:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10761:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10778:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10796:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10807:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10792:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10792:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10782:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10826:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10837:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10819:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10819:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10819:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10849:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "10860:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "10853:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10875:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10895:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10889:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10889:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "10879:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10918:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10926:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10911:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10911:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10911:22:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10942:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10952:2:64",
                                "type": "",
                                "value": "64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "10946:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10963:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10974:9:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "10985:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10970:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10970:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "10963:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10997:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11015:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11023:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11011:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11011:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "11001:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11035:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11044:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "11039:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11103:254:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "11117:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "11133:6:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "11127:5:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11127:13:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "11121:2:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "11160:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "11175:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "11169:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "11169:9:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "11180:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "11165:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "11165:58:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "11153:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11153:71:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11153:71:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "11248:3:64"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "11253:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "11244:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "11244:12:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "11268:2:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "11272:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "11264:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "11264:11:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "11258:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "11258:18:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "11237:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11237:40:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11237:40:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11290:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "11301:3:64"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "11306:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11297:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11297:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "11290:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11322:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "11336:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11344:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11332:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11332:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11322:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "11065:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11068:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11062:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11062:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "11076:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11078:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "11087:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11090:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11083:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11083:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "11078:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "11058:3:64",
                                "statements": []
                              },
                              "src": "11054:303:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11366:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "11374:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11366:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10716:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10727:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10738:4:64",
                            "type": ""
                          }
                        ],
                        "src": "10538:845:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11483:92:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11493:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11505:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11516:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11501:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11501:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11493:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11535:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "11560:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "11553:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11553:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "11546:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11546:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11528:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11528:41:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11528:41:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11452:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11463:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11474:4:64",
                            "type": ""
                          }
                        ],
                        "src": "11388:187:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11681:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11691:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11703:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11714:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11699:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11699:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11691:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11733:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11744:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11726:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11726:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11726:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11650:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11661:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11672:4:64",
                            "type": ""
                          }
                        ],
                        "src": "11580:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12003:373:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12013:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12025:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12036:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12021:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12021:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12013:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12056:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12067:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12049:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12049:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12049:25:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12083:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12093:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12087:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12155:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12166:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12151:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12151:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12175:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12183:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12171:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12171:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12144:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12144:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12144:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12207:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12218:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12203:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12203:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "12227:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12235:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12223:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12223:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12196:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12196:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12196:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12259:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12270:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12255:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12255:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "12275:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12248:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12248:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12248:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12302:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12313:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12298:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12298:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "12319:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12291:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12291:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12291:35:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12346:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12357:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12342:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12342:19:64"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "12363:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12335:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12335:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12335:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11932:9:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "11943:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "11951:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "11959:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "11967:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11975:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11983:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11994:4:64",
                            "type": ""
                          }
                        ],
                        "src": "11762:614:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12594:299:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12604:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12616:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12627:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12612:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12612:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12604:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12647:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12658:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12640:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12640:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12640:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12685:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12696:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12681:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12681:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12701:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12674:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12674:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12674:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12728:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12739:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12724:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12724:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "12744:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12717:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12717:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12717:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12771:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12782:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12767:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12767:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "12787:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12760:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12760:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12760:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12814:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12825:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12810:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12810:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "12835:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12843:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12831:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12831:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12803:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12803:84:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12803:84:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12531:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "12542:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "12550:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "12558:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12566:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12574:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12585:4:64",
                            "type": ""
                          }
                        ],
                        "src": "12381:512:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13079:217:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13089:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13101:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13112:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13097:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13097:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13089:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13132:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "13143:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13125:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13125:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13125:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13170:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13181:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13166:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13166:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13190:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13198:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13186:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13186:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13159:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13159:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13159:45:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13224:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13235:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13220:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13220:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "13240:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13213:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13213:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13213:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13267:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13278:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13263:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13263:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "13283:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13256:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13256:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13256:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13024:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "13035:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "13043:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13051:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13059:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13070:4:64",
                            "type": ""
                          }
                        ],
                        "src": "12898:398:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13420:98:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13437:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13448:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13430:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13430:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13430:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13460:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "13485:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13497:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13508:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13493:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13493:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "13468:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13468:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13460:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13389:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13400:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13411:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13301:217:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13649:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13659:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13671:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13682:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13667:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13667:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13659:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13701:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "13716:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13724:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13712:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13712:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13694:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13694:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13694:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13618:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13629:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13640:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13523:251:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13904:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13914:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13926:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13937:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13922:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13922:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13914:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13956:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "13971:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13979:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13967:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13967:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13949:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13949:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13949:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13873:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13884:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13895:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13779:250:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14155:98:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14172:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14183:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14165:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14165:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14165:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14195:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14220:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14232:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14243:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14228:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14228:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "14203:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14203:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14195:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14124:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14135:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14146:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14034:219:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14432:174:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14449:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14460:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14442:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14442:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14442:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14483:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14494:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14479:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14479:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14499:2:64",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14472:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14472:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14472:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14522:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14533:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14518:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14518:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f5045524d49545f5349474e4154555245",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14538:26:64",
                                    "type": "",
                                    "value": "INVALID_PERMIT_SIGNATURE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14511:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14511:54:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14511:54:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14574:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14586:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14597:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14582:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14582:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14574:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14409:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14423:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14258:348:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14785:172:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14802:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14813:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14795:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14795:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14795:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14836:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14847:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14832:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14832:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14852:2:64",
                                    "type": "",
                                    "value": "22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14825:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14825:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14825:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14875:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14886:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14871:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14871:18:64"
                                  },
                                  {
                                    "hexValue": "494e53554646494349454e545f414d4f554e545f494e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14891:24:64",
                                    "type": "",
                                    "value": "INSUFFICIENT_AMOUNT_IN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14864:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14864:52:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14864:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14925:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14937:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14948:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14933:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14933:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14925:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14762:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14776:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14611:346:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15136:169:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15153:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15164:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15146:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15146:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15146:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15187:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15198:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15183:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15183:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15203:2:64",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15176:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15176:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15176:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15226:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15237:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15222:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15222:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f494e5055545f544f4b454e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15242:21:64",
                                    "type": "",
                                    "value": "INVALID_INPUT_TOKEN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15215:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15215:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15215:49:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15273:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15285:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15296:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15281:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15281:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15273:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15113:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15127:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14962:343:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15484:170:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15501:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15512:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15494:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15494:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15494:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15535:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15546:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15531:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15531:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15551:2:64",
                                    "type": "",
                                    "value": "20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15524:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15524:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15524:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15574:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15585:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15570:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15570:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f4f55545055545f544f4b454e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15590:22:64",
                                    "type": "",
                                    "value": "INVALID_OUTPUT_TOKEN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15563:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15563:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15563:50:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15622:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15634:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15645:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15630:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15630:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15622:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15461:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15475:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15310:344:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15833:179:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15850:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15861:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15843:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15843:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15843:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15884:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15895:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15880:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15880:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15900:2:64",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15873:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15873:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15873:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15923:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15934:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15919:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15919:18:64"
                                  },
                                  {
                                    "hexValue": "494e53554646494349454e545f4c49515549444954595f4d494e544544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15939:31:64",
                                    "type": "",
                                    "value": "INSUFFICIENT_LIQUIDITY_MINTED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15912:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15912:59:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15912:59:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15980:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15992:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16003:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15988:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15988:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15980:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15810:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15824:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15659:353:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16191:165:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16208:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16219:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16201:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16201:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16201:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16242:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16253:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16238:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16238:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16258:2:64",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16231:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16231:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16231:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16281:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16292:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16277:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16277:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f414d4f554e5453",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16297:17:64",
                                    "type": "",
                                    "value": "INVALID_AMOUNTS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16270:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16270:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16270:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16324:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16336:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16347:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16332:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16332:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16324:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7e6e8c13ba2f1d0f0273f8e22d59ed43b72e50c3f6c54bb315c74036cac1301c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16168:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16182:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16017:339:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16535:157:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16552:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16563:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16545:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16545:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16545:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16586:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16597:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16582:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16582:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16602:1:64",
                                    "type": "",
                                    "value": "8"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16575:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16575:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16575:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16624:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16635:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16620:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16620:18:64"
                                  },
                                  {
                                    "hexValue": "4f564552464c4f57",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16640:10:64",
                                    "type": "",
                                    "value": "OVERFLOW"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16613:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16613:38:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16613:38:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16660:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16672:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16683:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16668:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16668:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16660:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16512:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16526:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16361:331:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16871:173:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16888:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16899:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16881:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16881:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16881:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16922:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16933:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16918:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16918:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16938:2:64",
                                    "type": "",
                                    "value": "23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16911:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16911:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16911:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16961:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16972:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16957:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16957:18:64"
                                  },
                                  {
                                    "hexValue": "5045524d49545f444541444c494e455f45585049524544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16977:25:64",
                                    "type": "",
                                    "value": "PERMIT_DEADLINE_EXPIRED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16950:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16950:53:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16950:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17012:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17024:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17035:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17020:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17020:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17012:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16848:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16862:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16697:347:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17223:155:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17240:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17251:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17233:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17233:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17233:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17274:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17285:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17270:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17270:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17290:1:64",
                                    "type": "",
                                    "value": "6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17263:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17263:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17263:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17312:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17323:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17308:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17308:18:64"
                                  },
                                  {
                                    "hexValue": "4c4f434b4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17328:8:64",
                                    "type": "",
                                    "value": "LOCKED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17301:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17301:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17301:36:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17346:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17358:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17369:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17354:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17354:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17346:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17200:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17214:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17049:329:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17484:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17494:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17506:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17517:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17502:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17502:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17494:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17536:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "17547:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17529:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17529:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17529:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17453:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17464:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17475:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17383:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17694:119:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17704:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17716:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17727:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17712:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17712:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17704:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17746:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "17757:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17739:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17739:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17739:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17784:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17795:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17780:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17780:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17800:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17773:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17773:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17773:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17655:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17666:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17674:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17685:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17565:248:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17975:162:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17985:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17997:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18008:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17993:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17993:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17985:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18027:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18038:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18020:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18020:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18020:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18065:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18076:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18061:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18061:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18081:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18054:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18054:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18054:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18108:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18119:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18104:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18104:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "18124:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18097:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18097:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18097:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17928:9:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17939:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17947:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17955:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17966:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17818:319:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18239:87:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18249:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18261:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18272:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18257:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18257:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18249:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18291:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "18306:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18314:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18302:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18302:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18284:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18284:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18284:36:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18208:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18219:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18230:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18142:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18376:289:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18386:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18402:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18396:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18396:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "18386:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18414:117:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "18436:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "18452:4:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "18458:2:64",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "18448:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18448:13:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18463:66:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18444:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18444:86:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18432:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18432:99:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "18418:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18606:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "18608:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18608:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18608:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "18549:10:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18561:18:64",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "18546:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18546:34:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "18585:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "18597:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "18582:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18582:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "18543:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18543:62:64"
                              },
                              "nodeType": "YulIf",
                              "src": "18540:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18644:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "18648:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18637:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18637:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18637:22:64"
                            }
                          ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "18356:4:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "18365:6:64",
                            "type": ""
                          }
                        ],
                        "src": "18331:334:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18718:80:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18745:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "18747:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18747:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18747:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18734:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "18741:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "18737:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18737:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "18731:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18731:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "18728:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18776:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18787:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18790:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18783:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18783:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "18776:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "18701:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "18704:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "18710:3:64",
                            "type": ""
                          }
                        ],
                        "src": "18670:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18849:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18880:168:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18901:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18904:77:64",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "18894:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18894:88:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18894:88:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19002:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19005:4:64",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "18995:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18995:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18995:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19030:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19033:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "19023:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19023:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19023:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18869:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "18862:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18862:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "18859:189:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19057:14:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "19066:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "19069:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "19062:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19062:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "19057:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "18834:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "18837:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "18843:1:64",
                            "type": ""
                          }
                        ],
                        "src": "18803:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19146:418:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19156:16:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "19171:1:64",
                                "type": "",
                                "value": "1"
                              },
                              "variables": [
                                {
                                  "name": "power_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19160:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19181:16:64",
                              "value": {
                                "name": "power_1",
                                "nodeType": "YulIdentifier",
                                "src": "19190:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "19181:5:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19206:13:64",
                              "value": {
                                "name": "_base",
                                "nodeType": "YulIdentifier",
                                "src": "19214:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "base",
                                  "nodeType": "YulIdentifier",
                                  "src": "19206:4:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19270:288:64",
                                "statements": [
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "19375:22:64",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "panic_error_0x11",
                                              "nodeType": "YulIdentifier",
                                              "src": "19377:16:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "19377:18:64"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "19377:18:64"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "19290:4:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "19300:66:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                            },
                                            {
                                              "name": "base",
                                              "nodeType": "YulIdentifier",
                                              "src": "19368:4:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "19296:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "19296:77:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "19287:2:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19287:87:64"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "19284:113:64"
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "19436:29:64",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "19438:25:64",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "power",
                                                "nodeType": "YulIdentifier",
                                                "src": "19451:5:64"
                                              },
                                              {
                                                "name": "base",
                                                "nodeType": "YulIdentifier",
                                                "src": "19458:4:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "19447:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "19447:16:64"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "power",
                                              "nodeType": "YulIdentifier",
                                              "src": "19438:5:64"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "19417:8:64"
                                        },
                                        {
                                          "name": "power_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "19427:7:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "19413:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19413:22:64"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "19410:55:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "19478:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "19490:4:64"
                                        },
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "19496:4:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nodeType": "YulIdentifier",
                                        "src": "19486:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19486:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "base",
                                        "nodeType": "YulIdentifier",
                                        "src": "19478:4:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "19514:34:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "power_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "19530:7:64"
                                        },
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "19539:8:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shr",
                                        "nodeType": "YulIdentifier",
                                        "src": "19526:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19526:22:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "exponent",
                                        "nodeType": "YulIdentifier",
                                        "src": "19514:8:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "19239:8:64"
                                  },
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19249:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19236:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19236:21:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "19258:3:64",
                                "statements": []
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "19232:3:64",
                                "statements": []
                              },
                              "src": "19228:330:64"
                            }
                          ]
                        },
                        "name": "checked_exp_helper",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "_base",
                            "nodeType": "YulTypedName",
                            "src": "19110:5:64",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "19117:8:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "19130:5:64",
                            "type": ""
                          },
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "19137:4:64",
                            "type": ""
                          }
                        ],
                        "src": "19082:482:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19637:72:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19647:56:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "19677:4:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "exponent",
                                        "nodeType": "YulIdentifier",
                                        "src": "19687:8:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19697:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19683:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19683:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "checked_exp_unsigned",
                                  "nodeType": "YulIdentifier",
                                  "src": "19656:20:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19656:47:64"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "19647:5:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_exp_t_uint256_t_uint8",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "19608:4:64",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "19614:8:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "19627:5:64",
                            "type": ""
                          }
                        ],
                        "src": "19569:140:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19773:807:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19811:52:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "19825:10:64",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "19834:1:64",
                                      "type": "",
                                      "value": "1"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "19825:5:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "19848:5:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "19793:8:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "19786:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19786:16:64"
                              },
                              "nodeType": "YulIf",
                              "src": "19783:80:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19896:52:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "19910:10:64",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "19919:1:64",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "19910:5:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "19933:5:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "19882:4:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "19875:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19875:12:64"
                              },
                              "nodeType": "YulIf",
                              "src": "19872:76:64"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "19984:52:64",
                                    "statements": [
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "19998:10:64",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20007:1:64",
                                          "type": "",
                                          "value": "1"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "19998:5:64"
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulLeave",
                                        "src": "20021:5:64"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "19977:59:64",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19982:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "20052:123:64",
                                    "statements": [
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "20087:22:64",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "panic_error_0x11",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "20089:16:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "20089:18:64"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "20089:18:64"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "exponent",
                                              "nodeType": "YulIdentifier",
                                              "src": "20072:8:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "20082:3:64",
                                              "type": "",
                                              "value": "255"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "20069:2:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "20069:17:64"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "20066:43:64"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "20122:25:64",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "exponent",
                                              "nodeType": "YulIdentifier",
                                              "src": "20135:8:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "20145:1:64",
                                              "type": "",
                                              "value": "1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "20131:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "20131:16:64"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "20122:5:64"
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulLeave",
                                        "src": "20160:5:64"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "20045:130:64",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20050:1:64",
                                    "type": "",
                                    "value": "2"
                                  }
                                }
                              ],
                              "expression": {
                                "name": "base",
                                "nodeType": "YulIdentifier",
                                "src": "19964:4:64"
                              },
                              "nodeType": "YulSwitch",
                              "src": "19957:218:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20273:70:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "20287:28:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "20300:4:64"
                                        },
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "20306:8:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "exp",
                                        "nodeType": "YulIdentifier",
                                        "src": "20296:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20296:19:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "20287:5:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "20328:5:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "base",
                                            "nodeType": "YulIdentifier",
                                            "src": "20197:4:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "20203:2:64",
                                            "type": "",
                                            "value": "11"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "20194:2:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20194:12:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "exponent",
                                            "nodeType": "YulIdentifier",
                                            "src": "20211:8:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "20221:2:64",
                                            "type": "",
                                            "value": "78"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "20208:2:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20208:16:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20190:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20190:35:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "base",
                                            "nodeType": "YulIdentifier",
                                            "src": "20234:4:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "20240:3:64",
                                            "type": "",
                                            "value": "307"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "20231:2:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20231:13:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "exponent",
                                            "nodeType": "YulIdentifier",
                                            "src": "20249:8:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "20259:2:64",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "20246:2:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20246:16:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20227:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20227:36:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "20187:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20187:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "20184:159:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20352:57:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "20394:4:64"
                                  },
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "20400:8:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "checked_exp_helper",
                                  "nodeType": "YulIdentifier",
                                  "src": "20375:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20375:34:64"
                              },
                              "variables": [
                                {
                                  "name": "power_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20356:7:64",
                                  "type": ""
                                },
                                {
                                  "name": "base_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20365:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20514:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "20516:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20516:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20516:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20424:7:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20437:66:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                      },
                                      {
                                        "name": "base_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20505:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "div",
                                      "nodeType": "YulIdentifier",
                                      "src": "20433:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20433:79:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20421:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20421:92:64"
                              },
                              "nodeType": "YulIf",
                              "src": "20418:118:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20545:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20558:7:64"
                                  },
                                  {
                                    "name": "base_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20567:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "20554:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20554:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "20545:5:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_exp_unsigned",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "19744:4:64",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "19750:8:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "19763:5:64",
                            "type": ""
                          }
                        ],
                        "src": "19714:866:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20637:176:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20756:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "20758:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20758:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20758:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "20668:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "20661:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20661:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "20654:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20654:17:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "20676:1:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "20683:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "20751:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "20679:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20679:74:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "20673:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20673:81:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "20650:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20650:105:64"
                              },
                              "nodeType": "YulIf",
                              "src": "20647:131:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20787:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "20802:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "20805:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "20798:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20798:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "20787:7:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "20616:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "20619:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "20625:7:64",
                            "type": ""
                          }
                        ],
                        "src": "20585:228:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20867:76:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20889:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "20891:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20891:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20891:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "20883:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "20886:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20880:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20880:8:64"
                              },
                              "nodeType": "YulIf",
                              "src": "20877:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20920:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "20932:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "20935:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "20928:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20928:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "20920:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "20849:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "20852:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "20858:4:64",
                            "type": ""
                          }
                        ],
                        "src": "20818:125:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20995:148:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21086:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "21088:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21088:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21088:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "21011:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21018:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "21008:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21008:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "21005:103:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21117:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "21128:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21135:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21124:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21124:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "21117:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "20977:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "20987:3:64",
                            "type": ""
                          }
                        ],
                        "src": "20948:195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21180:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21197:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21200:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21190:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21190:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21190:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21294:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21297:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21287:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21287:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21287:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21318:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21321:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "21311:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21311:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21311:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "21148:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21369:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21386:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21389:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21379:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21379:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21379:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21483:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21486:4:64",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21476:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21476:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21476:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21507:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21510:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "21500:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21500:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21500:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "21337:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21558:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21575:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21578:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21568:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21568:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21568:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21672:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21675:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21665:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21665:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21665:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21696:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21699:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "21689:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21689:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21689:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "21526:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21747:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21764:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21767:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21757:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21757:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21757:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21861:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21864:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21854:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21854:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21854:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21885:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21888:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "21878:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21878:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21878:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "21715:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21949:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22036:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22045:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22048:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22038:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22038:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22038:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "21972:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "21983:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "21990:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "21979:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21979:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "21969:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21969:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "21962:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21962:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "21959:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "21938:5:64",
                            "type": ""
                          }
                        ],
                        "src": "21904:154:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_bool(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_uint128_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payable(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_bool(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := abi_decode_bool(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_boolt_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let _1 := 32\n        let value_1 := calldataload(add(headStart, _1))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := abi_decode_bool(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        let _2 := 0xffffffffffffffff\n        if gt(offset, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := calldataload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let array := allocate_memory(add(and(add(_4, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), _1))\n        mstore(array, _4)\n        if gt(add(add(_3, _4), _1), dataEnd) { revert(0, 0) }\n        calldatacopy(add(array, _1), add(_3, _1), _4)\n        mstore(add(add(array, _4), _1), 0)\n        value4 := array\n    }\n    function abi_decode_tuple_t_address_payablet_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := abi_decode_bool(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_address_payablet_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let value_2 := calldataload(add(headStart, 128))\n        if iszero(eq(value_2, and(value_2, 0xff))) { revert(0, 0) }\n        value4 := value_2\n        value5 := calldataload(add(headStart, 160))\n        value6 := calldataload(add(headStart, 192))\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_tuple_t_struct$_Rebase_$2859_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 64)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, abi_decode_uint128_fromMemory(headStart))\n        mstore(add(memPtr, 32), abi_decode_uint128_fromMemory(add(headStart, 32)))\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            let _1 := 0x20\n            mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(pos, length), 0x20), 0)\n        }\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, 0x1901000000000000000000000000000000000000000000000000000000000000)\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_rational_0_by_1__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_bool__to_t_address_t_uint256_t_bool__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), iszero(iszero(value2)))\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        let _2 := 64\n        pos := add(headStart, _2)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _3 := mload(srcPtr)\n            mstore(pos, and(mload(_3), 0xffffffffffffffffffffffffffffffffffffffff))\n            mstore(add(pos, _1), mload(add(_3, _1)))\n            pos := add(pos, _2)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, value0)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"INVALID_PERMIT_SIGNATURE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"INSUFFICIENT_AMOUNT_IN\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"INVALID_INPUT_TOKEN\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"INVALID_OUTPUT_TOKEN\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"INSUFFICIENT_LIQUIDITY_MINTED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_7e6e8c13ba2f1d0f0273f8e22d59ed43b72e50c3f6c54bb315c74036cac1301c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"INVALID_AMOUNTS\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 8)\n        mstore(add(headStart, 64), \"OVERFLOW\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"PERMIT_DEADLINE_EXPIRED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 6)\n        mstore(add(headStart, 64), \"LOCKED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_exp_helper(_base, exponent) -> power, base\n    {\n        let power_1 := 1\n        power := power_1\n        base := _base\n        for { } gt(exponent, power_1) { }\n        {\n            if gt(base, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base)) { panic_error_0x11() }\n            if and(exponent, power_1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(power_1, exponent)\n        }\n    }\n    function checked_exp_t_uint256_t_uint8(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, and(exponent, 0xff))\n    }\n    function checked_exp_unsigned(base, exponent) -> power\n    {\n        if iszero(exponent)\n        {\n            power := 1\n            leave\n        }\n        if iszero(base)\n        {\n            power := 0\n            leave\n        }\n        switch base\n        case 1 {\n            power := 1\n            leave\n        }\n        case 2 {\n            if gt(exponent, 255) { panic_error_0x11() }\n            power := shl(exponent, 1)\n            leave\n        }\n        if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n        {\n            power := exp(base, exponent)\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent)\n        if gt(power_1, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "7861": [
                  {
                    "length": 32,
                    "start": 1107
                  },
                  {
                    "length": 32,
                    "start": 11018
                  },
                  {
                    "length": 32,
                    "start": 14644
                  },
                  {
                    "length": 32,
                    "start": 14751
                  }
                ],
                "7864": [
                  {
                    "length": 32,
                    "start": 1029
                  },
                  {
                    "length": 32,
                    "start": 2064
                  },
                  {
                    "length": 32,
                    "start": 2361
                  },
                  {
                    "length": 32,
                    "start": 3116
                  },
                  {
                    "length": 32,
                    "start": 3413
                  },
                  {
                    "length": 32,
                    "start": 7550
                  },
                  {
                    "length": 32,
                    "start": 7762
                  },
                  {
                    "length": 32,
                    "start": 8224
                  },
                  {
                    "length": 32,
                    "start": 10568
                  },
                  {
                    "length": 32,
                    "start": 10810
                  },
                  {
                    "length": 32,
                    "start": 11836
                  },
                  {
                    "length": 32,
                    "start": 12245
                  },
                  {
                    "length": 32,
                    "start": 12927
                  },
                  {
                    "length": 32,
                    "start": 13140
                  },
                  {
                    "length": 32,
                    "start": 13681
                  },
                  {
                    "length": 32,
                    "start": 13915
                  },
                  {
                    "length": 32,
                    "start": 14146
                  },
                  {
                    "length": 32,
                    "start": 14374
                  }
                ],
                "7867": [
                  {
                    "length": 32,
                    "start": 1483
                  },
                  {
                    "length": 32,
                    "start": 7269
                  }
                ],
                "7869": [
                  {
                    "length": 32,
                    "start": 762
                  },
                  {
                    "length": 32,
                    "start": 12614
                  }
                ],
                "7871": [
                  {
                    "length": 32,
                    "start": 838
                  },
                  {
                    "length": 32,
                    "start": 1832
                  },
                  {
                    "length": 32,
                    "start": 1976
                  },
                  {
                    "length": 32,
                    "start": 2290
                  },
                  {
                    "length": 32,
                    "start": 3082
                  },
                  {
                    "length": 32,
                    "start": 3262
                  },
                  {
                    "length": 32,
                    "start": 4715
                  },
                  {
                    "length": 32,
                    "start": 4882
                  },
                  {
                    "length": 32,
                    "start": 5727
                  },
                  {
                    "length": 32,
                    "start": 6055
                  },
                  {
                    "length": 32,
                    "start": 6312
                  },
                  {
                    "length": 32,
                    "start": 7678
                  },
                  {
                    "length": 32,
                    "start": 8284
                  },
                  {
                    "length": 32,
                    "start": 9089
                  },
                  {
                    "length": 32,
                    "start": 9316
                  },
                  {
                    "length": 32,
                    "start": 10471
                  },
                  {
                    "length": 32,
                    "start": 11784
                  },
                  {
                    "length": 32,
                    "start": 13587
                  },
                  {
                    "length": 32,
                    "start": 14100
                  }
                ],
                "7873": [
                  {
                    "length": 32,
                    "start": 1522
                  },
                  {
                    "length": 32,
                    "start": 2030
                  },
                  {
                    "length": 32,
                    "start": 2210
                  },
                  {
                    "length": 32,
                    "start": 2787
                  },
                  {
                    "length": 32,
                    "start": 3028
                  },
                  {
                    "length": 32,
                    "start": 3342
                  },
                  {
                    "length": 32,
                    "start": 4759
                  },
                  {
                    "length": 32,
                    "start": 4987
                  },
                  {
                    "length": 32,
                    "start": 5816
                  },
                  {
                    "length": 32,
                    "start": 5869
                  },
                  {
                    "length": 32,
                    "start": 6422
                  },
                  {
                    "length": 32,
                    "start": 7822
                  },
                  {
                    "length": 32,
                    "start": 8043
                  },
                  {
                    "length": 32,
                    "start": 8906
                  },
                  {
                    "length": 32,
                    "start": 9036
                  },
                  {
                    "length": 32,
                    "start": 10753
                  },
                  {
                    "length": 32,
                    "start": 12195
                  },
                  {
                    "length": 32,
                    "start": 13866
                  },
                  {
                    "length": 32,
                    "start": 14328
                  }
                ],
                "7875": [
                  {
                    "length": 32,
                    "start": 1631
                  }
                ],
                "7877": [
                  {
                    "length": 32,
                    "start": 15049
                  },
                  {
                    "length": 32,
                    "start": 15135
                  },
                  {
                    "length": 32,
                    "start": 15306
                  },
                  {
                    "length": 32,
                    "start": 15380
                  }
                ],
                "7883": [
                  {
                    "length": 32,
                    "start": 1435
                  },
                  {
                    "length": 32,
                    "start": 10945
                  },
                  {
                    "length": 32,
                    "start": 11075
                  },
                  {
                    "length": 32,
                    "start": 11250
                  },
                  {
                    "length": 32,
                    "start": 13436
                  }
                ],
                "7885": [
                  {
                    "length": 32,
                    "start": 1068
                  },
                  {
                    "length": 32,
                    "start": 10980
                  },
                  {
                    "length": 32,
                    "start": 11134
                  },
                  {
                    "length": 32,
                    "start": 11191
                  },
                  {
                    "length": 32,
                    "start": 13471
                  }
                ],
                "11932": [
                  {
                    "length": 32,
                    "start": 5225
                  }
                ],
                "11935": [
                  {
                    "length": 32,
                    "start": 5522
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106102415760003560e01c806367e4ac2c11610145578063af8c09bf116100bd578063d21220a71161008c578063dd62ed3e11610071578063dd62ed3e14610627578063e25aa5fa14610652578063f446c1d01461065a57600080fd5b8063d21220a7146105ed578063d505accf1461061457600080fd5b8063af8c09bf14610583578063baa8c7cb14610596578063c14ad802146105bd578063cf58879a146105c657600080fd5b806392bc321911610114578063a69840a8116100f9578063a69840a814610536578063a8f1f52e1461055d578063a9059cbb1461057057600080fd5b806392bc3219146104f057806395d89b41146104fa57600080fd5b806367e4ac2c1461048857806370a082311461049d5780637ba0e2e7146104bd5780637ecebe00146104d057600080fd5b80632a07b6c7116101d8578063499a3c50116101a75780634e25dc471161018c5780634e25dc471461042757806354cf2aeb1461044e578063627dd56a1461047557600080fd5b8063499a3c50146103ed5780634da318271461040057600080fd5b80632a07b6c71461038457806330adf81f146103a4578063313ce567146103cb5780633644e515146103e557600080fd5b80630c0a0cd2116102145780630c0a0cd2146102f55780630dfe16811461034157806318160ddd1461036857806323b872dd1461037157600080fd5b8063053da1c81461024657806306fdde031461026c5780630902f1ac146102b5578063095ea7b3146102d2575b600080fd5b610259610254366004614031565b610681565b6040519081526020015b60405180910390f35b6102a86040518060400160405280600e81526020017f5375736869204c5020546f6b656e00000000000000000000000000000000000081525081565b6040516102639190614265565b6102bd610f9c565b60408051928352602083019190915201610263565b6102e56102e0366004613f14565b610fb0565b6040519015158152602001610263565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610263565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b61025960005481565b6102e561037f366004613f79565b61102a565b610397610392366004614031565b611176565b6040516102639190614200565b6102597f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103d3601281565b60405160ff9091168152602001610263565b610259611465565b6102596103fb366004614031565b6115b4565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b610259610483366004614031565b6115bb565b610490611886565b60405161026391906141a6565b6102596104ab366004613d88565b60016020526000908152604090205481565b6102596104cb366004614031565b611985565b6102596104de366004613d88565b60036020526000908152604090205481565b6104f8611c63565b005b6102a86040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b6102597f54726964656e743a487962726964506f6f6c000000000000000000000000000081565b61025961056b366004614031565b611d06565b6102e561057e366004613f14565b61213d565b610259610591366004614031565b6121c2565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b61025960045481565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b6104f8610622366004613fba565b61250a565b610259610635366004613f40565b600260209081526000928352604080842090915290825290205481565b61025961285c565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b60006007546001146106f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600260075560008080808061070b87890189613dec565b945094509450945094506000806107206128a7565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610ae157506040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052600060448301527f0000000000000000000000000000000000000000000000000000000000000000917f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b15801561085457600080fd5b505afa158015610868573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088c91906140fe565b945061089b8584846001612abd565b98506108ca7f0000000000000000000000000000000000000000000000000000000000000000888b878a612c31565b6040517ff7888aec0000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff81811660048401523060248401526000927f00000000000000000000000000000000000000000000000000000000000000009190911691635662311891839063f7888aec9060440160206040518083038186803b15801561098657600080fd5b505afa15801561099a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109be91906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b158015610a2e57600080fd5b505afa158015610a42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6691906140fe565b905085610a738583614479565b1015610adb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e0000000000000000000060448201526064016106eb565b50610ef9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610b96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106eb565b506040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052600060448301527f0000000000000000000000000000000000000000000000000000000000000000917f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b158015610c7057600080fd5b505afa158015610c84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca891906140fe565b9450610cb78584846000612abd565b9850610ce67f0000000000000000000000000000000000000000000000000000000000000000888b878a612c31565b6040517ff7888aec0000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff81811660048401523060248401526000927f00000000000000000000000000000000000000000000000000000000000000009190911691635662311891839063f7888aec9060440160206040518083038186803b158015610da257600080fd5b505afa158015610db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dda91906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b158015610e4a57600080fd5b505afa158015610e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8291906140fe565b905085610e8f8483614479565b1015610ef7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e0000000000000000000060448201526064016106eb565b505b610f01612cba565b8073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062888d604051610f80929190918252602082015260400190565b60405180910390a4505060016007555094979650505050505050565b600080610fa76128a7565b90939092509050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906110189086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146110c75773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152812080548492906110c1908490614479565b90915550505b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020526040812080548492906110fc908490614479565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260016020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111649086815260200190565b60405180910390a35060019392505050565b60606007546001146111e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106eb565b60026007556000806111f884860186613edf565b91509150600080611207612dcb565b3060009081526001602052604081205492945090925061122784846130b4565b509050600081611237868561443c565b61124191906142df565b9050600082611250868661443c565b61125a91906142df565b90506112663085613185565b6112927f0000000000000000000000000000000000000000000000000000000000000000838a8a613218565b6112be7f0000000000000000000000000000000000000000000000000000000000000000828a8a613218565b6112c6612cba565b6040805160028082526060820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816112dc57905050985060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001838152508960008151811061136357611363614527565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200182815250896001815181106113cc576113cc614527565b60209081029190910101526113f36113e48388614479565b6113ee8388614479565b613478565b600655604080518381526020810183905290810185905273ffffffffffffffffffffffffffffffffffffffff89169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a3505060016007555094979650505050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461158f5750604080518082018252600e81527f5375736869204c5020546f6b656e00000000000000000000000000000000000060209182015281518083018352600181527f31000000000000000000000000000000000000000000000000000000000000009082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000806000fd5b6000600754600114611629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106eb565b60026007556000808061163e85870187613da5565b9250925092506000806000806116526134d3565b93509350935093506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614156116eb5750508382037f00000000000000000000000000000000000000000000000000000000000000006116e48287876001612abd565b99506117d6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146117a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106eb565b50508281037f00000000000000000000000000000000000000000000000000000000000000006117d38287876000612abd565b99505b6117e2818b8a8a613218565b6117ea612cba565b8073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062858e604051611869929190918252602082015260400190565b60405180910390a450506001600755509598975050505050505050565b60408051600280825260608083018452926020830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106118da576118da614527565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061194857611948614527565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b60006007546001146119f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106eb565b60026007556000611a0683850185613d88565b9050600080611a136128a7565b91509150600080611a22612dcb565b915091506000611a328383613478565b90506000611a408685614479565b90506000611a4e8685614479565b9050600080611a5f84848b8b6138d9565b9092509050611a7e6dffffffffffffffffffffffffffff83168a6142c7565b9850611a9a6dffffffffffffffffffffffffffff8216896142c7565b9750600080611aa98b8b6130b4565b915091508160001415611b4c57600086118015611ac65750600085115b611b2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f414d4f554e5453000000000000000000000000000000000060448201526064016106eb565b611b386103e888614479565b9c50611b4760006103e86139dc565b611b6f565b8082611b58828a614479565b611b62919061443c565b611b6c91906142df565b9c505b8c611bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e54454400000060448201526064016106eb565b611be08c8e6139dc565b611be8612cba565b600687905560408051878152602081018790529081018e90528d9073ffffffffffffffffffffffffffffffffffffffff8e169033907ff9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e9060600160405180910390a35050600160075550999c9b505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b158015611cc957600080fd5b505afa158015611cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0191906140fe565b600455565b60008080611d1684860186613f14565b91509150600080611d256128a7565b6040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015260248201879052600060448301529294509092507f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b158015611dc257600080fd5b505afa158015611dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfa91906140fe565b92507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611f69577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663da5139ca7f0000000000000000000000000000000000000000000000000000000000000000611eba8686866001612abd565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b158015611f2a57600080fd5b505afa158015611f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6291906140fe565b9450612133565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461201e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106eb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663da5139ca7f00000000000000000000000000000000000000000000000000000000000000006120888686866000612abd565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b1580156120f857600080fd5b505afa15801561210c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213091906140fe565b94505b5050505092915050565b3360009081526001602052604081208054839190839061215e908490614479565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110189086815260200190565b6000600754600114612230576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106eb565b60026007556000808061224585870187613da5565b925092509250600080612256612dcb565b3060009081526001602052604081205492945090925061227684846130b4565b509050600081612286868561443c565b61229091906142df565b905060008261229f868661443c565b6122a991906142df565b90506122b53085613185565b6122c26113e48388614479565b6006819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141561237f5761233b8261232a8189614479565b6123348489614479565b6001612abd565b61234590826142c7565b90506123737f0000000000000000000000000000000000000000000000000000000000000000828a8a613218565b80995060009150612492565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614612434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e00000000000000000000000060448201526064016106eb565b612453816124428489614479565b61244c8489614479565b6000612abd565b61245d90836142c7565b915061248b7f0000000000000000000000000000000000000000000000000000000000000000838a8a613218565b5097508760005b61249a612cba565b604080518381526020810183905290810185905273ffffffffffffffffffffffffffffffffffffffff89169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a350506001600755509598975050505050505050565b42841015612574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016106eb565b600061257e611465565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c929091906125d983614490565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161267a9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612703573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061277e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6127e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e4154555245000000000000000060448201526064016106eb565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b60008060006128696128a7565b9150915060006128798383613478565b60005490915061288b6012600a614373565b612895908361443c565b61289f91906142df565b935050505090565b6005546040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526fffffffffffffffffffffffffffffffff808416602484018190526000604485015293700100000000000000000000000000000000900416917f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b15801561298c57600080fd5b505afa1580156129a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c491906140fe565b6040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201849052600060448301529193507f0000000000000000000000000000000000000000000000000000000000000000909116906356623118906064015b60206040518083038186803b158015612a7f57600080fd5b505afa158015612a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab791906140fe565b90509091565b60007f000000000000000000000000000000000000000000000000000000000000000084027f000000000000000000000000000000000000000000000000000000000000000084026127107f0000000000000000000000000000000000000000000000000000000000000000880204870383612b398484613a4c565b90508515612bb5577f0000000000000000000000000000000000000000000000000000000000000000820284016000612b728284613b9f565b905060018186030396507f00000000000000000000000000000000000000000000000000000000000000008781612bab57612bab6144f8565b0496505050612c25565b7f0000000000000000000000000000000000000000000000000000000000000000820283016000612be68284613b9f565b905060018187030396507f00000000000000000000000000000000000000000000000000000000000000008781612c1f57612c1f6144f8565b04965050505b50505050949350505050565b612c3d85848684613218565b815115612cb3576040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b190612c80908590600401614265565b600060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b505050505b5050505050565b600080612cc5612dcb565b90925090506fffffffffffffffffffffffffffffffff8211801590612cfa57506fffffffffffffffffffffffffffffffff8111155b612d60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4f564552464c4f5700000000000000000000000000000000000000000000000060448201526064016106eb565b6fffffffffffffffffffffffffffffffff818116700100000000000000000000000000000000029083161760055560408051838152602081018390527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a15050565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000818116600484015230602484015260009283927f00000000000000000000000000000000000000000000000000000000000000001691635662311891839063f7888aec9060440160206040518083038186803b158015612e8657600080fd5b505afa158015612e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebe91906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b158015612f2e57600080fd5b505afa158015612f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6691906140fe565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081811660048401523060248401529294507f00000000000000000000000000000000000000000000000000000000000000001691635662311891839063f7888aec9060440160206040518083038186803b15801561301f57600080fd5b505afa158015613033573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305791906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260006044820152606401612a67565b60008054600654909190801561317d576130ce8585613478565b91508082111561317d576004546000816130e88486614479565b6130f2908761443c565b6130fc919061443c565b9050600061310a848461443c565b8561311785612710614479565b613121919061443c565b61312b91906142c7565b9050600061313982846142df565b905080156131785761316b7f0000000000000000000000000000000000000000000000000000000000000000826139dc565b61317581886142c7565b96505b505050505b509250929050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812080548392906131ba908490614479565b909155505060008054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b8015613301576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152306024830152838116604483015260648201859052600060848301527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b1580156132c257600080fd5b505af11580156132d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132fa9190614117565b5050613472565b6040517fda5139ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052600060448301527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90869030908690859063da5139ca9060640160206040518083038186803b1580156133a457600080fd5b505afa1580156133b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133dc91906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff94851660048201529284166024840152921660448201526064810191909152608401600060405180830381600087803b15801561345957600080fd5b505af115801561346d573d6000803e3d6000fd5b505050505b50505050565b60007f000000000000000000000000000000000000000000000000000000000000000083027f000000000000000000000000000000000000000000000000000000000000000083026134ca8282613a4c565b95945050505050565b6005546040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301526fffffffffffffffffffffffffffffffff808416937001000000000000000000000000000000009004169160009182917f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b1580156135b557600080fd5b505afa1580156135c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135ed91906140fe565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301529193507f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b15801561369f57600080fd5b505afa1580156136b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d791906140fe565b6040517f4ffe34db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301529192506000917f00000000000000000000000000000000000000000000000000000000000000001690634ffe34db90602401604080518083038186803b15801561378357600080fd5b505afa158015613797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137bb91906140a3565b6040517f4ffe34db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301529192506000917f00000000000000000000000000000000000000000000000000000000000000001690634ffe34db90602401604080518083038186803b15801561386757600080fd5b505afa15801561387b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061389f91906140a3565b90506138ab8287613cd1565b95506138b78186613cd1565b94506138c38285613cd1565b93506138cf8184613cd1565b9250505090919293565b6000808315806138e7575082155b156138f7575060009050806139d3565b600084613904858961443c565b61390e91906142df565b905085811161396957613924612710600261443c565b61392e8288614479565b613958907f000000000000000000000000000000000000000000000000000000000000000061443c565b61396291906142df565b91506139d1565b600084613976878961443c565b61398091906142df565b905061398f612710600261443c565b613999828a614479565b6139c3907f000000000000000000000000000000000000000000000000000000000000000061443c565b6139cd91906142df565b9350505b505b94509492505050565b806000808282546139ed91906142c7565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161320c565b600080613a5983856142c7565b905080613a6557600091505b600081815b610100811015613b95576000600487848a613a85828061443c565b613a8f91906142df565b613a99919061443c565b613aa391906142df565b613aad91906142df565b9050829350806003613abf919061443c565b836001613aed60647f00000000000000000000000000000000000000000000000000000000000000006142df565b613af79190614479565b613b01919061443c565b613b0b91906142c7565b83613b1783600261443c565b6064613b43897f000000000000000000000000000000000000000000000000000000000000000061443c565b613b4d91906142df565b613b5791906142c7565b613b61919061443c565b613b6b91906142df565b9250613b778385613d31565b15613b825750613b95565b5080613b8d81614490565b915050613a6a565b5095945050505050565b600080613bad84600261443c565b613bb7848061443c565b613bc191906142df565b90506064613bf07f0000000000000000000000000000000000000000000000000000000000000000600261443c565b613bfa91906142df565b613c04848361443c565b613c0e91906142df565b905060007f0000000000000000000000000000000000000000000000000000000000000000613c3e60648661443c565b613c4891906142df565b613c5290866142c7565b9050600084935060005b610100811015612133578491508583613c7684600261443c565b613c8091906142c7565b613c8a9190614479565b84613c95878061443c565b613c9f91906142c7565b613ca991906142df565b9450613cb58583613d31565b15613cbf57612133565b80613cc981614490565b915050613c5c565b600082602001516fffffffffffffffffffffffffffffffff1660001415613cf9575080611024565b602083015183516fffffffffffffffffffffffffffffffff91821691613d2091168461443c565b613d2a91906142df565b9392505050565b600081831115613d48575060018183031115611024565b506001919003111590565b80358015158114613d6357600080fd5b919050565b80516fffffffffffffffffffffffffffffffff81168114613d6357600080fd5b600060208284031215613d9a57600080fd5b8135613d2a81614585565b600080600060608486031215613dba57600080fd5b8335613dc581614585565b92506020840135613dd581614585565b9150613de360408501613d53565b90509250925092565b600080600080600060a08688031215613e0457600080fd5b8535613e0f81614585565b9450602086810135613e2081614585565b9450613e2e60408801613d53565b935060608701359250608087013567ffffffffffffffff80821115613e5257600080fd5b818901915089601f830112613e6657600080fd5b813581811115613e7857613e78614556565b613ea8847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614278565b91508082528a84828501011115613ebe57600080fd5b80848401858401376000848284010152508093505050509295509295909350565b60008060408385031215613ef257600080fd5b8235613efd81614585565b9150613f0b60208401613d53565b90509250929050565b60008060408385031215613f2757600080fd5b8235613f3281614585565b946020939093013593505050565b60008060408385031215613f5357600080fd5b8235613f5e81614585565b91506020830135613f6e81614585565b809150509250929050565b600080600060608486031215613f8e57600080fd5b8335613f9981614585565b92506020840135613fa981614585565b929592945050506040919091013590565b600080600080600080600060e0888a031215613fd557600080fd5b8735613fe081614585565b96506020880135613ff081614585565b95506040880135945060608801359350608088013560ff8116811461401457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806020838503121561404457600080fd5b823567ffffffffffffffff8082111561405c57600080fd5b818501915085601f83011261407057600080fd5b81358181111561407f57600080fd5b86602082850101111561409157600080fd5b60209290920196919550909350505050565b6000604082840312156140b557600080fd5b6040516040810181811067ffffffffffffffff821117156140d8576140d8614556565b6040526140e483613d68565b81526140f260208401613d68565b60208201529392505050565b60006020828403121561411057600080fd5b5051919050565b6000806040838503121561412a57600080fd5b505080516020909101519092909150565b6000815180845260005b8181101561416157602081850181015186830182015201614145565b81811115614173576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020808252825182820181905260009190848201906040850190845b818110156141f457835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016141c2565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015614258578151805173ffffffffffffffffffffffffffffffffffffffff16855286015186850152928401929085019060010161421d565b5091979650505050505050565b602081526000613d2a602083018461413b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156142bf576142bf614556565b604052919050565b600082198211156142da576142da6144c9565b500190565b600082614315577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600181815b8085111561317d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115614359576143596144c9565b8085161561436657918102915b93841c939080029061431f565b6000613d2a60ff84168360008261438c57506001611024565b8161439957506000611024565b81600181146143af57600281146143b9576143d5565b6001915050611024565b60ff8411156143ca576143ca6144c9565b50506001821b611024565b5060208310610133831016604e8410600b84101617156143f8575081810a611024565b614402838361431a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115614434576144346144c9565b029392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614474576144746144c9565b500290565b60008282101561448b5761448b6144c9565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156144c2576144c26144c9565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146145a757600080fd5b5056fea2646970667358221220f5bed7b73a8d176b55d9233a65288c602eab9db5c240e7b511f16e85c948723064736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x241 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x67E4AC2C GT PUSH2 0x145 JUMPI DUP1 PUSH4 0xAF8C09BF GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x627 JUMPI DUP1 PUSH4 0xE25AA5FA EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0xF446C1D0 EQ PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x5ED JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x614 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x583 JUMPI DUP1 PUSH4 0xBAA8C7CB EQ PUSH2 0x596 JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x5BD JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x92BC3219 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xA69840A8 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x536 JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x55D JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x4F0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x488 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x49D JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x4E25DC47 GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x4E25DC47 EQ PUSH2 0x427 JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x44E JUMPI DUP1 PUSH4 0x627DD56A EQ PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x3ED JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3CB JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x3E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x214 JUMPI DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x341 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x368 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x371 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2B5 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2D2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x259 PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x681 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x4265 JUMP JUMPDEST PUSH2 0x2BD PUSH2 0xF9C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x2E5 PUSH2 0x2E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F14 JUMP JUMPDEST PUSH2 0xFB0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2E5 PUSH2 0x37F CALLDATASIZE PUSH1 0x4 PUSH2 0x3F79 JUMP JUMPDEST PUSH2 0x102A JUMP JUMPDEST PUSH2 0x397 PUSH2 0x392 CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x1465 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x3FB CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x15B4 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x483 CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x490 PUSH2 0x1886 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x41A6 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x4AB CALLDATASIZE PUSH1 0x4 PUSH2 0x3D88 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x4CB CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x1985 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x4DE CALLDATASIZE PUSH1 0x4 PUSH2 0x3D88 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x4F8 PUSH2 0x1C63 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x54726964656E743A487962726964506F6F6C0000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x56B CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x1D06 JUMP JUMPDEST PUSH2 0x2E5 PUSH2 0x57E CALLDATASIZE PUSH1 0x4 PUSH2 0x3F14 JUMP JUMPDEST PUSH2 0x213D JUMP JUMPDEST PUSH2 0x259 PUSH2 0x591 CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x21C2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x4F8 PUSH2 0x622 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FBA JUMP JUMPDEST PUSH2 0x250A JUMP JUMPDEST PUSH2 0x259 PUSH2 0x635 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F40 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x285C JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x6F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x70B DUP8 DUP10 ADD DUP10 PUSH2 0x3DEC JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x0 DUP1 PUSH2 0x720 PUSH2 0x28A7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xAE1 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x854 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x868 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x88C SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP5 POP PUSH2 0x89B DUP6 DUP5 DUP5 PUSH1 0x1 PUSH2 0x2ABD JUMP JUMPDEST SWAP9 POP PUSH2 0x8CA PUSH32 0x0 DUP9 DUP12 DUP8 DUP11 PUSH2 0x2C31 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x4 DUP5 ADD MSTORE ADDRESS PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x0 SWAP3 PUSH32 0x0 SWAP2 SWAP1 SWAP2 AND SWAP2 PUSH4 0x56623118 SWAP2 DUP4 SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x99A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9BE SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA42 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA66 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0xA73 DUP6 DUP4 PUSH2 0x4479 JUMP JUMPDEST LT ISZERO PUSH2 0xADB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST POP PUSH2 0xEF9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB96 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCA8 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP5 POP PUSH2 0xCB7 DUP6 DUP5 DUP5 PUSH1 0x0 PUSH2 0x2ABD JUMP JUMPDEST SWAP9 POP PUSH2 0xCE6 PUSH32 0x0 DUP9 DUP12 DUP8 DUP11 PUSH2 0x2C31 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x4 DUP5 ADD MSTORE ADDRESS PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x0 SWAP3 PUSH32 0x0 SWAP2 SWAP1 SWAP2 AND SWAP2 PUSH4 0x56623118 SWAP2 DUP4 SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDB6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDDA SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE5E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE82 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0xE8F DUP5 DUP4 PUSH2 0x4479 JUMP JUMPDEST LT ISZERO PUSH2 0xEF7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST POP JUMPDEST PUSH2 0xF01 PUSH2 0x2CBA JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP9 DUP14 PUSH1 0x40 MLOAD PUSH2 0xF80 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xFA7 PUSH2 0x28A7 JUMP JUMPDEST SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x1018 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x10C7 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x10C1 SWAP1 DUP5 SWAP1 PUSH2 0x4479 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x10FC SWAP1 DUP5 SWAP1 PUSH2 0x4479 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x1164 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x11E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 PUSH2 0x11F8 DUP5 DUP7 ADD DUP7 PUSH2 0x3EDF JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1207 PUSH2 0x2DCB JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH2 0x1227 DUP5 DUP5 PUSH2 0x30B4 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x1237 DUP7 DUP6 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x1241 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x1250 DUP7 DUP7 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x125A SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH2 0x1266 ADDRESS DUP6 PUSH2 0x3185 JUMP JUMPDEST PUSH2 0x1292 PUSH32 0x0 DUP4 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST PUSH2 0x12BE PUSH32 0x0 DUP3 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST PUSH2 0x12C6 PUSH2 0x2CBA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x12DC JUMPI SWAP1 POP POP SWAP9 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP10 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1363 JUMPI PUSH2 0x1363 PUSH2 0x4527 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP10 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x13CC JUMPI PUSH2 0x13CC PUSH2 0x4527 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x13F3 PUSH2 0x13E4 DUP4 DUP9 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x13EE DUP4 DUP9 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x3478 JUMP JUMPDEST PUSH1 0x6 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x158F JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x1629 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x163E DUP6 DUP8 ADD DUP8 PUSH2 0x3DA5 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1652 PUSH2 0x34D3 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x16EB JUMPI POP POP DUP4 DUP3 SUB PUSH32 0x0 PUSH2 0x16E4 DUP3 DUP8 DUP8 PUSH1 0x1 PUSH2 0x2ABD JUMP JUMPDEST SWAP10 POP PUSH2 0x17D6 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x17A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST POP POP DUP3 DUP2 SUB PUSH32 0x0 PUSH2 0x17D3 DUP3 DUP8 DUP8 PUSH1 0x0 PUSH2 0x2ABD JUMP JUMPDEST SWAP10 POP JUMPDEST PUSH2 0x17E2 DUP2 DUP12 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST PUSH2 0x17EA PUSH2 0x2CBA JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP6 DUP15 PUSH1 0x40 MLOAD PUSH2 0x1869 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP6 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x18DA JUMPI PUSH2 0x18DA PUSH2 0x4527 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1948 JUMPI PUSH2 0x1948 PUSH2 0x4527 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x19F3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 PUSH2 0x1A06 DUP4 DUP6 ADD DUP6 PUSH2 0x3D88 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1A13 PUSH2 0x28A7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1A22 PUSH2 0x2DCB JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x1A32 DUP4 DUP4 PUSH2 0x3478 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A40 DUP7 DUP6 PUSH2 0x4479 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A4E DUP7 DUP6 PUSH2 0x4479 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1A5F DUP5 DUP5 DUP12 DUP12 PUSH2 0x38D9 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1A7E PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP11 PUSH2 0x42C7 JUMP JUMPDEST SWAP9 POP PUSH2 0x1A9A PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP10 PUSH2 0x42C7 JUMP JUMPDEST SWAP8 POP PUSH1 0x0 DUP1 PUSH2 0x1AA9 DUP12 DUP12 PUSH2 0x30B4 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ ISZERO PUSH2 0x1B4C JUMPI PUSH1 0x0 DUP7 GT DUP1 ISZERO PUSH2 0x1AC6 JUMPI POP PUSH1 0x0 DUP6 GT JUMPDEST PUSH2 0x1B2C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F414D4F554E54530000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH2 0x1B38 PUSH2 0x3E8 DUP9 PUSH2 0x4479 JUMP JUMPDEST SWAP13 POP PUSH2 0x1B47 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x39DC JUMP JUMPDEST PUSH2 0x1B6F JUMP JUMPDEST DUP1 DUP3 PUSH2 0x1B58 DUP3 DUP11 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x1B62 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x1B6C SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP13 POP JUMPDEST DUP13 PUSH2 0x1BD6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F4C49515549444954595F4D494E544544000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH2 0x1BE0 DUP13 DUP15 PUSH2 0x39DC JUMP JUMPDEST PUSH2 0x1BE8 PUSH2 0x2CBA JUMP JUMPDEST PUSH1 0x6 DUP8 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 DUP2 ADD DUP15 SWAP1 MSTORE DUP14 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP1 CALLER SWAP1 PUSH32 0xF9C32FBC56FF04F32A233EBC26E388564223745E28ABD8D0781DD906537F563E SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP10 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CDD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D01 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x1D16 DUP5 DUP7 ADD DUP7 PUSH2 0x3F14 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1D25 PUSH2 0x28A7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP8 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DD6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1DFA SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP3 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1F69 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA5139CA PUSH32 0x0 PUSH2 0x1EBA DUP7 DUP7 DUP7 PUSH1 0x1 PUSH2 0x2ABD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F3E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F62 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP5 POP PUSH2 0x2133 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x201E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA5139CA PUSH32 0x0 PUSH2 0x2088 DUP7 DUP7 DUP7 PUSH1 0x0 PUSH2 0x2ABD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x210C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2130 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP5 POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP4 SWAP1 PUSH2 0x215E SWAP1 DUP5 SWAP1 PUSH2 0x4479 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x1018 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x2230 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x2245 DUP6 DUP8 ADD DUP8 PUSH2 0x3DA5 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x2256 PUSH2 0x2DCB JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH2 0x2276 DUP5 DUP5 PUSH2 0x30B4 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x2286 DUP7 DUP6 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x2290 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x229F DUP7 DUP7 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x22A9 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH2 0x22B5 ADDRESS DUP6 PUSH2 0x3185 JUMP JUMPDEST PUSH2 0x22C2 PUSH2 0x13E4 DUP4 DUP9 PUSH2 0x4479 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x237F JUMPI PUSH2 0x233B DUP3 PUSH2 0x232A DUP2 DUP10 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x2334 DUP5 DUP10 PUSH2 0x4479 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2ABD JUMP JUMPDEST PUSH2 0x2345 SWAP1 DUP3 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 POP PUSH2 0x2373 PUSH32 0x0 DUP3 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST DUP1 SWAP10 POP PUSH1 0x0 SWAP2 POP PUSH2 0x2492 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2434 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH2 0x2453 DUP2 PUSH2 0x2442 DUP5 DUP10 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x244C DUP5 DUP10 PUSH2 0x4479 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2ABD JUMP JUMPDEST PUSH2 0x245D SWAP1 DUP4 PUSH2 0x42C7 JUMP JUMPDEST SWAP2 POP PUSH2 0x248B PUSH32 0x0 DUP4 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST POP SWAP8 POP DUP8 PUSH1 0x0 JUMPDEST PUSH2 0x249A PUSH2 0x2CBA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP6 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x2574 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x257E PUSH2 0x1465 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP3 DUP13 SWAP3 DUP13 SWAP3 DUP13 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x25D9 DUP4 PUSH2 0x4490 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x267A SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2703 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x277E JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x27E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2869 PUSH2 0x28A7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x2879 DUP4 DUP4 PUSH2 0x3478 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP PUSH2 0x288B PUSH1 0x12 PUSH1 0xA PUSH2 0x4373 JUMP JUMPDEST PUSH2 0x2895 SWAP1 DUP4 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x289F SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x24 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP6 ADD MSTORE SWAP4 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x298C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x29C4 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A93 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2AB7 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP1 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP5 MUL PUSH32 0x0 DUP5 MUL PUSH2 0x2710 PUSH32 0x0 DUP9 MUL DIV DUP8 SUB DUP4 PUSH2 0x2B39 DUP5 DUP5 PUSH2 0x3A4C JUMP JUMPDEST SWAP1 POP DUP6 ISZERO PUSH2 0x2BB5 JUMPI PUSH32 0x0 DUP3 MUL DUP5 ADD PUSH1 0x0 PUSH2 0x2B72 DUP3 DUP5 PUSH2 0x3B9F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 DUP7 SUB SUB SWAP7 POP PUSH32 0x0 DUP8 DUP2 PUSH2 0x2BAB JUMPI PUSH2 0x2BAB PUSH2 0x44F8 JUMP JUMPDEST DIV SWAP7 POP POP POP PUSH2 0x2C25 JUMP JUMPDEST PUSH32 0x0 DUP3 MUL DUP4 ADD PUSH1 0x0 PUSH2 0x2BE6 DUP3 DUP5 PUSH2 0x3B9F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 DUP8 SUB SUB SWAP7 POP PUSH32 0x0 DUP8 DUP2 PUSH2 0x2C1F JUMPI PUSH2 0x2C1F PUSH2 0x44F8 JUMP JUMPDEST DIV SWAP7 POP POP POP JUMPDEST POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2C3D DUP6 DUP5 DUP7 DUP5 PUSH2 0x3218 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2CB3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x2C80 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x4265 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CAE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2CC5 PUSH2 0x2DCB JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 GT DUP1 ISZERO SWAP1 PUSH2 0x2CFA JUMPI POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO JUMPDEST PUSH2 0x2D60 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564552464C4F57000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP1 DUP4 AND OR PUSH1 0x5 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH32 0xCF2AA50876CDFBB541206F89AF0EE78D44A2ABF8D328E37FA4917F982149848A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 DUP2 AND PUSH1 0x4 DUP5 ADD MSTORE ADDRESS PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH32 0x0 AND SWAP2 PUSH4 0x56623118 SWAP2 DUP4 SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E9A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EBE SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F42 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F66 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 DUP2 AND PUSH1 0x4 DUP5 ADD MSTORE ADDRESS PUSH1 0x24 DUP5 ADD MSTORE SWAP3 SWAP5 POP PUSH32 0x0 AND SWAP2 PUSH4 0x56623118 SWAP2 DUP4 SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x301F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3033 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3057 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x6 SLOAD SWAP1 SWAP2 SWAP1 DUP1 ISZERO PUSH2 0x317D JUMPI PUSH2 0x30CE DUP6 DUP6 PUSH2 0x3478 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x317D JUMPI PUSH1 0x4 SLOAD PUSH1 0x0 DUP2 PUSH2 0x30E8 DUP5 DUP7 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x30F2 SWAP1 DUP8 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x30FC SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x310A DUP5 DUP5 PUSH2 0x443C JUMP JUMPDEST DUP6 PUSH2 0x3117 DUP6 PUSH2 0x2710 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x3121 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x312B SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3139 DUP3 DUP5 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3178 JUMPI PUSH2 0x316B PUSH32 0x0 DUP3 PUSH2 0x39DC JUMP JUMPDEST PUSH2 0x3175 DUP2 DUP9 PUSH2 0x42C7 JUMP JUMPDEST SWAP7 POP JUMPDEST POP POP POP POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x31BA SWAP1 DUP5 SWAP1 PUSH2 0x4479 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP1 SLOAD DUP3 SWAP1 SUB DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3301 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x32FA SWAP2 SWAP1 PUSH2 0x4117 JUMP JUMPDEST POP POP PUSH2 0x3472 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDA5139CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 DUP7 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP6 SWAP1 PUSH4 0xDA5139CA SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x33B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x33DC SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP8 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x24 DUP5 ADD MSTORE SWAP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x346D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP4 MUL PUSH32 0x0 DUP4 MUL PUSH2 0x34CA DUP3 DUP3 PUSH2 0x3A4C JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND SWAP4 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND SWAP2 PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35C9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x35ED SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x369F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x36B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x36D7 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x4FFE34DB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0x4FFE34DB SWAP1 PUSH1 0x24 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3783 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3797 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37BB SWAP2 SWAP1 PUSH2 0x40A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x4FFE34DB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0x4FFE34DB SWAP1 PUSH1 0x24 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3867 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x387B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x389F SWAP2 SWAP1 PUSH2 0x40A3 JUMP JUMPDEST SWAP1 POP PUSH2 0x38AB DUP3 DUP8 PUSH2 0x3CD1 JUMP JUMPDEST SWAP6 POP PUSH2 0x38B7 DUP2 DUP7 PUSH2 0x3CD1 JUMP JUMPDEST SWAP5 POP PUSH2 0x38C3 DUP3 DUP6 PUSH2 0x3CD1 JUMP JUMPDEST SWAP4 POP PUSH2 0x38CF DUP2 DUP5 PUSH2 0x3CD1 JUMP JUMPDEST SWAP3 POP POP POP SWAP1 SWAP2 SWAP3 SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 ISZERO DUP1 PUSH2 0x38E7 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x38F7 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x39D3 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x3904 DUP6 DUP10 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x390E SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP DUP6 DUP2 GT PUSH2 0x3969 JUMPI PUSH2 0x3924 PUSH2 0x2710 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x392E DUP3 DUP9 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x3958 SWAP1 PUSH32 0x0 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3962 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP2 POP PUSH2 0x39D1 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x3976 DUP8 DUP10 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3980 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH2 0x398F PUSH2 0x2710 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3999 DUP3 DUP11 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x39C3 SWAP1 PUSH32 0x0 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x39CD SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP4 POP POP JUMPDEST POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0x39ED SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x320C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3A59 DUP4 DUP6 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3A65 JUMPI PUSH1 0x0 SWAP2 POP JUMPDEST PUSH1 0x0 DUP2 DUP2 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x3B95 JUMPI PUSH1 0x0 PUSH1 0x4 DUP8 DUP5 DUP11 PUSH2 0x3A85 DUP3 DUP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3A8F SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3A99 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3AA3 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3AAD SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP DUP3 SWAP4 POP DUP1 PUSH1 0x3 PUSH2 0x3ABF SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH2 0x3AED PUSH1 0x64 PUSH32 0x0 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3AF7 SWAP2 SWAP1 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x3B01 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3B0B SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST DUP4 PUSH2 0x3B17 DUP4 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH1 0x64 PUSH2 0x3B43 DUP10 PUSH32 0x0 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3B4D SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3B57 SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST PUSH2 0x3B61 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3B6B SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP3 POP PUSH2 0x3B77 DUP4 DUP6 PUSH2 0x3D31 JUMP JUMPDEST ISZERO PUSH2 0x3B82 JUMPI POP PUSH2 0x3B95 JUMP JUMPDEST POP DUP1 PUSH2 0x3B8D DUP2 PUSH2 0x4490 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3A6A JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3BAD DUP5 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3BB7 DUP5 DUP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3BC1 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH1 0x64 PUSH2 0x3BF0 PUSH32 0x0 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3BFA SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3C04 DUP5 DUP4 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3C0E SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH2 0x3C3E PUSH1 0x64 DUP7 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3C48 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3C52 SWAP1 DUP7 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 SWAP4 POP PUSH1 0x0 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x2133 JUMPI DUP5 SWAP2 POP DUP6 DUP4 PUSH2 0x3C76 DUP5 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3C80 SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST PUSH2 0x3C8A SWAP2 SWAP1 PUSH2 0x4479 JUMP JUMPDEST DUP5 PUSH2 0x3C95 DUP8 DUP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3C9F SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST PUSH2 0x3CA9 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP5 POP PUSH2 0x3CB5 DUP6 DUP4 PUSH2 0x3D31 JUMP JUMPDEST ISZERO PUSH2 0x3CBF JUMPI PUSH2 0x2133 JUMP JUMPDEST DUP1 PUSH2 0x3CC9 DUP2 PUSH2 0x4490 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3C5C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x20 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 EQ ISZERO PUSH2 0x3CF9 JUMPI POP DUP1 PUSH2 0x1024 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH2 0x3D20 SWAP2 AND DUP5 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3D2A SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 GT ISZERO PUSH2 0x3D48 JUMPI POP PUSH1 0x1 DUP2 DUP4 SUB GT ISZERO PUSH2 0x1024 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 SUB GT ISZERO SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3D63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3D63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3D9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3D2A DUP2 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3DBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3DC5 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3DD5 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP2 POP PUSH2 0x3DE3 PUSH1 0x40 DUP6 ADD PUSH2 0x3D53 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3E04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3E0F DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 DUP2 ADD CALLDATALOAD PUSH2 0x3E20 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP5 POP PUSH2 0x3E2E PUSH1 0x40 DUP9 ADD PUSH2 0x3D53 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3E52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3E78 JUMPI PUSH2 0x3E78 PUSH2 0x4556 JUMP JUMPDEST PUSH2 0x3EA8 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x4278 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP11 DUP5 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3EBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP5 DUP5 ADD DUP6 DUP5 ADD CALLDATACOPY PUSH1 0x0 DUP5 DUP3 DUP5 ADD ADD MSTORE POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3EFD DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP2 POP PUSH2 0x3F0B PUSH1 0x20 DUP5 ADD PUSH2 0x3D53 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3F32 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3F5E DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3F6E DUP2 PUSH2 0x4585 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3F8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3F99 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3FA9 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3FD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x3FE0 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x3FF0 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x4014 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x405C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4070 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x407F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x4091 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x40D8 JUMPI PUSH2 0x40D8 PUSH2 0x4556 JUMP JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x40E4 DUP4 PUSH2 0x3D68 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x40F2 PUSH1 0x20 DUP5 ADD PUSH2 0x3D68 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x412A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4161 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x4145 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x4173 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x41F4 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x41C2 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4258 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x421D JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x3D2A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x413B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x42BF JUMPI PUSH2 0x42BF PUSH2 0x4556 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x42DA JUMPI PUSH2 0x42DA PUSH2 0x44C9 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4315 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x317D JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x4359 JUMPI PUSH2 0x4359 PUSH2 0x44C9 JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x4366 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x431F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D2A PUSH1 0xFF DUP5 AND DUP4 PUSH1 0x0 DUP3 PUSH2 0x438C JUMPI POP PUSH1 0x1 PUSH2 0x1024 JUMP JUMPDEST DUP2 PUSH2 0x4399 JUMPI POP PUSH1 0x0 PUSH2 0x1024 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x43AF JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x43B9 JUMPI PUSH2 0x43D5 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x1024 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x43CA JUMPI PUSH2 0x43CA PUSH2 0x44C9 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x1024 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x43F8 JUMPI POP DUP2 DUP2 EXP PUSH2 0x1024 JUMP JUMPDEST PUSH2 0x4402 DUP4 DUP4 PUSH2 0x431A JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x4434 JUMPI PUSH2 0x4434 PUSH2 0x44C9 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x4474 JUMPI PUSH2 0x4474 PUSH2 0x44C9 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x448B JUMPI PUSH2 0x448B PUSH2 0x44C9 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x44C2 JUMPI PUSH2 0x44C2 PUSH2 0x44C9 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x45A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE2 0xBE 0xD7 0xB7 GASPRICE DUP14 OR PUSH12 0x55D9233A65288C602EAB9DB5 0xC2 BLOCKHASH 0xE7 0xB5 GT CALL PUSH15 0x85C948723064736F6C634300080700 CALLER ",
              "sourceMap": "630:18814:40:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9142:1474;;;;;;:::i;:::-;;:::i;:::-;;;11726:25:64;;;11714:2;11699:18;9142:1474:40;;;;;;;;486:46:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19027:138:40:-;;;:::i;:::-;;;;17739:25:64;;;17795:2;17780:18;;17773:34;;;;17712:18;19027:138:40;17565:248:64;2581:203:45;;;;;;:::i;:::-;;:::i;:::-;;;11553:14:64;;11546:22;11528:41;;11516:2;11501:18;2581:203:45;11388:187:64;1446:33:40;;;;;;;;8034:42:64;8022:55;;;8004:74;;7992:2;7977:18;1446:33:40;7858:226:64;1485:31:40;;;;;623:26:45;;;;;;3741:564;;;;;;:::i;:::-;;:::i;5065:1052:40:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1182:145:45:-;;1232:95;1182:145;;581:35;;614:2;581:35;;;;;18314:4:64;18302:17;;;18284:36;;18272:2;18257:18;581:35:45;18142:184:64;2071:201:45;;;:::i;18920:101:40:-;;;;;;:::i;:::-;;:::i;1348:39::-;;;;;1996:50;;;;;1309:32;;;;;7960:1040;;;;;;:::i;:::-;;:::i;18071:174::-;;;:::i;:::-;;;;;;;:::i;697:44:45:-;;;;;;:::i;:::-;;;;;;;;;;;;;;3672:1267:40;;;;;;:::i;:::-;;:::i;1390:41:45:-;;;;;;:::i;:::-;;;;;;;;;;;;;;10674:80:40;;;:::i;:::-;;538:37:45;;;;;;;;;;;;;;;;;;;;;2172:70:40;;;;;18251:663;;;;;;:::i;:::-;;:::i;3024:393:45:-;;;;;;:::i;:::-;;:::i;6292:1540:40:-;;;;;;:::i;:::-;;:::i;1940:50::-;;;;;2053:21;;;;;;1393:47;;;;;1522:31;;;;;4785:796:45;;;;;;:::i;:::-;;:::i;802:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;19171:271:40;;;:::i;1559:26::-;;;;;9142:1474;9212:17;2314:8;;2326:1;2314:13;2306:32;;;;;;;17251:2:64;2306:32:40;;;17233:21:64;17290:1;17270:18;;;17263:29;17328:8;17308:18;;;17301:36;17354:18;;2306:32:40;;;;;;;;;2359:1;2348:8;:12;9242:15:::1;::::0;;;;9338:92:::1;::::0;;::::1;9362:4:::0;9338:92:::1;:::i;:::-;9241:189;;;;;;;;;;9441:17;9460::::0;9481:14:::1;:12;:14::i;:::-;9440:55;;;;9505:16;9547:6;9536:17;;:7;:17;;;9532:981;;;-1:-1:-1::0;9611:39:40::1;::::0;;;;:14:::1;9626:6;9683:55:64::0;;9611:39:40::1;::::0;::::1;9665:74:64::0;9755:18;;;9748:34;;;-1:-1:-1;9798:18:64;;;9791:50;9580:6:40::1;::::0;9611:5:::1;:14:::0;;::::1;::::0;::::1;::::0;9638:18:64;;9611:39:40::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9600:50;;9676:51;9690:8;9700:9;9711;9722:4;9676:13;:51::i;:::-;9664:63;;9741:64;9754:6;9762:9;9773;9784:7;9793:11;9741:12;:64::i;:::-;9861:38;::::0;;;;9853:6:::1;9838:14;8342:15:64::0;;;9861:38:40::1;::::0;::::1;8324:34:64::0;9893:4:40::1;8374:18:64::0;;;8367:43;9819:16:40::1;::::0;9838:5:::1;:14:::0;;;::::1;::::0;::::1;::::0;;;9861:15:::1;::::0;8236:18:64;;9861:38:40::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9838:69;::::0;;::::1;::::0;;;;;;9695:42:64;9683:55;;;9838:69:40::1;::::0;::::1;9665:74:64::0;9755:18;;;9748:34;9901:5:40::1;9798:18:64::0;;;9791:50;9638:18;;9838:69:40::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9819:88:::0;-1:-1:-1;9953:8:40;9929:20:::1;9940:9:::0;9819:88;9929:20:::1;:::i;:::-;:32;;9921:67;;;::::0;::::1;::::0;;14813:2:64;9921:67:40::1;::::0;::::1;14795:21:64::0;14852:2;14832:18;;;14825:30;14891:24;14871:18;;;14864:52;14933:18;;9921:67:40::1;14611:346:64::0;9921:67:40::1;9555:444;9532:981;;;10038:6;10027:17;;:7;:17;;;10019:49;;;::::0;::::1;::::0;;15164:2:64;10019:49:40::1;::::0;::::1;15146:21:64::0;15203:2;15183:18;;;15176:30;15242:21;15222:18;;;15215:49;15281:18;;10019:49:40::1;14962:343:64::0;10019:49:40::1;-1:-1:-1::0;10124:39:40::1;::::0;;;;:14:::1;10139:6;9683:55:64::0;;10124:39:40::1;::::0;::::1;9665:74:64::0;9755:18;;;9748:34;;;-1:-1:-1;9798:18:64;;;9791:50;10093:6:40::1;::::0;10124:5:::1;:14:::0;;::::1;::::0;::::1;::::0;9638:18:64;;10124:39:40::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10113:50;;10189:52;10203:8;10213:9;10224;10235:5;10189:13;:52::i;:::-;10177:64;;10255;10268:6;10276:9;10287;10298:7;10307:11;10255:12;:64::i;:::-;10375:38;::::0;;;;10367:6:::1;10352:14;8342:15:64::0;;;10375:38:40::1;::::0;::::1;8324:34:64::0;10407:4:40::1;8374:18:64::0;;;8367:43;10333:16:40::1;::::0;10352:5:::1;:14:::0;;;::::1;::::0;::::1;::::0;;;10375:15:::1;::::0;8236:18:64;;10375:38:40::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10352:69;::::0;;::::1;::::0;;;;;;9695:42:64;9683:55;;;10352:69:40::1;::::0;::::1;9665:74:64::0;9755:18;;;9748:34;10415:5:40::1;9798:18:64::0;;;9791:50;9638:18;;10352:69:40::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10333:88:::0;-1:-1:-1;10467:8:40;10443:20:::1;10454:9:::0;10333:88;10443:20:::1;:::i;:::-;:32;;10435:67;;;::::0;::::1;::::0;;14813:2:64;10435:67:40::1;::::0;::::1;14795:21:64::0;14852:2;14832:18;;;14825:30;14891:24;14871:18;;;14864:52;14933:18;;10435:67:40::1;14611:346:64::0;10435:67:40::1;10005:508;9532:981;10522:17;:15;:17::i;:::-;10579:8;10554:55;;10570:7;10554:55;;10559:9;10554:55;;;10589:8;10599:9;10554:55;;;;;;17739:25:64::0;;;17795:2;17780:18;;17773:34;17727:2;17712:18;;17565:248;10554:55:40::1;;;;;;;;-1:-1:-1::0;;2392:1:40;2381:8;:12;-1:-1:-1;9142:1474:40;;;-1:-1:-1;;;;;;;9142:1474:40:o;19027:138::-;19071:17;19090;19144:14;:12;:14::i;:::-;19119:39;;;;-1:-1:-1;19027:138:40;-1:-1:-1;19027:138:40:o;2581:203:45:-;2675:10;2649:4;2665:21;;;:9;:21;;;;;;;;;:30;;;;;;;;;;:39;;;2719:37;2649:4;;2665:30;;2719:37;;;;2698:6;11726:25:64;;11714:2;11699:18;;11580:177;2719:37:45;;;;;;;;-1:-1:-1;2773:4:45;2581:203;;;;;:::o;3741:564::-;3882:17;;;3862:4;3882:17;;;:9;:17;;;;;;;;3900:10;3882:29;;;;;;;;3915:17;3882:50;3878:120;;3948:17;;;;;;;:9;:17;;;;;;;;3966:10;3948:29;;;;;;;:39;;3981:6;;3948:17;:39;;3981:6;;3948:39;:::i;:::-;;;;-1:-1:-1;;3878:120:45;4007:17;;;;;;;:9;:17;;;;;:27;;4028:6;;4007:17;:27;;4028:6;;4007:27;:::i;:::-;;;;-1:-1:-1;;4187:20:45;;;;;;;;:9;:20;;;;;;;:30;;;;;;4242:35;4187:20;;4242:35;;;;;;;4211:6;11726:25:64;;11714:2;11699:18;;11580:177;4242:35:45;;;;;;;;-1:-1:-1;4294:4:45;3741:564;;;;;:::o;5065:1052:40:-;5130:43;2314:8;;2326:1;2314:13;2306:32;;;;;;;17251:2:64;2306:32:40;;;17233:21:64;17290:1;17270:18;;;17263:29;17328:8;17308:18;;;17301:36;17354:18;;2306:32:40;17049:329:64;2306:32:40;2359:1;2348:8;:12;5186:17:::1;::::0;5225:33:::1;::::0;;::::1;5236:4:::0;5225:33:::1;:::i;:::-;5185:73;;;;5269:16;5287::::0;5307:10:::1;:8;:10::i;:::-;5365:4;5327:17;5347:24:::0;;;:9:::1;:24;::::0;;;;;5268:49;;-1:-1:-1;5268:49:40;;-1:-1:-1;5409:28:40::1;5268:49:::0;;5409:8:::1;:28::i;:::-;-1:-1:-1::0;5382:55:40;-1:-1:-1;5448:15:40::1;5382:55:::0;5467:20:::1;5479:8:::0;5467:9;:20:::1;:::i;:::-;5466:37;;;;:::i;:::-;5448:55:::0;-1:-1:-1;5513:15:40::1;5556:12:::0;5532:20:::1;5544:8:::0;5532:9;:20:::1;:::i;:::-;5531:37;;;;:::i;:::-;5513:55;;5579:31;5593:4;5600:9;5579:5;:31::i;:::-;5620:50;5630:6;5638:7;5647:9;5658:11;5620:9;:50::i;:::-;5680;5690:6;5698:7;5707:9;5718:11;5680:9;:50::i;:::-;5741:17;:15;:17::i;:::-;5788:20;::::0;;5806:1:::1;5788:20:::0;;;;;::::1;::::0;;;;::::1;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;5788:20:40::1;;;;;;;;;;;;;;;5769:39;;5840:45;;;;;;;;5860:6;5840:45;;;;;;5876:7;5840:45;;::::0;5818:16:::1;5835:1;5818:19;;;;;;;;:::i;:::-;;;;;;:67;;;;5917:45;;;;;;;;5937:6;5917:45;;;;;;5953:7;5917:45;;::::0;5895:16:::1;5912:1;5895:19;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;:67;5981:57:::1;5999:18;6010:7:::0;5999:8;:18:::1;:::i;:::-;6019;6030:7:::0;6019:8;:18:::1;:::i;:::-;5981:17;:57::i;:::-;5973:5;:65:::0;6054:56:::1;::::0;;18020:25:64;;;18076:2;18061:18;;18054:34;;;18104:18;;;18097:34;;;6054:56:40::1;::::0;::::1;::::0;6059:10:::1;::::0;6054:56:::1;::::0;18008:2:64;17993:18;6054:56:40::1;;;;;;;-1:-1:-1::0;;2392:1:40;2381:8;:12;-1:-1:-1;5065:1052:40;;;-1:-1:-1;;;;;;;5065:1052:40:o;2071:201:45:-;2120:23;2190:25;2173:13;:42;:92;;-1:-1:-1;1866:4:45;;;;;;;;;;;;;;;;;1900:10;;;;;;;;;;;;;;;1709:278;;1737:95;1709:278;;;12640:25:64;1850:22:45;12681:18:64;;;12674:34;1890:21:45;12724:18:64;;;12717:34;1929:13:45;12767:18:64;;;12760:34;1968:4:45;12810:19:64;;;;12803:84;;;;1709:278:45;;;;;;;;;;12612:19:64;;;;1709:278:45;;;1686:311;;;;;;2071:201::o;2173:92::-;-1:-1:-1;2218:17:45;;2071:201::o;18920:101:40:-;18987:7;19006:8;;;7960:1040;8025:17;2314:8;;2326:1;2314:13;2306:32;;;;;;;17251:2:64;2306:32:40;;;17233:21:64;17290:1;17270:18;;;17263:29;17328:8;17308:18;;;17301:36;17354:18;;2306:32:40;17049:329:64;2306:32:40;2359:1;2348:8;:12;8055:15:::1;::::0;;8111:42:::1;::::0;;::::1;8122:4:::0;8111:42:::1;:::i;:::-;8054:99;;;;;;8164:17;8183::::0;8202:16:::1;8220::::0;8240:25:::1;:23;:25::i;:::-;8163:102;;;;;;;;8275:16;8301::::0;8343:6:::1;8332:17;;:7;:17;;;8328:505;;;-1:-1:-1::0;;8435:20:40;;::::1;8376:6;8495:51;8435:20:::0;8446:9;8530;8541:4:::1;8495:13;:51::i;:::-;8483:63;;8328:505;;;8596:6;8585:17;;:7;:17;;;8577:49;;;::::0;::::1;::::0;;15164:2:64;8577:49:40::1;::::0;::::1;15146:21:64::0;15203:2;15183:18;;;15176:30;15242:21;15222:18;;;15215:49;15281:18;;8577:49:40::1;14962:343:64::0;8577:49:40::1;-1:-1:-1::0;;8710:20:40;;::::1;8651:6;8770:52;8710:20:::0;8794:9;8721;8816:5:::1;8770:13;:52::i;:::-;8758:64;;8328:505;8842:54;8852:8;8862:9;8873;8884:11;8842:9;:54::i;:::-;8906:17;:15;:17::i;:::-;8963:8;8938:55;;8954:7;8938:55;;8943:9;8938:55;;;8973:8;8983:9;8938:55;;;;;;17739:25:64::0;;;17795:2;17780:18;;17773:34;17727:2;17712:18;;17565:248;8938:55:40::1;;;;;;;;-1:-1:-1::0;;2392:1:40;2381:8;:12;-1:-1:-1;7960:1040:40;;;-1:-1:-1;;;;;;;;7960:1040:40:o;18071:174::-;18166:16;;;18180:1;18166:16;;;18122:23;18166:16;;;;;18122:23;18166:16;;;;;;;;;;-1:-1:-1;18166:16:40;18157:25;;18204:6;18192;18199:1;18192:9;;;;;;;;:::i;:::-;;;;;;:18;;;;;;;;;;;18232:6;18220;18227:1;18220:9;;;;;;;;:::i;:::-;;;;;;:18;;;;;;;;;;;18071:174;:::o;3672:1267::-;3737:17;2314:8;;2326:1;2314:13;2306:32;;;;;;;17251:2:64;2306:32:40;;;17233:21:64;17290:1;17270:18;;;17263:29;17328:8;17308:18;;;17301:36;17354:18;;2306:32:40;17049:329:64;2306:32:40;2359:1;2348:8;:12;3766:17:::1;3786:27;::::0;;::::1;3797:4:::0;3786:27:::1;:::i;:::-;3766:47;;3824:17;3843::::0;3864:14:::1;:12;:14::i;:::-;3823:55;;;;3889:16;3907::::0;3927:10:::1;:8;:10::i;:::-;3888:49;;;;3948:14;3965:37;3983:8;3993;3965:17;:37::i;:::-;3948:54:::0;-1:-1:-1;4012:15:40::1;4030:20;4041:9:::0;4030:8;:20:::1;:::i;:::-;4012:38:::0;-1:-1:-1;4060:15:40::1;4078:20;4089:9:::0;4078:8;:20:::1;:::i;:::-;4060:38;;4109:12;4123::::0;4139:58:::1;4158:7;4167;4176:9;4187;4139:18;:58::i;:::-;4108:89:::0;;-1:-1:-1;4108:89:40;-1:-1:-1;4207:26:40::1;;::::0;::::1;::::0;::::1;:::i;:::-;::::0;-1:-1:-1;4243:26:40::1;;::::0;::::1;::::0;::::1;:::i;:::-;;;4281:20;4303:14:::0;4321:30:::1;4330:9;4341;4321:8;:30::i;:::-;4280:71;;;;4366:12;4382:1;4366:17;4362:290;;;4417:1;4407:7;:11;:26;;;;;4432:1;4422:7;:11;4407:26;4399:54;;;::::0;::::1;::::0;;16219:2:64;4399:54:40::1;::::0;::::1;16201:21:64::0;16258:2;16238:18;;;16231:30;16297:17;16277:18;;;16270:45;16332:18;;4399:54:40::1;16017:339:64::0;4399:54:40::1;4479:26;1088:5;4479:6:::0;:26:::1;:::i;:::-;4467:38;;4519:36;4533:1;1088:5;4519;:36::i;:::-;4362:290;;;4635:6:::0;4619:12;4600:15:::1;4635:6:::0;4600;:15:::1;:::i;:::-;4599:32;;;;:::i;:::-;4598:43;;;;:::i;:::-;4586:55;;4362:290;4669:14:::0;4661:56:::1;;;::::0;::::1;::::0;;15861:2:64;4661:56:40::1;::::0;::::1;15843:21:64::0;15900:2;15880:18;;;15873:30;15939:31;15919:18;;;15912:59;15988:18;;4661:56:40::1;15659:353:64::0;4661:56:40::1;4727:27;4733:9;4744;4727:5;:27::i;:::-;4764:17;:15;:17::i;:::-;4792:5;:14:::0;;;4868:64:::1;::::0;;18020:25:64;;;18076:2;18061:18;;18054:34;;;18104:18;;;18097:34;;;4844:9:40;;4868:64:::1;::::0;::::1;::::0;4873:10:::1;::::0;4868:64:::1;::::0;18008:2:64;17993:18;4868:64:40::1;;;;;;;-1:-1:-1::0;;2392:1:40;2381:8;:12;-1:-1:-1;3672:1267:40;;;-1:-1:-1;;;;;;;;;;;;3672:1267:40:o;10674:80::-;10724:14;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10715:6;:32;10674:80::o;18251:663::-;18324:22;;;18396:36;;;;18407:4;18396:36;:::i;:::-;18358:74;;;;18443:17;18462;18483:14;:12;:14::i;:::-;18518:40;;;;;:14;9683:55:64;;;18518:40:40;;;9665:74:64;9755:18;;;9748:34;;;18552:5:40;9798:18:64;;;9791:50;18442:55:40;;-1:-1:-1;18442:55:40;;-1:-1:-1;18518:5:40;:14;;;;;;9638:18:64;;18518:40:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18507:51;;18584:6;18573:17;;:7;:17;;;18569:339;;;18623:5;:13;;;18637:6;18645:51;18659:8;18669:9;18680;18691:4;18645:13;:51::i;:::-;18623:81;;;;;;;;;;9695:42:64;9683:55;;;18623:81:40;;;9665:74:64;9755:18;;;9748:34;18698:5:40;9798:18:64;;;9791:50;9638:18;;18623:81:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18606:98;;18569:339;;;18754:6;18743:17;;:7;:17;;;18735:49;;;;;;;15164:2:64;18735:49:40;;;15146:21:64;15203:2;15183:18;;;15176:30;15242:21;15222:18;;;15215:49;15281:18;;18735:49:40;14962:343:64;18735:49:40;18815:5;:13;;;18829:6;18837:52;18851:8;18861:9;18872;18883:5;18837:13;:52::i;:::-;18815:82;;;;;;;;;;9695:42:64;9683:55;;;18815:82:40;;;9665:74:64;9755:18;;;9748:34;18891:5:40;9798:18:64;;;9791:50;9638:18;;18815:82:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18798:99;;18569:339;18348:566;;;;18251:663;;;;:::o;3024:393:45:-;3121:10;3095:4;3111:21;;;:9;:21;;;;;:31;;3136:6;;3111:21;3095:4;;3111:31;;3136:6;;3111:31;:::i;:::-;;;;-1:-1:-1;;3295:20:45;;;;;;;:9;:20;;;;;;;:30;;;;;;3350:39;3359:10;;3350:39;;;;3319:6;11726:25:64;;11714:2;11699:18;;11580:177;6292:1540:40;6363:17;2314:8;;2326:1;2314:13;2306:32;;;;;;;17251:2:64;2306:32:40;;;17233:21:64;17290:1;17270:18;;;17263:29;17328:8;17308:18;;;17301:36;17354:18;;2306:32:40;17049:329:64;2306:32:40;2359:1;2348:8;:12;6393:16:::1;::::0;;6450:42:::1;::::0;;::::1;6461:4:::0;6450:42:::1;:::i;:::-;6392:100;;;;;;6503:16;6521::::0;6541:10:::1;:8;:10::i;:::-;6599:4;6561:17;6581:24:::0;;;:9:::1;:24;::::0;;;;;6502:49;;-1:-1:-1;6502:49:40;;-1:-1:-1;6643:28:40::1;6502:49:::0;;6643:8:::1;:28::i;:::-;-1:-1:-1::0;6616:55:40;-1:-1:-1;6682:15:40::1;6616:55:::0;6701:20:::1;6713:8:::0;6701:9;:20:::1;:::i;:::-;6700:37;;;;:::i;:::-;6682:55:::0;-1:-1:-1;6747:15:40::1;6790:12:::0;6766:20:::1;6778:8:::0;6766:9;:20:::1;:::i;:::-;6765:37;;;;:::i;:::-;6747:55;;6813:31;6827:4;6834:9;6813:5;:31::i;:::-;6862:57;6880:18;6891:7:::0;6880:8;:18:::1;:::i;6862:57::-;6854:5;:65;;;;6969:6;6957:18;;:8;:18;;;6953:775;;;7181:68;7195:7:::0;7204:18:::1;7195:7:::0;7204:8;:18:::1;:::i;:::-;7224;7235:7:::0;7224:8;:18:::1;:::i;:::-;7244:4;7181:13;:68::i;:::-;7170:79;::::0;;::::1;:::i;:::-;;;7263:50;7273:6;7281:7;7290:9;7301:11;7263:9;:50::i;:::-;7339:7;7327:19;;7370:1;7360:11;;6953:775;;;7470:6;7458:18;;:8;:18;;;7450:51;;;::::0;::::1;::::0;;15512:2:64;7450:51:40::1;::::0;::::1;15494:21:64::0;15551:2;15531:18;;;15524:30;15590:22;15570:18;;;15563:50;15630:18;;7450:51:40::1;15310:344:64::0;7450:51:40::1;7526:69;7540:7:::0;7549:18:::1;7560:7:::0;7549:8;:18:::1;:::i;:::-;7569;7580:7:::0;7569:8;:18:::1;:::i;:::-;7589:5;7526:13;:69::i;:::-;7515:80;::::0;;::::1;:::i;:::-;;;7609:50;7619:6;7627:7;7636:9;7647:11;7609:9;:50::i;:::-;-1:-1:-1::0;7685:7:40;-1:-1:-1;7685:7:40;7716:1:::1;6953:775;7737:17;:15;:17::i;:::-;7769:56;::::0;;18020:25:64;;;18076:2;18061:18;;18054:34;;;18104:18;;;18097:34;;;7769:56:40::1;::::0;::::1;::::0;7774:10:::1;::::0;7769:56:::1;::::0;18008:2:64;17993:18;7769:56:40::1;;;;;;;-1:-1:-1::0;;2392:1:40;2381:8;:12;-1:-1:-1;6292:1540:40;;;-1:-1:-1;;;;;;;;6292:1540:40:o;4785:796:45:-;4999:15;4987:8;:27;;4979:63;;;;;;;16899:2:64;4979:63:45;;;16881:21:64;16938:2;16918:18;;;16911:30;16977:25;16957:18;;;16950:53;17020:18;;4979:63:45;16697:347:64;4979:63:45;5052:14;5154:18;:16;:18::i;:::-;5252:13;;;;;;;:6;:13;;;;;:15;;1232:95;;5228:5;;5235:7;;5244:6;;5252:15;;:13;:15;;;:::i;:::-;;;;-1:-1:-1;5200:78:45;;;;;;12049:25:64;;;;12093:42;12171:15;;;12151:18;;;12144:43;12223:15;;;;12203:18;;;12196:43;12255:18;;;12248:34;12298:19;;;12291:35;12342:19;;;12335:35;;;12021:19;;5200:78:45;;;;;;;;;;;;5190:89;;;;;;5092:201;;;;;;;;7679:66:64;7667:79;;7771:1;7762:11;;7755:27;;;;7807:2;7798:12;;7791:28;7844:2;7835:12;;7409:444;5092:201:45;;;;;;;;;;;;;;5069:234;;5092:201;5069:234;;;;5313:24;5340:26;;;;;;;;;13125:25:64;;;13198:4;13186:17;;13166:18;;;13159:45;;;;13220:18;;;13213:34;;;13263:18;;;13256:34;;;5069:234:45;;-1:-1:-1;5313:24:45;5340:26;;13097:19:64;;5340:26:45;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5340:26:45;;;;;;-1:-1:-1;;5384:30:45;;;;;;;:59;;;5438:5;5418:25;;:16;:25;;;5384:59;5376:96;;;;;;;14460:2:64;5376:96:45;;;14442:21:64;14499:2;14479:18;;;14472:30;14538:26;14518:18;;;14511:54;14582:18;;5376:96:45;14258:348:64;5376:96:45;5482:27;;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:45;;;5542:32;11726:25:64;;;5482:36:45;;5542:32;;;;;11699:18:64;5542:32:45;;;;;;;4969:612;;4785:796;;;;;;;:::o;19171:271:40:-;19219:20;19252:17;19271;19292:14;:12;:14::i;:::-;19251:55;;;;19316:9;19328:39;19346:9;19357;19328:17;:39::i;:::-;19424:11;;19316:51;;-1:-1:-1;19398:21:40;614:2:45;19406::40;19398:21;:::i;:::-;19393:27;;:1;:27;:::i;:::-;19392:43;;;;:::i;:::-;19377:58;;19241:201;;;19171:271;:::o;11077:::-;11198:8;;11239:40;;;;;:14;11254:6;9683:55:64;;11239:40:40;;;9665:74:64;11198:8:40;;;;9755:18:64;;;9748:34;;;-1:-1:-1;9798:18:64;;;9791:50;11198:8:40;11208;;;;;11239:5;:14;;;;;;9638:18:64;;11239:40:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11301;;;;;:14;11316:6;9683:55:64;;11301:40:40;;;9665:74:64;9755:18;;;9748:34;;;-1:-1:-1;9798:18:64;;;9791:50;11227:52:40;;-1:-1:-1;11301:5:40;:14;;;;;;9638:18:64;;11301:40:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11289:52;;11077:271;;:::o;12653:1078::-;12808:10;12893:25;12881:37;;12971:25;12959:37;;1284:5;13063:7;13052:18;;13051:30;13040:41;;12808:10;13107:73;12881:37;12959;13107;:73::i;:::-;13095:85;;13199:8;13195:520;;;13281:25;13259:47;;13239:68;;13227:9;13337:11;13239:68;13346:1;13337:5;:11::i;:::-;13325:23;;13394:1;13390;13371:16;:20;:24;13366:29;;13419:25;13413:31;;;;;;:::i;:::-;;;;13209:250;;13195:520;;;13537:25;13515:47;;13495:68;;13483:9;13593:11;13495:68;13602:1;13593:5;:11::i;:::-;13581:23;;13650:1;13646;13627:16;:20;:24;13622:29;;13675:25;13669:31;;;;;;:::i;:::-;;;;13465:250;;13195:520;12830:895;;;;12653:1078;;;;;;:::o;10760:311::-;10933:47;10943:8;10953:9;10964:2;10968:11;10933:9;:47::i;:::-;10994:11;;:16;10990:74;;11012:52;;;;;11027:10;;11012:46;;:52;;11059:4;;11012:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10990:74;10760:311;;;;;:::o;12057:318::-;12104:17;12123;12144:10;:8;:10::i;:::-;12103:51;;-1:-1:-1;12103:51:40;-1:-1:-1;12185:17:40;12172:30;;;;;:64;;-1:-1:-1;12219:17:40;12206:30;;;12172:64;12164:85;;;;;;;16563:2:64;12164:85:40;;;16545:21:64;16602:1;16582:18;;;16575:29;16640:10;16620:18;;;16613:38;16668:18;;12164:85:40;16361:331:64;12164:85:40;12259:29;12298;;;;;12259;;;12298;12259:8;12298:29;12342:26;;;17739:25:64;;;17795:2;17780:18;;17773:34;;;12342:26:40;;17712:18:64;12342:26:40;;;;;;;12093:282;;12057:318::o;12381:266::-;12504:38;;;;;12481:14;12496:6;8342:15:64;;;12504:38:40;;;8324:34:64;12536:4:40;8374:18:64;;;8367:43;-1:-1:-1;;;;12481:5:40;:14;;;;;;12504:15;;8236:18:64;;12504:38:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12481:69;;;;;;;;;;9695:42:64;9683:55;;;12481:69:40;;;9665:74:64;9755:18;;;9748:34;12544:5:40;9798:18:64;;;9791:50;9638:18;;12481:69:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12594:38;;;;;12571:14;12586:6;8342:15:64;;;12594:38:40;;;8324:34:64;12626:4:40;8374:18:64;;;8367:43;12470:80:40;;-1:-1:-1;12571:5:40;:14;;;;;;12594:15;;8236:18:64;;12594:38:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12571:69;;;;;;;;;;9695:42:64;9683:55;;;12571:69:40;;;9665:74:64;9755:18;;;9748:34;12634:5:40;9798:18:64;;;9791:50;9638:18;;12571:69:40;9469:378:64;16530:793:40;16604:20;16662:11;;16700:5;;16662:11;;16604:20;16719:11;;16715:602;;16750:39;16768:9;16779;16750:17;:39::i;:::-;16746:43;;16811:6;16807:1;:10;16803:504;;;16916:6;;16898:15;16916:6;16976:10;16980:6;16976:1;:10;:::i;:::-;16960:27;;:12;:27;:::i;:::-;:37;;;;:::i;:::-;16940:57;-1:-1:-1;17015:19:40;17063:16;17073:6;17063:7;:16;:::i;:::-;17059:1;17038:17;17048:7;1284:5;17038:17;:::i;:::-;17037:23;;;;:::i;:::-;:42;;;;:::i;:::-;17015:64;-1:-1:-1;17097:17:40;17117:23;17015:64;17117:9;:23;:::i;:::-;17097:43;-1:-1:-1;17163:14:40;;17159:134;;17201:26;17207:8;17217:9;17201:5;:26::i;:::-;17249:25;17265:9;17249:25;;:::i;:::-;;;17159:134;16819:488;;;;16803:504;16637:686;16530:793;;;;;:::o;5937:332:45:-;6003:17;;;;;;;:9;:17;;;;;:27;;6024:6;;6003:17;:27;;6024:6;;6003:27;:::i;:::-;;;;-1:-1:-1;;6180:11:45;:21;;;;;;;6226:36;;11726:25:64;;;6226:36:45;;;;;;11714:2:64;11699:18;6226:36:45;;;;;;;;5937:332;;:::o;13737:344:40:-;13878:11;13874:201;;;13905:51;;;;;:14;9251:15:64;;;13905:51:40;;;9233:34:64;13935:4:40;9283:18:64;;;9276:43;9355:15;;;9335:18;;;9328:43;9387:18;;;9380:34;;;13954:1:40;9430:19:64;;;9423:35;13905:5:40;:14;;;;9144:19:64;;13905:51:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;13874:201;;;14028:35;;;;;13987:14;9683:55:64;;;14028:35:40;;;9665:74:64;9755:18;;;9748:34;;;14057:5:40;9798:18:64;;;9791:50;13987:5:40;:14;;;;14002:5;;14017:4;;14024:2;;13987:14;;14028:13;;9638:18:64;;14028:35:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13987:77;;;;;;;;;;8662:42:64;8731:15;;;13987:77:40;;;8713:34:64;8783:15;;;8763:18;;;8756:43;8835:15;;8815:18;;;8808:43;8867:18;;;8860:34;;;;8624:19;;13987:77:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13874:201;13737:344;;;;:::o;14450:399::-;14538:17;14630:25;14618:37;;14708:25;14696:37;;14759:73;14618:37;14696;14759;:73::i;:::-;14747:85;14450:399;-1:-1:-1;;;;;14450:399:40:o;11354:697::-;11608:8;;11648:38;;;;;:15;11664:6;8342:15:64;;11648:38:40;;;8324:34:64;11680:4:40;8374:18:64;;;8367:43;11608:8:40;;;;;11618;;;;;-1:-1:-1;;;;11648:5:40;:15;;;;;;8236:18:64;;11648:38:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11707;;;;;:15;11723:6;8342:15:64;;11707:38:40;;;8324:34:64;11739:4:40;8374:18:64;;;8367:43;11637:49:40;;-1:-1:-1;11707:5:40;:15;;;;;;8236:18:64;;11707:38:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11778:20;;;;;:12;11791:6;8022:55:64;;11778:20:40;;;8004:74:64;11696:49:40;;-1:-1:-1;;;11778:5:40;:12;;;;7977:18:64;;11778:20:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11831;;;;;:12;11844:6;8022:55:64;;11831:20:40;;;8004:74:64;11755:43:40;;-1:-1:-1;;;11831:5:40;:12;;;;7977:18:64;;11831:20:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11808:43;-1:-1:-1;11874:27:40;:6;11891:9;11874:16;:27::i;:::-;11862:39;-1:-1:-1;11923:27:40;:6;11940:9;11923:16;:27::i;:::-;11911:39;-1:-1:-1;11971:26:40;:6;11988:8;11971:16;:26::i;:::-;11960:37;-1:-1:-1;12018:26:40;:6;12035:8;12018:16;:26::i;:::-;12007:37;;11572:479;;11354:697;;;;:::o;17422:643::-;17585:17;;17637:14;;;:32;;-1:-1:-1;17655:14:40;;17637:32;17633:51;;;-1:-1:-1;17679:1:40;;-1:-1:-1;17679:1:40;17671:13;;17633:51;17694:22;17744:9;17720:20;17731:9;17720:8;:20;:::i;:::-;17719:34;;;;:::i;:::-;17694:59;;17786:8;17768:14;:26;17764:295;;17865:11;1284:5;17865:1;:11;:::i;:::-;17834:25;17845:14;17834:8;:25;:::i;:::-;17823:37;;:7;:37;:::i;:::-;17822:55;;;;:::i;:::-;17810:67;;17764:295;;;17908:22;17958:9;17934:20;17945:9;17934:8;:20;:::i;:::-;17933:34;;;;:::i;:::-;17908:59;-1:-1:-1;18036:11:40;1284:5;18036:1;:11;:::i;:::-;18005:25;18016:14;18005:8;:25;:::i;:::-;17994:37;;:7;:37;:::i;:::-;17993:55;;;;:::i;:::-;17981:67;;17894:165;17764:295;17623:442;17422:643;;;;;;;;:::o;5587:344:45:-;5671:6;5656:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;5830:20:45;;;;;;;:9;:20;;;;;;;;:30;;;;;;5885:39;11726:25:64;;;5885:39:45;;11699:18:64;5885:39:45;11580:177:64;14855:597:40;14951:16;;14991:9;14997:3;14991;:9;:::i;:::-;14979:21;-1:-1:-1;15015:6:40;15011:49;;15048:1;15037:12;;15011:49;15069:13;15104:1;15069:13;15115:309;1239:3;15135:1;:18;15115:309;;;15174:10;15217:1;15211:3;15206:1;15199:3;15190:5;15206:1;;15190:5;:::i;:::-;15189:13;;;;:::i;:::-;15188:19;;;;:::i;:::-;15187:27;;;;:::i;:::-;:31;;;;:::i;:::-;15174:44;;15240:1;15232:9;;15337:2;15333:1;:6;;;;:::i;:::-;15329:1;15324;15304:17;1682:3;15304;:17;:::i;:::-;:21;;;;:::i;:::-;15303:27;;;;:::i;:::-;:36;;;;:::i;:::-;15297:1;15287:6;15291:2;15287:1;:6;:::i;:::-;1682:3;15262:7;15268:1;15262:3;:7;:::i;:::-;15261:23;;;;:::i;:::-;:32;;;;:::i;:::-;15260:38;;;;:::i;:::-;15259:81;;;;:::i;:::-;15255:85;-1:-1:-1;15358:16:40;15255:85;15368:5;15358:9;:16::i;:::-;15354:60;;;15394:5;;;15354:60;-1:-1:-1;15155:3:40;;;;:::i;:::-;;;;15115:309;;;-1:-1:-1;15444:1:40;14855:597;-1:-1:-1;;;;;14855:597:40:o;16020:504::-;16080:9;;16124:5;:1;16128;16124:5;:::i;:::-;16114;16118:1;;16114:5;:::i;:::-;16113:17;;;;:::i;:::-;16101:29;-1:-1:-1;1682:3:40;16156:7;:3;16162:1;16156:7;:::i;:::-;16155:23;;;;:::i;:::-;16145:5;16149:1;16145;:5;:::i;:::-;16144:35;;;;:::i;:::-;16140:39;-1:-1:-1;16189:9:40;16226:3;16207:15;1682:3;16207:1;:15;:::i;:::-;16206:23;;;;:::i;:::-;16201:29;;:1;:29;:::i;:::-;16189:41;;16240:13;16267:1;16263:5;;16324:9;16319:199;1239:3;16339:1;:18;16319:199;;;16386:1;;-1:-1:-1;16432:1:40;16428;16420:5;16386:1;16424;16420:5;:::i;:::-;:9;;;;:::i;:::-;:13;;;;:::i;:::-;16414:1;16406:5;16410:1;;16406:5;:::i;:::-;:9;;;;:::i;:::-;16405:29;;;;:::i;:::-;16401:33;-1:-1:-1;16452:16:40;16401:33;16462:5;16452:9;:16::i;:::-;16448:60;;;16488:5;;16448:60;16359:3;;;;:::i;:::-;;;;16319:199;;606:246:23;683:15;714:5;:10;;;:15;;728:1;714:15;710:136;;;-1:-1:-1;755:4:23;710:136;;;825:10;;;;808:13;;800:35;;;;;801:20;;;:4;:20;:::i;:::-;800:35;;;;:::i;:::-;790:45;606:246;-1:-1:-1;;;606:246:23:o;520:210:22:-;582:4;630:1;626;:5;622:61;;;-1:-1:-1;667:1:22;658:5;;;:10;;651:17;;622:61;-1:-1:-1;712:1:22;703:5;;;:10;;;520:210::o;14:160:64:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:192::-;258:13;;311:34;300:46;;290:57;;280:85;;361:1;358;351:12;376:247;435:6;488:2;476:9;467:7;463:23;459:32;456:52;;;504:1;501;494:12;456:52;543:9;530:23;562:31;587:5;562:31;:::i;888:472::-;978:6;986;994;1047:2;1035:9;1026:7;1022:23;1018:32;1015:52;;;1063:1;1060;1053:12;1015:52;1102:9;1089:23;1121:31;1146:5;1121:31;:::i;:::-;1171:5;-1:-1:-1;1228:2:64;1213:18;;1200:32;1241:33;1200:32;1241:33;:::i;:::-;1293:7;-1:-1:-1;1319:35:64;1350:2;1335:18;;1319:35;:::i;:::-;1309:45;;888:472;;;;;:::o;1365:1252::-;1482:6;1490;1498;1506;1514;1567:3;1555:9;1546:7;1542:23;1538:33;1535:53;;;1584:1;1581;1574:12;1535:53;1623:9;1610:23;1642:31;1667:5;1642:31;:::i;:::-;1692:5;-1:-1:-1;1716:2:64;1755:18;;;1742:32;1783:33;1742:32;1783:33;:::i;:::-;1835:7;-1:-1:-1;1861:35:64;1892:2;1877:18;;1861:35;:::i;:::-;1851:45;;1943:2;1932:9;1928:18;1915:32;1905:42;;1998:3;1987:9;1983:19;1970:33;2022:18;2063:2;2055:6;2052:14;2049:34;;;2079:1;2076;2069:12;2049:34;2117:6;2106:9;2102:22;2092:32;;2162:7;2155:4;2151:2;2147:13;2143:27;2133:55;;2184:1;2181;2174:12;2133:55;2220:2;2207:16;2242:2;2238;2235:10;2232:36;;;2248:18;;:::i;:::-;2290:112;2398:2;2329:66;2322:4;2318:2;2314:13;2310:86;2306:95;2290:112;:::i;:::-;2277:125;;2425:2;2418:5;2411:17;2465:7;2460:2;2455;2451;2447:11;2443:20;2440:33;2437:53;;;2486:1;2483;2476:12;2437:53;2541:2;2536;2532;2528:11;2523:2;2516:5;2512:14;2499:45;2585:1;2580:2;2575;2568:5;2564:14;2560:23;2553:34;;2606:5;2596:15;;;;;1365:1252;;;;;;;;:::o;2622:323::-;2695:6;2703;2756:2;2744:9;2735:7;2731:23;2727:32;2724:52;;;2772:1;2769;2762:12;2724:52;2811:9;2798:23;2830:31;2855:5;2830:31;:::i;:::-;2880:5;-1:-1:-1;2904:35:64;2935:2;2920:18;;2904:35;:::i;:::-;2894:45;;2622:323;;;;;:::o;2950:::-;3026:6;3034;3087:2;3075:9;3066:7;3062:23;3058:32;3055:52;;;3103:1;3100;3093:12;3055:52;3142:9;3129:23;3161:31;3186:5;3161:31;:::i;:::-;3211:5;3263:2;3248:18;;;;3235:32;;-1:-1:-1;;;2950:323:64:o;3278:388::-;3346:6;3354;3407:2;3395:9;3386:7;3382:23;3378:32;3375:52;;;3423:1;3420;3413:12;3375:52;3462:9;3449:23;3481:31;3506:5;3481:31;:::i;:::-;3531:5;-1:-1:-1;3588:2:64;3573:18;;3560:32;3601:33;3560:32;3601:33;:::i;:::-;3653:7;3643:17;;;3278:388;;;;;:::o;3671:456::-;3748:6;3756;3764;3817:2;3805:9;3796:7;3792:23;3788:32;3785:52;;;3833:1;3830;3823:12;3785:52;3872:9;3859:23;3891:31;3916:5;3891:31;:::i;:::-;3941:5;-1:-1:-1;3998:2:64;3983:18;;3970:32;4011:33;3970:32;4011:33;:::i;:::-;3671:456;;4063:7;;-1:-1:-1;;;4117:2:64;4102:18;;;;4089:32;;3671:456::o;4132:829::-;4243:6;4251;4259;4267;4275;4283;4291;4344:3;4332:9;4323:7;4319:23;4315:33;4312:53;;;4361:1;4358;4351:12;4312:53;4400:9;4387:23;4419:31;4444:5;4419:31;:::i;:::-;4469:5;-1:-1:-1;4526:2:64;4511:18;;4498:32;4539:33;4498:32;4539:33;:::i;:::-;4591:7;-1:-1:-1;4645:2:64;4630:18;;4617:32;;-1:-1:-1;4696:2:64;4681:18;;4668:32;;-1:-1:-1;4752:3:64;4737:19;;4724:33;4801:4;4788:18;;4776:31;;4766:59;;4821:1;4818;4811:12;4766:59;4132:829;;;;-1:-1:-1;4132:829:64;;;;4844:7;4898:3;4883:19;;4870:33;;-1:-1:-1;4950:3:64;4935:19;;;4922:33;;4132:829;-1:-1:-1;;4132:829:64:o;5286:591::-;5356:6;5364;5417:2;5405:9;5396:7;5392:23;5388:32;5385:52;;;5433:1;5430;5423:12;5385:52;5473:9;5460:23;5502:18;5543:2;5535:6;5532:14;5529:34;;;5559:1;5556;5549:12;5529:34;5597:6;5586:9;5582:22;5572:32;;5642:7;5635:4;5631:2;5627:13;5623:27;5613:55;;5664:1;5661;5654:12;5613:55;5704:2;5691:16;5730:2;5722:6;5719:14;5716:34;;;5746:1;5743;5736:12;5716:34;5791:7;5786:2;5777:6;5773:2;5769:15;5765:24;5762:37;5759:57;;;5812:1;5809;5802:12;5759:57;5843:2;5835:11;;;;;5865:6;;-1:-1:-1;5286:591:64;;-1:-1:-1;;;;5286:591:64:o;5882:548::-;5976:6;6029:2;6017:9;6008:7;6004:23;6000:32;5997:52;;;6045:1;6042;6035:12;5997:52;6078:2;6072:9;6120:2;6112:6;6108:15;6189:6;6177:10;6174:22;6153:18;6141:10;6138:34;6135:62;6132:88;;;6200:18;;:::i;:::-;6236:2;6229:22;6275:40;6305:9;6275:40;:::i;:::-;6267:6;6260:56;6349:49;6394:2;6383:9;6379:18;6349:49;:::i;:::-;6344:2;6332:15;;6325:74;6336:6;5882:548;-1:-1:-1;;;5882:548:64:o;6435:184::-;6505:6;6558:2;6546:9;6537:7;6533:23;6529:32;6526:52;;;6574:1;6571;6564:12;6526:52;-1:-1:-1;6597:16:64;;6435:184;-1:-1:-1;6435:184:64:o;6624:245::-;6703:6;6711;6764:2;6752:9;6743:7;6739:23;6735:32;6732:52;;;6780:1;6777;6770:12;6732:52;-1:-1:-1;;6803:16:64;;6859:2;6844:18;;;6838:25;6803:16;;6838:25;;-1:-1:-1;6624:245:64:o;6874:530::-;6915:3;6953:5;6947:12;6980:6;6975:3;6968:19;7005:1;7015:162;7029:6;7026:1;7023:13;7015:162;;;7091:4;7147:13;;;7143:22;;7137:29;7119:11;;;7115:20;;7108:59;7044:12;7015:162;;;7195:6;7192:1;7189:13;7186:87;;;7261:1;7254:4;7245:6;7240:3;7236:16;7232:27;7225:38;7186:87;-1:-1:-1;7318:2:64;7306:15;7323:66;7302:88;7293:98;;;;7393:4;7289:109;;6874:530;-1:-1:-1;;6874:530:64:o;9852:681::-;10023:2;10075:21;;;10145:13;;10048:18;;;10167:22;;;9994:4;;10023:2;10246:15;;;;10220:2;10205:18;;;9994:4;10289:218;10303:6;10300:1;10297:13;10289:218;;;10368:13;;10383:42;10364:62;10352:75;;10482:15;;;;10447:12;;;;10325:1;10318:9;10289:218;;;-1:-1:-1;10524:3:64;;9852:681;-1:-1:-1;;;;;;9852:681:64:o;10538:845::-;10767:2;10819:21;;;10889:13;;10792:18;;;10911:22;;;10738:4;;10767:2;10952;;10970:18;;;;11011:15;;;10738:4;11054:303;11068:6;11065:1;11062:13;11054:303;;;11127:13;;11169:9;;11180:42;11165:58;11153:71;;11264:11;;11258:18;11244:12;;;11237:40;11297:12;;;;11332:15;;;;11090:1;11083:9;11054:303;;;-1:-1:-1;11374:3:64;;10538:845;-1:-1:-1;;;;;;;10538:845:64:o;13301:217::-;13448:2;13437:9;13430:21;13411:4;13468:44;13508:2;13497:9;13493:18;13485:6;13468:44;:::i;18331:334::-;18402:2;18396:9;18458:2;18448:13;;18463:66;18444:86;18432:99;;18561:18;18546:34;;18582:22;;;18543:62;18540:88;;;18608:18;;:::i;:::-;18644:2;18637:22;18331:334;;-1:-1:-1;18331:334:64:o;18670:128::-;18710:3;18741:1;18737:6;18734:1;18731:13;18728:39;;;18747:18;;:::i;:::-;-1:-1:-1;18783:9:64;;18670:128::o;18803:274::-;18843:1;18869;18859:189;;18904:77;18901:1;18894:88;19005:4;19002:1;18995:15;19033:4;19030:1;19023:15;18859:189;-1:-1:-1;19062:9:64;;18803:274::o;19082:482::-;19171:1;19214:5;19171:1;19228:330;19249:7;19239:8;19236:21;19228:330;;;19368:4;19300:66;19296:77;19290:4;19287:87;19284:113;;;19377:18;;:::i;:::-;19427:7;19417:8;19413:22;19410:55;;;19447:16;;;;19410:55;19526:22;;;;19486:15;;;;19228:330;;19569:140;19627:5;19656:47;19697:4;19687:8;19683:19;19677:4;19763:5;19793:8;19783:80;;-1:-1:-1;19834:1:64;19848:5;;19783:80;19882:4;19872:76;;-1:-1:-1;19919:1:64;19933:5;;19872:76;19964:4;19982:1;19977:59;;;;20050:1;20045:130;;;;19957:218;;19977:59;20007:1;19998:10;;20021:5;;;20045:130;20082:3;20072:8;20069:17;20066:43;;;20089:18;;:::i;:::-;-1:-1:-1;;20145:1:64;20131:16;;20160:5;;19957:218;;20259:2;20249:8;20246:16;20240:3;20234:4;20231:13;20227:36;20221:2;20211:8;20208:16;20203:2;20197:4;20194:12;20190:35;20187:77;20184:159;;;-1:-1:-1;20296:19:64;;;20328:5;;20184:159;20375:34;20400:8;20394:4;20375:34;:::i;:::-;20505:6;20437:66;20433:79;20424:7;20421:92;20418:118;;;20516:18;;:::i;:::-;20554:20;;19714:866;-1:-1:-1;;;19714:866:64:o;20585:228::-;20625:7;20751:1;20683:66;20679:74;20676:1;20673:81;20668:1;20661:9;20654:17;20650:105;20647:131;;;20758:18;;:::i;:::-;-1:-1:-1;20798:9:64;;20585:228::o;20818:125::-;20858:4;20886:1;20883;20880:8;20877:34;;;20891:18;;:::i;:::-;-1:-1:-1;20928:9:64;;20818:125::o;20948:195::-;20987:3;21018:66;21011:5;21008:77;21005:103;;;21088:18;;:::i;:::-;-1:-1:-1;21135:1:64;21124:13;;20948:195::o;21148:184::-;21200:77;21197:1;21190:88;21297:4;21294:1;21287:15;21321:4;21318:1;21311:15;21337:184;21389:77;21386:1;21379:88;21486:4;21483:1;21476:15;21510:4;21507:1;21500:15;21526:184;21578:77;21575:1;21568:88;21675:4;21672:1;21665:15;21699:4;21696:1;21689:15;21715:184;21767:77;21764:1;21757:88;21864:4;21861:1;21854:15;21888:4;21885:1;21878:15;21904:154;21990:42;21983:5;21979:54;21972:5;21969:65;21959:93;;22048:1;22045;22038:12;21959:93;21904:154;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "3577600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "A()": "infinite",
                "DOMAIN_SEPARATOR()": "infinite",
                "PERMIT_TYPEHASH()": "252",
                "allowance(address,address)": "infinite",
                "approve(address,uint256)": "24583",
                "balanceOf(address)": "2558",
                "barFee()": "2373",
                "barFeeTo()": "infinite",
                "bento()": "infinite",
                "burn(bytes)": "infinite",
                "burnSingle(bytes)": "infinite",
                "decimals()": "294",
                "flashSwap(bytes)": "infinite",
                "getAmountIn(bytes)": "467",
                "getAmountOut(bytes)": "infinite",
                "getAssets()": "infinite",
                "getReserves()": "infinite",
                "getVirtualPrice()": "infinite",
                "masterDeployer()": "infinite",
                "mint(bytes)": "infinite",
                "name()": "infinite",
                "nonces(address)": "2602",
                "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "infinite",
                "poolIdentifier()": "251",
                "swap(bytes)": "infinite",
                "swapFee()": "infinite",
                "symbol()": "infinite",
                "token0()": "infinite",
                "token0PrecisionMultiplier()": "infinite",
                "token1()": "infinite",
                "token1PrecisionMultiplier()": "infinite",
                "totalSupply()": "2374",
                "transfer(address,uint256)": "50981",
                "transferFrom(address,address,uint256)": "infinite",
                "updateBarFee()": "infinite"
              },
              "internal": {
                "_balance()": "infinite",
                "_computeLiquidity(uint256,uint256)": "infinite",
                "_computeLiquidityFromAdjustedBalances(uint256,uint256)": "infinite",
                "_getAmountOut(uint256,uint256,uint256,bool)": "infinite",
                "_getReserves()": "infinite",
                "_getReservesAndBalances()": "infinite",
                "_getY(uint256,uint256)": "infinite",
                "_mintFee(uint256,uint256)": "infinite",
                "_nonOptimalMintFee(uint256,uint256,uint256,uint256)": "infinite",
                "_processSwap(address,address,uint256,bytes memory,bool)": "infinite",
                "_transfer(address,uint256,address,bool)": "infinite",
                "_updateReserves()": "infinite"
              }
            },
            "methodIdentifiers": {
              "A()": "f446c1d0",
              "DOMAIN_SEPARATOR()": "3644e515",
              "PERMIT_TYPEHASH()": "30adf81f",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "barFee()": "c14ad802",
              "barFeeTo()": "0c0a0cd2",
              "bento()": "4da31827",
              "burn(bytes)": "2a07b6c7",
              "burnSingle(bytes)": "af8c09bf",
              "decimals()": "313ce567",
              "flashSwap(bytes)": "053da1c8",
              "getAmountIn(bytes)": "499a3c50",
              "getAmountOut(bytes)": "a8f1f52e",
              "getAssets()": "67e4ac2c",
              "getReserves()": "0902f1ac",
              "getVirtualPrice()": "e25aa5fa",
              "masterDeployer()": "cf58879a",
              "mint(bytes)": "7ba0e2e7",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "poolIdentifier()": "a69840a8",
              "swap(bytes)": "627dd56a",
              "swapFee()": "54cf2aeb",
              "symbol()": "95d89b41",
              "token0()": "0dfe1681",
              "token0PrecisionMultiplier()": "baa8c7cb",
              "token1()": "d21220a7",
              "token1PrecisionMultiplier()": "4e25dc47",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "updateBarFee()": "92bc3219"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_deployData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_masterDeployer\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reserve0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reserve1\",\"type\":\"uint256\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"A\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"domainSeperator\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"barFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"barFeeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bento\",\"outputs\":[{\"internalType\":\"contract IBentoBoxMinimal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burn\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPool.TokenAmount[]\",\"name\":\"withdrawnAmounts\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burnSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"finalAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAssets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_reserve0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_reserve1\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVirtualPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"virtualPrice\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterDeployer\",\"outputs\":[{\"internalType\":\"contract IMasterDeployer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolIdentifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0PrecisionMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1PrecisionMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateBarFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The reserves are stored as bento shares. However, the stableswap invariant is applied to the underlying amounts.      The API uses the underlying amounts.\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"params\":{\"amount\":\"The maximum collective `amount` that `spender` can pull.\",\"spender\":\"Address of the party that can pull tokens from `msg.sender`'s account.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"burn(bytes)\":{\"details\":\"Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\"},\"burnSingle(bytes)\":{\"details\":\"Burns LP tokens sent to this contract and swaps one of the output tokens for another - i.e., the user gets a single token out by burning LP tokens.\"},\"flashSwap(bytes)\":{\"details\":\"Swaps one token for another with payload. The router must support swap callbacks and ensure there isn't too much slippage.\"},\"getAmountOut(bytes)\":{\"details\":\"The pool does not need to include a trade simulator directly in itself - it can use a library.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"finalAmountOut\":\"The amount of output tokens that will be sent to the user if the trade is executed.\"}},\"getAssets()\":{\"returns\":{\"assets\":\"An array of tokens supported by the pool.\"}},\"mint(bytes)\":{\"details\":\"Mints LP tokens - should be called via the router after transferring `bento` tokens. The router must ensure that sufficient LP tokens are minted by using the return value.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"amount\":\"The number of tokens that are approved (2^256-1 means infinite).\",\"deadline\":\"The time at which to expire the signature.\",\"owner\":\"The address to approve from.\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"spender\":\"The address to be approved.\",\"v\":\"The recovery byte of the signature.\"}},\"swap(bytes)\":{\"details\":\"Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\"},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The token `amount` to move.\",\"recipient\":\"The address to move tokens to.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The token `amount` to move.\",\"recipient\":\"The address to move tokens to.\",\"sender\":\"Address to pull tokens `from`.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"updateBarFee()\":{\"details\":\"Updates `barFee` for Trident protocol.\"}},\"stateVariables\":{\"MAX_LOOP_LIMIT\":{\"details\":\"Constant value used as max loop limit.\"},\"poolIdentifier\":{\"return\":\"A unique identifier for the pool type.\",\"returns\":{\"_0\":\"A unique identifier for the pool type.\"}},\"token0PrecisionMultiplier\":{\"details\":\"Multipliers for each pooled token's precision to get to POOL_PRECISION_DECIMALS. For example, TBTC has 18 decimals, so the multiplier should be 1. WBTC has 8, so the multiplier should be 10 ** 18 / 10 ** 8 => 10 ** 10.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"EIP-712 typehash for this contract's domain.\"},\"PERMIT_TYPEHASH()\":{\"notice\":\"EIP-712 typehash for this contract's {permit} struct.\"},\"allowance(address,address)\":{\"notice\":\"owner -> spender -> allowance mapping.\"},\"approve(address,uint256)\":{\"notice\":\"Approves `amount` from `msg.sender` to be spent by `spender`.\"},\"balanceOf(address)\":{\"notice\":\"owner -> balance mapping.\"},\"getAmountOut(bytes)\":{\"notice\":\"Simulates a trade and returns the expected output.\"},\"nonces(address)\":{\"notice\":\"owner -> nonce mapping used in {permit}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Triggers an approval from `owner` to `spender`.\"},\"transfer(address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `msg.sender` to `recipient`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\"}},\"notice\":\"Trident exchange pool template with hybrid like-kind formula for swapping between an ERC-20 token pair.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/HybridPool.sol\":\"HybridPool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentCallee.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool callback interface.\\ninterface ITridentCallee {\\n    function tridentSwapCallback(bytes calldata data) external;\\n\\n    function tridentMintCallback(bytes calldata data) external;\\n}\\n\",\"keccak256\":\"0x256e838362a3064201b37b3b7c08bc1421b173a6fea633176123f0b827b868c9\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/MathUtils.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice A library that contains functions for calculating differences between two uint256.\\n/// @author Adapted from https://github.com/saddle-finance/saddle-contract/blob/master/contracts/MathUtils.sol.\\nlibrary MathUtils {\\n    /// @notice Compares a and b and returns 'true' if the difference between a and b\\n    /// is less than 1 or equal to each other.\\n    /// @param a uint256 to compare with.\\n    /// @param b uint256 to compare with.\\n    function within1(uint256 a, uint256 b) internal pure returns (bool) {\\n        unchecked {\\n            if (a > b) {\\n                return a - b <= 1;\\n            }\\n            return b - a <= 1;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x7f02d5a108fe7743d0aa4274a0234f81ffe25ba702ce6ba46d94db27cde97d52\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/HybridPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../interfaces/IBentoBoxMinimal.sol\\\";\\nimport \\\"../interfaces/IMasterDeployer.sol\\\";\\nimport \\\"../interfaces/IPool.sol\\\";\\nimport \\\"../interfaces/ITridentCallee.sol\\\";\\nimport \\\"../libraries/MathUtils.sol\\\";\\nimport \\\"./TridentERC20.sol\\\";\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Trident exchange pool template with hybrid like-kind formula for swapping between an ERC-20 token pair.\\n/// @dev The reserves are stored as bento shares. However, the stableswap invariant is applied to the underlying amounts.\\n///      The API uses the underlying amounts.\\ncontract HybridPool is IPool, TridentERC20 {\\n    using MathUtils for uint256;\\n    using RebaseLibrary for Rebase;\\n\\n    event Mint(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\\n    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\\n    event Sync(uint256 reserve0, uint256 reserve1);\\n\\n    uint256 internal constant MINIMUM_LIQUIDITY = 10**3;\\n    uint8 internal constant PRECISION = 112;\\n\\n    /// @dev Constant value used as max loop limit.\\n    uint256 private constant MAX_LOOP_LIMIT = 256;\\n    uint256 internal constant MAX_FEE = 10000; // @dev 100%.\\n    uint256 public immutable swapFee;\\n\\n    IBentoBoxMinimal public immutable bento;\\n    IMasterDeployer public immutable masterDeployer;\\n    address public immutable barFeeTo;\\n    address public immutable token0;\\n    address public immutable token1;\\n    uint256 public immutable A;\\n    uint256 internal immutable N_A; // @dev 2 * A.\\n    uint256 internal constant A_PRECISION = 100;\\n\\n    /// @dev Multipliers for each pooled token's precision to get to POOL_PRECISION_DECIMALS.\\n    /// For example, TBTC has 18 decimals, so the multiplier should be 1. WBTC\\n    /// has 8, so the multiplier should be 10 ** 18 / 10 ** 8 => 10 ** 10.\\n    uint256 public immutable token0PrecisionMultiplier;\\n    uint256 public immutable token1PrecisionMultiplier;\\n\\n    uint256 public barFee;\\n\\n    uint128 internal reserve0;\\n    uint128 internal reserve1;\\n    uint256 internal dLast;\\n\\n    bytes32 public constant override poolIdentifier = \\\"Trident:HybridPool\\\";\\n\\n    uint256 internal unlocked;\\n    modifier lock() {\\n        require(unlocked == 1, \\\"LOCKED\\\");\\n        unlocked = 2;\\n        _;\\n        unlocked = 1;\\n    }\\n\\n    constructor(bytes memory _deployData, address _masterDeployer) {\\n        (address _token0, address _token1, uint256 _swapFee, uint256 a) = abi.decode(_deployData, (address, address, uint256, uint256));\\n\\n        // @dev Factory ensures that the tokens are sorted.\\n        require(_token0 != address(0), \\\"ZERO_ADDRESS\\\");\\n        require(_token0 != _token1, \\\"IDENTICAL_ADDRESSES\\\");\\n        require(_swapFee <= MAX_FEE, \\\"INVALID_SWAP_FEE\\\");\\n        require(a != 0, \\\"ZERO_A\\\");\\n\\n        token0 = _token0;\\n        token1 = _token1;\\n        swapFee = _swapFee;\\n        barFee = IMasterDeployer(_masterDeployer).barFee();\\n        barFeeTo = IMasterDeployer(_masterDeployer).barFeeTo();\\n        bento = IBentoBoxMinimal(IMasterDeployer(_masterDeployer).bento());\\n        masterDeployer = IMasterDeployer(_masterDeployer);\\n        A = a;\\n        N_A = 2 * a;\\n        token0PrecisionMultiplier = uint256(10)**(decimals - TridentERC20(_token0).decimals());\\n        token1PrecisionMultiplier = uint256(10)**(decimals - TridentERC20(_token1).decimals());\\n        unlocked = 1;\\n    }\\n\\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\\n    /// The router must ensure that sufficient LP tokens are minted by using the return value.\\n    function mint(bytes calldata data) public override lock returns (uint256 liquidity) {\\n        address recipient = abi.decode(data, (address));\\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n\\n        uint256 newLiq = _computeLiquidity(balance0, balance1);\\n        uint256 amount0 = balance0 - _reserve0;\\n        uint256 amount1 = balance1 - _reserve1;\\n        (uint256 fee0, uint256 fee1) = _nonOptimalMintFee(amount0, amount1, _reserve0, _reserve1);\\n        _reserve0 += uint112(fee0);\\n        _reserve1 += uint112(fee1);\\n\\n        (uint256 _totalSupply, uint256 oldLiq) = _mintFee(_reserve0, _reserve1);\\n\\n        if (_totalSupply == 0) {\\n            require(amount0 > 0 && amount1 > 0, \\\"INVALID_AMOUNTS\\\");\\n            liquidity = newLiq - MINIMUM_LIQUIDITY;\\n            _mint(address(0), MINIMUM_LIQUIDITY);\\n        } else {\\n            liquidity = ((newLiq - oldLiq) * _totalSupply) / oldLiq;\\n        }\\n        require(liquidity != 0, \\\"INSUFFICIENT_LIQUIDITY_MINTED\\\");\\n        _mint(recipient, liquidity);\\n        _updateReserves();\\n\\n        dLast = newLiq;\\n        uint256 liquidityForEvent = liquidity;\\n        emit Mint(msg.sender, amount0, amount1, recipient, liquidityForEvent);\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\\n    function burn(bytes calldata data) public override lock returns (IPool.TokenAmount[] memory withdrawnAmounts) {\\n        (address recipient, bool unwrapBento) = abi.decode(data, (address, bool));\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 liquidity = balanceOf[address(this)];\\n\\n        (uint256 _totalSupply, ) = _mintFee(balance0, balance1);\\n\\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\\n\\n        _burn(address(this), liquidity);\\n        _transfer(token0, amount0, recipient, unwrapBento);\\n        _transfer(token1, amount1, recipient, unwrapBento);\\n\\n        _updateReserves();\\n\\n        withdrawnAmounts = new TokenAmount[](2);\\n        withdrawnAmounts[0] = TokenAmount({token: token0, amount: amount0});\\n        withdrawnAmounts[1] = TokenAmount({token: token1, amount: amount1});\\n\\n        dLast = _computeLiquidity(balance0 - amount0, balance1 - amount1);\\n\\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\\n    /// - i.e., the user gets a single token out by burning LP tokens.\\n    function burnSingle(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenOut, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 liquidity = balanceOf[address(this)];\\n\\n        (uint256 _totalSupply, ) = _mintFee(balance0, balance1);\\n\\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\\n\\n        _burn(address(this), liquidity);\\n        dLast = _computeLiquidity(balance0 - amount0, balance1 - amount1);\\n\\n        // Swap tokens\\n        if (tokenOut == token1) {\\n            // @dev Swap `token0` for `token1`.\\n            // @dev Calculate `amountOut` as if the user first withdrew balanced liquidity and then swapped `token0` for `token1`.\\n            amount1 += _getAmountOut(amount0, balance0 - amount0, balance1 - amount1, true);\\n            _transfer(token1, amount1, recipient, unwrapBento);\\n            amountOut = amount1;\\n            amount0 = 0;\\n        } else {\\n            // @dev Swap `token1` for `token0`.\\n            require(tokenOut == token0, \\\"INVALID_OUTPUT_TOKEN\\\");\\n            amount0 += _getAmountOut(amount1, balance0 - amount0, balance1 - amount1, false);\\n            _transfer(token0, amount0, recipient, unwrapBento);\\n            amountOut = amount0;\\n            amount1 = 0;\\n        }\\n        _updateReserves();\\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\\n    function swap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\\n        (uint256 _reserve0, uint256 _reserve1, uint256 balance0, uint256 balance1) = _getReservesAndBalances();\\n        uint256 amountIn;\\n        address tokenOut;\\n\\n        if (tokenIn == token0) {\\n            tokenOut = token1;\\n            unchecked {\\n                amountIn = balance0 - _reserve0;\\n            }\\n            amountOut = _getAmountOut(amountIn, _reserve0, _reserve1, true);\\n        } else {\\n            require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n            tokenOut = token0;\\n            unchecked {\\n                amountIn = balance1 - _reserve1;\\n            }\\n            amountOut = _getAmountOut(amountIn, _reserve0, _reserve1, false);\\n        }\\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n        _updateReserves();\\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\\n    }\\n\\n    /// @dev Swaps one token for another with payload. The router must support swap callbacks and ensure there isn't too much slippage.\\n    function flashSwap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address recipient, bool unwrapBento, uint256 amountIn, bytes memory context) = abi.decode(\\n            data,\\n            (address, address, bool, uint256, bytes)\\n        );\\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\\n        address tokenOut;\\n\\n        if (tokenIn == token0) {\\n            tokenOut = token1;\\n            amountIn = bento.toAmount(token0, amountIn, false);\\n            amountOut = _getAmountOut(amountIn, _reserve0, _reserve1, true);\\n            _processSwap(token1, recipient, amountOut, context, unwrapBento);\\n            uint256 balance0 = bento.toAmount(token0, bento.balanceOf(token0, address(this)), false);\\n            require(balance0 - _reserve0 >= amountIn, \\\"INSUFFICIENT_AMOUNT_IN\\\");\\n        } else {\\n            require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n            tokenOut = token0;\\n            amountIn = bento.toAmount(token1, amountIn, false);\\n            amountOut = _getAmountOut(amountIn, _reserve0, _reserve1, false);\\n            _processSwap(token0, recipient, amountOut, context, unwrapBento);\\n            uint256 balance1 = bento.toAmount(token1, bento.balanceOf(token1, address(this)), false);\\n            require(balance1 - _reserve1 >= amountIn, \\\"INSUFFICIENT_AMOUNT_IN\\\");\\n        }\\n        _updateReserves();\\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\\n    }\\n\\n    /// @dev Updates `barFee` for Trident protocol.\\n    function updateBarFee() public {\\n        barFee = masterDeployer.barFee();\\n    }\\n\\n    function _processSwap(\\n        address tokenOut,\\n        address to,\\n        uint256 amountOut,\\n        bytes memory data,\\n        bool unwrapBento\\n    ) internal {\\n        _transfer(tokenOut, amountOut, to, unwrapBento);\\n        if (data.length != 0) ITridentCallee(msg.sender).tridentSwapCallback(data);\\n    }\\n\\n    function _getReserves() internal view returns (uint256 _reserve0, uint256 _reserve1) {\\n        (_reserve0, _reserve1) = (reserve0, reserve1);\\n        _reserve0 = bento.toAmount(token0, _reserve0, false);\\n        _reserve1 = bento.toAmount(token1, _reserve1, false);\\n    }\\n\\n    function _getReservesAndBalances()\\n        internal\\n        view\\n        returns (\\n            uint256 _reserve0,\\n            uint256 _reserve1,\\n            uint256 balance0,\\n            uint256 balance1\\n        )\\n    {\\n        (_reserve0, _reserve1) = (reserve0, reserve1);\\n        balance0 = bento.balanceOf(token0, address(this));\\n        balance1 = bento.balanceOf(token1, address(this));\\n        Rebase memory total0 = bento.totals(token0);\\n        Rebase memory total1 = bento.totals(token1);\\n\\n        _reserve0 = total0.toElastic(_reserve0);\\n        _reserve1 = total1.toElastic(_reserve1);\\n        balance0 = total0.toElastic(balance0);\\n        balance1 = total1.toElastic(balance1);\\n    }\\n\\n    function _updateReserves() internal {\\n        (uint256 _reserve0, uint256 _reserve1) = _balance();\\n        require(_reserve0 <= type(uint128).max && _reserve1 <= type(uint128).max, \\\"OVERFLOW\\\");\\n        reserve0 = uint128(_reserve0);\\n        reserve1 = uint128(_reserve1);\\n        emit Sync(_reserve0, _reserve1);\\n    }\\n\\n    function _balance() internal view returns (uint256 balance0, uint256 balance1) {\\n        balance0 = bento.toAmount(token0, bento.balanceOf(token0, address(this)), false);\\n        balance1 = bento.toAmount(token1, bento.balanceOf(token1, address(this)), false);\\n    }\\n\\n    function _getAmountOut(\\n        uint256 amountIn,\\n        uint256 _reserve0,\\n        uint256 _reserve1,\\n        bool token0In\\n    ) internal view returns (uint256 dy) {\\n        unchecked {\\n            uint256 adjustedReserve0 = _reserve0 * token0PrecisionMultiplier;\\n            uint256 adjustedReserve1 = _reserve1 * token1PrecisionMultiplier;\\n            uint256 feeDeductedAmountIn = amountIn - (amountIn * swapFee) / MAX_FEE;\\n            uint256 d = _computeLiquidityFromAdjustedBalances(adjustedReserve0, adjustedReserve1);\\n\\n            if (token0In) {\\n                uint256 x = adjustedReserve0 + (feeDeductedAmountIn * token0PrecisionMultiplier);\\n                uint256 y = _getY(x, d);\\n                dy = adjustedReserve1 - y - 1;\\n                dy /= token1PrecisionMultiplier;\\n            } else {\\n                uint256 x = adjustedReserve1 + (feeDeductedAmountIn * token1PrecisionMultiplier);\\n                uint256 y = _getY(x, d);\\n                dy = adjustedReserve0 - y - 1;\\n                dy /= token0PrecisionMultiplier;\\n            }\\n        }\\n    }\\n\\n    function _transfer(\\n        address token,\\n        uint256 amount,\\n        address to,\\n        bool unwrapBento\\n    ) internal {\\n        if (unwrapBento) {\\n            bento.withdraw(token, address(this), to, amount, 0);\\n        } else {\\n            bento.transfer(token, address(this), to, bento.toShare(token, amount, false));\\n        }\\n    }\\n\\n    /// @notice Get D, the StableSwap invariant, based on a set of balances and a particular A.\\n    /// See the StableSwap paper for details.\\n    /// @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L319.\\n    /// @return liquidity The invariant, at the precision of the pool.\\n    function _computeLiquidity(uint256 _reserve0, uint256 _reserve1) internal view returns (uint256 liquidity) {\\n        unchecked {\\n            uint256 adjustedReserve0 = _reserve0 * token0PrecisionMultiplier;\\n            uint256 adjustedReserve1 = _reserve1 * token1PrecisionMultiplier;\\n            liquidity = _computeLiquidityFromAdjustedBalances(adjustedReserve0, adjustedReserve1);\\n        }\\n    }\\n\\n    function _computeLiquidityFromAdjustedBalances(uint256 xp0, uint256 xp1) internal view returns (uint256 computed) {\\n        uint256 s = xp0 + xp1;\\n\\n        if (s == 0) {\\n            computed = 0;\\n        }\\n        uint256 prevD;\\n        uint256 D = s;\\n        for (uint256 i = 0; i < MAX_LOOP_LIMIT; i++) {\\n            uint256 dP = (((D * D) / xp0) * D) / xp1 / 4;\\n            prevD = D;\\n            D = (((N_A * s) / A_PRECISION + 2 * dP) * D) / ((N_A / A_PRECISION - 1) * D + 3 * dP);\\n            if (D.within1(prevD)) {\\n                break;\\n            }\\n        }\\n        computed = D;\\n    }\\n\\n    /// @notice Calculate the new balances of the tokens given the indexes of the token\\n    /// that is swapped from (FROM) and the token that is swapped to (TO).\\n    /// This function is used as a helper function to calculate how much TO token\\n    /// the user should receive on swap.\\n    /// @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L432.\\n    /// @param x The new total amount of FROM token.\\n    /// @return y The amount of TO token that should remain in the pool.\\n    function _getY(uint256 x, uint256 D) internal view returns (uint256 y) {\\n        uint256 c = (D * D) / (x * 2);\\n        c = (c * D) / ((N_A * 2) / A_PRECISION);\\n        uint256 b = x + ((D * A_PRECISION) / N_A);\\n        uint256 yPrev;\\n        y = D;\\n        // @dev Iterative approximation.\\n        for (uint256 i = 0; i < MAX_LOOP_LIMIT; i++) {\\n            yPrev = y;\\n            y = (y * y + c) / (y * 2 + b - D);\\n            if (y.within1(yPrev)) {\\n                break;\\n            }\\n        }\\n    }\\n\\n    function _mintFee(uint256 _reserve0, uint256 _reserve1) internal returns (uint256 _totalSupply, uint256 d) {\\n        _totalSupply = totalSupply;\\n        uint256 _dLast = dLast;\\n        if (_dLast != 0) {\\n            d = _computeLiquidity(_reserve0, _reserve1);\\n            if (d > _dLast) {\\n                // @dev `barFee` % of increase in liquidity.\\n                uint256 _barFee = barFee;\\n                uint256 numerator = _totalSupply * (d - _dLast) * _barFee;\\n                uint256 denominator = (MAX_FEE - _barFee) * d + _barFee * _dLast;\\n                uint256 liquidity = numerator / denominator;\\n\\n                if (liquidity != 0) {\\n                    _mint(barFeeTo, liquidity);\\n                    _totalSupply += liquidity;\\n                }\\n            }\\n        }\\n    }\\n\\n    /// @dev This fee is charged to cover for `swapFee` when users add unbalanced liquidity.\\n    function _nonOptimalMintFee(\\n        uint256 _amount0,\\n        uint256 _amount1,\\n        uint256 _reserve0,\\n        uint256 _reserve1\\n    ) internal view returns (uint256 token0Fee, uint256 token1Fee) {\\n        if (_reserve0 == 0 || _reserve1 == 0) return (0, 0);\\n        uint256 amount1Optimal = (_amount0 * _reserve1) / _reserve0;\\n\\n        if (amount1Optimal <= _amount1) {\\n            token1Fee = (swapFee * (_amount1 - amount1Optimal)) / (2 * MAX_FEE);\\n        } else {\\n            uint256 amount0Optimal = (_amount1 * _reserve0) / _reserve1;\\n            token0Fee = (swapFee * (_amount0 - amount0Optimal)) / (2 * MAX_FEE);\\n        }\\n    }\\n\\n    function getAssets() public view override returns (address[] memory assets) {\\n        assets = new address[](2);\\n        assets[0] = token0;\\n        assets[1] = token1;\\n    }\\n\\n    function getAmountOut(bytes calldata data) public view override returns (uint256 finalAmountOut) {\\n        (address tokenIn, uint256 amountIn) = abi.decode(data, (address, uint256));\\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\\n        amountIn = bento.toAmount(tokenIn, amountIn, false);\\n\\n        if (tokenIn == token0) {\\n            finalAmountOut = bento.toShare(token1, _getAmountOut(amountIn, _reserve0, _reserve1, true), false);\\n        } else {\\n            require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n            finalAmountOut = bento.toShare(token0, _getAmountOut(amountIn, _reserve0, _reserve1, false), false);\\n        }\\n    }\\n\\n    function getAmountIn(bytes calldata) public pure override returns (uint256) {\\n        revert();\\n    }\\n\\n    function getReserves() public view returns (uint256 _reserve0, uint256 _reserve1) {\\n        (_reserve0, _reserve1) = _getReserves();\\n    }\\n\\n    function getVirtualPrice() public view returns (uint256 virtualPrice) {\\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\\n        uint256 d = _computeLiquidity(_reserve0, _reserve1);\\n        virtualPrice = (d * (uint256(10)**decimals)) / totalSupply;\\n    }\\n}\\n\",\"keccak256\":\"0x0a35cbe62d933222ca290ad95b759fcf9ca50d13f570261e656b7def655b5878\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/TridentERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool ERC-20 with EIP-2612 extension.\\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol,\\n/// License-Identifier: AGPL-3.0-only.\\nabstract contract TridentERC20 {\\n    event Transfer(address indexed sender, address indexed recipient, uint256 amount);\\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\\n\\n    string public constant name = \\\"Sushi LP Token\\\";\\n    string public constant symbol = \\\"SLP\\\";\\n    uint8 public constant decimals = 18;\\n\\n    uint256 public totalSupply;\\n    /// @notice owner -> balance mapping.\\n    mapping(address => uint256) public balanceOf;\\n    /// @notice owner -> spender -> allowance mapping.\\n    mapping(address => mapping(address => uint256)) public allowance;\\n\\n    /// @notice Chain Id at this contract's deployment.\\n    uint256 internal immutable DOMAIN_SEPARATOR_CHAIN_ID;\\n    /// @notice EIP-712 typehash for this contract's domain at deployment.\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n    /// @notice EIP-712 typehash for this contract's {permit} struct.\\n    bytes32 public constant PERMIT_TYPEHASH =\\n        keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n    /// @notice owner -> nonce mapping used in {permit}.\\n    mapping(address => uint256) public nonces;\\n\\n    constructor() {\\n        DOMAIN_SEPARATOR_CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _calculateDomainSeparator();\\n    }\\n\\n    function _calculateDomainSeparator() internal view returns (bytes32 domainSeperator) {\\n        domainSeperator = keccak256(\\n            abi.encode(\\n                keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"),\\n                keccak256(bytes(name)),\\n                keccak256(bytes(\\\"1\\\")),\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    /// @notice EIP-712 typehash for this contract's domain.\\n    function DOMAIN_SEPARATOR() public view returns (bytes32 domainSeperator) {\\n        domainSeperator = block.chainid == DOMAIN_SEPARATOR_CHAIN_ID ? _DOMAIN_SEPARATOR : _calculateDomainSeparator();\\n    }\\n\\n    /// @notice Approves `amount` from `msg.sender` to be spent by `spender`.\\n    /// @param spender Address of the party that can pull tokens from `msg.sender`'s account.\\n    /// @param amount The maximum collective `amount` that `spender` can pull.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function approve(address spender, uint256 amount) external returns (bool) {\\n        allowance[msg.sender][spender] = amount;\\n        emit Approval(msg.sender, spender, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `msg.sender` to `recipient`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transfer(address recipient, uint256 amount) external returns (bool) {\\n        balanceOf[msg.sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(msg.sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\\n    /// @param sender Address to pull tokens `from`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool) {\\n        if (allowance[sender][msg.sender] != type(uint256).max) {\\n            allowance[sender][msg.sender] -= amount;\\n        }\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Triggers an approval from `owner` to `spender`.\\n    /// @param owner The address to approve from.\\n    /// @param spender The address to be approved.\\n    /// @param amount The number of tokens that are approved (2^256-1 means infinite).\\n    /// @param deadline The time at which to expire the signature.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        require(deadline >= block.timestamp, \\\"PERMIT_DEADLINE_EXPIRED\\\");\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                \\\"\\\\x19\\\\x01\\\",\\n                DOMAIN_SEPARATOR(),\\n                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))\\n            )\\n        );\\n        address recoveredAddress = ecrecover(digest, v, r, s);\\n        require(recoveredAddress != address(0) && recoveredAddress == owner, \\\"INVALID_PERMIT_SIGNATURE\\\");\\n        allowance[recoveredAddress][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    function _mint(address recipient, uint256 amount) internal {\\n        totalSupply += amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(address(0), recipient, amount);\\n    }\\n\\n    function _burn(address sender, uint256 amount) internal {\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from underflow - users won't ever\\n        // have a balance larger than `totalSupply`.\\n        unchecked {\\n            totalSupply -= amount;\\n        }\\n        emit Transfer(sender, address(0), amount);\\n    }\\n}\\n\",\"keccak256\":\"0xb249a6d507f6911b7de4f9655a9736710fac9847982ad9afa18650db9a84794d\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 11917,
                "contract": "contracts/pool/HybridPool.sol:HybridPool",
                "label": "totalSupply",
                "offset": 0,
                "slot": "0",
                "type": "t_uint256"
              },
              {
                "astId": 11922,
                "contract": "contracts/pool/HybridPool.sol:HybridPool",
                "label": "balanceOf",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 11929,
                "contract": "contracts/pool/HybridPool.sol:HybridPool",
                "label": "allowance",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
              },
              {
                "astId": 11946,
                "contract": "contracts/pool/HybridPool.sol:HybridPool",
                "label": "nonces",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 7887,
                "contract": "contracts/pool/HybridPool.sol:HybridPool",
                "label": "barFee",
                "offset": 0,
                "slot": "4",
                "type": "t_uint256"
              },
              {
                "astId": 7889,
                "contract": "contracts/pool/HybridPool.sol:HybridPool",
                "label": "reserve0",
                "offset": 0,
                "slot": "5",
                "type": "t_uint128"
              },
              {
                "astId": 7891,
                "contract": "contracts/pool/HybridPool.sol:HybridPool",
                "label": "reserve1",
                "offset": 16,
                "slot": "5",
                "type": "t_uint128"
              },
              {
                "astId": 7893,
                "contract": "contracts/pool/HybridPool.sol:HybridPool",
                "label": "dLast",
                "offset": 0,
                "slot": "6",
                "type": "t_uint256"
              },
              {
                "astId": 7899,
                "contract": "contracts/pool/HybridPool.sol:HybridPool",
                "label": "unlocked",
                "offset": 0,
                "slot": "7",
                "type": "t_uint256"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_mapping(t_address,t_mapping(t_address,t_uint256))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_uint256)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_uint128": {
                "encoding": "inplace",
                "label": "uint128",
                "numberOfBytes": "16"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "DOMAIN_SEPARATOR()": {
                "notice": "EIP-712 typehash for this contract's domain."
              },
              "PERMIT_TYPEHASH()": {
                "notice": "EIP-712 typehash for this contract's {permit} struct."
              },
              "allowance(address,address)": {
                "notice": "owner -> spender -> allowance mapping."
              },
              "approve(address,uint256)": {
                "notice": "Approves `amount` from `msg.sender` to be spent by `spender`."
              },
              "balanceOf(address)": {
                "notice": "owner -> balance mapping."
              },
              "getAmountOut(bytes)": {
                "notice": "Simulates a trade and returns the expected output."
              },
              "nonces(address)": {
                "notice": "owner -> nonce mapping used in {permit}."
              },
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Triggers an approval from `owner` to `spender`."
              },
              "transfer(address,uint256)": {
                "notice": "Transfers `amount` tokens from `msg.sender` to `recipient`."
              },
              "transferFrom(address,address,uint256)": {
                "notice": "Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`."
              }
            },
            "notice": "Trident exchange pool template with hybrid like-kind formula for swapping between an ERC-20 token pair.",
            "version": 1
          }
        }
      },
      "contracts/pool/HybridPoolFactory.sol": {
        "HybridPoolFactory": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "InvalidTokenOrder",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnauthorisedDeployer",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ZeroAddress",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "configAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "startIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "name": "getPools",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "pairPools",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                }
              ],
              "name": "poolsCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Mudit Gupta.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_11730": {
                  "entryPoint": null,
                  "id": 11730,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_9841": {
                  "entryPoint": null,
                  "id": 9841,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 109,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:306:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:290:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b50604051615edc380380615edc83398101604081905261002f9161006d565b806001600160a01b0381166100575760405163d92e233d60e01b815260040160405180910390fd5b60601b6001600160601b0319166080525061009d565b60006020828403121561007f57600080fd5b81516001600160a01b038116811461009657600080fd5b9392505050565b60805160601c615e136100c96000396000818161015a0152818161038c01526105410152615e136000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c806371a25812116200005657806371a25812146200012e578063cf58879a1462000154578063f6ab6d99146200017c57600080fd5b8063169c4cef146200008057806327c3cae114620000c15780635bc93d6c14620000d8575b600080fd5b620000976200009136600462000924565b620001b5565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b62000097620000d2366004620009cf565b62000208565b6200011f620000e9366004620008e6565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526020818152604080832093909416825291909152205490565b604051908152602001620000b8565b620001456200013f3660046200096a565b62000400565b604051620000b8919062000aa8565b620000977f000000000000000000000000000000000000000000000000000000000000000081565b620000976200018d366004620009b5565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60006020528260005260406000206020528160005260406000208181548110620001de57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16925083915050565b60008060008060008580602001905181019062000226919062000899565b93509350935093508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16111562000267579192915b6040805173ffffffffffffffffffffffffffffffffffffffff8087166020830152851691810191909152606081018390526080810182905260a001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152600280845260608401909252975060009190816020016020820280368337019050509050848160008151811062000308576200030862000c1e565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160018151811062000359576200035962000c1e565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101820152875190880120604051819089907f000000000000000000000000000000000000000000000000000000000000000090620003b7906200088b565b620003c492919062000b04565b8190604051809103906000f5905080158015620003e5573d6000803e3d6000fd5b509650620003f587838362000529565b505050505050919050565b60608167ffffffffffffffff8111156200041e576200041e62000c4d565b60405190808252806020026020018201604052801562000448578160200160208202803683370190505b50905060005b82811015620005205773ffffffffffffffffffffffffffffffffffffffff80871660009081526020818152604080832093891683529290522062000493828662000b98565b81548110620004a657620004a662000c1e565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110620004e657620004e662000c1e565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015280620005178162000bb3565b9150506200044e565b50949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161462000599576040517f03781a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555b600183510381101562000885578281600101815181106200060b576200060b62000c1e565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106200063e576200063e62000c1e565b602002602001015173ffffffffffffffffffffffffffffffffffffffff161062000694576040517f3f06bf8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015b83518110156200087b57600080858481518110620006bb57620006bb62000c1e565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085838151811062000714576200071462000c1e565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409091016000908120805460018101825590825291812090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915584518190869084908110620007a357620007a362000c1e565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858481518110620007fc57620007fc62000c1e565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604090910160009081208054600180820183559183529290912090910180547fffffffffffffffffffffffff000000000000000000000000000000000000000016928816929092179091550162000699565b50600101620005e6565b50505050565b61513b8062000ca383390190565b60008060008060808587031215620008b057600080fd5b8451620008bd8162000c7c565b6020860151909450620008d08162000c7c565b6040860151606090960151949790965092505050565b60008060408385031215620008fa57600080fd5b8235620009078162000c7c565b91506020830135620009198162000c7c565b809150509250929050565b6000806000606084860312156200093a57600080fd5b8335620009478162000c7c565b92506020840135620009598162000c7c565b929592945050506040919091013590565b600080600080608085870312156200098157600080fd5b84356200098e8162000c7c565b93506020850135620009a08162000c7c565b93969395505050506040820135916060013590565b600060208284031215620009c857600080fd5b5035919050565b600060208284031215620009e257600080fd5b813567ffffffffffffffff80821115620009fb57600080fd5b818401915084601f83011262000a1057600080fd5b81358181111562000a255762000a2562000c4d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171562000a6e5762000a6e62000c4d565b8160405282815287602084870101111562000a8857600080fd5b826020860160208301376000928101602001929092525095945050505050565b6020808252825182820181905260009190848201906040850190845b8181101562000af857835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162000ac4565b50909695505050505050565b604081526000835180604084015260005b8181101562000b34576020818701810151606086840101520162000b15565b8181111562000b47576000606083860101525b5073ffffffffffffffffffffffffffffffffffffffff93909316602083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b6000821982111562000bae5762000bae62000bef565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000be85762000be862000bef565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811462000c9f57600080fd5b5056fe6102006040523480156200001257600080fd5b506040516200513b3803806200513b833981016040819052620000359162000610565b4660805262000112604080518082018252600e81526d29bab9b434902628102a37b5b2b760911b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b60a0818152505060008060008085806020019051810190620001359190620005c3565b929650909450925090506001600160a01b0384166200018a5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064015b60405180910390fd5b826001600160a01b0316846001600160a01b03161415620001ee5760405162461bcd60e51b815260206004820152601360248201527f4944454e544943414c5f41444452455353455300000000000000000000000000604482015260640162000181565b612710821115620002355760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f535741505f46454560801b604482015260640162000181565b806200026d5760405162461bcd60e51b81526020600482015260066024820152655a45524f5f4160d01b604482015260640162000181565b6001600160601b0319606085811b82166101405284901b166101605260c0829052604080516360a56c0160e11b815290516001600160a01b0387169163c14ad802916004808301926020929190829003018186803b158015620002cf57600080fd5b505afa158015620002e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030a919062000701565b600481905550846001600160a01b0316630c0a0cd26040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034a57600080fd5b505afa1580156200035f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038591906200059c565b6001600160a01b0316610120816001600160a01b031660601b81525050846001600160a01b0316634da318276040518163ffffffff1660e01b815260040160206040518083038186803b158015620003dc57600080fd5b505afa158015620003f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041791906200059c565b6001600160601b0319606091821b811660e0529086901b1661010052610180819052620004468160026200084a565b6101a08181525050836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200048857600080fd5b505afa1580156200049d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c391906200071b565b620004d09060126200086c565b620004dd90600a62000789565b6101c08181525050826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200051f57600080fd5b505afa15801562000534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055a91906200071b565b620005679060126200086c565b6200057490600a62000789565b6101e0525050600160075550620008d792505050565b80516200059781620008be565b919050565b600060208284031215620005af57600080fd5b8151620005bc81620008be565b9392505050565b60008060008060808587031215620005da57600080fd5b8451620005e781620008be565b6020860151909450620005fa81620008be565b6040860151606090960151949790965092505050565b600080604083850312156200062457600080fd5b82516001600160401b03808211156200063c57600080fd5b818501915085601f8301126200065157600080fd5b815181811115620006665762000666620008a8565b604051601f8201601f19908116603f01168101908382118183101715620006915762000691620008a8565b81604052828152602093508884848701011115620006ae57600080fd5b600091505b82821015620006d25784820184015181830185015290830190620006b3565b82821115620006e45760008484830101525b9550620006f69150508582016200058a565b925050509250929050565b6000602082840312156200071457600080fd5b5051919050565b6000602082840312156200072e57600080fd5b815160ff81168114620005bc57600080fd5b600181815b808511156200078157816000190482111562000765576200076562000892565b808516156200077357918102915b93841c939080029062000745565b509250929050565b6000620005bc60ff841683600082620007a55750600162000844565b81620007b45750600062000844565b8160018114620007cd5760028114620007d857620007f8565b600191505062000844565b60ff841115620007ec57620007ec62000892565b50506001821b62000844565b5060208310610133831016604e8410600b84101617156200081d575081810a62000844565b62000829838362000740565b806000190482111562000840576200084062000892565b0290505b92915050565b600081600019048311821515161562000867576200086762000892565b500290565b600060ff821660ff84168082101562000889576200088962000892565b90039392505050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114620008d457600080fd5b50565b60805160a05160c05160e05160601c6101005160601c6101205160601c6101405160601c6101605160601c610180516101a0516101c0516101e0516145e062000b5b6000396000818161042c01528181612ae401528181612b7e01528181612bb7015261349f01526000818161059b01528181612ac101528181612b4301528181612bf2015261347c015260008181613ac901528181613b1f01528181613bca0152613c140152600061065f0152600081816105f2015281816107ee015281816108a201528181610ae301528181610bd401528181610d0e015281816112970152818161137b015281816116b8015281816116ed0152818161191601528181611e8e01528181611f6b015281816122ca0152818161234c01528181612a0101528181612fa30152818161362a01526137f801526000818161034601528181610728015281816107b8015281816108f201528181610c0a01528181610cbe0152818161126b015281816113120152818161165f015281816117a7015281816118a801528181611dfe0152818161205c0152818161238101528181612464015281816128e701528181612e080152818161351301526137140152600081816102fa01526131460152600081816105cb0152611c65015260008181610405015281816108100152818161093901528181610c2c01528181610d5501528181611d7e01528181611e52015281816120200152818161294801528181612a3a01528181612e3c01528181612fd50152818161327f01528181613354015281816135710152818161365b01528181613742015261382601526000818161045301528181612b0a01528181613934015261399f015260006115920152600061146901526145e06000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c806367e4ac2c11610145578063af8c09bf116100bd578063d21220a71161008c578063dd62ed3e11610071578063dd62ed3e14610627578063e25aa5fa14610652578063f446c1d01461065a57600080fd5b8063d21220a7146105ed578063d505accf1461061457600080fd5b8063af8c09bf14610583578063baa8c7cb14610596578063c14ad802146105bd578063cf58879a146105c657600080fd5b806392bc321911610114578063a69840a8116100f9578063a69840a814610536578063a8f1f52e1461055d578063a9059cbb1461057057600080fd5b806392bc3219146104f057806395d89b41146104fa57600080fd5b806367e4ac2c1461048857806370a082311461049d5780637ba0e2e7146104bd5780637ecebe00146104d057600080fd5b80632a07b6c7116101d8578063499a3c50116101a75780634e25dc471161018c5780634e25dc471461042757806354cf2aeb1461044e578063627dd56a1461047557600080fd5b8063499a3c50146103ed5780634da318271461040057600080fd5b80632a07b6c71461038457806330adf81f146103a4578063313ce567146103cb5780633644e515146103e557600080fd5b80630c0a0cd2116102145780630c0a0cd2146102f55780630dfe16811461034157806318160ddd1461036857806323b872dd1461037157600080fd5b8063053da1c81461024657806306fdde031461026c5780630902f1ac146102b5578063095ea7b3146102d2575b600080fd5b610259610254366004614031565b610681565b6040519081526020015b60405180910390f35b6102a86040518060400160405280600e81526020017f5375736869204c5020546f6b656e00000000000000000000000000000000000081525081565b6040516102639190614265565b6102bd610f9c565b60408051928352602083019190915201610263565b6102e56102e0366004613f14565b610fb0565b6040519015158152602001610263565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610263565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b61025960005481565b6102e561037f366004613f79565b61102a565b610397610392366004614031565b611176565b6040516102639190614200565b6102597f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103d3601281565b60405160ff9091168152602001610263565b610259611465565b6102596103fb366004614031565b6115b4565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b610259610483366004614031565b6115bb565b610490611886565b60405161026391906141a6565b6102596104ab366004613d88565b60016020526000908152604090205481565b6102596104cb366004614031565b611985565b6102596104de366004613d88565b60036020526000908152604090205481565b6104f8611c63565b005b6102a86040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b6102597f54726964656e743a487962726964506f6f6c000000000000000000000000000081565b61025961056b366004614031565b611d06565b6102e561057e366004613f14565b61213d565b610259610591366004614031565b6121c2565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b61025960045481565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b6104f8610622366004613fba565b61250a565b610259610635366004613f40565b600260209081526000928352604080842090915290825290205481565b61025961285c565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b60006007546001146106f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600260075560008080808061070b87890189613dec565b945094509450945094506000806107206128a7565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610ae157506040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052600060448301527f0000000000000000000000000000000000000000000000000000000000000000917f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b15801561085457600080fd5b505afa158015610868573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088c91906140fe565b945061089b8584846001612abd565b98506108ca7f0000000000000000000000000000000000000000000000000000000000000000888b878a612c31565b6040517ff7888aec0000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff81811660048401523060248401526000927f00000000000000000000000000000000000000000000000000000000000000009190911691635662311891839063f7888aec9060440160206040518083038186803b15801561098657600080fd5b505afa15801561099a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109be91906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b158015610a2e57600080fd5b505afa158015610a42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6691906140fe565b905085610a738583614479565b1015610adb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e0000000000000000000060448201526064016106eb565b50610ef9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610b96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106eb565b506040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052600060448301527f0000000000000000000000000000000000000000000000000000000000000000917f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b158015610c7057600080fd5b505afa158015610c84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca891906140fe565b9450610cb78584846000612abd565b9850610ce67f0000000000000000000000000000000000000000000000000000000000000000888b878a612c31565b6040517ff7888aec0000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff81811660048401523060248401526000927f00000000000000000000000000000000000000000000000000000000000000009190911691635662311891839063f7888aec9060440160206040518083038186803b158015610da257600080fd5b505afa158015610db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dda91906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b158015610e4a57600080fd5b505afa158015610e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8291906140fe565b905085610e8f8483614479565b1015610ef7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e0000000000000000000060448201526064016106eb565b505b610f01612cba565b8073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062888d604051610f80929190918252602082015260400190565b60405180910390a4505060016007555094979650505050505050565b600080610fa76128a7565b90939092509050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906110189086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146110c75773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152812080548492906110c1908490614479565b90915550505b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020526040812080548492906110fc908490614479565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260016020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111649086815260200190565b60405180910390a35060019392505050565b60606007546001146111e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106eb565b60026007556000806111f884860186613edf565b91509150600080611207612dcb565b3060009081526001602052604081205492945090925061122784846130b4565b509050600081611237868561443c565b61124191906142df565b9050600082611250868661443c565b61125a91906142df565b90506112663085613185565b6112927f0000000000000000000000000000000000000000000000000000000000000000838a8a613218565b6112be7f0000000000000000000000000000000000000000000000000000000000000000828a8a613218565b6112c6612cba565b6040805160028082526060820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816112dc57905050985060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001838152508960008151811061136357611363614527565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200182815250896001815181106113cc576113cc614527565b60209081029190910101526113f36113e48388614479565b6113ee8388614479565b613478565b600655604080518381526020810183905290810185905273ffffffffffffffffffffffffffffffffffffffff89169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a3505060016007555094979650505050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461158f5750604080518082018252600e81527f5375736869204c5020546f6b656e00000000000000000000000000000000000060209182015281518083018352600181527f31000000000000000000000000000000000000000000000000000000000000009082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000806000fd5b6000600754600114611629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106eb565b60026007556000808061163e85870187613da5565b9250925092506000806000806116526134d3565b93509350935093506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614156116eb5750508382037f00000000000000000000000000000000000000000000000000000000000000006116e48287876001612abd565b99506117d6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146117a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106eb565b50508281037f00000000000000000000000000000000000000000000000000000000000000006117d38287876000612abd565b99505b6117e2818b8a8a613218565b6117ea612cba565b8073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062858e604051611869929190918252602082015260400190565b60405180910390a450506001600755509598975050505050505050565b60408051600280825260608083018452926020830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106118da576118da614527565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061194857611948614527565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b60006007546001146119f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106eb565b60026007556000611a0683850185613d88565b9050600080611a136128a7565b91509150600080611a22612dcb565b915091506000611a328383613478565b90506000611a408685614479565b90506000611a4e8685614479565b9050600080611a5f84848b8b6138d9565b9092509050611a7e6dffffffffffffffffffffffffffff83168a6142c7565b9850611a9a6dffffffffffffffffffffffffffff8216896142c7565b9750600080611aa98b8b6130b4565b915091508160001415611b4c57600086118015611ac65750600085115b611b2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f414d4f554e5453000000000000000000000000000000000060448201526064016106eb565b611b386103e888614479565b9c50611b4760006103e86139dc565b611b6f565b8082611b58828a614479565b611b62919061443c565b611b6c91906142df565b9c505b8c611bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e54454400000060448201526064016106eb565b611be08c8e6139dc565b611be8612cba565b600687905560408051878152602081018790529081018e90528d9073ffffffffffffffffffffffffffffffffffffffff8e169033907ff9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e9060600160405180910390a35050600160075550999c9b505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b158015611cc957600080fd5b505afa158015611cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0191906140fe565b600455565b60008080611d1684860186613f14565b91509150600080611d256128a7565b6040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015260248201879052600060448301529294509092507f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b158015611dc257600080fd5b505afa158015611dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfa91906140fe565b92507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611f69577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663da5139ca7f0000000000000000000000000000000000000000000000000000000000000000611eba8686866001612abd565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b158015611f2a57600080fd5b505afa158015611f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6291906140fe565b9450612133565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461201e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106eb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663da5139ca7f00000000000000000000000000000000000000000000000000000000000000006120888686866000612abd565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b1580156120f857600080fd5b505afa15801561210c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213091906140fe565b94505b5050505092915050565b3360009081526001602052604081208054839190839061215e908490614479565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110189086815260200190565b6000600754600114612230576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106eb565b60026007556000808061224585870187613da5565b925092509250600080612256612dcb565b3060009081526001602052604081205492945090925061227684846130b4565b509050600081612286868561443c565b61229091906142df565b905060008261229f868661443c565b6122a991906142df565b90506122b53085613185565b6122c26113e48388614479565b6006819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141561237f5761233b8261232a8189614479565b6123348489614479565b6001612abd565b61234590826142c7565b90506123737f0000000000000000000000000000000000000000000000000000000000000000828a8a613218565b80995060009150612492565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614612434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e00000000000000000000000060448201526064016106eb565b612453816124428489614479565b61244c8489614479565b6000612abd565b61245d90836142c7565b915061248b7f0000000000000000000000000000000000000000000000000000000000000000838a8a613218565b5097508760005b61249a612cba565b604080518381526020810183905290810185905273ffffffffffffffffffffffffffffffffffffffff89169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a350506001600755509598975050505050505050565b42841015612574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016106eb565b600061257e611465565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c929091906125d983614490565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161267a9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612703573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061277e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6127e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e4154555245000000000000000060448201526064016106eb565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b60008060006128696128a7565b9150915060006128798383613478565b60005490915061288b6012600a614373565b612895908361443c565b61289f91906142df565b935050505090565b6005546040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526fffffffffffffffffffffffffffffffff808416602484018190526000604485015293700100000000000000000000000000000000900416917f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b15801561298c57600080fd5b505afa1580156129a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c491906140fe565b6040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201849052600060448301529193507f0000000000000000000000000000000000000000000000000000000000000000909116906356623118906064015b60206040518083038186803b158015612a7f57600080fd5b505afa158015612a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab791906140fe565b90509091565b60007f000000000000000000000000000000000000000000000000000000000000000084027f000000000000000000000000000000000000000000000000000000000000000084026127107f0000000000000000000000000000000000000000000000000000000000000000880204870383612b398484613a4c565b90508515612bb5577f0000000000000000000000000000000000000000000000000000000000000000820284016000612b728284613b9f565b905060018186030396507f00000000000000000000000000000000000000000000000000000000000000008781612bab57612bab6144f8565b0496505050612c25565b7f0000000000000000000000000000000000000000000000000000000000000000820283016000612be68284613b9f565b905060018187030396507f00000000000000000000000000000000000000000000000000000000000000008781612c1f57612c1f6144f8565b04965050505b50505050949350505050565b612c3d85848684613218565b815115612cb3576040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b190612c80908590600401614265565b600060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b505050505b5050505050565b600080612cc5612dcb565b90925090506fffffffffffffffffffffffffffffffff8211801590612cfa57506fffffffffffffffffffffffffffffffff8111155b612d60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4f564552464c4f5700000000000000000000000000000000000000000000000060448201526064016106eb565b6fffffffffffffffffffffffffffffffff818116700100000000000000000000000000000000029083161760055560408051838152602081018390527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a15050565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000818116600484015230602484015260009283927f00000000000000000000000000000000000000000000000000000000000000001691635662311891839063f7888aec9060440160206040518083038186803b158015612e8657600080fd5b505afa158015612e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebe91906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b158015612f2e57600080fd5b505afa158015612f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6691906140fe565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081811660048401523060248401529294507f00000000000000000000000000000000000000000000000000000000000000001691635662311891839063f7888aec9060440160206040518083038186803b15801561301f57600080fd5b505afa158015613033573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305791906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260006044820152606401612a67565b60008054600654909190801561317d576130ce8585613478565b91508082111561317d576004546000816130e88486614479565b6130f2908761443c565b6130fc919061443c565b9050600061310a848461443c565b8561311785612710614479565b613121919061443c565b61312b91906142c7565b9050600061313982846142df565b905080156131785761316b7f0000000000000000000000000000000000000000000000000000000000000000826139dc565b61317581886142c7565b96505b505050505b509250929050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812080548392906131ba908490614479565b909155505060008054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b8015613301576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152306024830152838116604483015260648201859052600060848301527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b1580156132c257600080fd5b505af11580156132d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132fa9190614117565b5050613472565b6040517fda5139ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052600060448301527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90869030908690859063da5139ca9060640160206040518083038186803b1580156133a457600080fd5b505afa1580156133b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133dc91906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff94851660048201529284166024840152921660448201526064810191909152608401600060405180830381600087803b15801561345957600080fd5b505af115801561346d573d6000803e3d6000fd5b505050505b50505050565b60007f000000000000000000000000000000000000000000000000000000000000000083027f000000000000000000000000000000000000000000000000000000000000000083026134ca8282613a4c565b95945050505050565b6005546040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301526fffffffffffffffffffffffffffffffff808416937001000000000000000000000000000000009004169160009182917f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b1580156135b557600080fd5b505afa1580156135c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135ed91906140fe565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301529193507f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b15801561369f57600080fd5b505afa1580156136b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d791906140fe565b6040517f4ffe34db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301529192506000917f00000000000000000000000000000000000000000000000000000000000000001690634ffe34db90602401604080518083038186803b15801561378357600080fd5b505afa158015613797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137bb91906140a3565b6040517f4ffe34db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301529192506000917f00000000000000000000000000000000000000000000000000000000000000001690634ffe34db90602401604080518083038186803b15801561386757600080fd5b505afa15801561387b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061389f91906140a3565b90506138ab8287613cd1565b95506138b78186613cd1565b94506138c38285613cd1565b93506138cf8184613cd1565b9250505090919293565b6000808315806138e7575082155b156138f7575060009050806139d3565b600084613904858961443c565b61390e91906142df565b905085811161396957613924612710600261443c565b61392e8288614479565b613958907f000000000000000000000000000000000000000000000000000000000000000061443c565b61396291906142df565b91506139d1565b600084613976878961443c565b61398091906142df565b905061398f612710600261443c565b613999828a614479565b6139c3907f000000000000000000000000000000000000000000000000000000000000000061443c565b6139cd91906142df565b9350505b505b94509492505050565b806000808282546139ed91906142c7565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161320c565b600080613a5983856142c7565b905080613a6557600091505b600081815b610100811015613b95576000600487848a613a85828061443c565b613a8f91906142df565b613a99919061443c565b613aa391906142df565b613aad91906142df565b9050829350806003613abf919061443c565b836001613aed60647f00000000000000000000000000000000000000000000000000000000000000006142df565b613af79190614479565b613b01919061443c565b613b0b91906142c7565b83613b1783600261443c565b6064613b43897f000000000000000000000000000000000000000000000000000000000000000061443c565b613b4d91906142df565b613b5791906142c7565b613b61919061443c565b613b6b91906142df565b9250613b778385613d31565b15613b825750613b95565b5080613b8d81614490565b915050613a6a565b5095945050505050565b600080613bad84600261443c565b613bb7848061443c565b613bc191906142df565b90506064613bf07f0000000000000000000000000000000000000000000000000000000000000000600261443c565b613bfa91906142df565b613c04848361443c565b613c0e91906142df565b905060007f0000000000000000000000000000000000000000000000000000000000000000613c3e60648661443c565b613c4891906142df565b613c5290866142c7565b9050600084935060005b610100811015612133578491508583613c7684600261443c565b613c8091906142c7565b613c8a9190614479565b84613c95878061443c565b613c9f91906142c7565b613ca991906142df565b9450613cb58583613d31565b15613cbf57612133565b80613cc981614490565b915050613c5c565b600082602001516fffffffffffffffffffffffffffffffff1660001415613cf9575080611024565b602083015183516fffffffffffffffffffffffffffffffff91821691613d2091168461443c565b613d2a91906142df565b9392505050565b600081831115613d48575060018183031115611024565b506001919003111590565b80358015158114613d6357600080fd5b919050565b80516fffffffffffffffffffffffffffffffff81168114613d6357600080fd5b600060208284031215613d9a57600080fd5b8135613d2a81614585565b600080600060608486031215613dba57600080fd5b8335613dc581614585565b92506020840135613dd581614585565b9150613de360408501613d53565b90509250925092565b600080600080600060a08688031215613e0457600080fd5b8535613e0f81614585565b9450602086810135613e2081614585565b9450613e2e60408801613d53565b935060608701359250608087013567ffffffffffffffff80821115613e5257600080fd5b818901915089601f830112613e6657600080fd5b813581811115613e7857613e78614556565b613ea8847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614278565b91508082528a84828501011115613ebe57600080fd5b80848401858401376000848284010152508093505050509295509295909350565b60008060408385031215613ef257600080fd5b8235613efd81614585565b9150613f0b60208401613d53565b90509250929050565b60008060408385031215613f2757600080fd5b8235613f3281614585565b946020939093013593505050565b60008060408385031215613f5357600080fd5b8235613f5e81614585565b91506020830135613f6e81614585565b809150509250929050565b600080600060608486031215613f8e57600080fd5b8335613f9981614585565b92506020840135613fa981614585565b929592945050506040919091013590565b600080600080600080600060e0888a031215613fd557600080fd5b8735613fe081614585565b96506020880135613ff081614585565b95506040880135945060608801359350608088013560ff8116811461401457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806020838503121561404457600080fd5b823567ffffffffffffffff8082111561405c57600080fd5b818501915085601f83011261407057600080fd5b81358181111561407f57600080fd5b86602082850101111561409157600080fd5b60209290920196919550909350505050565b6000604082840312156140b557600080fd5b6040516040810181811067ffffffffffffffff821117156140d8576140d8614556565b6040526140e483613d68565b81526140f260208401613d68565b60208201529392505050565b60006020828403121561411057600080fd5b5051919050565b6000806040838503121561412a57600080fd5b505080516020909101519092909150565b6000815180845260005b8181101561416157602081850181015186830182015201614145565b81811115614173576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020808252825182820181905260009190848201906040850190845b818110156141f457835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016141c2565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015614258578151805173ffffffffffffffffffffffffffffffffffffffff16855286015186850152928401929085019060010161421d565b5091979650505050505050565b602081526000613d2a602083018461413b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156142bf576142bf614556565b604052919050565b600082198211156142da576142da6144c9565b500190565b600082614315577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600181815b8085111561317d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115614359576143596144c9565b8085161561436657918102915b93841c939080029061431f565b6000613d2a60ff84168360008261438c57506001611024565b8161439957506000611024565b81600181146143af57600281146143b9576143d5565b6001915050611024565b60ff8411156143ca576143ca6144c9565b50506001821b611024565b5060208310610133831016604e8410600b84101617156143f8575081810a611024565b614402838361431a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115614434576144346144c9565b029392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614474576144746144c9565b500290565b60008282101561448b5761448b6144c9565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156144c2576144c26144c9565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146145a757600080fd5b5056fea2646970667358221220f5bed7b73a8d176b55d9233a65288c602eab9db5c240e7b511f16e85c948723064736f6c63430008070033a264697066735822122063a793bc64326a686c8216157ef398f80001f087cd3e59ee8b805215a80241d864736f6c63430008070033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x5EDC CODESIZE SUB DUP1 PUSH2 0x5EDC DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x6D JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x57 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE POP PUSH2 0x9D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0x5E13 PUSH2 0xC9 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x15A ADD MSTORE DUP2 DUP2 PUSH2 0x38C ADD MSTORE PUSH2 0x541 ADD MSTORE PUSH2 0x5E13 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x71A25812 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x71A25812 EQ PUSH3 0x12E JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH3 0x154 JUMPI DUP1 PUSH4 0xF6AB6D99 EQ PUSH3 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x169C4CEF EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x27C3CAE1 EQ PUSH3 0xC1 JUMPI DUP1 PUSH4 0x5BC93D6C EQ PUSH3 0xD8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x924 JUMP JUMPDEST PUSH3 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x97 PUSH3 0xD2 CALLDATASIZE PUSH1 0x4 PUSH3 0x9CF JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH3 0x11F PUSH3 0xE9 CALLDATASIZE PUSH1 0x4 PUSH3 0x8E6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xB8 JUMP JUMPDEST PUSH3 0x145 PUSH3 0x13F CALLDATASIZE PUSH1 0x4 PUSH3 0x96A JUMP JUMPDEST PUSH3 0x400 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xB8 SWAP2 SWAP1 PUSH3 0xAA8 JUMP JUMPDEST PUSH3 0x97 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0x97 PUSH3 0x18D CALLDATASIZE PUSH1 0x4 PUSH3 0x9B5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP3 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH3 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP DUP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x226 SWAP2 SWAP1 PUSH3 0x899 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH3 0x267 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x20 DUP4 ADD MSTORE DUP6 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE PUSH1 0x2 DUP1 DUP5 MSTORE PUSH1 0x60 DUP5 ADD SWAP1 SWAP3 MSTORE SWAP8 POP PUSH1 0x0 SWAP2 SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP5 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH3 0x308 JUMPI PUSH3 0x308 PUSH3 0xC1E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP4 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH3 0x359 JUMPI PUSH3 0x359 PUSH3 0xC1E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE DUP8 MLOAD SWAP1 DUP9 ADD KECCAK256 PUSH1 0x40 MLOAD DUP2 SWAP1 DUP10 SWAP1 PUSH32 0x0 SWAP1 PUSH3 0x3B7 SWAP1 PUSH3 0x88B JUMP JUMPDEST PUSH3 0x3C4 SWAP3 SWAP2 SWAP1 PUSH3 0xB04 JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH3 0x3E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP7 POP PUSH3 0x3F5 DUP8 DUP4 DUP4 PUSH3 0x529 JUMP JUMPDEST POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x41E JUMPI PUSH3 0x41E PUSH3 0xC4D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x448 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x520 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH3 0x493 DUP3 DUP7 PUSH3 0xB98 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH3 0x4A6 JUMPI PUSH3 0x4A6 PUSH3 0xC1E JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x4E6 JUMPI PUSH3 0x4E6 PUSH3 0xC1E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x517 DUP2 PUSH3 0xBB3 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x44E JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH3 0x599 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3781A5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH3 0x885 JUMPI DUP3 DUP2 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH3 0x60B JUMPI PUSH3 0x60B PUSH3 0xC1E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x63E JUMPI PUSH3 0x63E PUSH3 0xC1E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH3 0x694 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3F06BF8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH3 0x87B JUMPI PUSH1 0x0 DUP1 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x6BB JUMPI PUSH3 0x6BB PUSH3 0xC1E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x714 JUMPI PUSH3 0x714 PUSH3 0xC1E JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP3 MSTORE SWAP2 DUP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP5 MLOAD DUP2 SWAP1 DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH3 0x7A3 JUMPI PUSH3 0x7A3 PUSH3 0xC1E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x7FC JUMPI PUSH3 0x7FC PUSH3 0xC1E JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE SWAP2 DUP4 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE ADD PUSH3 0x699 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH3 0x5E6 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x513B DUP1 PUSH3 0xCA3 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x8B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH3 0x8BD DUP2 PUSH3 0xC7C JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH3 0x8D0 DUP2 PUSH3 0xC7C JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x8FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH3 0x907 DUP2 PUSH3 0xC7C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH3 0x919 DUP2 PUSH3 0xC7C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x93A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH3 0x947 DUP2 PUSH3 0xC7C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH3 0x959 DUP2 PUSH3 0xC7C JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x981 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH3 0x98E DUP2 PUSH3 0xC7C JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH3 0x9A0 DUP2 PUSH3 0xC7C JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x9C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x9FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA25 JUMPI PUSH3 0xA25 PUSH3 0xC4D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA6E JUMPI PUSH3 0xA6E PUSH3 0xC4D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xAF8 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0xAC4 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xB34 JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH3 0xB15 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0xB47 JUMPI PUSH1 0x0 PUSH1 0x60 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD PUSH1 0x60 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0xBAE JUMPI PUSH3 0xBAE PUSH3 0xBEF JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH3 0xBE8 JUMPI PUSH3 0xBE8 PUSH3 0xBEF JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0xC9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH2 0x200 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x513B CODESIZE SUB DUP1 PUSH3 0x513B DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x610 JUMP JUMPDEST CHAINID PUSH1 0x80 MSTORE PUSH3 0x112 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x29BAB9B434902628102A37B5B2B7 PUSH1 0x91 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP6 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x135 SWAP2 SWAP1 PUSH3 0x5C3 JUMP JUMPDEST SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x18A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A45524F5F41444452455353 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x1EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4944454E544943414C5F41444452455353455300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST PUSH2 0x2710 DUP3 GT ISZERO PUSH3 0x235 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x494E56414C49445F535741505F464545 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST DUP1 PUSH3 0x26D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x5A45524F5F41 PUSH1 0xD0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 DUP2 SHL DUP3 AND PUSH2 0x140 MSTORE DUP5 SWAP1 SHL AND PUSH2 0x160 MSTORE PUSH1 0xC0 DUP3 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x60A56C01 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0xC14AD802 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x30A SWAP2 SWAP1 PUSH3 0x701 JUMP JUMPDEST PUSH1 0x4 DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0A0CD2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x35F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x385 SWAP2 SWAP1 PUSH3 0x59C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x120 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4DA31827 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x417 SWAP2 SWAP1 PUSH3 0x59C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xE0 MSTORE SWAP1 DUP7 SWAP1 SHL AND PUSH2 0x100 MSTORE PUSH2 0x180 DUP2 SWAP1 MSTORE PUSH3 0x446 DUP2 PUSH1 0x2 PUSH3 0x84A JUMP JUMPDEST PUSH2 0x1A0 DUP2 DUP2 MSTORE POP POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x488 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x49D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x4C3 SWAP2 SWAP1 PUSH3 0x71B JUMP JUMPDEST PUSH3 0x4D0 SWAP1 PUSH1 0x12 PUSH3 0x86C JUMP JUMPDEST PUSH3 0x4DD SWAP1 PUSH1 0xA PUSH3 0x789 JUMP JUMPDEST PUSH2 0x1C0 DUP2 DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x534 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x55A SWAP2 SWAP1 PUSH3 0x71B JUMP JUMPDEST PUSH3 0x567 SWAP1 PUSH1 0x12 PUSH3 0x86C JUMP JUMPDEST PUSH3 0x574 SWAP1 PUSH1 0xA PUSH3 0x789 JUMP JUMPDEST PUSH2 0x1E0 MSTORE POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP PUSH3 0x8D7 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x597 DUP2 PUSH3 0x8BE JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x5BC DUP2 PUSH3 0x8BE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH3 0x5E7 DUP2 PUSH3 0x8BE JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH3 0x5FA DUP2 PUSH3 0x8BE JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x624 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x63C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x651 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x666 JUMPI PUSH3 0x666 PUSH3 0x8A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x691 JUMPI PUSH3 0x691 PUSH3 0x8A8 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE PUSH1 0x20 SWAP4 POP DUP9 DUP5 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP3 DUP3 LT ISZERO PUSH3 0x6D2 JUMPI DUP5 DUP3 ADD DUP5 ADD MLOAD DUP2 DUP4 ADD DUP6 ADD MSTORE SWAP1 DUP4 ADD SWAP1 PUSH3 0x6B3 JUMP JUMPDEST DUP3 DUP3 GT ISZERO PUSH3 0x6E4 JUMPI PUSH1 0x0 DUP5 DUP5 DUP4 ADD ADD MSTORE JUMPDEST SWAP6 POP PUSH3 0x6F6 SWAP2 POP POP DUP6 DUP3 ADD PUSH3 0x58A JUMP JUMPDEST SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x72E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH3 0x5BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH3 0x781 JUMPI DUP2 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x765 JUMPI PUSH3 0x765 PUSH3 0x892 JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH3 0x773 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH3 0x745 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x5BC PUSH1 0xFF DUP5 AND DUP4 PUSH1 0x0 DUP3 PUSH3 0x7A5 JUMPI POP PUSH1 0x1 PUSH3 0x844 JUMP JUMPDEST DUP2 PUSH3 0x7B4 JUMPI POP PUSH1 0x0 PUSH3 0x844 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH3 0x7CD JUMPI PUSH1 0x2 DUP2 EQ PUSH3 0x7D8 JUMPI PUSH3 0x7F8 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH3 0x844 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH3 0x7EC JUMPI PUSH3 0x7EC PUSH3 0x892 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH3 0x844 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH3 0x81D JUMPI POP DUP2 DUP2 EXP PUSH3 0x844 JUMP JUMPDEST PUSH3 0x829 DUP4 DUP4 PUSH3 0x740 JUMP JUMPDEST DUP1 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x840 JUMPI PUSH3 0x840 PUSH3 0x892 JUMP JUMPDEST MUL SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH3 0x867 JUMPI PUSH3 0x867 PUSH3 0x892 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND PUSH1 0xFF DUP5 AND DUP1 DUP3 LT ISZERO PUSH3 0x889 JUMPI PUSH3 0x889 PUSH3 0x892 JUMP JUMPDEST SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x8D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x160 MLOAD PUSH1 0x60 SHR PUSH2 0x180 MLOAD PUSH2 0x1A0 MLOAD PUSH2 0x1C0 MLOAD PUSH2 0x1E0 MLOAD PUSH2 0x45E0 PUSH3 0xB5B PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x42C ADD MSTORE DUP2 DUP2 PUSH2 0x2AE4 ADD MSTORE DUP2 DUP2 PUSH2 0x2B7E ADD MSTORE DUP2 DUP2 PUSH2 0x2BB7 ADD MSTORE PUSH2 0x349F ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x59B ADD MSTORE DUP2 DUP2 PUSH2 0x2AC1 ADD MSTORE DUP2 DUP2 PUSH2 0x2B43 ADD MSTORE DUP2 DUP2 PUSH2 0x2BF2 ADD MSTORE PUSH2 0x347C ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x3AC9 ADD MSTORE DUP2 DUP2 PUSH2 0x3B1F ADD MSTORE DUP2 DUP2 PUSH2 0x3BCA ADD MSTORE PUSH2 0x3C14 ADD MSTORE PUSH1 0x0 PUSH2 0x65F ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x5F2 ADD MSTORE DUP2 DUP2 PUSH2 0x7EE ADD MSTORE DUP2 DUP2 PUSH2 0x8A2 ADD MSTORE DUP2 DUP2 PUSH2 0xAE3 ADD MSTORE DUP2 DUP2 PUSH2 0xBD4 ADD MSTORE DUP2 DUP2 PUSH2 0xD0E ADD MSTORE DUP2 DUP2 PUSH2 0x1297 ADD MSTORE DUP2 DUP2 PUSH2 0x137B ADD MSTORE DUP2 DUP2 PUSH2 0x16B8 ADD MSTORE DUP2 DUP2 PUSH2 0x16ED ADD MSTORE DUP2 DUP2 PUSH2 0x1916 ADD MSTORE DUP2 DUP2 PUSH2 0x1E8E ADD MSTORE DUP2 DUP2 PUSH2 0x1F6B ADD MSTORE DUP2 DUP2 PUSH2 0x22CA ADD MSTORE DUP2 DUP2 PUSH2 0x234C ADD MSTORE DUP2 DUP2 PUSH2 0x2A01 ADD MSTORE DUP2 DUP2 PUSH2 0x2FA3 ADD MSTORE DUP2 DUP2 PUSH2 0x362A ADD MSTORE PUSH2 0x37F8 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x346 ADD MSTORE DUP2 DUP2 PUSH2 0x728 ADD MSTORE DUP2 DUP2 PUSH2 0x7B8 ADD MSTORE DUP2 DUP2 PUSH2 0x8F2 ADD MSTORE DUP2 DUP2 PUSH2 0xC0A ADD MSTORE DUP2 DUP2 PUSH2 0xCBE ADD MSTORE DUP2 DUP2 PUSH2 0x126B ADD MSTORE DUP2 DUP2 PUSH2 0x1312 ADD MSTORE DUP2 DUP2 PUSH2 0x165F ADD MSTORE DUP2 DUP2 PUSH2 0x17A7 ADD MSTORE DUP2 DUP2 PUSH2 0x18A8 ADD MSTORE DUP2 DUP2 PUSH2 0x1DFE ADD MSTORE DUP2 DUP2 PUSH2 0x205C ADD MSTORE DUP2 DUP2 PUSH2 0x2381 ADD MSTORE DUP2 DUP2 PUSH2 0x2464 ADD MSTORE DUP2 DUP2 PUSH2 0x28E7 ADD MSTORE DUP2 DUP2 PUSH2 0x2E08 ADD MSTORE DUP2 DUP2 PUSH2 0x3513 ADD MSTORE PUSH2 0x3714 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x2FA ADD MSTORE PUSH2 0x3146 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x5CB ADD MSTORE PUSH2 0x1C65 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x405 ADD MSTORE DUP2 DUP2 PUSH2 0x810 ADD MSTORE DUP2 DUP2 PUSH2 0x939 ADD MSTORE DUP2 DUP2 PUSH2 0xC2C ADD MSTORE DUP2 DUP2 PUSH2 0xD55 ADD MSTORE DUP2 DUP2 PUSH2 0x1D7E ADD MSTORE DUP2 DUP2 PUSH2 0x1E52 ADD MSTORE DUP2 DUP2 PUSH2 0x2020 ADD MSTORE DUP2 DUP2 PUSH2 0x2948 ADD MSTORE DUP2 DUP2 PUSH2 0x2A3A ADD MSTORE DUP2 DUP2 PUSH2 0x2E3C ADD MSTORE DUP2 DUP2 PUSH2 0x2FD5 ADD MSTORE DUP2 DUP2 PUSH2 0x327F ADD MSTORE DUP2 DUP2 PUSH2 0x3354 ADD MSTORE DUP2 DUP2 PUSH2 0x3571 ADD MSTORE DUP2 DUP2 PUSH2 0x365B ADD MSTORE DUP2 DUP2 PUSH2 0x3742 ADD MSTORE PUSH2 0x3826 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x453 ADD MSTORE DUP2 DUP2 PUSH2 0x2B0A ADD MSTORE DUP2 DUP2 PUSH2 0x3934 ADD MSTORE PUSH2 0x399F ADD MSTORE PUSH1 0x0 PUSH2 0x1592 ADD MSTORE PUSH1 0x0 PUSH2 0x1469 ADD MSTORE PUSH2 0x45E0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x241 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x67E4AC2C GT PUSH2 0x145 JUMPI DUP1 PUSH4 0xAF8C09BF GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x627 JUMPI DUP1 PUSH4 0xE25AA5FA EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0xF446C1D0 EQ PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x5ED JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x614 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x583 JUMPI DUP1 PUSH4 0xBAA8C7CB EQ PUSH2 0x596 JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x5BD JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x92BC3219 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xA69840A8 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x536 JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x55D JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x4F0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x488 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x49D JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x4E25DC47 GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x4E25DC47 EQ PUSH2 0x427 JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x44E JUMPI DUP1 PUSH4 0x627DD56A EQ PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x3ED JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3CB JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x3E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x214 JUMPI DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x341 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x368 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x371 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2B5 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2D2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x259 PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x681 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x4265 JUMP JUMPDEST PUSH2 0x2BD PUSH2 0xF9C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x2E5 PUSH2 0x2E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F14 JUMP JUMPDEST PUSH2 0xFB0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2E5 PUSH2 0x37F CALLDATASIZE PUSH1 0x4 PUSH2 0x3F79 JUMP JUMPDEST PUSH2 0x102A JUMP JUMPDEST PUSH2 0x397 PUSH2 0x392 CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x1465 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x3FB CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x15B4 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x483 CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x490 PUSH2 0x1886 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x41A6 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x4AB CALLDATASIZE PUSH1 0x4 PUSH2 0x3D88 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x4CB CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x1985 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x4DE CALLDATASIZE PUSH1 0x4 PUSH2 0x3D88 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x4F8 PUSH2 0x1C63 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x54726964656E743A487962726964506F6F6C0000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x56B CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x1D06 JUMP JUMPDEST PUSH2 0x2E5 PUSH2 0x57E CALLDATASIZE PUSH1 0x4 PUSH2 0x3F14 JUMP JUMPDEST PUSH2 0x213D JUMP JUMPDEST PUSH2 0x259 PUSH2 0x591 CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x21C2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x4F8 PUSH2 0x622 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FBA JUMP JUMPDEST PUSH2 0x250A JUMP JUMPDEST PUSH2 0x259 PUSH2 0x635 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F40 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x285C JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x6F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x70B DUP8 DUP10 ADD DUP10 PUSH2 0x3DEC JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x0 DUP1 PUSH2 0x720 PUSH2 0x28A7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xAE1 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x854 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x868 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x88C SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP5 POP PUSH2 0x89B DUP6 DUP5 DUP5 PUSH1 0x1 PUSH2 0x2ABD JUMP JUMPDEST SWAP9 POP PUSH2 0x8CA PUSH32 0x0 DUP9 DUP12 DUP8 DUP11 PUSH2 0x2C31 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x4 DUP5 ADD MSTORE ADDRESS PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x0 SWAP3 PUSH32 0x0 SWAP2 SWAP1 SWAP2 AND SWAP2 PUSH4 0x56623118 SWAP2 DUP4 SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x99A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9BE SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA42 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA66 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0xA73 DUP6 DUP4 PUSH2 0x4479 JUMP JUMPDEST LT ISZERO PUSH2 0xADB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST POP PUSH2 0xEF9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB96 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCA8 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP5 POP PUSH2 0xCB7 DUP6 DUP5 DUP5 PUSH1 0x0 PUSH2 0x2ABD JUMP JUMPDEST SWAP9 POP PUSH2 0xCE6 PUSH32 0x0 DUP9 DUP12 DUP8 DUP11 PUSH2 0x2C31 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x4 DUP5 ADD MSTORE ADDRESS PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x0 SWAP3 PUSH32 0x0 SWAP2 SWAP1 SWAP2 AND SWAP2 PUSH4 0x56623118 SWAP2 DUP4 SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDB6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDDA SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE5E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE82 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0xE8F DUP5 DUP4 PUSH2 0x4479 JUMP JUMPDEST LT ISZERO PUSH2 0xEF7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST POP JUMPDEST PUSH2 0xF01 PUSH2 0x2CBA JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP9 DUP14 PUSH1 0x40 MLOAD PUSH2 0xF80 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xFA7 PUSH2 0x28A7 JUMP JUMPDEST SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x1018 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x10C7 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x10C1 SWAP1 DUP5 SWAP1 PUSH2 0x4479 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x10FC SWAP1 DUP5 SWAP1 PUSH2 0x4479 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x1164 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x11E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 PUSH2 0x11F8 DUP5 DUP7 ADD DUP7 PUSH2 0x3EDF JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1207 PUSH2 0x2DCB JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH2 0x1227 DUP5 DUP5 PUSH2 0x30B4 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x1237 DUP7 DUP6 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x1241 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x1250 DUP7 DUP7 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x125A SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH2 0x1266 ADDRESS DUP6 PUSH2 0x3185 JUMP JUMPDEST PUSH2 0x1292 PUSH32 0x0 DUP4 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST PUSH2 0x12BE PUSH32 0x0 DUP3 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST PUSH2 0x12C6 PUSH2 0x2CBA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x12DC JUMPI SWAP1 POP POP SWAP9 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP10 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1363 JUMPI PUSH2 0x1363 PUSH2 0x4527 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP10 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x13CC JUMPI PUSH2 0x13CC PUSH2 0x4527 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x13F3 PUSH2 0x13E4 DUP4 DUP9 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x13EE DUP4 DUP9 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x3478 JUMP JUMPDEST PUSH1 0x6 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x158F JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x1629 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x163E DUP6 DUP8 ADD DUP8 PUSH2 0x3DA5 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1652 PUSH2 0x34D3 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x16EB JUMPI POP POP DUP4 DUP3 SUB PUSH32 0x0 PUSH2 0x16E4 DUP3 DUP8 DUP8 PUSH1 0x1 PUSH2 0x2ABD JUMP JUMPDEST SWAP10 POP PUSH2 0x17D6 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x17A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST POP POP DUP3 DUP2 SUB PUSH32 0x0 PUSH2 0x17D3 DUP3 DUP8 DUP8 PUSH1 0x0 PUSH2 0x2ABD JUMP JUMPDEST SWAP10 POP JUMPDEST PUSH2 0x17E2 DUP2 DUP12 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST PUSH2 0x17EA PUSH2 0x2CBA JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP6 DUP15 PUSH1 0x40 MLOAD PUSH2 0x1869 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP6 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x18DA JUMPI PUSH2 0x18DA PUSH2 0x4527 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1948 JUMPI PUSH2 0x1948 PUSH2 0x4527 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x19F3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 PUSH2 0x1A06 DUP4 DUP6 ADD DUP6 PUSH2 0x3D88 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1A13 PUSH2 0x28A7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1A22 PUSH2 0x2DCB JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x1A32 DUP4 DUP4 PUSH2 0x3478 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A40 DUP7 DUP6 PUSH2 0x4479 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A4E DUP7 DUP6 PUSH2 0x4479 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1A5F DUP5 DUP5 DUP12 DUP12 PUSH2 0x38D9 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1A7E PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP11 PUSH2 0x42C7 JUMP JUMPDEST SWAP9 POP PUSH2 0x1A9A PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP10 PUSH2 0x42C7 JUMP JUMPDEST SWAP8 POP PUSH1 0x0 DUP1 PUSH2 0x1AA9 DUP12 DUP12 PUSH2 0x30B4 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ ISZERO PUSH2 0x1B4C JUMPI PUSH1 0x0 DUP7 GT DUP1 ISZERO PUSH2 0x1AC6 JUMPI POP PUSH1 0x0 DUP6 GT JUMPDEST PUSH2 0x1B2C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F414D4F554E54530000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH2 0x1B38 PUSH2 0x3E8 DUP9 PUSH2 0x4479 JUMP JUMPDEST SWAP13 POP PUSH2 0x1B47 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x39DC JUMP JUMPDEST PUSH2 0x1B6F JUMP JUMPDEST DUP1 DUP3 PUSH2 0x1B58 DUP3 DUP11 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x1B62 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x1B6C SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP13 POP JUMPDEST DUP13 PUSH2 0x1BD6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F4C49515549444954595F4D494E544544000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH2 0x1BE0 DUP13 DUP15 PUSH2 0x39DC JUMP JUMPDEST PUSH2 0x1BE8 PUSH2 0x2CBA JUMP JUMPDEST PUSH1 0x6 DUP8 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 DUP2 ADD DUP15 SWAP1 MSTORE DUP14 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP1 CALLER SWAP1 PUSH32 0xF9C32FBC56FF04F32A233EBC26E388564223745E28ABD8D0781DD906537F563E SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP10 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CDD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D01 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x1D16 DUP5 DUP7 ADD DUP7 PUSH2 0x3F14 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1D25 PUSH2 0x28A7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP8 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DD6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1DFA SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP3 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1F69 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA5139CA PUSH32 0x0 PUSH2 0x1EBA DUP7 DUP7 DUP7 PUSH1 0x1 PUSH2 0x2ABD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F3E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F62 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP5 POP PUSH2 0x2133 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x201E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA5139CA PUSH32 0x0 PUSH2 0x2088 DUP7 DUP7 DUP7 PUSH1 0x0 PUSH2 0x2ABD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x210C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2130 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP5 POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP4 SWAP1 PUSH2 0x215E SWAP1 DUP5 SWAP1 PUSH2 0x4479 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x1018 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x2230 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x2245 DUP6 DUP8 ADD DUP8 PUSH2 0x3DA5 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x2256 PUSH2 0x2DCB JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH2 0x2276 DUP5 DUP5 PUSH2 0x30B4 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x2286 DUP7 DUP6 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x2290 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x229F DUP7 DUP7 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x22A9 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH2 0x22B5 ADDRESS DUP6 PUSH2 0x3185 JUMP JUMPDEST PUSH2 0x22C2 PUSH2 0x13E4 DUP4 DUP9 PUSH2 0x4479 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x237F JUMPI PUSH2 0x233B DUP3 PUSH2 0x232A DUP2 DUP10 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x2334 DUP5 DUP10 PUSH2 0x4479 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2ABD JUMP JUMPDEST PUSH2 0x2345 SWAP1 DUP3 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 POP PUSH2 0x2373 PUSH32 0x0 DUP3 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST DUP1 SWAP10 POP PUSH1 0x0 SWAP2 POP PUSH2 0x2492 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2434 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH2 0x2453 DUP2 PUSH2 0x2442 DUP5 DUP10 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x244C DUP5 DUP10 PUSH2 0x4479 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2ABD JUMP JUMPDEST PUSH2 0x245D SWAP1 DUP4 PUSH2 0x42C7 JUMP JUMPDEST SWAP2 POP PUSH2 0x248B PUSH32 0x0 DUP4 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST POP SWAP8 POP DUP8 PUSH1 0x0 JUMPDEST PUSH2 0x249A PUSH2 0x2CBA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP6 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x2574 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x257E PUSH2 0x1465 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP3 DUP13 SWAP3 DUP13 SWAP3 DUP13 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x25D9 DUP4 PUSH2 0x4490 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x267A SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2703 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x277E JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x27E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2869 PUSH2 0x28A7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x2879 DUP4 DUP4 PUSH2 0x3478 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP PUSH2 0x288B PUSH1 0x12 PUSH1 0xA PUSH2 0x4373 JUMP JUMPDEST PUSH2 0x2895 SWAP1 DUP4 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x289F SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x24 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP6 ADD MSTORE SWAP4 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x298C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x29C4 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A93 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2AB7 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP1 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP5 MUL PUSH32 0x0 DUP5 MUL PUSH2 0x2710 PUSH32 0x0 DUP9 MUL DIV DUP8 SUB DUP4 PUSH2 0x2B39 DUP5 DUP5 PUSH2 0x3A4C JUMP JUMPDEST SWAP1 POP DUP6 ISZERO PUSH2 0x2BB5 JUMPI PUSH32 0x0 DUP3 MUL DUP5 ADD PUSH1 0x0 PUSH2 0x2B72 DUP3 DUP5 PUSH2 0x3B9F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 DUP7 SUB SUB SWAP7 POP PUSH32 0x0 DUP8 DUP2 PUSH2 0x2BAB JUMPI PUSH2 0x2BAB PUSH2 0x44F8 JUMP JUMPDEST DIV SWAP7 POP POP POP PUSH2 0x2C25 JUMP JUMPDEST PUSH32 0x0 DUP3 MUL DUP4 ADD PUSH1 0x0 PUSH2 0x2BE6 DUP3 DUP5 PUSH2 0x3B9F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 DUP8 SUB SUB SWAP7 POP PUSH32 0x0 DUP8 DUP2 PUSH2 0x2C1F JUMPI PUSH2 0x2C1F PUSH2 0x44F8 JUMP JUMPDEST DIV SWAP7 POP POP POP JUMPDEST POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2C3D DUP6 DUP5 DUP7 DUP5 PUSH2 0x3218 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2CB3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x2C80 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x4265 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CAE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2CC5 PUSH2 0x2DCB JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 GT DUP1 ISZERO SWAP1 PUSH2 0x2CFA JUMPI POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO JUMPDEST PUSH2 0x2D60 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564552464C4F57000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP1 DUP4 AND OR PUSH1 0x5 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH32 0xCF2AA50876CDFBB541206F89AF0EE78D44A2ABF8D328E37FA4917F982149848A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 DUP2 AND PUSH1 0x4 DUP5 ADD MSTORE ADDRESS PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH32 0x0 AND SWAP2 PUSH4 0x56623118 SWAP2 DUP4 SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E9A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EBE SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F42 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F66 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 DUP2 AND PUSH1 0x4 DUP5 ADD MSTORE ADDRESS PUSH1 0x24 DUP5 ADD MSTORE SWAP3 SWAP5 POP PUSH32 0x0 AND SWAP2 PUSH4 0x56623118 SWAP2 DUP4 SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x301F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3033 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3057 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x6 SLOAD SWAP1 SWAP2 SWAP1 DUP1 ISZERO PUSH2 0x317D JUMPI PUSH2 0x30CE DUP6 DUP6 PUSH2 0x3478 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x317D JUMPI PUSH1 0x4 SLOAD PUSH1 0x0 DUP2 PUSH2 0x30E8 DUP5 DUP7 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x30F2 SWAP1 DUP8 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x30FC SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x310A DUP5 DUP5 PUSH2 0x443C JUMP JUMPDEST DUP6 PUSH2 0x3117 DUP6 PUSH2 0x2710 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x3121 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x312B SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3139 DUP3 DUP5 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3178 JUMPI PUSH2 0x316B PUSH32 0x0 DUP3 PUSH2 0x39DC JUMP JUMPDEST PUSH2 0x3175 DUP2 DUP9 PUSH2 0x42C7 JUMP JUMPDEST SWAP7 POP JUMPDEST POP POP POP POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x31BA SWAP1 DUP5 SWAP1 PUSH2 0x4479 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP1 SLOAD DUP3 SWAP1 SUB DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3301 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x32FA SWAP2 SWAP1 PUSH2 0x4117 JUMP JUMPDEST POP POP PUSH2 0x3472 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDA5139CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 DUP7 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP6 SWAP1 PUSH4 0xDA5139CA SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x33B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x33DC SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP8 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x24 DUP5 ADD MSTORE SWAP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x346D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP4 MUL PUSH32 0x0 DUP4 MUL PUSH2 0x34CA DUP3 DUP3 PUSH2 0x3A4C JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND SWAP4 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND SWAP2 PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35C9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x35ED SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x369F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x36B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x36D7 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x4FFE34DB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0x4FFE34DB SWAP1 PUSH1 0x24 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3783 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3797 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37BB SWAP2 SWAP1 PUSH2 0x40A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x4FFE34DB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0x4FFE34DB SWAP1 PUSH1 0x24 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3867 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x387B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x389F SWAP2 SWAP1 PUSH2 0x40A3 JUMP JUMPDEST SWAP1 POP PUSH2 0x38AB DUP3 DUP8 PUSH2 0x3CD1 JUMP JUMPDEST SWAP6 POP PUSH2 0x38B7 DUP2 DUP7 PUSH2 0x3CD1 JUMP JUMPDEST SWAP5 POP PUSH2 0x38C3 DUP3 DUP6 PUSH2 0x3CD1 JUMP JUMPDEST SWAP4 POP PUSH2 0x38CF DUP2 DUP5 PUSH2 0x3CD1 JUMP JUMPDEST SWAP3 POP POP POP SWAP1 SWAP2 SWAP3 SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 ISZERO DUP1 PUSH2 0x38E7 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x38F7 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x39D3 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x3904 DUP6 DUP10 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x390E SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP DUP6 DUP2 GT PUSH2 0x3969 JUMPI PUSH2 0x3924 PUSH2 0x2710 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x392E DUP3 DUP9 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x3958 SWAP1 PUSH32 0x0 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3962 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP2 POP PUSH2 0x39D1 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x3976 DUP8 DUP10 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3980 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH2 0x398F PUSH2 0x2710 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3999 DUP3 DUP11 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x39C3 SWAP1 PUSH32 0x0 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x39CD SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP4 POP POP JUMPDEST POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0x39ED SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x320C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3A59 DUP4 DUP6 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3A65 JUMPI PUSH1 0x0 SWAP2 POP JUMPDEST PUSH1 0x0 DUP2 DUP2 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x3B95 JUMPI PUSH1 0x0 PUSH1 0x4 DUP8 DUP5 DUP11 PUSH2 0x3A85 DUP3 DUP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3A8F SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3A99 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3AA3 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3AAD SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP DUP3 SWAP4 POP DUP1 PUSH1 0x3 PUSH2 0x3ABF SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH2 0x3AED PUSH1 0x64 PUSH32 0x0 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3AF7 SWAP2 SWAP1 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x3B01 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3B0B SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST DUP4 PUSH2 0x3B17 DUP4 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH1 0x64 PUSH2 0x3B43 DUP10 PUSH32 0x0 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3B4D SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3B57 SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST PUSH2 0x3B61 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3B6B SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP3 POP PUSH2 0x3B77 DUP4 DUP6 PUSH2 0x3D31 JUMP JUMPDEST ISZERO PUSH2 0x3B82 JUMPI POP PUSH2 0x3B95 JUMP JUMPDEST POP DUP1 PUSH2 0x3B8D DUP2 PUSH2 0x4490 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3A6A JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3BAD DUP5 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3BB7 DUP5 DUP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3BC1 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH1 0x64 PUSH2 0x3BF0 PUSH32 0x0 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3BFA SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3C04 DUP5 DUP4 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3C0E SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH2 0x3C3E PUSH1 0x64 DUP7 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3C48 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3C52 SWAP1 DUP7 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 SWAP4 POP PUSH1 0x0 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x2133 JUMPI DUP5 SWAP2 POP DUP6 DUP4 PUSH2 0x3C76 DUP5 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3C80 SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST PUSH2 0x3C8A SWAP2 SWAP1 PUSH2 0x4479 JUMP JUMPDEST DUP5 PUSH2 0x3C95 DUP8 DUP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3C9F SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST PUSH2 0x3CA9 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP5 POP PUSH2 0x3CB5 DUP6 DUP4 PUSH2 0x3D31 JUMP JUMPDEST ISZERO PUSH2 0x3CBF JUMPI PUSH2 0x2133 JUMP JUMPDEST DUP1 PUSH2 0x3CC9 DUP2 PUSH2 0x4490 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3C5C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x20 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 EQ ISZERO PUSH2 0x3CF9 JUMPI POP DUP1 PUSH2 0x1024 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH2 0x3D20 SWAP2 AND DUP5 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3D2A SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 GT ISZERO PUSH2 0x3D48 JUMPI POP PUSH1 0x1 DUP2 DUP4 SUB GT ISZERO PUSH2 0x1024 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 SUB GT ISZERO SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3D63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3D63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3D9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3D2A DUP2 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3DBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3DC5 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3DD5 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP2 POP PUSH2 0x3DE3 PUSH1 0x40 DUP6 ADD PUSH2 0x3D53 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3E04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3E0F DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 DUP2 ADD CALLDATALOAD PUSH2 0x3E20 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP5 POP PUSH2 0x3E2E PUSH1 0x40 DUP9 ADD PUSH2 0x3D53 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3E52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3E78 JUMPI PUSH2 0x3E78 PUSH2 0x4556 JUMP JUMPDEST PUSH2 0x3EA8 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x4278 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP11 DUP5 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3EBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP5 DUP5 ADD DUP6 DUP5 ADD CALLDATACOPY PUSH1 0x0 DUP5 DUP3 DUP5 ADD ADD MSTORE POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3EFD DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP2 POP PUSH2 0x3F0B PUSH1 0x20 DUP5 ADD PUSH2 0x3D53 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3F32 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3F5E DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3F6E DUP2 PUSH2 0x4585 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3F8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3F99 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3FA9 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3FD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x3FE0 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x3FF0 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x4014 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x405C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4070 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x407F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x4091 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x40D8 JUMPI PUSH2 0x40D8 PUSH2 0x4556 JUMP JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x40E4 DUP4 PUSH2 0x3D68 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x40F2 PUSH1 0x20 DUP5 ADD PUSH2 0x3D68 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x412A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4161 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x4145 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x4173 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x41F4 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x41C2 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4258 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x421D JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x3D2A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x413B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x42BF JUMPI PUSH2 0x42BF PUSH2 0x4556 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x42DA JUMPI PUSH2 0x42DA PUSH2 0x44C9 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4315 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x317D JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x4359 JUMPI PUSH2 0x4359 PUSH2 0x44C9 JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x4366 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x431F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D2A PUSH1 0xFF DUP5 AND DUP4 PUSH1 0x0 DUP3 PUSH2 0x438C JUMPI POP PUSH1 0x1 PUSH2 0x1024 JUMP JUMPDEST DUP2 PUSH2 0x4399 JUMPI POP PUSH1 0x0 PUSH2 0x1024 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x43AF JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x43B9 JUMPI PUSH2 0x43D5 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x1024 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x43CA JUMPI PUSH2 0x43CA PUSH2 0x44C9 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x1024 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x43F8 JUMPI POP DUP2 DUP2 EXP PUSH2 0x1024 JUMP JUMPDEST PUSH2 0x4402 DUP4 DUP4 PUSH2 0x431A JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x4434 JUMPI PUSH2 0x4434 PUSH2 0x44C9 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x4474 JUMPI PUSH2 0x4474 PUSH2 0x44C9 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x448B JUMPI PUSH2 0x448B PUSH2 0x44C9 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x44C2 JUMPI PUSH2 0x44C2 PUSH2 0x44C9 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x45A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE2 0xBE 0xD7 0xB7 GASPRICE DUP14 OR PUSH12 0x55D9233A65288C602EAB9DB5 0xC2 BLOCKHASH 0xE7 0xB5 GT CALL PUSH15 0x85C948723064736F6C634300080700 CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0xA793BC64 ORIGIN PUSH11 0x686C8216157EF398F80001 CREATE DUP8 0xCD RETURNDATACOPY MSIZE 0xEE DUP12 DUP1 MSTORE ISZERO 0xA8 MUL COINBASE 0xD8 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "239:937:41:-:0;;;288:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;338:15;-1:-1:-1;;;;;634:29:44;;630:55;;672:13;;-1:-1:-1;;;672:13:44;;;;;;;;;;;630:55;695:32;;-1:-1:-1;;;;;;695:32:44;;;-1:-1:-1;239:937:41;;14:290:64;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:64;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:64:o;:::-;239:937:41;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_registerPool_11818": {
                  "entryPoint": 1321,
                  "id": 11818,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@configAddress_11692": {
                  "entryPoint": null,
                  "id": 11692,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@deployPool_9943": {
                  "entryPoint": 520,
                  "id": 9943,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getPools_11886": {
                  "entryPoint": 1024,
                  "id": 11886,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@masterDeployer_11681": {
                  "entryPoint": null,
                  "id": 11681,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@poolsCount_11837": {
                  "entryPoint": null,
                  "id": 11837,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@pools_11688": {
                  "entryPoint": 437,
                  "id": 11688,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_uint256t_uint256_fromMemory": {
                  "entryPoint": 2201,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 2278,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 2340,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256": {
                  "entryPoint": 2410,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 2485,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_memory_ptr": {
                  "entryPoint": 2511,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 2728,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed": {
                  "entryPoint": 2820,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 2968,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 2995,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 3055,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 3102,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 3149,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 3196,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:6491:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "162:376:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "209:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "218:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "221:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "211:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "211:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "211:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "183:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "192:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "179:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "179:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "204:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "175:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "175:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "172:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "234:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "253:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "247:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "247:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "238:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "297:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "272:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "272:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "272:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "312:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "322:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "312:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "336:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "361:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "372:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "357:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "357:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "351:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "351:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "340:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "410:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "385:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "385:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "385:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "427:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "437:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "427:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "453:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "473:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "484:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "469:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "469:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "463:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "463:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "453:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "497:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "517:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "528:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "513:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "513:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "507:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "507:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "497:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_uint256t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "104:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "115:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "127:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "135:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "143:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "151:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:524:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "630:301:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "676:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "685:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "688:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "678:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "678:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "678:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "651:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "660:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "647:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "647:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "672:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "643:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "643:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "640:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "701:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "727:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "714:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "714:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "705:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "771:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "746:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "746:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "746:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "786:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "796:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "786:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "810:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "842:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "853:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "838:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "838:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "825:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "825:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "814:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "891:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "866:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "866:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "866:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "908:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "918:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "908:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "588:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "599:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "611:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "619:6:64",
                            "type": ""
                          }
                        ],
                        "src": "543:388:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1040:352:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1086:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1095:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1098:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1088:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1088:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1088:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1061:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1070:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1057:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1057:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1082:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1053:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1053:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1050:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1111:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1137:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1124:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1124:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1115:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1181:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1156:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1156:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1156:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1196:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1206:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1196:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1220:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1252:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1263:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1248:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1248:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1235:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1235:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1224:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1301:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1276:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1276:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1276:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1318:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1328:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1318:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1344:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1371:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1382:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1367:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1367:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1354:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1354:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1344:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "990:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1001:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1013:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1021:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1029:6:64",
                            "type": ""
                          }
                        ],
                        "src": "936:456:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1518:404:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1565:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1574:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1577:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1567:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1567:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1567:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1539:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1548:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1535:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1535:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1560:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1531:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1531:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1528:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1590:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1616:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1603:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1603:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1594:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1660:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1635:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1635:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1635:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1675:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1685:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1675:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1699:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1731:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1742:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1727:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1727:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1714:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1714:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1703:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1780:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1755:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1755:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1755:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1797:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1807:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1797:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1823:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1850:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1861:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1846:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1846:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1833:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1833:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1823:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1874:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1901:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1912:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1897:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1897:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1884:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1884:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1874:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1460:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1471:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1483:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1491:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1499:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1507:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1397:525:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1997:110:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2043:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2052:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2055:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2045:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2045:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2045:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2018:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2027:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2014:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2014:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2039:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2010:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2010:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2007:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2068:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2091:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2078:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2078:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2068:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1963:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1974:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1986:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1927:180:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2191:901:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2237:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2246:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2249:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2239:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2239:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2239:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2212:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2221:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2208:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2208:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2233:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2204:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2204:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2201:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2262:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2289:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2276:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2276:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2266:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2308:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2318:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2312:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2363:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2372:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2375:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2365:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2365:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2365:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2351:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2359:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2348:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2348:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2345:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2388:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2402:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2413:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2398:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2398:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2392:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2468:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2477:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2480:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2470:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2470:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2470:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2447:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2451:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2443:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2443:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2458:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2439:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2439:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2432:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2432:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2429:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2493:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2516:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2503:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2503:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2497:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2542:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2544:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2544:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2544:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2534:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2538:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2531:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2531:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2528:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2573:76:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2583:66:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "2577:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2658:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2678:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2672:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2672:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2662:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2690:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2712:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2736:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2740:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2732:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2732:13:64"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "2747:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "2728:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2728:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2752:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2724:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2724:31:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "2757:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2720:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2720:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2708:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2708:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2694:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2820:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2822:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2822:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2822:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2779:10:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2791:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2776:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2776:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2799:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2811:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2796:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2796:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2773:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2773:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2770:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2858:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2862:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2851:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2851:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2851:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2889:6:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2897:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2882:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2882:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2882:18:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2946:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2955:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2958:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2948:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2948:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2948:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2923:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2927:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2919:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2919:11:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2932:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2915:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2915:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2937:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2912:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2912:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2909:53:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2988:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2996:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2984:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2984:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3005:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3009:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3001:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3001:11:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3014:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "2971:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2971:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2971:46:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "3041:6:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3049:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3037:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3037:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3054:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3033:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3033:24:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3059:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3026:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3026:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3026:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3070:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "3080:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3070:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2157:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2168:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2180:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2112:980:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3198:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3208:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3220:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3231:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3216:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3216:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3208:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3250:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3265:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3273:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3261:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3261:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3243:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3243:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3243:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3167:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3178:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3189:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3097:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3513:285:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3523:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3535:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3546:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3531:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3531:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3523:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3559:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3569:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3563:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3627:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3642:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3650:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3638:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3638:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3620:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3620:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3620:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3674:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3685:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3670:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3670:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3694:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3702:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3690:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3690:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3663:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3663:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3663:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3726:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3737:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3722:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3722:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3742:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3715:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3715:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3715:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3769:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3780:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3765:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3765:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3785:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3758:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3758:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3758:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3458:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3469:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3477:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3485:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3493:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3504:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3328:470:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3954:530:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3964:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3974:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3968:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3985:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4003:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4014:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3999:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3999:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3989:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4033:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4044:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4026:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4026:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4026:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4056:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "4067:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "4060:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4082:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4102:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4096:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4096:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "4086:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4125:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4133:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4118:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4118:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4118:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4149:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4160:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4171:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4156:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4156:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "4149:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4183:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4201:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4209:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4197:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4197:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4187:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4221:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4230:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "4225:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4289:169:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "4310:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4325:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "4319:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4319:13:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4334:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "4315:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4315:62:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4303:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4303:75:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4303:75:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4391:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "4402:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4407:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4398:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4398:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4391:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4423:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "4437:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4445:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4433:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4433:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4423:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4251:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4254:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4248:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4248:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4262:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4264:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "4273:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4276:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4269:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4269:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "4264:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4244:3:64",
                                "statements": []
                              },
                              "src": "4240:218:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4467:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "4475:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4467:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3923:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3934:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3945:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3803:681:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4636:612:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4653:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4664:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4646:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4646:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4646:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4676:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4696:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4690:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4690:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "4680:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4723:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4734:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4719:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4719:18:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4739:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4712:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4712:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4712:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4755:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4764:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "4759:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4826:92:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4855:9:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4866:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "4851:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4851:17:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4870:2:64",
                                              "type": "",
                                              "value": "96"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4847:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4847:26:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4889:6:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4897:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "4885:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "4885:14:64"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "4901:4:64",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "4881:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4881:25:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "4875:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4875:32:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4840:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4840:68:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4840:68:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4785:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4788:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4782:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4782:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4796:21:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4798:17:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "4807:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4810:4:64",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4803:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4803:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "4798:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4778:3:64",
                                "statements": []
                              },
                              "src": "4774:144:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4952:66:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4981:9:64"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4992:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "4977:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4977:22:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5001:2:64",
                                              "type": "",
                                              "value": "96"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4973:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4973:31:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5006:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4966:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4966:42:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4966:42:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4933:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4936:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4930:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4930:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4927:91:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5027:121:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5043:9:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "5062:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5070:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5058:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5058:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5075:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "5054:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5054:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5039:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5039:104:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5145:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5035:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5035:113:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5027:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5168:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5179:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5164:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5164:20:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5190:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5198:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5186:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5186:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5157:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5157:85:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5157:85:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4597:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4608:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4616:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4627:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4489:759:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5354:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5364:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5376:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5387:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5372:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5372:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5364:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5406:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5417:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5399:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5399:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5399:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5323:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5334:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5345:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5253:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5483:80:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5510:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "5512:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5512:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5512:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "5499:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "5506:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "5502:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5502:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5496:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5496:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5493:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5541:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "5552:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "5555:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5548:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5548:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "5541:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "5466:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "5469:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "5475:3:64",
                            "type": ""
                          }
                        ],
                        "src": "5435:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5615:148:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5706:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "5708:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5708:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5708:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5631:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5638:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "5628:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5628:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5625:103:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5737:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5748:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5755:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5744:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5744:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "5737:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "5597:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "5607:3:64",
                            "type": ""
                          }
                        ],
                        "src": "5568:195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5800:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5817:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5820:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5810:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5810:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5810:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5914:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5917:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5907:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5907:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5907:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5938:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5941:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "5931:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5931:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5931:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "5768:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5989:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6006:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6009:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5999:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5999:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5999:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6103:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6106:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6096:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6096:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6096:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6127:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6130:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6120:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6120:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6120:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "5957:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6178:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6195:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6198:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6188:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6188:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6188:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6292:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6295:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6285:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6285:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6285:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6316:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6319:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6309:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6309:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6309:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6146:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6380:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6467:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6476:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6479:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6469:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6469:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6469:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6403:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "6414:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6421:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "6410:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6410:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "6400:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6400:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6393:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6393:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6390:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6369:5:64",
                            "type": ""
                          }
                        ],
                        "src": "6335:154:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_payablet_address_payablet_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := mload(add(headStart, 64))\n        value3 := mload(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_bytes_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value0 := memPtr\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let length := mload(value0)\n        mstore(add(headStart, 64), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(add(headStart, i), 96), mload(add(add(value0, i), 0x20)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 96), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 96)\n        mstore(add(headStart, 0x20), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "11681": [
                  {
                    "length": 32,
                    "start": 346
                  },
                  {
                    "length": 32,
                    "start": 908
                  },
                  {
                    "length": 32,
                    "start": 1345
                  }
                ]
              },
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b50600436106200007b5760003560e01c806371a25812116200005657806371a25812146200012e578063cf58879a1462000154578063f6ab6d99146200017c57600080fd5b8063169c4cef146200008057806327c3cae114620000c15780635bc93d6c14620000d8575b600080fd5b620000976200009136600462000924565b620001b5565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b62000097620000d2366004620009cf565b62000208565b6200011f620000e9366004620008e6565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526020818152604080832093909416825291909152205490565b604051908152602001620000b8565b620001456200013f3660046200096a565b62000400565b604051620000b8919062000aa8565b620000977f000000000000000000000000000000000000000000000000000000000000000081565b620000976200018d366004620009b5565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60006020528260005260406000206020528160005260406000208181548110620001de57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16925083915050565b60008060008060008580602001905181019062000226919062000899565b93509350935093508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16111562000267579192915b6040805173ffffffffffffffffffffffffffffffffffffffff8087166020830152851691810191909152606081018390526080810182905260a001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152600280845260608401909252975060009190816020016020820280368337019050509050848160008151811062000308576200030862000c1e565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050838160018151811062000359576200035962000c1e565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101820152875190880120604051819089907f000000000000000000000000000000000000000000000000000000000000000090620003b7906200088b565b620003c492919062000b04565b8190604051809103906000f5905080158015620003e5573d6000803e3d6000fd5b509650620003f587838362000529565b505050505050919050565b60608167ffffffffffffffff8111156200041e576200041e62000c4d565b60405190808252806020026020018201604052801562000448578160200160208202803683370190505b50905060005b82811015620005205773ffffffffffffffffffffffffffffffffffffffff80871660009081526020818152604080832093891683529290522062000493828662000b98565b81548110620004a657620004a662000c1e565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110620004e657620004e662000c1e565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015280620005178162000bb3565b9150506200044e565b50949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161462000599576040517f03781a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555b600183510381101562000885578281600101815181106200060b576200060b62000c1e565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106200063e576200063e62000c1e565b602002602001015173ffffffffffffffffffffffffffffffffffffffff161062000694576040517f3f06bf8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015b83518110156200087b57600080858481518110620006bb57620006bb62000c1e565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085838151811062000714576200071462000c1e565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409091016000908120805460018101825590825291812090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915584518190869084908110620007a357620007a362000c1e565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858481518110620007fc57620007fc62000c1e565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604090910160009081208054600180820183559183529290912090910180547fffffffffffffffffffffffff000000000000000000000000000000000000000016928816929092179091550162000699565b50600101620005e6565b50505050565b61513b8062000ca383390190565b60008060008060808587031215620008b057600080fd5b8451620008bd8162000c7c565b6020860151909450620008d08162000c7c565b6040860151606090960151949790965092505050565b60008060408385031215620008fa57600080fd5b8235620009078162000c7c565b91506020830135620009198162000c7c565b809150509250929050565b6000806000606084860312156200093a57600080fd5b8335620009478162000c7c565b92506020840135620009598162000c7c565b929592945050506040919091013590565b600080600080608085870312156200098157600080fd5b84356200098e8162000c7c565b93506020850135620009a08162000c7c565b93969395505050506040820135916060013590565b600060208284031215620009c857600080fd5b5035919050565b600060208284031215620009e257600080fd5b813567ffffffffffffffff80821115620009fb57600080fd5b818401915084601f83011262000a1057600080fd5b81358181111562000a255762000a2562000c4d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171562000a6e5762000a6e62000c4d565b8160405282815287602084870101111562000a8857600080fd5b826020860160208301376000928101602001929092525095945050505050565b6020808252825182820181905260009190848201906040850190845b8181101562000af857835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162000ac4565b50909695505050505050565b604081526000835180604084015260005b8181101562000b34576020818701810151606086840101520162000b15565b8181111562000b47576000606083860101525b5073ffffffffffffffffffffffffffffffffffffffff93909316602083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b6000821982111562000bae5762000bae62000bef565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000be85762000be862000bef565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811462000c9f57600080fd5b5056fe6102006040523480156200001257600080fd5b506040516200513b3803806200513b833981016040819052620000359162000610565b4660805262000112604080518082018252600e81526d29bab9b434902628102a37b5b2b760911b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b60a0818152505060008060008085806020019051810190620001359190620005c3565b929650909450925090506001600160a01b0384166200018a5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064015b60405180910390fd5b826001600160a01b0316846001600160a01b03161415620001ee5760405162461bcd60e51b815260206004820152601360248201527f4944454e544943414c5f41444452455353455300000000000000000000000000604482015260640162000181565b612710821115620002355760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f535741505f46454560801b604482015260640162000181565b806200026d5760405162461bcd60e51b81526020600482015260066024820152655a45524f5f4160d01b604482015260640162000181565b6001600160601b0319606085811b82166101405284901b166101605260c0829052604080516360a56c0160e11b815290516001600160a01b0387169163c14ad802916004808301926020929190829003018186803b158015620002cf57600080fd5b505afa158015620002e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030a919062000701565b600481905550846001600160a01b0316630c0a0cd26040518163ffffffff1660e01b815260040160206040518083038186803b1580156200034a57600080fd5b505afa1580156200035f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038591906200059c565b6001600160a01b0316610120816001600160a01b031660601b81525050846001600160a01b0316634da318276040518163ffffffff1660e01b815260040160206040518083038186803b158015620003dc57600080fd5b505afa158015620003f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041791906200059c565b6001600160601b0319606091821b811660e0529086901b1661010052610180819052620004468160026200084a565b6101a08181525050836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200048857600080fd5b505afa1580156200049d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c391906200071b565b620004d09060126200086c565b620004dd90600a62000789565b6101c08181525050826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156200051f57600080fd5b505afa15801562000534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200055a91906200071b565b620005679060126200086c565b6200057490600a62000789565b6101e0525050600160075550620008d792505050565b80516200059781620008be565b919050565b600060208284031215620005af57600080fd5b8151620005bc81620008be565b9392505050565b60008060008060808587031215620005da57600080fd5b8451620005e781620008be565b6020860151909450620005fa81620008be565b6040860151606090960151949790965092505050565b600080604083850312156200062457600080fd5b82516001600160401b03808211156200063c57600080fd5b818501915085601f8301126200065157600080fd5b815181811115620006665762000666620008a8565b604051601f8201601f19908116603f01168101908382118183101715620006915762000691620008a8565b81604052828152602093508884848701011115620006ae57600080fd5b600091505b82821015620006d25784820184015181830185015290830190620006b3565b82821115620006e45760008484830101525b9550620006f69150508582016200058a565b925050509250929050565b6000602082840312156200071457600080fd5b5051919050565b6000602082840312156200072e57600080fd5b815160ff81168114620005bc57600080fd5b600181815b808511156200078157816000190482111562000765576200076562000892565b808516156200077357918102915b93841c939080029062000745565b509250929050565b6000620005bc60ff841683600082620007a55750600162000844565b81620007b45750600062000844565b8160018114620007cd5760028114620007d857620007f8565b600191505062000844565b60ff841115620007ec57620007ec62000892565b50506001821b62000844565b5060208310610133831016604e8410600b84101617156200081d575081810a62000844565b62000829838362000740565b806000190482111562000840576200084062000892565b0290505b92915050565b600081600019048311821515161562000867576200086762000892565b500290565b600060ff821660ff84168082101562000889576200088962000892565b90039392505050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114620008d457600080fd5b50565b60805160a05160c05160e05160601c6101005160601c6101205160601c6101405160601c6101605160601c610180516101a0516101c0516101e0516145e062000b5b6000396000818161042c01528181612ae401528181612b7e01528181612bb7015261349f01526000818161059b01528181612ac101528181612b4301528181612bf2015261347c015260008181613ac901528181613b1f01528181613bca0152613c140152600061065f0152600081816105f2015281816107ee015281816108a201528181610ae301528181610bd401528181610d0e015281816112970152818161137b015281816116b8015281816116ed0152818161191601528181611e8e01528181611f6b015281816122ca0152818161234c01528181612a0101528181612fa30152818161362a01526137f801526000818161034601528181610728015281816107b8015281816108f201528181610c0a01528181610cbe0152818161126b015281816113120152818161165f015281816117a7015281816118a801528181611dfe0152818161205c0152818161238101528181612464015281816128e701528181612e080152818161351301526137140152600081816102fa01526131460152600081816105cb0152611c65015260008181610405015281816108100152818161093901528181610c2c01528181610d5501528181611d7e01528181611e52015281816120200152818161294801528181612a3a01528181612e3c01528181612fd50152818161327f01528181613354015281816135710152818161365b01528181613742015261382601526000818161045301528181612b0a01528181613934015261399f015260006115920152600061146901526145e06000f3fe608060405234801561001057600080fd5b50600436106102415760003560e01c806367e4ac2c11610145578063af8c09bf116100bd578063d21220a71161008c578063dd62ed3e11610071578063dd62ed3e14610627578063e25aa5fa14610652578063f446c1d01461065a57600080fd5b8063d21220a7146105ed578063d505accf1461061457600080fd5b8063af8c09bf14610583578063baa8c7cb14610596578063c14ad802146105bd578063cf58879a146105c657600080fd5b806392bc321911610114578063a69840a8116100f9578063a69840a814610536578063a8f1f52e1461055d578063a9059cbb1461057057600080fd5b806392bc3219146104f057806395d89b41146104fa57600080fd5b806367e4ac2c1461048857806370a082311461049d5780637ba0e2e7146104bd5780637ecebe00146104d057600080fd5b80632a07b6c7116101d8578063499a3c50116101a75780634e25dc471161018c5780634e25dc471461042757806354cf2aeb1461044e578063627dd56a1461047557600080fd5b8063499a3c50146103ed5780634da318271461040057600080fd5b80632a07b6c71461038457806330adf81f146103a4578063313ce567146103cb5780633644e515146103e557600080fd5b80630c0a0cd2116102145780630c0a0cd2146102f55780630dfe16811461034157806318160ddd1461036857806323b872dd1461037157600080fd5b8063053da1c81461024657806306fdde031461026c5780630902f1ac146102b5578063095ea7b3146102d2575b600080fd5b610259610254366004614031565b610681565b6040519081526020015b60405180910390f35b6102a86040518060400160405280600e81526020017f5375736869204c5020546f6b656e00000000000000000000000000000000000081525081565b6040516102639190614265565b6102bd610f9c565b60408051928352602083019190915201610263565b6102e56102e0366004613f14565b610fb0565b6040519015158152602001610263565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610263565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b61025960005481565b6102e561037f366004613f79565b61102a565b610397610392366004614031565b611176565b6040516102639190614200565b6102597f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103d3601281565b60405160ff9091168152602001610263565b610259611465565b6102596103fb366004614031565b6115b4565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b610259610483366004614031565b6115bb565b610490611886565b60405161026391906141a6565b6102596104ab366004613d88565b60016020526000908152604090205481565b6102596104cb366004614031565b611985565b6102596104de366004613d88565b60036020526000908152604090205481565b6104f8611c63565b005b6102a86040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b6102597f54726964656e743a487962726964506f6f6c000000000000000000000000000081565b61025961056b366004614031565b611d06565b6102e561057e366004613f14565b61213d565b610259610591366004614031565b6121c2565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b61025960045481565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b6104f8610622366004613fba565b61250a565b610259610635366004613f40565b600260209081526000928352604080842090915290825290205481565b61025961285c565b6102597f000000000000000000000000000000000000000000000000000000000000000081565b60006007546001146106f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600260075560008080808061070b87890189613dec565b945094509450945094506000806107206128a7565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610ae157506040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052600060448301527f0000000000000000000000000000000000000000000000000000000000000000917f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b15801561085457600080fd5b505afa158015610868573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088c91906140fe565b945061089b8584846001612abd565b98506108ca7f0000000000000000000000000000000000000000000000000000000000000000888b878a612c31565b6040517ff7888aec0000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff81811660048401523060248401526000927f00000000000000000000000000000000000000000000000000000000000000009190911691635662311891839063f7888aec9060440160206040518083038186803b15801561098657600080fd5b505afa15801561099a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109be91906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b158015610a2e57600080fd5b505afa158015610a42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6691906140fe565b905085610a738583614479565b1015610adb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e0000000000000000000060448201526064016106eb565b50610ef9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610b96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106eb565b506040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201869052600060448301527f0000000000000000000000000000000000000000000000000000000000000000917f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b158015610c7057600080fd5b505afa158015610c84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca891906140fe565b9450610cb78584846000612abd565b9850610ce67f0000000000000000000000000000000000000000000000000000000000000000888b878a612c31565b6040517ff7888aec0000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff81811660048401523060248401526000927f00000000000000000000000000000000000000000000000000000000000000009190911691635662311891839063f7888aec9060440160206040518083038186803b158015610da257600080fd5b505afa158015610db6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dda91906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b158015610e4a57600080fd5b505afa158015610e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8291906140fe565b905085610e8f8483614479565b1015610ef7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e0000000000000000000060448201526064016106eb565b505b610f01612cba565b8073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062888d604051610f80929190918252602082015260400190565b60405180910390a4505060016007555094979650505050505050565b600080610fa76128a7565b90939092509050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906110189086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146110c75773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152812080548492906110c1908490614479565b90915550505b73ffffffffffffffffffffffffffffffffffffffff8416600090815260016020526040812080548492906110fc908490614479565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260016020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111649086815260200190565b60405180910390a35060019392505050565b60606007546001146111e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106eb565b60026007556000806111f884860186613edf565b91509150600080611207612dcb565b3060009081526001602052604081205492945090925061122784846130b4565b509050600081611237868561443c565b61124191906142df565b9050600082611250868661443c565b61125a91906142df565b90506112663085613185565b6112927f0000000000000000000000000000000000000000000000000000000000000000838a8a613218565b6112be7f0000000000000000000000000000000000000000000000000000000000000000828a8a613218565b6112c6612cba565b6040805160028082526060820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816112dc57905050985060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001838152508960008151811061136357611363614527565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200182815250896001815181106113cc576113cc614527565b60209081029190910101526113f36113e48388614479565b6113ee8388614479565b613478565b600655604080518381526020810183905290810185905273ffffffffffffffffffffffffffffffffffffffff89169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a3505060016007555094979650505050505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461158f5750604080518082018252600e81527f5375736869204c5020546f6b656e00000000000000000000000000000000000060209182015281518083018352600181527f31000000000000000000000000000000000000000000000000000000000000009082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000806000fd5b6000600754600114611629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106eb565b60026007556000808061163e85870187613da5565b9250925092506000806000806116526134d3565b93509350935093506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614156116eb5750508382037f00000000000000000000000000000000000000000000000000000000000000006116e48287876001612abd565b99506117d6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16146117a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106eb565b50508281037f00000000000000000000000000000000000000000000000000000000000000006117d38287876000612abd565b99505b6117e2818b8a8a613218565b6117ea612cba565b8073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062858e604051611869929190918252602082015260400190565b60405180910390a450506001600755509598975050505050505050565b60408051600280825260608083018452926020830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106118da576118da614527565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061194857611948614527565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b60006007546001146119f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106eb565b60026007556000611a0683850185613d88565b9050600080611a136128a7565b91509150600080611a22612dcb565b915091506000611a328383613478565b90506000611a408685614479565b90506000611a4e8685614479565b9050600080611a5f84848b8b6138d9565b9092509050611a7e6dffffffffffffffffffffffffffff83168a6142c7565b9850611a9a6dffffffffffffffffffffffffffff8216896142c7565b9750600080611aa98b8b6130b4565b915091508160001415611b4c57600086118015611ac65750600085115b611b2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f494e56414c49445f414d4f554e5453000000000000000000000000000000000060448201526064016106eb565b611b386103e888614479565b9c50611b4760006103e86139dc565b611b6f565b8082611b58828a614479565b611b62919061443c565b611b6c91906142df565b9c505b8c611bd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e54454400000060448201526064016106eb565b611be08c8e6139dc565b611be8612cba565b600687905560408051878152602081018790529081018e90528d9073ffffffffffffffffffffffffffffffffffffffff8e169033907ff9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e9060600160405180910390a35050600160075550999c9b505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b158015611cc957600080fd5b505afa158015611cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d0191906140fe565b600455565b60008080611d1684860186613f14565b91509150600080611d256128a7565b6040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff878116600483015260248201879052600060448301529294509092507f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b158015611dc257600080fd5b505afa158015611dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfa91906140fe565b92507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611f69577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663da5139ca7f0000000000000000000000000000000000000000000000000000000000000000611eba8686866001612abd565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b158015611f2a57600080fd5b505afa158015611f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6291906140fe565b9450612133565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461201e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e0000000000000000000000000060448201526064016106eb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663da5139ca7f00000000000000000000000000000000000000000000000000000000000000006120888686866000612abd565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b1580156120f857600080fd5b505afa15801561210c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213091906140fe565b94505b5050505092915050565b3360009081526001602052604081208054839190839061215e908490614479565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110189086815260200190565b6000600754600114612230576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106eb565b60026007556000808061224585870187613da5565b925092509250600080612256612dcb565b3060009081526001602052604081205492945090925061227684846130b4565b509050600081612286868561443c565b61229091906142df565b905060008261229f868661443c565b6122a991906142df565b90506122b53085613185565b6122c26113e48388614479565b6006819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141561237f5761233b8261232a8189614479565b6123348489614479565b6001612abd565b61234590826142c7565b90506123737f0000000000000000000000000000000000000000000000000000000000000000828a8a613218565b80995060009150612492565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614612434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e00000000000000000000000060448201526064016106eb565b612453816124428489614479565b61244c8489614479565b6000612abd565b61245d90836142c7565b915061248b7f0000000000000000000000000000000000000000000000000000000000000000838a8a613218565b5097508760005b61249a612cba565b604080518381526020810183905290810185905273ffffffffffffffffffffffffffffffffffffffff89169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a350506001600755509598975050505050505050565b42841015612574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016106eb565b600061257e611465565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c929091906125d983614490565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012060405160200161267a9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612703573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061277e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6127e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e4154555245000000000000000060448201526064016106eb565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b60008060006128696128a7565b9150915060006128798383613478565b60005490915061288b6012600a614373565b612895908361443c565b61289f91906142df565b935050505090565b6005546040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526fffffffffffffffffffffffffffffffff808416602484018190526000604485015293700100000000000000000000000000000000900416917f00000000000000000000000000000000000000000000000000000000000000009091169063566231189060640160206040518083038186803b15801561298c57600080fd5b505afa1580156129a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c491906140fe565b6040517f5662311800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015260248201849052600060448301529193507f0000000000000000000000000000000000000000000000000000000000000000909116906356623118906064015b60206040518083038186803b158015612a7f57600080fd5b505afa158015612a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab791906140fe565b90509091565b60007f000000000000000000000000000000000000000000000000000000000000000084027f000000000000000000000000000000000000000000000000000000000000000084026127107f0000000000000000000000000000000000000000000000000000000000000000880204870383612b398484613a4c565b90508515612bb5577f0000000000000000000000000000000000000000000000000000000000000000820284016000612b728284613b9f565b905060018186030396507f00000000000000000000000000000000000000000000000000000000000000008781612bab57612bab6144f8565b0496505050612c25565b7f0000000000000000000000000000000000000000000000000000000000000000820283016000612be68284613b9f565b905060018187030396507f00000000000000000000000000000000000000000000000000000000000000008781612c1f57612c1f6144f8565b04965050505b50505050949350505050565b612c3d85848684613218565b815115612cb3576040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b190612c80908590600401614265565b600060405180830381600087803b158015612c9a57600080fd5b505af1158015612cae573d6000803e3d6000fd5b505050505b5050505050565b600080612cc5612dcb565b90925090506fffffffffffffffffffffffffffffffff8211801590612cfa57506fffffffffffffffffffffffffffffffff8111155b612d60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4f564552464c4f5700000000000000000000000000000000000000000000000060448201526064016106eb565b6fffffffffffffffffffffffffffffffff818116700100000000000000000000000000000000029083161760055560408051838152602081018390527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a15050565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000818116600484015230602484015260009283927f00000000000000000000000000000000000000000000000000000000000000001691635662311891839063f7888aec9060440160206040518083038186803b158015612e8657600080fd5b505afa158015612e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebe91906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526000604482015260640160206040518083038186803b158015612f2e57600080fd5b505afa158015612f42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6691906140fe565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081811660048401523060248401529294507f00000000000000000000000000000000000000000000000000000000000000001691635662311891839063f7888aec9060440160206040518083038186803b15801561301f57600080fd5b505afa158015613033573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061305791906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff9092166004830152602482015260006044820152606401612a67565b60008054600654909190801561317d576130ce8585613478565b91508082111561317d576004546000816130e88486614479565b6130f2908761443c565b6130fc919061443c565b9050600061310a848461443c565b8561311785612710614479565b613121919061443c565b61312b91906142c7565b9050600061313982846142df565b905080156131785761316b7f0000000000000000000000000000000000000000000000000000000000000000826139dc565b61317581886142c7565b96505b505050505b509250929050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812080548392906131ba908490614479565b909155505060008054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b8015613301576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152306024830152838116604483015260648201859052600060848301527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b1580156132c257600080fd5b505af11580156132d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132fa9190614117565b5050613472565b6040517fda5139ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201859052600060448301527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90869030908690859063da5139ca9060640160206040518083038186803b1580156133a457600080fd5b505afa1580156133b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133dc91906140fe565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff94851660048201529284166024840152921660448201526064810191909152608401600060405180830381600087803b15801561345957600080fd5b505af115801561346d573d6000803e3d6000fd5b505050505b50505050565b60007f000000000000000000000000000000000000000000000000000000000000000083027f000000000000000000000000000000000000000000000000000000000000000083026134ca8282613a4c565b95945050505050565b6005546040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301526fffffffffffffffffffffffffffffffff808416937001000000000000000000000000000000009004169160009182917f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b1580156135b557600080fd5b505afa1580156135c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135ed91906140fe565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301529193507f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b15801561369f57600080fd5b505afa1580156136b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d791906140fe565b6040517f4ffe34db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301529192506000917f00000000000000000000000000000000000000000000000000000000000000001690634ffe34db90602401604080518083038186803b15801561378357600080fd5b505afa158015613797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137bb91906140a3565b6040517f4ffe34db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301529192506000917f00000000000000000000000000000000000000000000000000000000000000001690634ffe34db90602401604080518083038186803b15801561386757600080fd5b505afa15801561387b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061389f91906140a3565b90506138ab8287613cd1565b95506138b78186613cd1565b94506138c38285613cd1565b93506138cf8184613cd1565b9250505090919293565b6000808315806138e7575082155b156138f7575060009050806139d3565b600084613904858961443c565b61390e91906142df565b905085811161396957613924612710600261443c565b61392e8288614479565b613958907f000000000000000000000000000000000000000000000000000000000000000061443c565b61396291906142df565b91506139d1565b600084613976878961443c565b61398091906142df565b905061398f612710600261443c565b613999828a614479565b6139c3907f000000000000000000000000000000000000000000000000000000000000000061443c565b6139cd91906142df565b9350505b505b94509492505050565b806000808282546139ed91906142c7565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161320c565b600080613a5983856142c7565b905080613a6557600091505b600081815b610100811015613b95576000600487848a613a85828061443c565b613a8f91906142df565b613a99919061443c565b613aa391906142df565b613aad91906142df565b9050829350806003613abf919061443c565b836001613aed60647f00000000000000000000000000000000000000000000000000000000000000006142df565b613af79190614479565b613b01919061443c565b613b0b91906142c7565b83613b1783600261443c565b6064613b43897f000000000000000000000000000000000000000000000000000000000000000061443c565b613b4d91906142df565b613b5791906142c7565b613b61919061443c565b613b6b91906142df565b9250613b778385613d31565b15613b825750613b95565b5080613b8d81614490565b915050613a6a565b5095945050505050565b600080613bad84600261443c565b613bb7848061443c565b613bc191906142df565b90506064613bf07f0000000000000000000000000000000000000000000000000000000000000000600261443c565b613bfa91906142df565b613c04848361443c565b613c0e91906142df565b905060007f0000000000000000000000000000000000000000000000000000000000000000613c3e60648661443c565b613c4891906142df565b613c5290866142c7565b9050600084935060005b610100811015612133578491508583613c7684600261443c565b613c8091906142c7565b613c8a9190614479565b84613c95878061443c565b613c9f91906142c7565b613ca991906142df565b9450613cb58583613d31565b15613cbf57612133565b80613cc981614490565b915050613c5c565b600082602001516fffffffffffffffffffffffffffffffff1660001415613cf9575080611024565b602083015183516fffffffffffffffffffffffffffffffff91821691613d2091168461443c565b613d2a91906142df565b9392505050565b600081831115613d48575060018183031115611024565b506001919003111590565b80358015158114613d6357600080fd5b919050565b80516fffffffffffffffffffffffffffffffff81168114613d6357600080fd5b600060208284031215613d9a57600080fd5b8135613d2a81614585565b600080600060608486031215613dba57600080fd5b8335613dc581614585565b92506020840135613dd581614585565b9150613de360408501613d53565b90509250925092565b600080600080600060a08688031215613e0457600080fd5b8535613e0f81614585565b9450602086810135613e2081614585565b9450613e2e60408801613d53565b935060608701359250608087013567ffffffffffffffff80821115613e5257600080fd5b818901915089601f830112613e6657600080fd5b813581811115613e7857613e78614556565b613ea8847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614278565b91508082528a84828501011115613ebe57600080fd5b80848401858401376000848284010152508093505050509295509295909350565b60008060408385031215613ef257600080fd5b8235613efd81614585565b9150613f0b60208401613d53565b90509250929050565b60008060408385031215613f2757600080fd5b8235613f3281614585565b946020939093013593505050565b60008060408385031215613f5357600080fd5b8235613f5e81614585565b91506020830135613f6e81614585565b809150509250929050565b600080600060608486031215613f8e57600080fd5b8335613f9981614585565b92506020840135613fa981614585565b929592945050506040919091013590565b600080600080600080600060e0888a031215613fd557600080fd5b8735613fe081614585565b96506020880135613ff081614585565b95506040880135945060608801359350608088013560ff8116811461401457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806020838503121561404457600080fd5b823567ffffffffffffffff8082111561405c57600080fd5b818501915085601f83011261407057600080fd5b81358181111561407f57600080fd5b86602082850101111561409157600080fd5b60209290920196919550909350505050565b6000604082840312156140b557600080fd5b6040516040810181811067ffffffffffffffff821117156140d8576140d8614556565b6040526140e483613d68565b81526140f260208401613d68565b60208201529392505050565b60006020828403121561411057600080fd5b5051919050565b6000806040838503121561412a57600080fd5b505080516020909101519092909150565b6000815180845260005b8181101561416157602081850181015186830182015201614145565b81811115614173576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020808252825182820181905260009190848201906040850190845b818110156141f457835173ffffffffffffffffffffffffffffffffffffffff16835292840192918401916001016141c2565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015614258578151805173ffffffffffffffffffffffffffffffffffffffff16855286015186850152928401929085019060010161421d565b5091979650505050505050565b602081526000613d2a602083018461413b565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156142bf576142bf614556565b604052919050565b600082198211156142da576142da6144c9565b500190565b600082614315577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600181815b8085111561317d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115614359576143596144c9565b8085161561436657918102915b93841c939080029061431f565b6000613d2a60ff84168360008261438c57506001611024565b8161439957506000611024565b81600181146143af57600281146143b9576143d5565b6001915050611024565b60ff8411156143ca576143ca6144c9565b50506001821b611024565b5060208310610133831016604e8410600b84101617156143f8575081810a611024565b614402838361431a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115614434576144346144c9565b029392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614474576144746144c9565b500290565b60008282101561448b5761448b6144c9565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156144c2576144c26144c9565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146145a757600080fd5b5056fea2646970667358221220f5bed7b73a8d176b55d9233a65288c602eab9db5c240e7b511f16e85c948723064736f6c63430008070033a264697066735822122063a793bc64326a686c8216157ef398f80001f087cd3e59ee8b805215a80241d864736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x71A25812 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x71A25812 EQ PUSH3 0x12E JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH3 0x154 JUMPI DUP1 PUSH4 0xF6AB6D99 EQ PUSH3 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x169C4CEF EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x27C3CAE1 EQ PUSH3 0xC1 JUMPI DUP1 PUSH4 0x5BC93D6C EQ PUSH3 0xD8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x924 JUMP JUMPDEST PUSH3 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x97 PUSH3 0xD2 CALLDATASIZE PUSH1 0x4 PUSH3 0x9CF JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH3 0x11F PUSH3 0xE9 CALLDATASIZE PUSH1 0x4 PUSH3 0x8E6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xB8 JUMP JUMPDEST PUSH3 0x145 PUSH3 0x13F CALLDATASIZE PUSH1 0x4 PUSH3 0x96A JUMP JUMPDEST PUSH3 0x400 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xB8 SWAP2 SWAP1 PUSH3 0xAA8 JUMP JUMPDEST PUSH3 0x97 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0x97 PUSH3 0x18D CALLDATASIZE PUSH1 0x4 PUSH3 0x9B5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP3 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH3 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP DUP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x226 SWAP2 SWAP1 PUSH3 0x899 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH3 0x267 JUMPI SWAP2 SWAP3 SWAP2 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x20 DUP4 ADD MSTORE DUP6 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE PUSH1 0x2 DUP1 DUP5 MSTORE PUSH1 0x60 DUP5 ADD SWAP1 SWAP3 MSTORE SWAP8 POP PUSH1 0x0 SWAP2 SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP5 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH3 0x308 JUMPI PUSH3 0x308 PUSH3 0xC1E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP4 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH3 0x359 JUMPI PUSH3 0x359 PUSH3 0xC1E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE DUP8 MLOAD SWAP1 DUP9 ADD KECCAK256 PUSH1 0x40 MLOAD DUP2 SWAP1 DUP10 SWAP1 PUSH32 0x0 SWAP1 PUSH3 0x3B7 SWAP1 PUSH3 0x88B JUMP JUMPDEST PUSH3 0x3C4 SWAP3 SWAP2 SWAP1 PUSH3 0xB04 JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH3 0x3E5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP7 POP PUSH3 0x3F5 DUP8 DUP4 DUP4 PUSH3 0x529 JUMP JUMPDEST POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x41E JUMPI PUSH3 0x41E PUSH3 0xC4D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x448 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x520 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH3 0x493 DUP3 DUP7 PUSH3 0xB98 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH3 0x4A6 JUMPI PUSH3 0x4A6 PUSH3 0xC1E JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x4E6 JUMPI PUSH3 0x4E6 PUSH3 0xC1E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x517 DUP2 PUSH3 0xBB3 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x44E JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH3 0x599 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3781A5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH3 0x885 JUMPI DUP3 DUP2 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH3 0x60B JUMPI PUSH3 0x60B PUSH3 0xC1E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x63E JUMPI PUSH3 0x63E PUSH3 0xC1E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH3 0x694 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3F06BF8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH3 0x87B JUMPI PUSH1 0x0 DUP1 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x6BB JUMPI PUSH3 0x6BB PUSH3 0xC1E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x714 JUMPI PUSH3 0x714 PUSH3 0xC1E JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP3 MSTORE SWAP2 DUP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP5 MLOAD DUP2 SWAP1 DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH3 0x7A3 JUMPI PUSH3 0x7A3 PUSH3 0xC1E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x7FC JUMPI PUSH3 0x7FC PUSH3 0xC1E JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE SWAP2 DUP4 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE ADD PUSH3 0x699 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH3 0x5E6 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x513B DUP1 PUSH3 0xCA3 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x8B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH3 0x8BD DUP2 PUSH3 0xC7C JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH3 0x8D0 DUP2 PUSH3 0xC7C JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x8FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH3 0x907 DUP2 PUSH3 0xC7C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH3 0x919 DUP2 PUSH3 0xC7C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x93A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH3 0x947 DUP2 PUSH3 0xC7C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH3 0x959 DUP2 PUSH3 0xC7C JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x981 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH3 0x98E DUP2 PUSH3 0xC7C JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH3 0x9A0 DUP2 PUSH3 0xC7C JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x9C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x9FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA25 JUMPI PUSH3 0xA25 PUSH3 0xC4D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xA6E JUMPI PUSH3 0xA6E PUSH3 0xC4D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xA88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xAF8 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0xAC4 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xB34 JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH3 0xB15 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0xB47 JUMPI PUSH1 0x0 PUSH1 0x60 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD PUSH1 0x60 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0xBAE JUMPI PUSH3 0xBAE PUSH3 0xBEF JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH3 0xBE8 JUMPI PUSH3 0xBE8 PUSH3 0xBEF JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0xC9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH2 0x200 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x513B CODESIZE SUB DUP1 PUSH3 0x513B DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x610 JUMP JUMPDEST CHAINID PUSH1 0x80 MSTORE PUSH3 0x112 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x29BAB9B434902628102A37B5B2B7 PUSH1 0x91 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP6 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x135 SWAP2 SWAP1 PUSH3 0x5C3 JUMP JUMPDEST SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x18A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A45524F5F41444452455353 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x1EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4944454E544943414C5F41444452455353455300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST PUSH2 0x2710 DUP3 GT ISZERO PUSH3 0x235 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x494E56414C49445F535741505F464545 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST DUP1 PUSH3 0x26D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x5A45524F5F41 PUSH1 0xD0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x181 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 DUP2 SHL DUP3 AND PUSH2 0x140 MSTORE DUP5 SWAP1 SHL AND PUSH2 0x160 MSTORE PUSH1 0xC0 DUP3 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x60A56C01 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0xC14AD802 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x2CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x2E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x30A SWAP2 SWAP1 PUSH3 0x701 JUMP JUMPDEST PUSH1 0x4 DUP2 SWAP1 SSTORE POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0A0CD2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x34A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x35F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x385 SWAP2 SWAP1 PUSH3 0x59C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x120 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4DA31827 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3F1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x417 SWAP2 SWAP1 PUSH3 0x59C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xE0 MSTORE SWAP1 DUP7 SWAP1 SHL AND PUSH2 0x100 MSTORE PUSH2 0x180 DUP2 SWAP1 MSTORE PUSH3 0x446 DUP2 PUSH1 0x2 PUSH3 0x84A JUMP JUMPDEST PUSH2 0x1A0 DUP2 DUP2 MSTORE POP POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x488 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x49D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x4C3 SWAP2 SWAP1 PUSH3 0x71B JUMP JUMPDEST PUSH3 0x4D0 SWAP1 PUSH1 0x12 PUSH3 0x86C JUMP JUMPDEST PUSH3 0x4DD SWAP1 PUSH1 0xA PUSH3 0x789 JUMP JUMPDEST PUSH2 0x1C0 DUP2 DUP2 MSTORE POP POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x534 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x55A SWAP2 SWAP1 PUSH3 0x71B JUMP JUMPDEST PUSH3 0x567 SWAP1 PUSH1 0x12 PUSH3 0x86C JUMP JUMPDEST PUSH3 0x574 SWAP1 PUSH1 0xA PUSH3 0x789 JUMP JUMPDEST PUSH2 0x1E0 MSTORE POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP PUSH3 0x8D7 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x597 DUP2 PUSH3 0x8BE JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x5BC DUP2 PUSH3 0x8BE JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH3 0x5E7 DUP2 PUSH3 0x8BE JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH3 0x5FA DUP2 PUSH3 0x8BE JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x60 SWAP1 SWAP7 ADD MLOAD SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x624 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x63C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x651 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x666 JUMPI PUSH3 0x666 PUSH3 0x8A8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x691 JUMPI PUSH3 0x691 PUSH3 0x8A8 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE PUSH1 0x20 SWAP4 POP DUP9 DUP5 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x6AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP3 DUP3 LT ISZERO PUSH3 0x6D2 JUMPI DUP5 DUP3 ADD DUP5 ADD MLOAD DUP2 DUP4 ADD DUP6 ADD MSTORE SWAP1 DUP4 ADD SWAP1 PUSH3 0x6B3 JUMP JUMPDEST DUP3 DUP3 GT ISZERO PUSH3 0x6E4 JUMPI PUSH1 0x0 DUP5 DUP5 DUP4 ADD ADD MSTORE JUMPDEST SWAP6 POP PUSH3 0x6F6 SWAP2 POP POP DUP6 DUP3 ADD PUSH3 0x58A JUMP JUMPDEST SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x72E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH3 0x5BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH3 0x781 JUMPI DUP2 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x765 JUMPI PUSH3 0x765 PUSH3 0x892 JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH3 0x773 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH3 0x745 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x5BC PUSH1 0xFF DUP5 AND DUP4 PUSH1 0x0 DUP3 PUSH3 0x7A5 JUMPI POP PUSH1 0x1 PUSH3 0x844 JUMP JUMPDEST DUP2 PUSH3 0x7B4 JUMPI POP PUSH1 0x0 PUSH3 0x844 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH3 0x7CD JUMPI PUSH1 0x2 DUP2 EQ PUSH3 0x7D8 JUMPI PUSH3 0x7F8 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH3 0x844 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH3 0x7EC JUMPI PUSH3 0x7EC PUSH3 0x892 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH3 0x844 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH3 0x81D JUMPI POP DUP2 DUP2 EXP PUSH3 0x844 JUMP JUMPDEST PUSH3 0x829 DUP4 DUP4 PUSH3 0x740 JUMP JUMPDEST DUP1 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x840 JUMPI PUSH3 0x840 PUSH3 0x892 JUMP JUMPDEST MUL SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH3 0x867 JUMPI PUSH3 0x867 PUSH3 0x892 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND PUSH1 0xFF DUP5 AND DUP1 DUP3 LT ISZERO PUSH3 0x889 JUMPI PUSH3 0x889 PUSH3 0x892 JUMP JUMPDEST SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x8D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x160 MLOAD PUSH1 0x60 SHR PUSH2 0x180 MLOAD PUSH2 0x1A0 MLOAD PUSH2 0x1C0 MLOAD PUSH2 0x1E0 MLOAD PUSH2 0x45E0 PUSH3 0xB5B PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x42C ADD MSTORE DUP2 DUP2 PUSH2 0x2AE4 ADD MSTORE DUP2 DUP2 PUSH2 0x2B7E ADD MSTORE DUP2 DUP2 PUSH2 0x2BB7 ADD MSTORE PUSH2 0x349F ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x59B ADD MSTORE DUP2 DUP2 PUSH2 0x2AC1 ADD MSTORE DUP2 DUP2 PUSH2 0x2B43 ADD MSTORE DUP2 DUP2 PUSH2 0x2BF2 ADD MSTORE PUSH2 0x347C ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x3AC9 ADD MSTORE DUP2 DUP2 PUSH2 0x3B1F ADD MSTORE DUP2 DUP2 PUSH2 0x3BCA ADD MSTORE PUSH2 0x3C14 ADD MSTORE PUSH1 0x0 PUSH2 0x65F ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x5F2 ADD MSTORE DUP2 DUP2 PUSH2 0x7EE ADD MSTORE DUP2 DUP2 PUSH2 0x8A2 ADD MSTORE DUP2 DUP2 PUSH2 0xAE3 ADD MSTORE DUP2 DUP2 PUSH2 0xBD4 ADD MSTORE DUP2 DUP2 PUSH2 0xD0E ADD MSTORE DUP2 DUP2 PUSH2 0x1297 ADD MSTORE DUP2 DUP2 PUSH2 0x137B ADD MSTORE DUP2 DUP2 PUSH2 0x16B8 ADD MSTORE DUP2 DUP2 PUSH2 0x16ED ADD MSTORE DUP2 DUP2 PUSH2 0x1916 ADD MSTORE DUP2 DUP2 PUSH2 0x1E8E ADD MSTORE DUP2 DUP2 PUSH2 0x1F6B ADD MSTORE DUP2 DUP2 PUSH2 0x22CA ADD MSTORE DUP2 DUP2 PUSH2 0x234C ADD MSTORE DUP2 DUP2 PUSH2 0x2A01 ADD MSTORE DUP2 DUP2 PUSH2 0x2FA3 ADD MSTORE DUP2 DUP2 PUSH2 0x362A ADD MSTORE PUSH2 0x37F8 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x346 ADD MSTORE DUP2 DUP2 PUSH2 0x728 ADD MSTORE DUP2 DUP2 PUSH2 0x7B8 ADD MSTORE DUP2 DUP2 PUSH2 0x8F2 ADD MSTORE DUP2 DUP2 PUSH2 0xC0A ADD MSTORE DUP2 DUP2 PUSH2 0xCBE ADD MSTORE DUP2 DUP2 PUSH2 0x126B ADD MSTORE DUP2 DUP2 PUSH2 0x1312 ADD MSTORE DUP2 DUP2 PUSH2 0x165F ADD MSTORE DUP2 DUP2 PUSH2 0x17A7 ADD MSTORE DUP2 DUP2 PUSH2 0x18A8 ADD MSTORE DUP2 DUP2 PUSH2 0x1DFE ADD MSTORE DUP2 DUP2 PUSH2 0x205C ADD MSTORE DUP2 DUP2 PUSH2 0x2381 ADD MSTORE DUP2 DUP2 PUSH2 0x2464 ADD MSTORE DUP2 DUP2 PUSH2 0x28E7 ADD MSTORE DUP2 DUP2 PUSH2 0x2E08 ADD MSTORE DUP2 DUP2 PUSH2 0x3513 ADD MSTORE PUSH2 0x3714 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x2FA ADD MSTORE PUSH2 0x3146 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x5CB ADD MSTORE PUSH2 0x1C65 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x405 ADD MSTORE DUP2 DUP2 PUSH2 0x810 ADD MSTORE DUP2 DUP2 PUSH2 0x939 ADD MSTORE DUP2 DUP2 PUSH2 0xC2C ADD MSTORE DUP2 DUP2 PUSH2 0xD55 ADD MSTORE DUP2 DUP2 PUSH2 0x1D7E ADD MSTORE DUP2 DUP2 PUSH2 0x1E52 ADD MSTORE DUP2 DUP2 PUSH2 0x2020 ADD MSTORE DUP2 DUP2 PUSH2 0x2948 ADD MSTORE DUP2 DUP2 PUSH2 0x2A3A ADD MSTORE DUP2 DUP2 PUSH2 0x2E3C ADD MSTORE DUP2 DUP2 PUSH2 0x2FD5 ADD MSTORE DUP2 DUP2 PUSH2 0x327F ADD MSTORE DUP2 DUP2 PUSH2 0x3354 ADD MSTORE DUP2 DUP2 PUSH2 0x3571 ADD MSTORE DUP2 DUP2 PUSH2 0x365B ADD MSTORE DUP2 DUP2 PUSH2 0x3742 ADD MSTORE PUSH2 0x3826 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x453 ADD MSTORE DUP2 DUP2 PUSH2 0x2B0A ADD MSTORE DUP2 DUP2 PUSH2 0x3934 ADD MSTORE PUSH2 0x399F ADD MSTORE PUSH1 0x0 PUSH2 0x1592 ADD MSTORE PUSH1 0x0 PUSH2 0x1469 ADD MSTORE PUSH2 0x45E0 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x241 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x67E4AC2C GT PUSH2 0x145 JUMPI DUP1 PUSH4 0xAF8C09BF GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xDD62ED3E GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x627 JUMPI DUP1 PUSH4 0xE25AA5FA EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0xF446C1D0 EQ PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x5ED JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x614 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x583 JUMPI DUP1 PUSH4 0xBAA8C7CB EQ PUSH2 0x596 JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x5BD JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x92BC3219 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0xA69840A8 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x536 JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x55D JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x4F0 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x488 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x49D JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x1D8 JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x4E25DC47 GT PUSH2 0x18C JUMPI DUP1 PUSH4 0x4E25DC47 EQ PUSH2 0x427 JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x44E JUMPI DUP1 PUSH4 0x627DD56A EQ PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x3ED JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x400 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3A4 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x3CB JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x3E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x214 JUMPI DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x341 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x368 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x371 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x246 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2B5 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2D2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x259 PUSH2 0x254 CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x681 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2A8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x4265 JUMP JUMPDEST PUSH2 0x2BD PUSH2 0xF9C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x2E5 PUSH2 0x2E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F14 JUMP JUMPDEST PUSH2 0xFB0 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2E5 PUSH2 0x37F CALLDATASIZE PUSH1 0x4 PUSH2 0x3F79 JUMP JUMPDEST PUSH2 0x102A JUMP JUMPDEST PUSH2 0x397 PUSH2 0x392 CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x1176 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x4200 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x3D3 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x263 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x1465 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x3FB CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x15B4 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x483 CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x15BB JUMP JUMPDEST PUSH2 0x490 PUSH2 0x1886 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x263 SWAP2 SWAP1 PUSH2 0x41A6 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x4AB CALLDATASIZE PUSH1 0x4 PUSH2 0x3D88 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x4CB CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x1985 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x4DE CALLDATASIZE PUSH1 0x4 PUSH2 0x3D88 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x4F8 PUSH2 0x1C63 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2A8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x54726964656E743A487962726964506F6F6C0000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x56B CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x1D06 JUMP JUMPDEST PUSH2 0x2E5 PUSH2 0x57E CALLDATASIZE PUSH1 0x4 PUSH2 0x3F14 JUMP JUMPDEST PUSH2 0x213D JUMP JUMPDEST PUSH2 0x259 PUSH2 0x591 CALLDATASIZE PUSH1 0x4 PUSH2 0x4031 JUMP JUMPDEST PUSH2 0x21C2 JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x31C PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x4F8 PUSH2 0x622 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FBA JUMP JUMPDEST PUSH2 0x250A JUMP JUMPDEST PUSH2 0x259 PUSH2 0x635 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F40 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x259 PUSH2 0x285C JUMP JUMPDEST PUSH2 0x259 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x6F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x70B DUP8 DUP10 ADD DUP10 PUSH2 0x3DEC JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x0 DUP1 PUSH2 0x720 PUSH2 0x28A7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xAE1 JUMPI POP PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x854 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x868 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x88C SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP5 POP PUSH2 0x89B DUP6 DUP5 DUP5 PUSH1 0x1 PUSH2 0x2ABD JUMP JUMPDEST SWAP9 POP PUSH2 0x8CA PUSH32 0x0 DUP9 DUP12 DUP8 DUP11 PUSH2 0x2C31 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x4 DUP5 ADD MSTORE ADDRESS PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x0 SWAP3 PUSH32 0x0 SWAP2 SWAP1 SWAP2 AND SWAP2 PUSH4 0x56623118 SWAP2 DUP4 SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x99A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9BE SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA42 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA66 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0xA73 DUP6 DUP4 PUSH2 0x4479 JUMP JUMPDEST LT ISZERO PUSH2 0xADB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST POP PUSH2 0xEF9 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB96 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xCA8 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP5 POP PUSH2 0xCB7 DUP6 DUP5 DUP5 PUSH1 0x0 PUSH2 0x2ABD JUMP JUMPDEST SWAP9 POP PUSH2 0xCE6 PUSH32 0x0 DUP9 DUP12 DUP8 DUP11 PUSH2 0x2C31 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x4 DUP5 ADD MSTORE ADDRESS PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x0 SWAP3 PUSH32 0x0 SWAP2 SWAP1 SWAP2 AND SWAP2 PUSH4 0x56623118 SWAP2 DUP4 SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDB6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xDDA SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE5E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE82 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0xE8F DUP5 DUP4 PUSH2 0x4479 JUMP JUMPDEST LT ISZERO PUSH2 0xEF7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST POP JUMPDEST PUSH2 0xF01 PUSH2 0x2CBA JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP9 DUP14 PUSH1 0x40 MLOAD PUSH2 0xF80 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xFA7 PUSH2 0x28A7 JUMP JUMPDEST SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x1018 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x10C7 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x10C1 SWAP1 DUP5 SWAP1 PUSH2 0x4479 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x10FC SWAP1 DUP5 SWAP1 PUSH2 0x4479 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x1164 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x11E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 PUSH2 0x11F8 DUP5 DUP7 ADD DUP7 PUSH2 0x3EDF JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1207 PUSH2 0x2DCB JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH2 0x1227 DUP5 DUP5 PUSH2 0x30B4 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x1237 DUP7 DUP6 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x1241 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x1250 DUP7 DUP7 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x125A SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH2 0x1266 ADDRESS DUP6 PUSH2 0x3185 JUMP JUMPDEST PUSH2 0x1292 PUSH32 0x0 DUP4 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST PUSH2 0x12BE PUSH32 0x0 DUP3 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST PUSH2 0x12C6 PUSH2 0x2CBA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x12DC JUMPI SWAP1 POP POP SWAP9 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP10 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1363 JUMPI PUSH2 0x1363 PUSH2 0x4527 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP10 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x13CC JUMPI PUSH2 0x13CC PUSH2 0x4527 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x13F3 PUSH2 0x13E4 DUP4 DUP9 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x13EE DUP4 DUP9 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x3478 JUMP JUMPDEST PUSH1 0x6 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x158F JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x1629 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x163E DUP6 DUP8 ADD DUP8 PUSH2 0x3DA5 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1652 PUSH2 0x34D3 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x16EB JUMPI POP POP DUP4 DUP3 SUB PUSH32 0x0 PUSH2 0x16E4 DUP3 DUP8 DUP8 PUSH1 0x1 PUSH2 0x2ABD JUMP JUMPDEST SWAP10 POP PUSH2 0x17D6 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x17A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST POP POP DUP3 DUP2 SUB PUSH32 0x0 PUSH2 0x17D3 DUP3 DUP8 DUP8 PUSH1 0x0 PUSH2 0x2ABD JUMP JUMPDEST SWAP10 POP JUMPDEST PUSH2 0x17E2 DUP2 DUP12 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST PUSH2 0x17EA PUSH2 0x2CBA JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP6 DUP15 PUSH1 0x40 MLOAD PUSH2 0x1869 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP6 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x18DA JUMPI PUSH2 0x18DA PUSH2 0x4527 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1948 JUMPI PUSH2 0x1948 PUSH2 0x4527 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x19F3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 PUSH2 0x1A06 DUP4 DUP6 ADD DUP6 PUSH2 0x3D88 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1A13 PUSH2 0x28A7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1A22 PUSH2 0x2DCB JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x1A32 DUP4 DUP4 PUSH2 0x3478 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A40 DUP7 DUP6 PUSH2 0x4479 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A4E DUP7 DUP6 PUSH2 0x4479 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1A5F DUP5 DUP5 DUP12 DUP12 PUSH2 0x38D9 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1A7E PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP11 PUSH2 0x42C7 JUMP JUMPDEST SWAP9 POP PUSH2 0x1A9A PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP10 PUSH2 0x42C7 JUMP JUMPDEST SWAP8 POP PUSH1 0x0 DUP1 PUSH2 0x1AA9 DUP12 DUP12 PUSH2 0x30B4 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ ISZERO PUSH2 0x1B4C JUMPI PUSH1 0x0 DUP7 GT DUP1 ISZERO PUSH2 0x1AC6 JUMPI POP PUSH1 0x0 DUP6 GT JUMPDEST PUSH2 0x1B2C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F414D4F554E54530000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH2 0x1B38 PUSH2 0x3E8 DUP9 PUSH2 0x4479 JUMP JUMPDEST SWAP13 POP PUSH2 0x1B47 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x39DC JUMP JUMPDEST PUSH2 0x1B6F JUMP JUMPDEST DUP1 DUP3 PUSH2 0x1B58 DUP3 DUP11 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x1B62 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x1B6C SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP13 POP JUMPDEST DUP13 PUSH2 0x1BD6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F4C49515549444954595F4D494E544544000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH2 0x1BE0 DUP13 DUP15 PUSH2 0x39DC JUMP JUMPDEST PUSH2 0x1BE8 PUSH2 0x2CBA JUMP JUMPDEST PUSH1 0x6 DUP8 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 DUP2 ADD DUP15 SWAP1 MSTORE DUP14 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP1 CALLER SWAP1 PUSH32 0xF9C32FBC56FF04F32A233EBC26E388564223745E28ABD8D0781DD906537F563E SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP10 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CC9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1CDD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1D01 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x1D16 DUP5 DUP7 ADD DUP7 PUSH2 0x3F14 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1D25 PUSH2 0x28A7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP8 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DD6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1DFA SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP3 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1F69 JUMPI PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA5139CA PUSH32 0x0 PUSH2 0x1EBA DUP7 DUP7 DUP7 PUSH1 0x1 PUSH2 0x2ABD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1F3E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1F62 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP5 POP PUSH2 0x2133 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x201E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xDA5139CA PUSH32 0x0 PUSH2 0x2088 DUP7 DUP7 DUP7 PUSH1 0x0 PUSH2 0x2ABD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x20F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x210C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2130 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP5 POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP4 SWAP1 PUSH2 0x215E SWAP1 DUP5 SWAP1 PUSH2 0x4479 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x1018 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x2230 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x2245 DUP6 DUP8 ADD DUP8 PUSH2 0x3DA5 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x2256 PUSH2 0x2DCB JUMP JUMPDEST ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH2 0x2276 DUP5 DUP5 PUSH2 0x30B4 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x2286 DUP7 DUP6 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x2290 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x229F DUP7 DUP7 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x22A9 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH2 0x22B5 ADDRESS DUP6 PUSH2 0x3185 JUMP JUMPDEST PUSH2 0x22C2 PUSH2 0x13E4 DUP4 DUP9 PUSH2 0x4479 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x237F JUMPI PUSH2 0x233B DUP3 PUSH2 0x232A DUP2 DUP10 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x2334 DUP5 DUP10 PUSH2 0x4479 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2ABD JUMP JUMPDEST PUSH2 0x2345 SWAP1 DUP3 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 POP PUSH2 0x2373 PUSH32 0x0 DUP3 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST DUP1 SWAP10 POP PUSH1 0x0 SWAP2 POP PUSH2 0x2492 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2434 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH2 0x2453 DUP2 PUSH2 0x2442 DUP5 DUP10 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x244C DUP5 DUP10 PUSH2 0x4479 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2ABD JUMP JUMPDEST PUSH2 0x245D SWAP1 DUP4 PUSH2 0x42C7 JUMP JUMPDEST SWAP2 POP PUSH2 0x248B PUSH32 0x0 DUP4 DUP11 DUP11 PUSH2 0x3218 JUMP JUMPDEST POP SWAP8 POP DUP8 PUSH1 0x0 JUMPDEST PUSH2 0x249A PUSH2 0x2CBA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP6 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x2574 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x257E PUSH2 0x1465 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP3 DUP13 SWAP3 DUP13 SWAP3 DUP13 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x25D9 DUP4 PUSH2 0x4490 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x267A SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2703 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x277E JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x27E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2869 PUSH2 0x28A7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x2879 DUP4 DUP4 PUSH2 0x3478 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP PUSH2 0x288B PUSH1 0x12 PUSH1 0xA PUSH2 0x4373 JUMP JUMPDEST PUSH2 0x2895 SWAP1 DUP4 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x289F SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP4 POP POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x24 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP6 ADD MSTORE SWAP4 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x298C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x29C4 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0x56623118 SWAP1 PUSH1 0x64 ADD JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A93 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2AB7 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST SWAP1 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP5 MUL PUSH32 0x0 DUP5 MUL PUSH2 0x2710 PUSH32 0x0 DUP9 MUL DIV DUP8 SUB DUP4 PUSH2 0x2B39 DUP5 DUP5 PUSH2 0x3A4C JUMP JUMPDEST SWAP1 POP DUP6 ISZERO PUSH2 0x2BB5 JUMPI PUSH32 0x0 DUP3 MUL DUP5 ADD PUSH1 0x0 PUSH2 0x2B72 DUP3 DUP5 PUSH2 0x3B9F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 DUP7 SUB SUB SWAP7 POP PUSH32 0x0 DUP8 DUP2 PUSH2 0x2BAB JUMPI PUSH2 0x2BAB PUSH2 0x44F8 JUMP JUMPDEST DIV SWAP7 POP POP POP PUSH2 0x2C25 JUMP JUMPDEST PUSH32 0x0 DUP3 MUL DUP4 ADD PUSH1 0x0 PUSH2 0x2BE6 DUP3 DUP5 PUSH2 0x3B9F JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP2 DUP8 SUB SUB SWAP7 POP PUSH32 0x0 DUP8 DUP2 PUSH2 0x2C1F JUMPI PUSH2 0x2C1F PUSH2 0x44F8 JUMP JUMPDEST DIV SWAP7 POP POP POP JUMPDEST POP POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2C3D DUP6 DUP5 DUP7 DUP5 PUSH2 0x3218 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2CB3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x2C80 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x4265 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2CAE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2CC5 PUSH2 0x2DCB JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 GT DUP1 ISZERO SWAP1 PUSH2 0x2CFA JUMPI POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT ISZERO JUMPDEST PUSH2 0x2D60 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564552464C4F57000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6EB JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP1 DUP4 AND OR PUSH1 0x5 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH32 0xCF2AA50876CDFBB541206F89AF0EE78D44A2ABF8D328E37FA4917F982149848A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 DUP2 AND PUSH1 0x4 DUP5 ADD MSTORE ADDRESS PUSH1 0x24 DUP5 ADD MSTORE PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH32 0x0 AND SWAP2 PUSH4 0x56623118 SWAP2 DUP4 SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2E9A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EBE SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2F42 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F66 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 DUP2 AND PUSH1 0x4 DUP5 ADD MSTORE ADDRESS PUSH1 0x24 DUP5 ADD MSTORE SWAP3 SWAP5 POP PUSH32 0x0 AND SWAP2 PUSH4 0x56623118 SWAP2 DUP4 SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x301F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3033 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3057 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP6 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x2A67 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x6 SLOAD SWAP1 SWAP2 SWAP1 DUP1 ISZERO PUSH2 0x317D JUMPI PUSH2 0x30CE DUP6 DUP6 PUSH2 0x3478 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x317D JUMPI PUSH1 0x4 SLOAD PUSH1 0x0 DUP2 PUSH2 0x30E8 DUP5 DUP7 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x30F2 SWAP1 DUP8 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x30FC SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x310A DUP5 DUP5 PUSH2 0x443C JUMP JUMPDEST DUP6 PUSH2 0x3117 DUP6 PUSH2 0x2710 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x3121 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x312B SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3139 DUP3 DUP5 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x3178 JUMPI PUSH2 0x316B PUSH32 0x0 DUP3 PUSH2 0x39DC JUMP JUMPDEST PUSH2 0x3175 DUP2 DUP9 PUSH2 0x42C7 JUMP JUMPDEST SWAP7 POP JUMPDEST POP POP POP POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x31BA SWAP1 DUP5 SWAP1 PUSH2 0x4479 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP1 SLOAD DUP3 SWAP1 SUB DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3301 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x32D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x32FA SWAP2 SWAP1 PUSH2 0x4117 JUMP JUMPDEST POP POP PUSH2 0x3472 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xDA5139CA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP6 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x44 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 DUP7 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP6 SWAP1 PUSH4 0xDA5139CA SWAP1 PUSH1 0x64 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x33B8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x33DC SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP8 SWAP1 SHL AND DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x24 DUP5 ADD MSTORE SWAP3 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x346D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 DUP4 MUL PUSH32 0x0 DUP4 MUL PUSH2 0x34CA DUP3 DUP3 PUSH2 0x3A4C JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND SWAP4 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND SWAP2 PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x35C9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x35ED SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x369F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x36B3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x36D7 SWAP2 SWAP1 PUSH2 0x40FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x4FFE34DB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0x4FFE34DB SWAP1 PUSH1 0x24 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3783 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3797 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37BB SWAP2 SWAP1 PUSH2 0x40A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x4FFE34DB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0x4FFE34DB SWAP1 PUSH1 0x24 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3867 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x387B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x389F SWAP2 SWAP1 PUSH2 0x40A3 JUMP JUMPDEST SWAP1 POP PUSH2 0x38AB DUP3 DUP8 PUSH2 0x3CD1 JUMP JUMPDEST SWAP6 POP PUSH2 0x38B7 DUP2 DUP7 PUSH2 0x3CD1 JUMP JUMPDEST SWAP5 POP PUSH2 0x38C3 DUP3 DUP6 PUSH2 0x3CD1 JUMP JUMPDEST SWAP4 POP PUSH2 0x38CF DUP2 DUP5 PUSH2 0x3CD1 JUMP JUMPDEST SWAP3 POP POP POP SWAP1 SWAP2 SWAP3 SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 ISZERO DUP1 PUSH2 0x38E7 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x38F7 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x39D3 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x3904 DUP6 DUP10 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x390E SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP DUP6 DUP2 GT PUSH2 0x3969 JUMPI PUSH2 0x3924 PUSH2 0x2710 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x392E DUP3 DUP9 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x3958 SWAP1 PUSH32 0x0 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3962 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP2 POP PUSH2 0x39D1 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x3976 DUP8 DUP10 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3980 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH2 0x398F PUSH2 0x2710 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3999 DUP3 DUP11 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x39C3 SWAP1 PUSH32 0x0 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x39CD SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP4 POP POP JUMPDEST POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0x39ED SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x320C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3A59 DUP4 DUP6 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3A65 JUMPI PUSH1 0x0 SWAP2 POP JUMPDEST PUSH1 0x0 DUP2 DUP2 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x3B95 JUMPI PUSH1 0x0 PUSH1 0x4 DUP8 DUP5 DUP11 PUSH2 0x3A85 DUP3 DUP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3A8F SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3A99 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3AA3 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3AAD SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP DUP3 SWAP4 POP DUP1 PUSH1 0x3 PUSH2 0x3ABF SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH2 0x3AED PUSH1 0x64 PUSH32 0x0 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3AF7 SWAP2 SWAP1 PUSH2 0x4479 JUMP JUMPDEST PUSH2 0x3B01 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3B0B SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST DUP4 PUSH2 0x3B17 DUP4 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH1 0x64 PUSH2 0x3B43 DUP10 PUSH32 0x0 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3B4D SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3B57 SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST PUSH2 0x3B61 SWAP2 SWAP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3B6B SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP3 POP PUSH2 0x3B77 DUP4 DUP6 PUSH2 0x3D31 JUMP JUMPDEST ISZERO PUSH2 0x3B82 JUMPI POP PUSH2 0x3B95 JUMP JUMPDEST POP DUP1 PUSH2 0x3B8D DUP2 PUSH2 0x4490 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3A6A JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3BAD DUP5 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3BB7 DUP5 DUP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3BC1 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH1 0x64 PUSH2 0x3BF0 PUSH32 0x0 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3BFA SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3C04 DUP5 DUP4 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3C0E SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH2 0x3C3E PUSH1 0x64 DUP7 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3C48 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST PUSH2 0x3C52 SWAP1 DUP7 PUSH2 0x42C7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 SWAP4 POP PUSH1 0x0 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x2133 JUMPI DUP5 SWAP2 POP DUP6 DUP4 PUSH2 0x3C76 DUP5 PUSH1 0x2 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3C80 SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST PUSH2 0x3C8A SWAP2 SWAP1 PUSH2 0x4479 JUMP JUMPDEST DUP5 PUSH2 0x3C95 DUP8 DUP1 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3C9F SWAP2 SWAP1 PUSH2 0x42C7 JUMP JUMPDEST PUSH2 0x3CA9 SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP5 POP PUSH2 0x3CB5 DUP6 DUP4 PUSH2 0x3D31 JUMP JUMPDEST ISZERO PUSH2 0x3CBF JUMPI PUSH2 0x2133 JUMP JUMPDEST DUP1 PUSH2 0x3CC9 DUP2 PUSH2 0x4490 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3C5C JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x20 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 EQ ISZERO PUSH2 0x3CF9 JUMPI POP DUP1 PUSH2 0x1024 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD DUP4 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 PUSH2 0x3D20 SWAP2 AND DUP5 PUSH2 0x443C JUMP JUMPDEST PUSH2 0x3D2A SWAP2 SWAP1 PUSH2 0x42DF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 GT ISZERO PUSH2 0x3D48 JUMPI POP PUSH1 0x1 DUP2 DUP4 SUB GT ISZERO PUSH2 0x1024 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 SUB GT ISZERO SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3D63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3D63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3D9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3D2A DUP2 PUSH2 0x4585 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3DBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3DC5 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3DD5 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP2 POP PUSH2 0x3DE3 PUSH1 0x40 DUP6 ADD PUSH2 0x3D53 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3E04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3E0F DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 DUP2 ADD CALLDATALOAD PUSH2 0x3E20 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP5 POP PUSH2 0x3E2E PUSH1 0x40 DUP9 ADD PUSH2 0x3D53 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3E52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3E78 JUMPI PUSH2 0x3E78 PUSH2 0x4556 JUMP JUMPDEST PUSH2 0x3EA8 DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x4278 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP11 DUP5 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3EBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP5 DUP5 ADD DUP6 DUP5 ADD CALLDATACOPY PUSH1 0x0 DUP5 DUP3 DUP5 ADD ADD MSTORE POP DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3EFD DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP2 POP PUSH2 0x3F0B PUSH1 0x20 DUP5 ADD PUSH2 0x3D53 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3F32 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3F5E DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3F6E DUP2 PUSH2 0x4585 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3F8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3F99 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3FA9 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3FD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x3FE0 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x3FF0 DUP2 PUSH2 0x4585 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x4014 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4044 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x405C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4070 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x407F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x4091 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x40D8 JUMPI PUSH2 0x40D8 PUSH2 0x4556 JUMP JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x40E4 DUP4 PUSH2 0x3D68 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x40F2 PUSH1 0x20 DUP5 ADD PUSH2 0x3D68 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x412A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4161 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x4145 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x4173 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x41F4 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x41C2 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4258 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x421D JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x3D2A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x413B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x42BF JUMPI PUSH2 0x42BF PUSH2 0x4556 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x42DA JUMPI PUSH2 0x42DA PUSH2 0x44C9 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4315 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH2 0x317D JUMPI DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x4359 JUMPI PUSH2 0x4359 PUSH2 0x44C9 JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH2 0x4366 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH2 0x431F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D2A PUSH1 0xFF DUP5 AND DUP4 PUSH1 0x0 DUP3 PUSH2 0x438C JUMPI POP PUSH1 0x1 PUSH2 0x1024 JUMP JUMPDEST DUP2 PUSH2 0x4399 JUMPI POP PUSH1 0x0 PUSH2 0x1024 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH2 0x43AF JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x43B9 JUMPI PUSH2 0x43D5 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH2 0x1024 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH2 0x43CA JUMPI PUSH2 0x43CA PUSH2 0x44C9 JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH2 0x1024 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH2 0x43F8 JUMPI POP DUP2 DUP2 EXP PUSH2 0x1024 JUMP JUMPDEST PUSH2 0x4402 DUP4 DUP4 PUSH2 0x431A JUMP JUMPDEST DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP3 GT ISZERO PUSH2 0x4434 JUMPI PUSH2 0x4434 PUSH2 0x44C9 JUMP JUMPDEST MUL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x4474 JUMPI PUSH2 0x4474 PUSH2 0x44C9 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x448B JUMPI PUSH2 0x448B PUSH2 0x44C9 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x44C2 JUMPI PUSH2 0x44C2 PUSH2 0x44C9 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x45A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CREATE2 0xBE 0xD7 0xB7 GASPRICE DUP14 OR PUSH12 0x55D9233A65288C602EAB9DB5 0xC2 BLOCKHASH 0xE7 0xB5 GT CALL PUSH15 0x85C948723064736F6C634300080700 CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0xA793BC64 ORIGIN PUSH11 0x686C8216157EF398F80001 CREATE DUP8 0xCD RETURNDATACOPY MSIZE 0xEE DUP12 DUP1 MSTORE ISZERO 0xA8 MUL COINBASE 0xD8 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "239:937:41:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:62:44;;;;;;:::i;:::-;;:::i;:::-;;;3273:42:64;3261:55;;;3243:74;;3231:2;3216:18;250:62:44;;;;;;;;363:811:41;;;;;;:::i;:::-;;:::i;1535:143:44:-;;;;;;:::i;:::-;1643:13;;;;1610;1643;;;;;;;;;;;:21;;;;;;;;;;;:28;;1535:143;;;;5399:25:64;;;5387:2;5372:18;1535:143:44;5253:177:64;1684:345:44;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;204:39::-;;;;;318:48;;;;;;:::i;:::-;;;;;;;;;;;;;;;;250:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;250:62:44;;-1:-1:-1;;250:62:44:o;363:811:41:-;427:12;452:14;468;484:15;501:9;525:11;514:61;;;;;;;;;;;;:::i;:::-;451:124;;;;;;;;599:6;590:15;;:6;:15;;;586:81;;;641:6;;649;586:81;730:38;;;3569:42:64;3638:15;;;730:38:41;;;3620:34:64;3690:15;;3670:18;;;3663:43;;;;3722:18;;;3715:34;;;3765:18;;;3758:34;;;3531:19;;730:38:41;;;;;;;;;;818:1;804:16;;;;;;;;;730:38;-1:-1:-1;778:23:41;;730:38;804:16;;;;;;;;;;;;-1:-1:-1;804:16:41;778:42;;842:6;830;837:1;830:9;;;;;;;;:::i;:::-;;;;;;:18;;;;;;;;;;;870:6;858;865:1;858:9;;;;;;;;:::i;:::-;:18;;;;:9;;;;;;;;;;:18;1021:22;;;;;;1068:55;;1021:22;;1031:11;;1108:14;;1068:55;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;1053:71;;1134:33;1148:4;1154:6;1162:4;1134:13;:33::i;:::-;441:733;;;;;;363:811;;;:::o;1684:345:44:-;1830:26;1894:5;1880:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1880:20:44;;1868:32;;1915:9;1910:113;1934:5;1930:1;:9;1910:113;;;1975:13;;;;:5;:13;;;;;;;;;;;:21;;;;;;;;;1997:14;2010:1;1997:10;:14;:::i;:::-;1975:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1960:9;1970:1;1960:12;;;;;;;;:::i;:::-;:52;;;;:12;;;;;;;;;;;:52;1941:3;;;;:::i;:::-;;;;1910:113;;;;1684:345;;;;;;:::o;740:789::-;500:10;:28;514:14;500:28;;496:63;;537:22;;;;;;;;;;;;;;496:63;936:19:::1;::::0;;;:13:::1;:19;::::0;;;;:26;;;::::1;;::::0;::::1;;::::0;;1174:339:::1;1210:1;1194:6;:13;:17;1190:1;:21;1174:339;;;1253:6;1260:1;1264;1260:5;1253:13;;;;;;;;:::i;:::-;;;;;;;1240:26;;:6;1247:1;1240:9;;;;;;;;:::i;:::-;;;;;;;:26;;;1236:58;;1275:19;;;;;;;;;;;;;;1236:58;1333:1;1329:5:::0;::::1;1312:187;1340:6;:13;1336:1;:17;1312:187;;;1382:5;:16:::0;1388:6:::1;1395:1;1388:9;;;;;;;;:::i;:::-;;;;;;;1382:16;;;;;;;;;;;;;;;:27;1399:6;1406:1;1399:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;1382:27:::1;::::0;;::::1;::::0;;;;::::1;::::0;;;;;;;;-1:-1:-1;1382:27:44;;;:38;;::::1;::::0;::::1;::::0;;;;;;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;1448:9;;-1:-1:-1;;1448:9:44;;1455:1;;1448:9;::::1;;;;;:::i;:::-;;;;;;;1442:16;;;;;;;;;;;;;;;:27;1459:6;1466:1;1459:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;1442:27:::1;::::0;;::::1;::::0;;;;::::1;::::0;;;;;;;;-1:-1:-1;1442:27:44;;;:38;;::::1;::::0;;::::1;::::0;;;;;;;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;1355:3:::1;1312:187;;;-1:-1:-1::0;1213:3:44::1;;1174:339;;;;740:789:::0;;;:::o;-1:-1:-1:-;;;;;;;;:::o;14:524:64:-;127:6;135;143;151;204:3;192:9;183:7;179:23;175:33;172:53;;;221:1;218;211:12;172:53;253:9;247:16;272:31;297:5;272:31;:::i;:::-;372:2;357:18;;351:25;322:5;;-1:-1:-1;385:33:64;351:25;385:33;:::i;:::-;484:2;469:18;;463:25;528:2;513:18;;;507:25;14:524;;437:7;;-1:-1:-1;14:524:64;-1:-1:-1;;;14:524:64:o;543:388::-;611:6;619;672:2;660:9;651:7;647:23;643:32;640:52;;;688:1;685;678:12;640:52;727:9;714:23;746:31;771:5;746:31;:::i;:::-;796:5;-1:-1:-1;853:2:64;838:18;;825:32;866:33;825:32;866:33;:::i;:::-;918:7;908:17;;;543:388;;;;;:::o;936:456::-;1013:6;1021;1029;1082:2;1070:9;1061:7;1057:23;1053:32;1050:52;;;1098:1;1095;1088:12;1050:52;1137:9;1124:23;1156:31;1181:5;1156:31;:::i;:::-;1206:5;-1:-1:-1;1263:2:64;1248:18;;1235:32;1276:33;1235:32;1276:33;:::i;:::-;936:456;;1328:7;;-1:-1:-1;;;1382:2:64;1367:18;;;;1354:32;;936:456::o;1397:525::-;1483:6;1491;1499;1507;1560:3;1548:9;1539:7;1535:23;1531:33;1528:53;;;1577:1;1574;1567:12;1528:53;1616:9;1603:23;1635:31;1660:5;1635:31;:::i;:::-;1685:5;-1:-1:-1;1742:2:64;1727:18;;1714:32;1755:33;1714:32;1755:33;:::i;:::-;1397:525;;1807:7;;-1:-1:-1;;;;1861:2:64;1846:18;;1833:32;;1912:2;1897:18;1884:32;;1397:525::o;1927:180::-;1986:6;2039:2;2027:9;2018:7;2014:23;2010:32;2007:52;;;2055:1;2052;2045:12;2007:52;-1:-1:-1;2078:23:64;;1927:180;-1:-1:-1;1927:180:64:o;2112:980::-;2180:6;2233:2;2221:9;2212:7;2208:23;2204:32;2201:52;;;2249:1;2246;2239:12;2201:52;2289:9;2276:23;2318:18;2359:2;2351:6;2348:14;2345:34;;;2375:1;2372;2365:12;2345:34;2413:6;2402:9;2398:22;2388:32;;2458:7;2451:4;2447:2;2443:13;2439:27;2429:55;;2480:1;2477;2470:12;2429:55;2516:2;2503:16;2538:2;2534;2531:10;2528:36;;;2544:18;;:::i;:::-;2678:2;2672:9;2740:4;2732:13;;2583:66;2728:22;;;2752:2;2724:31;2720:40;2708:53;;;2776:18;;;2796:22;;;2773:46;2770:72;;;2822:18;;:::i;:::-;2862:10;2858:2;2851:22;2897:2;2889:6;2882:18;2937:7;2932:2;2927;2923;2919:11;2915:20;2912:33;2909:53;;;2958:1;2955;2948:12;2909:53;3014:2;3009;3005;3001:11;2996:2;2988:6;2984:15;2971:46;3059:1;3037:15;;;3054:2;3033:24;3026:35;;;;-1:-1:-1;3041:6:64;2112:980;-1:-1:-1;;;;;2112:980:64:o;3803:681::-;3974:2;4026:21;;;4096:13;;3999:18;;;4118:22;;;3945:4;;3974:2;4197:15;;;;4171:2;4156:18;;;3945:4;4240:218;4254:6;4251:1;4248:13;4240:218;;;4319:13;;4334:42;4315:62;4303:75;;4433:15;;;;4398:12;;;;4276:1;4269:9;4240:218;;;-1:-1:-1;4475:3:64;;3803:681;-1:-1:-1;;;;;;3803:681:64:o;4489:759::-;4664:2;4653:9;4646:21;4627:4;4696:6;4690:13;4739:6;4734:2;4723:9;4719:18;4712:34;4764:1;4774:144;4788:6;4785:1;4782:13;4774:144;;;4901:4;4885:14;;;4881:25;;4875:32;4870:2;4851:17;;;4847:26;4840:68;4803:12;4774:144;;;4936:6;4933:1;4930:13;4927:91;;;5006:1;5001:2;4992:6;4981:9;4977:22;4973:31;4966:42;4927:91;-1:-1:-1;5198:42:64;5186:55;;;;5179:4;5164:20;;5157:85;-1:-1:-1;5070:2:64;5058:15;;;;5075:66;5054:88;5039:104;5145:2;5035:113;;4489:759;-1:-1:-1;4489:759:64:o;5435:128::-;5475:3;5506:1;5502:6;5499:1;5496:13;5493:39;;;5512:18;;:::i;:::-;-1:-1:-1;5548:9:64;;5435:128::o;5568:195::-;5607:3;5638:66;5631:5;5628:77;5625:103;;;5708:18;;:::i;:::-;-1:-1:-1;5755:1:64;5744:13;;5568:195::o;5768:184::-;5820:77;5817:1;5810:88;5917:4;5914:1;5907:15;5941:4;5938:1;5931:15;5957:184;6009:77;6006:1;5999:88;6106:4;6103:1;6096:15;6130:4;6127:1;6120:15;6146:184;6198:77;6195:1;6188:88;6295:4;6292:1;6285:15;6319:4;6316:1;6309:15;6335:154;6421:42;6414:5;6410:54;6403:5;6400:65;6390:93;;6479:1;6476;6469:12;6390:93;6335:154;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "4816600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "configAddress(bytes32)": "2486",
                "deployPool(bytes)": "infinite",
                "getPools(address,address,uint256,uint256)": "infinite",
                "masterDeployer()": "infinite",
                "pools(address,address,uint256)": "infinite",
                "poolsCount(address,address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "configAddress(bytes32)": "f6ab6d99",
              "deployPool(bytes)": "27c3cae1",
              "getPools(address,address,uint256,uint256)": "71a25812",
              "masterDeployer()": "cf58879a",
              "pools(address,address,uint256)": "169c4cef",
              "poolsCount(address,address)": "5bc93d6c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_masterDeployer\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidTokenOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorisedDeployer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"configAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_deployData\",\"type\":\"bytes\"}],\"name\":\"deployPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pairPools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterDeployer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pools\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"}],\"name\":\"poolsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Mudit Gupta.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contract for deploying Trident exchange Hybrid Pool with configurations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/HybridPoolFactory.sol\":\"HybridPoolFactory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentCallee.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool callback interface.\\ninterface ITridentCallee {\\n    function tridentSwapCallback(bytes calldata data) external;\\n\\n    function tridentMintCallback(bytes calldata data) external;\\n}\\n\",\"keccak256\":\"0x256e838362a3064201b37b3b7c08bc1421b173a6fea633176123f0b827b868c9\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/MathUtils.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice A library that contains functions for calculating differences between two uint256.\\n/// @author Adapted from https://github.com/saddle-finance/saddle-contract/blob/master/contracts/MathUtils.sol.\\nlibrary MathUtils {\\n    /// @notice Compares a and b and returns 'true' if the difference between a and b\\n    /// is less than 1 or equal to each other.\\n    /// @param a uint256 to compare with.\\n    /// @param b uint256 to compare with.\\n    function within1(uint256 a, uint256 b) internal pure returns (bool) {\\n        unchecked {\\n            if (a > b) {\\n                return a - b <= 1;\\n            }\\n            return b - a <= 1;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x7f02d5a108fe7743d0aa4274a0234f81ffe25ba702ce6ba46d94db27cde97d52\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/HybridPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../interfaces/IBentoBoxMinimal.sol\\\";\\nimport \\\"../interfaces/IMasterDeployer.sol\\\";\\nimport \\\"../interfaces/IPool.sol\\\";\\nimport \\\"../interfaces/ITridentCallee.sol\\\";\\nimport \\\"../libraries/MathUtils.sol\\\";\\nimport \\\"./TridentERC20.sol\\\";\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Trident exchange pool template with hybrid like-kind formula for swapping between an ERC-20 token pair.\\n/// @dev The reserves are stored as bento shares. However, the stableswap invariant is applied to the underlying amounts.\\n///      The API uses the underlying amounts.\\ncontract HybridPool is IPool, TridentERC20 {\\n    using MathUtils for uint256;\\n    using RebaseLibrary for Rebase;\\n\\n    event Mint(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\\n    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\\n    event Sync(uint256 reserve0, uint256 reserve1);\\n\\n    uint256 internal constant MINIMUM_LIQUIDITY = 10**3;\\n    uint8 internal constant PRECISION = 112;\\n\\n    /// @dev Constant value used as max loop limit.\\n    uint256 private constant MAX_LOOP_LIMIT = 256;\\n    uint256 internal constant MAX_FEE = 10000; // @dev 100%.\\n    uint256 public immutable swapFee;\\n\\n    IBentoBoxMinimal public immutable bento;\\n    IMasterDeployer public immutable masterDeployer;\\n    address public immutable barFeeTo;\\n    address public immutable token0;\\n    address public immutable token1;\\n    uint256 public immutable A;\\n    uint256 internal immutable N_A; // @dev 2 * A.\\n    uint256 internal constant A_PRECISION = 100;\\n\\n    /// @dev Multipliers for each pooled token's precision to get to POOL_PRECISION_DECIMALS.\\n    /// For example, TBTC has 18 decimals, so the multiplier should be 1. WBTC\\n    /// has 8, so the multiplier should be 10 ** 18 / 10 ** 8 => 10 ** 10.\\n    uint256 public immutable token0PrecisionMultiplier;\\n    uint256 public immutable token1PrecisionMultiplier;\\n\\n    uint256 public barFee;\\n\\n    uint128 internal reserve0;\\n    uint128 internal reserve1;\\n    uint256 internal dLast;\\n\\n    bytes32 public constant override poolIdentifier = \\\"Trident:HybridPool\\\";\\n\\n    uint256 internal unlocked;\\n    modifier lock() {\\n        require(unlocked == 1, \\\"LOCKED\\\");\\n        unlocked = 2;\\n        _;\\n        unlocked = 1;\\n    }\\n\\n    constructor(bytes memory _deployData, address _masterDeployer) {\\n        (address _token0, address _token1, uint256 _swapFee, uint256 a) = abi.decode(_deployData, (address, address, uint256, uint256));\\n\\n        // @dev Factory ensures that the tokens are sorted.\\n        require(_token0 != address(0), \\\"ZERO_ADDRESS\\\");\\n        require(_token0 != _token1, \\\"IDENTICAL_ADDRESSES\\\");\\n        require(_swapFee <= MAX_FEE, \\\"INVALID_SWAP_FEE\\\");\\n        require(a != 0, \\\"ZERO_A\\\");\\n\\n        token0 = _token0;\\n        token1 = _token1;\\n        swapFee = _swapFee;\\n        barFee = IMasterDeployer(_masterDeployer).barFee();\\n        barFeeTo = IMasterDeployer(_masterDeployer).barFeeTo();\\n        bento = IBentoBoxMinimal(IMasterDeployer(_masterDeployer).bento());\\n        masterDeployer = IMasterDeployer(_masterDeployer);\\n        A = a;\\n        N_A = 2 * a;\\n        token0PrecisionMultiplier = uint256(10)**(decimals - TridentERC20(_token0).decimals());\\n        token1PrecisionMultiplier = uint256(10)**(decimals - TridentERC20(_token1).decimals());\\n        unlocked = 1;\\n    }\\n\\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\\n    /// The router must ensure that sufficient LP tokens are minted by using the return value.\\n    function mint(bytes calldata data) public override lock returns (uint256 liquidity) {\\n        address recipient = abi.decode(data, (address));\\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n\\n        uint256 newLiq = _computeLiquidity(balance0, balance1);\\n        uint256 amount0 = balance0 - _reserve0;\\n        uint256 amount1 = balance1 - _reserve1;\\n        (uint256 fee0, uint256 fee1) = _nonOptimalMintFee(amount0, amount1, _reserve0, _reserve1);\\n        _reserve0 += uint112(fee0);\\n        _reserve1 += uint112(fee1);\\n\\n        (uint256 _totalSupply, uint256 oldLiq) = _mintFee(_reserve0, _reserve1);\\n\\n        if (_totalSupply == 0) {\\n            require(amount0 > 0 && amount1 > 0, \\\"INVALID_AMOUNTS\\\");\\n            liquidity = newLiq - MINIMUM_LIQUIDITY;\\n            _mint(address(0), MINIMUM_LIQUIDITY);\\n        } else {\\n            liquidity = ((newLiq - oldLiq) * _totalSupply) / oldLiq;\\n        }\\n        require(liquidity != 0, \\\"INSUFFICIENT_LIQUIDITY_MINTED\\\");\\n        _mint(recipient, liquidity);\\n        _updateReserves();\\n\\n        dLast = newLiq;\\n        uint256 liquidityForEvent = liquidity;\\n        emit Mint(msg.sender, amount0, amount1, recipient, liquidityForEvent);\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\\n    function burn(bytes calldata data) public override lock returns (IPool.TokenAmount[] memory withdrawnAmounts) {\\n        (address recipient, bool unwrapBento) = abi.decode(data, (address, bool));\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 liquidity = balanceOf[address(this)];\\n\\n        (uint256 _totalSupply, ) = _mintFee(balance0, balance1);\\n\\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\\n\\n        _burn(address(this), liquidity);\\n        _transfer(token0, amount0, recipient, unwrapBento);\\n        _transfer(token1, amount1, recipient, unwrapBento);\\n\\n        _updateReserves();\\n\\n        withdrawnAmounts = new TokenAmount[](2);\\n        withdrawnAmounts[0] = TokenAmount({token: token0, amount: amount0});\\n        withdrawnAmounts[1] = TokenAmount({token: token1, amount: amount1});\\n\\n        dLast = _computeLiquidity(balance0 - amount0, balance1 - amount1);\\n\\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\\n    /// - i.e., the user gets a single token out by burning LP tokens.\\n    function burnSingle(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenOut, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 liquidity = balanceOf[address(this)];\\n\\n        (uint256 _totalSupply, ) = _mintFee(balance0, balance1);\\n\\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\\n\\n        _burn(address(this), liquidity);\\n        dLast = _computeLiquidity(balance0 - amount0, balance1 - amount1);\\n\\n        // Swap tokens\\n        if (tokenOut == token1) {\\n            // @dev Swap `token0` for `token1`.\\n            // @dev Calculate `amountOut` as if the user first withdrew balanced liquidity and then swapped `token0` for `token1`.\\n            amount1 += _getAmountOut(amount0, balance0 - amount0, balance1 - amount1, true);\\n            _transfer(token1, amount1, recipient, unwrapBento);\\n            amountOut = amount1;\\n            amount0 = 0;\\n        } else {\\n            // @dev Swap `token1` for `token0`.\\n            require(tokenOut == token0, \\\"INVALID_OUTPUT_TOKEN\\\");\\n            amount0 += _getAmountOut(amount1, balance0 - amount0, balance1 - amount1, false);\\n            _transfer(token0, amount0, recipient, unwrapBento);\\n            amountOut = amount0;\\n            amount1 = 0;\\n        }\\n        _updateReserves();\\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\\n    function swap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\\n        (uint256 _reserve0, uint256 _reserve1, uint256 balance0, uint256 balance1) = _getReservesAndBalances();\\n        uint256 amountIn;\\n        address tokenOut;\\n\\n        if (tokenIn == token0) {\\n            tokenOut = token1;\\n            unchecked {\\n                amountIn = balance0 - _reserve0;\\n            }\\n            amountOut = _getAmountOut(amountIn, _reserve0, _reserve1, true);\\n        } else {\\n            require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n            tokenOut = token0;\\n            unchecked {\\n                amountIn = balance1 - _reserve1;\\n            }\\n            amountOut = _getAmountOut(amountIn, _reserve0, _reserve1, false);\\n        }\\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n        _updateReserves();\\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\\n    }\\n\\n    /// @dev Swaps one token for another with payload. The router must support swap callbacks and ensure there isn't too much slippage.\\n    function flashSwap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address recipient, bool unwrapBento, uint256 amountIn, bytes memory context) = abi.decode(\\n            data,\\n            (address, address, bool, uint256, bytes)\\n        );\\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\\n        address tokenOut;\\n\\n        if (tokenIn == token0) {\\n            tokenOut = token1;\\n            amountIn = bento.toAmount(token0, amountIn, false);\\n            amountOut = _getAmountOut(amountIn, _reserve0, _reserve1, true);\\n            _processSwap(token1, recipient, amountOut, context, unwrapBento);\\n            uint256 balance0 = bento.toAmount(token0, bento.balanceOf(token0, address(this)), false);\\n            require(balance0 - _reserve0 >= amountIn, \\\"INSUFFICIENT_AMOUNT_IN\\\");\\n        } else {\\n            require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n            tokenOut = token0;\\n            amountIn = bento.toAmount(token1, amountIn, false);\\n            amountOut = _getAmountOut(amountIn, _reserve0, _reserve1, false);\\n            _processSwap(token0, recipient, amountOut, context, unwrapBento);\\n            uint256 balance1 = bento.toAmount(token1, bento.balanceOf(token1, address(this)), false);\\n            require(balance1 - _reserve1 >= amountIn, \\\"INSUFFICIENT_AMOUNT_IN\\\");\\n        }\\n        _updateReserves();\\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\\n    }\\n\\n    /// @dev Updates `barFee` for Trident protocol.\\n    function updateBarFee() public {\\n        barFee = masterDeployer.barFee();\\n    }\\n\\n    function _processSwap(\\n        address tokenOut,\\n        address to,\\n        uint256 amountOut,\\n        bytes memory data,\\n        bool unwrapBento\\n    ) internal {\\n        _transfer(tokenOut, amountOut, to, unwrapBento);\\n        if (data.length != 0) ITridentCallee(msg.sender).tridentSwapCallback(data);\\n    }\\n\\n    function _getReserves() internal view returns (uint256 _reserve0, uint256 _reserve1) {\\n        (_reserve0, _reserve1) = (reserve0, reserve1);\\n        _reserve0 = bento.toAmount(token0, _reserve0, false);\\n        _reserve1 = bento.toAmount(token1, _reserve1, false);\\n    }\\n\\n    function _getReservesAndBalances()\\n        internal\\n        view\\n        returns (\\n            uint256 _reserve0,\\n            uint256 _reserve1,\\n            uint256 balance0,\\n            uint256 balance1\\n        )\\n    {\\n        (_reserve0, _reserve1) = (reserve0, reserve1);\\n        balance0 = bento.balanceOf(token0, address(this));\\n        balance1 = bento.balanceOf(token1, address(this));\\n        Rebase memory total0 = bento.totals(token0);\\n        Rebase memory total1 = bento.totals(token1);\\n\\n        _reserve0 = total0.toElastic(_reserve0);\\n        _reserve1 = total1.toElastic(_reserve1);\\n        balance0 = total0.toElastic(balance0);\\n        balance1 = total1.toElastic(balance1);\\n    }\\n\\n    function _updateReserves() internal {\\n        (uint256 _reserve0, uint256 _reserve1) = _balance();\\n        require(_reserve0 <= type(uint128).max && _reserve1 <= type(uint128).max, \\\"OVERFLOW\\\");\\n        reserve0 = uint128(_reserve0);\\n        reserve1 = uint128(_reserve1);\\n        emit Sync(_reserve0, _reserve1);\\n    }\\n\\n    function _balance() internal view returns (uint256 balance0, uint256 balance1) {\\n        balance0 = bento.toAmount(token0, bento.balanceOf(token0, address(this)), false);\\n        balance1 = bento.toAmount(token1, bento.balanceOf(token1, address(this)), false);\\n    }\\n\\n    function _getAmountOut(\\n        uint256 amountIn,\\n        uint256 _reserve0,\\n        uint256 _reserve1,\\n        bool token0In\\n    ) internal view returns (uint256 dy) {\\n        unchecked {\\n            uint256 adjustedReserve0 = _reserve0 * token0PrecisionMultiplier;\\n            uint256 adjustedReserve1 = _reserve1 * token1PrecisionMultiplier;\\n            uint256 feeDeductedAmountIn = amountIn - (amountIn * swapFee) / MAX_FEE;\\n            uint256 d = _computeLiquidityFromAdjustedBalances(adjustedReserve0, adjustedReserve1);\\n\\n            if (token0In) {\\n                uint256 x = adjustedReserve0 + (feeDeductedAmountIn * token0PrecisionMultiplier);\\n                uint256 y = _getY(x, d);\\n                dy = adjustedReserve1 - y - 1;\\n                dy /= token1PrecisionMultiplier;\\n            } else {\\n                uint256 x = adjustedReserve1 + (feeDeductedAmountIn * token1PrecisionMultiplier);\\n                uint256 y = _getY(x, d);\\n                dy = adjustedReserve0 - y - 1;\\n                dy /= token0PrecisionMultiplier;\\n            }\\n        }\\n    }\\n\\n    function _transfer(\\n        address token,\\n        uint256 amount,\\n        address to,\\n        bool unwrapBento\\n    ) internal {\\n        if (unwrapBento) {\\n            bento.withdraw(token, address(this), to, amount, 0);\\n        } else {\\n            bento.transfer(token, address(this), to, bento.toShare(token, amount, false));\\n        }\\n    }\\n\\n    /// @notice Get D, the StableSwap invariant, based on a set of balances and a particular A.\\n    /// See the StableSwap paper for details.\\n    /// @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L319.\\n    /// @return liquidity The invariant, at the precision of the pool.\\n    function _computeLiquidity(uint256 _reserve0, uint256 _reserve1) internal view returns (uint256 liquidity) {\\n        unchecked {\\n            uint256 adjustedReserve0 = _reserve0 * token0PrecisionMultiplier;\\n            uint256 adjustedReserve1 = _reserve1 * token1PrecisionMultiplier;\\n            liquidity = _computeLiquidityFromAdjustedBalances(adjustedReserve0, adjustedReserve1);\\n        }\\n    }\\n\\n    function _computeLiquidityFromAdjustedBalances(uint256 xp0, uint256 xp1) internal view returns (uint256 computed) {\\n        uint256 s = xp0 + xp1;\\n\\n        if (s == 0) {\\n            computed = 0;\\n        }\\n        uint256 prevD;\\n        uint256 D = s;\\n        for (uint256 i = 0; i < MAX_LOOP_LIMIT; i++) {\\n            uint256 dP = (((D * D) / xp0) * D) / xp1 / 4;\\n            prevD = D;\\n            D = (((N_A * s) / A_PRECISION + 2 * dP) * D) / ((N_A / A_PRECISION - 1) * D + 3 * dP);\\n            if (D.within1(prevD)) {\\n                break;\\n            }\\n        }\\n        computed = D;\\n    }\\n\\n    /// @notice Calculate the new balances of the tokens given the indexes of the token\\n    /// that is swapped from (FROM) and the token that is swapped to (TO).\\n    /// This function is used as a helper function to calculate how much TO token\\n    /// the user should receive on swap.\\n    /// @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L432.\\n    /// @param x The new total amount of FROM token.\\n    /// @return y The amount of TO token that should remain in the pool.\\n    function _getY(uint256 x, uint256 D) internal view returns (uint256 y) {\\n        uint256 c = (D * D) / (x * 2);\\n        c = (c * D) / ((N_A * 2) / A_PRECISION);\\n        uint256 b = x + ((D * A_PRECISION) / N_A);\\n        uint256 yPrev;\\n        y = D;\\n        // @dev Iterative approximation.\\n        for (uint256 i = 0; i < MAX_LOOP_LIMIT; i++) {\\n            yPrev = y;\\n            y = (y * y + c) / (y * 2 + b - D);\\n            if (y.within1(yPrev)) {\\n                break;\\n            }\\n        }\\n    }\\n\\n    function _mintFee(uint256 _reserve0, uint256 _reserve1) internal returns (uint256 _totalSupply, uint256 d) {\\n        _totalSupply = totalSupply;\\n        uint256 _dLast = dLast;\\n        if (_dLast != 0) {\\n            d = _computeLiquidity(_reserve0, _reserve1);\\n            if (d > _dLast) {\\n                // @dev `barFee` % of increase in liquidity.\\n                uint256 _barFee = barFee;\\n                uint256 numerator = _totalSupply * (d - _dLast) * _barFee;\\n                uint256 denominator = (MAX_FEE - _barFee) * d + _barFee * _dLast;\\n                uint256 liquidity = numerator / denominator;\\n\\n                if (liquidity != 0) {\\n                    _mint(barFeeTo, liquidity);\\n                    _totalSupply += liquidity;\\n                }\\n            }\\n        }\\n    }\\n\\n    /// @dev This fee is charged to cover for `swapFee` when users add unbalanced liquidity.\\n    function _nonOptimalMintFee(\\n        uint256 _amount0,\\n        uint256 _amount1,\\n        uint256 _reserve0,\\n        uint256 _reserve1\\n    ) internal view returns (uint256 token0Fee, uint256 token1Fee) {\\n        if (_reserve0 == 0 || _reserve1 == 0) return (0, 0);\\n        uint256 amount1Optimal = (_amount0 * _reserve1) / _reserve0;\\n\\n        if (amount1Optimal <= _amount1) {\\n            token1Fee = (swapFee * (_amount1 - amount1Optimal)) / (2 * MAX_FEE);\\n        } else {\\n            uint256 amount0Optimal = (_amount1 * _reserve0) / _reserve1;\\n            token0Fee = (swapFee * (_amount0 - amount0Optimal)) / (2 * MAX_FEE);\\n        }\\n    }\\n\\n    function getAssets() public view override returns (address[] memory assets) {\\n        assets = new address[](2);\\n        assets[0] = token0;\\n        assets[1] = token1;\\n    }\\n\\n    function getAmountOut(bytes calldata data) public view override returns (uint256 finalAmountOut) {\\n        (address tokenIn, uint256 amountIn) = abi.decode(data, (address, uint256));\\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\\n        amountIn = bento.toAmount(tokenIn, amountIn, false);\\n\\n        if (tokenIn == token0) {\\n            finalAmountOut = bento.toShare(token1, _getAmountOut(amountIn, _reserve0, _reserve1, true), false);\\n        } else {\\n            require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n            finalAmountOut = bento.toShare(token0, _getAmountOut(amountIn, _reserve0, _reserve1, false), false);\\n        }\\n    }\\n\\n    function getAmountIn(bytes calldata) public pure override returns (uint256) {\\n        revert();\\n    }\\n\\n    function getReserves() public view returns (uint256 _reserve0, uint256 _reserve1) {\\n        (_reserve0, _reserve1) = _getReserves();\\n    }\\n\\n    function getVirtualPrice() public view returns (uint256 virtualPrice) {\\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\\n        uint256 d = _computeLiquidity(_reserve0, _reserve1);\\n        virtualPrice = (d * (uint256(10)**decimals)) / totalSupply;\\n    }\\n}\\n\",\"keccak256\":\"0x0a35cbe62d933222ca290ad95b759fcf9ca50d13f570261e656b7def655b5878\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/HybridPoolFactory.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./HybridPool.sol\\\";\\nimport \\\"./PoolDeployer.sol\\\";\\n\\n/// @notice Contract for deploying Trident exchange Hybrid Pool with configurations.\\n/// @author Mudit Gupta.\\ncontract HybridPoolFactory is PoolDeployer {\\n    constructor(address _masterDeployer) PoolDeployer(_masterDeployer) {}\\n\\n    function deployPool(bytes memory _deployData) external returns (address pool) {\\n        (address tokenA, address tokenB, uint256 swapFee, uint256 a) = abi.decode(_deployData, (address, address, uint256, uint256));\\n\\n        if (tokenA > tokenB) {\\n            (tokenA, tokenB) = (tokenB, tokenA);\\n        }\\n\\n        // @dev Strips any extra data.\\n        _deployData = abi.encode(tokenA, tokenB, swapFee, a);\\n        address[] memory tokens = new address[](2);\\n        tokens[0] = tokenA;\\n        tokens[1] = tokenB;\\n\\n        // @dev Salt is not actually needed since `_deployData` is part of creationCode and already contains the salt.\\n        bytes32 salt = keccak256(_deployData);\\n        pool = address(new HybridPool{salt: salt}(_deployData, masterDeployer));\\n        _registerPool(pool, tokens, salt);\\n    }\\n}\\n\",\"keccak256\":\"0x13b20e81da02c81feb27dd4b9fbcfe907a8313c4a9001407a14c83f2e5a0db42\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/PoolDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer for whitelisted template factories.\\n/// @author Mudit Gupta.\\nabstract contract PoolDeployer {\\n    address public immutable masterDeployer;\\n\\n    mapping(address => mapping(address => address[])) public pools;\\n    mapping(bytes32 => address) public configAddress;\\n\\n    error UnauthorisedDeployer();\\n    error ZeroAddress();\\n    error InvalidTokenOrder();\\n\\n    modifier onlyMaster() {\\n        if (msg.sender != masterDeployer) revert UnauthorisedDeployer();\\n        _;\\n    }\\n\\n    constructor(address _masterDeployer) {\\n        if (_masterDeployer == address(0)) revert ZeroAddress();\\n        masterDeployer = _masterDeployer;\\n    }\\n\\n    function _registerPool(\\n        address pool,\\n        address[] memory tokens,\\n        bytes32 salt\\n    ) internal onlyMaster {\\n        // @dev Store the address of the deployed contract.\\n        configAddress[salt] = pool;\\n        // @dev Attacker used underflow, it was not very effective. poolimon!\\n        // null token array would cause deployment to fail via out of bounds memory axis/gas limit.\\n        unchecked {\\n            for (uint256 i; i < tokens.length - 1; i++) {\\n                if (tokens[i] >= tokens[i + 1]) revert InvalidTokenOrder();\\n                for (uint256 j = i + 1; j < tokens.length; j++) {\\n                    pools[tokens[i]][tokens[j]].push(pool);\\n                    pools[tokens[j]][tokens[i]].push(pool);\\n                }\\n            }\\n        }\\n    }\\n\\n    function poolsCount(address token0, address token1) external view returns (uint256 count) {\\n        count = pools[token0][token1].length;\\n    }\\n\\n    function getPools(\\n        address token0,\\n        address token1,\\n        uint256 startIndex,\\n        uint256 count\\n    ) external view returns (address[] memory pairPools) {\\n        pairPools = new address[](count);\\n        for (uint256 i = 0; i < count; i++) {\\n            pairPools[i] = pools[token0][token1][startIndex + i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x34c44a489ccaf9a7b2bc05527113552a2ebc5a8b4b9d47035e465c39cf569b81\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/TridentERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool ERC-20 with EIP-2612 extension.\\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol,\\n/// License-Identifier: AGPL-3.0-only.\\nabstract contract TridentERC20 {\\n    event Transfer(address indexed sender, address indexed recipient, uint256 amount);\\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\\n\\n    string public constant name = \\\"Sushi LP Token\\\";\\n    string public constant symbol = \\\"SLP\\\";\\n    uint8 public constant decimals = 18;\\n\\n    uint256 public totalSupply;\\n    /// @notice owner -> balance mapping.\\n    mapping(address => uint256) public balanceOf;\\n    /// @notice owner -> spender -> allowance mapping.\\n    mapping(address => mapping(address => uint256)) public allowance;\\n\\n    /// @notice Chain Id at this contract's deployment.\\n    uint256 internal immutable DOMAIN_SEPARATOR_CHAIN_ID;\\n    /// @notice EIP-712 typehash for this contract's domain at deployment.\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n    /// @notice EIP-712 typehash for this contract's {permit} struct.\\n    bytes32 public constant PERMIT_TYPEHASH =\\n        keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n    /// @notice owner -> nonce mapping used in {permit}.\\n    mapping(address => uint256) public nonces;\\n\\n    constructor() {\\n        DOMAIN_SEPARATOR_CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _calculateDomainSeparator();\\n    }\\n\\n    function _calculateDomainSeparator() internal view returns (bytes32 domainSeperator) {\\n        domainSeperator = keccak256(\\n            abi.encode(\\n                keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"),\\n                keccak256(bytes(name)),\\n                keccak256(bytes(\\\"1\\\")),\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    /// @notice EIP-712 typehash for this contract's domain.\\n    function DOMAIN_SEPARATOR() public view returns (bytes32 domainSeperator) {\\n        domainSeperator = block.chainid == DOMAIN_SEPARATOR_CHAIN_ID ? _DOMAIN_SEPARATOR : _calculateDomainSeparator();\\n    }\\n\\n    /// @notice Approves `amount` from `msg.sender` to be spent by `spender`.\\n    /// @param spender Address of the party that can pull tokens from `msg.sender`'s account.\\n    /// @param amount The maximum collective `amount` that `spender` can pull.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function approve(address spender, uint256 amount) external returns (bool) {\\n        allowance[msg.sender][spender] = amount;\\n        emit Approval(msg.sender, spender, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `msg.sender` to `recipient`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transfer(address recipient, uint256 amount) external returns (bool) {\\n        balanceOf[msg.sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(msg.sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\\n    /// @param sender Address to pull tokens `from`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool) {\\n        if (allowance[sender][msg.sender] != type(uint256).max) {\\n            allowance[sender][msg.sender] -= amount;\\n        }\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Triggers an approval from `owner` to `spender`.\\n    /// @param owner The address to approve from.\\n    /// @param spender The address to be approved.\\n    /// @param amount The number of tokens that are approved (2^256-1 means infinite).\\n    /// @param deadline The time at which to expire the signature.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        require(deadline >= block.timestamp, \\\"PERMIT_DEADLINE_EXPIRED\\\");\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                \\\"\\\\x19\\\\x01\\\",\\n                DOMAIN_SEPARATOR(),\\n                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))\\n            )\\n        );\\n        address recoveredAddress = ecrecover(digest, v, r, s);\\n        require(recoveredAddress != address(0) && recoveredAddress == owner, \\\"INVALID_PERMIT_SIGNATURE\\\");\\n        allowance[recoveredAddress][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    function _mint(address recipient, uint256 amount) internal {\\n        totalSupply += amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(address(0), recipient, amount);\\n    }\\n\\n    function _burn(address sender, uint256 amount) internal {\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from underflow - users won't ever\\n        // have a balance larger than `totalSupply`.\\n        unchecked {\\n            totalSupply -= amount;\\n        }\\n        emit Transfer(sender, address(0), amount);\\n    }\\n}\\n\",\"keccak256\":\"0xb249a6d507f6911b7de4f9655a9736710fac9847982ad9afa18650db9a84794d\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 11688,
                "contract": "contracts/pool/HybridPoolFactory.sol:HybridPoolFactory",
                "label": "pools",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_address,t_mapping(t_address,t_array(t_address)dyn_storage))"
              },
              {
                "astId": 11692,
                "contract": "contracts/pool/HybridPoolFactory.sol:HybridPoolFactory",
                "label": "configAddress",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_bytes32,t_address)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_address)dyn_storage": {
                "base": "t_address",
                "encoding": "dynamic_array",
                "label": "address[]",
                "numberOfBytes": "32"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_array(t_address)dyn_storage)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => address[])",
                "numberOfBytes": "32",
                "value": "t_array(t_address)dyn_storage"
              },
              "t_mapping(t_address,t_mapping(t_address,t_array(t_address)dyn_storage))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => address[]))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_array(t_address)dyn_storage)"
              },
              "t_mapping(t_bytes32,t_address)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Contract for deploying Trident exchange Hybrid Pool with configurations.",
            "version": 1
          }
        }
      },
      "contracts/pool/IndexPool.sol": {
        "IndexPool": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "tokenOut",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "tokenIn",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "Mint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenIn",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOut",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "name": "Swap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "domainSeperator",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFeeTo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPool.TokenAmount[]",
                  "name": "withdrawnAmounts",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burnSingle",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "flashSwap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "getAmountIn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "getAmountOut",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAssets",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getReservesAndWeights",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "reserves",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint136[]",
                  "name": "weights",
                  "type": "uint136[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolIdentifier",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "records",
              "outputs": [
                {
                  "internalType": "uint120",
                  "name": "reserve",
                  "type": "uint120"
                },
                {
                  "internalType": "uint136",
                  "name": "weight",
                  "type": "uint136"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "swap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "swapFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "updateBarFee",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "The reserves are stored as bento shares.      The curve is applied to shares as well. This pool does not care about the underlying amounts.",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "params": {
                  "amount": "The maximum collective `amount` that `spender` can pull.",
                  "spender": "Address of the party that can pull tokens from `msg.sender`'s account."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "burn(bytes)": {
                "details": "Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens."
              },
              "burnSingle(bytes)": {
                "details": "Burns LP tokens sent to this contract and swaps one of the output tokens for another - i.e., the user gets a single token out by burning LP tokens."
              },
              "flashSwap(bytes)": {
                "details": "Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage."
              },
              "getAmountOut(bytes)": {
                "details": "The pool does not need to include a trade simulator directly in itself - it can use a library.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "amountOut": "The amount of output tokens that will be sent to the user if the trade is executed."
                }
              },
              "getAssets()": {
                "returns": {
                  "assets": "An array of tokens supported by the pool."
                }
              },
              "mint(bytes)": {
                "details": "Mints LP tokens - should be called via the router after transferring `bento` tokens. The router must ensure that sufficient LP tokens are minted by using the return value."
              },
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "amount": "The number of tokens that are approved (2^256-1 means infinite).",
                  "deadline": "The time at which to expire the signature.",
                  "owner": "The address to approve from.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "spender": "The address to be approved.",
                  "v": "The recovery byte of the signature."
                }
              },
              "swap(bytes)": {
                "details": "Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage."
              },
              "transfer(address,uint256)": {
                "params": {
                  "amount": "The token `amount` to move.",
                  "recipient": "The address to move tokens to."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "transferFrom(address,address,uint256)": {
                "params": {
                  "amount": "The token `amount` to move.",
                  "recipient": "The address to move tokens to.",
                  "sender": "Address to pull tokens `from`."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "updateBarFee()": {
                "details": "Updates `barFee` for Trident protocol."
              }
            },
            "stateVariables": {
              "poolIdentifier": {
                "return": "A unique identifier for the pool type.",
                "returns": {
                  "_0": "A unique identifier for the pool type."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_10294": {
                  "entryPoint": null,
                  "id": 10294,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_11960": {
                  "entryPoint": null,
                  "id": 11960,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_calculateDomainSeparator_11995": {
                  "entryPoint": null,
                  "id": 11995,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_mint_12250": {
                  "entryPoint": 1863,
                  "id": 12250,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_decode_address_fromMemory": {
                  "entryPoint": 1971,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_array_uint136_dyn_fromMemory": {
                  "entryPoint": 2000,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 2145,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint136_$dyn_memory_ptrt_uint256_fromMemory": {
                  "entryPoint": 2182,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory": {
                  "entryPoint": 2406,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 2616,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_00a4856cd405d120cf9a0137dbcece84ecbe301664e8b1f382f9ad760cebc409__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_75f734113dfa6f453446d4f37ce54f235fdeedec101ae5c27cbf0958b768d046__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_87c75609d2efba568b00c7442679e76c5cb56f78d53aa8cdaaa9ad7d0cd20528__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_e75e5d818d3b36fb5c347de52391ac0301ffdae8d8720063773226e186361380__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 2642,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_allocation_size_array_address_dyn": {
                  "entryPoint": 2693,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint136": {
                  "entryPoint": 2731,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 2777,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 2804,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 2839,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 2873,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 2903,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 2925,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 2947,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:8163:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "74:117:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "84:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "99:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "93:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "93:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "84:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "169:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "178:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "181:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "171:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "171:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "171:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "128:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "139:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "154:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "159:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "150:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "150:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "163:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "146:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "146:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "135:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "135:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "125:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "125:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "118:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "118:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "115:70:64"
                            }
                          ]
                        },
                        "name": "abi_decode_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "53:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "64:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "271:736:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "320:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "329:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "332:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "322:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "322:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "322:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "299:6:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "307:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "295:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "295:17:64"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "314:3:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "291:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "291:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "284:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "284:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "281:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "345:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "361:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "355:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "355:13:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "349:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "377:14:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "387:4:64",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "381:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "400:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "467:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_address_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "427:39:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "427:43:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "411:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "411:60:64"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "404:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "480:16:64",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "493:3:64"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "484:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "512:3:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "517:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "505:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "505:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "505:15:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "529:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "540:3:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "545:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "536:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "536:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "529:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "557:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "572:6:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "580:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "568:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "568:15:64"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "561:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "637:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "646:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "649:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "639:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "639:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "639:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "606:6:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "618:1:64",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "621:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "614:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "614:10:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "602:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "602:23:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "627:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "598:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "598:32:64"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "632:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "595:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "595:41:64"
                              },
                              "nodeType": "YulIf",
                              "src": "592:61:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "662:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "671:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "666:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "681:12:64",
                              "value": {
                                "name": "i",
                                "nodeType": "YulIdentifier",
                                "src": "692:1:64"
                              },
                              "variables": [
                                {
                                  "name": "i_1",
                                  "nodeType": "YulTypedName",
                                  "src": "685:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "753:225:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "767:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "786:3:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "780:5:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "780:10:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "771:5:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "857:16:64",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "i",
                                                "nodeType": "YulIdentifier",
                                                "src": "866:1:64"
                                              },
                                              {
                                                "name": "i",
                                                "nodeType": "YulIdentifier",
                                                "src": "869:1:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "859:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "859:12:64"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "859:12:64"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "816:5:64"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "827:5:64"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "842:3:64",
                                                          "type": "",
                                                          "value": "136"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "847:1:64",
                                                          "type": "",
                                                          "value": "1"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "shl",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "838:3:64"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "838:11:64"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "851:1:64",
                                                      "type": "",
                                                      "value": "1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "834:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "834:19:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "823:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "823:31:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "eq",
                                            "nodeType": "YulIdentifier",
                                            "src": "813:2:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "813:42:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "806:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "806:50:64"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "803:70:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "893:3:64"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "898:5:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "886:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "886:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "886:18:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "917:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "928:3:64"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "933:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "924:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "924:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "917:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "949:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "960:3:64"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "965:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "956:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "956:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "949:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "713:3:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "718:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "710:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "710:11:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "722:22:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "724:18:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "735:3:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "740:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "731:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "731:11:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "724:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "706:3:64",
                                "statements": []
                              },
                              "src": "702:276:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "987:14:64",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "996:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "987:5:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_uint136_dyn_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "245:6:64",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "253:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "261:5:64",
                            "type": ""
                          }
                        ],
                        "src": "196:811:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1093:127:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1139:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1148:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1151:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1141:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1141:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1141:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1114:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1123:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1110:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1110:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1135:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1106:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1106:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1103:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1164:50:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1204:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1174:29:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1174:40:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1164:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1059:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1070:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1082:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1012:208:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1390:1065:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1436:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1445:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1448:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1438:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1438:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1438:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1411:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1420:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1407:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1407:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1432:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1403:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1403:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1400:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1461:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1481:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1475:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1475:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1465:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1500:28:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1518:2:64",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1522:1:64",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1514:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1514:10:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1526:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1510:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1510:18:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1504:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1555:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1564:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1567:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1557:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1557:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1557:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1543:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1551:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1540:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1540:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1537:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1580:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1594:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1605:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1590:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1590:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1584:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1660:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1669:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1672:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1662:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1662:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1662:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1639:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1643:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1635:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1635:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1650:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1631:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1631:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1624:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1624:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1621:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1685:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1701:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1695:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1695:9:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1689:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1713:14:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1723:4:64",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "1717:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1736:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "1803:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_address_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "1763:39:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1763:43:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1747:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1747:60:64"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "1740:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1816:16:64",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "1829:3:64"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1820:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "1848:3:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1853:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1841:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1841:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1841:15:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1865:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "1876:3:64"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "1881:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1872:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1872:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "1865:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1893:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1908:2:64"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "1912:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1904:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1904:11:64"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "1897:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1969:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1978:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1981:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1971:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1971:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1971:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1938:2:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1946:1:64",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "1949:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1942:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1942:10:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1934:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1934:19:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "1955:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1930:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1930:28:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1960:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1927:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1927:41:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1924:61:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1994:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2003:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1998:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2058:135:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "2079:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "2114:3:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_address_fromMemory",
                                            "nodeType": "YulIdentifier",
                                            "src": "2084:29:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2084:34:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2072:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2072:47:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2072:47:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2132:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "2143:3:64"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2148:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2139:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2139:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "2132:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2164:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "2175:3:64"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2180:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2171:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2171:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "2164:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2024:1:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2027:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2021:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2021:9:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2031:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2033:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "2042:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2045:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2038:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2038:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "2033:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2017:3:64",
                                "statements": []
                              },
                              "src": "2013:180:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2202:15:64",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "2212:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2202:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2226:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2252:9:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "2263:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2248:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2248:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2242:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2242:25:64"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2230:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2296:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2305:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2308:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2298:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2298:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2298:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2282:8:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2292:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2279:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2279:16:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2276:36:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2321:84:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2375:9:64"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2386:8:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2371:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2371:24:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2397:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint136_dyn_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2331:39:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2331:74:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2321:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2414:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2434:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2445:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2430:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2430:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2424:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2424:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2414:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint136_$dyn_memory_ptrt_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1340:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1351:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1363:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1371:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1379:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1225:1230:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2567:887:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2613:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2622:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2625:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2615:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2615:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2615:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2588:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2597:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2584:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2584:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2609:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2580:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2580:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2577:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2638:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2658:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2652:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2652:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2642:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2677:28:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2695:2:64",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2699:1:64",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "2691:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2691:10:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2703:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "2687:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2687:18:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2681:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2732:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2741:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2744:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2734:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2734:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2734:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2720:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2728:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2717:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2717:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2714:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2757:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2771:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2782:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2767:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2767:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2761:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2837:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2846:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2849:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2839:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2839:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2839:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2816:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2820:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2812:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2812:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2827:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2808:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2808:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2801:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2801:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2798:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2862:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2878:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2872:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2872:9:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2866:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2904:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2906:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2906:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2906:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2896:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2900:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2893:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2893:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2890:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2935:14:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2945:4:64",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "2939:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2958:66:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "2999:2:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3003:4:64",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2995:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2995:13:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3014:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "3010:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3010:7:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2991:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2991:27:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "3020:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2987:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2987:36:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2971:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2971:53:64"
                              },
                              "variables": [
                                {
                                  "name": "array",
                                  "nodeType": "YulTypedName",
                                  "src": "2962:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "3040:5:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3047:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3033:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3033:17:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3033:17:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3096:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3105:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3108:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3098:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3098:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3098:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "3073:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3077:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3069:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3069:11:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "3082:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3065:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3065:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3087:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3062:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3062:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3059:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3121:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3130:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "3125:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3186:82:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "array",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3215:5:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3222:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3211:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3211:13:64"
                                            },
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "3226:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3207:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3207:22:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_2",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3245:2:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3249:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3241:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "3241:10:64"
                                                },
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3253:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3237:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3237:19:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "3231:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3231:26:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3200:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3200:58:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3200:58:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "3151:1:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3154:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3148:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3148:9:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "3158:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "3160:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "3169:1:64"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3172:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3165:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3165:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "3160:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "3144:3:64",
                                "statements": []
                              },
                              "src": "3140:128:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3298:58:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "array",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3327:5:64"
                                                },
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3334:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "3323:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3323:14:64"
                                            },
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "3339:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3319:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3319:23:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3344:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3312:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3312:34:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3312:34:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "3283:1:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3286:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3280:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3280:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3277:79:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3365:15:64",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "3375:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3365:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3389:59:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3433:9:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "3444:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3429:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3429:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3399:29:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3399:49:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3389:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2525:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2536:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2548:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2556:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2460:994:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3540:103:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3586:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3595:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3598:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3588:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3588:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3588:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3561:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3570:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3557:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3557:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3582:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3553:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3553:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3550:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3611:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3627:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3621:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3621:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3611:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3506:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3517:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3529:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3459:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3861:276:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3871:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3883:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3894:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3879:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3879:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3871:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3914:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3925:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3907:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3907:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3907:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3952:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3963:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3948:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3948:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3968:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3941:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3941:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3941:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3995:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4006:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3991:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3991:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4011:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3984:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3984:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3984:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4038:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4049:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4034:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4034:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4054:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4027:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4027:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4027:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4081:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4092:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4077:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4077:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "4102:6:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4118:3:64",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4123:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "4114:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4114:11:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4127:1:64",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "4110:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4110:19:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4098:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4098:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4070:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4070:61:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4070:61:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3798:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3809:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3817:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3825:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3833:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3841:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3852:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3648:489:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4316:164:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4333:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4344:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4326:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4326:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4326:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4367:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4378:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4363:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4363:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4383:2:64",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4356:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4356:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4356:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4406:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4417:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4402:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4402:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f415252415953",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4422:16:64",
                                    "type": "",
                                    "value": "INVALID_ARRAYS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4395:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4395:44:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4395:44:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4448:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4460:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4471:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4456:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4456:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4448:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_00a4856cd405d120cf9a0137dbcece84ecbe301664e8b1f382f9ad760cebc409__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4293:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4307:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4142:338:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4659:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4676:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4687:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4669:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4669:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4669:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4710:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4721:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4706:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4706:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4726:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4699:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4699:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4699:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4749:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4760:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4745:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4745:18:64"
                                  },
                                  {
                                    "hexValue": "5a45524f5f41444452455353",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4765:14:64",
                                    "type": "",
                                    "value": "ZERO_ADDRESS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4738:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4738:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4738:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4789:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4801:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4812:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4797:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4797:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4789:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4636:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4650:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4485:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5000:171:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5017:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5028:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5010:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5010:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5010:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5051:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5062:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5047:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5047:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5067:2:64",
                                    "type": "",
                                    "value": "21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5040:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5040:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5040:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5090:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5101:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5086:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5086:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f544f4b454e535f4c454e475448",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5106:23:64",
                                    "type": "",
                                    "value": "INVALID_TOKENS_LENGTH"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5079:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5079:51:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5079:51:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5139:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5151:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5162:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5147:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5147:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5139:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_75f734113dfa6f453446d4f37ce54f235fdeedec101ae5c27cbf0958b768d046__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4977:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4991:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4826:345:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5350:164:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5367:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5378:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5360:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5360:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5360:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5401:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5412:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5397:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5397:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5417:2:64",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5390:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5390:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5390:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5440:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5451:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5436:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5436:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f574549474854",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5456:16:64",
                                    "type": "",
                                    "value": "INVALID_WEIGHT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5429:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5429:44:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5429:44:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5482:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5494:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5505:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5490:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5490:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5482:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_87c75609d2efba568b00c7442679e76c5cb56f78d53aa8cdaaa9ad7d0cd20528__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5327:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5341:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5176:338:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5693:166:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5710:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5721:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5703:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5703:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5703:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5744:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5755:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5740:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5740:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5760:2:64",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5733:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5733:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5733:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5783:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5794:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5779:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5779:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f535741505f464545",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5799:18:64",
                                    "type": "",
                                    "value": "INVALID_SWAP_FEE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5772:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5772:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5772:46:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5827:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5839:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5850:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5835:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5835:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5827:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5670:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5684:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5519:340:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6038:166:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6055:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6066:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6048:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6048:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6048:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6089:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6100:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6085:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6085:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6105:2:64",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6078:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6078:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6078:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6128:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6139:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6124:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6124:18:64"
                                  },
                                  {
                                    "hexValue": "4d41585f544f54414c5f574549474854",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6144:18:64",
                                    "type": "",
                                    "value": "MAX_TOTAL_WEIGHT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6117:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6117:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6117:46:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6172:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6184:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6195:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6180:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6180:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6172:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e75e5d818d3b36fb5c347de52391ac0301ffdae8d8720063773226e186361380__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6015:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6029:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5864:340:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6310:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6320:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6332:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6343:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6328:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6328:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6320:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6362:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6373:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6355:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6355:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6355:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6279:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6290:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6301:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6209:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6436:230:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6446:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6462:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6456:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6456:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "6446:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6474:58:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "6496:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "6512:4:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6518:2:64",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6508:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6508:13:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6527:2:64",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "6523:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6523:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6504:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6504:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6492:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6492:40:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "6478:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6607:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "6609:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6609:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6609:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6550:10:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6570:2:64",
                                                "type": "",
                                                "value": "64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6574:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "6566:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6566:10:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6578:1:64",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "6562:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6562:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "6547:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6547:34:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6586:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6598:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "6583:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6583:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "6544:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6544:62:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6541:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6645:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "6649:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6638:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6638:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6638:22:64"
                            }
                          ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "6416:4:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "6425:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6391:275:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6740:114:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6784:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "6786:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6786:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6786:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6756:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6772:2:64",
                                            "type": "",
                                            "value": "64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6776:1:64",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "6768:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6768:10:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6780:1:64",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6764:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6764:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6753:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6753:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6750:56:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6815:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6831:1:64",
                                        "type": "",
                                        "value": "5"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "6834:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "6827:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6827:14:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6843:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6823:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6823:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "6815:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_array_address_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "6720:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "6731:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6671:183:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6907:190:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6917:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6935:3:64",
                                        "type": "",
                                        "value": "136"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6940:1:64",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "6931:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6931:11:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6944:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "6927:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6927:19:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6921:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6955:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "6970:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6973:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "6966:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6966:10:64"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6959:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6985:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "7000:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7003:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "6996:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6996:10:64"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6989:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7040:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "7042:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7042:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7042:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7021:3:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7030:2:64"
                                      },
                                      {
                                        "name": "y_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7034:3:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7026:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7026:12:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7018:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7018:21:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7015:47:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7071:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7082:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7087:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7078:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7078:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "7071:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint136",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "6890:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "6893:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "6899:3:64",
                            "type": ""
                          }
                        ],
                        "src": "6859:238:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7150:80:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7177:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "7179:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7179:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7179:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "7166:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "7173:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "7169:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7169:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7163:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7163:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7160:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7208:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "7219:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "7222:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7215:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7215:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "7208:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "7133:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "7136:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "7142:3:64",
                            "type": ""
                          }
                        ],
                        "src": "7102:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7281:171:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7312:111:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7333:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "7340:3:64",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "7345:10:64",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "7336:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7336:20:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7326:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7326:31:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7326:31:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7377:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7380:4:64",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7370:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7370:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7370:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7405:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7408:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7398:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7398:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7398:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "7301:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7294:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7294:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7291:132:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7432:14:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "7441:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "7444:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "7437:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7437:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "7432:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "7266:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "7269:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "7275:1:64",
                            "type": ""
                          }
                        ],
                        "src": "7235:217:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7509:116:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7568:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "7570:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7570:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7570:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "7540:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "7533:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7533:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "7526:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7526:17:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "7548:1:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7559:1:64",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "7555:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7555:6:64"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "7563:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "7551:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7551:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7545:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7545:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "7522:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7522:45:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7519:71:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7599:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "7614:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "7617:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "7610:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7610:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "7599:7:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "7488:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "7491:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "7497:7:64",
                            "type": ""
                          }
                        ],
                        "src": "7457:168:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7677:88:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7708:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "7710:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7710:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7710:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7693:5:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7704:1:64",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "7700:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7700:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "7690:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7690:17:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7687:43:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7739:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7750:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7757:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7746:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7746:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "7739:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "7659:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "7669:3:64",
                            "type": ""
                          }
                        ],
                        "src": "7630:135:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7802:95:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7819:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7826:3:64",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7831:10:64",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "7822:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7822:20:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7812:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7812:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7812:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7859:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7862:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7852:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7852:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7852:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7883:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7886:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "7876:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7876:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7876:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "7770:127:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7934:95:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7951:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7958:3:64",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7963:10:64",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "7954:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7954:20:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7944:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7944:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7944:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7991:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7994:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7984:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7984:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7984:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8015:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8018:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "8008:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8008:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8008:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "7902:127:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8066:95:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8083:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8090:3:64",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8095:10:64",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "8086:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8086:20:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8076:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8076:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8076:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8123:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8126:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8116:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8116:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8116:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8147:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8150:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "8140:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8140:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8140:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "8034:127:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_array_uint136_dyn_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_address_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let src := add(offset, _2)\n        if gt(add(add(offset, shl(5, _1)), _2), end) { revert(0, 0) }\n        let i := 0\n        let i_1 := i\n        for { } lt(i_1, _1) { i_1 := add(i_1, 1) }\n        {\n            let value := mload(src)\n            if iszero(eq(value, and(value, sub(shl(136, 1), 1)))) { revert(i, i) }\n            mstore(dst, value)\n            dst := add(dst, _2)\n            src := add(src, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint136_$dyn_memory_ptrt_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        let _4 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_address_dyn(_3))\n        let dst_1 := dst\n        mstore(dst, _3)\n        dst := add(dst, _4)\n        let src := add(_2, _4)\n        if gt(add(add(_2, shl(5, _3)), _4), dataEnd) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _3) { i := add(i, 1) }\n        {\n            mstore(dst, abi_decode_address_fromMemory(src))\n            dst := add(dst, _4)\n            src := add(src, _4)\n        }\n        value0 := dst_1\n        let offset_1 := mload(add(headStart, _4))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_array_uint136_dyn_fromMemory(add(headStart, offset_1), dataEnd)\n        value2 := mload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0x20\n        let array := allocate_memory(add(and(add(_3, 0x1f), not(31)), _4))\n        mstore(array, _3)\n        if gt(add(add(_2, _3), _4), dataEnd) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _3) { i := add(i, _4) }\n        {\n            mstore(add(add(array, i), _4), mload(add(add(_2, i), _4)))\n        }\n        if gt(i, _3)\n        {\n            mstore(add(add(array, _3), _4), 0)\n        }\n        value0 := array\n        value1 := abi_decode_address_fromMemory(add(headStart, _4))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_00a4856cd405d120cf9a0137dbcece84ecbe301664e8b1f382f9ad760cebc409__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"INVALID_ARRAYS\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"ZERO_ADDRESS\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_75f734113dfa6f453446d4f37ce54f235fdeedec101ae5c27cbf0958b768d046__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"INVALID_TOKENS_LENGTH\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_87c75609d2efba568b00c7442679e76c5cb56f78d53aa8cdaaa9ad7d0cd20528__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"INVALID_WEIGHT\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"INVALID_SWAP_FEE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_e75e5d818d3b36fb5c347de52391ac0301ffdae8d8720063773226e186361380__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"MAX_TOTAL_WEIGHT\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_array_address_dyn(length) -> size\n    {\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function checked_add_t_uint136(x, y) -> sum\n    {\n        let _1 := sub(shl(136, 1), 1)\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101406040523480156200001257600080fd5b5060405162003bcf38038062003bcf833981016040819052620000359162000966565b4660805262000112604080518082018252600e81526d29bab9b434902628102a37b5b2b760911b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b60a0818152505060008060008480602001905181019062000134919062000886565b9250925092508151835114620001825760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f41525241595360901b60448201526064015b60405180910390fd5b806200019a620f4240670de0b6b3a764000062000af4565b11158015620001bd5750620001b9600a670de0b6b3a764000062000af4565b8111155b620001fe5760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f535741505f46454560801b604482015260640162000179565b82516002111580156200021357506008835111155b620002615760405162461bcd60e51b815260206004820152601560248201527f494e56414c49445f544f4b454e535f4c454e4754480000000000000000000000604482015260640162000179565b60005b83518110156200050a5760006001600160a01b03168482815181106200028e576200028e62000b6d565b60200260200101516001600160a01b03161415620002de5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015260640162000179565b828181518110620002f357620002f362000b6d565b60200260200101516001600160881b0316670de0b6b3a7640000111580156200035557506200032c670de0b6b3a7640000603262000b17565b83828151811062000341576200034162000b6d565b60200260200101516001600160881b031611155b620003945760405162461bcd60e51b815260206004820152600e60248201526d1253959053125117d5d15251d21560921b604482015260640162000179565b604051806040016040528060006001600160781b03168152602001848381518110620003c457620003c462000b6d565b60200260200101516001600160881b031681525060086000868481518110620003f157620003f162000b6d565b6020908102919091018101516001600160a01b0316825281810192909252604001600020825192909101516001600160881b0316600160781b026001600160781b03909216919091179055835160059085908390811062000456576200045662000b6d565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790558251839082908110620004a857620004a862000b6d565b602090810291909101015160048054600090620004d09084906001600160881b031662000aab565b92506101000a8154816001600160881b0302191690836001600160881b031602179055508080620005019062000b39565b91505062000264565b5062000520670de0b6b3a7640000603262000b17565b6004546001600160881b031611156200056f5760405162461bcd60e51b815260206004820152601060248201526f13505617d513d5105317d5d15251d21560821b604482015260640162000179565b6200059060006200058a670de0b6b3a7640000606462000b17565b62000747565b8060c08181525050836001600160a01b031663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b158015620005d257600080fd5b505afa158015620005e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200060d919062000a38565b600681905550836001600160a01b0316630c0a0cd26040518163ffffffff1660e01b815260040160206040518083038186803b1580156200064d57600080fd5b505afa15801562000662573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000688919062000861565b6001600160a01b031660e0816001600160a01b031660601b81525050836001600160a01b0316634da318276040518163ffffffff1660e01b815260040160206040518083038186803b158015620006de57600080fd5b505afa158015620006f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000719919062000861565b6001600160601b0319606091821b81166101005294901b90931661012052505060016007555062000b999050565b806000808282546200075a919062000ad9565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80516001600160a01b0381168114620007cb57600080fd5b919050565b600082601f830112620007e257600080fd5b81516020620007fb620007f58362000a85565b62000a52565b80838252828201915082860187848660051b89010111156200081c57600080fd5b6000805b86811015620008535782516001600160881b038116811462000840578283fd5b8552938501939185019160010162000820565b509198975050505050505050565b6000602082840312156200087457600080fd5b6200087f82620007b3565b9392505050565b6000806000606084860312156200089c57600080fd5b83516001600160401b0380821115620008b457600080fd5b818601915086601f830112620008c957600080fd5b81516020620008dc620007f58362000a85565b8083825282820191508286018b848660051b8901011115620008fd57600080fd5b600096505b848710156200092b576200091681620007b3565b83526001969096019591830191830162000902565b50918901519197509093505050808211156200094657600080fd5b506200095586828701620007d0565b925050604084015190509250925092565b600080604083850312156200097a57600080fd5b82516001600160401b03808211156200099257600080fd5b818501915085601f830112620009a757600080fd5b815181811115620009bc57620009bc62000b83565b60209150620009d4601f8201601f1916830162000a52565b8181528783838601011115620009e957600080fd5b60005b8281101562000a09578481018401518282018501528301620009ec565b8281111562000a1b5760008484840101525b50945062000a2d9050858201620007b3565b925050509250929050565b60006020828403121562000a4b57600080fd5b5051919050565b604051601f8201601f191681016001600160401b038111828210171562000a7d5762000a7d62000b83565b604052919050565b60006001600160401b0382111562000aa15762000aa162000b83565b5060051b60200190565b60006001600160881b0382811684821680830382111562000ad05762000ad062000b57565b01949350505050565b6000821982111562000aef5762000aef62000b57565b500190565b60008262000b1257634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161562000b345762000b3462000b57565b500290565b600060001982141562000b505762000b5062000b57565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60805160a05160c05160e05160601c6101005160601c6101205160601c612fb362000c1c6000396000818161057a01526118ac0152600081816103ec01528181612100015281816121e301526122bf0152600061027601526000818161041301528181611b0a015261203f01526000610ff601526000610ecd0152612fb36000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806367e4ac2c11610104578063a69840a8116100a2578063c14ad80211610071578063c14ad8021461056c578063cf58879a14610575578063d505accf1461059c578063dd62ed3e146105af57600080fd5b8063a69840a81461050c578063a8f1f52e14610533578063a9059cbb14610546578063af8c09bf1461055957600080fd5b80637ecebe00116100de5780637ecebe00146104905780638ae45441146104b057806392bc3219146104c657806395d89b41146104d057600080fd5b806367e4ac2c1461044857806370a082311461045d5780637ba0e2e71461047d57600080fd5b806330adf81f1161017c578063499a3c501161014b578063499a3c50146103d45780634da31827146103e757806354cf2aeb1461040e578063627dd56a1461043557600080fd5b806330adf81f146102f9578063313ce567146103205780633644e5151461033a578063469e90671461034257600080fd5b80630c0a0cd2116101b85780630c0a0cd21461027157806318160ddd146102bd57806323b872dd146102c65780632a07b6c7146102d957600080fd5b8063053da1c8146101df57806306fdde0314610205578063095ea7b31461024e575b600080fd5b6101f26101ed366004612b1a565b6105da565b6040519081526020015b60405180910390f35b6102416040518060400160405280600e81526020017f5375736869204c5020546f6b656e00000000000000000000000000000000000081525081565b6040516101fc9190612dbc565b61026161025c3660046129fd565b610982565b60405190151581526020016101fc565b6102987f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fc565b6101f260005481565b6102616102d4366004612a62565b6109fc565b6102ec6102e7366004612b1a565b610b48565b6040516101fc9190612cc9565b6101f27f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610328601281565b60405160ff90911681526020016101fc565b6101f2610ec9565b61039b6103503660046127d1565b6008602052600090815260409020546effffffffffffffffffffffffffffff8116906f01000000000000000000000000000000900470ffffffffffffffffffffffffffffffffff1682565b604080516effffffffffffffffffffffffffffff909316835270ffffffffffffffffffffffffffffffffff9091166020830152016101fc565b6101f26103e2366004612b1a565b611018565b6102987f000000000000000000000000000000000000000000000000000000000000000081565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b6101f2610443366004612b1a565b61101f565b610450611349565b6040516101fc9190612c6f565b6101f261046b3660046127d1565b60016020526000908152604090205481565b6101f261048b366004612b1a565b6113b8565b6101f261049e3660046127d1565b60036020526000908152604090205481565b6104b86116da565b6040516101fc929190612d2e565b6104ce6118aa565b005b6102416040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b6101f27f54726964656e743a496e6465780000000000000000000000000000000000000081565b6101f2610541366004612b1a565b61194d565b6102616105543660046129fd565b611983565b6101f2610567366004612b1a565b611a08565b6101f260065481565b6102987f000000000000000000000000000000000000000000000000000000000000000081565b6104ce6105aa366004612aa3565b611c8b565b6101f26105bd366004612a29565b600260209081526000928352604080842090915290825290205481565b600060075460011461064d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600260075560008080808080610665888a018a612850565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260086020526040808220928816825290208154979d50959b5093995091975095509350916106d3906effffffffffffffffffffffffffffff166106ce6002670de0b6b3a7640000612de7565b611fdd565b84111561073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4d41585f494e5f524154494f00000000000000000000000000000000000000006044820152606401610644565b815481546107929186916effffffffffffffffffffffffffffff8083169270ffffffffffffffffffffffffffffffffff6f0100000000000000000000000000000091829004811693928316929190910416612028565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152909950339063bd50c7b1906107d1908690600401612dbc565b600060405180830381600087803b1580156107eb57600080fd5b505af11580156107ff573d6000803e3d6000fd5b505083546effffffffffffffffffffffffffffff16860191506108239050896120b2565b101561088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f524543454956454400000000000000000000000000000000000000006044820152606401610644565b81546effffffffffffffffffffffffffffff808216860181167fffffffffffffffffffffffffffffffffff00000000000000000000000000000092831617845582548082168c900390911691161781556108e7878a888861217c565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062878d604051610966929190918252602082015260400190565b60405180910390a4505060016007555094979650505050505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109ea9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610a995773ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915281208054849290610a93908490612e38565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604081208054849290610ace908490612e38565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260016020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b369086815260200190565b60405180910390a35060019392505050565b6060600754600114610bb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610644565b600260075560008080610bcb858701876129bf565b9250925092506000610bdf82600054612322565b60055490915067ffffffffffffffff811115610bfd57610bfd612f29565b604051908082528060200260200182016040528015610c4257816020015b6040805180820190915260008082526020820152815260200190600190039081610c1b5790505b509450610c4f308361235c565b60005b600554811015610eb857600060058281548110610c7157610c71612efa565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16808352600890915260408220549092506effffffffffffffffffffffffffffff1690610cc18583611fdd565b90506effffffffffffffffffffffffffffff8116610d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5a45524f5f4f55540000000000000000000000000000000000000000000000006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260086020526040902080547fffffffffffffffffffffffffffffffffff00000000000000000000000000000081166effffffffffffffffffffffffffffff918216849003821617909155610db090849083168a8a61217c565b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001826effffffffffffffffffffffffffffff16815250898581518110610dfe57610dfe612efa565b60200260200101819052508773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3dd1df88dc92e2788892542d81f999d720a44b4c127065d45c128f4f59fdc3738584604051610e9a92919073ffffffffffffffffffffffffffffffffffffffff9290921682526effffffffffffffffffffffffffffff16602082015260400190565b60405180910390a35050508080610eb090612e4f565b915050610c52565b505060016007555091949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000004614610ff35750604080518082018252600e81527f5375736869204c5020546f6b656e00000000000000000000000000000000000060209182015281518083018352600181527f31000000000000000000000000000000000000000000000000000000000000009082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000806000fd5b600060075460011461108d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610644565b60026007556000808080806110a4878901896127ee565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260086020526040808220928716825290208154969b5094995092975090955093509161110b906effffffffffffffffffffffffffffff166106ce6002670de0b6b3a7640000612de7565b831115611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4d41585f494e5f524154494f00000000000000000000000000000000000000006044820152606401610644565b815481546111ca9185916effffffffffffffffffffffffffffff8083169270ffffffffffffffffffffffffffffffffff6f0100000000000000000000000000000091829004811693928316929190910416612028565b82549098506effffffffffffffffffffffffffffff1683016111eb886120b2565b1015611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f524543454956454400000000000000000000000000000000000000006044820152606401610644565b81546effffffffffffffffffffffffffffff808216850181167fffffffffffffffffffffffffffffffffff00000000000000000000000000000092831617845582548082168b900390911691161781556112af8689878761217c565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062868c60405161132e929190918252602082015260400190565b60405180910390a45050600160075550939695505050505050565b606060058054806020026020016040519081016040528092919081815260200182805480156113ae57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611383575b5050505050905090565b6000600754600114611426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610644565b600260075560008061143a848601866129fd565b91509150600061144c82600054612322565b905060005b6005548110156116c15760006005828154811061147057611470612efa565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16808352600890915260408220549092506effffffffffffffffffffffffffffff1690816114c157846114ed565b6114ed856effffffffffffffffffffffffffffff16836effffffffffffffffffffffffffffff16611fdd565b905061150664e8d4a51000670de0b6b3a7640000612de7565b816effffffffffffffffffffffffffffff161015611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f42414c414e43450000000000000000000000000000000000000000006044820152606401610644565b8181016effffffffffffffffffffffffffffff1661159d846120b2565b1015611605576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f524543454956454400000000000000000000000000000000000000006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526008602090815260409182902080547fffffffffffffffffffffffffffffffffff00000000000000000000000000000081166effffffffffffffffffffffffffffff918216880182161790915582519384528516908301529189169133917ff9403b28cc8805935e0ce6943ed646d5fde3d1e14f6b398e85bfa2851d1b85f7910160405180910390a350505080806116b990612e4f565b915050611451565b506116cc83836123ef565b506001600755949350505050565b60055460609081908067ffffffffffffffff8111156116fb576116fb612f29565b604051908082528060200260200182016040528015611724578160200160208202803683370190505b5092508067ffffffffffffffff81111561174057611740612f29565b604051908082528060200260200182016040528015611769578160200160208202803683370190505b50915060005b818110156118a457600860006005838154811061178e5761178e612efa565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205484516effffffffffffffffffffffffffffff909116908590839081106117e8576117e8612efa565b602002602001018181525050600860006005838154811061180b5761180b612efa565b60009182526020808320919091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205483516f0100000000000000000000000000000090910470ffffffffffffffffffffffffffffffffff169084908390811061187a5761187a612efa565b70ffffffffffffffffffffffffffffffffff9092166020928302919091019091015260010161176f565b50509091565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b15801561191057600080fd5b505afa158015611924573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119489190612b8c565b600655565b6000808080808061196087890189612bc9565b945094509450945094506119778585858585612028565b98975050505050505050565b336000908152600160205260408120805483919083906119a4908490612e38565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109ea9086815260200190565b6000600754600114611a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610644565b60026007556000808080611a8c86880188612970565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260086020526040812080549154600454969a509498509296509094509092611b2e926effffffffffffffffffffffffffffff83169270ffffffffffffffffffffffffffffffffff6f0100000000000000000000000000000090910481169216867f000000000000000000000000000000000000000000000000000000000000000061245f565b8154909650611b66906effffffffffffffffffffffffffffff16611b5b6003670de0b6b3a7640000612de7565b6106ce906001612dcf565b861115611bcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d41585f4f55545f524154494f000000000000000000000000000000000000006044820152606401610644565b80546effffffffffffffffffffffffffffff808216889003167fffffffffffffffffffffffffffffffffff000000000000000000000000000000909116178155611c19308361235c565b611c258587868661217c565b6040805173ffffffffffffffffffffffffffffffffffffffff87811682526020820189905286169133917f3dd1df88dc92e2788892542d81f999d720a44b4c127065d45c128f4f59fdc373910160405180910390a3505060016007555091949350505050565b42841015611cf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610644565b6000611cff610ec9565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c92909190611d5a83612e4f565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611dfb9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611e84573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611eff57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611f65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e415455524500000000000000006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b600080611fea8385612dfb565b905060006120016002670de0b6b3a7640000612de7565b61200b9083612dcf565b905061201f670de0b6b3a764000082612de7565b95945050505050565b6000806120358584612322565b9050600061206d887f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a764000003611fdd565b9050600061207d88838a01612322565b9050600061208b828561250e565b9050670de0b6b3a76400008190036120a38882611fdd565b9b9a5050505050505050505050565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301523060248301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b15801561214457600080fd5b505afa158015612158573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f69190612b8c565b8015612265576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152306024830152838116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b15801561222657600080fd5b505af115801561223a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225e9190612ba5565b505061231c565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301528381166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401600060405180830381600087803b15801561230357600080fd5b505af1158015612317573d6000803e3d6000fd5b505050505b50505050565b600080612337670de0b6b3a764000085612dfb565b90506000612346600285612de7565b6123509083612dcf565b905061201f8482612de7565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081208054839290612391908490612e38565b909155505060008054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b806000808282546124009190612dcf565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016123e3565b60008061246c8786612322565b9050600061247a8588612e38565b905060006124888289612322565b905060006124a7826124a2670de0b6b3a764000087612322565b612631565b905060006124b5828d611fdd565b905060006124c3828e612e38565b90506000886124da88670de0b6b3a7640000612e38565b6124e49190612dfb565b90506124fc826106ce83670de0b6b3a7640000612e38565b9e9d5050505050505050505050505050565b60008260011115801561253f57506001612531670de0b6b3a76400006002612dfb565b61253b9190612e38565b8311155b6125a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f494e56414c49445f4241534500000000000000000000000000000000000000006044820152606401610644565b6000670de0b6b3a76400006125ba8185612de7565b6125c49190612dfb565b905060006125d28285612e38565b905060006125ec866124a2670de0b6b3a764000086612de7565b9050816125f7578093505b600061261a87846126156402540be400670de0b6b3a7640000612de7565b6126a7565b90506126268282611fdd565b979650505050505050565b600061263e600283612e88565b61265057670de0b6b3a7640000612652565b825b905061265f600283612de7565b91505b8115612686576126728380612dfb565b925061267f600283612de7565b9150612662565b612691600283612e88565b156109f6576126a08382612dfb565b9392505050565b60008281806126be87670de0b6b3a7640000612797565b670de0b6b3a76400009550909250905083600060015b87831061278a5760006126ef670de0b6b3a764000083612dfb565b905060008061270f8961270a670de0b6b3a764000086612e38565b612797565b91509150612721866106ce848b611fdd565b955061272d8684612322565b95508561273c5750505061278a565b8615612746579315935b8015612750579315935b841561276757612760868b612e38565b9950612774565b612771868b612dcf565b99505b505050808061278290612e4f565b9150506126d4565b5050505050509392505050565b6000808284106127ad57505080820360006127b5565b505081810360015b9250929050565b803580151581146127cc57600080fd5b919050565b6000602082840312156127e357600080fd5b81356126a081612f58565b600080600080600060a0868803121561280657600080fd5b853561281181612f58565b9450602086013561282181612f58565b9350604086013561283181612f58565b925061283f606087016127bc565b949793965091946080013592915050565b60008060008060008060c0878903121561286957600080fd5b863561287481612f58565b9550602087013561288481612f58565b9450604087013561289481612f58565b93506128a2606088016127bc565b92506080870135915060a087013567ffffffffffffffff808211156128c657600080fd5b818901915089601f8301126128da57600080fd5b8135818111156128ec576128ec612f29565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561293257612932612f29565b816040528281528c602084870101111561294b57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b6000806000806080858703121561298657600080fd5b843561299181612f58565b935060208501356129a181612f58565b92506129af604086016127bc565b9396929550929360600135925050565b6000806000606084860312156129d457600080fd5b83356129df81612f58565b92506129ed602085016127bc565b9150604084013590509250925092565b60008060408385031215612a1057600080fd5b8235612a1b81612f58565b946020939093013593505050565b60008060408385031215612a3c57600080fd5b8235612a4781612f58565b91506020830135612a5781612f58565b809150509250929050565b600080600060608486031215612a7757600080fd5b8335612a8281612f58565b92506020840135612a9281612f58565b929592945050506040919091013590565b600080600080600080600060e0888a031215612abe57600080fd5b8735612ac981612f58565b96506020880135612ad981612f58565b95506040880135945060608801359350608088013560ff81168114612afd57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060208385031215612b2d57600080fd5b823567ffffffffffffffff80821115612b4557600080fd5b818501915085601f830112612b5957600080fd5b813581811115612b6857600080fd5b866020828501011115612b7a57600080fd5b60209290920196919550909350505050565b600060208284031215612b9e57600080fd5b5051919050565b60008060408385031215612bb857600080fd5b505080516020909101519092909150565b600080600080600060a08688031215612be157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000815180845260005b81811015612c2a57602081850181015186830182015201612c0e565b81811115612c3c576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020808252825182820181905260009190848201906040850190845b81811015612cbd57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612c8b565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015612d21578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101612ce6565b5091979650505050505050565b604080825283519082018190526000906020906060840190828701845b82811015612d6757815184529284019290840190600101612d4b565b5050508381038285015284518082528583019183019060005b81811015612daf57835170ffffffffffffffffffffffffffffffffff1683529284019291840191600101612d80565b5090979650505050505050565b6020815260006126a06020830184612c04565b60008219821115612de257612de2612e9c565b500190565b600082612df657612df6612ecb565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e3357612e33612e9c565b500290565b600082821015612e4a57612e4a612e9c565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612e8157612e81612e9c565b5060010190565b600082612e9757612e97612ecb565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114612f7a57600080fd5b5056fea26469706673582212200010f5602b54ecd3b812beb54c93d5893ba55e850e19c6b4253f27507111877964736f6c63430008070033",
              "opcodes": "PUSH2 0x140 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x3BCF CODESIZE SUB DUP1 PUSH3 0x3BCF DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x966 JUMP JUMPDEST CHAINID PUSH1 0x80 MSTORE PUSH3 0x112 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x29BAB9B434902628102A37B5B2B7 PUSH1 0x91 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x134 SWAP2 SWAP1 PUSH3 0x886 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 MLOAD DUP4 MLOAD EQ PUSH3 0x182 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x494E56414C49445F415252415953 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH3 0x19A PUSH3 0xF4240 PUSH8 0xDE0B6B3A7640000 PUSH3 0xAF4 JUMP JUMPDEST GT ISZERO DUP1 ISZERO PUSH3 0x1BD JUMPI POP PUSH3 0x1B9 PUSH1 0xA PUSH8 0xDE0B6B3A7640000 PUSH3 0xAF4 JUMP JUMPDEST DUP2 GT ISZERO JUMPDEST PUSH3 0x1FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x494E56414C49445F535741505F464545 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x179 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x2 GT ISZERO DUP1 ISZERO PUSH3 0x213 JUMPI POP PUSH1 0x8 DUP4 MLOAD GT ISZERO JUMPDEST PUSH3 0x261 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F544F4B454E535F4C454E4754480000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x179 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH3 0x50A JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x28E JUMPI PUSH3 0x28E PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x2DE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A45524F5F41444452455353 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x179 JUMP JUMPDEST DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH3 0x2F3 JUMPI PUSH3 0x2F3 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND PUSH8 0xDE0B6B3A7640000 GT ISZERO DUP1 ISZERO PUSH3 0x355 JUMPI POP PUSH3 0x32C PUSH8 0xDE0B6B3A7640000 PUSH1 0x32 PUSH3 0xB17 JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x341 JUMPI PUSH3 0x341 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND GT ISZERO JUMPDEST PUSH3 0x394 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x1253959053125117D5D15251D215 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x179 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x3C4 JUMPI PUSH3 0x3C4 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND DUP2 MSTORE POP PUSH1 0x8 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x3F1 JUMPI PUSH3 0x3F1 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP3 MLOAD SWAP3 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND PUSH1 0x1 PUSH1 0x78 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 MLOAD PUSH1 0x5 SWAP1 DUP6 SWAP1 DUP4 SWAP1 DUP2 LT PUSH3 0x456 JUMPI PUSH3 0x456 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 SLOAD PUSH1 0x1 DUP2 ADD DUP5 SSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE SWAP2 SWAP1 SWAP3 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP3 MLOAD DUP4 SWAP1 DUP3 SWAP1 DUP2 LT PUSH3 0x4A8 JUMPI PUSH3 0x4A8 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH3 0x4D0 SWAP1 DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND PUSH3 0xAAB JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP1 DUP1 PUSH3 0x501 SWAP1 PUSH3 0xB39 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x264 JUMP JUMPDEST POP PUSH3 0x520 PUSH8 0xDE0B6B3A7640000 PUSH1 0x32 PUSH3 0xB17 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND GT ISZERO PUSH3 0x56F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x13505617D513D5105317D5D15251D215 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x179 JUMP JUMPDEST PUSH3 0x590 PUSH1 0x0 PUSH3 0x58A PUSH8 0xDE0B6B3A7640000 PUSH1 0x64 PUSH3 0xB17 JUMP JUMPDEST PUSH3 0x747 JUMP JUMPDEST DUP1 PUSH1 0xC0 DUP2 DUP2 MSTORE POP POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x5D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x5E7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x60D SWAP2 SWAP1 PUSH3 0xA38 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0A0CD2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x64D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x662 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x688 SWAP2 SWAP1 PUSH3 0x861 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xE0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4DA31827 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x6DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x6F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x719 SWAP2 SWAP1 PUSH3 0x861 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH2 0x100 MSTORE SWAP5 SWAP1 SHL SWAP1 SWAP4 AND PUSH2 0x120 MSTORE POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP PUSH3 0xB99 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH3 0x75A SWAP2 SWAP1 PUSH3 0xAD9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x7CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x7E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH3 0x7FB PUSH3 0x7F5 DUP4 PUSH3 0xA85 JUMP JUMPDEST PUSH3 0xA52 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP8 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH3 0x81C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH3 0x853 JUMPI DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x840 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MSTORE SWAP4 DUP6 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x820 JUMP JUMPDEST POP SWAP2 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x87F DUP3 PUSH3 0x7B3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x8B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x8C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH3 0x8DC PUSH3 0x7F5 DUP4 PUSH3 0xA85 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP12 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH3 0x8FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH3 0x92B JUMPI PUSH3 0x916 DUP2 PUSH3 0x7B3 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH3 0x902 JUMP JUMPDEST POP SWAP2 DUP10 ADD MLOAD SWAP2 SWAP8 POP SWAP1 SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH3 0x946 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x955 DUP7 DUP3 DUP8 ADD PUSH3 0x7D0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x97A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x992 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x9A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x9BC JUMPI PUSH3 0x9BC PUSH3 0xB83 JUMP JUMPDEST PUSH1 0x20 SWAP2 POP PUSH3 0x9D4 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD PUSH3 0xA52 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP8 DUP4 DUP4 DUP7 ADD ADD GT ISZERO PUSH3 0x9E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0xA09 JUMPI DUP5 DUP2 ADD DUP5 ADD MLOAD DUP3 DUP3 ADD DUP6 ADD MSTORE DUP4 ADD PUSH3 0x9EC JUMP JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0xA1B JUMPI PUSH1 0x0 DUP5 DUP5 DUP5 ADD ADD MSTORE JUMPDEST POP SWAP5 POP PUSH3 0xA2D SWAP1 POP DUP6 DUP3 ADD PUSH3 0x7B3 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0xA7D JUMPI PUSH3 0xA7D PUSH3 0xB83 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH3 0xAA1 JUMPI PUSH3 0xAA1 PUSH3 0xB83 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB DUP3 DUP2 AND DUP5 DUP3 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH3 0xAD0 JUMPI PUSH3 0xAD0 PUSH3 0xB57 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0xAEF JUMPI PUSH3 0xAEF PUSH3 0xB57 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH3 0xB12 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH3 0xB34 JUMPI PUSH3 0xB34 PUSH3 0xB57 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH3 0xB50 JUMPI PUSH3 0xB50 PUSH3 0xB57 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x2FB3 PUSH3 0xC1C PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x57A ADD MSTORE PUSH2 0x18AC ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x3EC ADD MSTORE DUP2 DUP2 PUSH2 0x2100 ADD MSTORE DUP2 DUP2 PUSH2 0x21E3 ADD MSTORE PUSH2 0x22BF ADD MSTORE PUSH1 0x0 PUSH2 0x276 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x413 ADD MSTORE DUP2 DUP2 PUSH2 0x1B0A ADD MSTORE PUSH2 0x203F ADD MSTORE PUSH1 0x0 PUSH2 0xFF6 ADD MSTORE PUSH1 0x0 PUSH2 0xECD ADD MSTORE PUSH2 0x2FB3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x67E4AC2C GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xA69840A8 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xC14AD802 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x56C JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x575 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x59C JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x50C JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x533 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x546 JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x490 JUMPI DUP1 PUSH4 0x8AE45441 EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x448 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x45D JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x47D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x30ADF81F GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x3D4 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x3E7 JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0x627DD56A EQ PUSH2 0x435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x2F9 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x320 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x33A JUMPI DUP1 PUSH4 0x469E9067 EQ PUSH2 0x342 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2C6 JUMPI DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x24E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x5DA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x241 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FC SWAP2 SWAP1 PUSH2 0x2DBC JUMP JUMPDEST PUSH2 0x261 PUSH2 0x25C CALLDATASIZE PUSH1 0x4 PUSH2 0x29FD JUMP JUMPDEST PUSH2 0x982 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FC JUMP JUMPDEST PUSH2 0x298 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FC JUMP JUMPDEST PUSH2 0x1F2 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x261 PUSH2 0x2D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A62 JUMP JUMPDEST PUSH2 0x9FC JUMP JUMPDEST PUSH2 0x2EC PUSH2 0x2E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0xB48 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FC SWAP2 SWAP1 PUSH2 0x2CC9 JUMP JUMPDEST PUSH2 0x1F2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x328 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FC JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0xEC9 JUMP JUMPDEST PUSH2 0x39B PUSH2 0x350 CALLDATASIZE PUSH1 0x4 PUSH2 0x27D1 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP1 PUSH16 0x1000000000000000000000000000000 SWAP1 DIV PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1FC JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x3E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x1018 JUMP JUMPDEST PUSH2 0x298 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x443 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x101F JUMP JUMPDEST PUSH2 0x450 PUSH2 0x1349 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FC SWAP2 SWAP1 PUSH2 0x2C6F JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x46B CALLDATASIZE PUSH1 0x4 PUSH2 0x27D1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x13B8 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x49E CALLDATASIZE PUSH1 0x4 PUSH2 0x27D1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x4B8 PUSH2 0x16DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FC SWAP3 SWAP2 SWAP1 PUSH2 0x2D2E JUMP JUMPDEST PUSH2 0x4CE PUSH2 0x18AA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x241 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH32 0x54726964656E743A496E64657800000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x541 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x194D JUMP JUMPDEST PUSH2 0x261 PUSH2 0x554 CALLDATASIZE PUSH1 0x4 PUSH2 0x29FD JUMP JUMPDEST PUSH2 0x1983 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x567 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x1A08 JUMP JUMPDEST PUSH2 0x1F2 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x298 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x4CE PUSH2 0x5AA CALLDATASIZE PUSH1 0x4 PUSH2 0x2AA3 JUMP JUMPDEST PUSH2 0x1C8B JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x5BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2A29 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x64D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x665 DUP9 DUP11 ADD DUP11 PUSH2 0x2850 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP3 DUP9 AND DUP3 MSTORE SWAP1 KECCAK256 DUP2 SLOAD SWAP8 SWAP14 POP SWAP6 SWAP12 POP SWAP4 SWAP10 POP SWAP2 SWAP8 POP SWAP6 POP SWAP4 POP SWAP2 PUSH2 0x6D3 SWAP1 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6CE PUSH1 0x2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x1FDD JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x73C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D41585F494E5F524154494F0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 SLOAD DUP2 SLOAD PUSH2 0x792 SWAP2 DUP7 SWAP2 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP3 PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH16 0x1000000000000000000000000000000 SWAP2 DUP3 SWAP1 DIV DUP2 AND SWAP4 SWAP3 DUP4 AND SWAP3 SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x2028 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP10 POP CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x7D1 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2DBC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7FF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP DUP4 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 ADD SWAP2 POP PUSH2 0x823 SWAP1 POP DUP10 PUSH2 0x20B2 JUMP JUMPDEST LT ISZERO PUSH2 0x88B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F52454345495645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP7 ADD DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 SWAP3 DUP4 AND OR DUP5 SSTORE DUP3 SLOAD DUP1 DUP3 AND DUP13 SWAP1 SUB SWAP1 SWAP2 AND SWAP2 AND OR DUP2 SSTORE PUSH2 0x8E7 DUP8 DUP11 DUP9 DUP9 PUSH2 0x217C JUMP JUMPDEST DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP8 DUP14 PUSH1 0x40 MLOAD PUSH2 0x966 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x9EA SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xA99 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xA93 SWAP1 DUP5 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xACE SWAP1 DUP5 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xB36 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0xBB6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0xBCB DUP6 DUP8 ADD DUP8 PUSH2 0x29BF JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 PUSH2 0xBDF DUP3 PUSH1 0x0 SLOAD PUSH2 0x2322 JUMP JUMPDEST PUSH1 0x5 SLOAD SWAP1 SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBFD JUMPI PUSH2 0xBFD PUSH2 0x2F29 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC42 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xC1B JUMPI SWAP1 POP JUMPDEST POP SWAP5 POP PUSH2 0xC4F ADDRESS DUP4 PUSH2 0x235C JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x5 SLOAD DUP2 LT ISZERO PUSH2 0xEB8 JUMPI PUSH1 0x0 PUSH1 0x5 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xC71 JUMPI PUSH2 0xC71 PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD SWAP1 SWAP3 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0xCC1 DUP6 DUP4 PUSH2 0x1FDD JUMP JUMPDEST SWAP1 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xD3B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5A45524F5F4F5554000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 DUP2 AND PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP5 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH2 0xDB0 SWAP1 DUP5 SWAP1 DUP4 AND DUP11 DUP11 PUSH2 0x217C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xDFE JUMPI PUSH2 0xDFE PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x3DD1DF88DC92E2788892542D81F999D720A44B4C127065D45C128F4F59FDC373 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0xE9A SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP DUP1 DUP1 PUSH2 0xEB0 SWAP1 PUSH2 0x2E4F JUMP JUMPDEST SWAP2 POP POP PUSH2 0xC52 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP2 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0xFF3 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x108D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x10A4 DUP8 DUP10 ADD DUP10 PUSH2 0x27EE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP3 DUP8 AND DUP3 MSTORE SWAP1 KECCAK256 DUP2 SLOAD SWAP7 SWAP12 POP SWAP5 SWAP10 POP SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP SWAP2 PUSH2 0x110B SWAP1 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6CE PUSH1 0x2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST DUP4 GT ISZERO PUSH2 0x1174 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D41585F494E5F524154494F0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 SLOAD DUP2 SLOAD PUSH2 0x11CA SWAP2 DUP6 SWAP2 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP3 PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH16 0x1000000000000000000000000000000 SWAP2 DUP3 SWAP1 DIV DUP2 AND SWAP4 SWAP3 DUP4 AND SWAP3 SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x2028 JUMP JUMPDEST DUP3 SLOAD SWAP1 SWAP9 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 ADD PUSH2 0x11EB DUP9 PUSH2 0x20B2 JUMP JUMPDEST LT ISZERO PUSH2 0x1253 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F52454345495645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP6 ADD DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 SWAP3 DUP4 AND OR DUP5 SSTORE DUP3 SLOAD DUP1 DUP3 AND DUP12 SWAP1 SUB SWAP1 SWAP2 AND SWAP2 AND OR DUP2 SSTORE PUSH2 0x12AF DUP7 DUP10 DUP8 DUP8 PUSH2 0x217C JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP7 DUP13 PUSH1 0x40 MLOAD PUSH2 0x132E SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP4 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x5 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x13AE JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1383 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x1426 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 PUSH2 0x143A DUP5 DUP7 ADD DUP7 PUSH2 0x29FD JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x144C DUP3 PUSH1 0x0 SLOAD PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x5 SLOAD DUP2 LT ISZERO PUSH2 0x16C1 JUMPI PUSH1 0x0 PUSH1 0x5 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1470 JUMPI PUSH2 0x1470 PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD SWAP1 SWAP3 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0x14C1 JUMPI DUP5 PUSH2 0x14ED JUMP JUMPDEST PUSH2 0x14ED DUP6 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1FDD JUMP JUMPDEST SWAP1 POP PUSH2 0x1506 PUSH5 0xE8D4A51000 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST DUP2 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x1580 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E5F42414C414E4345000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 DUP2 ADD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x159D DUP5 PUSH2 0x20B2 JUMP JUMPDEST LT ISZERO PUSH2 0x1605 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F52454345495645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 DUP2 AND PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP9 ADD DUP3 AND OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE DUP6 AND SWAP1 DUP4 ADD MSTORE SWAP2 DUP10 AND SWAP2 CALLER SWAP2 PUSH32 0xF9403B28CC8805935E0CE6943ED646D5FDE3D1E14F6B398E85BFA2851D1B85F7 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP DUP1 DUP1 PUSH2 0x16B9 SWAP1 PUSH2 0x2E4F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1451 JUMP JUMPDEST POP PUSH2 0x16CC DUP4 DUP4 PUSH2 0x23EF JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x60 SWAP1 DUP2 SWAP1 DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x16FB JUMPI PUSH2 0x16FB PUSH2 0x2F29 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1724 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1740 JUMPI PUSH2 0x1740 PUSH2 0x2F29 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1769 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x18A4 JUMPI PUSH1 0x8 PUSH1 0x0 PUSH1 0x5 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x178E JUMPI PUSH2 0x178E PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD DUP5 MLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP6 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x17E8 JUMPI PUSH2 0x17E8 PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x8 PUSH1 0x0 PUSH1 0x5 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x180B JUMPI PUSH2 0x180B PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD DUP4 MLOAD PUSH16 0x1000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP5 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x187A JUMPI PUSH2 0x187A PUSH2 0x2EFA JUMP JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x176F JUMP JUMPDEST POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1924 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1948 SWAP2 SWAP1 PUSH2 0x2B8C JUMP JUMPDEST PUSH1 0x6 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x1960 DUP8 DUP10 ADD DUP10 PUSH2 0x2BC9 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH2 0x1977 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2028 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP4 SWAP1 PUSH2 0x19A4 SWAP1 DUP5 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x9EA SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x1A76 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x1A8C DUP7 DUP9 ADD DUP9 PUSH2 0x2970 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SLOAD PUSH1 0x4 SLOAD SWAP7 SWAP11 POP SWAP5 SWAP9 POP SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP1 SWAP3 PUSH2 0x1B2E SWAP3 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP3 PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH16 0x1000000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 AND SWAP3 AND DUP7 PUSH32 0x0 PUSH2 0x245F JUMP JUMPDEST DUP2 SLOAD SWAP1 SWAP7 POP PUSH2 0x1B66 SWAP1 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B5B PUSH1 0x3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x6CE SWAP1 PUSH1 0x1 PUSH2 0x2DCF JUMP JUMPDEST DUP7 GT ISZERO PUSH2 0x1BCF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D41585F4F55545F524154494F00000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP1 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP9 SWAP1 SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 SWAP1 SWAP2 AND OR DUP2 SSTORE PUSH2 0x1C19 ADDRESS DUP4 PUSH2 0x235C JUMP JUMPDEST PUSH2 0x1C25 DUP6 DUP8 DUP7 DUP7 PUSH2 0x217C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP10 SWAP1 MSTORE DUP7 AND SWAP2 CALLER SWAP2 PUSH32 0x3DD1DF88DC92E2788892542D81F999D720A44B4C127065D45C128F4F59FDC373 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP2 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1CF5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CFF PUSH2 0xEC9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP3 DUP13 SWAP3 DUP13 SWAP3 DUP13 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x1D5A DUP4 PUSH2 0x2E4F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1DFB SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1EFF JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1F65 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1FEA DUP4 DUP6 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2001 PUSH1 0x2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x200B SWAP1 DUP4 PUSH2 0x2DCF JUMP JUMPDEST SWAP1 POP PUSH2 0x201F PUSH8 0xDE0B6B3A7640000 DUP3 PUSH2 0x2DE7 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2035 DUP6 DUP5 PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x206D DUP9 PUSH32 0x0 PUSH8 0xDE0B6B3A7640000 SUB PUSH2 0x1FDD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x207D DUP9 DUP4 DUP11 ADD PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x208B DUP3 DUP6 PUSH2 0x250E JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 DUP2 SWAP1 SUB PUSH2 0x20A3 DUP9 DUP3 PUSH2 0x1FDD JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2158 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9F6 SWAP2 SWAP1 PUSH2 0x2B8C JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2265 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x223A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x225E SWAP2 SWAP1 PUSH2 0x2BA5 JUMP JUMPDEST POP POP PUSH2 0x231C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2317 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2337 PUSH8 0xDE0B6B3A7640000 DUP6 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2346 PUSH1 0x2 DUP6 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x2350 SWAP1 DUP4 PUSH2 0x2DCF JUMP JUMPDEST SWAP1 POP PUSH2 0x201F DUP5 DUP3 PUSH2 0x2DE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x2391 SWAP1 DUP5 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP1 SLOAD DUP3 SWAP1 SUB DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0x2400 SWAP2 SWAP1 PUSH2 0x2DCF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x23E3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x246C DUP8 DUP7 PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x247A DUP6 DUP9 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2488 DUP3 DUP10 PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24A7 DUP3 PUSH2 0x24A2 PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x2322 JUMP JUMPDEST PUSH2 0x2631 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24B5 DUP3 DUP14 PUSH2 0x1FDD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24C3 DUP3 DUP15 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP9 PUSH2 0x24DA DUP9 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2E38 JUMP JUMPDEST PUSH2 0x24E4 SWAP2 SWAP1 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH2 0x24FC DUP3 PUSH2 0x6CE DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2E38 JUMP JUMPDEST SWAP15 SWAP14 POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 GT ISZERO DUP1 ISZERO PUSH2 0x253F JUMPI POP PUSH1 0x1 PUSH2 0x2531 PUSH8 0xDE0B6B3A7640000 PUSH1 0x2 PUSH2 0x2DFB JUMP JUMPDEST PUSH2 0x253B SWAP2 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST DUP4 GT ISZERO JUMPDEST PUSH2 0x25A5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F424153450000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x25BA DUP2 DUP6 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x25C4 SWAP2 SWAP1 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x25D2 DUP3 DUP6 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x25EC DUP7 PUSH2 0x24A2 PUSH8 0xDE0B6B3A7640000 DUP7 PUSH2 0x2DE7 JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x25F7 JUMPI DUP1 SWAP4 POP JUMPDEST PUSH1 0x0 PUSH2 0x261A DUP8 DUP5 PUSH2 0x2615 PUSH5 0x2540BE400 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x26A7 JUMP JUMPDEST SWAP1 POP PUSH2 0x2626 DUP3 DUP3 PUSH2 0x1FDD JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x263E PUSH1 0x2 DUP4 PUSH2 0x2E88 JUMP JUMPDEST PUSH2 0x2650 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x2652 JUMP JUMPDEST DUP3 JUMPDEST SWAP1 POP PUSH2 0x265F PUSH1 0x2 DUP4 PUSH2 0x2DE7 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 ISZERO PUSH2 0x2686 JUMPI PUSH2 0x2672 DUP4 DUP1 PUSH2 0x2DFB JUMP JUMPDEST SWAP3 POP PUSH2 0x267F PUSH1 0x2 DUP4 PUSH2 0x2DE7 JUMP JUMPDEST SWAP2 POP PUSH2 0x2662 JUMP JUMPDEST PUSH2 0x2691 PUSH1 0x2 DUP4 PUSH2 0x2E88 JUMP JUMPDEST ISZERO PUSH2 0x9F6 JUMPI PUSH2 0x26A0 DUP4 DUP3 PUSH2 0x2DFB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 DUP1 PUSH2 0x26BE DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2797 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP6 POP SWAP1 SWAP3 POP SWAP1 POP DUP4 PUSH1 0x0 PUSH1 0x1 JUMPDEST DUP8 DUP4 LT PUSH2 0x278A JUMPI PUSH1 0x0 PUSH2 0x26EF PUSH8 0xDE0B6B3A7640000 DUP4 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x270F DUP10 PUSH2 0x270A PUSH8 0xDE0B6B3A7640000 DUP7 PUSH2 0x2E38 JUMP JUMPDEST PUSH2 0x2797 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2721 DUP7 PUSH2 0x6CE DUP5 DUP12 PUSH2 0x1FDD JUMP JUMPDEST SWAP6 POP PUSH2 0x272D DUP7 DUP5 PUSH2 0x2322 JUMP JUMPDEST SWAP6 POP DUP6 PUSH2 0x273C JUMPI POP POP POP PUSH2 0x278A JUMP JUMPDEST DUP7 ISZERO PUSH2 0x2746 JUMPI SWAP4 ISZERO SWAP4 JUMPDEST DUP1 ISZERO PUSH2 0x2750 JUMPI SWAP4 ISZERO SWAP4 JUMPDEST DUP5 ISZERO PUSH2 0x2767 JUMPI PUSH2 0x2760 DUP7 DUP12 PUSH2 0x2E38 JUMP JUMPDEST SWAP10 POP PUSH2 0x2774 JUMP JUMPDEST PUSH2 0x2771 DUP7 DUP12 PUSH2 0x2DCF JUMP JUMPDEST SWAP10 POP JUMPDEST POP POP POP DUP1 DUP1 PUSH2 0x2782 SWAP1 PUSH2 0x2E4F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x26D4 JUMP JUMPDEST POP POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 LT PUSH2 0x27AD JUMPI POP POP DUP1 DUP3 SUB PUSH1 0x0 PUSH2 0x27B5 JUMP JUMPDEST POP POP DUP2 DUP2 SUB PUSH1 0x1 JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x27CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x27E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x26A0 DUP2 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2806 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2811 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x2821 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x2831 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 POP PUSH2 0x283F PUSH1 0x60 DUP8 ADD PUSH2 0x27BC JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP2 SWAP5 PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x2869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2874 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x2884 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x2894 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP4 POP PUSH2 0x28A2 PUSH1 0x60 DUP9 ADD PUSH2 0x27BC JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x28C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x28EC JUMPI PUSH2 0x28EC PUSH2 0x2F29 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2932 JUMPI PUSH2 0x2932 PUSH2 0x2F29 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP13 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x294B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2991 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x29A1 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 POP PUSH2 0x29AF PUSH1 0x40 DUP7 ADD PUSH2 0x27BC JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x29D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x29DF DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 POP PUSH2 0x29ED PUSH1 0x20 DUP6 ADD PUSH2 0x27BC JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2A1B DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2A47 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2A57 DUP2 PUSH2 0x2F58 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2A77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2A82 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2A92 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2ABE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x2AC9 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x2AD9 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2AFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2B45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2B68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2B7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2BB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2BE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP4 CALLDATALOAD SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2C2A JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x2C0E JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2C3C JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2CBD JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2C8B JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2D21 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2CE6 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2D67 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2D4B JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP5 MLOAD DUP1 DUP3 MSTORE DUP6 DUP4 ADD SWAP2 DUP4 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2DAF JUMPI DUP4 MLOAD PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2D80 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x26A0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2C04 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x2DE2 JUMPI PUSH2 0x2DE2 PUSH2 0x2E9C JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2DF6 JUMPI PUSH2 0x2DF6 PUSH2 0x2ECB JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x2E33 JUMPI PUSH2 0x2E33 PUSH2 0x2E9C JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x2E4A JUMPI PUSH2 0x2E4A PUSH2 0x2E9C JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x2E81 JUMPI PUSH2 0x2E81 PUSH2 0x2E9C JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2E97 JUMPI PUSH2 0x2E97 PUSH2 0x2ECB JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2F7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STOP LT CREATE2 PUSH1 0x2B SLOAD 0xEC 0xD3 0xB8 SLT 0xBE 0xB5 0x4C SWAP4 0xD5 DUP10 EXTCODESIZE 0xA5 0x5E DUP6 0xE NOT 0xC6 0xB4 0x25 EXTCODEHASH 0x27 POP PUSH18 0x11877964736F6C6343000807003300000000 ",
              "sourceMap": "537:14647:42:-:0;;;2228:1375;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1490:13:45;1462:41;;;;1866:4;;;;;;;;;;;-1:-1:-1;1866:4:45;;;;;1900:10;;;;;;;;;;-1:-1:-1;1900:10:45;;;;1709:278;;1737:95;1709:278;;;3907:25:64;1850:22:45;3948:18:64;;;3941:34;1890:21:45;3991:18:64;;;3984:34;4034:18;;;4027:34;;;;1968:4:45;4077:19:64;;;;4070:61;;;;1709:278:45;;;;;;;;;;3879:19:64;;;;1709:278:45;;1686:311;;;;;1513:47;;;;;;2302:24:42;2328:25;2355:16;2386:11;2375:56;;;;;;;;;;;;:::i;:::-;2301:130;;;;;;2527:8;:15;2509:7;:14;:33;2501:60;;;;-1:-1:-1;2501:60:42;;4344:2:64;2501:60:42;;;4326:21:64;4383:2;4363:18;;;4356:30;-1:-1:-1;4402:18:64;;;4395:44;4456:18;;2501:60:42;;;;;;;;;2590:8;1142:12;1149:5;1002:6;1142:12;:::i;:::-;2579:19;;:42;;;;-1:-1:-1;1196:9:42;1203:2;1002:6;1196:9;:::i;:::-;2602:8;:19;;2579:42;2571:71;;;;-1:-1:-1;2571:71:42;;5721:2:64;2571:71:42;;;5703:21:64;5760:2;5740:18;;;5733:30;-1:-1:-1;5779:18:64;;;5772:46;5835:18;;2571:71:42;5519:340:64;2571:71:42;2674:7;:14;1053:1;2660:28;;:60;;;;;1099:1;2692:7;:14;:28;;2660:60;2652:94;;;;-1:-1:-1;2652:94:42;;5028:2:64;2652:94:42;;;5010:21:64;5067:2;5047:18;;;5040:30;5106:23;5086:18;;;5079:51;5147:18;;2652:94:42;4826:345:64;2652:94:42;2762:9;2757:368;2781:7;:14;2777:1;:18;2757:368;;;2824:10;;2846:1;;2824:7;;2832:1;;2824:10;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2824:24:42;;;2816:49;;;;-1:-1:-1;2816:49:42;;4687:2:64;2816:49:42;;;4669:21:64;4726:2;4706:18;;;4699:30;-1:-1:-1;4745:18:64;;;4738:42;4797:18;;2816:49:42;4485:336:64;2816:49:42;2901:8;2910:1;2901:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2887:25:42;1002:6;2887:25;;:54;;;;-1:-1:-1;1299:9:42;1002:6;1306:2;1299:9;:::i;:::-;2916:8;2925:1;2916:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2916:25:42;;;2887:54;2879:81;;;;-1:-1:-1;2879:81:42;;5378:2:64;2879:81:42;;;5360:21:64;5417:2;5397:18;;;5390:30;-1:-1:-1;5436:18:64;;;5429:44;5490:18;;2879:81:42;5176:338:64;2879:81:42;2996:41;;;;;;;;;-1:-1:-1;2996:41:42;;3024:11;;2996:41;;;;3024:8;;3033:1;;3024:11;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;2996:41:42;;;;2974:7;:19;2982:7;2990:1;2982:10;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;2974:19:42;;;;;;;;;;;;-1:-1:-1;2974:19:42;:63;;;;;;;-1:-1:-1;2974:63:42;-1:-1:-1;2974:63:42;-1:-1:-1;2974:63:42;;;;;;;;;3063:10;;3051:6;;3063:10;;3071:1;;3063:10;;;;;;:::i;:::-;;;;;;;;;;;;3051:23;;;;;;;-1:-1:-1;3051:23:42;;;;;;;;;;-1:-1:-1;3051:23:42;-1:-1:-1;3051:23:42;;;;;;;;;3103:11;;;;3112:1;;3103:11;;;;;;:::i;:::-;;;;;;;;;;;3088;:26;;:11;;:26;;3103:11;;-1:-1:-1;3088:26:42;;:::i;:::-;;;-1:-1:-1;3088:26:42;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2797:3:42;;;;:::i;:::-;;;;2757:368;;;-1:-1:-1;1359:9:42;1002:6;1366:2;1359:9;:::i;:::-;3143:11;;-1:-1:-1;3143:11:42;:31;;3135:60;;;;-1:-1:-1;3135:60:42;;6066:2:64;3135:60:42;;;6048:21:64;6105:2;6085:18;;;6078:30;-1:-1:-1;6124:18:64;;;6117:46;6180:18;;3135:60:42;5864:340:64;3135:60:42;3251:35;3265:1;1478:10;1002:6;1485:3;1478:10;:::i;:::-;3251:5;:35::i;:::-;3297:18;;;;3334:41;;;;;;;;-1:-1:-1;3334:39:42;;;;;:41;;;;;;;;;;;;;;:39;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3325:6;:50;3396:43;;;;;;;;-1:-1:-1;3396:41:42;;;;;:43;;;;;;;;;;;;;;:41;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3385:54;;;;;;3474:40;;;;;;;;-1:-1:-1;3474:38:42;;;;;:40;;;;;;;;;;;;;;:38;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;3449:66:42;;;;;;;3525:49;;;;;;;;-1:-1:-1;;;3584:8:42;:12;-1:-1:-1;537:14647:42;;-1:-1:-1;537:14647:42;5587:344:45;5671:6;5656:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;5830:20:45;;;;;;:9;:20;;;;;;;;:30;;;;;;5885:39;6355:25:64;;;5885:39:45;;6328:18:64;5885:39:45;;;;;;;5587:344;;:::o;14:177:64:-;93:13;;-1:-1:-1;135:31:64;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:811::-;261:5;314:3;307:4;299:6;295:17;291:27;281:55;;332:1;329;322:12;281:55;361:6;355:13;387:4;411:60;427:43;467:2;427:43;:::i;:::-;411:60;:::i;:::-;493:3;517:2;512:3;505:15;545:2;540:3;536:12;529:19;;580:2;572:6;568:15;632:3;627:2;621;618:1;614:10;606:6;602:23;598:32;595:41;592:61;;;649:1;646;639:12;592:61;671:1;692;702:276;718:2;713:3;710:11;702:276;;;780:10;;-1:-1:-1;823:31:64;;813:42;;803:70;;869:1;866;859:12;803:70;886:18;;924:12;;;;956;;;;740:1;731:11;702:276;;;-1:-1:-1;996:5:64;;196:811;-1:-1:-1;;;;;;;;196:811:64:o;1012:208::-;1082:6;1135:2;1123:9;1114:7;1110:23;1106:32;1103:52;;;1151:1;1148;1141:12;1103:52;1174:40;1204:9;1174:40;:::i;:::-;1164:50;1012:208;-1:-1:-1;;;1012:208:64:o;1225:1230::-;1363:6;1371;1379;1432:2;1420:9;1411:7;1407:23;1403:32;1400:52;;;1448:1;1445;1438:12;1400:52;1475:16;;-1:-1:-1;1540:14:64;;;1537:34;;;1567:1;1564;1557:12;1537:34;1605:6;1594:9;1590:22;1580:32;;1650:7;1643:4;1639:2;1635:13;1631:27;1621:55;;1672:1;1669;1662:12;1621:55;1701:2;1695:9;1723:4;1747:60;1763:43;1803:2;1763:43;:::i;1747:60::-;1829:3;1853:2;1848:3;1841:15;1881:2;1876:3;1872:12;1865:19;;1912:2;1908;1904:11;1960:7;1955:2;1949;1946:1;1942:10;1938:2;1934:19;1930:28;1927:41;1924:61;;;1981:1;1978;1971:12;1924:61;2003:1;1994:10;;2013:180;2027:2;2024:1;2021:9;2013:180;;;2084:34;2114:3;2084:34;:::i;:::-;2072:47;;2045:1;2038:9;;;;;2139:12;;;;2171;;2013:180;;;-1:-1:-1;2248:18:64;;;2242:25;2212:5;;-1:-1:-1;2242:25:64;;-1:-1:-1;;;2279:16:64;;;2276:36;;;2308:1;2305;2298:12;2276:36;;2331:74;2397:7;2386:8;2375:9;2371:24;2331:74;:::i;:::-;2321:84;;;2445:2;2434:9;2430:18;2424:25;2414:35;;1225:1230;;;;;:::o;2460:994::-;2548:6;2556;2609:2;2597:9;2588:7;2584:23;2580:32;2577:52;;;2625:1;2622;2615:12;2577:52;2652:16;;-1:-1:-1;2717:14:64;;;2714:34;;;2744:1;2741;2734:12;2714:34;2782:6;2771:9;2767:22;2757:32;;2827:7;2820:4;2816:2;2812:13;2808:27;2798:55;;2849:1;2846;2839:12;2798:55;2878:2;2872:9;2900:2;2896;2893:10;2890:36;;;2906:18;;:::i;:::-;2945:4;;-1:-1:-1;2971:53:64;-1:-1:-1;3014:2:64;2995:13;;2991:27;2987:36;;2971:53;:::i;:::-;3047:2;3040:5;3033:17;3087:7;3082:2;3077;3073;3069:11;3065:20;3062:33;3059:53;;;3108:1;3105;3098:12;3059:53;3130:1;3140:128;3154:2;3151:1;3148:9;3140:128;;;3241:10;;;3237:19;;3231:26;3211:13;;;3207:22;;3200:58;3165:10;;3140:128;;;3286:2;3283:1;3280:9;3277:79;;;3344:1;3339:2;3334;3327:5;3323:14;3319:23;3312:34;3277:79;-1:-1:-1;3375:5:64;-1:-1:-1;3399:49:64;;-1:-1:-1;3429:18:64;;;3399:49;:::i;:::-;3389:59;;;;2460:994;;;;;:::o;3459:184::-;3529:6;3582:2;3570:9;3561:7;3557:23;3553:32;3550:52;;;3598:1;3595;3588:12;3550:52;-1:-1:-1;3621:16:64;;3459:184;-1:-1:-1;3459:184:64:o;6391:275::-;6462:2;6456:9;-1:-1:-1;6527:2:64;6508:13;;6504:27;6492:40;;6583:22;;;-1:-1:-1;6547:34:64;;6544:62;6541:88;;;6609:18;;:::i;:::-;6645:2;6638:22;6391:275;;-1:-1:-1;6391:275:64:o;6671:183::-;6731:4;-1:-1:-1;6753:30:64;;6750:56;;;6786:18;;:::i;:::-;-1:-1:-1;6831:1:64;6827:14;6843:4;6823:25;;6671:183::o;6859:238::-;6899:3;-1:-1:-1;6966:10:64;;;6996;;;7026:12;;;7018:21;;7015:47;;;7042:18;;:::i;:::-;7078:13;;6859:238;-1:-1:-1;;;;6859:238:64:o;7102:128::-;7142:3;7173:1;7169:6;7166:1;7163:13;7160:39;;;7179:18;;:::i;:::-;-1:-1:-1;7215:9:64;;7102:128::o;7235:217::-;7275:1;7301;7291:132;;7345:10;7340:3;7336:20;7333:1;7326:31;7380:4;7377:1;7370:15;7408:4;7405:1;7398:15;7291:132;-1:-1:-1;7437:9:64;;7235:217::o;7457:168::-;7497:7;7563:1;7559;7555:6;7551:14;7548:1;7545:21;7540:1;7533:9;7526:17;7522:45;7519:71;;;7570:18;;:::i;:::-;-1:-1:-1;7610:9:64;;7457:168::o;7630:135::-;7669:3;-1:-1:-1;7690:17:64;;7687:43;;;7710:18;;:::i;:::-;-1:-1:-1;7757:1:64;7746:13;;7630:135::o;7770:127::-;7831:10;7826:3;7822:20;7819:1;7812:31;7862:4;7859:1;7852:15;7886:4;7883:1;7876:15;7902:127;7963:10;7958:3;7954:20;7951:1;7944:31;7994:4;7991:1;7984:15;8018:4;8015:1;8008:15;8034:127;8095:10;8090:3;8086:20;8083:1;8076:31;8126:4;8123:1;8116:15;8150:4;8147:1;8140:15;8034:127;537:14647:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@DOMAIN_SEPARATOR_12013": {
                  "entryPoint": 3785,
                  "id": 12013,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@PERMIT_TYPEHASH_11941": {
                  "entryPoint": null,
                  "id": 11941,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_balance_10934": {
                  "entryPoint": 8370,
                  "id": 10934,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_burn_12278": {
                  "entryPoint": 9052,
                  "id": 12278,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_calculateDomainSeparator_11995": {
                  "entryPoint": null,
                  "id": 11995,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_computeSingleOutGivenPoolIn_11145": {
                  "entryPoint": 9311,
                  "id": 11145,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "@_compute_11065": {
                  "entryPoint": 9486,
                  "id": 11065,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_div_11415": {
                  "entryPoint": 8994,
                  "id": 11415,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_getAmountOut_10997": {
                  "entryPoint": 8232,
                  "id": 10997,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@_mint_12250": {
                  "entryPoint": 9199,
                  "id": 12250,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_mul_11384": {
                  "entryPoint": 8157,
                  "id": 11384,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_powApprox_11314": {
                  "entryPoint": 9895,
                  "id": 11314,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@_pow_11196": {
                  "entryPoint": 9777,
                  "id": 11196,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_subFlag_11353": {
                  "entryPoint": 10135,
                  "id": 11353,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@_transfer_11456": {
                  "entryPoint": 8572,
                  "id": 11456,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@allowance_11929": {
                  "entryPoint": null,
                  "id": 11929,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@approve_12042": {
                  "entryPoint": 2434,
                  "id": 12042,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@balanceOf_11922": {
                  "entryPoint": null,
                  "id": 11922,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@barFeeTo_9980": {
                  "entryPoint": null,
                  "id": 9980,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@barFee_10072": {
                  "entryPoint": null,
                  "id": 10072,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@bento_9983": {
                  "entryPoint": null,
                  "id": 9983,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@burnSingle_10644": {
                  "entryPoint": 6664,
                  "id": 10644,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@burn_10546": {
                  "entryPoint": 2888,
                  "id": 10546,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@decimals_11915": {
                  "entryPoint": null,
                  "id": 11915,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@flashSwap_10902": {
                  "entryPoint": 1498,
                  "id": 10902,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAmountIn_11525": {
                  "entryPoint": 4120,
                  "id": 11525,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAmountOut_11513": {
                  "entryPoint": 6477,
                  "id": 11513,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAssets_11468": {
                  "entryPoint": 4937,
                  "id": 11468,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@getReservesAndWeights_11591": {
                  "entryPoint": 5850,
                  "id": 11591,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@masterDeployer_9986": {
                  "entryPoint": null,
                  "id": 9986,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@mint_10414": {
                  "entryPoint": 5048,
                  "id": 10414,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@name_11909": {
                  "entryPoint": null,
                  "id": 11909,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@nonces_11946": {
                  "entryPoint": null,
                  "id": 11946,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@permit_12222": {
                  "entryPoint": 7307,
                  "id": 12222,
                  "parameterSlots": 7,
                  "returnSlots": 0
                },
                "@poolIdentifier_10076": {
                  "entryPoint": null,
                  "id": 10076,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@records_10102": {
                  "entryPoint": null,
                  "id": 10102,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@swapFee_9978": {
                  "entryPoint": null,
                  "id": 9978,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@swap_10767": {
                  "entryPoint": 4127,
                  "id": 10767,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@symbol_11912": {
                  "entryPoint": null,
                  "id": 11912,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@totalSupply_11917": {
                  "entryPoint": null,
                  "id": 11917,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@transferFrom_12133": {
                  "entryPoint": 2556,
                  "id": 12133,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@transfer_12076": {
                  "entryPoint": 6531,
                  "id": 12076,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@updateBarFee_10915": {
                  "entryPoint": 6314,
                  "id": 10915,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_bool": {
                  "entryPoint": 10172,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 10193,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_address_payablet_boolt_uint256": {
                  "entryPoint": 10222,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_address_payablet_boolt_uint256t_bytes_memory_ptr": {
                  "entryPoint": 10320,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_boolt_uint256": {
                  "entryPoint": 10608,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_address_payablet_boolt_uint256": {
                  "entryPoint": 10687,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_address_payablet_uint256": {
                  "entryPoint": 10749,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 10793,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 10850,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32": {
                  "entryPoint": 10915,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 7
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes_calldata_ptr": {
                  "entryPoint": 11034,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 11148,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_uint256_fromMemory": {
                  "entryPoint": 11173,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256": {
                  "entryPoint": 11209,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_encode_bytes": {
                  "entryPoint": 11268,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint120__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 11375,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 11465,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint136_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint136_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 11566,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 11708,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4277c8319fd149a95e69be42a3e123adc1b4da419a70e9b9baf1b89820d48e58__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4c5ad29f1d3e8bb498f3f1a2e1b9ae2d9e0aa620eec7213536f28c96e8c078d5__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5bc54dac1e6c6942ca387ee7fa5b266c08fd485e140ffd0f93cb3919d20c5523__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5cc85f4aca207e790130bbbe0f65d41050b113ebde71647d75b6406db2462409__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6bebbe4a6d03d73ca34b8e24407254be08e942ad0a1388f8e02d78d6cedb6f8f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ae8acaa6a695c6235cafd131eee9e0f44d7addbb9b6373a0f80fba9ff8078b7f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint120_t_uint136__to_t_uint120_t_uint136__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 11727,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 11751,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 11771,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 11832,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 11855,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "mod_t_uint256": {
                  "entryPoint": 11912,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 11932,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": 11979,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 12026,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 12073,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 12120,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:22197:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "60:114:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "70:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "92:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "79:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "79:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "70:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "152:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "161:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "164:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "154:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "154:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "154:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "121:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "142:5:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "135:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "135:13:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "128:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "128:21:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "118:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "118:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "111:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "111:40:64"
                              },
                              "nodeType": "YulIf",
                              "src": "108:60:64"
                            }
                          ]
                        },
                        "name": "abi_decode_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "39:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "50:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:160:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "249:177:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "295:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "304:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "307:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "297:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "297:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "297:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "270:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "279:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "266:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "266:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "291:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "262:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "262:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "259:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "320:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "346:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "333:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "333:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "324:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "390:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "365:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "365:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "365:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "405:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "415:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "405:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "215:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "226:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "238:6:64",
                            "type": ""
                          }
                        ],
                        "src": "179:247:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "590:532:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "637:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "646:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "649:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "639:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "639:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "639:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "611:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "620:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "607:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "607:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "632:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "603:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "603:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "600:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "662:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "688:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "675:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "675:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "666:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "732:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "707:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "707:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "707:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "747:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "757:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "747:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "771:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "803:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "814:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "799:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "799:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "786:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "786:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "775:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "852:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "827:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "827:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "827:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "869:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "879:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "869:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "895:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "927:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "938:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "923:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "923:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "910:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "910:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "899:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "976:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "951:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "951:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "951:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "993:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "1003:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "993:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1019:45:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1049:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1060:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1045:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1045:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "1029:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1029:35:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1019:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1073:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1100:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1111:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1096:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1096:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1083:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1083:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "1073:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_address_payablet_boolt_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "524:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "535:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "547:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "555:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "563:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "571:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "579:6:64",
                            "type": ""
                          }
                        ],
                        "src": "431:691:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1312:1375:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1359:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1368:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1371:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1361:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1361:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1361:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1333:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1342:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1329:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1329:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1354:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1325:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1325:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1322:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1384:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1410:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1397:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1397:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1388:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1454:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1429:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1429:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1429:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1469:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1479:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1469:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1493:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1525:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1536:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1521:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1521:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1508:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1508:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1497:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1574:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1549:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1549:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1549:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1591:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1601:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1591:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1617:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1649:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1660:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1645:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1645:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1632:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1632:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1621:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1698:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1673:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1673:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1673:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1715:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "1725:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1715:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1741:45:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1771:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1782:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1767:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1767:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "1751:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1751:35:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1741:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1795:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1822:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1833:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1818:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1818:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1805:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1805:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "1795:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1847:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1878:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1889:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1874:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1874:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1861:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1861:33:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1851:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1903:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1913:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1907:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1958:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1967:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1970:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1960:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1960:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1960:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1946:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1954:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1943:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1943:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1940:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1983:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1997:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2008:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1993:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1993:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1987:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2063:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2072:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2075:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2065:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2065:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2065:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2042:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2046:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2038:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2038:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2053:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2034:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2034:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2027:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2027:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2024:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2088:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2111:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2098:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2098:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2092:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2137:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2139:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2139:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2139:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2129:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2133:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2126:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2126:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2123:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2168:76:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2178:66:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "2172:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2253:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2273:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2267:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2267:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2257:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2285:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2307:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2331:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2335:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2327:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2327:13:64"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "2342:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "2323:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2323:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2347:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2319:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2319:31:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "2352:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2315:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2315:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2303:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2303:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2289:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2415:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2417:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2417:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2417:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2374:10:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2386:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2371:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2371:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2394:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2406:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2391:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2391:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2368:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2368:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2365:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2453:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2457:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2446:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2446:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2446:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2484:6:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2492:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2477:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2477:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2477:18:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2541:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2550:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2553:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2543:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2543:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2543:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2518:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2522:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2514:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2514:11:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2527:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2510:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2510:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2532:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2507:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2507:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2504:53:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2583:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2591:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2579:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2579:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2600:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2604:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2596:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2596:11:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2609:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "2566:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2566:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2566:46:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "2636:6:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2644:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2632:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2632:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2649:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2628:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2628:24:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2654:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2621:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2621:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2621:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2665:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "2675:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "2665:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_address_payablet_boolt_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1238:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1249:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1261:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1269:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1277:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1285:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1293:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "1301:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1127:1560:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2826:407:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2873:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2882:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2885:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2875:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2875:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2875:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2847:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2856:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2843:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2843:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2868:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2839:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2839:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2836:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2898:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2924:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2911:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2911:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2902:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2968:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2943:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2943:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2943:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2983:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2993:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2983:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3007:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3039:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3050:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3035:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3035:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3022:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3022:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3011:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3088:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3063:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3063:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3063:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3105:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3115:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3105:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3131:45:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3161:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3172:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3157:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3157:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "3141:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3141:35:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3131:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3185:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3212:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3223:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3208:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3208:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3195:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3195:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3185:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_boolt_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2768:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2779:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2791:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2799:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2807:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2815:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2692:541:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3347:282:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3393:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3402:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3405:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3395:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3395:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3395:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3368:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3377:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3364:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3364:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3389:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3360:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3360:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3357:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3418:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3444:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3431:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3431:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3422:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3488:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3463:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3463:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3463:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3503:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3513:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3503:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3527:45:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3557:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3568:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3553:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3553:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "3537:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3537:35:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3527:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3581:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3608:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3619:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3604:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3604:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3591:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3591:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3581:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_boolt_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3297:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3308:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3320:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3328:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3336:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3238:391:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3729:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3775:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3784:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3787:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3777:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3777:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3777:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3750:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3759:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3746:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3746:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3771:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3742:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3742:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3739:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3800:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3826:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3813:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3813:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3804:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3870:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3845:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3845:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3845:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3885:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3895:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3885:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3909:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3936:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3947:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3932:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3932:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3919:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3919:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3909:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3687:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3698:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3710:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3718:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3634:323:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4049:301:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4095:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4104:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4107:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4097:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4097:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4097:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4070:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4079:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4066:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4066:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4091:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4062:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4062:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4059:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4120:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4146:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4133:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4133:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4124:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4190:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4165:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4165:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4165:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4205:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4215:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4205:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4229:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4261:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4272:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4257:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4257:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4244:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4244:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4233:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4310:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4285:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4285:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4285:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4327:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4337:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4327:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4007:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4018:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4030:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4038:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3962:388:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4459:352:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4505:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4514:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4517:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4507:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4507:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4507:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4480:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4489:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4476:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4476:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4501:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4472:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4472:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4469:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4530:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4556:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4543:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4543:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4534:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4600:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4575:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4575:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4575:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4615:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4625:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4615:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4639:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4671:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4682:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4667:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4667:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4654:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4654:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4643:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4720:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4695:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4695:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4695:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4737:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4747:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4737:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4763:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4790:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4801:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4786:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4786:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4773:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4773:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4763:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4409:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4420:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4432:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4440:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4448:6:64",
                            "type": ""
                          }
                        ],
                        "src": "4355:456:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4986:659:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5033:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5042:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5045:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5035:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5035:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5035:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5007:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5016:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5003:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5003:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5028:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4999:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4999:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4996:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5058:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5084:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5071:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5071:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5062:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5128:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5103:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5103:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5103:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5143:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5153:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5143:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5167:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5199:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5210:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5195:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5195:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5182:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5182:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5171:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5248:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5223:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5223:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5223:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5265:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "5275:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5265:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5291:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5318:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5329:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5314:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5314:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5301:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5301:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5291:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5342:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5369:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5380:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5365:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5365:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5352:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5352:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "5342:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5393:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5425:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5436:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5421:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5421:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5408:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5408:33:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5397:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5493:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5502:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5505:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5495:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5495:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5495:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5463:7:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "5476:7:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5485:4:64",
                                            "type": "",
                                            "value": "0xff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "5472:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5472:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "5460:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5460:31:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5453:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5453:39:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5450:59:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5518:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "5528:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "5518:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5544:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5571:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5582:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5567:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5567:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5554:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5554:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "5544:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5596:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5623:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5634:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5619:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5619:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5606:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5606:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "5596:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4904:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4915:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4927:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4935:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4943:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4951:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "4959:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "4967:6:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "4975:6:64",
                            "type": ""
                          }
                        ],
                        "src": "4816:829:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5737:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5783:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5792:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5795:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5785:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5785:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5785:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5758:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5767:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5754:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5754:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5779:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5750:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5750:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5747:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5808:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5834:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5821:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5821:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5812:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5878:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5853:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5853:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5853:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5893:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5903:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5893:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5917:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5944:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5955:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5940:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5940:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5927:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5927:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5917:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5695:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5706:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5718:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5726:6:64",
                            "type": ""
                          }
                        ],
                        "src": "5650:315:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6059:502:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6105:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6114:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6117:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6107:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6107:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6107:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6080:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6089:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6076:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6076:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6101:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6072:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6072:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6069:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6130:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6157:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6144:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6144:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6134:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6176:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6186:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6180:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6231:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6240:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6243:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6233:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6233:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6233:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6219:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6227:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6216:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6216:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6213:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6256:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6270:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6281:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6266:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6266:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "6260:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6336:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6345:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6348:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6338:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6338:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6338:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "6315:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6319:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6311:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6311:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6326:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "6307:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6307:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6300:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6300:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6297:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6361:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6388:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6375:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6375:16:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6365:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6418:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6427:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6430:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6420:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6420:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6420:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6406:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6414:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6403:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6403:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6400:34:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6484:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6493:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6496:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6486:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6486:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6486:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "6457:2:64"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "6461:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6453:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6453:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6470:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6449:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6449:24:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6475:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6446:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6446:37:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6443:57:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6509:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6523:2:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6527:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6519:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6519:11:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6509:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6539:16:64",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "6549:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6539:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6017:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6028:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6040:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6048:6:64",
                            "type": ""
                          }
                        ],
                        "src": "5970:591:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6647:103:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6693:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6702:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6705:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6695:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6695:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6695:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6668:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6677:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6664:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6664:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6689:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6660:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6660:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6657:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6718:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6734:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6728:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6728:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6718:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6613:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6624:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6636:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6566:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6853:147:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6899:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6908:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6911:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6901:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6901:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6901:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6874:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6883:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6870:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6870:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6895:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6866:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6866:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6863:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6924:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6940:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6934:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6934:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6924:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6959:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6979:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6990:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6975:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6975:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6969:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6969:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6959:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6811:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6822:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6834:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6842:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6755:245:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7143:316:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7190:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7199:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7202:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7192:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7192:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7192:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7164:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7173:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7160:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7160:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7185:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7156:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7156:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7153:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7215:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7238:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7225:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7225:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7215:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7257:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7284:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7295:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7280:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7280:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7267:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7267:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7257:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7308:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7335:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7346:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7331:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7331:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7318:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7318:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "7308:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7359:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7386:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7397:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7382:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7382:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7369:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7369:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "7359:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7410:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7437:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7448:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7433:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7433:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7420:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7420:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "7410:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7077:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7088:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7100:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7108:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7116:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7124:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7132:6:64",
                            "type": ""
                          }
                        ],
                        "src": "7005:454:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7513:481:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7523:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7543:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7537:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7537:12:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "7527:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "7565:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7570:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7558:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7558:19:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7558:19:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7586:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7595:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "7590:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7657:110:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "7671:14:64",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "7681:4:64",
                                      "type": "",
                                      "value": "0x20"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "7675:2:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7713:3:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7718:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "7709:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7709:11:64"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "7722:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "7705:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7705:20:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "7741:5:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "7748:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7737:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "7737:13:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7752:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "7733:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7733:22:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "7727:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7727:29:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7698:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7698:59:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7698:59:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7616:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7619:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7613:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7613:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "7627:21:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7629:17:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "7638:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7641:4:64",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7634:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7634:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "7629:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "7609:3:64",
                                "statements": []
                              },
                              "src": "7605:162:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7801:62:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7830:3:64"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7835:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "7826:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7826:16:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "7844:4:64",
                                              "type": "",
                                              "value": "0x20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "7822:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7822:27:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7851:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7815:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7815:38:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7815:38:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7782:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7785:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7779:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7779:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7776:87:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7872:116:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7887:3:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "7900:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7908:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "7896:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7896:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7913:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "7892:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7892:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7883:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7883:98:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7983:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7879:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7879:109:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7872:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "7490:5:64",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7497:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7505:3:64",
                            "type": ""
                          }
                        ],
                        "src": "7464:530:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8247:196:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "8264:3:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8269:66:64",
                                    "type": "",
                                    "value": "0x1901000000000000000000000000000000000000000000000000000000000000"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8257:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8257:79:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8257:79:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "8356:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8361:1:64",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8352:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8352:11:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8365:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8345:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8345:27:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8345:27:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "8392:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8397:2:64",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8388:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8388:12:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8402:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8381:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8381:28:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8381:28:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8418:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "8429:3:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8434:2:64",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8425:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8425:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "8418:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "8215:3:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8220:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8228:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "8239:3:64",
                            "type": ""
                          }
                        ],
                        "src": "7999:444:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8549:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8559:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8571:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8582:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8567:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8567:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8559:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8601:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8616:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8624:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8612:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8612:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8594:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8594:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8594:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8518:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8529:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8540:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8448:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8808:198:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8818:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8830:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8841:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8826:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8826:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8818:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8853:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8863:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8857:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8921:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8936:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8944:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8932:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8932:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8914:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8914:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8914:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8968:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8979:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8964:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8964:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8988:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8996:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8984:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8984:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8957:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8957:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8957:43:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8769:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8780:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8788:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8799:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8679:327:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9232:338:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9242:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9254:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9265:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9250:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9250:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9242:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9278:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9288:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9282:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9346:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "9361:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9369:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9357:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9357:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9339:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9339:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9339:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9393:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9404:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9389:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9389:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9413:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9421:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9409:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9409:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9382:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9382:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9382:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9445:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9456:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9441:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9441:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "9465:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9473:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9461:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9461:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9434:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9434:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9434:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9497:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9508:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9493:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9493:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "9513:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9486:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9486:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9486:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9540:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9551:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9536:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9536:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "9557:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9529:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9529:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9529:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9169:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "9180:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9188:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9196:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9204:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9212:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9223:4:64",
                            "type": ""
                          }
                        ],
                        "src": "9011:559:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9760:294:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9770:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9782:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9793:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9778:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9778:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9770:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9806:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9816:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9810:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9874:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "9889:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9897:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9885:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9885:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9867:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9867:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9867:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9921:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9932:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9917:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9917:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9941:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9949:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9937:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9937:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9910:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9910:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9910:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9973:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9984:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9969:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9969:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "9993:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10001:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9989:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9989:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9962:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9962:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9962:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10025:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10036:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10021:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10021:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "10041:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10014:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10014:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10014:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9705:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9716:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9724:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9732:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9740:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9751:4:64",
                            "type": ""
                          }
                        ],
                        "src": "9575:479:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10188:207:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10198:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10210:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10221:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10206:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10206:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10198:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10240:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "10255:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10263:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10251:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10251:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10233:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10233:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10233:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10327:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10338:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10323:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10323:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10347:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10355:32:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10343:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10343:45:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10316:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10316:73:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10316:73:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint120__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10149:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10160:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10168:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10179:4:64",
                            "type": ""
                          }
                        ],
                        "src": "10059:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10529:168:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10539:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10551:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10562:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10547:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10547:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10539:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10581:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "10596:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10604:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10592:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10592:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10574:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10574:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10574:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10668:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10679:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10664:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10664:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10684:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10657:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10657:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10657:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10490:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10501:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10509:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10520:4:64",
                            "type": ""
                          }
                        ],
                        "src": "10400:297:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10853:530:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10863:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10873:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10867:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10884:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10902:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10913:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10898:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10898:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10888:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10932:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10943:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10925:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10925:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10925:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10955:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "10966:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "10959:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10981:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11001:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10995:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10995:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "10985:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11024:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11032:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11017:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11017:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11017:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11048:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11059:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11070:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11055:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11055:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "11048:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11082:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11100:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11108:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11096:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11096:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "11086:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11120:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11129:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "11124:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11188:169:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "11209:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "11224:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "11218:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "11218:13:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "11233:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "11214:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "11214:62:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "11202:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11202:75:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11202:75:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11290:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "11301:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11306:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11297:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11297:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "11290:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11322:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "11336:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11344:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11332:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11332:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11322:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "11150:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11153:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11147:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11147:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "11161:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11163:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "11172:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11175:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11168:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11168:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "11163:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "11143:3:64",
                                "statements": []
                              },
                              "src": "11139:218:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11366:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "11374:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11366:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10822:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10833:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10844:4:64",
                            "type": ""
                          }
                        ],
                        "src": "10702:681:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11597:636:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11607:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11617:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11611:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11628:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11646:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11657:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11642:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11642:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11632:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11676:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11687:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11669:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11669:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11669:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11699:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "11710:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "11703:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11725:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11745:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11739:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11739:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "11729:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11768:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11776:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11761:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11761:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11761:22:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11792:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11802:2:64",
                                "type": "",
                                "value": "64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "11796:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11813:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11824:9:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11835:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11820:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11820:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "11813:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11847:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11865:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11873:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11861:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11861:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "11851:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11885:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11894:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "11889:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11953:254:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "11967:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "11983:6:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "11977:5:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11977:13:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "11971:2:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "12010:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12025:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "12019:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "12019:9:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "12030:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "12015:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12015:58:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "12003:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12003:71:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12003:71:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "12098:3:64"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "12103:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "12094:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12094:12:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12118:2:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12122:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "12114:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "12114:11:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "12108:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12108:18:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "12087:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12087:40:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12087:40:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12140:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "12151:3:64"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "12156:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "12147:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12147:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12140:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12172:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "12186:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "12194:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "12182:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12182:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "12172:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "11915:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11918:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11912:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11912:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "11926:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11928:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "11937:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11940:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11933:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11933:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "11928:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "11908:3:64",
                                "statements": []
                              },
                              "src": "11904:303:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12216:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "12224:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12216:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11566:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11577:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11588:4:64",
                            "type": ""
                          }
                        ],
                        "src": "11388:845:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12467:966:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12477:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12495:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12506:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12491:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12491:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12481:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12525:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12536:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12518:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12518:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12518:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12548:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "12559:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "12552:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12574:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12594:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12588:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12588:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "12578:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12617:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12625:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12610:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12610:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12610:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12641:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12652:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12663:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12648:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12648:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "12641:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12675:14:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12685:4:64",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12679:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12698:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12716:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12724:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12712:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12712:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "12702:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12736:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12745:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "12740:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12804:120:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "12825:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "12836:6:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "12830:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12830:13:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "12818:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12818:26:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12818:26:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12857:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "12868:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "12873:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "12864:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12864:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12857:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12889:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "12903:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "12911:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "12899:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12899:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "12889:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "12766:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12769:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12763:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12763:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "12777:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12779:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "12788:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12791:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "12784:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12784:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "12779:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "12759:3:64",
                                "statements": []
                              },
                              "src": "12755:169:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12944:9:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12955:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12940:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12940:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12964:3:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12969:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12960:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12960:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12933:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12933:47:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12933:47:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12989:16:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "13002:3:64"
                              },
                              "variables": [
                                {
                                  "name": "pos_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12993:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13014:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13036:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13030:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13030:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13018:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "13059:3:64"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13064:8:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13052:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13052:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13052:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13082:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "13095:3:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13100:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13091:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13091:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "13082:5:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13112:31:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13132:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13140:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13128:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13128:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13116:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13152:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13163:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13156:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13230:175:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13251:5:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "13268:8:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "13262:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "13262:15:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "13279:36:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "13258:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "13258:58:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "13244:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13244:73:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13244:73:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13330:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13343:5:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13350:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "13339:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13339:14:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13330:5:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13366:29:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13382:8:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13392:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "13378:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13378:17:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13366:8:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13184:3:64"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13189:8:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13181:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13181:17:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "13199:22:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13201:18:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13212:3:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13217:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "13208:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13208:11:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13201:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "13177:3:64",
                                "statements": []
                              },
                              "src": "13173:232:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13414:13:64",
                              "value": {
                                "name": "pos_1",
                                "nodeType": "YulIdentifier",
                                "src": "13422:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13414:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint136_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint136_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12428:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12439:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12447:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12458:4:64",
                            "type": ""
                          }
                        ],
                        "src": "12238:1195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13533:92:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13543:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13555:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13566:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13551:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13551:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13543:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13585:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "13610:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "13603:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13603:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "13596:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13596:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13578:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13578:41:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13578:41:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13502:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13513:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13524:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13438:187:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13731:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13741:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13753:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13764:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13749:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13749:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13741:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13783:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "13794:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13776:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13776:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13776:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13700:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13711:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13722:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13630:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14053:373:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14063:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14075:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14086:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14071:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14071:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14063:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14106:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14117:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14099:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14099:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14099:25:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14133:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14143:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14137:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14205:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14216:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14201:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14201:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14225:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14233:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14221:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14221:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14194:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14194:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14194:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14257:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14268:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14253:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14253:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "14277:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14285:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14273:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14273:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14246:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14246:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14246:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14309:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14320:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14305:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14305:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "14325:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14298:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14298:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14298:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14352:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14363:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14348:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14348:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "14369:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14341:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14341:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14341:35:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14396:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14407:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14392:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14392:19:64"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "14413:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14385:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14385:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14385:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13982:9:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "13993:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "14001:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "14009:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14017:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14025:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14033:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14044:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13812:614:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14644:299:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14654:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14666:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14677:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14662:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14662:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14654:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14697:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14708:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14690:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14690:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14690:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14735:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14746:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14731:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14731:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14751:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14724:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14724:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14724:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14778:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14789:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14774:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14774:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "14794:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14767:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14767:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14767:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14821:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14832:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14817:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14817:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "14837:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14810:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14810:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14810:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14864:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14875:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14860:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14860:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "14885:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14893:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14881:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14881:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14853:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14853:84:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14853:84:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14581:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "14592:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "14600:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14608:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14616:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14624:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14635:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14431:512:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15129:217:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15139:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15151:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15162:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15147:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15147:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15139:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15182:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "15193:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15175:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15175:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15175:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15220:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15231:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15216:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15216:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15240:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15248:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15236:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15236:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15209:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15209:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15209:45:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15274:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15285:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15270:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15270:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "15290:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15263:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15263:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15263:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15317:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15328:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15313:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15313:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "15333:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15306:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15306:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15306:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15074:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "15085:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "15093:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15101:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15109:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15120:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14948:398:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15470:98:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15487:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15498:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15480:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15480:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15480:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15510:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "15535:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15547:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15558:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15543:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15543:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "15518:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15518:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15510:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15439:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15450:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15461:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15351:217:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15699:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15709:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15721:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15732:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15717:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15717:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15709:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15751:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "15766:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15774:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15762:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15762:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15744:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15744:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15744:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15668:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15679:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15690:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15573:251:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15954:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15964:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15976:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15987:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15972:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15972:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15964:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16006:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "16021:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16029:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16017:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16017:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15999:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15999:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15999:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15923:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15934:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15945:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15829:250:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16205:98:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16222:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16233:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16215:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16215:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16215:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16245:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16270:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16282:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16293:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16278:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16278:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "16253:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16253:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16245:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16174:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16185:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16196:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16084:219:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16482:174:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16499:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16510:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16492:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16492:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16492:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16533:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16544:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16529:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16529:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16549:2:64",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16522:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16522:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16522:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16572:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16583:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16568:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16568:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f5045524d49545f5349474e4154555245",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16588:26:64",
                                    "type": "",
                                    "value": "INVALID_PERMIT_SIGNATURE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16561:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16561:54:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16561:54:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16624:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16636:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16647:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16632:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16632:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16624:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16459:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16473:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16308:348:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16835:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16852:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16863:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16845:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16845:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16845:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16886:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16897:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16882:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16882:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16902:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16875:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16875:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16875:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16925:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16936:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16921:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16921:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f42415345",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16941:14:64",
                                    "type": "",
                                    "value": "INVALID_BASE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16914:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16914:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16914:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16965:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16977:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16988:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16973:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16973:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16965:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4277c8319fd149a95e69be42a3e123adc1b4da419a70e9b9baf1b89820d48e58__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16812:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16826:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16661:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17176:163:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17193:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17204:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17186:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17186:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17186:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17227:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17238:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17223:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17223:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17243:2:64",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17216:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17216:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17216:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17266:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17277:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17262:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17262:18:64"
                                  },
                                  {
                                    "hexValue": "4d41585f4f55545f524154494f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17282:15:64",
                                    "type": "",
                                    "value": "MAX_OUT_RATIO"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17255:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17255:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17255:43:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17307:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17319:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17330:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17315:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17315:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17307:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4c5ad29f1d3e8bb498f3f1a2e1b9ae2d9e0aa620eec7213536f28c96e8c078d5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17153:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17167:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17002:337:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17518:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17535:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17546:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17528:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17528:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17528:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17569:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17580:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17565:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17565:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17585:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17558:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17558:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17558:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17608:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17619:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17604:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17604:18:64"
                                  },
                                  {
                                    "hexValue": "4e4f545f5245434549564544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17624:14:64",
                                    "type": "",
                                    "value": "NOT_RECEIVED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17597:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17597:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17597:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17648:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17660:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17671:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17656:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17656:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17648:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5bc54dac1e6c6942ca387ee7fa5b266c08fd485e140ffd0f93cb3919d20c5523__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17495:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17509:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17344:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17859:157:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17876:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17887:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17869:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17869:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17869:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17910:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17921:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17906:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17906:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17926:1:64",
                                    "type": "",
                                    "value": "8"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17899:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17899:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17899:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17948:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17959:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17944:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17944:18:64"
                                  },
                                  {
                                    "hexValue": "5a45524f5f4f5554",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17964:10:64",
                                    "type": "",
                                    "value": "ZERO_OUT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17937:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17937:38:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17937:38:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17984:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17996:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18007:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17992:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17992:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17984:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5cc85f4aca207e790130bbbe0f65d41050b113ebde71647d75b6406db2462409__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17836:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17850:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17685:331:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18195:161:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18212:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18223:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18205:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18205:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18205:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18246:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18257:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18242:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18242:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18262:2:64",
                                    "type": "",
                                    "value": "11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18235:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18235:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18235:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18285:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18296:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18281:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18281:18:64"
                                  },
                                  {
                                    "hexValue": "4d494e5f42414c414e4345",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18301:13:64",
                                    "type": "",
                                    "value": "MIN_BALANCE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18274:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18274:41:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18274:41:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18324:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18336:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18347:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18332:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18332:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18324:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6bebbe4a6d03d73ca34b8e24407254be08e942ad0a1388f8e02d78d6cedb6f8f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18172:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18186:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18021:335:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18535:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18552:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18563:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18545:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18545:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18545:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18586:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18597:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18582:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18582:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18602:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18575:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18575:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18575:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18625:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18636:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18621:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18621:18:64"
                                  },
                                  {
                                    "hexValue": "4d41585f494e5f524154494f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18641:14:64",
                                    "type": "",
                                    "value": "MAX_IN_RATIO"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18614:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18614:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18614:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18665:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18677:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18688:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18673:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18673:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18665:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ae8acaa6a695c6235cafd131eee9e0f44d7addbb9b6373a0f80fba9ff8078b7f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18512:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18526:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18361:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18876:173:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18893:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18904:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18886:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18886:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18886:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18927:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18938:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18923:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18923:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18943:2:64",
                                    "type": "",
                                    "value": "23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18916:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18916:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18916:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18966:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18977:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18962:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18962:18:64"
                                  },
                                  {
                                    "hexValue": "5045524d49545f444541444c494e455f45585049524544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18982:25:64",
                                    "type": "",
                                    "value": "PERMIT_DEADLINE_EXPIRED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18955:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18955:53:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18955:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19017:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19029:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19040:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19025:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19025:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19017:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18853:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18867:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18702:347:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19228:155:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19245:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19256:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19238:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19238:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19238:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19279:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19290:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19275:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19275:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19295:1:64",
                                    "type": "",
                                    "value": "6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19268:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19268:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19268:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19317:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19328:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19313:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19313:18:64"
                                  },
                                  {
                                    "hexValue": "4c4f434b4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19333:8:64",
                                    "type": "",
                                    "value": "LOCKED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19306:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19306:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19306:36:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19351:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19363:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19374:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19359:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19359:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19351:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19205:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19219:4:64",
                            "type": ""
                          }
                        ],
                        "src": "19054:329:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19517:201:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19527:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19539:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19550:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19535:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19535:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19527:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19569:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19584:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19592:32:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19580:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19580:45:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19562:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19562:64:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19562:64:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19646:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19657:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19642:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19642:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19666:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19674:36:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19662:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19662:49:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19635:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19635:77:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19635:77:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint120_t_uint136__to_t_uint120_t_uint136__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19478:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19489:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19497:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19508:4:64",
                            "type": ""
                          }
                        ],
                        "src": "19388:330:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19824:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19834:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19846:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19857:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19842:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19842:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19834:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19876:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "19887:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19869:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19869:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19869:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19793:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19804:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19815:4:64",
                            "type": ""
                          }
                        ],
                        "src": "19723:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20034:119:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "20044:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20056:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20067:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20052:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20052:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20044:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20086:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "20097:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20079:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20079:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20079:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20124:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20135:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20120:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20120:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20140:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20113:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20113:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20113:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19995:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "20006:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20014:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20025:4:64",
                            "type": ""
                          }
                        ],
                        "src": "19905:248:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20255:87:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "20265:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20277:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20288:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20273:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20273:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20265:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20307:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "20322:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20330:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20318:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20318:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20300:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20300:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20300:36:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20224:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20235:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20246:4:64",
                            "type": ""
                          }
                        ],
                        "src": "20158:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20395:80:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20422:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "20424:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20424:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20424:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "20411:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "20418:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "20414:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20414:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20408:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20408:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "20405:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20453:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "20464:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "20467:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20460:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20460:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "20453:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "20378:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "20381:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "20387:3:64",
                            "type": ""
                          }
                        ],
                        "src": "20347:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20526:74:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20549:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "20551:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20551:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20551:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "20546:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "20539:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20539:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "20536:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20580:14:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "20589:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "20592:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "20585:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20585:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "20580:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "20511:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "20514:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "20520:1:64",
                            "type": ""
                          }
                        ],
                        "src": "20480:120:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20657:176:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20776:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "20778:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20778:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20778:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "20688:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "20681:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20681:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "20674:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20674:17:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "20696:1:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "20703:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "20771:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "20699:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20699:74:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "20693:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20693:81:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "20670:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20670:105:64"
                              },
                              "nodeType": "YulIf",
                              "src": "20667:131:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20807:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "20822:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "20825:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "20818:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20818:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "20807:7:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "20636:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "20639:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "20645:7:64",
                            "type": ""
                          }
                        ],
                        "src": "20605:228:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20887:76:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20909:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "20911:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20911:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20911:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "20903:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "20906:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20900:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20900:8:64"
                              },
                              "nodeType": "YulIf",
                              "src": "20897:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20940:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "20952:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "20955:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "20948:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20948:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "20940:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "20869:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "20872:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "20878:4:64",
                            "type": ""
                          }
                        ],
                        "src": "20838:125:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21015:148:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21106:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "21108:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21108:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21108:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "21031:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21038:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "21028:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21028:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "21025:103:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21137:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "21148:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21155:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21144:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21144:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "21137:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "20997:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "21007:3:64",
                            "type": ""
                          }
                        ],
                        "src": "20968:195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21206:74:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21229:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "21231:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21231:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21231:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "21226:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "21219:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21219:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "21216:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21260:14:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "21269:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "21272:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mod",
                                  "nodeType": "YulIdentifier",
                                  "src": "21265:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21265:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "21260:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "mod_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "21191:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "21194:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "21200:1:64",
                            "type": ""
                          }
                        ],
                        "src": "21168:112:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21317:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21334:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21337:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21327:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21327:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21327:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21431:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21434:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21424:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21424:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21424:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21455:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21458:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "21448:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21448:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21448:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "21285:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21506:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21523:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21526:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21516:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21516:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21516:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21620:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21623:4:64",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21613:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21613:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21613:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21644:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21647:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "21637:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21637:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21637:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "21474:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21695:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21712:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21715:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21705:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21705:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21705:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21809:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21812:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21802:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21802:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21802:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21833:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21836:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "21826:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21826:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21826:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "21663:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21884:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21901:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21904:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21894:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21894:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21894:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21998:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22001:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21991:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21991:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21991:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22022:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22025:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "22015:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22015:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22015:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "21852:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22086:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22173:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22182:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22185:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22175:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22175:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22175:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22109:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "22120:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22127:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "22116:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22116:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "22106:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22106:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "22099:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22099:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "22096:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "22075:5:64",
                            "type": ""
                          }
                        ],
                        "src": "22041:154:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_bool(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_address_payablet_boolt_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_address(value_2)\n        value2 := value_2\n        value3 := abi_decode_bool(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_address_payablet_boolt_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_address(value_2)\n        value2 := value_2\n        value3 := abi_decode_bool(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n        let offset := calldataload(add(headStart, 160))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value5 := memPtr\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_boolt_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := abi_decode_bool(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_address_payablet_boolt_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := abi_decode_bool(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_address_payablet_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let value_2 := calldataload(add(headStart, 128))\n        if iszero(eq(value_2, and(value_2, 0xff))) { revert(0, 0) }\n        value4 := value_2\n        value5 := calldataload(add(headStart, 160))\n        value6 := calldataload(add(headStart, 192))\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            let _1 := 0x20\n            mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(pos, length), 0x20), 0)\n        }\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, 0x1901000000000000000000000000000000000000000000000000000000000000)\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_address_t_uint120__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        let _2 := 64\n        pos := add(headStart, _2)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _3 := mload(srcPtr)\n            mstore(pos, and(mload(_3), 0xffffffffffffffffffffffffffffffffffffffff))\n            mstore(add(pos, _1), mload(add(_3, _1)))\n            pos := add(pos, _2)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint136_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint136_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        let tail_1 := add(headStart, 64)\n        mstore(headStart, 64)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 96)\n        let _1 := 0x20\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        mstore(add(headStart, _1), sub(pos, headStart))\n        let pos_1 := pos\n        let length_1 := mload(value1)\n        mstore(pos, length_1)\n        pos_1 := add(pos, _1)\n        let srcPtr_1 := add(value1, _1)\n        let i_1 := 0\n        for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n        {\n            mstore(pos_1, and(mload(srcPtr_1), 0xffffffffffffffffffffffffffffffffff))\n            pos_1 := add(pos_1, _1)\n            srcPtr_1 := add(srcPtr_1, _1)\n        }\n        tail := pos_1\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, value0)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"INVALID_PERMIT_SIGNATURE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_4277c8319fd149a95e69be42a3e123adc1b4da419a70e9b9baf1b89820d48e58__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"INVALID_BASE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_4c5ad29f1d3e8bb498f3f1a2e1b9ae2d9e0aa620eec7213536f28c96e8c078d5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"MAX_OUT_RATIO\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_5bc54dac1e6c6942ca387ee7fa5b266c08fd485e140ffd0f93cb3919d20c5523__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"NOT_RECEIVED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_5cc85f4aca207e790130bbbe0f65d41050b113ebde71647d75b6406db2462409__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 8)\n        mstore(add(headStart, 64), \"ZERO_OUT\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6bebbe4a6d03d73ca34b8e24407254be08e942ad0a1388f8e02d78d6cedb6f8f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"MIN_BALANCE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ae8acaa6a695c6235cafd131eee9e0f44d7addbb9b6373a0f80fba9ff8078b7f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"MAX_IN_RATIO\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"PERMIT_DEADLINE_EXPIRED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 6)\n        mstore(add(headStart, 64), \"LOCKED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint120_t_uint136__to_t_uint120_t_uint136__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := div(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function mod_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := mod(x, y)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "9978": [
                  {
                    "length": 32,
                    "start": 1043
                  },
                  {
                    "length": 32,
                    "start": 6922
                  },
                  {
                    "length": 32,
                    "start": 8255
                  }
                ],
                "9980": [
                  {
                    "length": 32,
                    "start": 630
                  }
                ],
                "9983": [
                  {
                    "length": 32,
                    "start": 1004
                  },
                  {
                    "length": 32,
                    "start": 8448
                  },
                  {
                    "length": 32,
                    "start": 8675
                  },
                  {
                    "length": 32,
                    "start": 8895
                  }
                ],
                "9986": [
                  {
                    "length": 32,
                    "start": 1402
                  },
                  {
                    "length": 32,
                    "start": 6316
                  }
                ],
                "11932": [
                  {
                    "length": 32,
                    "start": 3789
                  }
                ],
                "11935": [
                  {
                    "length": 32,
                    "start": 4086
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101da5760003560e01c806367e4ac2c11610104578063a69840a8116100a2578063c14ad80211610071578063c14ad8021461056c578063cf58879a14610575578063d505accf1461059c578063dd62ed3e146105af57600080fd5b8063a69840a81461050c578063a8f1f52e14610533578063a9059cbb14610546578063af8c09bf1461055957600080fd5b80637ecebe00116100de5780637ecebe00146104905780638ae45441146104b057806392bc3219146104c657806395d89b41146104d057600080fd5b806367e4ac2c1461044857806370a082311461045d5780637ba0e2e71461047d57600080fd5b806330adf81f1161017c578063499a3c501161014b578063499a3c50146103d45780634da31827146103e757806354cf2aeb1461040e578063627dd56a1461043557600080fd5b806330adf81f146102f9578063313ce567146103205780633644e5151461033a578063469e90671461034257600080fd5b80630c0a0cd2116101b85780630c0a0cd21461027157806318160ddd146102bd57806323b872dd146102c65780632a07b6c7146102d957600080fd5b8063053da1c8146101df57806306fdde0314610205578063095ea7b31461024e575b600080fd5b6101f26101ed366004612b1a565b6105da565b6040519081526020015b60405180910390f35b6102416040518060400160405280600e81526020017f5375736869204c5020546f6b656e00000000000000000000000000000000000081525081565b6040516101fc9190612dbc565b61026161025c3660046129fd565b610982565b60405190151581526020016101fc565b6102987f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fc565b6101f260005481565b6102616102d4366004612a62565b6109fc565b6102ec6102e7366004612b1a565b610b48565b6040516101fc9190612cc9565b6101f27f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610328601281565b60405160ff90911681526020016101fc565b6101f2610ec9565b61039b6103503660046127d1565b6008602052600090815260409020546effffffffffffffffffffffffffffff8116906f01000000000000000000000000000000900470ffffffffffffffffffffffffffffffffff1682565b604080516effffffffffffffffffffffffffffff909316835270ffffffffffffffffffffffffffffffffff9091166020830152016101fc565b6101f26103e2366004612b1a565b611018565b6102987f000000000000000000000000000000000000000000000000000000000000000081565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b6101f2610443366004612b1a565b61101f565b610450611349565b6040516101fc9190612c6f565b6101f261046b3660046127d1565b60016020526000908152604090205481565b6101f261048b366004612b1a565b6113b8565b6101f261049e3660046127d1565b60036020526000908152604090205481565b6104b86116da565b6040516101fc929190612d2e565b6104ce6118aa565b005b6102416040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b6101f27f54726964656e743a496e6465780000000000000000000000000000000000000081565b6101f2610541366004612b1a565b61194d565b6102616105543660046129fd565b611983565b6101f2610567366004612b1a565b611a08565b6101f260065481565b6102987f000000000000000000000000000000000000000000000000000000000000000081565b6104ce6105aa366004612aa3565b611c8b565b6101f26105bd366004612a29565b600260209081526000928352604080842090915290825290205481565b600060075460011461064d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600260075560008080808080610665888a018a612850565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260086020526040808220928816825290208154979d50959b5093995091975095509350916106d3906effffffffffffffffffffffffffffff166106ce6002670de0b6b3a7640000612de7565b611fdd565b84111561073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4d41585f494e5f524154494f00000000000000000000000000000000000000006044820152606401610644565b815481546107929186916effffffffffffffffffffffffffffff8083169270ffffffffffffffffffffffffffffffffff6f0100000000000000000000000000000091829004811693928316929190910416612028565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152909950339063bd50c7b1906107d1908690600401612dbc565b600060405180830381600087803b1580156107eb57600080fd5b505af11580156107ff573d6000803e3d6000fd5b505083546effffffffffffffffffffffffffffff16860191506108239050896120b2565b101561088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f524543454956454400000000000000000000000000000000000000006044820152606401610644565b81546effffffffffffffffffffffffffffff808216860181167fffffffffffffffffffffffffffffffffff00000000000000000000000000000092831617845582548082168c900390911691161781556108e7878a888861217c565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062878d604051610966929190918252602082015260400190565b60405180910390a4505060016007555094979650505050505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109ea9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610a995773ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915281208054849290610a93908490612e38565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604081208054849290610ace908490612e38565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260016020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b369086815260200190565b60405180910390a35060019392505050565b6060600754600114610bb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610644565b600260075560008080610bcb858701876129bf565b9250925092506000610bdf82600054612322565b60055490915067ffffffffffffffff811115610bfd57610bfd612f29565b604051908082528060200260200182016040528015610c4257816020015b6040805180820190915260008082526020820152815260200190600190039081610c1b5790505b509450610c4f308361235c565b60005b600554811015610eb857600060058281548110610c7157610c71612efa565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16808352600890915260408220549092506effffffffffffffffffffffffffffff1690610cc18583611fdd565b90506effffffffffffffffffffffffffffff8116610d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5a45524f5f4f55540000000000000000000000000000000000000000000000006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260086020526040902080547fffffffffffffffffffffffffffffffffff00000000000000000000000000000081166effffffffffffffffffffffffffffff918216849003821617909155610db090849083168a8a61217c565b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001826effffffffffffffffffffffffffffff16815250898581518110610dfe57610dfe612efa565b60200260200101819052508773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3dd1df88dc92e2788892542d81f999d720a44b4c127065d45c128f4f59fdc3738584604051610e9a92919073ffffffffffffffffffffffffffffffffffffffff9290921682526effffffffffffffffffffffffffffff16602082015260400190565b60405180910390a35050508080610eb090612e4f565b915050610c52565b505060016007555091949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000004614610ff35750604080518082018252600e81527f5375736869204c5020546f6b656e00000000000000000000000000000000000060209182015281518083018352600181527f31000000000000000000000000000000000000000000000000000000000000009082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000806000fd5b600060075460011461108d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610644565b60026007556000808080806110a4878901896127ee565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260086020526040808220928716825290208154969b5094995092975090955093509161110b906effffffffffffffffffffffffffffff166106ce6002670de0b6b3a7640000612de7565b831115611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4d41585f494e5f524154494f00000000000000000000000000000000000000006044820152606401610644565b815481546111ca9185916effffffffffffffffffffffffffffff8083169270ffffffffffffffffffffffffffffffffff6f0100000000000000000000000000000091829004811693928316929190910416612028565b82549098506effffffffffffffffffffffffffffff1683016111eb886120b2565b1015611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f524543454956454400000000000000000000000000000000000000006044820152606401610644565b81546effffffffffffffffffffffffffffff808216850181167fffffffffffffffffffffffffffffffffff00000000000000000000000000000092831617845582548082168b900390911691161781556112af8689878761217c565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062868c60405161132e929190918252602082015260400190565b60405180910390a45050600160075550939695505050505050565b606060058054806020026020016040519081016040528092919081815260200182805480156113ae57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611383575b5050505050905090565b6000600754600114611426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610644565b600260075560008061143a848601866129fd565b91509150600061144c82600054612322565b905060005b6005548110156116c15760006005828154811061147057611470612efa565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16808352600890915260408220549092506effffffffffffffffffffffffffffff1690816114c157846114ed565b6114ed856effffffffffffffffffffffffffffff16836effffffffffffffffffffffffffffff16611fdd565b905061150664e8d4a51000670de0b6b3a7640000612de7565b816effffffffffffffffffffffffffffff161015611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f42414c414e43450000000000000000000000000000000000000000006044820152606401610644565b8181016effffffffffffffffffffffffffffff1661159d846120b2565b1015611605576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f524543454956454400000000000000000000000000000000000000006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526008602090815260409182902080547fffffffffffffffffffffffffffffffffff00000000000000000000000000000081166effffffffffffffffffffffffffffff918216880182161790915582519384528516908301529189169133917ff9403b28cc8805935e0ce6943ed646d5fde3d1e14f6b398e85bfa2851d1b85f7910160405180910390a350505080806116b990612e4f565b915050611451565b506116cc83836123ef565b506001600755949350505050565b60055460609081908067ffffffffffffffff8111156116fb576116fb612f29565b604051908082528060200260200182016040528015611724578160200160208202803683370190505b5092508067ffffffffffffffff81111561174057611740612f29565b604051908082528060200260200182016040528015611769578160200160208202803683370190505b50915060005b818110156118a457600860006005838154811061178e5761178e612efa565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205484516effffffffffffffffffffffffffffff909116908590839081106117e8576117e8612efa565b602002602001018181525050600860006005838154811061180b5761180b612efa565b60009182526020808320919091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205483516f0100000000000000000000000000000090910470ffffffffffffffffffffffffffffffffff169084908390811061187a5761187a612efa565b70ffffffffffffffffffffffffffffffffff9092166020928302919091019091015260010161176f565b50509091565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b15801561191057600080fd5b505afa158015611924573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119489190612b8c565b600655565b6000808080808061196087890189612bc9565b945094509450945094506119778585858585612028565b98975050505050505050565b336000908152600160205260408120805483919083906119a4908490612e38565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109ea9086815260200190565b6000600754600114611a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610644565b60026007556000808080611a8c86880188612970565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260086020526040812080549154600454969a509498509296509094509092611b2e926effffffffffffffffffffffffffffff83169270ffffffffffffffffffffffffffffffffff6f0100000000000000000000000000000090910481169216867f000000000000000000000000000000000000000000000000000000000000000061245f565b8154909650611b66906effffffffffffffffffffffffffffff16611b5b6003670de0b6b3a7640000612de7565b6106ce906001612dcf565b861115611bcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d41585f4f55545f524154494f000000000000000000000000000000000000006044820152606401610644565b80546effffffffffffffffffffffffffffff808216889003167fffffffffffffffffffffffffffffffffff000000000000000000000000000000909116178155611c19308361235c565b611c258587868661217c565b6040805173ffffffffffffffffffffffffffffffffffffffff87811682526020820189905286169133917f3dd1df88dc92e2788892542d81f999d720a44b4c127065d45c128f4f59fdc373910160405180910390a3505060016007555091949350505050565b42841015611cf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610644565b6000611cff610ec9565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c92909190611d5a83612e4f565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611dfb9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611e84573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611eff57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611f65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e415455524500000000000000006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b600080611fea8385612dfb565b905060006120016002670de0b6b3a7640000612de7565b61200b9083612dcf565b905061201f670de0b6b3a764000082612de7565b95945050505050565b6000806120358584612322565b9050600061206d887f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a764000003611fdd565b9050600061207d88838a01612322565b9050600061208b828561250e565b9050670de0b6b3a76400008190036120a38882611fdd565b9b9a5050505050505050505050565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301523060248301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b15801561214457600080fd5b505afa158015612158573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f69190612b8c565b8015612265576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152306024830152838116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b15801561222657600080fd5b505af115801561223a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225e9190612ba5565b505061231c565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301528381166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401600060405180830381600087803b15801561230357600080fd5b505af1158015612317573d6000803e3d6000fd5b505050505b50505050565b600080612337670de0b6b3a764000085612dfb565b90506000612346600285612de7565b6123509083612dcf565b905061201f8482612de7565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081208054839290612391908490612e38565b909155505060008054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b806000808282546124009190612dcf565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016123e3565b60008061246c8786612322565b9050600061247a8588612e38565b905060006124888289612322565b905060006124a7826124a2670de0b6b3a764000087612322565b612631565b905060006124b5828d611fdd565b905060006124c3828e612e38565b90506000886124da88670de0b6b3a7640000612e38565b6124e49190612dfb565b90506124fc826106ce83670de0b6b3a7640000612e38565b9e9d5050505050505050505050505050565b60008260011115801561253f57506001612531670de0b6b3a76400006002612dfb565b61253b9190612e38565b8311155b6125a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f494e56414c49445f4241534500000000000000000000000000000000000000006044820152606401610644565b6000670de0b6b3a76400006125ba8185612de7565b6125c49190612dfb565b905060006125d28285612e38565b905060006125ec866124a2670de0b6b3a764000086612de7565b9050816125f7578093505b600061261a87846126156402540be400670de0b6b3a7640000612de7565b6126a7565b90506126268282611fdd565b979650505050505050565b600061263e600283612e88565b61265057670de0b6b3a7640000612652565b825b905061265f600283612de7565b91505b8115612686576126728380612dfb565b925061267f600283612de7565b9150612662565b612691600283612e88565b156109f6576126a08382612dfb565b9392505050565b60008281806126be87670de0b6b3a7640000612797565b670de0b6b3a76400009550909250905083600060015b87831061278a5760006126ef670de0b6b3a764000083612dfb565b905060008061270f8961270a670de0b6b3a764000086612e38565b612797565b91509150612721866106ce848b611fdd565b955061272d8684612322565b95508561273c5750505061278a565b8615612746579315935b8015612750579315935b841561276757612760868b612e38565b9950612774565b612771868b612dcf565b99505b505050808061278290612e4f565b9150506126d4565b5050505050509392505050565b6000808284106127ad57505080820360006127b5565b505081810360015b9250929050565b803580151581146127cc57600080fd5b919050565b6000602082840312156127e357600080fd5b81356126a081612f58565b600080600080600060a0868803121561280657600080fd5b853561281181612f58565b9450602086013561282181612f58565b9350604086013561283181612f58565b925061283f606087016127bc565b949793965091946080013592915050565b60008060008060008060c0878903121561286957600080fd5b863561287481612f58565b9550602087013561288481612f58565b9450604087013561289481612f58565b93506128a2606088016127bc565b92506080870135915060a087013567ffffffffffffffff808211156128c657600080fd5b818901915089601f8301126128da57600080fd5b8135818111156128ec576128ec612f29565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561293257612932612f29565b816040528281528c602084870101111561294b57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b6000806000806080858703121561298657600080fd5b843561299181612f58565b935060208501356129a181612f58565b92506129af604086016127bc565b9396929550929360600135925050565b6000806000606084860312156129d457600080fd5b83356129df81612f58565b92506129ed602085016127bc565b9150604084013590509250925092565b60008060408385031215612a1057600080fd5b8235612a1b81612f58565b946020939093013593505050565b60008060408385031215612a3c57600080fd5b8235612a4781612f58565b91506020830135612a5781612f58565b809150509250929050565b600080600060608486031215612a7757600080fd5b8335612a8281612f58565b92506020840135612a9281612f58565b929592945050506040919091013590565b600080600080600080600060e0888a031215612abe57600080fd5b8735612ac981612f58565b96506020880135612ad981612f58565b95506040880135945060608801359350608088013560ff81168114612afd57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060208385031215612b2d57600080fd5b823567ffffffffffffffff80821115612b4557600080fd5b818501915085601f830112612b5957600080fd5b813581811115612b6857600080fd5b866020828501011115612b7a57600080fd5b60209290920196919550909350505050565b600060208284031215612b9e57600080fd5b5051919050565b60008060408385031215612bb857600080fd5b505080516020909101519092909150565b600080600080600060a08688031215612be157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000815180845260005b81811015612c2a57602081850181015186830182015201612c0e565b81811115612c3c576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020808252825182820181905260009190848201906040850190845b81811015612cbd57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612c8b565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015612d21578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101612ce6565b5091979650505050505050565b604080825283519082018190526000906020906060840190828701845b82811015612d6757815184529284019290840190600101612d4b565b5050508381038285015284518082528583019183019060005b81811015612daf57835170ffffffffffffffffffffffffffffffffff1683529284019291840191600101612d80565b5090979650505050505050565b6020815260006126a06020830184612c04565b60008219821115612de257612de2612e9c565b500190565b600082612df657612df6612ecb565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e3357612e33612e9c565b500290565b600082821015612e4a57612e4a612e9c565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612e8157612e81612e9c565b5060010190565b600082612e9757612e97612ecb565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114612f7a57600080fd5b5056fea26469706673582212200010f5602b54ecd3b812beb54c93d5893ba55e850e19c6b4253f27507111877964736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x67E4AC2C GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xA69840A8 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xC14AD802 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x56C JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x575 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x59C JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x50C JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x533 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x546 JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x490 JUMPI DUP1 PUSH4 0x8AE45441 EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x448 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x45D JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x47D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x30ADF81F GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x3D4 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x3E7 JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0x627DD56A EQ PUSH2 0x435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x2F9 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x320 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x33A JUMPI DUP1 PUSH4 0x469E9067 EQ PUSH2 0x342 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2C6 JUMPI DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x24E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x5DA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x241 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FC SWAP2 SWAP1 PUSH2 0x2DBC JUMP JUMPDEST PUSH2 0x261 PUSH2 0x25C CALLDATASIZE PUSH1 0x4 PUSH2 0x29FD JUMP JUMPDEST PUSH2 0x982 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FC JUMP JUMPDEST PUSH2 0x298 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FC JUMP JUMPDEST PUSH2 0x1F2 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x261 PUSH2 0x2D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A62 JUMP JUMPDEST PUSH2 0x9FC JUMP JUMPDEST PUSH2 0x2EC PUSH2 0x2E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0xB48 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FC SWAP2 SWAP1 PUSH2 0x2CC9 JUMP JUMPDEST PUSH2 0x1F2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x328 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FC JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0xEC9 JUMP JUMPDEST PUSH2 0x39B PUSH2 0x350 CALLDATASIZE PUSH1 0x4 PUSH2 0x27D1 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP1 PUSH16 0x1000000000000000000000000000000 SWAP1 DIV PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1FC JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x3E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x1018 JUMP JUMPDEST PUSH2 0x298 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x443 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x101F JUMP JUMPDEST PUSH2 0x450 PUSH2 0x1349 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FC SWAP2 SWAP1 PUSH2 0x2C6F JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x46B CALLDATASIZE PUSH1 0x4 PUSH2 0x27D1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x13B8 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x49E CALLDATASIZE PUSH1 0x4 PUSH2 0x27D1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x4B8 PUSH2 0x16DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FC SWAP3 SWAP2 SWAP1 PUSH2 0x2D2E JUMP JUMPDEST PUSH2 0x4CE PUSH2 0x18AA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x241 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH32 0x54726964656E743A496E64657800000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x541 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x194D JUMP JUMPDEST PUSH2 0x261 PUSH2 0x554 CALLDATASIZE PUSH1 0x4 PUSH2 0x29FD JUMP JUMPDEST PUSH2 0x1983 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x567 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x1A08 JUMP JUMPDEST PUSH2 0x1F2 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x298 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x4CE PUSH2 0x5AA CALLDATASIZE PUSH1 0x4 PUSH2 0x2AA3 JUMP JUMPDEST PUSH2 0x1C8B JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x5BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2A29 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x64D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x665 DUP9 DUP11 ADD DUP11 PUSH2 0x2850 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP3 DUP9 AND DUP3 MSTORE SWAP1 KECCAK256 DUP2 SLOAD SWAP8 SWAP14 POP SWAP6 SWAP12 POP SWAP4 SWAP10 POP SWAP2 SWAP8 POP SWAP6 POP SWAP4 POP SWAP2 PUSH2 0x6D3 SWAP1 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6CE PUSH1 0x2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x1FDD JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x73C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D41585F494E5F524154494F0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 SLOAD DUP2 SLOAD PUSH2 0x792 SWAP2 DUP7 SWAP2 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP3 PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH16 0x1000000000000000000000000000000 SWAP2 DUP3 SWAP1 DIV DUP2 AND SWAP4 SWAP3 DUP4 AND SWAP3 SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x2028 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP10 POP CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x7D1 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2DBC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7FF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP DUP4 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 ADD SWAP2 POP PUSH2 0x823 SWAP1 POP DUP10 PUSH2 0x20B2 JUMP JUMPDEST LT ISZERO PUSH2 0x88B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F52454345495645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP7 ADD DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 SWAP3 DUP4 AND OR DUP5 SSTORE DUP3 SLOAD DUP1 DUP3 AND DUP13 SWAP1 SUB SWAP1 SWAP2 AND SWAP2 AND OR DUP2 SSTORE PUSH2 0x8E7 DUP8 DUP11 DUP9 DUP9 PUSH2 0x217C JUMP JUMPDEST DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP8 DUP14 PUSH1 0x40 MLOAD PUSH2 0x966 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x9EA SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xA99 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xA93 SWAP1 DUP5 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xACE SWAP1 DUP5 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xB36 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0xBB6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0xBCB DUP6 DUP8 ADD DUP8 PUSH2 0x29BF JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 PUSH2 0xBDF DUP3 PUSH1 0x0 SLOAD PUSH2 0x2322 JUMP JUMPDEST PUSH1 0x5 SLOAD SWAP1 SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBFD JUMPI PUSH2 0xBFD PUSH2 0x2F29 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC42 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xC1B JUMPI SWAP1 POP JUMPDEST POP SWAP5 POP PUSH2 0xC4F ADDRESS DUP4 PUSH2 0x235C JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x5 SLOAD DUP2 LT ISZERO PUSH2 0xEB8 JUMPI PUSH1 0x0 PUSH1 0x5 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xC71 JUMPI PUSH2 0xC71 PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD SWAP1 SWAP3 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0xCC1 DUP6 DUP4 PUSH2 0x1FDD JUMP JUMPDEST SWAP1 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xD3B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5A45524F5F4F5554000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 DUP2 AND PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP5 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH2 0xDB0 SWAP1 DUP5 SWAP1 DUP4 AND DUP11 DUP11 PUSH2 0x217C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xDFE JUMPI PUSH2 0xDFE PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x3DD1DF88DC92E2788892542D81F999D720A44B4C127065D45C128F4F59FDC373 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0xE9A SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP DUP1 DUP1 PUSH2 0xEB0 SWAP1 PUSH2 0x2E4F JUMP JUMPDEST SWAP2 POP POP PUSH2 0xC52 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP2 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0xFF3 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x108D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x10A4 DUP8 DUP10 ADD DUP10 PUSH2 0x27EE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP3 DUP8 AND DUP3 MSTORE SWAP1 KECCAK256 DUP2 SLOAD SWAP7 SWAP12 POP SWAP5 SWAP10 POP SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP SWAP2 PUSH2 0x110B SWAP1 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6CE PUSH1 0x2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST DUP4 GT ISZERO PUSH2 0x1174 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D41585F494E5F524154494F0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 SLOAD DUP2 SLOAD PUSH2 0x11CA SWAP2 DUP6 SWAP2 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP3 PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH16 0x1000000000000000000000000000000 SWAP2 DUP3 SWAP1 DIV DUP2 AND SWAP4 SWAP3 DUP4 AND SWAP3 SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x2028 JUMP JUMPDEST DUP3 SLOAD SWAP1 SWAP9 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 ADD PUSH2 0x11EB DUP9 PUSH2 0x20B2 JUMP JUMPDEST LT ISZERO PUSH2 0x1253 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F52454345495645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP6 ADD DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 SWAP3 DUP4 AND OR DUP5 SSTORE DUP3 SLOAD DUP1 DUP3 AND DUP12 SWAP1 SUB SWAP1 SWAP2 AND SWAP2 AND OR DUP2 SSTORE PUSH2 0x12AF DUP7 DUP10 DUP8 DUP8 PUSH2 0x217C JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP7 DUP13 PUSH1 0x40 MLOAD PUSH2 0x132E SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP4 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x5 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x13AE JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1383 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x1426 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 PUSH2 0x143A DUP5 DUP7 ADD DUP7 PUSH2 0x29FD JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x144C DUP3 PUSH1 0x0 SLOAD PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x5 SLOAD DUP2 LT ISZERO PUSH2 0x16C1 JUMPI PUSH1 0x0 PUSH1 0x5 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1470 JUMPI PUSH2 0x1470 PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD SWAP1 SWAP3 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0x14C1 JUMPI DUP5 PUSH2 0x14ED JUMP JUMPDEST PUSH2 0x14ED DUP6 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1FDD JUMP JUMPDEST SWAP1 POP PUSH2 0x1506 PUSH5 0xE8D4A51000 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST DUP2 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x1580 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E5F42414C414E4345000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 DUP2 ADD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x159D DUP5 PUSH2 0x20B2 JUMP JUMPDEST LT ISZERO PUSH2 0x1605 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F52454345495645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 DUP2 AND PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP9 ADD DUP3 AND OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE DUP6 AND SWAP1 DUP4 ADD MSTORE SWAP2 DUP10 AND SWAP2 CALLER SWAP2 PUSH32 0xF9403B28CC8805935E0CE6943ED646D5FDE3D1E14F6B398E85BFA2851D1B85F7 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP DUP1 DUP1 PUSH2 0x16B9 SWAP1 PUSH2 0x2E4F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1451 JUMP JUMPDEST POP PUSH2 0x16CC DUP4 DUP4 PUSH2 0x23EF JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x60 SWAP1 DUP2 SWAP1 DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x16FB JUMPI PUSH2 0x16FB PUSH2 0x2F29 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1724 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1740 JUMPI PUSH2 0x1740 PUSH2 0x2F29 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1769 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x18A4 JUMPI PUSH1 0x8 PUSH1 0x0 PUSH1 0x5 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x178E JUMPI PUSH2 0x178E PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD DUP5 MLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP6 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x17E8 JUMPI PUSH2 0x17E8 PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x8 PUSH1 0x0 PUSH1 0x5 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x180B JUMPI PUSH2 0x180B PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD DUP4 MLOAD PUSH16 0x1000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP5 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x187A JUMPI PUSH2 0x187A PUSH2 0x2EFA JUMP JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x176F JUMP JUMPDEST POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1924 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1948 SWAP2 SWAP1 PUSH2 0x2B8C JUMP JUMPDEST PUSH1 0x6 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x1960 DUP8 DUP10 ADD DUP10 PUSH2 0x2BC9 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH2 0x1977 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2028 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP4 SWAP1 PUSH2 0x19A4 SWAP1 DUP5 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x9EA SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x1A76 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x1A8C DUP7 DUP9 ADD DUP9 PUSH2 0x2970 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SLOAD PUSH1 0x4 SLOAD SWAP7 SWAP11 POP SWAP5 SWAP9 POP SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP1 SWAP3 PUSH2 0x1B2E SWAP3 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP3 PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH16 0x1000000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 AND SWAP3 AND DUP7 PUSH32 0x0 PUSH2 0x245F JUMP JUMPDEST DUP2 SLOAD SWAP1 SWAP7 POP PUSH2 0x1B66 SWAP1 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B5B PUSH1 0x3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x6CE SWAP1 PUSH1 0x1 PUSH2 0x2DCF JUMP JUMPDEST DUP7 GT ISZERO PUSH2 0x1BCF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D41585F4F55545F524154494F00000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP1 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP9 SWAP1 SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 SWAP1 SWAP2 AND OR DUP2 SSTORE PUSH2 0x1C19 ADDRESS DUP4 PUSH2 0x235C JUMP JUMPDEST PUSH2 0x1C25 DUP6 DUP8 DUP7 DUP7 PUSH2 0x217C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP10 SWAP1 MSTORE DUP7 AND SWAP2 CALLER SWAP2 PUSH32 0x3DD1DF88DC92E2788892542D81F999D720A44B4C127065D45C128F4F59FDC373 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP2 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1CF5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CFF PUSH2 0xEC9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP3 DUP13 SWAP3 DUP13 SWAP3 DUP13 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x1D5A DUP4 PUSH2 0x2E4F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1DFB SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1EFF JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1F65 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1FEA DUP4 DUP6 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2001 PUSH1 0x2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x200B SWAP1 DUP4 PUSH2 0x2DCF JUMP JUMPDEST SWAP1 POP PUSH2 0x201F PUSH8 0xDE0B6B3A7640000 DUP3 PUSH2 0x2DE7 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2035 DUP6 DUP5 PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x206D DUP9 PUSH32 0x0 PUSH8 0xDE0B6B3A7640000 SUB PUSH2 0x1FDD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x207D DUP9 DUP4 DUP11 ADD PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x208B DUP3 DUP6 PUSH2 0x250E JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 DUP2 SWAP1 SUB PUSH2 0x20A3 DUP9 DUP3 PUSH2 0x1FDD JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2158 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9F6 SWAP2 SWAP1 PUSH2 0x2B8C JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2265 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x223A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x225E SWAP2 SWAP1 PUSH2 0x2BA5 JUMP JUMPDEST POP POP PUSH2 0x231C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2317 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2337 PUSH8 0xDE0B6B3A7640000 DUP6 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2346 PUSH1 0x2 DUP6 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x2350 SWAP1 DUP4 PUSH2 0x2DCF JUMP JUMPDEST SWAP1 POP PUSH2 0x201F DUP5 DUP3 PUSH2 0x2DE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x2391 SWAP1 DUP5 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP1 SLOAD DUP3 SWAP1 SUB DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0x2400 SWAP2 SWAP1 PUSH2 0x2DCF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x23E3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x246C DUP8 DUP7 PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x247A DUP6 DUP9 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2488 DUP3 DUP10 PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24A7 DUP3 PUSH2 0x24A2 PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x2322 JUMP JUMPDEST PUSH2 0x2631 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24B5 DUP3 DUP14 PUSH2 0x1FDD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24C3 DUP3 DUP15 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP9 PUSH2 0x24DA DUP9 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2E38 JUMP JUMPDEST PUSH2 0x24E4 SWAP2 SWAP1 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH2 0x24FC DUP3 PUSH2 0x6CE DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2E38 JUMP JUMPDEST SWAP15 SWAP14 POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 GT ISZERO DUP1 ISZERO PUSH2 0x253F JUMPI POP PUSH1 0x1 PUSH2 0x2531 PUSH8 0xDE0B6B3A7640000 PUSH1 0x2 PUSH2 0x2DFB JUMP JUMPDEST PUSH2 0x253B SWAP2 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST DUP4 GT ISZERO JUMPDEST PUSH2 0x25A5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F424153450000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x25BA DUP2 DUP6 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x25C4 SWAP2 SWAP1 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x25D2 DUP3 DUP6 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x25EC DUP7 PUSH2 0x24A2 PUSH8 0xDE0B6B3A7640000 DUP7 PUSH2 0x2DE7 JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x25F7 JUMPI DUP1 SWAP4 POP JUMPDEST PUSH1 0x0 PUSH2 0x261A DUP8 DUP5 PUSH2 0x2615 PUSH5 0x2540BE400 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x26A7 JUMP JUMPDEST SWAP1 POP PUSH2 0x2626 DUP3 DUP3 PUSH2 0x1FDD JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x263E PUSH1 0x2 DUP4 PUSH2 0x2E88 JUMP JUMPDEST PUSH2 0x2650 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x2652 JUMP JUMPDEST DUP3 JUMPDEST SWAP1 POP PUSH2 0x265F PUSH1 0x2 DUP4 PUSH2 0x2DE7 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 ISZERO PUSH2 0x2686 JUMPI PUSH2 0x2672 DUP4 DUP1 PUSH2 0x2DFB JUMP JUMPDEST SWAP3 POP PUSH2 0x267F PUSH1 0x2 DUP4 PUSH2 0x2DE7 JUMP JUMPDEST SWAP2 POP PUSH2 0x2662 JUMP JUMPDEST PUSH2 0x2691 PUSH1 0x2 DUP4 PUSH2 0x2E88 JUMP JUMPDEST ISZERO PUSH2 0x9F6 JUMPI PUSH2 0x26A0 DUP4 DUP3 PUSH2 0x2DFB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 DUP1 PUSH2 0x26BE DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2797 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP6 POP SWAP1 SWAP3 POP SWAP1 POP DUP4 PUSH1 0x0 PUSH1 0x1 JUMPDEST DUP8 DUP4 LT PUSH2 0x278A JUMPI PUSH1 0x0 PUSH2 0x26EF PUSH8 0xDE0B6B3A7640000 DUP4 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x270F DUP10 PUSH2 0x270A PUSH8 0xDE0B6B3A7640000 DUP7 PUSH2 0x2E38 JUMP JUMPDEST PUSH2 0x2797 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2721 DUP7 PUSH2 0x6CE DUP5 DUP12 PUSH2 0x1FDD JUMP JUMPDEST SWAP6 POP PUSH2 0x272D DUP7 DUP5 PUSH2 0x2322 JUMP JUMPDEST SWAP6 POP DUP6 PUSH2 0x273C JUMPI POP POP POP PUSH2 0x278A JUMP JUMPDEST DUP7 ISZERO PUSH2 0x2746 JUMPI SWAP4 ISZERO SWAP4 JUMPDEST DUP1 ISZERO PUSH2 0x2750 JUMPI SWAP4 ISZERO SWAP4 JUMPDEST DUP5 ISZERO PUSH2 0x2767 JUMPI PUSH2 0x2760 DUP7 DUP12 PUSH2 0x2E38 JUMP JUMPDEST SWAP10 POP PUSH2 0x2774 JUMP JUMPDEST PUSH2 0x2771 DUP7 DUP12 PUSH2 0x2DCF JUMP JUMPDEST SWAP10 POP JUMPDEST POP POP POP DUP1 DUP1 PUSH2 0x2782 SWAP1 PUSH2 0x2E4F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x26D4 JUMP JUMPDEST POP POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 LT PUSH2 0x27AD JUMPI POP POP DUP1 DUP3 SUB PUSH1 0x0 PUSH2 0x27B5 JUMP JUMPDEST POP POP DUP2 DUP2 SUB PUSH1 0x1 JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x27CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x27E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x26A0 DUP2 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2806 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2811 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x2821 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x2831 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 POP PUSH2 0x283F PUSH1 0x60 DUP8 ADD PUSH2 0x27BC JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP2 SWAP5 PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x2869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2874 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x2884 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x2894 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP4 POP PUSH2 0x28A2 PUSH1 0x60 DUP9 ADD PUSH2 0x27BC JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x28C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x28EC JUMPI PUSH2 0x28EC PUSH2 0x2F29 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2932 JUMPI PUSH2 0x2932 PUSH2 0x2F29 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP13 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x294B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2991 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x29A1 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 POP PUSH2 0x29AF PUSH1 0x40 DUP7 ADD PUSH2 0x27BC JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x29D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x29DF DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 POP PUSH2 0x29ED PUSH1 0x20 DUP6 ADD PUSH2 0x27BC JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2A1B DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2A47 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2A57 DUP2 PUSH2 0x2F58 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2A77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2A82 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2A92 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2ABE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x2AC9 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x2AD9 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2AFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2B45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2B68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2B7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2BB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2BE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP4 CALLDATALOAD SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2C2A JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x2C0E JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2C3C JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2CBD JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2C8B JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2D21 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2CE6 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2D67 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2D4B JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP5 MLOAD DUP1 DUP3 MSTORE DUP6 DUP4 ADD SWAP2 DUP4 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2DAF JUMPI DUP4 MLOAD PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2D80 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x26A0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2C04 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x2DE2 JUMPI PUSH2 0x2DE2 PUSH2 0x2E9C JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2DF6 JUMPI PUSH2 0x2DF6 PUSH2 0x2ECB JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x2E33 JUMPI PUSH2 0x2E33 PUSH2 0x2E9C JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x2E4A JUMPI PUSH2 0x2E4A PUSH2 0x2E9C JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x2E81 JUMPI PUSH2 0x2E81 PUSH2 0x2E9C JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2E97 JUMPI PUSH2 0x2E97 PUSH2 0x2ECB JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2F7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STOP LT CREATE2 PUSH1 0x2B SLOAD 0xEC 0xD3 0xB8 SLT 0xBE 0xB5 0x4C SWAP4 0xD5 DUP10 EXTCODESIZE 0xA5 0x5E DUP6 0xE NOT 0xC6 0xB4 0x25 EXTCODEHASH 0x27 POP PUSH18 0x11877964736F6C6343000807003300000000 ",
              "sourceMap": "537:14647:42:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8427:1213;;;;;;:::i;:::-;;:::i;:::-;;;13776:25:64;;;13764:2;13749:18;8427:1213:42;;;;;;;;486:46:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2581:203::-;;;;;;:::i;:::-;;:::i;:::-;;;13603:14:64;;13596:22;13578:41;;13566:2;13551:18;2581:203:45;13438:187:64;831:33:42;;;;;;;;8624:42:64;8612:55;;;8594:74;;8582:2;8567:18;831:33:42;8448:226:64;623:26:45;;;;;;3741:564;;;;;;:::i;:::-;;:::i;5006:1047:42:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1182:145:45:-;;1232:95;1182:145;;581:35;;614:2;581:35;;;;;20330:4:64;20318:17;;;20300:36;;20288:2;20273:18;581:35:45;20158:184:64;2071:201:45;;;:::i;2105:41:42:-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;19592:32:64;19580:45;;;19562:64;;19674:36;19662:49;;;19657:2;19642:18;;19635:77;19535:18;2105:41:42;19388:330:64;14549:101:42;;;;;;:::i;:::-;;:::i;870:39::-;;;;;792:32;;;;;7185:1113;;;;;;:::i;:::-;;:::i;14008:108::-;;;:::i;:::-;;;;;;;:::i;697:44:45:-;;;;;;:::i;:::-;;;;;;;;;;;;;;3802:1078:42;;;;;;:::i;:::-;;:::i;1390:41:45:-;;;;;;:::i;:::-;;;;;;;;;;;;;;14656:526:42;;;:::i;:::-;;;;;;;;:::i;9698:97::-;;;:::i;:::-;;538:37:45;;;;;;;;;;;;;;;;;;;;;1876:65:42;;;;;14122:421;;;;;;:::i;:::-;;:::i;3024:393:45:-;;;;;;:::i;:::-;;:::i;6228:829:42:-;;;;;;:::i;:::-;;:::i;1848:21::-;;;;;;915:47;;;;;4785:796:45;;;;;;:::i;:::-;;:::i;802:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;8427:1213:42;8497:17;2013:8;;2025:1;2013:13;2005:32;;;;;;;19256:2:64;2005:32:42;;;19238:21:64;19295:1;19275:18;;;19268:29;19333:8;19313:18;;;19306:36;19359:18;;2005:32:42;;;;;;;;;2058:1;2047:8;:12;8527:15:::1;::::0;;;;;8641:101:::1;::::0;;::::1;8665:4:::0;8641:101:::1;:::i;:::-;8779:16;::::0;;::::1;8753:23;8779:16:::0;;;:7:::1;:16;::::0;;;;;8832:17;;::::1;::::0;;;;8885:16;;8526:216;;-1:-1:-1;8526:216:42;;-1:-1:-1;8526:216:42;;-1:-1:-1;8526:216:42;;-1:-1:-1;8526:216:42;-1:-1:-1;8526:216:42;-1:-1:-1;8779:16:42;8880:36:::1;::::0;8885:16:::1;;1705:8;1712:1;1002:6;1705:8;:::i;:::-;8880:4;:36::i;:::-;8868:8;:48;;8860:73;;;::::0;::::1;::::0;;18563:2:64;8860:73:42::1;::::0;::::1;18545:21:64::0;18602:2;18582:18;;;18575:30;18641:14;18621:18;;;18614:42;18673:18;;8860:73:42::1;18361:336:64::0;8860:73:42::1;8980:16:::0;;9015:17;;8956:95:::1;::::0;8970:8;;8980:16:::1;::::0;;::::1;::::0;8998:15:::1;::::0;;;;::::1;::::0;::::1;::::0;9015:17;;::::1;::::0;9034:16;;;::::1;;8956:13;:95::i;:::-;9062:55;::::0;;;;8944:107;;-1:-1:-1;9077:10:42::1;::::0;9062:46:::1;::::0;:55:::1;::::0;9109:7;;9062:55:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;9352:16:42;;::::1;;9341:27:::0;::::1;::::0;-1:-1:-1;9320:17:42::1;::::0;-1:-1:-1;9329:7:42;9320:8:::1;:17::i;:::-;:48;;9312:73;;;::::0;::::1;::::0;;17546:2:64;9312:73:42::1;::::0;::::1;17528:21:64::0;17585:2;17565:18;;;17558:30;17624:14;17604:18;;;17597:42;17656:18;;9312:73:42::1;17344:336:64::0;9312:73:42::1;9399:37:::0;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;;::::0;;9450:39;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;;::::0;;9509:54:::1;9519:8:::0;9479:9;9540;9551:11;9509:9:::1;:54::i;:::-;9603:8;9578:55;;9594:7;9578:55;;9583:9;9578:55;;;9613:8;9623:9;9578:55;;;;;;20079:25:64::0;;;20135:2;20120:18;;20113:34;20067:2;20052:18;;19905:248;9578:55:42::1;;;;;;;;-1:-1:-1::0;;2091:1:42;2080:8;:12;-1:-1:-1;8427:1213:42;;;-1:-1:-1;;;;;;;8427:1213:42:o;2581:203:45:-;2675:10;2649:4;2665:21;;;:9;:21;;;;;;;;;:30;;;;;;;;;;:39;;;2719:37;2649:4;;2665:30;;2719:37;;;;2698:6;13776:25:64;;13764:2;13749:18;;13630:177;2719:37:45;;;;;;;;-1:-1:-1;2773:4:45;2581:203;;;;;:::o;3741:564::-;3882:17;;;3862:4;3882:17;;;:9;:17;;;;;;;;3900:10;3882:29;;;;;;;;3915:17;3882:50;3878:120;;3948:17;;;;;;;:9;:17;;;;;;;;3966:10;3948:29;;;;;;;:39;;3981:6;;3948:17;:39;;3981:6;;3948:39;:::i;:::-;;;;-1:-1:-1;;3878:120:45;4007:17;;;;;;;:9;:17;;;;;:27;;4028:6;;4007:17;:27;;4028:6;;4007:27;:::i;:::-;;;;-1:-1:-1;;4187:20:45;;;;;;;;:9;:20;;;;;;;:30;;;;;;4242:35;4187:20;;4242:35;;;;;;;4211:6;13776:25:64;;13764:2;13749:18;;13630:177;4242:35:45;;;;;;;;-1:-1:-1;4294:4:45;3741:564;;;;;:::o;5006:1047:42:-;5071:43;2013:8;;2025:1;2013:13;2005:32;;;;;;;19256:2:64;2005:32:42;;;19238:21:64;19295:1;19275:18;;;19268:29;19333:8;19313:18;;;19306:36;19359:18;;2005:32:42;19054:329:64;2005:32:42;2058:1;2047:8;:12;5127:17:::1;::::0;;5182:42:::1;::::0;;::::1;5193:4:::0;5182:42:::1;:::i;:::-;5126:98;;;;;;5235:13;5251:25;5256:6;5264:11;;5251:4;:25::i;:::-;5324:6;:13:::0;5235:41;;-1:-1:-1;5306:32:42::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;5306:32:42::1;;;;;;;;;;;;;;;;5287:51;;5349:28;5363:4;5370:6;5349:5;:28::i;:::-;5393:9;5388:659;5412:6;:13:::0;5408:17;::::1;5388:659;;;5446:16;5465:6;5472:1;5465:9;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;::::1;;5506:17:::0;;;:7:::1;:17:::0;;;;;;:25;5465:9;;-1:-1:-1;5506:25:42::1;;::::0;5573:20:::1;5578:5:::0;5506:25;5573:4:::1;:20::i;:::-;5545:49:::0;-1:-1:-1;5616:14:42::1;::::0;::::1;5608:35;;;::::0;::::1;::::0;;17887:2:64;5608:35:42::1;::::0;::::1;17869:21:64::0;17926:1;17906:18;;;17899:29;17964:10;17944:18;;;17937:38;17992:18;;5608:35:42::1;17685:331:64::0;5608:35:42::1;5764:17;::::0;::::1;;::::0;;;:7:::1;:17;::::0;;;;:38;;;;::::1;;::::0;;::::1;::::0;;::::1;::::0;::::1;;::::0;;;5830:54:::1;::::0;5764:17;;5830:54;::::1;5861:9:::0;5872:11;5830:9:::1;:54::i;:::-;5920:49;;;;;;;;5940:8;5920:49;;;;;;5958:9;5920:49;;;;::::0;5898:16:::1;5915:1;5898:19;;;;;;;;:::i;:::-;;;;;;:71;;;;6026:9;5988:48;;5993:10;5988:48;;;6005:8;6015:9;5988:48;;;;;;10263:42:64::0;10251:55;;;;10233:74;;10355:32;10343:45;10338:2;10323:18;;10316:73;10221:2;10206:18;;10059:336;5988:48:42::1;;;;;;;;5432:615;;;5427:3;;;;;:::i;:::-;;;;5388:659;;;-1:-1:-1::0;;2091:1:42;2080:8;:12;-1:-1:-1;5006:1047:42;;;-1:-1:-1;;;;5006:1047:42:o;2071:201:45:-;2120:23;2190:25;2173:13;:42;:92;;-1:-1:-1;1866:4:45;;;;;;;;;;;;;;;;;1900:10;;;;;;;;;;;;;;;1709:278;;1737:95;1709:278;;;14690:25:64;1850:22:45;14731:18:64;;;14724:34;1890:21:45;14774:18:64;;;14767:34;1929:13:45;14817:18:64;;;14810:34;1968:4:45;14860:19:64;;;;14853:84;;;;1709:278:45;;;;;;;;;;14662:19:64;;;;1709:278:45;;;1686:311;;;;;;2071:201::o;2173:92::-;-1:-1:-1;2218:17:45;;2071:201::o;14549:101:42:-;14616:7;14635:8;;;7185:1113;7250:17;2013:8;;2025:1;2013:13;2005:32;;;;;;;19256:2:64;2005:32:42;;;19238:21:64;19295:1;19275:18;;;19268:29;19333:8;19313:18;;;19306:36;19359:18;;2005:32:42;19054:329:64;2005:32:42;2058:1;2047:8;:12;7280:15:::1;::::0;;;;7372:94:::1;::::0;;::::1;7396:4:::0;7372:94:::1;:::i;:::-;7503:16;::::0;;::::1;7477:23;7503:16:::0;;;:7:::1;:16;::::0;;;;;7556:17;;::::1;::::0;;;;7609:16;;7279:187;;-1:-1:-1;7279:187:42;;-1:-1:-1;7279:187:42;;-1:-1:-1;7279:187:42;;-1:-1:-1;7279:187:42;-1:-1:-1;7503:16:42;7604:36:::1;::::0;7609:16:::1;;1705:8;1712:1;1002:6;1705:8;:::i;7604:36::-;7592:8;:48;;7584:73;;;::::0;::::1;::::0;;18563:2:64;7584:73:42::1;::::0;::::1;18545:21:64::0;18602:2;18582:18;;;18575:30;18641:14;18621:18;;;18614:42;18673:18;;7584:73:42::1;18361:336:64::0;7584:73:42::1;7704:16:::0;;7739:17;;7680:95:::1;::::0;7694:8;;7704:16:::1;::::0;;::::1;::::0;7722:15:::1;::::0;;;;::::1;::::0;::::1;::::0;7739:17;;::::1;::::0;7758:16;;;::::1;;7680:13;:95::i;:::-;8010:16:::0;;7668:107;;-1:-1:-1;8010:16:42::1;;7999:27:::0;::::1;7978:17;7987:7:::0;7978:8:::1;:17::i;:::-;:48;;7970:73;;;::::0;::::1;::::0;;17546:2:64;7970:73:42::1;::::0;::::1;17528:21:64::0;17585:2;17565:18;;;17558:30;17624:14;17604:18;;;17597:42;17656:18;;7970:73:42::1;17344:336:64::0;7970:73:42::1;8057:37:::0;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;;::::0;;8108:39;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;;::::0;;8167:54:::1;8177:8:::0;8137:9;8198;8209:11;8167:9:::1;:54::i;:::-;8261:8;8236:55;;8252:7;8236:55;;8241:9;8236:55;;;8271:8;8281:9;8236:55;;;;;;20079:25:64::0;;;20135:2;20120:18;;20113:34;20067:2;20052:18;;19905:248;8236:55:42::1;;;;;;;;-1:-1:-1::0;;2091:1:42;2080:8;:12;-1:-1:-1;7185:1113:42;;;-1:-1:-1;;;;;;7185:1113:42:o;14008:108::-;14059:23;14103:6;14094:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14008:108;:::o;3802:1078::-;3867:17;2013:8;;2025:1;2013:13;2005:32;;;;;;;19256:2:64;2005:32:42;;;19238:21:64;19295:1;19275:18;;;19268:29;19333:8;19313:18;;;19306:36;19359:18;;2005:32:42;19054:329:64;2005:32:42;2058:1;2047:8;:12;3897:17:::1;::::0;3934:36:::1;::::0;;::::1;3945:4:::0;3934:36:::1;:::i;:::-;3896:74;;;;3981:13;4005:25;4010:6;4018:11;;4005:4;:25::i;:::-;3981:50;;4047:9;4042:770;4066:6;:13:::0;4062:17;::::1;4042:770;;;4100:15;4118:6;4125:1;4118:9;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;::::1;;4159:16:::0;;;:7:::1;:16:::0;;;;;;:24;4118:9;;-1:-1:-1;4159:24:42::1;;::::0;4286:12;:52:::1;;4333:5;4286:52;;;4309:20;4314:5;4309:20;;4321:7;4309:20;;:4;:20::i;:::-;4267:71:::0;-1:-1:-1;1414:13:42::1;1421:6;1002;1414:13;:::i;:::-;4360:8;:23;;;;4352:47;;;::::0;::::1;::::0;;18223:2:64;4352:47:42::1;::::0;::::1;18205:21:64::0;18262:2;18242:18;;;18235:30;18301:13;18281:18;;;18274:41;18332:18;;4352:47:42::1;18021:335:64::0;4352:47:42::1;4644:7;4633:8;:18;4612:39;;:17;4621:7;4612:8;:17::i;:::-;:39;;4604:64;;;::::0;::::1;::::0;;17546:2:64;4604:64:42::1;::::0;::::1;17528:21:64::0;17585:2;17565:18;;;17558:30;17624:14;17604:18;;;17597:42;17656:18;;4604:64:42::1;17344:336:64::0;4604:64:42::1;4686:16;::::0;;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;;:36;;;;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;;::::0;;;4755:46;;10233:74:64;;;10343:45;;10323:18;;;10316:73;4755:46:42;;::::1;::::0;4760:10:::1;::::0;4755:46:::1;::::0;10206:18:64;4755:46:42::1;;;;;;;4086:726;;;4081:3;;;;;:::i;:::-;;;;4042:770;;;;4821:24;4827:9;4838:6;4821:5;:24::i;:::-;-1:-1:-1::0;2091:1:42;2080:8;:12;4867:6;3802:1078;-1:-1:-1;;;;3802:1078:42:o;14656:526::-;14790:6;:13;14710:25;;;;14790:13;14824:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14824:21:42;;14813:32;;14879:6;14865:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14865:21:42;;14855:31;;15005:9;15000:166;15024:6;15020:1;:10;15000:166;;;15069:7;:18;15077:6;15084:1;15077:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;15069:18;;;;;;;;;;;;:26;15055:11;;15069:26;;;;;15055:8;;15064:1;;15055:11;;;;;;:::i;:::-;;;;;;:40;;;;;15126:7;:18;15134:6;15141:1;15134:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;15126:18;;;;;;;;;;;;:25;15113:10;;15126:25;;;;;;;15113:10;;15121:1;;15113:10;;;;;;:::i;:::-;:38;;;;:10;;;;;;;;;;;:38;15032:3;;15000:166;;;;14763:419;14656:526;;:::o;9698:97::-;9764:14;9748:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9739:6;:49;9698:97::o;14122:421::-;14195:17;;;;;;14346:76;;;;14370:4;14346:76;:::i;:::-;14224:198;;;;;;;;;;14444:92;14458:13;14473:14;14489:13;14504:15;14521:14;14444:13;:92::i;:::-;14432:104;14122:421;-1:-1:-1;;;;;;;;14122:421:42:o;3024:393:45:-;3121:10;3095:4;3111:21;;;:9;:21;;;;;:31;;3136:6;;3111:21;3095:4;;3111:31;;3136:6;;3111:31;:::i;:::-;;;;-1:-1:-1;;3295:20:45;;;;;;;:9;:20;;;;;;;:30;;;;;;3350:39;3359:10;;3350:39;;;;3319:6;13776:25:64;;13764:2;13749:18;;13630:177;6228:829:42;6299:17;2013:8;;2025:1;2013:13;2005:32;;;;;;;19256:2:64;2005:32:42;;;19238:21:64;19295:1;19275:18;;;19268:29;19333:8;19313:18;;;19306:36;19359:18;;2005:32:42;19054:329:64;2005:32:42;2058:1;2047:8;:12;6329:16:::1;::::0;;;6402:51:::1;::::0;;::::1;6413:4:::0;6402:51:::1;:::i;:::-;6491:17;::::0;::::1;6464:24;6491:17:::0;;;:7:::1;:17;::::0;;;;6560;;6597:11;;6610::::1;::::0;6328:125;;-1:-1:-1;6328:125:42;;-1:-1:-1;6328:125:42;;-1:-1:-1;6328:125:42;;-1:-1:-1;6491:17:42;;6531:108:::1;::::0;6560:17:::1;::::0;::::1;::::0;6579:16:::1;::::0;;;::::1;::::0;::::1;::::0;6610:11:::1;6328:125:::0;6631:7:::1;6531:28;:108::i;:::-;6676:17:::0;;6519:120;;-1:-1:-1;6671:38:42::1;::::0;6676:17:::1;;1762:8;1769:1;1002:6;1762:8;:::i;:::-;1761:14;::::0;1774:1:::1;1761:14;:::i;6671:38::-;6658:9;:51;;6650:77;;;::::0;::::1;::::0;;17204:2:64;6650:77:42::1;::::0;::::1;17186:21:64::0;17243:2;17223:18;;;17216:30;17282:15;17262:18;;;17255:43;17315:18;;6650:77:42::1;17002:337:64::0;6650:77:42::1;6836:39:::0;;::::1;::::0;;::::1;::::0;;::::1;;::::0;;;::::1;;::::0;;6895:28:::1;6909:4;6916:6:::0;6895:5:::1;:28::i;:::-;6933:54;6943:8;6953:9;6964;6975:11;6933:9;:54::i;:::-;7002:48;::::0;;::::1;10592:55:64::0;;;10574:74;;10679:2;10664:18;;10657:34;;;7002:48:42;::::1;::::0;7007:10:::1;::::0;7002:48:::1;::::0;10547:18:64;7002:48:42::1;;;;;;;-1:-1:-1::0;;2091:1:42;2080:8;:12;-1:-1:-1;6228:829:42;;;-1:-1:-1;;;;6228:829:42:o;4785:796:45:-;4999:15;4987:8;:27;;4979:63;;;;;;;18904:2:64;4979:63:45;;;18886:21:64;18943:2;18923:18;;;18916:30;18982:25;18962:18;;;18955:53;19025:18;;4979:63:45;18702:347:64;4979:63:45;5052:14;5154:18;:16;:18::i;:::-;5252:13;;;;;;;:6;:13;;;;;:15;;1232:95;;5228:5;;5235:7;;5244:6;;5252:15;;:13;:15;;;:::i;:::-;;;;-1:-1:-1;5200:78:45;;;;;;14099:25:64;;;;14143:42;14221:15;;;14201:18;;;14194:43;14273:15;;;;14253:18;;;14246:43;14305:18;;;14298:34;14348:19;;;14341:35;14392:19;;;14385:35;;;14071:19;;5200:78:45;;;;;;;;;;;;5190:89;;;;;;5092:201;;;;;;;;8269:66:64;8257:79;;8361:1;8352:11;;8345:27;;;;8397:2;8388:12;;8381:28;8434:2;8425:12;;7999:444;5092:201:45;;;;;;;;;;;;;;5069:234;;5092:201;5069:234;;;;5313:24;5340:26;;;;;;;;;15175:25:64;;;15248:4;15236:17;;15216:18;;;15209:45;;;;15270:18;;;15263:34;;;15313:18;;;15306:34;;;5069:234:45;;-1:-1:-1;5313:24:45;5340:26;;15147:19:64;;5340:26:45;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5340:26:45;;;;;;-1:-1:-1;;5384:30:45;;;;;;;:59;;;5438:5;5418:25;;:16;:25;;;5384:59;5376:96;;;;;;;16510:2:64;5376:96:45;;;16492:21:64;16549:2;16529:18;;;16522:30;16588:26;16568:18;;;16561:54;16632:18;;5376:96:45;16308:348:64;5376:96:45;5482:27;;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:45;;;5542:32;13776:25:64;;;5482:36:45;;5542:32;;;;;13749:18:64;5542:32:45;;;;;;;4969:612;;4785:796;;;;;;;:::o;13342:168:42:-;13401:10;;13436:5;13440:1;13436;:5;:::i;:::-;13423:18;-1:-1:-1;13451:10:42;13470:8;13477:1;1002:6;13470:8;:::i;:::-;13464:15;;:2;:15;:::i;:::-;13451:28;-1:-1:-1;13494:9:42;1002:6;13451:28;13494:9;:::i;:::-;13489:14;13342:168;-1:-1:-1;;;;;13342:168:42:o;9944:695::-;10155:17;10184:19;10206:35;10211:13;10226:14;10206:4;:35::i;:::-;10184:57;;10355:18;10376:37;10381:13;10404:7;1002:6;10397:14;10376:4;:37::i;:::-;10355:58;;10427:9;10439:49;10444:14;10477:10;10460:14;:27;10439:4;:49::i;:::-;10427:61;;10502:9;10514:24;10523:1;10526:11;10514:8;:24::i;:::-;10502:36;-1:-1:-1;1002:6:42;10564:8;;;10598:24;10603:15;10564:8;10598:4;:24::i;:::-;10586:36;9944:695;-1:-1:-1;;;;;;;;;;;9944:695:42:o;9801:137::-;9894:37;;;;;:15;8932::64;;;9894:37:42;;;8914:34:64;9925:4:42;8964:18:64;;;8957:43;9857:15:42;;9894:5;:15;;;;;;8826:18:64;;9894:37:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13687:315::-;13828:11;13824:172;;;13855:51;;;;;:14;9357:15:64;;;13855:51:42;;;9339:34:64;13885:4:42;9389:18:64;;;9382:43;9461:15;;;9441:18;;;9434:43;13896:1:42;9493:18:64;;;9486:34;9536:19;;;9529:35;;;13855:5:42;:14;;;;9250:19:64;;13855:51:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;13824:172;;;13937:48;;;;;:14;9885:15:64;;;13937:48:42;;;9867:34:64;13967:4:42;9917:18:64;;;9910:43;9989:15;;;9969:18;;;9962:43;10021:18;;;10014:34;;;13937:5:42;:14;;;;9778:19:64;;13937:48:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13824:172;13687:315;;;;:::o;13516:165::-;13575:10;;13610:8;1002:6;13610:1;:8;:::i;:::-;13597:21;-1:-1:-1;13628:10:42;13647:5;13651:1;13647;:5;:::i;:::-;13641:12;;:2;:12;:::i;:::-;13628:25;-1:-1:-1;13668:6:42;13673:1;13628:25;13668:6;:::i;5937:332:45:-;6003:17;;;;;;;:9;:17;;;;;:27;;6024:6;;6003:17;:27;;6024:6;;6003:27;:::i;:::-;;;;-1:-1:-1;;6180:11:45;:21;;;;;;;6226:36;;13776:25:64;;;6226:36:45;;;;;;13764:2:64;13749:18;6226:36:45;;;;;;;;5937:332;;:::o;5587:344::-;5671:6;5656:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;5830:20:45;;;;;;;:9;:20;;;;;;;;:30;;;;;;5885:39;13776:25:64;;;5885:39:45;;13749:18:64;5885:39:45;13630:177:64;11125:814:42;11367:17;11396:24;11423:34;11428:14;11444:12;11423:4;:34::i;:::-;11396:61;-1:-1:-1;11467:21:42;11491;11506:6;11491:12;:21;:::i;:::-;11467:45;;11522:17;11542:33;11547:13;11562:12;11542:4;:33::i;:::-;11522:53;;11585:21;11609:45;11614:9;11625:28;1002:6;11636:16;11625:4;:28::i;:::-;11609:4;:45::i;:::-;11585:69;;11664:21;11688:36;11693:13;11708:15;11688:4;:36::i;:::-;11664:60;-1:-1:-1;11734:35:42;11772:31;11664:60;11772:15;:31;:::i;:::-;11734:69;-1:-1:-1;11813:11:42;11855:8;11828:23;11835:16;1002:6;11828:23;:::i;:::-;11827:36;;;;:::i;:::-;11813:50;-1:-1:-1;11885:47:42;11890:27;11920:10;11813:50;1002:6;11920:10;:::i;11885:47::-;11873:59;11125:814;-1:-1:-1;;;;;;;;;;;;;;11125:814:42:o;10645:474::-;10713:14;10763:4;1535:1;10747:20;;:44;;;;-1:-1:-1;1596:1:42;1584:8;1002:6;1584:1;:8;:::i;:::-;1583:14;;;;:::i;:::-;10771:4;:20;;10747:44;10739:69;;;;;;;16863:2:64;10739:69:42;;;16845:21:64;16902:2;16882:18;;;16875:30;16941:14;16921:18;;;16914:42;16973:18;;10739:69:42;16661:336:64;10739:69:42;10819:13;1002:6;10836:10;1002:6;10836:3;:10;:::i;:::-;10835:19;;;;:::i;:::-;10819:35;-1:-1:-1;10864:14:42;10881:11;10819:35;10881:3;:11;:::i;:::-;10864:28;-1:-1:-1;10902:16:42;10921:24;10926:4;10932:12;1002:6;10932:5;:12;:::i;10921:24::-;10902:43;-1:-1:-1;10960:11:42;10956:34;;10982:8;10973:17;;10956:34;11001:21;11025:39;11036:4;11042:6;1645:13;1652:6;1002;1645:13;:::i;:::-;11025:10;:39::i;:::-;11001:63;;11083:29;11088:8;11098:13;11083:4;:29::i;:::-;11074:38;10645:474;-1:-1:-1;;;;;;;10645:474:42:o;11945:215::-;12004:14;12039:5;12043:1;12039;:5;:::i;:::-;:21;;1002:6;12039:21;;;12052:1;12039:21;12030:30;-1:-1:-1;12075:6:42;12080:1;12075:6;;:::i;:::-;;;12070:38;12083:6;;12070:38;;12103:5;12107:1;;12103:5;:::i;:::-;12099:9;-1:-1:-1;12091:6:42;12096:1;12091:6;;:::i;:::-;;;12070:38;;;12122:5;12126:1;12122;:5;:::i;:::-;:10;12118:35;;12143:10;12152:1;12143:6;:10;:::i;:::-;12134:19;11945:215;-1:-1:-1;;;11945:215:42:o;12166:791::-;12285:11;12320:3;12285:11;;12358:20;12367:4;1002:6;12358:8;:20::i;:::-;1002:6;;-1:-1:-1;12333:45:42;;-1:-1:-1;12333:45:42;-1:-1:-1;1002:6:42;12388:12;12478:1;12461:490;12489:9;12481:4;:17;12461:490;;12519:12;12534:8;1002:6;12534:1;:8;:::i;:::-;12519:23;-1:-1:-1;12557:9:42;;12581:26;12590:1;12594:11;1002:6;12519:23;12594:11;:::i;:::-;12581:8;:26::i;:::-;12556:51;;;;12628:22;12633:4;12639:10;12644:1;12647;12639:4;:10::i;12628:22::-;12621:29;;12671:16;12676:4;12682;12671;:16::i;:::-;12664:23;-1:-1:-1;12705:9:42;12701:20;;12716:5;;;;;12701:20;12739:4;12735:30;;;12756:9;;;12735:30;12783:4;12779:30;;;12800:9;;;12779:30;12827:8;12823:118;;;12861:10;12867:4;12861:3;:10;:::i;:::-;12855:16;;12823:118;;;12916:10;12922:4;12916:3;:10;:::i;:::-;12910:16;;12823:118;12505:446;;;12500:3;;;;;:::i;:::-;;;;12461:490;;;;12298:659;;;;;12166:791;;;;;:::o;12963:373::-;13026:18;13046:9;13176:1;13171;:6;13167:153;;-1:-1:-1;;13219:5:42;;;13226;13167:153;;;-1:-1:-1;;13293:5:42;;;13300:4;13167:153;12963:373;;;;;:::o;14:160:64:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:52;;;307:1;304;297:12;259:52;346:9;333:23;365:31;390:5;365:31;:::i;431:691::-;547:6;555;563;571;579;632:3;620:9;611:7;607:23;603:33;600:53;;;649:1;646;639:12;600:53;688:9;675:23;707:31;732:5;707:31;:::i;:::-;757:5;-1:-1:-1;814:2:64;799:18;;786:32;827:33;786:32;827:33;:::i;:::-;879:7;-1:-1:-1;938:2:64;923:18;;910:32;951:33;910:32;951:33;:::i;:::-;1003:7;-1:-1:-1;1029:35:64;1060:2;1045:18;;1029:35;:::i;:::-;431:691;;;;-1:-1:-1;431:691:64;;1111:3;1096:19;1083:33;;431:691;-1:-1:-1;;431:691:64:o;1127:1560::-;1261:6;1269;1277;1285;1293;1301;1354:3;1342:9;1333:7;1329:23;1325:33;1322:53;;;1371:1;1368;1361:12;1322:53;1410:9;1397:23;1429:31;1454:5;1429:31;:::i;:::-;1479:5;-1:-1:-1;1536:2:64;1521:18;;1508:32;1549:33;1508:32;1549:33;:::i;:::-;1601:7;-1:-1:-1;1660:2:64;1645:18;;1632:32;1673:33;1632:32;1673:33;:::i;:::-;1725:7;-1:-1:-1;1751:35:64;1782:2;1767:18;;1751:35;:::i;:::-;1741:45;;1833:3;1822:9;1818:19;1805:33;1795:43;;1889:3;1878:9;1874:19;1861:33;1913:18;1954:2;1946:6;1943:14;1940:34;;;1970:1;1967;1960:12;1940:34;2008:6;1997:9;1993:22;1983:32;;2053:7;2046:4;2042:2;2038:13;2034:27;2024:55;;2075:1;2072;2065:12;2024:55;2111:2;2098:16;2133:2;2129;2126:10;2123:36;;;2139:18;;:::i;:::-;2273:2;2267:9;2335:4;2327:13;;2178:66;2323:22;;;2347:2;2319:31;2315:40;2303:53;;;2371:18;;;2391:22;;;2368:46;2365:72;;;2417:18;;:::i;:::-;2457:10;2453:2;2446:22;2492:2;2484:6;2477:18;2532:7;2527:2;2522;2518;2514:11;2510:20;2507:33;2504:53;;;2553:1;2550;2543:12;2504:53;2609:2;2604;2600;2596:11;2591:2;2583:6;2579:15;2566:46;2654:1;2649:2;2644;2636:6;2632:15;2628:24;2621:35;2675:6;2665:16;;;;;;;1127:1560;;;;;;;;:::o;2692:541::-;2791:6;2799;2807;2815;2868:3;2856:9;2847:7;2843:23;2839:33;2836:53;;;2885:1;2882;2875:12;2836:53;2924:9;2911:23;2943:31;2968:5;2943:31;:::i;:::-;2993:5;-1:-1:-1;3050:2:64;3035:18;;3022:32;3063:33;3022:32;3063:33;:::i;:::-;3115:7;-1:-1:-1;3141:35:64;3172:2;3157:18;;3141:35;:::i;:::-;2692:541;;;;-1:-1:-1;3131:45:64;;3223:2;3208:18;3195:32;;-1:-1:-1;;2692:541:64:o;3238:391::-;3320:6;3328;3336;3389:2;3377:9;3368:7;3364:23;3360:32;3357:52;;;3405:1;3402;3395:12;3357:52;3444:9;3431:23;3463:31;3488:5;3463:31;:::i;:::-;3513:5;-1:-1:-1;3537:35:64;3568:2;3553:18;;3537:35;:::i;:::-;3527:45;;3619:2;3608:9;3604:18;3591:32;3581:42;;3238:391;;;;;:::o;3634:323::-;3710:6;3718;3771:2;3759:9;3750:7;3746:23;3742:32;3739:52;;;3787:1;3784;3777:12;3739:52;3826:9;3813:23;3845:31;3870:5;3845:31;:::i;:::-;3895:5;3947:2;3932:18;;;;3919:32;;-1:-1:-1;;;3634:323:64:o;3962:388::-;4030:6;4038;4091:2;4079:9;4070:7;4066:23;4062:32;4059:52;;;4107:1;4104;4097:12;4059:52;4146:9;4133:23;4165:31;4190:5;4165:31;:::i;:::-;4215:5;-1:-1:-1;4272:2:64;4257:18;;4244:32;4285:33;4244:32;4285:33;:::i;:::-;4337:7;4327:17;;;3962:388;;;;;:::o;4355:456::-;4432:6;4440;4448;4501:2;4489:9;4480:7;4476:23;4472:32;4469:52;;;4517:1;4514;4507:12;4469:52;4556:9;4543:23;4575:31;4600:5;4575:31;:::i;:::-;4625:5;-1:-1:-1;4682:2:64;4667:18;;4654:32;4695:33;4654:32;4695:33;:::i;:::-;4355:456;;4747:7;;-1:-1:-1;;;4801:2:64;4786:18;;;;4773:32;;4355:456::o;4816:829::-;4927:6;4935;4943;4951;4959;4967;4975;5028:3;5016:9;5007:7;5003:23;4999:33;4996:53;;;5045:1;5042;5035:12;4996:53;5084:9;5071:23;5103:31;5128:5;5103:31;:::i;:::-;5153:5;-1:-1:-1;5210:2:64;5195:18;;5182:32;5223:33;5182:32;5223:33;:::i;:::-;5275:7;-1:-1:-1;5329:2:64;5314:18;;5301:32;;-1:-1:-1;5380:2:64;5365:18;;5352:32;;-1:-1:-1;5436:3:64;5421:19;;5408:33;5485:4;5472:18;;5460:31;;5450:59;;5505:1;5502;5495:12;5450:59;4816:829;;;;-1:-1:-1;4816:829:64;;;;5528:7;5582:3;5567:19;;5554:33;;-1:-1:-1;5634:3:64;5619:19;;;5606:33;;4816:829;-1:-1:-1;;4816:829:64:o;5970:591::-;6040:6;6048;6101:2;6089:9;6080:7;6076:23;6072:32;6069:52;;;6117:1;6114;6107:12;6069:52;6157:9;6144:23;6186:18;6227:2;6219:6;6216:14;6213:34;;;6243:1;6240;6233:12;6213:34;6281:6;6270:9;6266:22;6256:32;;6326:7;6319:4;6315:2;6311:13;6307:27;6297:55;;6348:1;6345;6338:12;6297:55;6388:2;6375:16;6414:2;6406:6;6403:14;6400:34;;;6430:1;6427;6420:12;6400:34;6475:7;6470:2;6461:6;6457:2;6453:15;6449:24;6446:37;6443:57;;;6496:1;6493;6486:12;6443:57;6527:2;6519:11;;;;;6549:6;;-1:-1:-1;5970:591:64;;-1:-1:-1;;;;5970:591:64:o;6566:184::-;6636:6;6689:2;6677:9;6668:7;6664:23;6660:32;6657:52;;;6705:1;6702;6695:12;6657:52;-1:-1:-1;6728:16:64;;6566:184;-1:-1:-1;6566:184:64:o;6755:245::-;6834:6;6842;6895:2;6883:9;6874:7;6870:23;6866:32;6863:52;;;6911:1;6908;6901:12;6863:52;-1:-1:-1;;6934:16:64;;6990:2;6975:18;;;6969:25;6934:16;;6969:25;;-1:-1:-1;6755:245:64:o;7005:454::-;7100:6;7108;7116;7124;7132;7185:3;7173:9;7164:7;7160:23;7156:33;7153:53;;;7202:1;7199;7192:12;7153:53;-1:-1:-1;;7225:23:64;;;7295:2;7280:18;;7267:32;;-1:-1:-1;7346:2:64;7331:18;;7318:32;;7397:2;7382:18;;7369:32;;-1:-1:-1;7448:3:64;7433:19;7420:33;;-1:-1:-1;7005:454:64;-1:-1:-1;7005:454:64:o;7464:530::-;7505:3;7543:5;7537:12;7570:6;7565:3;7558:19;7595:1;7605:162;7619:6;7616:1;7613:13;7605:162;;;7681:4;7737:13;;;7733:22;;7727:29;7709:11;;;7705:20;;7698:59;7634:12;7605:162;;;7785:6;7782:1;7779:13;7776:87;;;7851:1;7844:4;7835:6;7830:3;7826:16;7822:27;7815:38;7776:87;-1:-1:-1;7908:2:64;7896:15;7913:66;7892:88;7883:98;;;;7983:4;7879:109;;7464:530;-1:-1:-1;;7464:530:64:o;10702:681::-;10873:2;10925:21;;;10995:13;;10898:18;;;11017:22;;;10844:4;;10873:2;11096:15;;;;11070:2;11055:18;;;10844:4;11139:218;11153:6;11150:1;11147:13;11139:218;;;11218:13;;11233:42;11214:62;11202:75;;11332:15;;;;11297:12;;;;11175:1;11168:9;11139:218;;;-1:-1:-1;11374:3:64;;10702:681;-1:-1:-1;;;;;;10702:681:64:o;11388:845::-;11617:2;11669:21;;;11739:13;;11642:18;;;11761:22;;;11588:4;;11617:2;11802;;11820:18;;;;11861:15;;;11588:4;11904:303;11918:6;11915:1;11912:13;11904:303;;;11977:13;;12019:9;;12030:42;12015:58;12003:71;;12114:11;;12108:18;12094:12;;;12087:40;12147:12;;;;12182:15;;;;11940:1;11933:9;11904:303;;;-1:-1:-1;12224:3:64;;11388:845;-1:-1:-1;;;;;;;11388:845:64:o;12238:1195::-;12506:2;12518:21;;;12588:13;;12491:18;;;12610:22;;;12458:4;;12685;;12663:2;12648:18;;;12712:15;;;12458:4;12755:169;12769:6;12766:1;12763:13;12755:169;;;12830:13;;12818:26;;12864:12;;;;12899:15;;;;12791:1;12784:9;12755:169;;;-1:-1:-1;;;12960:19:64;;;12940:18;;;12933:47;13030:13;;13052:21;;;13128:15;;;;13091:12;;;13163:1;13173:232;13189:8;13184:3;13181:17;13173:232;;;13262:15;;13279:36;13258:58;13244:73;;13378:17;;;;13339:14;;;;13217:1;13208:11;13173:232;;;-1:-1:-1;13422:5:64;;12238:1195;-1:-1:-1;;;;;;;12238:1195:64:o;15351:217::-;15498:2;15487:9;15480:21;15461:4;15518:44;15558:2;15547:9;15543:18;15535:6;15518:44;:::i;20347:128::-;20387:3;20418:1;20414:6;20411:1;20408:13;20405:39;;;20424:18;;:::i;:::-;-1:-1:-1;20460:9:64;;20347:128::o;20480:120::-;20520:1;20546;20536:35;;20551:18;;:::i;:::-;-1:-1:-1;20585:9:64;;20480:120::o;20605:228::-;20645:7;20771:1;20703:66;20699:74;20696:1;20693:81;20688:1;20681:9;20674:17;20670:105;20667:131;;;20778:18;;:::i;:::-;-1:-1:-1;20818:9:64;;20605:228::o;20838:125::-;20878:4;20906:1;20903;20900:8;20897:34;;;20911:18;;:::i;:::-;-1:-1:-1;20948:9:64;;20838:125::o;20968:195::-;21007:3;21038:66;21031:5;21028:77;21025:103;;;21108:18;;:::i;:::-;-1:-1:-1;21155:1:64;21144:13;;20968:195::o;21168:112::-;21200:1;21226;21216:35;;21231:18;;:::i;:::-;-1:-1:-1;21265:9:64;;21168:112::o;21285:184::-;21337:77;21334:1;21327:88;21434:4;21431:1;21424:15;21458:4;21455:1;21448:15;21474:184;21526:77;21523:1;21516:88;21623:4;21620:1;21613:15;21647:4;21644:1;21637:15;21663:184;21715:77;21712:1;21705:88;21812:4;21809:1;21802:15;21836:4;21833:1;21826:15;21852:184;21904:77;21901:1;21894:88;22001:4;21998:1;21991:15;22025:4;22022:1;22015:15;22041:154;22127:42;22120:5;22116:54;22109:5;22106:65;22096:93;;22185:1;22182;22175:12;22096:93;22041:154;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "2442200",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "DOMAIN_SEPARATOR()": "infinite",
                "PERMIT_TYPEHASH()": "230",
                "allowance(address,address)": "infinite",
                "approve(address,uint256)": "24561",
                "balanceOf(address)": "2558",
                "barFee()": "2328",
                "barFeeTo()": "infinite",
                "bento()": "infinite",
                "burn(bytes)": "infinite",
                "burnSingle(bytes)": "infinite",
                "decimals()": "272",
                "flashSwap(bytes)": "infinite",
                "getAmountIn(bytes)": "444",
                "getAmountOut(bytes)": "infinite",
                "getAssets()": "infinite",
                "getReservesAndWeights()": "infinite",
                "masterDeployer()": "infinite",
                "mint(bytes)": "infinite",
                "name()": "infinite",
                "nonces(address)": "2535",
                "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "infinite",
                "poolIdentifier()": "229",
                "records(address)": "2678",
                "swap(bytes)": "infinite",
                "swapFee()": "infinite",
                "symbol()": "infinite",
                "totalSupply()": "2352",
                "transfer(address,uint256)": "50959",
                "transferFrom(address,address,uint256)": "infinite",
                "updateBarFee()": "infinite"
              },
              "internal": {
                "_balance(address)": "infinite",
                "_compute(uint256,uint256)": "infinite",
                "_computeSingleOutGivenPoolIn(uint256,uint256,uint256,uint256,uint256,uint256)": "infinite",
                "_div(uint256,uint256)": "infinite",
                "_getAmountOut(uint256,uint256,uint256,uint256,uint256)": "infinite",
                "_mul(uint256,uint256)": "infinite",
                "_pow(uint256,uint256)": "infinite",
                "_powApprox(uint256,uint256,uint256)": "infinite",
                "_subFlag(uint256,uint256)": "78",
                "_transfer(address,uint256,address,bool)": "infinite"
              }
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "PERMIT_TYPEHASH()": "30adf81f",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "barFee()": "c14ad802",
              "barFeeTo()": "0c0a0cd2",
              "bento()": "4da31827",
              "burn(bytes)": "2a07b6c7",
              "burnSingle(bytes)": "af8c09bf",
              "decimals()": "313ce567",
              "flashSwap(bytes)": "053da1c8",
              "getAmountIn(bytes)": "499a3c50",
              "getAmountOut(bytes)": "a8f1f52e",
              "getAssets()": "67e4ac2c",
              "getReservesAndWeights()": "8ae45441",
              "masterDeployer()": "cf58879a",
              "mint(bytes)": "7ba0e2e7",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "poolIdentifier()": "a69840a8",
              "records(address)": "469e9067",
              "swap(bytes)": "627dd56a",
              "swapFee()": "54cf2aeb",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "updateBarFee()": "92bc3219"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_deployData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_masterDeployer\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"domainSeperator\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"barFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"barFeeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bento\",\"outputs\":[{\"internalType\":\"contract IBentoBoxMinimal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burn\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPool.TokenAmount[]\",\"name\":\"withdrawnAmounts\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burnSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAssets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesAndWeights\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"reserves\",\"type\":\"uint256[]\"},{\"internalType\":\"uint136[]\",\"name\":\"weights\",\"type\":\"uint136[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterDeployer\",\"outputs\":[{\"internalType\":\"contract IMasterDeployer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolIdentifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"records\",\"outputs\":[{\"internalType\":\"uint120\",\"name\":\"reserve\",\"type\":\"uint120\"},{\"internalType\":\"uint136\",\"name\":\"weight\",\"type\":\"uint136\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateBarFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The reserves are stored as bento shares.      The curve is applied to shares as well. This pool does not care about the underlying amounts.\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"params\":{\"amount\":\"The maximum collective `amount` that `spender` can pull.\",\"spender\":\"Address of the party that can pull tokens from `msg.sender`'s account.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"burn(bytes)\":{\"details\":\"Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\"},\"burnSingle(bytes)\":{\"details\":\"Burns LP tokens sent to this contract and swaps one of the output tokens for another - i.e., the user gets a single token out by burning LP tokens.\"},\"flashSwap(bytes)\":{\"details\":\"Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage.\"},\"getAmountOut(bytes)\":{\"details\":\"The pool does not need to include a trade simulator directly in itself - it can use a library.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"amountOut\":\"The amount of output tokens that will be sent to the user if the trade is executed.\"}},\"getAssets()\":{\"returns\":{\"assets\":\"An array of tokens supported by the pool.\"}},\"mint(bytes)\":{\"details\":\"Mints LP tokens - should be called via the router after transferring `bento` tokens. The router must ensure that sufficient LP tokens are minted by using the return value.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"amount\":\"The number of tokens that are approved (2^256-1 means infinite).\",\"deadline\":\"The time at which to expire the signature.\",\"owner\":\"The address to approve from.\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"spender\":\"The address to be approved.\",\"v\":\"The recovery byte of the signature.\"}},\"swap(bytes)\":{\"details\":\"Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\"},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The token `amount` to move.\",\"recipient\":\"The address to move tokens to.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The token `amount` to move.\",\"recipient\":\"The address to move tokens to.\",\"sender\":\"Address to pull tokens `from`.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"updateBarFee()\":{\"details\":\"Updates `barFee` for Trident protocol.\"}},\"stateVariables\":{\"poolIdentifier\":{\"return\":\"A unique identifier for the pool type.\",\"returns\":{\"_0\":\"A unique identifier for the pool type.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"EIP-712 typehash for this contract's domain.\"},\"PERMIT_TYPEHASH()\":{\"notice\":\"EIP-712 typehash for this contract's {permit} struct.\"},\"allowance(address,address)\":{\"notice\":\"owner -> spender -> allowance mapping.\"},\"approve(address,uint256)\":{\"notice\":\"Approves `amount` from `msg.sender` to be spent by `spender`.\"},\"balanceOf(address)\":{\"notice\":\"owner -> balance mapping.\"},\"getAmountOut(bytes)\":{\"notice\":\"Simulates a trade and returns the expected output.\"},\"nonces(address)\":{\"notice\":\"owner -> nonce mapping used in {permit}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Triggers an approval from `owner` to `spender`.\"},\"transfer(address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `msg.sender` to `recipient`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\"}},\"notice\":\"Trident exchange pool template with constant mean formula for swapping among an array of ERC-20 tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/IndexPool.sol\":\"IndexPool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentCallee.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool callback interface.\\ninterface ITridentCallee {\\n    function tridentSwapCallback(bytes calldata data) external;\\n\\n    function tridentMintCallback(bytes calldata data) external;\\n}\\n\",\"keccak256\":\"0x256e838362a3064201b37b3b7c08bc1421b173a6fea633176123f0b827b868c9\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/IndexPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../interfaces/IBentoBoxMinimal.sol\\\";\\nimport \\\"../interfaces/IMasterDeployer.sol\\\";\\nimport \\\"../interfaces/IPool.sol\\\";\\nimport \\\"../interfaces/ITridentCallee.sol\\\";\\nimport \\\"./TridentERC20.sol\\\";\\n\\n/// @notice Trident exchange pool template with constant mean formula for swapping among an array of ERC-20 tokens.\\n/// @dev The reserves are stored as bento shares.\\n///      The curve is applied to shares as well. This pool does not care about the underlying amounts.\\ncontract IndexPool is IPool, TridentERC20 {\\n    event Mint(address indexed sender, address tokenIn, uint256 amountIn, address indexed recipient);\\n    event Burn(address indexed sender, address tokenOut, uint256 amountOut, address indexed recipient);\\n\\n    uint256 public immutable swapFee;\\n\\n    address public immutable barFeeTo;\\n    IBentoBoxMinimal public immutable bento;\\n    IMasterDeployer public immutable masterDeployer;\\n\\n    uint256 internal constant BASE = 10**18;\\n    uint256 internal constant MIN_TOKENS = 2;\\n    uint256 internal constant MAX_TOKENS = 8;\\n    uint256 internal constant MIN_FEE = BASE / 10**6;\\n    uint256 internal constant MAX_FEE = BASE / 10;\\n    uint256 internal constant MIN_WEIGHT = BASE;\\n    uint256 internal constant MAX_WEIGHT = BASE * 50;\\n    uint256 internal constant MAX_TOTAL_WEIGHT = BASE * 50;\\n    uint256 internal constant MIN_BALANCE = BASE / 10**12;\\n    uint256 internal constant INIT_POOL_SUPPLY = BASE * 100;\\n    uint256 internal constant MIN_POW_BASE = 1;\\n    uint256 internal constant MAX_POW_BASE = (2 * BASE) - 1;\\n    uint256 internal constant POW_PRECISION = BASE / 10**10;\\n    uint256 internal constant MAX_IN_RATIO = BASE / 2;\\n    uint256 internal constant MAX_OUT_RATIO = (BASE / 3) + 1;\\n\\n    uint136 internal totalWeight;\\n    address[] internal tokens;\\n\\n    uint256 public barFee;\\n\\n    bytes32 public constant override poolIdentifier = \\\"Trident:Index\\\";\\n\\n    uint256 internal unlocked;\\n    modifier lock() {\\n        require(unlocked == 1, \\\"LOCKED\\\");\\n        unlocked = 2;\\n        _;\\n        unlocked = 1;\\n    }\\n\\n    mapping(address => Record) public records;\\n    struct Record {\\n        uint120 reserve;\\n        uint136 weight;\\n    }\\n\\n    constructor(bytes memory _deployData, address _masterDeployer) {\\n        (address[] memory _tokens, uint136[] memory _weights, uint256 _swapFee) = abi.decode(_deployData, (address[], uint136[], uint256));\\n        // @dev Factory ensures that the tokens are sorted.\\n        require(_tokens.length == _weights.length, \\\"INVALID_ARRAYS\\\");\\n        require(MIN_FEE <= _swapFee && _swapFee <= MAX_FEE, \\\"INVALID_SWAP_FEE\\\");\\n        require(MIN_TOKENS <= _tokens.length && _tokens.length <= MAX_TOKENS, \\\"INVALID_TOKENS_LENGTH\\\");\\n\\n        for (uint256 i = 0; i < _tokens.length; i++) {\\n            require(_tokens[i] != address(0), \\\"ZERO_ADDRESS\\\");\\n            require(MIN_WEIGHT <= _weights[i] && _weights[i] <= MAX_WEIGHT, \\\"INVALID_WEIGHT\\\");\\n            records[_tokens[i]] = Record({reserve: 0, weight: _weights[i]});\\n            tokens.push(_tokens[i]);\\n            totalWeight += _weights[i];\\n        }\\n\\n        require(totalWeight <= MAX_TOTAL_WEIGHT, \\\"MAX_TOTAL_WEIGHT\\\");\\n        // @dev This burns initial LP supply.\\n        _mint(address(0), INIT_POOL_SUPPLY);\\n\\n        swapFee = _swapFee;\\n        barFee = IMasterDeployer(_masterDeployer).barFee();\\n        barFeeTo = IMasterDeployer(_masterDeployer).barFeeTo();\\n        bento = IBentoBoxMinimal(IMasterDeployer(_masterDeployer).bento());\\n        masterDeployer = IMasterDeployer(_masterDeployer);\\n        unlocked = 1;\\n    }\\n\\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\\n    /// The router must ensure that sufficient LP tokens are minted by using the return value.\\n    function mint(bytes calldata data) public override lock returns (uint256 liquidity) {\\n        (address recipient, uint256 toMint) = abi.decode(data, (address, uint256));\\n\\n        uint120 ratio = uint120(_div(toMint, totalSupply));\\n\\n        for (uint256 i = 0; i < tokens.length; i++) {\\n            address tokenIn = tokens[i];\\n            uint120 reserve = records[tokenIn].reserve;\\n            // @dev If token balance is '0', initialize with `ratio`.\\n            uint120 amountIn = reserve != 0 ? uint120(_mul(ratio, reserve)) : ratio;\\n            require(amountIn >= MIN_BALANCE, \\\"MIN_BALANCE\\\");\\n            // @dev Check Trident router has sent `amountIn` for skim into pool.\\n            unchecked {\\n                // @dev This is safe from overflow - only logged amounts handled.\\n                require(_balance(tokenIn) >= amountIn + reserve, \\\"NOT_RECEIVED\\\");\\n                records[tokenIn].reserve += amountIn;\\n            }\\n            emit Mint(msg.sender, tokenIn, amountIn, recipient);\\n        }\\n        _mint(recipient, toMint);\\n        liquidity = toMint;\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\\n    function burn(bytes calldata data) public override lock returns (IPool.TokenAmount[] memory withdrawnAmounts) {\\n        (address recipient, bool unwrapBento, uint256 toBurn) = abi.decode(data, (address, bool, uint256));\\n\\n        uint256 ratio = _div(toBurn, totalSupply);\\n\\n        withdrawnAmounts = new TokenAmount[](tokens.length);\\n\\n        _burn(address(this), toBurn);\\n\\n        for (uint256 i = 0; i < tokens.length; i++) {\\n            address tokenOut = tokens[i];\\n            uint256 balance = records[tokenOut].reserve;\\n            uint120 amountOut = uint120(_mul(ratio, balance));\\n            require(amountOut != 0, \\\"ZERO_OUT\\\");\\n            // @dev This is safe from underflow - only logged amounts handled.\\n            unchecked {\\n                records[tokenOut].reserve -= amountOut;\\n            }\\n            _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n            withdrawnAmounts[i] = TokenAmount({token: tokenOut, amount: amountOut});\\n            emit Burn(msg.sender, tokenOut, amountOut, recipient);\\n        }\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\\n    /// - i.e., the user gets a single token out by burning LP tokens.\\n    function burnSingle(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenOut, address recipient, bool unwrapBento, uint256 toBurn) = abi.decode(data, (address, address, bool, uint256));\\n\\n        Record storage outRecord = records[tokenOut];\\n\\n        amountOut = _computeSingleOutGivenPoolIn(outRecord.reserve, outRecord.weight, totalSupply, totalWeight, toBurn, swapFee);\\n\\n        require(amountOut <= _mul(outRecord.reserve, MAX_OUT_RATIO), \\\"MAX_OUT_RATIO\\\");\\n        // @dev This is safe from underflow - only logged amounts handled.\\n        unchecked {\\n            outRecord.reserve -= uint120(amountOut);\\n        }\\n        _burn(address(this), toBurn);\\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n        emit Burn(msg.sender, tokenOut, amountOut, recipient);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\\n    function swap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address tokenOut, address recipient, bool unwrapBento, uint256 amountIn) = abi.decode(\\n            data,\\n            (address, address, address, bool, uint256)\\n        );\\n\\n        Record storage inRecord = records[tokenIn];\\n        Record storage outRecord = records[tokenOut];\\n\\n        require(amountIn <= _mul(inRecord.reserve, MAX_IN_RATIO), \\\"MAX_IN_RATIO\\\");\\n\\n        amountOut = _getAmountOut(amountIn, inRecord.reserve, inRecord.weight, outRecord.reserve, outRecord.weight);\\n        // @dev Check Trident router has sent `amountIn` for skim into pool.\\n        unchecked {\\n            // @dev This is safe from under/overflow - only logged amounts handled.\\n            require(_balance(tokenIn) >= amountIn + inRecord.reserve, \\\"NOT_RECEIVED\\\");\\n            inRecord.reserve += uint120(amountIn);\\n            outRecord.reserve -= uint120(amountOut);\\n        }\\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage.\\n    function flashSwap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address tokenOut, address recipient, bool unwrapBento, uint256 amountIn, bytes memory context) = abi.decode(\\n            data,\\n            (address, address, address, bool, uint256, bytes)\\n        );\\n\\n        Record storage inRecord = records[tokenIn];\\n        Record storage outRecord = records[tokenOut];\\n\\n        require(amountIn <= _mul(inRecord.reserve, MAX_IN_RATIO), \\\"MAX_IN_RATIO\\\");\\n\\n        amountOut = _getAmountOut(amountIn, inRecord.reserve, inRecord.weight, outRecord.reserve, outRecord.weight);\\n\\n        ITridentCallee(msg.sender).tridentSwapCallback(context);\\n        // @dev Check Trident router has sent `amountIn` for skim into pool.\\n        unchecked {\\n            // @dev This is safe from under/overflow - only logged amounts handled.\\n            require(_balance(tokenIn) >= amountIn + inRecord.reserve, \\\"NOT_RECEIVED\\\");\\n            inRecord.reserve += uint120(amountIn);\\n            outRecord.reserve -= uint120(amountOut);\\n        }\\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\\n    }\\n\\n    /// @dev Updates `barFee` for Trident protocol.\\n    function updateBarFee() public {\\n        barFee = IMasterDeployer(masterDeployer).barFee();\\n    }\\n\\n    function _balance(address token) internal view returns (uint256 balance) {\\n        balance = bento.balanceOf(token, address(this));\\n    }\\n\\n    function _getAmountOut(\\n        uint256 tokenInAmount,\\n        uint256 tokenInBalance,\\n        uint256 tokenInWeight,\\n        uint256 tokenOutBalance,\\n        uint256 tokenOutWeight\\n    ) internal view returns (uint256 amountOut) {\\n        uint256 weightRatio = _div(tokenInWeight, tokenOutWeight);\\n        // @dev This is safe from under/overflow - only logged amounts handled.\\n        unchecked {\\n            uint256 adjustedIn = _mul(tokenInAmount, (BASE - swapFee));\\n            uint256 a = _div(tokenInBalance, tokenInBalance + adjustedIn);\\n            uint256 b = _compute(a, weightRatio);\\n            uint256 c = BASE - b;\\n            amountOut = _mul(tokenOutBalance, c);\\n        }\\n    }\\n\\n    function _compute(uint256 base, uint256 exp) internal pure returns (uint256 output) {\\n        require(MIN_POW_BASE <= base && base <= MAX_POW_BASE, \\\"INVALID_BASE\\\");\\n\\n        uint256 whole = (exp / BASE) * BASE;\\n        uint256 remain = exp - whole;\\n        uint256 wholePow = _pow(base, whole / BASE);\\n\\n        if (remain == 0) output = wholePow;\\n\\n        uint256 partialResult = _powApprox(base, remain, POW_PRECISION);\\n        output = _mul(wholePow, partialResult);\\n    }\\n\\n    function _computeSingleOutGivenPoolIn(\\n        uint256 tokenOutBalance,\\n        uint256 tokenOutWeight,\\n        uint256 _totalSupply,\\n        uint256 _totalWeight,\\n        uint256 toBurn,\\n        uint256 _swapFee\\n    ) internal pure returns (uint256 amountOut) {\\n        uint256 normalizedWeight = _div(tokenOutWeight, _totalWeight);\\n        uint256 newPoolSupply = _totalSupply - toBurn;\\n        uint256 poolRatio = _div(newPoolSupply, _totalSupply);\\n        uint256 tokenOutRatio = _pow(poolRatio, _div(BASE, normalizedWeight));\\n        uint256 newBalanceOut = _mul(tokenOutRatio, tokenOutBalance);\\n        uint256 tokenAmountOutBeforeSwapFee = tokenOutBalance - newBalanceOut;\\n        uint256 zaz = (BASE - normalizedWeight) * _swapFee;\\n        amountOut = _mul(tokenAmountOutBeforeSwapFee, (BASE - zaz));\\n    }\\n\\n    function _pow(uint256 a, uint256 n) internal pure returns (uint256 output) {\\n        output = n % 2 != 0 ? a : BASE;\\n        for (n /= 2; n != 0; n /= 2) a = a * a;\\n        if (n % 2 != 0) output = output * a;\\n    }\\n\\n    function _powApprox(\\n        uint256 base,\\n        uint256 exp,\\n        uint256 precision\\n    ) internal pure returns (uint256 sum) {\\n        uint256 a = exp;\\n        (uint256 x, bool xneg) = _subFlag(base, BASE);\\n        uint256 term = BASE;\\n        sum = term;\\n        bool negative;\\n\\n        for (uint256 i = 1; term >= precision; i++) {\\n            uint256 bigK = i * BASE;\\n            (uint256 c, bool cneg) = _subFlag(a, (bigK - BASE));\\n            term = _mul(term, _mul(c, x));\\n            term = _div(term, bigK);\\n            if (term == 0) break;\\n            if (xneg) negative = !negative;\\n            if (cneg) negative = !negative;\\n            if (negative) {\\n                sum = sum - term;\\n            } else {\\n                sum = sum + term;\\n            }\\n        }\\n    }\\n\\n    function _subFlag(uint256 a, uint256 b) internal pure returns (uint256 difference, bool flag) {\\n        // @dev This is safe from underflow - if/else flow performs checks.\\n        unchecked {\\n            if (a >= b) {\\n                (difference, flag) = (a - b, false);\\n            } else {\\n                (difference, flag) = (b - a, true);\\n            }\\n        }\\n    }\\n\\n    function _mul(uint256 a, uint256 b) internal pure returns (uint256 c2) {\\n        uint256 c0 = a * b;\\n        uint256 c1 = c0 + (BASE / 2);\\n        c2 = c1 / BASE;\\n    }\\n\\n    function _div(uint256 a, uint256 b) internal pure returns (uint256 c2) {\\n        uint256 c0 = a * BASE;\\n        uint256 c1 = c0 + (b / 2);\\n        c2 = c1 / b;\\n    }\\n\\n    function _transfer(\\n        address token,\\n        uint256 shares,\\n        address to,\\n        bool unwrapBento\\n    ) internal {\\n        if (unwrapBento) {\\n            bento.withdraw(token, address(this), to, 0, shares);\\n        } else {\\n            bento.transfer(token, address(this), to, shares);\\n        }\\n    }\\n\\n    function getAssets() public view override returns (address[] memory assets) {\\n        assets = tokens;\\n    }\\n\\n    function getAmountOut(bytes calldata data) public view override returns (uint256 amountOut) {\\n        (uint256 tokenInAmount, uint256 tokenInBalance, uint256 tokenInWeight, uint256 tokenOutBalance, uint256 tokenOutWeight) = abi\\n            .decode(data, (uint256, uint256, uint256, uint256, uint256));\\n        amountOut = _getAmountOut(tokenInAmount, tokenInBalance, tokenInWeight, tokenOutBalance, tokenOutWeight);\\n    }\\n\\n    function getAmountIn(bytes calldata) public pure override returns (uint256) {\\n        revert();\\n    }\\n\\n    function getReservesAndWeights() public view returns (uint256[] memory reserves, uint136[] memory weights) {\\n        uint256 length = tokens.length;\\n        reserves = new uint256[](length);\\n        weights = new uint136[](length);\\n        // @dev This is safe from overflow - `tokens` `length` is bound to '8'.\\n        unchecked {\\n            for (uint256 i = 0; i < length; i++) {\\n                reserves[i] = records[tokens[i]].reserve;\\n                weights[i] = records[tokens[i]].weight;\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x03c587721d26a31fcc23b2cdd57aef313de83d11049cf01bd55d30d34c3a7b23\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/TridentERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool ERC-20 with EIP-2612 extension.\\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol,\\n/// License-Identifier: AGPL-3.0-only.\\nabstract contract TridentERC20 {\\n    event Transfer(address indexed sender, address indexed recipient, uint256 amount);\\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\\n\\n    string public constant name = \\\"Sushi LP Token\\\";\\n    string public constant symbol = \\\"SLP\\\";\\n    uint8 public constant decimals = 18;\\n\\n    uint256 public totalSupply;\\n    /// @notice owner -> balance mapping.\\n    mapping(address => uint256) public balanceOf;\\n    /// @notice owner -> spender -> allowance mapping.\\n    mapping(address => mapping(address => uint256)) public allowance;\\n\\n    /// @notice Chain Id at this contract's deployment.\\n    uint256 internal immutable DOMAIN_SEPARATOR_CHAIN_ID;\\n    /// @notice EIP-712 typehash for this contract's domain at deployment.\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n    /// @notice EIP-712 typehash for this contract's {permit} struct.\\n    bytes32 public constant PERMIT_TYPEHASH =\\n        keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n    /// @notice owner -> nonce mapping used in {permit}.\\n    mapping(address => uint256) public nonces;\\n\\n    constructor() {\\n        DOMAIN_SEPARATOR_CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _calculateDomainSeparator();\\n    }\\n\\n    function _calculateDomainSeparator() internal view returns (bytes32 domainSeperator) {\\n        domainSeperator = keccak256(\\n            abi.encode(\\n                keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"),\\n                keccak256(bytes(name)),\\n                keccak256(bytes(\\\"1\\\")),\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    /// @notice EIP-712 typehash for this contract's domain.\\n    function DOMAIN_SEPARATOR() public view returns (bytes32 domainSeperator) {\\n        domainSeperator = block.chainid == DOMAIN_SEPARATOR_CHAIN_ID ? _DOMAIN_SEPARATOR : _calculateDomainSeparator();\\n    }\\n\\n    /// @notice Approves `amount` from `msg.sender` to be spent by `spender`.\\n    /// @param spender Address of the party that can pull tokens from `msg.sender`'s account.\\n    /// @param amount The maximum collective `amount` that `spender` can pull.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function approve(address spender, uint256 amount) external returns (bool) {\\n        allowance[msg.sender][spender] = amount;\\n        emit Approval(msg.sender, spender, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `msg.sender` to `recipient`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transfer(address recipient, uint256 amount) external returns (bool) {\\n        balanceOf[msg.sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(msg.sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\\n    /// @param sender Address to pull tokens `from`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool) {\\n        if (allowance[sender][msg.sender] != type(uint256).max) {\\n            allowance[sender][msg.sender] -= amount;\\n        }\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Triggers an approval from `owner` to `spender`.\\n    /// @param owner The address to approve from.\\n    /// @param spender The address to be approved.\\n    /// @param amount The number of tokens that are approved (2^256-1 means infinite).\\n    /// @param deadline The time at which to expire the signature.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        require(deadline >= block.timestamp, \\\"PERMIT_DEADLINE_EXPIRED\\\");\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                \\\"\\\\x19\\\\x01\\\",\\n                DOMAIN_SEPARATOR(),\\n                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))\\n            )\\n        );\\n        address recoveredAddress = ecrecover(digest, v, r, s);\\n        require(recoveredAddress != address(0) && recoveredAddress == owner, \\\"INVALID_PERMIT_SIGNATURE\\\");\\n        allowance[recoveredAddress][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    function _mint(address recipient, uint256 amount) internal {\\n        totalSupply += amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(address(0), recipient, amount);\\n    }\\n\\n    function _burn(address sender, uint256 amount) internal {\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from underflow - users won't ever\\n        // have a balance larger than `totalSupply`.\\n        unchecked {\\n            totalSupply -= amount;\\n        }\\n        emit Transfer(sender, address(0), amount);\\n    }\\n}\\n\",\"keccak256\":\"0xb249a6d507f6911b7de4f9655a9736710fac9847982ad9afa18650db9a84794d\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 11917,
                "contract": "contracts/pool/IndexPool.sol:IndexPool",
                "label": "totalSupply",
                "offset": 0,
                "slot": "0",
                "type": "t_uint256"
              },
              {
                "astId": 11922,
                "contract": "contracts/pool/IndexPool.sol:IndexPool",
                "label": "balanceOf",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 11929,
                "contract": "contracts/pool/IndexPool.sol:IndexPool",
                "label": "allowance",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
              },
              {
                "astId": 11946,
                "contract": "contracts/pool/IndexPool.sol:IndexPool",
                "label": "nonces",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 10067,
                "contract": "contracts/pool/IndexPool.sol:IndexPool",
                "label": "totalWeight",
                "offset": 0,
                "slot": "4",
                "type": "t_uint136"
              },
              {
                "astId": 10070,
                "contract": "contracts/pool/IndexPool.sol:IndexPool",
                "label": "tokens",
                "offset": 0,
                "slot": "5",
                "type": "t_array(t_address)dyn_storage"
              },
              {
                "astId": 10072,
                "contract": "contracts/pool/IndexPool.sol:IndexPool",
                "label": "barFee",
                "offset": 0,
                "slot": "6",
                "type": "t_uint256"
              },
              {
                "astId": 10078,
                "contract": "contracts/pool/IndexPool.sol:IndexPool",
                "label": "unlocked",
                "offset": 0,
                "slot": "7",
                "type": "t_uint256"
              },
              {
                "astId": 10102,
                "contract": "contracts/pool/IndexPool.sol:IndexPool",
                "label": "records",
                "offset": 0,
                "slot": "8",
                "type": "t_mapping(t_address,t_struct(Record)10107_storage)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_address)dyn_storage": {
                "base": "t_address",
                "encoding": "dynamic_array",
                "label": "address[]",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_mapping(t_address,t_uint256))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_uint256)"
              },
              "t_mapping(t_address,t_struct(Record)10107_storage)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => struct IndexPool.Record)",
                "numberOfBytes": "32",
                "value": "t_struct(Record)10107_storage"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_struct(Record)10107_storage": {
                "encoding": "inplace",
                "label": "struct IndexPool.Record",
                "members": [
                  {
                    "astId": 10104,
                    "contract": "contracts/pool/IndexPool.sol:IndexPool",
                    "label": "reserve",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint120"
                  },
                  {
                    "astId": 10106,
                    "contract": "contracts/pool/IndexPool.sol:IndexPool",
                    "label": "weight",
                    "offset": 15,
                    "slot": "0",
                    "type": "t_uint136"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_uint120": {
                "encoding": "inplace",
                "label": "uint120",
                "numberOfBytes": "15"
              },
              "t_uint136": {
                "encoding": "inplace",
                "label": "uint136",
                "numberOfBytes": "17"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "DOMAIN_SEPARATOR()": {
                "notice": "EIP-712 typehash for this contract's domain."
              },
              "PERMIT_TYPEHASH()": {
                "notice": "EIP-712 typehash for this contract's {permit} struct."
              },
              "allowance(address,address)": {
                "notice": "owner -> spender -> allowance mapping."
              },
              "approve(address,uint256)": {
                "notice": "Approves `amount` from `msg.sender` to be spent by `spender`."
              },
              "balanceOf(address)": {
                "notice": "owner -> balance mapping."
              },
              "getAmountOut(bytes)": {
                "notice": "Simulates a trade and returns the expected output."
              },
              "nonces(address)": {
                "notice": "owner -> nonce mapping used in {permit}."
              },
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Triggers an approval from `owner` to `spender`."
              },
              "transfer(address,uint256)": {
                "notice": "Transfers `amount` tokens from `msg.sender` to `recipient`."
              },
              "transferFrom(address,address,uint256)": {
                "notice": "Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`."
              }
            },
            "notice": "Trident exchange pool template with constant mean formula for swapping among an array of ERC-20 tokens.",
            "version": 1
          }
        }
      },
      "contracts/pool/IndexPoolFactory.sol": {
        "IndexPoolFactory": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "InvalidTokenOrder",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnauthorisedDeployer",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ZeroAddress",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "configAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "startIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "name": "getPools",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "pairPools",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                }
              ],
              "name": "poolsCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Mudit Gupta",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_11608": {
                  "entryPoint": null,
                  "id": 11608,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_11730": {
                  "entryPoint": null,
                  "id": 11730,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 109,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:306:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:290:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b50604051614a5d380380614a5d83398101604081905261002f9161006d565b806001600160a01b0381166100575760405163d92e233d60e01b815260040160405180910390fd5b60601b6001600160601b0319166080525061009d565b60006020828403121561007f57600080fd5b81516001600160a01b038116811461009657600080fd5b9392505050565b60805160601c6149946100c96000396000818161015a01528181610262015261041701526149946000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c806371a25812116200005657806371a25812146200012e578063cf58879a1462000154578063f6ab6d99146200017c57600080fd5b8063169c4cef146200008057806327c3cae114620000c15780635bc93d6c14620000d8575b600080fd5b620000976200009136600462000848565b620001b5565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b62000097620000d2366004620009d6565b62000208565b6200011f620000e93660046200080a565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526020818152604080832093909416825291909152205490565b604051908152602001620000b8565b620001456200013f3660046200088e565b620002d6565b604051620000b8919062000ae5565b620000977f000000000000000000000000000000000000000000000000000000000000000081565b620000976200018d366004620009bc565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60006020528260005260406000206020528160005260406000208181548110620001de57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16925083915050565b60008060008084806020019051810190620002249190620008d9565b925092509250828282604051602001620002419392919062000b01565b604051602081830303815290604052945060008580519060200120905080867f00000000000000000000000000000000000000000000000000000000000000006040516200028f9062000761565b6200029c92919062000b78565b8190604051809103906000f5905080158015620002bd573d6000803e3d6000fd5b509450620002cd858583620003ff565b50505050919050565b60608167ffffffffffffffff811115620002f457620002f462000d3a565b6040519080825280602002602001820160405280156200031e578160200160208202803683370190505b50905060005b82811015620003f65773ffffffffffffffffffffffffffffffffffffffff80871660009081526020818152604080832093891683529290522062000369828662000c85565b815481106200037c576200037c62000d0b565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110620003bc57620003bc62000d0b565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015280620003ed8162000ca0565b91505062000324565b50949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146200046f576040517f03781a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555b60018351038110156200075b57828160010181518110620004e157620004e162000d0b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1683828151811062000514576200051462000d0b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16106200056a576040517f3f06bf8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015b8351811015620007515760008085848151811062000591576200059162000d0b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858381518110620005ea57620005ea62000d0b565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409091016000908120805460018101825590825291812090910180547fffffffffffffffffffffffff000000000000000000000000000000000000000016928816929092179091558451819086908490811062000679576200067962000d0b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858481518110620006d257620006d262000d0b565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604090910160009081208054600180820183559183529290912090910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001692881692909217909155016200056f565b50600101620004bc565b50505050565b613bcf8062000d9083390190565b600082601f8301126200078157600080fd5b815160206200079a620007948362000c5e565b62000c0c565b80838252828201915082860187848660051b8901011115620007bb57600080fd5b6000805b86811015620007fc57825170ffffffffffffffffffffffffffffffffff81168114620007e9578283fd5b85529385019391850191600101620007bf565b509198975050505050505050565b600080604083850312156200081e57600080fd5b82356200082b8162000d69565b915060208301356200083d8162000d69565b809150509250929050565b6000806000606084860312156200085e57600080fd5b83356200086b8162000d69565b925060208401356200087d8162000d69565b929592945050506040919091013590565b60008060008060808587031215620008a557600080fd5b8435620008b28162000d69565b93506020850135620008c48162000d69565b93969395505050506040820135916060013590565b600080600060608486031215620008ef57600080fd5b835167ffffffffffffffff808211156200090857600080fd5b818601915086601f8301126200091d57600080fd5b8151602062000930620007948362000c5e565b8083825282820191508286018b848660051b89010111156200095157600080fd5b600096505b84871015620009815780516200096c8162000d69565b83526001969096019591830191830162000956565b50918901519197509093505050808211156200099c57600080fd5b50620009ab868287016200076f565b925050604084015190509250925092565b600060208284031215620009cf57600080fd5b5035919050565b60006020808385031215620009ea57600080fd5b823567ffffffffffffffff8082111562000a0357600080fd5b818501915085601f83011262000a1857600080fd5b81358181111562000a2d5762000a2d62000d3a565b62000a5f847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160162000c0c565b9150808252868482850101111562000a7657600080fd5b8084840185840137600090820190930192909252509392505050565b600081518084526020808501945080840160005b8381101562000ada57815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010162000aa6565b509495945050505050565b60208152600062000afa602083018462000a92565b9392505050565b60608152600062000b16606083018662000a92565b82810360208481019190915285518083528682019282019060005b8181101562000b6257845170ffffffffffffffffffffffffffffffffff168352938301939183019160010162000b31565b5050809350505050826040830152949350505050565b604081526000835180604084015260005b8181101562000ba8576020818701810151606086840101520162000b89565b8181111562000bbb576000606083860101525b5073ffffffffffffffffffffffffffffffffffffffff93909316602083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562000c565762000c5662000d3a565b604052919050565b600067ffffffffffffffff82111562000c7b5762000c7b62000d3a565b5060051b60200190565b6000821982111562000c9b5762000c9b62000cdc565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000cd55762000cd562000cdc565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811462000d8c57600080fd5b5056fe6101406040523480156200001257600080fd5b5060405162003bcf38038062003bcf833981016040819052620000359162000966565b4660805262000112604080518082018252600e81526d29bab9b434902628102a37b5b2b760911b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b60a0818152505060008060008480602001905181019062000134919062000886565b9250925092508151835114620001825760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f41525241595360901b60448201526064015b60405180910390fd5b806200019a620f4240670de0b6b3a764000062000af4565b11158015620001bd5750620001b9600a670de0b6b3a764000062000af4565b8111155b620001fe5760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f535741505f46454560801b604482015260640162000179565b82516002111580156200021357506008835111155b620002615760405162461bcd60e51b815260206004820152601560248201527f494e56414c49445f544f4b454e535f4c454e4754480000000000000000000000604482015260640162000179565b60005b83518110156200050a5760006001600160a01b03168482815181106200028e576200028e62000b6d565b60200260200101516001600160a01b03161415620002de5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015260640162000179565b828181518110620002f357620002f362000b6d565b60200260200101516001600160881b0316670de0b6b3a7640000111580156200035557506200032c670de0b6b3a7640000603262000b17565b83828151811062000341576200034162000b6d565b60200260200101516001600160881b031611155b620003945760405162461bcd60e51b815260206004820152600e60248201526d1253959053125117d5d15251d21560921b604482015260640162000179565b604051806040016040528060006001600160781b03168152602001848381518110620003c457620003c462000b6d565b60200260200101516001600160881b031681525060086000868481518110620003f157620003f162000b6d565b6020908102919091018101516001600160a01b0316825281810192909252604001600020825192909101516001600160881b0316600160781b026001600160781b03909216919091179055835160059085908390811062000456576200045662000b6d565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790558251839082908110620004a857620004a862000b6d565b602090810291909101015160048054600090620004d09084906001600160881b031662000aab565b92506101000a8154816001600160881b0302191690836001600160881b031602179055508080620005019062000b39565b91505062000264565b5062000520670de0b6b3a7640000603262000b17565b6004546001600160881b031611156200056f5760405162461bcd60e51b815260206004820152601060248201526f13505617d513d5105317d5d15251d21560821b604482015260640162000179565b6200059060006200058a670de0b6b3a7640000606462000b17565b62000747565b8060c08181525050836001600160a01b031663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b158015620005d257600080fd5b505afa158015620005e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200060d919062000a38565b600681905550836001600160a01b0316630c0a0cd26040518163ffffffff1660e01b815260040160206040518083038186803b1580156200064d57600080fd5b505afa15801562000662573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000688919062000861565b6001600160a01b031660e0816001600160a01b031660601b81525050836001600160a01b0316634da318276040518163ffffffff1660e01b815260040160206040518083038186803b158015620006de57600080fd5b505afa158015620006f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000719919062000861565b6001600160601b0319606091821b81166101005294901b90931661012052505060016007555062000b999050565b806000808282546200075a919062000ad9565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80516001600160a01b0381168114620007cb57600080fd5b919050565b600082601f830112620007e257600080fd5b81516020620007fb620007f58362000a85565b62000a52565b80838252828201915082860187848660051b89010111156200081c57600080fd5b6000805b86811015620008535782516001600160881b038116811462000840578283fd5b8552938501939185019160010162000820565b509198975050505050505050565b6000602082840312156200087457600080fd5b6200087f82620007b3565b9392505050565b6000806000606084860312156200089c57600080fd5b83516001600160401b0380821115620008b457600080fd5b818601915086601f830112620008c957600080fd5b81516020620008dc620007f58362000a85565b8083825282820191508286018b848660051b8901011115620008fd57600080fd5b600096505b848710156200092b576200091681620007b3565b83526001969096019591830191830162000902565b50918901519197509093505050808211156200094657600080fd5b506200095586828701620007d0565b925050604084015190509250925092565b600080604083850312156200097a57600080fd5b82516001600160401b03808211156200099257600080fd5b818501915085601f830112620009a757600080fd5b815181811115620009bc57620009bc62000b83565b60209150620009d4601f8201601f1916830162000a52565b8181528783838601011115620009e957600080fd5b60005b8281101562000a09578481018401518282018501528301620009ec565b8281111562000a1b5760008484840101525b50945062000a2d9050858201620007b3565b925050509250929050565b60006020828403121562000a4b57600080fd5b5051919050565b604051601f8201601f191681016001600160401b038111828210171562000a7d5762000a7d62000b83565b604052919050565b60006001600160401b0382111562000aa15762000aa162000b83565b5060051b60200190565b60006001600160881b0382811684821680830382111562000ad05762000ad062000b57565b01949350505050565b6000821982111562000aef5762000aef62000b57565b500190565b60008262000b1257634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161562000b345762000b3462000b57565b500290565b600060001982141562000b505762000b5062000b57565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60805160a05160c05160e05160601c6101005160601c6101205160601c612fb362000c1c6000396000818161057a01526118ac0152600081816103ec01528181612100015281816121e301526122bf0152600061027601526000818161041301528181611b0a015261203f01526000610ff601526000610ecd0152612fb36000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806367e4ac2c11610104578063a69840a8116100a2578063c14ad80211610071578063c14ad8021461056c578063cf58879a14610575578063d505accf1461059c578063dd62ed3e146105af57600080fd5b8063a69840a81461050c578063a8f1f52e14610533578063a9059cbb14610546578063af8c09bf1461055957600080fd5b80637ecebe00116100de5780637ecebe00146104905780638ae45441146104b057806392bc3219146104c657806395d89b41146104d057600080fd5b806367e4ac2c1461044857806370a082311461045d5780637ba0e2e71461047d57600080fd5b806330adf81f1161017c578063499a3c501161014b578063499a3c50146103d45780634da31827146103e757806354cf2aeb1461040e578063627dd56a1461043557600080fd5b806330adf81f146102f9578063313ce567146103205780633644e5151461033a578063469e90671461034257600080fd5b80630c0a0cd2116101b85780630c0a0cd21461027157806318160ddd146102bd57806323b872dd146102c65780632a07b6c7146102d957600080fd5b8063053da1c8146101df57806306fdde0314610205578063095ea7b31461024e575b600080fd5b6101f26101ed366004612b1a565b6105da565b6040519081526020015b60405180910390f35b6102416040518060400160405280600e81526020017f5375736869204c5020546f6b656e00000000000000000000000000000000000081525081565b6040516101fc9190612dbc565b61026161025c3660046129fd565b610982565b60405190151581526020016101fc565b6102987f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fc565b6101f260005481565b6102616102d4366004612a62565b6109fc565b6102ec6102e7366004612b1a565b610b48565b6040516101fc9190612cc9565b6101f27f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610328601281565b60405160ff90911681526020016101fc565b6101f2610ec9565b61039b6103503660046127d1565b6008602052600090815260409020546effffffffffffffffffffffffffffff8116906f01000000000000000000000000000000900470ffffffffffffffffffffffffffffffffff1682565b604080516effffffffffffffffffffffffffffff909316835270ffffffffffffffffffffffffffffffffff9091166020830152016101fc565b6101f26103e2366004612b1a565b611018565b6102987f000000000000000000000000000000000000000000000000000000000000000081565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b6101f2610443366004612b1a565b61101f565b610450611349565b6040516101fc9190612c6f565b6101f261046b3660046127d1565b60016020526000908152604090205481565b6101f261048b366004612b1a565b6113b8565b6101f261049e3660046127d1565b60036020526000908152604090205481565b6104b86116da565b6040516101fc929190612d2e565b6104ce6118aa565b005b6102416040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b6101f27f54726964656e743a496e6465780000000000000000000000000000000000000081565b6101f2610541366004612b1a565b61194d565b6102616105543660046129fd565b611983565b6101f2610567366004612b1a565b611a08565b6101f260065481565b6102987f000000000000000000000000000000000000000000000000000000000000000081565b6104ce6105aa366004612aa3565b611c8b565b6101f26105bd366004612a29565b600260209081526000928352604080842090915290825290205481565b600060075460011461064d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600260075560008080808080610665888a018a612850565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260086020526040808220928816825290208154979d50959b5093995091975095509350916106d3906effffffffffffffffffffffffffffff166106ce6002670de0b6b3a7640000612de7565b611fdd565b84111561073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4d41585f494e5f524154494f00000000000000000000000000000000000000006044820152606401610644565b815481546107929186916effffffffffffffffffffffffffffff8083169270ffffffffffffffffffffffffffffffffff6f0100000000000000000000000000000091829004811693928316929190910416612028565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152909950339063bd50c7b1906107d1908690600401612dbc565b600060405180830381600087803b1580156107eb57600080fd5b505af11580156107ff573d6000803e3d6000fd5b505083546effffffffffffffffffffffffffffff16860191506108239050896120b2565b101561088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f524543454956454400000000000000000000000000000000000000006044820152606401610644565b81546effffffffffffffffffffffffffffff808216860181167fffffffffffffffffffffffffffffffffff00000000000000000000000000000092831617845582548082168c900390911691161781556108e7878a888861217c565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062878d604051610966929190918252602082015260400190565b60405180910390a4505060016007555094979650505050505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109ea9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610a995773ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915281208054849290610a93908490612e38565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604081208054849290610ace908490612e38565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260016020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b369086815260200190565b60405180910390a35060019392505050565b6060600754600114610bb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610644565b600260075560008080610bcb858701876129bf565b9250925092506000610bdf82600054612322565b60055490915067ffffffffffffffff811115610bfd57610bfd612f29565b604051908082528060200260200182016040528015610c4257816020015b6040805180820190915260008082526020820152815260200190600190039081610c1b5790505b509450610c4f308361235c565b60005b600554811015610eb857600060058281548110610c7157610c71612efa565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16808352600890915260408220549092506effffffffffffffffffffffffffffff1690610cc18583611fdd565b90506effffffffffffffffffffffffffffff8116610d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5a45524f5f4f55540000000000000000000000000000000000000000000000006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260086020526040902080547fffffffffffffffffffffffffffffffffff00000000000000000000000000000081166effffffffffffffffffffffffffffff918216849003821617909155610db090849083168a8a61217c565b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001826effffffffffffffffffffffffffffff16815250898581518110610dfe57610dfe612efa565b60200260200101819052508773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3dd1df88dc92e2788892542d81f999d720a44b4c127065d45c128f4f59fdc3738584604051610e9a92919073ffffffffffffffffffffffffffffffffffffffff9290921682526effffffffffffffffffffffffffffff16602082015260400190565b60405180910390a35050508080610eb090612e4f565b915050610c52565b505060016007555091949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000004614610ff35750604080518082018252600e81527f5375736869204c5020546f6b656e00000000000000000000000000000000000060209182015281518083018352600181527f31000000000000000000000000000000000000000000000000000000000000009082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000806000fd5b600060075460011461108d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610644565b60026007556000808080806110a4878901896127ee565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260086020526040808220928716825290208154969b5094995092975090955093509161110b906effffffffffffffffffffffffffffff166106ce6002670de0b6b3a7640000612de7565b831115611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4d41585f494e5f524154494f00000000000000000000000000000000000000006044820152606401610644565b815481546111ca9185916effffffffffffffffffffffffffffff8083169270ffffffffffffffffffffffffffffffffff6f0100000000000000000000000000000091829004811693928316929190910416612028565b82549098506effffffffffffffffffffffffffffff1683016111eb886120b2565b1015611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f524543454956454400000000000000000000000000000000000000006044820152606401610644565b81546effffffffffffffffffffffffffffff808216850181167fffffffffffffffffffffffffffffffffff00000000000000000000000000000092831617845582548082168b900390911691161781556112af8689878761217c565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062868c60405161132e929190918252602082015260400190565b60405180910390a45050600160075550939695505050505050565b606060058054806020026020016040519081016040528092919081815260200182805480156113ae57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611383575b5050505050905090565b6000600754600114611426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610644565b600260075560008061143a848601866129fd565b91509150600061144c82600054612322565b905060005b6005548110156116c15760006005828154811061147057611470612efa565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16808352600890915260408220549092506effffffffffffffffffffffffffffff1690816114c157846114ed565b6114ed856effffffffffffffffffffffffffffff16836effffffffffffffffffffffffffffff16611fdd565b905061150664e8d4a51000670de0b6b3a7640000612de7565b816effffffffffffffffffffffffffffff161015611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f42414c414e43450000000000000000000000000000000000000000006044820152606401610644565b8181016effffffffffffffffffffffffffffff1661159d846120b2565b1015611605576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f524543454956454400000000000000000000000000000000000000006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526008602090815260409182902080547fffffffffffffffffffffffffffffffffff00000000000000000000000000000081166effffffffffffffffffffffffffffff918216880182161790915582519384528516908301529189169133917ff9403b28cc8805935e0ce6943ed646d5fde3d1e14f6b398e85bfa2851d1b85f7910160405180910390a350505080806116b990612e4f565b915050611451565b506116cc83836123ef565b506001600755949350505050565b60055460609081908067ffffffffffffffff8111156116fb576116fb612f29565b604051908082528060200260200182016040528015611724578160200160208202803683370190505b5092508067ffffffffffffffff81111561174057611740612f29565b604051908082528060200260200182016040528015611769578160200160208202803683370190505b50915060005b818110156118a457600860006005838154811061178e5761178e612efa565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205484516effffffffffffffffffffffffffffff909116908590839081106117e8576117e8612efa565b602002602001018181525050600860006005838154811061180b5761180b612efa565b60009182526020808320919091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205483516f0100000000000000000000000000000090910470ffffffffffffffffffffffffffffffffff169084908390811061187a5761187a612efa565b70ffffffffffffffffffffffffffffffffff9092166020928302919091019091015260010161176f565b50509091565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b15801561191057600080fd5b505afa158015611924573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119489190612b8c565b600655565b6000808080808061196087890189612bc9565b945094509450945094506119778585858585612028565b98975050505050505050565b336000908152600160205260408120805483919083906119a4908490612e38565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109ea9086815260200190565b6000600754600114611a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610644565b60026007556000808080611a8c86880188612970565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260086020526040812080549154600454969a509498509296509094509092611b2e926effffffffffffffffffffffffffffff83169270ffffffffffffffffffffffffffffffffff6f0100000000000000000000000000000090910481169216867f000000000000000000000000000000000000000000000000000000000000000061245f565b8154909650611b66906effffffffffffffffffffffffffffff16611b5b6003670de0b6b3a7640000612de7565b6106ce906001612dcf565b861115611bcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d41585f4f55545f524154494f000000000000000000000000000000000000006044820152606401610644565b80546effffffffffffffffffffffffffffff808216889003167fffffffffffffffffffffffffffffffffff000000000000000000000000000000909116178155611c19308361235c565b611c258587868661217c565b6040805173ffffffffffffffffffffffffffffffffffffffff87811682526020820189905286169133917f3dd1df88dc92e2788892542d81f999d720a44b4c127065d45c128f4f59fdc373910160405180910390a3505060016007555091949350505050565b42841015611cf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610644565b6000611cff610ec9565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c92909190611d5a83612e4f565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611dfb9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611e84573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611eff57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611f65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e415455524500000000000000006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b600080611fea8385612dfb565b905060006120016002670de0b6b3a7640000612de7565b61200b9083612dcf565b905061201f670de0b6b3a764000082612de7565b95945050505050565b6000806120358584612322565b9050600061206d887f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a764000003611fdd565b9050600061207d88838a01612322565b9050600061208b828561250e565b9050670de0b6b3a76400008190036120a38882611fdd565b9b9a5050505050505050505050565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301523060248301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b15801561214457600080fd5b505afa158015612158573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f69190612b8c565b8015612265576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152306024830152838116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b15801561222657600080fd5b505af115801561223a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225e9190612ba5565b505061231c565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301528381166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401600060405180830381600087803b15801561230357600080fd5b505af1158015612317573d6000803e3d6000fd5b505050505b50505050565b600080612337670de0b6b3a764000085612dfb565b90506000612346600285612de7565b6123509083612dcf565b905061201f8482612de7565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081208054839290612391908490612e38565b909155505060008054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b806000808282546124009190612dcf565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016123e3565b60008061246c8786612322565b9050600061247a8588612e38565b905060006124888289612322565b905060006124a7826124a2670de0b6b3a764000087612322565b612631565b905060006124b5828d611fdd565b905060006124c3828e612e38565b90506000886124da88670de0b6b3a7640000612e38565b6124e49190612dfb565b90506124fc826106ce83670de0b6b3a7640000612e38565b9e9d5050505050505050505050505050565b60008260011115801561253f57506001612531670de0b6b3a76400006002612dfb565b61253b9190612e38565b8311155b6125a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f494e56414c49445f4241534500000000000000000000000000000000000000006044820152606401610644565b6000670de0b6b3a76400006125ba8185612de7565b6125c49190612dfb565b905060006125d28285612e38565b905060006125ec866124a2670de0b6b3a764000086612de7565b9050816125f7578093505b600061261a87846126156402540be400670de0b6b3a7640000612de7565b6126a7565b90506126268282611fdd565b979650505050505050565b600061263e600283612e88565b61265057670de0b6b3a7640000612652565b825b905061265f600283612de7565b91505b8115612686576126728380612dfb565b925061267f600283612de7565b9150612662565b612691600283612e88565b156109f6576126a08382612dfb565b9392505050565b60008281806126be87670de0b6b3a7640000612797565b670de0b6b3a76400009550909250905083600060015b87831061278a5760006126ef670de0b6b3a764000083612dfb565b905060008061270f8961270a670de0b6b3a764000086612e38565b612797565b91509150612721866106ce848b611fdd565b955061272d8684612322565b95508561273c5750505061278a565b8615612746579315935b8015612750579315935b841561276757612760868b612e38565b9950612774565b612771868b612dcf565b99505b505050808061278290612e4f565b9150506126d4565b5050505050509392505050565b6000808284106127ad57505080820360006127b5565b505081810360015b9250929050565b803580151581146127cc57600080fd5b919050565b6000602082840312156127e357600080fd5b81356126a081612f58565b600080600080600060a0868803121561280657600080fd5b853561281181612f58565b9450602086013561282181612f58565b9350604086013561283181612f58565b925061283f606087016127bc565b949793965091946080013592915050565b60008060008060008060c0878903121561286957600080fd5b863561287481612f58565b9550602087013561288481612f58565b9450604087013561289481612f58565b93506128a2606088016127bc565b92506080870135915060a087013567ffffffffffffffff808211156128c657600080fd5b818901915089601f8301126128da57600080fd5b8135818111156128ec576128ec612f29565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561293257612932612f29565b816040528281528c602084870101111561294b57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b6000806000806080858703121561298657600080fd5b843561299181612f58565b935060208501356129a181612f58565b92506129af604086016127bc565b9396929550929360600135925050565b6000806000606084860312156129d457600080fd5b83356129df81612f58565b92506129ed602085016127bc565b9150604084013590509250925092565b60008060408385031215612a1057600080fd5b8235612a1b81612f58565b946020939093013593505050565b60008060408385031215612a3c57600080fd5b8235612a4781612f58565b91506020830135612a5781612f58565b809150509250929050565b600080600060608486031215612a7757600080fd5b8335612a8281612f58565b92506020840135612a9281612f58565b929592945050506040919091013590565b600080600080600080600060e0888a031215612abe57600080fd5b8735612ac981612f58565b96506020880135612ad981612f58565b95506040880135945060608801359350608088013560ff81168114612afd57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060208385031215612b2d57600080fd5b823567ffffffffffffffff80821115612b4557600080fd5b818501915085601f830112612b5957600080fd5b813581811115612b6857600080fd5b866020828501011115612b7a57600080fd5b60209290920196919550909350505050565b600060208284031215612b9e57600080fd5b5051919050565b60008060408385031215612bb857600080fd5b505080516020909101519092909150565b600080600080600060a08688031215612be157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000815180845260005b81811015612c2a57602081850181015186830182015201612c0e565b81811115612c3c576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020808252825182820181905260009190848201906040850190845b81811015612cbd57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612c8b565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015612d21578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101612ce6565b5091979650505050505050565b604080825283519082018190526000906020906060840190828701845b82811015612d6757815184529284019290840190600101612d4b565b5050508381038285015284518082528583019183019060005b81811015612daf57835170ffffffffffffffffffffffffffffffffff1683529284019291840191600101612d80565b5090979650505050505050565b6020815260006126a06020830184612c04565b60008219821115612de257612de2612e9c565b500190565b600082612df657612df6612ecb565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e3357612e33612e9c565b500290565b600082821015612e4a57612e4a612e9c565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612e8157612e81612e9c565b5060010190565b600082612e9757612e97612ecb565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114612f7a57600080fd5b5056fea26469706673582212200010f5602b54ecd3b812beb54c93d5893ba55e850e19c6b4253f27507111877964736f6c63430008070033a26469706673582212209666ab02891a1bd731c4ab9bac79f75d075862765bdb6b3546b5007f3da493be64736f6c63430008070033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x4A5D CODESIZE SUB DUP1 PUSH2 0x4A5D DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x6D JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x57 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE POP PUSH2 0x9D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0x4994 PUSH2 0xC9 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x15A ADD MSTORE DUP2 DUP2 PUSH2 0x262 ADD MSTORE PUSH2 0x417 ADD MSTORE PUSH2 0x4994 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x71A25812 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x71A25812 EQ PUSH3 0x12E JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH3 0x154 JUMPI DUP1 PUSH4 0xF6AB6D99 EQ PUSH3 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x169C4CEF EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x27C3CAE1 EQ PUSH3 0xC1 JUMPI DUP1 PUSH4 0x5BC93D6C EQ PUSH3 0xD8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x848 JUMP JUMPDEST PUSH3 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x97 PUSH3 0xD2 CALLDATASIZE PUSH1 0x4 PUSH3 0x9D6 JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH3 0x11F PUSH3 0xE9 CALLDATASIZE PUSH1 0x4 PUSH3 0x80A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xB8 JUMP JUMPDEST PUSH3 0x145 PUSH3 0x13F CALLDATASIZE PUSH1 0x4 PUSH3 0x88E JUMP JUMPDEST PUSH3 0x2D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xB8 SWAP2 SWAP1 PUSH3 0xAE5 JUMP JUMPDEST PUSH3 0x97 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0x97 PUSH3 0x18D CALLDATASIZE PUSH1 0x4 PUSH3 0x9BC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP3 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH3 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP DUP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x224 SWAP2 SWAP1 PUSH3 0x8D9 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP3 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x241 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0xB01 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP5 POP PUSH1 0x0 DUP6 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP1 DUP7 PUSH32 0x0 PUSH1 0x40 MLOAD PUSH3 0x28F SWAP1 PUSH3 0x761 JUMP JUMPDEST PUSH3 0x29C SWAP3 SWAP2 SWAP1 PUSH3 0xB78 JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH3 0x2BD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP5 POP PUSH3 0x2CD DUP6 DUP6 DUP4 PUSH3 0x3FF JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x2F4 JUMPI PUSH3 0x2F4 PUSH3 0xD3A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x31E JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x3F6 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH3 0x369 DUP3 DUP7 PUSH3 0xC85 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH3 0x37C JUMPI PUSH3 0x37C PUSH3 0xD0B JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x3BC JUMPI PUSH3 0x3BC PUSH3 0xD0B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x3ED DUP2 PUSH3 0xCA0 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x324 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH3 0x46F JUMPI PUSH1 0x40 MLOAD PUSH32 0x3781A5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH3 0x75B JUMPI DUP3 DUP2 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH3 0x4E1 JUMPI PUSH3 0x4E1 PUSH3 0xD0B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x514 JUMPI PUSH3 0x514 PUSH3 0xD0B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH3 0x56A JUMPI PUSH1 0x40 MLOAD PUSH32 0x3F06BF8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH3 0x751 JUMPI PUSH1 0x0 DUP1 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x591 JUMPI PUSH3 0x591 PUSH3 0xD0B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x5EA JUMPI PUSH3 0x5EA PUSH3 0xD0B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP3 MSTORE SWAP2 DUP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP5 MLOAD DUP2 SWAP1 DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH3 0x679 JUMPI PUSH3 0x679 PUSH3 0xD0B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x6D2 JUMPI PUSH3 0x6D2 PUSH3 0xD0B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE SWAP2 DUP4 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE ADD PUSH3 0x56F JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH3 0x4BC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x3BCF DUP1 PUSH3 0xD90 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x781 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH3 0x79A PUSH3 0x794 DUP4 PUSH3 0xC5E JUMP JUMPDEST PUSH3 0xC0C JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP8 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH3 0x7BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH3 0x7FC JUMPI DUP3 MLOAD PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0x7E9 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MSTORE SWAP4 DUP6 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x7BF JUMP JUMPDEST POP SWAP2 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x81E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH3 0x82B DUP2 PUSH3 0xD69 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH3 0x83D DUP2 PUSH3 0xD69 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH3 0x86B DUP2 PUSH3 0xD69 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH3 0x87D DUP2 PUSH3 0xD69 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x8A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH3 0x8B2 DUP2 PUSH3 0xD69 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH3 0x8C4 DUP2 PUSH3 0xD69 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x8EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x908 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x91D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH3 0x930 PUSH3 0x794 DUP4 PUSH3 0xC5E JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP12 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH3 0x951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH3 0x981 JUMPI DUP1 MLOAD PUSH3 0x96C DUP2 PUSH3 0xD69 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH3 0x956 JUMP JUMPDEST POP SWAP2 DUP10 ADD MLOAD SWAP2 SWAP8 POP SWAP1 SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH3 0x99C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x9AB DUP7 DUP3 DUP8 ADD PUSH3 0x76F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x9CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x9EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0xA03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA2D JUMPI PUSH3 0xA2D PUSH3 0xD3A JUMP JUMPDEST PUSH3 0xA5F DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH3 0xC0C JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP7 DUP5 DUP3 DUP6 ADD ADD GT ISZERO PUSH3 0xA76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP5 DUP5 ADD DUP6 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xADA JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0xAA6 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0xAFA PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0xA92 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH3 0xB16 PUSH1 0x60 DUP4 ADD DUP7 PUSH3 0xA92 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP6 MLOAD DUP1 DUP4 MSTORE DUP7 DUP3 ADD SWAP3 DUP3 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xB62 JUMPI DUP5 MLOAD PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0xB31 JUMP JUMPDEST POP POP DUP1 SWAP4 POP POP POP POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xBA8 JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH3 0xB89 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0xBBB JUMPI PUSH1 0x0 PUSH1 0x60 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD PUSH1 0x60 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0xC56 JUMPI PUSH3 0xC56 PUSH3 0xD3A JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0xC7B JUMPI PUSH3 0xC7B PUSH3 0xD3A JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0xC9B JUMPI PUSH3 0xC9B PUSH3 0xCDC JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH3 0xCD5 JUMPI PUSH3 0xCD5 PUSH3 0xCDC JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0xD8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH2 0x140 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x3BCF CODESIZE SUB DUP1 PUSH3 0x3BCF DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x966 JUMP JUMPDEST CHAINID PUSH1 0x80 MSTORE PUSH3 0x112 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x29BAB9B434902628102A37B5B2B7 PUSH1 0x91 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x134 SWAP2 SWAP1 PUSH3 0x886 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 MLOAD DUP4 MLOAD EQ PUSH3 0x182 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x494E56414C49445F415252415953 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH3 0x19A PUSH3 0xF4240 PUSH8 0xDE0B6B3A7640000 PUSH3 0xAF4 JUMP JUMPDEST GT ISZERO DUP1 ISZERO PUSH3 0x1BD JUMPI POP PUSH3 0x1B9 PUSH1 0xA PUSH8 0xDE0B6B3A7640000 PUSH3 0xAF4 JUMP JUMPDEST DUP2 GT ISZERO JUMPDEST PUSH3 0x1FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x494E56414C49445F535741505F464545 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x179 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x2 GT ISZERO DUP1 ISZERO PUSH3 0x213 JUMPI POP PUSH1 0x8 DUP4 MLOAD GT ISZERO JUMPDEST PUSH3 0x261 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F544F4B454E535F4C454E4754480000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x179 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH3 0x50A JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x28E JUMPI PUSH3 0x28E PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x2DE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A45524F5F41444452455353 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x179 JUMP JUMPDEST DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH3 0x2F3 JUMPI PUSH3 0x2F3 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND PUSH8 0xDE0B6B3A7640000 GT ISZERO DUP1 ISZERO PUSH3 0x355 JUMPI POP PUSH3 0x32C PUSH8 0xDE0B6B3A7640000 PUSH1 0x32 PUSH3 0xB17 JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x341 JUMPI PUSH3 0x341 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND GT ISZERO JUMPDEST PUSH3 0x394 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x1253959053125117D5D15251D215 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x179 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x3C4 JUMPI PUSH3 0x3C4 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND DUP2 MSTORE POP PUSH1 0x8 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x3F1 JUMPI PUSH3 0x3F1 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP3 MLOAD SWAP3 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND PUSH1 0x1 PUSH1 0x78 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 MLOAD PUSH1 0x5 SWAP1 DUP6 SWAP1 DUP4 SWAP1 DUP2 LT PUSH3 0x456 JUMPI PUSH3 0x456 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 SLOAD PUSH1 0x1 DUP2 ADD DUP5 SSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE SWAP2 SWAP1 SWAP3 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP3 MLOAD DUP4 SWAP1 DUP3 SWAP1 DUP2 LT PUSH3 0x4A8 JUMPI PUSH3 0x4A8 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH3 0x4D0 SWAP1 DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND PUSH3 0xAAB JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP1 DUP1 PUSH3 0x501 SWAP1 PUSH3 0xB39 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x264 JUMP JUMPDEST POP PUSH3 0x520 PUSH8 0xDE0B6B3A7640000 PUSH1 0x32 PUSH3 0xB17 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND GT ISZERO PUSH3 0x56F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x13505617D513D5105317D5D15251D215 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x179 JUMP JUMPDEST PUSH3 0x590 PUSH1 0x0 PUSH3 0x58A PUSH8 0xDE0B6B3A7640000 PUSH1 0x64 PUSH3 0xB17 JUMP JUMPDEST PUSH3 0x747 JUMP JUMPDEST DUP1 PUSH1 0xC0 DUP2 DUP2 MSTORE POP POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x5D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x5E7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x60D SWAP2 SWAP1 PUSH3 0xA38 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0A0CD2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x64D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x662 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x688 SWAP2 SWAP1 PUSH3 0x861 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xE0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4DA31827 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x6DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x6F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x719 SWAP2 SWAP1 PUSH3 0x861 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH2 0x100 MSTORE SWAP5 SWAP1 SHL SWAP1 SWAP4 AND PUSH2 0x120 MSTORE POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP PUSH3 0xB99 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH3 0x75A SWAP2 SWAP1 PUSH3 0xAD9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x7CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x7E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH3 0x7FB PUSH3 0x7F5 DUP4 PUSH3 0xA85 JUMP JUMPDEST PUSH3 0xA52 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP8 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH3 0x81C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH3 0x853 JUMPI DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x840 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MSTORE SWAP4 DUP6 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x820 JUMP JUMPDEST POP SWAP2 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x87F DUP3 PUSH3 0x7B3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x8B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x8C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH3 0x8DC PUSH3 0x7F5 DUP4 PUSH3 0xA85 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP12 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH3 0x8FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH3 0x92B JUMPI PUSH3 0x916 DUP2 PUSH3 0x7B3 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH3 0x902 JUMP JUMPDEST POP SWAP2 DUP10 ADD MLOAD SWAP2 SWAP8 POP SWAP1 SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH3 0x946 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x955 DUP7 DUP3 DUP8 ADD PUSH3 0x7D0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x97A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x992 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x9A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x9BC JUMPI PUSH3 0x9BC PUSH3 0xB83 JUMP JUMPDEST PUSH1 0x20 SWAP2 POP PUSH3 0x9D4 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD PUSH3 0xA52 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP8 DUP4 DUP4 DUP7 ADD ADD GT ISZERO PUSH3 0x9E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0xA09 JUMPI DUP5 DUP2 ADD DUP5 ADD MLOAD DUP3 DUP3 ADD DUP6 ADD MSTORE DUP4 ADD PUSH3 0x9EC JUMP JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0xA1B JUMPI PUSH1 0x0 DUP5 DUP5 DUP5 ADD ADD MSTORE JUMPDEST POP SWAP5 POP PUSH3 0xA2D SWAP1 POP DUP6 DUP3 ADD PUSH3 0x7B3 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0xA7D JUMPI PUSH3 0xA7D PUSH3 0xB83 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH3 0xAA1 JUMPI PUSH3 0xAA1 PUSH3 0xB83 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB DUP3 DUP2 AND DUP5 DUP3 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH3 0xAD0 JUMPI PUSH3 0xAD0 PUSH3 0xB57 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0xAEF JUMPI PUSH3 0xAEF PUSH3 0xB57 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH3 0xB12 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH3 0xB34 JUMPI PUSH3 0xB34 PUSH3 0xB57 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH3 0xB50 JUMPI PUSH3 0xB50 PUSH3 0xB57 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x2FB3 PUSH3 0xC1C PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x57A ADD MSTORE PUSH2 0x18AC ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x3EC ADD MSTORE DUP2 DUP2 PUSH2 0x2100 ADD MSTORE DUP2 DUP2 PUSH2 0x21E3 ADD MSTORE PUSH2 0x22BF ADD MSTORE PUSH1 0x0 PUSH2 0x276 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x413 ADD MSTORE DUP2 DUP2 PUSH2 0x1B0A ADD MSTORE PUSH2 0x203F ADD MSTORE PUSH1 0x0 PUSH2 0xFF6 ADD MSTORE PUSH1 0x0 PUSH2 0xECD ADD MSTORE PUSH2 0x2FB3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x67E4AC2C GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xA69840A8 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xC14AD802 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x56C JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x575 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x59C JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x50C JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x533 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x546 JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x490 JUMPI DUP1 PUSH4 0x8AE45441 EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x448 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x45D JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x47D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x30ADF81F GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x3D4 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x3E7 JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0x627DD56A EQ PUSH2 0x435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x2F9 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x320 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x33A JUMPI DUP1 PUSH4 0x469E9067 EQ PUSH2 0x342 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2C6 JUMPI DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x24E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x5DA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x241 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FC SWAP2 SWAP1 PUSH2 0x2DBC JUMP JUMPDEST PUSH2 0x261 PUSH2 0x25C CALLDATASIZE PUSH1 0x4 PUSH2 0x29FD JUMP JUMPDEST PUSH2 0x982 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FC JUMP JUMPDEST PUSH2 0x298 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FC JUMP JUMPDEST PUSH2 0x1F2 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x261 PUSH2 0x2D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A62 JUMP JUMPDEST PUSH2 0x9FC JUMP JUMPDEST PUSH2 0x2EC PUSH2 0x2E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0xB48 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FC SWAP2 SWAP1 PUSH2 0x2CC9 JUMP JUMPDEST PUSH2 0x1F2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x328 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FC JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0xEC9 JUMP JUMPDEST PUSH2 0x39B PUSH2 0x350 CALLDATASIZE PUSH1 0x4 PUSH2 0x27D1 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP1 PUSH16 0x1000000000000000000000000000000 SWAP1 DIV PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1FC JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x3E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x1018 JUMP JUMPDEST PUSH2 0x298 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x443 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x101F JUMP JUMPDEST PUSH2 0x450 PUSH2 0x1349 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FC SWAP2 SWAP1 PUSH2 0x2C6F JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x46B CALLDATASIZE PUSH1 0x4 PUSH2 0x27D1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x13B8 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x49E CALLDATASIZE PUSH1 0x4 PUSH2 0x27D1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x4B8 PUSH2 0x16DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FC SWAP3 SWAP2 SWAP1 PUSH2 0x2D2E JUMP JUMPDEST PUSH2 0x4CE PUSH2 0x18AA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x241 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH32 0x54726964656E743A496E64657800000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x541 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x194D JUMP JUMPDEST PUSH2 0x261 PUSH2 0x554 CALLDATASIZE PUSH1 0x4 PUSH2 0x29FD JUMP JUMPDEST PUSH2 0x1983 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x567 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x1A08 JUMP JUMPDEST PUSH2 0x1F2 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x298 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x4CE PUSH2 0x5AA CALLDATASIZE PUSH1 0x4 PUSH2 0x2AA3 JUMP JUMPDEST PUSH2 0x1C8B JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x5BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2A29 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x64D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x665 DUP9 DUP11 ADD DUP11 PUSH2 0x2850 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP3 DUP9 AND DUP3 MSTORE SWAP1 KECCAK256 DUP2 SLOAD SWAP8 SWAP14 POP SWAP6 SWAP12 POP SWAP4 SWAP10 POP SWAP2 SWAP8 POP SWAP6 POP SWAP4 POP SWAP2 PUSH2 0x6D3 SWAP1 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6CE PUSH1 0x2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x1FDD JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x73C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D41585F494E5F524154494F0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 SLOAD DUP2 SLOAD PUSH2 0x792 SWAP2 DUP7 SWAP2 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP3 PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH16 0x1000000000000000000000000000000 SWAP2 DUP3 SWAP1 DIV DUP2 AND SWAP4 SWAP3 DUP4 AND SWAP3 SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x2028 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP10 POP CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x7D1 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2DBC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7FF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP DUP4 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 ADD SWAP2 POP PUSH2 0x823 SWAP1 POP DUP10 PUSH2 0x20B2 JUMP JUMPDEST LT ISZERO PUSH2 0x88B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F52454345495645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP7 ADD DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 SWAP3 DUP4 AND OR DUP5 SSTORE DUP3 SLOAD DUP1 DUP3 AND DUP13 SWAP1 SUB SWAP1 SWAP2 AND SWAP2 AND OR DUP2 SSTORE PUSH2 0x8E7 DUP8 DUP11 DUP9 DUP9 PUSH2 0x217C JUMP JUMPDEST DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP8 DUP14 PUSH1 0x40 MLOAD PUSH2 0x966 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x9EA SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xA99 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xA93 SWAP1 DUP5 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xACE SWAP1 DUP5 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xB36 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0xBB6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0xBCB DUP6 DUP8 ADD DUP8 PUSH2 0x29BF JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 PUSH2 0xBDF DUP3 PUSH1 0x0 SLOAD PUSH2 0x2322 JUMP JUMPDEST PUSH1 0x5 SLOAD SWAP1 SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBFD JUMPI PUSH2 0xBFD PUSH2 0x2F29 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC42 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xC1B JUMPI SWAP1 POP JUMPDEST POP SWAP5 POP PUSH2 0xC4F ADDRESS DUP4 PUSH2 0x235C JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x5 SLOAD DUP2 LT ISZERO PUSH2 0xEB8 JUMPI PUSH1 0x0 PUSH1 0x5 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xC71 JUMPI PUSH2 0xC71 PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD SWAP1 SWAP3 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0xCC1 DUP6 DUP4 PUSH2 0x1FDD JUMP JUMPDEST SWAP1 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xD3B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5A45524F5F4F5554000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 DUP2 AND PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP5 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH2 0xDB0 SWAP1 DUP5 SWAP1 DUP4 AND DUP11 DUP11 PUSH2 0x217C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xDFE JUMPI PUSH2 0xDFE PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x3DD1DF88DC92E2788892542D81F999D720A44B4C127065D45C128F4F59FDC373 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0xE9A SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP DUP1 DUP1 PUSH2 0xEB0 SWAP1 PUSH2 0x2E4F JUMP JUMPDEST SWAP2 POP POP PUSH2 0xC52 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP2 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0xFF3 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x108D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x10A4 DUP8 DUP10 ADD DUP10 PUSH2 0x27EE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP3 DUP8 AND DUP3 MSTORE SWAP1 KECCAK256 DUP2 SLOAD SWAP7 SWAP12 POP SWAP5 SWAP10 POP SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP SWAP2 PUSH2 0x110B SWAP1 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6CE PUSH1 0x2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST DUP4 GT ISZERO PUSH2 0x1174 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D41585F494E5F524154494F0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 SLOAD DUP2 SLOAD PUSH2 0x11CA SWAP2 DUP6 SWAP2 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP3 PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH16 0x1000000000000000000000000000000 SWAP2 DUP3 SWAP1 DIV DUP2 AND SWAP4 SWAP3 DUP4 AND SWAP3 SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x2028 JUMP JUMPDEST DUP3 SLOAD SWAP1 SWAP9 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 ADD PUSH2 0x11EB DUP9 PUSH2 0x20B2 JUMP JUMPDEST LT ISZERO PUSH2 0x1253 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F52454345495645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP6 ADD DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 SWAP3 DUP4 AND OR DUP5 SSTORE DUP3 SLOAD DUP1 DUP3 AND DUP12 SWAP1 SUB SWAP1 SWAP2 AND SWAP2 AND OR DUP2 SSTORE PUSH2 0x12AF DUP7 DUP10 DUP8 DUP8 PUSH2 0x217C JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP7 DUP13 PUSH1 0x40 MLOAD PUSH2 0x132E SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP4 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x5 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x13AE JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1383 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x1426 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 PUSH2 0x143A DUP5 DUP7 ADD DUP7 PUSH2 0x29FD JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x144C DUP3 PUSH1 0x0 SLOAD PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x5 SLOAD DUP2 LT ISZERO PUSH2 0x16C1 JUMPI PUSH1 0x0 PUSH1 0x5 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1470 JUMPI PUSH2 0x1470 PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD SWAP1 SWAP3 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0x14C1 JUMPI DUP5 PUSH2 0x14ED JUMP JUMPDEST PUSH2 0x14ED DUP6 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1FDD JUMP JUMPDEST SWAP1 POP PUSH2 0x1506 PUSH5 0xE8D4A51000 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST DUP2 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x1580 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E5F42414C414E4345000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 DUP2 ADD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x159D DUP5 PUSH2 0x20B2 JUMP JUMPDEST LT ISZERO PUSH2 0x1605 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F52454345495645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 DUP2 AND PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP9 ADD DUP3 AND OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE DUP6 AND SWAP1 DUP4 ADD MSTORE SWAP2 DUP10 AND SWAP2 CALLER SWAP2 PUSH32 0xF9403B28CC8805935E0CE6943ED646D5FDE3D1E14F6B398E85BFA2851D1B85F7 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP DUP1 DUP1 PUSH2 0x16B9 SWAP1 PUSH2 0x2E4F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1451 JUMP JUMPDEST POP PUSH2 0x16CC DUP4 DUP4 PUSH2 0x23EF JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x60 SWAP1 DUP2 SWAP1 DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x16FB JUMPI PUSH2 0x16FB PUSH2 0x2F29 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1724 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1740 JUMPI PUSH2 0x1740 PUSH2 0x2F29 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1769 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x18A4 JUMPI PUSH1 0x8 PUSH1 0x0 PUSH1 0x5 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x178E JUMPI PUSH2 0x178E PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD DUP5 MLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP6 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x17E8 JUMPI PUSH2 0x17E8 PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x8 PUSH1 0x0 PUSH1 0x5 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x180B JUMPI PUSH2 0x180B PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD DUP4 MLOAD PUSH16 0x1000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP5 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x187A JUMPI PUSH2 0x187A PUSH2 0x2EFA JUMP JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x176F JUMP JUMPDEST POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1924 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1948 SWAP2 SWAP1 PUSH2 0x2B8C JUMP JUMPDEST PUSH1 0x6 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x1960 DUP8 DUP10 ADD DUP10 PUSH2 0x2BC9 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH2 0x1977 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2028 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP4 SWAP1 PUSH2 0x19A4 SWAP1 DUP5 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x9EA SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x1A76 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x1A8C DUP7 DUP9 ADD DUP9 PUSH2 0x2970 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SLOAD PUSH1 0x4 SLOAD SWAP7 SWAP11 POP SWAP5 SWAP9 POP SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP1 SWAP3 PUSH2 0x1B2E SWAP3 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP3 PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH16 0x1000000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 AND SWAP3 AND DUP7 PUSH32 0x0 PUSH2 0x245F JUMP JUMPDEST DUP2 SLOAD SWAP1 SWAP7 POP PUSH2 0x1B66 SWAP1 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B5B PUSH1 0x3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x6CE SWAP1 PUSH1 0x1 PUSH2 0x2DCF JUMP JUMPDEST DUP7 GT ISZERO PUSH2 0x1BCF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D41585F4F55545F524154494F00000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP1 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP9 SWAP1 SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 SWAP1 SWAP2 AND OR DUP2 SSTORE PUSH2 0x1C19 ADDRESS DUP4 PUSH2 0x235C JUMP JUMPDEST PUSH2 0x1C25 DUP6 DUP8 DUP7 DUP7 PUSH2 0x217C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP10 SWAP1 MSTORE DUP7 AND SWAP2 CALLER SWAP2 PUSH32 0x3DD1DF88DC92E2788892542D81F999D720A44B4C127065D45C128F4F59FDC373 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP2 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1CF5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CFF PUSH2 0xEC9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP3 DUP13 SWAP3 DUP13 SWAP3 DUP13 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x1D5A DUP4 PUSH2 0x2E4F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1DFB SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1EFF JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1F65 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1FEA DUP4 DUP6 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2001 PUSH1 0x2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x200B SWAP1 DUP4 PUSH2 0x2DCF JUMP JUMPDEST SWAP1 POP PUSH2 0x201F PUSH8 0xDE0B6B3A7640000 DUP3 PUSH2 0x2DE7 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2035 DUP6 DUP5 PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x206D DUP9 PUSH32 0x0 PUSH8 0xDE0B6B3A7640000 SUB PUSH2 0x1FDD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x207D DUP9 DUP4 DUP11 ADD PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x208B DUP3 DUP6 PUSH2 0x250E JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 DUP2 SWAP1 SUB PUSH2 0x20A3 DUP9 DUP3 PUSH2 0x1FDD JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2158 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9F6 SWAP2 SWAP1 PUSH2 0x2B8C JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2265 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x223A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x225E SWAP2 SWAP1 PUSH2 0x2BA5 JUMP JUMPDEST POP POP PUSH2 0x231C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2317 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2337 PUSH8 0xDE0B6B3A7640000 DUP6 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2346 PUSH1 0x2 DUP6 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x2350 SWAP1 DUP4 PUSH2 0x2DCF JUMP JUMPDEST SWAP1 POP PUSH2 0x201F DUP5 DUP3 PUSH2 0x2DE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x2391 SWAP1 DUP5 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP1 SLOAD DUP3 SWAP1 SUB DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0x2400 SWAP2 SWAP1 PUSH2 0x2DCF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x23E3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x246C DUP8 DUP7 PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x247A DUP6 DUP9 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2488 DUP3 DUP10 PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24A7 DUP3 PUSH2 0x24A2 PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x2322 JUMP JUMPDEST PUSH2 0x2631 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24B5 DUP3 DUP14 PUSH2 0x1FDD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24C3 DUP3 DUP15 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP9 PUSH2 0x24DA DUP9 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2E38 JUMP JUMPDEST PUSH2 0x24E4 SWAP2 SWAP1 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH2 0x24FC DUP3 PUSH2 0x6CE DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2E38 JUMP JUMPDEST SWAP15 SWAP14 POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 GT ISZERO DUP1 ISZERO PUSH2 0x253F JUMPI POP PUSH1 0x1 PUSH2 0x2531 PUSH8 0xDE0B6B3A7640000 PUSH1 0x2 PUSH2 0x2DFB JUMP JUMPDEST PUSH2 0x253B SWAP2 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST DUP4 GT ISZERO JUMPDEST PUSH2 0x25A5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F424153450000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x25BA DUP2 DUP6 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x25C4 SWAP2 SWAP1 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x25D2 DUP3 DUP6 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x25EC DUP7 PUSH2 0x24A2 PUSH8 0xDE0B6B3A7640000 DUP7 PUSH2 0x2DE7 JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x25F7 JUMPI DUP1 SWAP4 POP JUMPDEST PUSH1 0x0 PUSH2 0x261A DUP8 DUP5 PUSH2 0x2615 PUSH5 0x2540BE400 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x26A7 JUMP JUMPDEST SWAP1 POP PUSH2 0x2626 DUP3 DUP3 PUSH2 0x1FDD JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x263E PUSH1 0x2 DUP4 PUSH2 0x2E88 JUMP JUMPDEST PUSH2 0x2650 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x2652 JUMP JUMPDEST DUP3 JUMPDEST SWAP1 POP PUSH2 0x265F PUSH1 0x2 DUP4 PUSH2 0x2DE7 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 ISZERO PUSH2 0x2686 JUMPI PUSH2 0x2672 DUP4 DUP1 PUSH2 0x2DFB JUMP JUMPDEST SWAP3 POP PUSH2 0x267F PUSH1 0x2 DUP4 PUSH2 0x2DE7 JUMP JUMPDEST SWAP2 POP PUSH2 0x2662 JUMP JUMPDEST PUSH2 0x2691 PUSH1 0x2 DUP4 PUSH2 0x2E88 JUMP JUMPDEST ISZERO PUSH2 0x9F6 JUMPI PUSH2 0x26A0 DUP4 DUP3 PUSH2 0x2DFB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 DUP1 PUSH2 0x26BE DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2797 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP6 POP SWAP1 SWAP3 POP SWAP1 POP DUP4 PUSH1 0x0 PUSH1 0x1 JUMPDEST DUP8 DUP4 LT PUSH2 0x278A JUMPI PUSH1 0x0 PUSH2 0x26EF PUSH8 0xDE0B6B3A7640000 DUP4 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x270F DUP10 PUSH2 0x270A PUSH8 0xDE0B6B3A7640000 DUP7 PUSH2 0x2E38 JUMP JUMPDEST PUSH2 0x2797 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2721 DUP7 PUSH2 0x6CE DUP5 DUP12 PUSH2 0x1FDD JUMP JUMPDEST SWAP6 POP PUSH2 0x272D DUP7 DUP5 PUSH2 0x2322 JUMP JUMPDEST SWAP6 POP DUP6 PUSH2 0x273C JUMPI POP POP POP PUSH2 0x278A JUMP JUMPDEST DUP7 ISZERO PUSH2 0x2746 JUMPI SWAP4 ISZERO SWAP4 JUMPDEST DUP1 ISZERO PUSH2 0x2750 JUMPI SWAP4 ISZERO SWAP4 JUMPDEST DUP5 ISZERO PUSH2 0x2767 JUMPI PUSH2 0x2760 DUP7 DUP12 PUSH2 0x2E38 JUMP JUMPDEST SWAP10 POP PUSH2 0x2774 JUMP JUMPDEST PUSH2 0x2771 DUP7 DUP12 PUSH2 0x2DCF JUMP JUMPDEST SWAP10 POP JUMPDEST POP POP POP DUP1 DUP1 PUSH2 0x2782 SWAP1 PUSH2 0x2E4F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x26D4 JUMP JUMPDEST POP POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 LT PUSH2 0x27AD JUMPI POP POP DUP1 DUP3 SUB PUSH1 0x0 PUSH2 0x27B5 JUMP JUMPDEST POP POP DUP2 DUP2 SUB PUSH1 0x1 JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x27CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x27E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x26A0 DUP2 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2806 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2811 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x2821 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x2831 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 POP PUSH2 0x283F PUSH1 0x60 DUP8 ADD PUSH2 0x27BC JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP2 SWAP5 PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x2869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2874 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x2884 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x2894 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP4 POP PUSH2 0x28A2 PUSH1 0x60 DUP9 ADD PUSH2 0x27BC JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x28C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x28EC JUMPI PUSH2 0x28EC PUSH2 0x2F29 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2932 JUMPI PUSH2 0x2932 PUSH2 0x2F29 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP13 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x294B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2991 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x29A1 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 POP PUSH2 0x29AF PUSH1 0x40 DUP7 ADD PUSH2 0x27BC JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x29D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x29DF DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 POP PUSH2 0x29ED PUSH1 0x20 DUP6 ADD PUSH2 0x27BC JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2A1B DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2A47 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2A57 DUP2 PUSH2 0x2F58 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2A77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2A82 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2A92 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2ABE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x2AC9 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x2AD9 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2AFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2B45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2B68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2B7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2BB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2BE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP4 CALLDATALOAD SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2C2A JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x2C0E JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2C3C JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2CBD JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2C8B JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2D21 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2CE6 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2D67 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2D4B JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP5 MLOAD DUP1 DUP3 MSTORE DUP6 DUP4 ADD SWAP2 DUP4 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2DAF JUMPI DUP4 MLOAD PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2D80 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x26A0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2C04 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x2DE2 JUMPI PUSH2 0x2DE2 PUSH2 0x2E9C JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2DF6 JUMPI PUSH2 0x2DF6 PUSH2 0x2ECB JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x2E33 JUMPI PUSH2 0x2E33 PUSH2 0x2E9C JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x2E4A JUMPI PUSH2 0x2E4A PUSH2 0x2E9C JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x2E81 JUMPI PUSH2 0x2E81 PUSH2 0x2E9C JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2E97 JUMPI PUSH2 0x2E97 PUSH2 0x2ECB JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2F7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STOP LT CREATE2 PUSH1 0x2B SLOAD 0xEC 0xD3 0xB8 SLT 0xBE 0xB5 0x4C SWAP4 0xD5 DUP10 EXTCODESIZE 0xA5 0x5E DUP6 0xE NOT 0xC6 0xB4 0x25 EXTCODEHASH 0x27 POP PUSH18 0x11877964736F6C63430008070033A2646970 PUSH7 0x73582212209666 0xAB MUL DUP10 BYTE SHL 0xD7 BALANCE 0xC4 0xAB SWAP12 0xAC PUSH26 0xF75D075862765BDB6B3546B5007F3DA493BE64736F6C63430008 SMOD STOP CALLER ",
              "sourceMap": "236:737:43:-:0;;;284:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;334:15;-1:-1:-1;;;;;634:29:44;;630:55;;672:13;;-1:-1:-1;;;672:13:44;;;;;;;;;;;630:55;695:32;;-1:-1:-1;;;;;;695:32:44;;;-1:-1:-1;236:737:43;;14:290:64;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:64;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:64:o;:::-;236:737:43;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_registerPool_11818": {
                  "entryPoint": 1023,
                  "id": 11818,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@configAddress_11692": {
                  "entryPoint": null,
                  "id": 11692,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@deployPool_11675": {
                  "entryPoint": 520,
                  "id": 11675,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getPools_11886": {
                  "entryPoint": 726,
                  "id": 11886,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@masterDeployer_11681": {
                  "entryPoint": null,
                  "id": 11681,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@poolsCount_11837": {
                  "entryPoint": null,
                  "id": 11837,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@pools_11688": {
                  "entryPoint": 437,
                  "id": 11688,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_array_uint136_dyn_fromMemory": {
                  "entryPoint": 1903,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 2058,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 2120,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256": {
                  "entryPoint": 2190,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint136_$dyn_memory_ptrt_uint256_fromMemory": {
                  "entryPoint": 2265,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 2492,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_memory_ptr": {
                  "entryPoint": 2518,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_array_address_dyn": {
                  "entryPoint": 2706,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 2789,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint136_$dyn_memory_ptr_t_uint256__to_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint136_$dyn_memory_ptr_t_uint256__fromStack_reversed": {
                  "entryPoint": 2817,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed": {
                  "entryPoint": 2936,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 3084,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_allocation_size_array_address_dyn": {
                  "entryPoint": 3166,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 3205,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 3232,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 3292,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 3339,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 3386,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 3433,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:8967:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "89:753:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "138:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "147:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "140:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "140:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "140:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "117:6:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "125:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "113:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "113:17:64"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "132:3:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "109:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "109:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "102:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "102:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "99:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "163:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "179:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "173:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "173:13:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "167:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "195:14:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "205:4:64",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "199:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "218:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "285:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_address_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "245:39:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "245:43:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "229:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "229:60:64"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "222:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "298:16:64",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "311:3:64"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "302:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "330:3:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "335:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "323:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "323:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "323:15:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "347:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "358:3:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "363:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "354:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "354:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "347:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "375:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "390:6:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "398:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "386:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "386:15:64"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "379:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "455:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "464:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "467:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "457:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "457:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "457:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "424:6:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "436:1:64",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "439:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "432:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "432:10:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "420:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "420:23:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "445:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "416:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "416:32:64"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "450:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "413:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "413:41:64"
                              },
                              "nodeType": "YulIf",
                              "src": "410:61:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "480:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "489:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "484:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "499:12:64",
                              "value": {
                                "name": "i",
                                "nodeType": "YulIdentifier",
                                "src": "510:1:64"
                              },
                              "variables": [
                                {
                                  "name": "i_1",
                                  "nodeType": "YulTypedName",
                                  "src": "503:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "571:242:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "585:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "604:3:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "598:5:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "598:10:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "589:5:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "692:16:64",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "i",
                                                "nodeType": "YulIdentifier",
                                                "src": "701:1:64"
                                              },
                                              {
                                                "name": "i",
                                                "nodeType": "YulIdentifier",
                                                "src": "704:1:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "694:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "694:12:64"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "694:12:64"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "634:5:64"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "645:5:64"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "652:36:64",
                                                  "type": "",
                                                  "value": "0xffffffffffffffffffffffffffffffffff"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "641:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "641:48:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "eq",
                                            "nodeType": "YulIdentifier",
                                            "src": "631:2:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "631:59:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "624:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "624:67:64"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "621:87:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "728:3:64"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "733:5:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "721:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "721:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "721:18:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "752:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "763:3:64"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "768:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "759:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "759:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "752:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "784:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "795:3:64"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "800:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "791:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "791:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "784:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "531:3:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "536:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "528:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "528:11:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "540:22:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "542:18:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "553:3:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "558:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "549:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "549:11:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "542:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "524:3:64",
                                "statements": []
                              },
                              "src": "520:293:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "822:14:64",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "831:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "822:5:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_uint136_dyn_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "63:6:64",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "71:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "79:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:828:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "934:301:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "980:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "989:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "992:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "982:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "982:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "982:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "955:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "964:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "951:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "951:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "976:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "947:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "947:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "944:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1005:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1031:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1018:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1018:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1009:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1075:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1050:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1050:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1050:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1090:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1100:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1090:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1114:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1146:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1157:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1142:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1142:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1129:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1129:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1118:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1195:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1170:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1170:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1170:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1212:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1222:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1212:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "892:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "903:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "915:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "923:6:64",
                            "type": ""
                          }
                        ],
                        "src": "847:388:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1344:352:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1390:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1399:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1402:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1392:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1392:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1392:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1365:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1374:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1361:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1361:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1386:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1357:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1357:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1354:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1415:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1441:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1428:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1428:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1419:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1485:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1460:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1460:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1460:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1500:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1510:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1500:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1524:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1556:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1567:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1552:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1552:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1539:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1539:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1528:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1605:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1580:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1580:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1580:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1622:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1632:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1622:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1648:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1675:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1686:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1671:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1671:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1658:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1658:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1648:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1294:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1305:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1317:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1325:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1333:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1240:456:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1822:404:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1869:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1878:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1881:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1871:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1871:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1871:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1843:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1852:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1839:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1839:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1864:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1835:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1835:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1832:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1894:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1920:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1907:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1907:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1898:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1964:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1939:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1939:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1939:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1979:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1989:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1979:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2003:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2035:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2046:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2031:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2031:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2018:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2018:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2007:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2084:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2059:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2059:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2059:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2101:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "2111:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2101:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2127:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2154:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2165:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2150:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2150:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2137:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2137:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2127:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2178:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2205:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2216:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2201:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2201:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2188:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2188:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2178:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1764:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1775:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1787:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1795:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1803:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1811:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1701:525:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2396:1116:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2442:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2451:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2454:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2444:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2444:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2444:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2417:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2426:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2413:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2413:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2438:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2409:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2409:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2406:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2467:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2487:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2481:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2481:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2471:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2506:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2516:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2510:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2561:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2570:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2573:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2563:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2563:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2563:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2549:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2557:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2546:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2546:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2543:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2586:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2600:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2611:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2596:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2596:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2590:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2666:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2675:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2678:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2668:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2668:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2668:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2645:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2649:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2641:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2641:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2656:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2637:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2637:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2630:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2630:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2627:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2691:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2707:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2701:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2701:9:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2695:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2719:14:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2729:4:64",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "2723:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2742:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "2809:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_address_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "2769:39:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2769:43:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2753:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2753:60:64"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "2746:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2822:16:64",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "2835:3:64"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2826:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "2854:3:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2859:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2847:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2847:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2847:15:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2871:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "2882:3:64"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "2887:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2878:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2878:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "2871:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2899:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2914:2:64"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "2918:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2910:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2910:11:64"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "2903:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2975:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2984:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2987:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2977:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2977:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2977:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2944:2:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2952:1:64",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "2955:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "2948:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2948:10:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2940:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2940:19:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "2961:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2936:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2936:28:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2966:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2933:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2933:41:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2930:61:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3000:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3009:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "3004:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3064:186:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3078:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "3097:3:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "3091:5:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3091:10:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "3082:5:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "3139:5:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "validator_revert_address",
                                        "nodeType": "YulIdentifier",
                                        "src": "3114:24:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3114:31:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3114:31:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "3165:3:64"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "3170:5:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3158:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3158:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3158:18:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "3189:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "3200:3:64"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3205:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3196:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3196:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "3189:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "3221:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "3232:3:64"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3237:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3228:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3228:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "3221:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "3030:1:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3033:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3027:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3027:9:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "3037:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "3039:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "3048:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3051:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3044:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3044:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "3039:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "3023:3:64",
                                "statements": []
                              },
                              "src": "3019:231:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3259:15:64",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "3269:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3259:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3283:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3309:9:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "3320:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3305:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3305:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3299:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3299:25:64"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3287:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3353:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3362:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3365:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3355:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3355:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3355:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3339:8:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3349:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3336:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3336:16:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3333:36:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3378:84:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3432:9:64"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3443:8:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3428:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3428:24:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3454:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint136_dyn_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3388:39:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3388:74:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3378:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3471:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3491:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3502:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3487:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3487:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3481:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3481:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3471:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint136_$dyn_memory_ptrt_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2346:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2357:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2369:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2377:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2385:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2231:1281:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3587:110:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3633:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3642:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3645:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3635:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3635:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3635:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3608:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3617:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3604:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3604:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3629:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3600:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3600:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3597:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3658:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3681:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3668:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3668:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3658:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3553:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3564:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3576:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3517:180:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3781:743:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3791:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3801:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3795:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3848:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3857:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3860:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3850:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3850:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3850:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3823:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3832:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3819:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3819:23:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3844:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3815:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3815:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3812:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3873:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3900:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3887:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3887:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3877:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3919:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3929:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "3923:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3974:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3983:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3986:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3976:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3976:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3976:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3962:6:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3970:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3959:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3959:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3956:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3999:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4013:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4024:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4009:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4009:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "4003:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4079:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4088:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4091:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4081:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4081:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4081:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "4058:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4062:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4054:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4054:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4069:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4050:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4050:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4043:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4043:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4040:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4104:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4127:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4114:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4114:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "4108:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4153:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "4155:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4155:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4155:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "4145:2:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4149:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4142:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4142:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4139:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4184:125:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "4225:2:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4229:4:64",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "4221:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4221:13:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4236:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "4217:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4217:86:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4305:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4213:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4213:95:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "4197:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4197:112:64"
                              },
                              "variables": [
                                {
                                  "name": "array",
                                  "nodeType": "YulTypedName",
                                  "src": "4188:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "4325:5:64"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "4332:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4318:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4318:17:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4318:17:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4381:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4390:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4393:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4383:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4383:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4383:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "4358:2:64"
                                          },
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "4362:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4354:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4354:11:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4367:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4350:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4350:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4372:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4347:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4347:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4344:53:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "4423:5:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4430:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4419:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4419:14:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "4439:2:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4443:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4435:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4435:11:64"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "4448:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "4406:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4406:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4406:45:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array",
                                            "nodeType": "YulIdentifier",
                                            "src": "4475:5:64"
                                          },
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "4482:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4471:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4471:14:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4487:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4467:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4467:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4492:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4460:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4460:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4460:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4503:15:64",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "4513:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4503:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3747:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3758:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3770:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3702:822:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4590:423:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4600:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4620:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4614:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4614:12:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "4604:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4642:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4647:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4635:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4635:19:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4635:19:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4663:14:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4673:4:64",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4667:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4686:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4697:3:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4702:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4693:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4693:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "4686:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4714:28:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4732:5:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4739:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4728:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4728:14:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4718:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4751:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4760:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "4755:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4819:169:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "4840:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4855:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "4849:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4849:13:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4864:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "4845:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4845:62:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4833:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4833:75:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4833:75:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4921:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "4932:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4937:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4928:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4928:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4921:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4953:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "4967:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4975:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4963:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4963:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4953:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4781:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4784:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4778:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4778:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4792:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4794:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "4803:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4806:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4799:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4799:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "4794:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4774:3:64",
                                "statements": []
                              },
                              "src": "4770:218:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4997:10:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "5004:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "4997:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_address_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "4567:5:64",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4574:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4582:3:64",
                            "type": ""
                          }
                        ],
                        "src": "4529:484:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5119:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5129:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5141:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5152:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5137:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5137:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5129:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5171:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5186:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5194:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5182:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5182:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5164:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5164:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5164:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5088:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5099:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5110:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5018:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5400:110:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5417:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5428:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5410:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5410:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5410:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5440:64:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5477:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5489:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5500:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5485:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5485:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_address_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "5448:28:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5448:56:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5440:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5369:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5380:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5391:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5249:261:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5772:661:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5789:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5800:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5782:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5782:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5782:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5812:70:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5855:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5867:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5878:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5863:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5863:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_address_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "5826:28:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5826:56:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5816:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5891:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5901:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5895:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5923:9:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5934:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5919:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5919:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5943:6:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5951:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5939:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5939:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5912:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5912:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5912:50:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5971:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "5982:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "5975:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5997:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6017:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6011:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6011:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6001:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6040:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6048:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6033:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6033:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6033:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6064:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6075:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6083:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6071:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6071:15:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "6064:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6095:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6113:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6121:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6109:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6109:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "6099:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6133:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6142:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6137:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6201:163:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "6222:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6237:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "6231:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6231:13:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "6246:36:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "6227:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6227:56:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6215:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6215:69:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6215:69:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6297:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "6308:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6313:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6304:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6304:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6297:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6329:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "6343:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6351:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6339:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6339:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6329:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6163:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6166:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6160:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6160:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6174:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6176:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6185:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6188:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6181:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6181:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6176:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6156:3:64",
                                "statements": []
                              },
                              "src": "6152:212:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6373:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "6381:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6373:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6404:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6415:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6400:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6400:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6420:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6393:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6393:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6393:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint136_$dyn_memory_ptr_t_uint256__to_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint136_$dyn_memory_ptr_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5725:9:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5736:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5744:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5752:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5763:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5515:918:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6585:612:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6602:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6613:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6595:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6595:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6595:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6625:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6645:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6639:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6639:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6629:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6672:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6683:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6668:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6668:18:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6688:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6661:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6661:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6661:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6704:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6713:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6708:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6775:92:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6804:9:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6815:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6800:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6800:17:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "6819:2:64",
                                              "type": "",
                                              "value": "96"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6796:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6796:26:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6838:6:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6846:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6834:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "6834:14:64"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "6850:4:64",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6830:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6830:25:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6824:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6824:32:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6789:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6789:68:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6789:68:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6734:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6737:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6731:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6731:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6745:21:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6747:17:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6756:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6759:4:64",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6752:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6752:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6747:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6727:3:64",
                                "statements": []
                              },
                              "src": "6723:144:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6901:66:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6930:9:64"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6941:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6926:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6926:22:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "6950:2:64",
                                              "type": "",
                                              "value": "96"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6922:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6922:31:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6955:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6915:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6915:42:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6915:42:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6882:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6885:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6879:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6879:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6876:91:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6976:121:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6992:9:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "7011:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7019:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "7007:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7007:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7024:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "7003:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7003:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6988:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6988:104:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7094:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6984:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6984:113:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6976:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7117:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7128:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7113:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7113:20:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7139:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7147:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7135:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7135:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7106:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7106:85:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7106:85:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6546:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6557:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6565:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6576:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6438:759:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7303:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7313:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7325:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7336:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7321:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7321:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7313:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7355:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7366:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7348:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7348:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7348:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7272:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7283:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7294:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7202:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7429:289:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7439:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7455:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7449:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7449:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "7439:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7467:117:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7489:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "7505:4:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7511:2:64",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7501:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7501:13:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7516:66:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7497:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7497:86:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7485:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7485:99:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7471:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7659:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "7661:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7661:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7661:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7602:10:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7614:18:64",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7599:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7599:34:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7638:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7650:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7635:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7635:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "7596:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7596:62:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7593:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7697:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7701:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7690:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7690:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7690:22:64"
                            }
                          ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "7409:4:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "7418:6:64",
                            "type": ""
                          }
                        ],
                        "src": "7384:334:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7792:114:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7836:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "7838:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7838:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7838:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7808:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7816:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7805:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7805:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7802:56:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7867:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7883:1:64",
                                        "type": "",
                                        "value": "5"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "7886:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "7879:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7879:14:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7895:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7875:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7875:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "7867:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_array_address_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "7772:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "7783:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7723:183:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7959:80:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7986:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "7988:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7988:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7988:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "7975:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "7982:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "7978:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7978:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7972:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7972:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7969:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8017:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "8028:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "8031:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8024:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8024:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "8017:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "7942:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "7945:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "7951:3:64",
                            "type": ""
                          }
                        ],
                        "src": "7911:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8091:148:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8182:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "8184:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8184:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8184:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8107:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8114:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "8104:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8104:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "8101:103:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8213:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8224:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8231:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8220:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8220:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "8213:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "8073:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "8083:3:64",
                            "type": ""
                          }
                        ],
                        "src": "8044:195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8276:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8293:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8296:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8286:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8286:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8286:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8390:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8393:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8383:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8383:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8383:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8414:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8417:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "8407:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8407:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8407:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "8244:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8465:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8482:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8485:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8475:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8475:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8475:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8579:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8582:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8572:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8572:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8572:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8603:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8606:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "8596:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8596:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8596:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "8433:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8654:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8671:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8674:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8664:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8664:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8664:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8768:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8771:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8761:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8761:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8761:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8792:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8795:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "8785:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8785:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8785:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "8622:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8856:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8943:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8952:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8955:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8945:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8945:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8945:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "8879:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "8890:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8897:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "8886:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8886:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "8876:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8876:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "8869:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8869:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "8866:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "8845:5:64",
                            "type": ""
                          }
                        ],
                        "src": "8811:154:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_array_uint136_dyn_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_address_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let src := add(offset, _2)\n        if gt(add(add(offset, shl(5, _1)), _2), end) { revert(0, 0) }\n        let i := 0\n        let i_1 := i\n        for { } lt(i_1, _1) { i_1 := add(i_1, 1) }\n        {\n            let value := mload(src)\n            if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffff))) { revert(i, i) }\n            mstore(dst, value)\n            dst := add(dst, _2)\n            src := add(src, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint136_$dyn_memory_ptrt_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        let _4 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_address_dyn(_3))\n        let dst_1 := dst\n        mstore(dst, _3)\n        dst := add(dst, _4)\n        let src := add(_2, _4)\n        if gt(add(add(_2, shl(5, _3)), _4), dataEnd) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _3) { i := add(i, 1) }\n        {\n            let value := mload(src)\n            validator_revert_address(value)\n            mstore(dst, value)\n            dst := add(dst, _4)\n            src := add(src, _4)\n        }\n        value0 := dst_1\n        let offset_1 := mload(add(headStart, _4))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_array_uint136_dyn_fromMemory(add(headStart, offset_1), dataEnd)\n        value2 := mload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_bytes_memory_ptr(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _2 := 0xffffffffffffffff\n        if gt(offset, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := calldataload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let array := allocate_memory(add(and(add(_4, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), _1))\n        mstore(array, _4)\n        if gt(add(add(_3, _4), _1), dataEnd) { revert(0, 0) }\n        calldatacopy(add(array, _1), add(_3, _1), _4)\n        mstore(add(add(array, _4), _1), 0)\n        value0 := array\n    }\n    function abi_encode_array_address_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_array_address_dyn(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint136_$dyn_memory_ptr_t_uint256__to_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint136_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        let tail_1 := abi_encode_array_address_dyn(value0, add(headStart, 96))\n        let _1 := 32\n        mstore(add(headStart, _1), sub(tail_1, headStart))\n        let pos := tail_1\n        let length := mload(value1)\n        mstore(tail_1, length)\n        pos := add(tail_1, _1)\n        let srcPtr := add(value1, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let length := mload(value0)\n        mstore(add(headStart, 64), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(add(headStart, i), 96), mload(add(add(value0, i), 0x20)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 96), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 96)\n        mstore(add(headStart, 0x20), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_array_address_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "11681": [
                  {
                    "length": 32,
                    "start": 346
                  },
                  {
                    "length": 32,
                    "start": 610
                  },
                  {
                    "length": 32,
                    "start": 1047
                  }
                ]
              },
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b50600436106200007b5760003560e01c806371a25812116200005657806371a25812146200012e578063cf58879a1462000154578063f6ab6d99146200017c57600080fd5b8063169c4cef146200008057806327c3cae114620000c15780635bc93d6c14620000d8575b600080fd5b620000976200009136600462000848565b620001b5565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b62000097620000d2366004620009d6565b62000208565b6200011f620000e93660046200080a565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526020818152604080832093909416825291909152205490565b604051908152602001620000b8565b620001456200013f3660046200088e565b620002d6565b604051620000b8919062000ae5565b620000977f000000000000000000000000000000000000000000000000000000000000000081565b620000976200018d366004620009bc565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60006020528260005260406000206020528160005260406000208181548110620001de57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16925083915050565b60008060008084806020019051810190620002249190620008d9565b925092509250828282604051602001620002419392919062000b01565b604051602081830303815290604052945060008580519060200120905080867f00000000000000000000000000000000000000000000000000000000000000006040516200028f9062000761565b6200029c92919062000b78565b8190604051809103906000f5905080158015620002bd573d6000803e3d6000fd5b509450620002cd858583620003ff565b50505050919050565b60608167ffffffffffffffff811115620002f457620002f462000d3a565b6040519080825280602002602001820160405280156200031e578160200160208202803683370190505b50905060005b82811015620003f65773ffffffffffffffffffffffffffffffffffffffff80871660009081526020818152604080832093891683529290522062000369828662000c85565b815481106200037c576200037c62000d0b565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110620003bc57620003bc62000d0b565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015280620003ed8162000ca0565b91505062000324565b50949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146200046f576040517f03781a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555b60018351038110156200075b57828160010181518110620004e157620004e162000d0b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1683828151811062000514576200051462000d0b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16106200056a576040517f3f06bf8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015b8351811015620007515760008085848151811062000591576200059162000d0b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858381518110620005ea57620005ea62000d0b565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409091016000908120805460018101825590825291812090910180547fffffffffffffffffffffffff000000000000000000000000000000000000000016928816929092179091558451819086908490811062000679576200067962000d0b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858481518110620006d257620006d262000d0b565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604090910160009081208054600180820183559183529290912090910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001692881692909217909155016200056f565b50600101620004bc565b50505050565b613bcf8062000d9083390190565b600082601f8301126200078157600080fd5b815160206200079a620007948362000c5e565b62000c0c565b80838252828201915082860187848660051b8901011115620007bb57600080fd5b6000805b86811015620007fc57825170ffffffffffffffffffffffffffffffffff81168114620007e9578283fd5b85529385019391850191600101620007bf565b509198975050505050505050565b600080604083850312156200081e57600080fd5b82356200082b8162000d69565b915060208301356200083d8162000d69565b809150509250929050565b6000806000606084860312156200085e57600080fd5b83356200086b8162000d69565b925060208401356200087d8162000d69565b929592945050506040919091013590565b60008060008060808587031215620008a557600080fd5b8435620008b28162000d69565b93506020850135620008c48162000d69565b93969395505050506040820135916060013590565b600080600060608486031215620008ef57600080fd5b835167ffffffffffffffff808211156200090857600080fd5b818601915086601f8301126200091d57600080fd5b8151602062000930620007948362000c5e565b8083825282820191508286018b848660051b89010111156200095157600080fd5b600096505b84871015620009815780516200096c8162000d69565b83526001969096019591830191830162000956565b50918901519197509093505050808211156200099c57600080fd5b50620009ab868287016200076f565b925050604084015190509250925092565b600060208284031215620009cf57600080fd5b5035919050565b60006020808385031215620009ea57600080fd5b823567ffffffffffffffff8082111562000a0357600080fd5b818501915085601f83011262000a1857600080fd5b81358181111562000a2d5762000a2d62000d3a565b62000a5f847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160162000c0c565b9150808252868482850101111562000a7657600080fd5b8084840185840137600090820190930192909252509392505050565b600081518084526020808501945080840160005b8381101562000ada57815173ffffffffffffffffffffffffffffffffffffffff168752958201959082019060010162000aa6565b509495945050505050565b60208152600062000afa602083018462000a92565b9392505050565b60608152600062000b16606083018662000a92565b82810360208481019190915285518083528682019282019060005b8181101562000b6257845170ffffffffffffffffffffffffffffffffff168352938301939183019160010162000b31565b5050809350505050826040830152949350505050565b604081526000835180604084015260005b8181101562000ba8576020818701810151606086840101520162000b89565b8181111562000bbb576000606083860101525b5073ffffffffffffffffffffffffffffffffffffffff93909316602083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171562000c565762000c5662000d3a565b604052919050565b600067ffffffffffffffff82111562000c7b5762000c7b62000d3a565b5060051b60200190565b6000821982111562000c9b5762000c9b62000cdc565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000cd55762000cd562000cdc565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811462000d8c57600080fd5b5056fe6101406040523480156200001257600080fd5b5060405162003bcf38038062003bcf833981016040819052620000359162000966565b4660805262000112604080518082018252600e81526d29bab9b434902628102a37b5b2b760911b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b60a0818152505060008060008480602001905181019062000134919062000886565b9250925092508151835114620001825760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f41525241595360901b60448201526064015b60405180910390fd5b806200019a620f4240670de0b6b3a764000062000af4565b11158015620001bd5750620001b9600a670de0b6b3a764000062000af4565b8111155b620001fe5760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f535741505f46454560801b604482015260640162000179565b82516002111580156200021357506008835111155b620002615760405162461bcd60e51b815260206004820152601560248201527f494e56414c49445f544f4b454e535f4c454e4754480000000000000000000000604482015260640162000179565b60005b83518110156200050a5760006001600160a01b03168482815181106200028e576200028e62000b6d565b60200260200101516001600160a01b03161415620002de5760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b604482015260640162000179565b828181518110620002f357620002f362000b6d565b60200260200101516001600160881b0316670de0b6b3a7640000111580156200035557506200032c670de0b6b3a7640000603262000b17565b83828151811062000341576200034162000b6d565b60200260200101516001600160881b031611155b620003945760405162461bcd60e51b815260206004820152600e60248201526d1253959053125117d5d15251d21560921b604482015260640162000179565b604051806040016040528060006001600160781b03168152602001848381518110620003c457620003c462000b6d565b60200260200101516001600160881b031681525060086000868481518110620003f157620003f162000b6d565b6020908102919091018101516001600160a01b0316825281810192909252604001600020825192909101516001600160881b0316600160781b026001600160781b03909216919091179055835160059085908390811062000456576200045662000b6d565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790558251839082908110620004a857620004a862000b6d565b602090810291909101015160048054600090620004d09084906001600160881b031662000aab565b92506101000a8154816001600160881b0302191690836001600160881b031602179055508080620005019062000b39565b91505062000264565b5062000520670de0b6b3a7640000603262000b17565b6004546001600160881b031611156200056f5760405162461bcd60e51b815260206004820152601060248201526f13505617d513d5105317d5d15251d21560821b604482015260640162000179565b6200059060006200058a670de0b6b3a7640000606462000b17565b62000747565b8060c08181525050836001600160a01b031663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b158015620005d257600080fd5b505afa158015620005e7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200060d919062000a38565b600681905550836001600160a01b0316630c0a0cd26040518163ffffffff1660e01b815260040160206040518083038186803b1580156200064d57600080fd5b505afa15801562000662573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000688919062000861565b6001600160a01b031660e0816001600160a01b031660601b81525050836001600160a01b0316634da318276040518163ffffffff1660e01b815260040160206040518083038186803b158015620006de57600080fd5b505afa158015620006f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000719919062000861565b6001600160601b0319606091821b81166101005294901b90931661012052505060016007555062000b999050565b806000808282546200075a919062000ad9565b90915550506001600160a01b0382166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80516001600160a01b0381168114620007cb57600080fd5b919050565b600082601f830112620007e257600080fd5b81516020620007fb620007f58362000a85565b62000a52565b80838252828201915082860187848660051b89010111156200081c57600080fd5b6000805b86811015620008535782516001600160881b038116811462000840578283fd5b8552938501939185019160010162000820565b509198975050505050505050565b6000602082840312156200087457600080fd5b6200087f82620007b3565b9392505050565b6000806000606084860312156200089c57600080fd5b83516001600160401b0380821115620008b457600080fd5b818601915086601f830112620008c957600080fd5b81516020620008dc620007f58362000a85565b8083825282820191508286018b848660051b8901011115620008fd57600080fd5b600096505b848710156200092b576200091681620007b3565b83526001969096019591830191830162000902565b50918901519197509093505050808211156200094657600080fd5b506200095586828701620007d0565b925050604084015190509250925092565b600080604083850312156200097a57600080fd5b82516001600160401b03808211156200099257600080fd5b818501915085601f830112620009a757600080fd5b815181811115620009bc57620009bc62000b83565b60209150620009d4601f8201601f1916830162000a52565b8181528783838601011115620009e957600080fd5b60005b8281101562000a09578481018401518282018501528301620009ec565b8281111562000a1b5760008484840101525b50945062000a2d9050858201620007b3565b925050509250929050565b60006020828403121562000a4b57600080fd5b5051919050565b604051601f8201601f191681016001600160401b038111828210171562000a7d5762000a7d62000b83565b604052919050565b60006001600160401b0382111562000aa15762000aa162000b83565b5060051b60200190565b60006001600160881b0382811684821680830382111562000ad05762000ad062000b57565b01949350505050565b6000821982111562000aef5762000aef62000b57565b500190565b60008262000b1257634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161562000b345762000b3462000b57565b500290565b600060001982141562000b505762000b5062000b57565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60805160a05160c05160e05160601c6101005160601c6101205160601c612fb362000c1c6000396000818161057a01526118ac0152600081816103ec01528181612100015281816121e301526122bf0152600061027601526000818161041301528181611b0a015261203f01526000610ff601526000610ecd0152612fb36000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806367e4ac2c11610104578063a69840a8116100a2578063c14ad80211610071578063c14ad8021461056c578063cf58879a14610575578063d505accf1461059c578063dd62ed3e146105af57600080fd5b8063a69840a81461050c578063a8f1f52e14610533578063a9059cbb14610546578063af8c09bf1461055957600080fd5b80637ecebe00116100de5780637ecebe00146104905780638ae45441146104b057806392bc3219146104c657806395d89b41146104d057600080fd5b806367e4ac2c1461044857806370a082311461045d5780637ba0e2e71461047d57600080fd5b806330adf81f1161017c578063499a3c501161014b578063499a3c50146103d45780634da31827146103e757806354cf2aeb1461040e578063627dd56a1461043557600080fd5b806330adf81f146102f9578063313ce567146103205780633644e5151461033a578063469e90671461034257600080fd5b80630c0a0cd2116101b85780630c0a0cd21461027157806318160ddd146102bd57806323b872dd146102c65780632a07b6c7146102d957600080fd5b8063053da1c8146101df57806306fdde0314610205578063095ea7b31461024e575b600080fd5b6101f26101ed366004612b1a565b6105da565b6040519081526020015b60405180910390f35b6102416040518060400160405280600e81526020017f5375736869204c5020546f6b656e00000000000000000000000000000000000081525081565b6040516101fc9190612dbc565b61026161025c3660046129fd565b610982565b60405190151581526020016101fc565b6102987f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fc565b6101f260005481565b6102616102d4366004612a62565b6109fc565b6102ec6102e7366004612b1a565b610b48565b6040516101fc9190612cc9565b6101f27f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610328601281565b60405160ff90911681526020016101fc565b6101f2610ec9565b61039b6103503660046127d1565b6008602052600090815260409020546effffffffffffffffffffffffffffff8116906f01000000000000000000000000000000900470ffffffffffffffffffffffffffffffffff1682565b604080516effffffffffffffffffffffffffffff909316835270ffffffffffffffffffffffffffffffffff9091166020830152016101fc565b6101f26103e2366004612b1a565b611018565b6102987f000000000000000000000000000000000000000000000000000000000000000081565b6101f27f000000000000000000000000000000000000000000000000000000000000000081565b6101f2610443366004612b1a565b61101f565b610450611349565b6040516101fc9190612c6f565b6101f261046b3660046127d1565b60016020526000908152604090205481565b6101f261048b366004612b1a565b6113b8565b6101f261049e3660046127d1565b60036020526000908152604090205481565b6104b86116da565b6040516101fc929190612d2e565b6104ce6118aa565b005b6102416040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b6101f27f54726964656e743a496e6465780000000000000000000000000000000000000081565b6101f2610541366004612b1a565b61194d565b6102616105543660046129fd565b611983565b6101f2610567366004612b1a565b611a08565b6101f260065481565b6102987f000000000000000000000000000000000000000000000000000000000000000081565b6104ce6105aa366004612aa3565b611c8b565b6101f26105bd366004612a29565b600260209081526000928352604080842090915290825290205481565b600060075460011461064d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600260075560008080808080610665888a018a612850565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260086020526040808220928816825290208154979d50959b5093995091975095509350916106d3906effffffffffffffffffffffffffffff166106ce6002670de0b6b3a7640000612de7565b611fdd565b84111561073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4d41585f494e5f524154494f00000000000000000000000000000000000000006044820152606401610644565b815481546107929186916effffffffffffffffffffffffffffff8083169270ffffffffffffffffffffffffffffffffff6f0100000000000000000000000000000091829004811693928316929190910416612028565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152909950339063bd50c7b1906107d1908690600401612dbc565b600060405180830381600087803b1580156107eb57600080fd5b505af11580156107ff573d6000803e3d6000fd5b505083546effffffffffffffffffffffffffffff16860191506108239050896120b2565b101561088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f524543454956454400000000000000000000000000000000000000006044820152606401610644565b81546effffffffffffffffffffffffffffff808216860181167fffffffffffffffffffffffffffffffffff00000000000000000000000000000092831617845582548082168c900390911691161781556108e7878a888861217c565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062878d604051610966929190918252602082015260400190565b60405180910390a4505060016007555094979650505050505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906109ea9086815260200190565b60405180910390a35060015b92915050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610a995773ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915281208054849290610a93908490612e38565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602052604081208054849290610ace908490612e38565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260016020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b369086815260200190565b60405180910390a35060019392505050565b6060600754600114610bb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610644565b600260075560008080610bcb858701876129bf565b9250925092506000610bdf82600054612322565b60055490915067ffffffffffffffff811115610bfd57610bfd612f29565b604051908082528060200260200182016040528015610c4257816020015b6040805180820190915260008082526020820152815260200190600190039081610c1b5790505b509450610c4f308361235c565b60005b600554811015610eb857600060058281548110610c7157610c71612efa565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16808352600890915260408220549092506effffffffffffffffffffffffffffff1690610cc18583611fdd565b90506effffffffffffffffffffffffffffff8116610d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5a45524f5f4f55540000000000000000000000000000000000000000000000006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260086020526040902080547fffffffffffffffffffffffffffffffffff00000000000000000000000000000081166effffffffffffffffffffffffffffff918216849003821617909155610db090849083168a8a61217c565b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001826effffffffffffffffffffffffffffff16815250898581518110610dfe57610dfe612efa565b60200260200101819052508773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3dd1df88dc92e2788892542d81f999d720a44b4c127065d45c128f4f59fdc3738584604051610e9a92919073ffffffffffffffffffffffffffffffffffffffff9290921682526effffffffffffffffffffffffffffff16602082015260400190565b60405180910390a35050508080610eb090612e4f565b915050610c52565b505060016007555091949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000004614610ff35750604080518082018252600e81527f5375736869204c5020546f6b656e00000000000000000000000000000000000060209182015281518083018352600181527f31000000000000000000000000000000000000000000000000000000000000009082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527fc2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000806000fd5b600060075460011461108d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610644565b60026007556000808080806110a4878901896127ee565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260086020526040808220928716825290208154969b5094995092975090955093509161110b906effffffffffffffffffffffffffffff166106ce6002670de0b6b3a7640000612de7565b831115611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4d41585f494e5f524154494f00000000000000000000000000000000000000006044820152606401610644565b815481546111ca9185916effffffffffffffffffffffffffffff8083169270ffffffffffffffffffffffffffffffffff6f0100000000000000000000000000000091829004811693928316929190910416612028565b82549098506effffffffffffffffffffffffffffff1683016111eb886120b2565b1015611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f524543454956454400000000000000000000000000000000000000006044820152606401610644565b81546effffffffffffffffffffffffffffff808216850181167fffffffffffffffffffffffffffffffffff00000000000000000000000000000092831617845582548082168b900390911691161781556112af8689878761217c565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062868c60405161132e929190918252602082015260400190565b60405180910390a45050600160075550939695505050505050565b606060058054806020026020016040519081016040528092919081815260200182805480156113ae57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611383575b5050505050905090565b6000600754600114611426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610644565b600260075560008061143a848601866129fd565b91509150600061144c82600054612322565b905060005b6005548110156116c15760006005828154811061147057611470612efa565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16808352600890915260408220549092506effffffffffffffffffffffffffffff1690816114c157846114ed565b6114ed856effffffffffffffffffffffffffffff16836effffffffffffffffffffffffffffff16611fdd565b905061150664e8d4a51000670de0b6b3a7640000612de7565b816effffffffffffffffffffffffffffff161015611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f42414c414e43450000000000000000000000000000000000000000006044820152606401610644565b8181016effffffffffffffffffffffffffffff1661159d846120b2565b1015611605576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f524543454956454400000000000000000000000000000000000000006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526008602090815260409182902080547fffffffffffffffffffffffffffffffffff00000000000000000000000000000081166effffffffffffffffffffffffffffff918216880182161790915582519384528516908301529189169133917ff9403b28cc8805935e0ce6943ed646d5fde3d1e14f6b398e85bfa2851d1b85f7910160405180910390a350505080806116b990612e4f565b915050611451565b506116cc83836123ef565b506001600755949350505050565b60055460609081908067ffffffffffffffff8111156116fb576116fb612f29565b604051908082528060200260200182016040528015611724578160200160208202803683370190505b5092508067ffffffffffffffff81111561174057611740612f29565b604051908082528060200260200182016040528015611769578160200160208202803683370190505b50915060005b818110156118a457600860006005838154811061178e5761178e612efa565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205484516effffffffffffffffffffffffffffff909116908590839081106117e8576117e8612efa565b602002602001018181525050600860006005838154811061180b5761180b612efa565b60009182526020808320919091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205483516f0100000000000000000000000000000090910470ffffffffffffffffffffffffffffffffff169084908390811061187a5761187a612efa565b70ffffffffffffffffffffffffffffffffff9092166020928302919091019091015260010161176f565b50509091565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b15801561191057600080fd5b505afa158015611924573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119489190612b8c565b600655565b6000808080808061196087890189612bc9565b945094509450945094506119778585858585612028565b98975050505050505050565b336000908152600160205260408120805483919083906119a4908490612e38565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260016020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906109ea9086815260200190565b6000600754600114611a76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610644565b60026007556000808080611a8c86880188612970565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260086020526040812080549154600454969a509498509296509094509092611b2e926effffffffffffffffffffffffffffff83169270ffffffffffffffffffffffffffffffffff6f0100000000000000000000000000000090910481169216867f000000000000000000000000000000000000000000000000000000000000000061245f565b8154909650611b66906effffffffffffffffffffffffffffff16611b5b6003670de0b6b3a7640000612de7565b6106ce906001612dcf565b861115611bcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d41585f4f55545f524154494f000000000000000000000000000000000000006044820152606401610644565b80546effffffffffffffffffffffffffffff808216889003167fffffffffffffffffffffffffffffffffff000000000000000000000000000000909116178155611c19308361235c565b611c258587868661217c565b6040805173ffffffffffffffffffffffffffffffffffffffff87811682526020820189905286169133917f3dd1df88dc92e2788892542d81f999d720a44b4c127065d45c128f4f59fdc373910160405180910390a3505060016007555091949350505050565b42841015611cf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610644565b6000611cff610ec9565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260036020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928c928c928c92909190611d5a83612e4f565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611dfb9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611e84573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611eff57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611f65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e415455524500000000000000006044820152606401610644565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526002602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b600080611fea8385612dfb565b905060006120016002670de0b6b3a7640000612de7565b61200b9083612dcf565b905061201f670de0b6b3a764000082612de7565b95945050505050565b6000806120358584612322565b9050600061206d887f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a764000003611fdd565b9050600061207d88838a01612322565b9050600061208b828561250e565b9050670de0b6b3a76400008190036120a38882611fdd565b9b9a5050505050505050505050565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301523060248301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b15801561214457600080fd5b505afa158015612158573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f69190612b8c565b8015612265576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152306024830152838116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b15801561222657600080fd5b505af115801561223a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225e9190612ba5565b505061231c565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301528381166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401600060405180830381600087803b15801561230357600080fd5b505af1158015612317573d6000803e3d6000fd5b505050505b50505050565b600080612337670de0b6b3a764000085612dfb565b90506000612346600285612de7565b6123509083612dcf565b905061201f8482612de7565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604081208054839290612391908490612e38565b909155505060008054829003815560405182815273ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b806000808282546124009190612dcf565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016123e3565b60008061246c8786612322565b9050600061247a8588612e38565b905060006124888289612322565b905060006124a7826124a2670de0b6b3a764000087612322565b612631565b905060006124b5828d611fdd565b905060006124c3828e612e38565b90506000886124da88670de0b6b3a7640000612e38565b6124e49190612dfb565b90506124fc826106ce83670de0b6b3a7640000612e38565b9e9d5050505050505050505050505050565b60008260011115801561253f57506001612531670de0b6b3a76400006002612dfb565b61253b9190612e38565b8311155b6125a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f494e56414c49445f4241534500000000000000000000000000000000000000006044820152606401610644565b6000670de0b6b3a76400006125ba8185612de7565b6125c49190612dfb565b905060006125d28285612e38565b905060006125ec866124a2670de0b6b3a764000086612de7565b9050816125f7578093505b600061261a87846126156402540be400670de0b6b3a7640000612de7565b6126a7565b90506126268282611fdd565b979650505050505050565b600061263e600283612e88565b61265057670de0b6b3a7640000612652565b825b905061265f600283612de7565b91505b8115612686576126728380612dfb565b925061267f600283612de7565b9150612662565b612691600283612e88565b156109f6576126a08382612dfb565b9392505050565b60008281806126be87670de0b6b3a7640000612797565b670de0b6b3a76400009550909250905083600060015b87831061278a5760006126ef670de0b6b3a764000083612dfb565b905060008061270f8961270a670de0b6b3a764000086612e38565b612797565b91509150612721866106ce848b611fdd565b955061272d8684612322565b95508561273c5750505061278a565b8615612746579315935b8015612750579315935b841561276757612760868b612e38565b9950612774565b612771868b612dcf565b99505b505050808061278290612e4f565b9150506126d4565b5050505050509392505050565b6000808284106127ad57505080820360006127b5565b505081810360015b9250929050565b803580151581146127cc57600080fd5b919050565b6000602082840312156127e357600080fd5b81356126a081612f58565b600080600080600060a0868803121561280657600080fd5b853561281181612f58565b9450602086013561282181612f58565b9350604086013561283181612f58565b925061283f606087016127bc565b949793965091946080013592915050565b60008060008060008060c0878903121561286957600080fd5b863561287481612f58565b9550602087013561288481612f58565b9450604087013561289481612f58565b93506128a2606088016127bc565b92506080870135915060a087013567ffffffffffffffff808211156128c657600080fd5b818901915089601f8301126128da57600080fd5b8135818111156128ec576128ec612f29565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561293257612932612f29565b816040528281528c602084870101111561294b57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b6000806000806080858703121561298657600080fd5b843561299181612f58565b935060208501356129a181612f58565b92506129af604086016127bc565b9396929550929360600135925050565b6000806000606084860312156129d457600080fd5b83356129df81612f58565b92506129ed602085016127bc565b9150604084013590509250925092565b60008060408385031215612a1057600080fd5b8235612a1b81612f58565b946020939093013593505050565b60008060408385031215612a3c57600080fd5b8235612a4781612f58565b91506020830135612a5781612f58565b809150509250929050565b600080600060608486031215612a7757600080fd5b8335612a8281612f58565b92506020840135612a9281612f58565b929592945050506040919091013590565b600080600080600080600060e0888a031215612abe57600080fd5b8735612ac981612f58565b96506020880135612ad981612f58565b95506040880135945060608801359350608088013560ff81168114612afd57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060208385031215612b2d57600080fd5b823567ffffffffffffffff80821115612b4557600080fd5b818501915085601f830112612b5957600080fd5b813581811115612b6857600080fd5b866020828501011115612b7a57600080fd5b60209290920196919550909350505050565b600060208284031215612b9e57600080fd5b5051919050565b60008060408385031215612bb857600080fd5b505080516020909101519092909150565b600080600080600060a08688031215612be157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000815180845260005b81811015612c2a57602081850181015186830182015201612c0e565b81811115612c3c576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020808252825182820181905260009190848201906040850190845b81811015612cbd57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101612c8b565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015612d21578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101612ce6565b5091979650505050505050565b604080825283519082018190526000906020906060840190828701845b82811015612d6757815184529284019290840190600101612d4b565b5050508381038285015284518082528583019183019060005b81811015612daf57835170ffffffffffffffffffffffffffffffffff1683529284019291840191600101612d80565b5090979650505050505050565b6020815260006126a06020830184612c04565b60008219821115612de257612de2612e9c565b500190565b600082612df657612df6612ecb565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e3357612e33612e9c565b500290565b600082821015612e4a57612e4a612e9c565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612e8157612e81612e9c565b5060010190565b600082612e9757612e97612ecb565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114612f7a57600080fd5b5056fea26469706673582212200010f5602b54ecd3b812beb54c93d5893ba55e850e19c6b4253f27507111877964736f6c63430008070033a26469706673582212209666ab02891a1bd731c4ab9bac79f75d075862765bdb6b3546b5007f3da493be64736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x71A25812 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x71A25812 EQ PUSH3 0x12E JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH3 0x154 JUMPI DUP1 PUSH4 0xF6AB6D99 EQ PUSH3 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x169C4CEF EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x27C3CAE1 EQ PUSH3 0xC1 JUMPI DUP1 PUSH4 0x5BC93D6C EQ PUSH3 0xD8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x848 JUMP JUMPDEST PUSH3 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x97 PUSH3 0xD2 CALLDATASIZE PUSH1 0x4 PUSH3 0x9D6 JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH3 0x11F PUSH3 0xE9 CALLDATASIZE PUSH1 0x4 PUSH3 0x80A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xB8 JUMP JUMPDEST PUSH3 0x145 PUSH3 0x13F CALLDATASIZE PUSH1 0x4 PUSH3 0x88E JUMP JUMPDEST PUSH3 0x2D6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xB8 SWAP2 SWAP1 PUSH3 0xAE5 JUMP JUMPDEST PUSH3 0x97 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0x97 PUSH3 0x18D CALLDATASIZE PUSH1 0x4 PUSH3 0x9BC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP3 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH3 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP DUP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x224 SWAP2 SWAP1 PUSH3 0x8D9 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP3 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x241 SWAP4 SWAP3 SWAP2 SWAP1 PUSH3 0xB01 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP5 POP PUSH1 0x0 DUP6 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP1 DUP7 PUSH32 0x0 PUSH1 0x40 MLOAD PUSH3 0x28F SWAP1 PUSH3 0x761 JUMP JUMPDEST PUSH3 0x29C SWAP3 SWAP2 SWAP1 PUSH3 0xB78 JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH3 0x2BD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP5 POP PUSH3 0x2CD DUP6 DUP6 DUP4 PUSH3 0x3FF JUMP JUMPDEST POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x2F4 JUMPI PUSH3 0x2F4 PUSH3 0xD3A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x31E JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x3F6 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH3 0x369 DUP3 DUP7 PUSH3 0xC85 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH3 0x37C JUMPI PUSH3 0x37C PUSH3 0xD0B JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x3BC JUMPI PUSH3 0x3BC PUSH3 0xD0B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x3ED DUP2 PUSH3 0xCA0 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x324 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH3 0x46F JUMPI PUSH1 0x40 MLOAD PUSH32 0x3781A5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH3 0x75B JUMPI DUP3 DUP2 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH3 0x4E1 JUMPI PUSH3 0x4E1 PUSH3 0xD0B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x514 JUMPI PUSH3 0x514 PUSH3 0xD0B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH3 0x56A JUMPI PUSH1 0x40 MLOAD PUSH32 0x3F06BF8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH3 0x751 JUMPI PUSH1 0x0 DUP1 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x591 JUMPI PUSH3 0x591 PUSH3 0xD0B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x5EA JUMPI PUSH3 0x5EA PUSH3 0xD0B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP3 MSTORE SWAP2 DUP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP5 MLOAD DUP2 SWAP1 DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH3 0x679 JUMPI PUSH3 0x679 PUSH3 0xD0B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x6D2 JUMPI PUSH3 0x6D2 PUSH3 0xD0B JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE SWAP2 DUP4 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE ADD PUSH3 0x56F JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH3 0x4BC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x3BCF DUP1 PUSH3 0xD90 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x781 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH3 0x79A PUSH3 0x794 DUP4 PUSH3 0xC5E JUMP JUMPDEST PUSH3 0xC0C JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP8 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH3 0x7BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH3 0x7FC JUMPI DUP3 MLOAD PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0x7E9 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MSTORE SWAP4 DUP6 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x7BF JUMP JUMPDEST POP SWAP2 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x81E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH3 0x82B DUP2 PUSH3 0xD69 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH3 0x83D DUP2 PUSH3 0xD69 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x85E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH3 0x86B DUP2 PUSH3 0xD69 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH3 0x87D DUP2 PUSH3 0xD69 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x8A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH3 0x8B2 DUP2 PUSH3 0xD69 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH3 0x8C4 DUP2 PUSH3 0xD69 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x8EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0x908 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x91D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH3 0x930 PUSH3 0x794 DUP4 PUSH3 0xC5E JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP12 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH3 0x951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH3 0x981 JUMPI DUP1 MLOAD PUSH3 0x96C DUP2 PUSH3 0xD69 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH3 0x956 JUMP JUMPDEST POP SWAP2 DUP10 ADD MLOAD SWAP2 SWAP8 POP SWAP1 SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH3 0x99C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x9AB DUP7 DUP3 DUP8 ADD PUSH3 0x76F JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x9CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x9EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0xA03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA2D JUMPI PUSH3 0xA2D PUSH3 0xD3A JUMP JUMPDEST PUSH3 0xA5F DUP5 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH3 0xC0C JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP7 DUP5 DUP3 DUP6 ADD ADD GT ISZERO PUSH3 0xA76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP5 DUP5 ADD DUP6 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD SWAP1 SWAP4 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xADA JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0xAA6 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0xAFA PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0xA92 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH3 0xB16 PUSH1 0x60 DUP4 ADD DUP7 PUSH3 0xA92 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP6 MLOAD DUP1 DUP4 MSTORE DUP7 DUP3 ADD SWAP3 DUP3 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xB62 JUMPI DUP5 MLOAD PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP4 DUP4 ADD SWAP4 SWAP2 DUP4 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0xB31 JUMP JUMPDEST POP POP DUP1 SWAP4 POP POP POP POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xBA8 JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH3 0xB89 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0xBBB JUMPI PUSH1 0x0 PUSH1 0x60 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD PUSH1 0x60 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0xC56 JUMPI PUSH3 0xC56 PUSH3 0xD3A JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH3 0xC7B JUMPI PUSH3 0xC7B PUSH3 0xD3A JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0xC9B JUMPI PUSH3 0xC9B PUSH3 0xCDC JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH3 0xCD5 JUMPI PUSH3 0xCD5 PUSH3 0xCDC JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0xD8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH2 0x140 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x3BCF CODESIZE SUB DUP1 PUSH3 0x3BCF DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x966 JUMP JUMPDEST CHAINID PUSH1 0x80 MSTORE PUSH3 0x112 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH14 0x29BAB9B434902628102A37B5B2B7 PUSH1 0x91 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0xA0 DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x134 SWAP2 SWAP1 PUSH3 0x886 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 MLOAD DUP4 MLOAD EQ PUSH3 0x182 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x494E56414C49445F415252415953 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH3 0x19A PUSH3 0xF4240 PUSH8 0xDE0B6B3A7640000 PUSH3 0xAF4 JUMP JUMPDEST GT ISZERO DUP1 ISZERO PUSH3 0x1BD JUMPI POP PUSH3 0x1B9 PUSH1 0xA PUSH8 0xDE0B6B3A7640000 PUSH3 0xAF4 JUMP JUMPDEST DUP2 GT ISZERO JUMPDEST PUSH3 0x1FE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x494E56414C49445F535741505F464545 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x179 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x2 GT ISZERO DUP1 ISZERO PUSH3 0x213 JUMPI POP PUSH1 0x8 DUP4 MLOAD GT ISZERO JUMPDEST PUSH3 0x261 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F544F4B454E535F4C454E4754480000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x179 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH3 0x50A JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x28E JUMPI PUSH3 0x28E PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x2DE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A45524F5F41444452455353 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x179 JUMP JUMPDEST DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH3 0x2F3 JUMPI PUSH3 0x2F3 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND PUSH8 0xDE0B6B3A7640000 GT ISZERO DUP1 ISZERO PUSH3 0x355 JUMPI POP PUSH3 0x32C PUSH8 0xDE0B6B3A7640000 PUSH1 0x32 PUSH3 0xB17 JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x341 JUMPI PUSH3 0x341 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND GT ISZERO JUMPDEST PUSH3 0x394 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x1253959053125117D5D15251D215 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x179 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x3C4 JUMPI PUSH3 0x3C4 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND DUP2 MSTORE POP PUSH1 0x8 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x3F1 JUMPI PUSH3 0x3F1 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP3 MLOAD SWAP3 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND PUSH1 0x1 PUSH1 0x78 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 MLOAD PUSH1 0x5 SWAP1 DUP6 SWAP1 DUP4 SWAP1 DUP2 LT PUSH3 0x456 JUMPI PUSH3 0x456 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 SLOAD PUSH1 0x1 DUP2 ADD DUP5 SSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE SWAP2 SWAP1 SWAP3 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP3 MLOAD DUP4 SWAP1 DUP3 SWAP1 DUP2 LT PUSH3 0x4A8 JUMPI PUSH3 0x4A8 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH3 0x4D0 SWAP1 DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND PUSH3 0xAAB JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP1 DUP1 PUSH3 0x501 SWAP1 PUSH3 0xB39 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x264 JUMP JUMPDEST POP PUSH3 0x520 PUSH8 0xDE0B6B3A7640000 PUSH1 0x32 PUSH3 0xB17 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND GT ISZERO PUSH3 0x56F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x13505617D513D5105317D5D15251D215 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x179 JUMP JUMPDEST PUSH3 0x590 PUSH1 0x0 PUSH3 0x58A PUSH8 0xDE0B6B3A7640000 PUSH1 0x64 PUSH3 0xB17 JUMP JUMPDEST PUSH3 0x747 JUMP JUMPDEST DUP1 PUSH1 0xC0 DUP2 DUP2 MSTORE POP POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x5D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x5E7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x60D SWAP2 SWAP1 PUSH3 0xA38 JUMP JUMPDEST PUSH1 0x6 DUP2 SWAP1 SSTORE POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0A0CD2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x64D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x662 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x688 SWAP2 SWAP1 PUSH3 0x861 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xE0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x4DA31827 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x6DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x6F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x719 SWAP2 SWAP1 PUSH3 0x861 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH2 0x100 MSTORE SWAP5 SWAP1 SHL SWAP1 SWAP4 AND PUSH2 0x120 MSTORE POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP PUSH3 0xB99 SWAP1 POP JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH3 0x75A SWAP2 SWAP1 PUSH3 0xAD9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x7CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x7E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH3 0x7FB PUSH3 0x7F5 DUP4 PUSH3 0xA85 JUMP JUMPDEST PUSH3 0xA52 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP8 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH3 0x81C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH3 0x853 JUMPI DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x840 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MSTORE SWAP4 DUP6 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x820 JUMP JUMPDEST POP SWAP2 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x87F DUP3 PUSH3 0x7B3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x89C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x8B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x8C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH3 0x8DC PUSH3 0x7F5 DUP4 PUSH3 0xA85 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP12 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH3 0x8FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH3 0x92B JUMPI PUSH3 0x916 DUP2 PUSH3 0x7B3 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH3 0x902 JUMP JUMPDEST POP SWAP2 DUP10 ADD MLOAD SWAP2 SWAP8 POP SWAP1 SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH3 0x946 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x955 DUP7 DUP3 DUP8 ADD PUSH3 0x7D0 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x97A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x992 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x9A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x9BC JUMPI PUSH3 0x9BC PUSH3 0xB83 JUMP JUMPDEST PUSH1 0x20 SWAP2 POP PUSH3 0x9D4 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP4 ADD PUSH3 0xA52 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP8 DUP4 DUP4 DUP7 ADD ADD GT ISZERO PUSH3 0x9E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0xA09 JUMPI DUP5 DUP2 ADD DUP5 ADD MLOAD DUP3 DUP3 ADD DUP6 ADD MSTORE DUP4 ADD PUSH3 0x9EC JUMP JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0xA1B JUMPI PUSH1 0x0 DUP5 DUP5 DUP5 ADD ADD MSTORE JUMPDEST POP SWAP5 POP PUSH3 0xA2D SWAP1 POP DUP6 DUP3 ADD PUSH3 0x7B3 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0xA7D JUMPI PUSH3 0xA7D PUSH3 0xB83 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH3 0xAA1 JUMPI PUSH3 0xAA1 PUSH3 0xB83 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB DUP3 DUP2 AND DUP5 DUP3 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH3 0xAD0 JUMPI PUSH3 0xAD0 PUSH3 0xB57 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0xAEF JUMPI PUSH3 0xAEF PUSH3 0xB57 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH3 0xB12 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH3 0xB34 JUMPI PUSH3 0xB34 PUSH3 0xB57 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH3 0xB50 JUMPI PUSH3 0xB50 PUSH3 0xB57 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x2FB3 PUSH3 0xC1C PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x57A ADD MSTORE PUSH2 0x18AC ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x3EC ADD MSTORE DUP2 DUP2 PUSH2 0x2100 ADD MSTORE DUP2 DUP2 PUSH2 0x21E3 ADD MSTORE PUSH2 0x22BF ADD MSTORE PUSH1 0x0 PUSH2 0x276 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x413 ADD MSTORE DUP2 DUP2 PUSH2 0x1B0A ADD MSTORE PUSH2 0x203F ADD MSTORE PUSH1 0x0 PUSH2 0xFF6 ADD MSTORE PUSH1 0x0 PUSH2 0xECD ADD MSTORE PUSH2 0x2FB3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1DA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x67E4AC2C GT PUSH2 0x104 JUMPI DUP1 PUSH4 0xA69840A8 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xC14AD802 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x56C JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x575 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x59C JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x5AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x50C JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x533 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x546 JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x559 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x490 JUMPI DUP1 PUSH4 0x8AE45441 EQ PUSH2 0x4B0 JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x4C6 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x448 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x45D JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x47D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x30ADF81F GT PUSH2 0x17C JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x3D4 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x3E7 JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x40E JUMPI DUP1 PUSH4 0x627DD56A EQ PUSH2 0x435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x2F9 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x320 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x33A JUMPI DUP1 PUSH4 0x469E9067 EQ PUSH2 0x342 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x1B8 JUMPI DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x271 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2BD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2C6 JUMPI DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x2D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x1DF JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x24E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x1ED CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x5DA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x241 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xE DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FC SWAP2 SWAP1 PUSH2 0x2DBC JUMP JUMPDEST PUSH2 0x261 PUSH2 0x25C CALLDATASIZE PUSH1 0x4 PUSH2 0x29FD JUMP JUMPDEST PUSH2 0x982 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FC JUMP JUMPDEST PUSH2 0x298 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FC JUMP JUMPDEST PUSH2 0x1F2 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x261 PUSH2 0x2D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2A62 JUMP JUMPDEST PUSH2 0x9FC JUMP JUMPDEST PUSH2 0x2EC PUSH2 0x2E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0xB48 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FC SWAP2 SWAP1 PUSH2 0x2CC9 JUMP JUMPDEST PUSH2 0x1F2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x328 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FC JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0xEC9 JUMP JUMPDEST PUSH2 0x39B PUSH2 0x350 CALLDATASIZE PUSH1 0x4 PUSH2 0x27D1 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP1 PUSH16 0x1000000000000000000000000000000 SWAP1 DIV PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1FC JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x3E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x1018 JUMP JUMPDEST PUSH2 0x298 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x443 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x101F JUMP JUMPDEST PUSH2 0x450 PUSH2 0x1349 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FC SWAP2 SWAP1 PUSH2 0x2C6F JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x46B CALLDATASIZE PUSH1 0x4 PUSH2 0x27D1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x48B CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x13B8 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x49E CALLDATASIZE PUSH1 0x4 PUSH2 0x27D1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x4B8 PUSH2 0x16DA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1FC SWAP3 SWAP2 SWAP1 PUSH2 0x2D2E JUMP JUMPDEST PUSH2 0x4CE PUSH2 0x18AA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x241 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH32 0x54726964656E743A496E64657800000000000000000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x541 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x194D JUMP JUMPDEST PUSH2 0x261 PUSH2 0x554 CALLDATASIZE PUSH1 0x4 PUSH2 0x29FD JUMP JUMPDEST PUSH2 0x1983 JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x567 CALLDATASIZE PUSH1 0x4 PUSH2 0x2B1A JUMP JUMPDEST PUSH2 0x1A08 JUMP JUMPDEST PUSH2 0x1F2 PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x298 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x4CE PUSH2 0x5AA CALLDATASIZE PUSH1 0x4 PUSH2 0x2AA3 JUMP JUMPDEST PUSH2 0x1C8B JUMP JUMPDEST PUSH2 0x1F2 PUSH2 0x5BD CALLDATASIZE PUSH1 0x4 PUSH2 0x2A29 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x64D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x665 DUP9 DUP11 ADD DUP11 PUSH2 0x2850 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP3 DUP9 AND DUP3 MSTORE SWAP1 KECCAK256 DUP2 SLOAD SWAP8 SWAP14 POP SWAP6 SWAP12 POP SWAP4 SWAP10 POP SWAP2 SWAP8 POP SWAP6 POP SWAP4 POP SWAP2 PUSH2 0x6D3 SWAP1 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6CE PUSH1 0x2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x1FDD JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x73C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D41585F494E5F524154494F0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 SLOAD DUP2 SLOAD PUSH2 0x792 SWAP2 DUP7 SWAP2 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP3 PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH16 0x1000000000000000000000000000000 SWAP2 DUP3 SWAP1 DIV DUP2 AND SWAP4 SWAP3 DUP4 AND SWAP3 SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x2028 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP10 POP CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x7D1 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2DBC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7FF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP DUP4 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 ADD SWAP2 POP PUSH2 0x823 SWAP1 POP DUP10 PUSH2 0x20B2 JUMP JUMPDEST LT ISZERO PUSH2 0x88B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F52454345495645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP7 ADD DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 SWAP3 DUP4 AND OR DUP5 SSTORE DUP3 SLOAD DUP1 DUP3 AND DUP13 SWAP1 SUB SWAP1 SWAP2 AND SWAP2 AND OR DUP2 SSTORE PUSH2 0x8E7 DUP8 DUP11 DUP9 DUP9 PUSH2 0x217C JUMP JUMPDEST DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP8 DUP14 PUSH1 0x40 MLOAD PUSH2 0x966 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0x9EA SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xA99 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xA93 SWAP1 DUP5 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xACE SWAP1 DUP5 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xB36 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0xBB6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0xBCB DUP6 DUP8 ADD DUP8 PUSH2 0x29BF JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 PUSH2 0xBDF DUP3 PUSH1 0x0 SLOAD PUSH2 0x2322 JUMP JUMPDEST PUSH1 0x5 SLOAD SWAP1 SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBFD JUMPI PUSH2 0xBFD PUSH2 0x2F29 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC42 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xC1B JUMPI SWAP1 POP JUMPDEST POP SWAP5 POP PUSH2 0xC4F ADDRESS DUP4 PUSH2 0x235C JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x5 SLOAD DUP2 LT ISZERO PUSH2 0xEB8 JUMPI PUSH1 0x0 PUSH1 0x5 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xC71 JUMPI PUSH2 0xC71 PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD SWAP1 SWAP3 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0xCC1 DUP6 DUP4 PUSH2 0x1FDD JUMP JUMPDEST SWAP1 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xD3B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5A45524F5F4F5554000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 DUP2 AND PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP5 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH2 0xDB0 SWAP1 DUP5 SWAP1 DUP4 AND DUP11 DUP11 PUSH2 0x217C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xDFE JUMPI PUSH2 0xDFE PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x3DD1DF88DC92E2788892542D81F999D720A44B4C127065D45C128F4F59FDC373 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0xE9A SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP DUP1 DUP1 PUSH2 0xEB0 SWAP1 PUSH2 0x2E4F JUMP JUMPDEST SWAP2 POP POP PUSH2 0xC52 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP2 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0xFF3 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xE DUP2 MSTORE PUSH32 0x5375736869204C5020546F6B656E000000000000000000000000000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xC2BF45081E840722410522AA366600D7FE4DA5BFB5A5B417F4D5125B4ED180A4 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x108D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x10A4 DUP8 DUP10 ADD DUP10 PUSH2 0x27EE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP3 DUP8 AND DUP3 MSTORE SWAP1 KECCAK256 DUP2 SLOAD SWAP7 SWAP12 POP SWAP5 SWAP10 POP SWAP3 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP SWAP2 PUSH2 0x110B SWAP1 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x6CE PUSH1 0x2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST DUP4 GT ISZERO PUSH2 0x1174 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D41585F494E5F524154494F0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 SLOAD DUP2 SLOAD PUSH2 0x11CA SWAP2 DUP6 SWAP2 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP3 PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH16 0x1000000000000000000000000000000 SWAP2 DUP3 SWAP1 DIV DUP2 AND SWAP4 SWAP3 DUP4 AND SWAP3 SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x2028 JUMP JUMPDEST DUP3 SLOAD SWAP1 SWAP9 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 ADD PUSH2 0x11EB DUP9 PUSH2 0x20B2 JUMP JUMPDEST LT ISZERO PUSH2 0x1253 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F52454345495645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP6 ADD DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 SWAP3 DUP4 AND OR DUP5 SSTORE DUP3 SLOAD DUP1 DUP3 AND DUP12 SWAP1 SUB SWAP1 SWAP2 AND SWAP2 AND OR DUP2 SSTORE PUSH2 0x12AF DUP7 DUP10 DUP8 DUP8 PUSH2 0x217C JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP7 DUP13 PUSH1 0x40 MLOAD PUSH2 0x132E SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP4 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x5 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x13AE JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1383 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x1426 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 PUSH2 0x143A DUP5 DUP7 ADD DUP7 PUSH2 0x29FD JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x144C DUP3 PUSH1 0x0 SLOAD PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x5 SLOAD DUP2 LT ISZERO PUSH2 0x16C1 JUMPI PUSH1 0x0 PUSH1 0x5 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1470 JUMPI PUSH2 0x1470 PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP4 MSTORE PUSH1 0x8 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD SWAP1 SWAP3 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0x14C1 JUMPI DUP5 PUSH2 0x14ED JUMP JUMPDEST PUSH2 0x14ED DUP6 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1FDD JUMP JUMPDEST SWAP1 POP PUSH2 0x1506 PUSH5 0xE8D4A51000 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST DUP2 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x1580 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E5F42414C414E4345000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP2 DUP2 ADD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x159D DUP5 PUSH2 0x20B2 JUMP JUMPDEST LT ISZERO PUSH2 0x1605 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F52454345495645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 DUP2 AND PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP9 ADD DUP3 AND OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE DUP6 AND SWAP1 DUP4 ADD MSTORE SWAP2 DUP10 AND SWAP2 CALLER SWAP2 PUSH32 0xF9403B28CC8805935E0CE6943ED646D5FDE3D1E14F6B398E85BFA2851D1B85F7 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP DUP1 DUP1 PUSH2 0x16B9 SWAP1 PUSH2 0x2E4F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1451 JUMP JUMPDEST POP PUSH2 0x16CC DUP4 DUP4 PUSH2 0x23EF JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x7 SSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x60 SWAP1 DUP2 SWAP1 DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x16FB JUMPI PUSH2 0x16FB PUSH2 0x2F29 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1724 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1740 JUMPI PUSH2 0x1740 PUSH2 0x2F29 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1769 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x18A4 JUMPI PUSH1 0x8 PUSH1 0x0 PUSH1 0x5 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x178E JUMPI PUSH2 0x178E PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD DUP5 MLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP6 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x17E8 JUMPI PUSH2 0x17E8 PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x8 PUSH1 0x0 PUSH1 0x5 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x180B JUMPI PUSH2 0x180B PUSH2 0x2EFA JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD DUP4 MLOAD PUSH16 0x1000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP5 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x187A JUMPI PUSH2 0x187A PUSH2 0x2EFA JUMP JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x176F JUMP JUMPDEST POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1924 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1948 SWAP2 SWAP1 PUSH2 0x2B8C JUMP JUMPDEST PUSH1 0x6 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x1960 DUP8 DUP10 ADD DUP10 PUSH2 0x2BC9 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH2 0x1977 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2028 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP2 SWAP1 DUP4 SWAP1 PUSH2 0x19A4 SWAP1 DUP5 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0x9EA SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x7 SLOAD PUSH1 0x1 EQ PUSH2 0x1A76 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x7 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x1A8C DUP7 DUP9 ADD DUP9 PUSH2 0x2970 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP2 SLOAD PUSH1 0x4 SLOAD SWAP7 SWAP11 POP SWAP5 SWAP9 POP SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP1 SWAP3 PUSH2 0x1B2E SWAP3 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP3 PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH16 0x1000000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 AND SWAP3 AND DUP7 PUSH32 0x0 PUSH2 0x245F JUMP JUMPDEST DUP2 SLOAD SWAP1 SWAP7 POP PUSH2 0x1B66 SWAP1 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1B5B PUSH1 0x3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x6CE SWAP1 PUSH1 0x1 PUSH2 0x2DCF JUMP JUMPDEST DUP7 GT ISZERO PUSH2 0x1BCF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D41585F4F55545F524154494F00000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST DUP1 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP9 SWAP1 SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 SWAP1 SWAP2 AND OR DUP2 SSTORE PUSH2 0x1C19 ADDRESS DUP4 PUSH2 0x235C JUMP JUMPDEST PUSH2 0x1C25 DUP6 DUP8 DUP7 DUP7 PUSH2 0x217C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP10 SWAP1 MSTORE DUP7 AND SWAP2 CALLER SWAP2 PUSH32 0x3DD1DF88DC92E2788892542D81F999D720A44B4C127065D45C128F4F59FDC373 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x7 SSTORE POP SWAP2 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1CF5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CFF PUSH2 0xEC9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP3 DUP13 SWAP3 DUP13 SWAP3 DUP13 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x1D5A DUP4 PUSH2 0x2E4F JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1DFB SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1E84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1EFF JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1F65 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1FEA DUP4 DUP6 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2001 PUSH1 0x2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x200B SWAP1 DUP4 PUSH2 0x2DCF JUMP JUMPDEST SWAP1 POP PUSH2 0x201F PUSH8 0xDE0B6B3A7640000 DUP3 PUSH2 0x2DE7 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2035 DUP6 DUP5 PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x206D DUP9 PUSH32 0x0 PUSH8 0xDE0B6B3A7640000 SUB PUSH2 0x1FDD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x207D DUP9 DUP4 DUP11 ADD PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x208B DUP3 DUP6 PUSH2 0x250E JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 DUP2 SWAP1 SUB PUSH2 0x20A3 DUP9 DUP3 PUSH2 0x1FDD JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2158 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x9F6 SWAP2 SWAP1 PUSH2 0x2B8C JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2265 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2226 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x223A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x225E SWAP2 SWAP1 PUSH2 0x2BA5 JUMP JUMPDEST POP POP PUSH2 0x231C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2317 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2337 PUSH8 0xDE0B6B3A7640000 DUP6 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2346 PUSH1 0x2 DUP6 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x2350 SWAP1 DUP4 PUSH2 0x2DCF JUMP JUMPDEST SWAP1 POP PUSH2 0x201F DUP5 DUP3 PUSH2 0x2DE7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x2391 SWAP1 DUP5 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP1 SLOAD DUP3 SWAP1 SUB DUP2 SSTORE PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 PUSH1 0x0 DUP1 DUP3 DUP3 SLOAD PUSH2 0x2400 SWAP2 SWAP1 PUSH2 0x2DCF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x23E3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x246C DUP8 DUP7 PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x247A DUP6 DUP9 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2488 DUP3 DUP10 PUSH2 0x2322 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24A7 DUP3 PUSH2 0x24A2 PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x2322 JUMP JUMPDEST PUSH2 0x2631 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24B5 DUP3 DUP14 PUSH2 0x1FDD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x24C3 DUP3 DUP15 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP9 PUSH2 0x24DA DUP9 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2E38 JUMP JUMPDEST PUSH2 0x24E4 SWAP2 SWAP1 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH2 0x24FC DUP3 PUSH2 0x6CE DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2E38 JUMP JUMPDEST SWAP15 SWAP14 POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 GT ISZERO DUP1 ISZERO PUSH2 0x253F JUMPI POP PUSH1 0x1 PUSH2 0x2531 PUSH8 0xDE0B6B3A7640000 PUSH1 0x2 PUSH2 0x2DFB JUMP JUMPDEST PUSH2 0x253B SWAP2 SWAP1 PUSH2 0x2E38 JUMP JUMPDEST DUP4 GT ISZERO JUMPDEST PUSH2 0x25A5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F424153450000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x25BA DUP2 DUP6 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x25C4 SWAP2 SWAP1 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x25D2 DUP3 DUP6 PUSH2 0x2E38 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x25EC DUP7 PUSH2 0x24A2 PUSH8 0xDE0B6B3A7640000 DUP7 PUSH2 0x2DE7 JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x25F7 JUMPI DUP1 SWAP4 POP JUMPDEST PUSH1 0x0 PUSH2 0x261A DUP8 DUP5 PUSH2 0x2615 PUSH5 0x2540BE400 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2DE7 JUMP JUMPDEST PUSH2 0x26A7 JUMP JUMPDEST SWAP1 POP PUSH2 0x2626 DUP3 DUP3 PUSH2 0x1FDD JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x263E PUSH1 0x2 DUP4 PUSH2 0x2E88 JUMP JUMPDEST PUSH2 0x2650 JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x2652 JUMP JUMPDEST DUP3 JUMPDEST SWAP1 POP PUSH2 0x265F PUSH1 0x2 DUP4 PUSH2 0x2DE7 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 ISZERO PUSH2 0x2686 JUMPI PUSH2 0x2672 DUP4 DUP1 PUSH2 0x2DFB JUMP JUMPDEST SWAP3 POP PUSH2 0x267F PUSH1 0x2 DUP4 PUSH2 0x2DE7 JUMP JUMPDEST SWAP2 POP PUSH2 0x2662 JUMP JUMPDEST PUSH2 0x2691 PUSH1 0x2 DUP4 PUSH2 0x2E88 JUMP JUMPDEST ISZERO PUSH2 0x9F6 JUMPI PUSH2 0x26A0 DUP4 DUP3 PUSH2 0x2DFB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 DUP1 PUSH2 0x26BE DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2797 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP6 POP SWAP1 SWAP3 POP SWAP1 POP DUP4 PUSH1 0x0 PUSH1 0x1 JUMPDEST DUP8 DUP4 LT PUSH2 0x278A JUMPI PUSH1 0x0 PUSH2 0x26EF PUSH8 0xDE0B6B3A7640000 DUP4 PUSH2 0x2DFB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x270F DUP10 PUSH2 0x270A PUSH8 0xDE0B6B3A7640000 DUP7 PUSH2 0x2E38 JUMP JUMPDEST PUSH2 0x2797 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2721 DUP7 PUSH2 0x6CE DUP5 DUP12 PUSH2 0x1FDD JUMP JUMPDEST SWAP6 POP PUSH2 0x272D DUP7 DUP5 PUSH2 0x2322 JUMP JUMPDEST SWAP6 POP DUP6 PUSH2 0x273C JUMPI POP POP POP PUSH2 0x278A JUMP JUMPDEST DUP7 ISZERO PUSH2 0x2746 JUMPI SWAP4 ISZERO SWAP4 JUMPDEST DUP1 ISZERO PUSH2 0x2750 JUMPI SWAP4 ISZERO SWAP4 JUMPDEST DUP5 ISZERO PUSH2 0x2767 JUMPI PUSH2 0x2760 DUP7 DUP12 PUSH2 0x2E38 JUMP JUMPDEST SWAP10 POP PUSH2 0x2774 JUMP JUMPDEST PUSH2 0x2771 DUP7 DUP12 PUSH2 0x2DCF JUMP JUMPDEST SWAP10 POP JUMPDEST POP POP POP DUP1 DUP1 PUSH2 0x2782 SWAP1 PUSH2 0x2E4F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x26D4 JUMP JUMPDEST POP POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 LT PUSH2 0x27AD JUMPI POP POP DUP1 DUP3 SUB PUSH1 0x0 PUSH2 0x27B5 JUMP JUMPDEST POP POP DUP2 DUP2 SUB PUSH1 0x1 JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x27CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x27E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x26A0 DUP2 PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2806 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2811 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x2821 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x2831 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 POP PUSH2 0x283F PUSH1 0x60 DUP8 ADD PUSH2 0x27BC JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP2 SWAP5 PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x2869 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2874 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x2884 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x2894 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP4 POP PUSH2 0x28A2 PUSH1 0x60 DUP9 ADD PUSH2 0x27BC JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x28C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x28DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x28EC JUMPI PUSH2 0x28EC PUSH2 0x2F29 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2932 JUMPI PUSH2 0x2932 PUSH2 0x2F29 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP13 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x294B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2991 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x29A1 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 POP PUSH2 0x29AF PUSH1 0x40 DUP7 ADD PUSH2 0x27BC JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x29D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x29DF DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 POP PUSH2 0x29ED PUSH1 0x20 DUP6 ADD PUSH2 0x27BC JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2A1B DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2A47 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2A57 DUP2 PUSH2 0x2F58 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2A77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2A82 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2A92 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2ABE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x2AC9 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x2AD9 DUP2 PUSH2 0x2F58 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2AFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2B2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2B45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B59 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2B68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2B7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2B9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2BB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2BE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP4 CALLDATALOAD SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2C2A JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x2C0E JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2C3C JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2CBD JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2C8B JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2D21 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2CE6 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2D67 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2D4B JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP5 MLOAD DUP1 DUP3 MSTORE DUP6 DUP4 ADD SWAP2 DUP4 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2DAF JUMPI DUP4 MLOAD PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2D80 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x26A0 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2C04 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x2DE2 JUMPI PUSH2 0x2DE2 PUSH2 0x2E9C JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2DF6 JUMPI PUSH2 0x2DF6 PUSH2 0x2ECB JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x2E33 JUMPI PUSH2 0x2E33 PUSH2 0x2E9C JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x2E4A JUMPI PUSH2 0x2E4A PUSH2 0x2E9C JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x2E81 JUMPI PUSH2 0x2E81 PUSH2 0x2E9C JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2E97 JUMPI PUSH2 0x2E97 PUSH2 0x2ECB JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2F7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STOP LT CREATE2 PUSH1 0x2B SLOAD 0xEC 0xD3 0xB8 SLT 0xBE 0xB5 0x4C SWAP4 0xD5 DUP10 EXTCODESIZE 0xA5 0x5E DUP6 0xE NOT 0xC6 0xB4 0x25 EXTCODEHASH 0x27 POP PUSH18 0x11877964736F6C63430008070033A2646970 PUSH7 0x73582212209666 0xAB MUL DUP10 BYTE SHL 0xD7 BALANCE 0xC4 0xAB SWAP12 0xAC PUSH26 0xF75D075862765BDB6B3546B5007F3DA493BE64736F6C63430008 SMOD STOP CALLER ",
              "sourceMap": "236:737:43:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:62:44;;;;;;:::i;:::-;;:::i;:::-;;;5194:42:64;5182:55;;;5164:74;;5152:2;5137:18;250:62:44;;;;;;;;359:612:43;;;;;;:::i;:::-;;:::i;1535:143:44:-;;;;;;:::i;:::-;1643:13;;;;1610;1643;;;;;;;;;;;:21;;;;;;;;;;;:28;;1535:143;;;;7348:25:64;;;7336:2;7321:18;1535:143:44;7202:177:64;1684:345:44;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;204:39::-;;;;;318:48;;;;;;:::i;:::-;;;;;;;;;;;;;;;;250:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;250:62:44;;-1:-1:-1;;250:62:44:o;359:612:43:-;423:12;448:23;473:24;499:15;529:11;518:56;;;;;;;;;;;;:::i;:::-;447:127;;;;;;649:6;657:7;666;638:36;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;624:50;;804:12;829:11;819:22;;;;;;804:37;;886:4;892:11;905:14;866:54;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;851:70;;931:33;945:4;951:6;959:4;931:13;:33::i;:::-;437:534;;;;359:612;;;:::o;1684:345:44:-;1830:26;1894:5;1880:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1880:20:44;;1868:32;;1915:9;1910:113;1934:5;1930:1;:9;1910:113;;;1975:13;;;;:5;:13;;;;;;;;;;;:21;;;;;;;;;1997:14;2010:1;1997:10;:14;:::i;:::-;1975:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1960:9;1970:1;1960:12;;;;;;;;:::i;:::-;:52;;;;:12;;;;;;;;;;;:52;1941:3;;;;:::i;:::-;;;;1910:113;;;;1684:345;;;;;;:::o;740:789::-;500:10;:28;514:14;500:28;;496:63;;537:22;;;;;;;;;;;;;;496:63;936:19:::1;::::0;;;:13:::1;:19;::::0;;;;:26;;;::::1;;::::0;::::1;;::::0;;1174:339:::1;1210:1;1194:6;:13;:17;1190:1;:21;1174:339;;;1253:6;1260:1;1264;1260:5;1253:13;;;;;;;;:::i;:::-;;;;;;;1240:26;;:6;1247:1;1240:9;;;;;;;;:::i;:::-;;;;;;;:26;;;1236:58;;1275:19;;;;;;;;;;;;;;1236:58;1333:1;1329:5:::0;::::1;1312:187;1340:6;:13;1336:1;:17;1312:187;;;1382:5;:16:::0;1388:6:::1;1395:1;1388:9;;;;;;;;:::i;:::-;;;;;;;1382:16;;;;;;;;;;;;;;;:27;1399:6;1406:1;1399:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;1382:27:::1;::::0;;::::1;::::0;;;;::::1;::::0;;;;;;;;-1:-1:-1;1382:27:44;;;:38;;::::1;::::0;::::1;::::0;;;;;;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;1448:9;;-1:-1:-1;;1448:9:44;;1455:1;;1448:9;::::1;;;;;:::i;:::-;;;;;;;1442:16;;;;;;;;;;;;;;;:27;1459:6;1466:1;1459:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;1442:27:::1;::::0;;::::1;::::0;;;;::::1;::::0;;;;;;;;-1:-1:-1;1442:27:44;;;:38;;::::1;::::0;;::::1;::::0;;;;;;;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;1355:3:::1;1312:187;;;-1:-1:-1::0;1213:3:44::1;;1174:339;;;;740:789:::0;;;:::o;-1:-1:-1:-;;;;;;;;:::o;14:828:64:-;79:5;132:3;125:4;117:6;113:17;109:27;99:55;;150:1;147;140:12;99:55;179:6;173:13;205:4;229:60;245:43;285:2;245:43;:::i;:::-;229:60;:::i;:::-;311:3;335:2;330:3;323:15;363:2;358:3;354:12;347:19;;398:2;390:6;386:15;450:3;445:2;439;436:1;432:10;424:6;420:23;416:32;413:41;410:61;;;467:1;464;457:12;410:61;489:1;510;520:293;536:2;531:3;528:11;520:293;;;604:3;598:10;652:36;645:5;641:48;634:5;631:59;621:87;;704:1;701;694:12;621:87;721:18;;759:12;;;;791;;;;558:1;549:11;520:293;;;-1:-1:-1;831:5:64;;14:828;-1:-1:-1;;;;;;;;14:828:64:o;847:388::-;915:6;923;976:2;964:9;955:7;951:23;947:32;944:52;;;992:1;989;982:12;944:52;1031:9;1018:23;1050:31;1075:5;1050:31;:::i;:::-;1100:5;-1:-1:-1;1157:2:64;1142:18;;1129:32;1170:33;1129:32;1170:33;:::i;:::-;1222:7;1212:17;;;847:388;;;;;:::o;1240:456::-;1317:6;1325;1333;1386:2;1374:9;1365:7;1361:23;1357:32;1354:52;;;1402:1;1399;1392:12;1354:52;1441:9;1428:23;1460:31;1485:5;1460:31;:::i;:::-;1510:5;-1:-1:-1;1567:2:64;1552:18;;1539:32;1580:33;1539:32;1580:33;:::i;:::-;1240:456;;1632:7;;-1:-1:-1;;;1686:2:64;1671:18;;;;1658:32;;1240:456::o;1701:525::-;1787:6;1795;1803;1811;1864:3;1852:9;1843:7;1839:23;1835:33;1832:53;;;1881:1;1878;1871:12;1832:53;1920:9;1907:23;1939:31;1964:5;1939:31;:::i;:::-;1989:5;-1:-1:-1;2046:2:64;2031:18;;2018:32;2059:33;2018:32;2059:33;:::i;:::-;1701:525;;2111:7;;-1:-1:-1;;;;2165:2:64;2150:18;;2137:32;;2216:2;2201:18;2188:32;;1701:525::o;2231:1281::-;2369:6;2377;2385;2438:2;2426:9;2417:7;2413:23;2409:32;2406:52;;;2454:1;2451;2444:12;2406:52;2487:9;2481:16;2516:18;2557:2;2549:6;2546:14;2543:34;;;2573:1;2570;2563:12;2543:34;2611:6;2600:9;2596:22;2586:32;;2656:7;2649:4;2645:2;2641:13;2637:27;2627:55;;2678:1;2675;2668:12;2627:55;2707:2;2701:9;2729:4;2753:60;2769:43;2809:2;2769:43;:::i;2753:60::-;2835:3;2859:2;2854:3;2847:15;2887:2;2882:3;2878:12;2871:19;;2918:2;2914;2910:11;2966:7;2961:2;2955;2952:1;2948:10;2944:2;2940:19;2936:28;2933:41;2930:61;;;2987:1;2984;2977:12;2930:61;3009:1;3000:10;;3019:231;3033:2;3030:1;3027:9;3019:231;;;3097:3;3091:10;3114:31;3139:5;3114:31;:::i;:::-;3158:18;;3051:1;3044:9;;;;;3196:12;;;;3228;;3019:231;;;-1:-1:-1;3305:18:64;;;3299:25;3269:5;;-1:-1:-1;3299:25:64;;-1:-1:-1;;;3336:16:64;;;3333:36;;;3365:1;3362;3355:12;3333:36;;3388:74;3454:7;3443:8;3432:9;3428:24;3388:74;:::i;:::-;3378:84;;;3502:2;3491:9;3487:18;3481:25;3471:35;;2231:1281;;;;;:::o;3517:180::-;3576:6;3629:2;3617:9;3608:7;3604:23;3600:32;3597:52;;;3645:1;3642;3635:12;3597:52;-1:-1:-1;3668:23:64;;3517:180;-1:-1:-1;3517:180:64:o;3702:822::-;3770:6;3801:2;3844;3832:9;3823:7;3819:23;3815:32;3812:52;;;3860:1;3857;3850:12;3812:52;3900:9;3887:23;3929:18;3970:2;3962:6;3959:14;3956:34;;;3986:1;3983;3976:12;3956:34;4024:6;4013:9;4009:22;3999:32;;4069:7;4062:4;4058:2;4054:13;4050:27;4040:55;;4091:1;4088;4081:12;4040:55;4127:2;4114:16;4149:2;4145;4142:10;4139:36;;;4155:18;;:::i;:::-;4197:112;4305:2;4236:66;4229:4;4225:2;4221:13;4217:86;4213:95;4197:112;:::i;:::-;4184:125;;4332:2;4325:5;4318:17;4372:7;4367:2;4362;4358;4354:11;4350:20;4347:33;4344:53;;;4393:1;4390;4383:12;4344:53;4448:2;4443;4439;4435:11;4430:2;4423:5;4419:14;4406:45;4492:1;4471:14;;;4467:23;;;4460:34;;;;-1:-1:-1;4475:5:64;3702:822;-1:-1:-1;;;3702:822:64:o;4529:484::-;4582:3;4620:5;4614:12;4647:6;4642:3;4635:19;4673:4;4702:2;4697:3;4693:12;4686:19;;4739:2;4732:5;4728:14;4760:1;4770:218;4784:6;4781:1;4778:13;4770:218;;;4849:13;;4864:42;4845:62;4833:75;;4928:12;;;;4963:15;;;;4806:1;4799:9;4770:218;;;-1:-1:-1;5004:3:64;;4529:484;-1:-1:-1;;;;;4529:484:64:o;5249:261::-;5428:2;5417:9;5410:21;5391:4;5448:56;5500:2;5489:9;5485:18;5477:6;5448:56;:::i;:::-;5440:64;5249:261;-1:-1:-1;;;5249:261:64:o;5515:918::-;5800:2;5789:9;5782:21;5763:4;5826:56;5878:2;5867:9;5863:18;5855:6;5826:56;:::i;:::-;5939:22;;;5901:2;5919:18;;;5912:50;;;;6011:13;;6033:22;;;6109:15;;;;6071;;;6142:1;6152:212;6166:6;6163:1;6160:13;6152:212;;;6231:13;;6246:36;6227:56;6215:69;;6339:15;;;;6304:12;;;;6188:1;6181:9;6152:212;;;6156:3;;6381;6373:11;;;;;6420:6;6415:2;6404:9;6400:18;6393:34;5515:918;;;;;;:::o;6438:759::-;6613:2;6602:9;6595:21;6576:4;6645:6;6639:13;6688:6;6683:2;6672:9;6668:18;6661:34;6713:1;6723:144;6737:6;6734:1;6731:13;6723:144;;;6850:4;6834:14;;;6830:25;;6824:32;6819:2;6800:17;;;6796:26;6789:68;6752:12;6723:144;;;6885:6;6882:1;6879:13;6876:91;;;6955:1;6950:2;6941:6;6930:9;6926:22;6922:31;6915:42;6876:91;-1:-1:-1;7147:42:64;7135:55;;;;7128:4;7113:20;;7106:85;-1:-1:-1;7019:2:64;7007:15;;;;7024:66;7003:88;6988:104;7094:2;6984:113;;6438:759;-1:-1:-1;6438:759:64:o;7384:334::-;7455:2;7449:9;7511:2;7501:13;;7516:66;7497:86;7485:99;;7614:18;7599:34;;7635:22;;;7596:62;7593:88;;;7661:18;;:::i;:::-;7697:2;7690:22;7384:334;;-1:-1:-1;7384:334:64:o;7723:183::-;7783:4;7816:18;7808:6;7805:30;7802:56;;;7838:18;;:::i;:::-;-1:-1:-1;7883:1:64;7879:14;7895:4;7875:25;;7723:183::o;7911:128::-;7951:3;7982:1;7978:6;7975:1;7972:13;7969:39;;;7988:18;;:::i;:::-;-1:-1:-1;8024:9:64;;7911:128::o;8044:195::-;8083:3;8114:66;8107:5;8104:77;8101:103;;;8184:18;;:::i;:::-;-1:-1:-1;8231:1:64;8220:13;;8044:195::o;8244:184::-;8296:77;8293:1;8286:88;8393:4;8390:1;8383:15;8417:4;8414:1;8407:15;8433:184;8485:77;8482:1;8475:88;8582:4;8579:1;8572:15;8606:4;8603:1;8596:15;8622:184;8674:77;8671:1;8664:88;8771:4;8768:1;8761:15;8795:4;8792:1;8785:15;8811:154;8897:42;8890:5;8886:54;8879:5;8876:65;8866:93;;8955:1;8952;8945:12;8866:93;8811:154;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "3767200",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "configAddress(bytes32)": "2486",
                "deployPool(bytes)": "infinite",
                "getPools(address,address,uint256,uint256)": "infinite",
                "masterDeployer()": "infinite",
                "pools(address,address,uint256)": "infinite",
                "poolsCount(address,address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "configAddress(bytes32)": "f6ab6d99",
              "deployPool(bytes)": "27c3cae1",
              "getPools(address,address,uint256,uint256)": "71a25812",
              "masterDeployer()": "cf58879a",
              "pools(address,address,uint256)": "169c4cef",
              "poolsCount(address,address)": "5bc93d6c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_masterDeployer\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidTokenOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorisedDeployer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"configAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_deployData\",\"type\":\"bytes\"}],\"name\":\"deployPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pairPools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterDeployer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pools\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"}],\"name\":\"poolsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Mudit Gupta\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contract for deploying Trident exchange Index Pool with configurations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/IndexPoolFactory.sol\":\"IndexPoolFactory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentCallee.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool callback interface.\\ninterface ITridentCallee {\\n    function tridentSwapCallback(bytes calldata data) external;\\n\\n    function tridentMintCallback(bytes calldata data) external;\\n}\\n\",\"keccak256\":\"0x256e838362a3064201b37b3b7c08bc1421b173a6fea633176123f0b827b868c9\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/IndexPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../interfaces/IBentoBoxMinimal.sol\\\";\\nimport \\\"../interfaces/IMasterDeployer.sol\\\";\\nimport \\\"../interfaces/IPool.sol\\\";\\nimport \\\"../interfaces/ITridentCallee.sol\\\";\\nimport \\\"./TridentERC20.sol\\\";\\n\\n/// @notice Trident exchange pool template with constant mean formula for swapping among an array of ERC-20 tokens.\\n/// @dev The reserves are stored as bento shares.\\n///      The curve is applied to shares as well. This pool does not care about the underlying amounts.\\ncontract IndexPool is IPool, TridentERC20 {\\n    event Mint(address indexed sender, address tokenIn, uint256 amountIn, address indexed recipient);\\n    event Burn(address indexed sender, address tokenOut, uint256 amountOut, address indexed recipient);\\n\\n    uint256 public immutable swapFee;\\n\\n    address public immutable barFeeTo;\\n    IBentoBoxMinimal public immutable bento;\\n    IMasterDeployer public immutable masterDeployer;\\n\\n    uint256 internal constant BASE = 10**18;\\n    uint256 internal constant MIN_TOKENS = 2;\\n    uint256 internal constant MAX_TOKENS = 8;\\n    uint256 internal constant MIN_FEE = BASE / 10**6;\\n    uint256 internal constant MAX_FEE = BASE / 10;\\n    uint256 internal constant MIN_WEIGHT = BASE;\\n    uint256 internal constant MAX_WEIGHT = BASE * 50;\\n    uint256 internal constant MAX_TOTAL_WEIGHT = BASE * 50;\\n    uint256 internal constant MIN_BALANCE = BASE / 10**12;\\n    uint256 internal constant INIT_POOL_SUPPLY = BASE * 100;\\n    uint256 internal constant MIN_POW_BASE = 1;\\n    uint256 internal constant MAX_POW_BASE = (2 * BASE) - 1;\\n    uint256 internal constant POW_PRECISION = BASE / 10**10;\\n    uint256 internal constant MAX_IN_RATIO = BASE / 2;\\n    uint256 internal constant MAX_OUT_RATIO = (BASE / 3) + 1;\\n\\n    uint136 internal totalWeight;\\n    address[] internal tokens;\\n\\n    uint256 public barFee;\\n\\n    bytes32 public constant override poolIdentifier = \\\"Trident:Index\\\";\\n\\n    uint256 internal unlocked;\\n    modifier lock() {\\n        require(unlocked == 1, \\\"LOCKED\\\");\\n        unlocked = 2;\\n        _;\\n        unlocked = 1;\\n    }\\n\\n    mapping(address => Record) public records;\\n    struct Record {\\n        uint120 reserve;\\n        uint136 weight;\\n    }\\n\\n    constructor(bytes memory _deployData, address _masterDeployer) {\\n        (address[] memory _tokens, uint136[] memory _weights, uint256 _swapFee) = abi.decode(_deployData, (address[], uint136[], uint256));\\n        // @dev Factory ensures that the tokens are sorted.\\n        require(_tokens.length == _weights.length, \\\"INVALID_ARRAYS\\\");\\n        require(MIN_FEE <= _swapFee && _swapFee <= MAX_FEE, \\\"INVALID_SWAP_FEE\\\");\\n        require(MIN_TOKENS <= _tokens.length && _tokens.length <= MAX_TOKENS, \\\"INVALID_TOKENS_LENGTH\\\");\\n\\n        for (uint256 i = 0; i < _tokens.length; i++) {\\n            require(_tokens[i] != address(0), \\\"ZERO_ADDRESS\\\");\\n            require(MIN_WEIGHT <= _weights[i] && _weights[i] <= MAX_WEIGHT, \\\"INVALID_WEIGHT\\\");\\n            records[_tokens[i]] = Record({reserve: 0, weight: _weights[i]});\\n            tokens.push(_tokens[i]);\\n            totalWeight += _weights[i];\\n        }\\n\\n        require(totalWeight <= MAX_TOTAL_WEIGHT, \\\"MAX_TOTAL_WEIGHT\\\");\\n        // @dev This burns initial LP supply.\\n        _mint(address(0), INIT_POOL_SUPPLY);\\n\\n        swapFee = _swapFee;\\n        barFee = IMasterDeployer(_masterDeployer).barFee();\\n        barFeeTo = IMasterDeployer(_masterDeployer).barFeeTo();\\n        bento = IBentoBoxMinimal(IMasterDeployer(_masterDeployer).bento());\\n        masterDeployer = IMasterDeployer(_masterDeployer);\\n        unlocked = 1;\\n    }\\n\\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\\n    /// The router must ensure that sufficient LP tokens are minted by using the return value.\\n    function mint(bytes calldata data) public override lock returns (uint256 liquidity) {\\n        (address recipient, uint256 toMint) = abi.decode(data, (address, uint256));\\n\\n        uint120 ratio = uint120(_div(toMint, totalSupply));\\n\\n        for (uint256 i = 0; i < tokens.length; i++) {\\n            address tokenIn = tokens[i];\\n            uint120 reserve = records[tokenIn].reserve;\\n            // @dev If token balance is '0', initialize with `ratio`.\\n            uint120 amountIn = reserve != 0 ? uint120(_mul(ratio, reserve)) : ratio;\\n            require(amountIn >= MIN_BALANCE, \\\"MIN_BALANCE\\\");\\n            // @dev Check Trident router has sent `amountIn` for skim into pool.\\n            unchecked {\\n                // @dev This is safe from overflow - only logged amounts handled.\\n                require(_balance(tokenIn) >= amountIn + reserve, \\\"NOT_RECEIVED\\\");\\n                records[tokenIn].reserve += amountIn;\\n            }\\n            emit Mint(msg.sender, tokenIn, amountIn, recipient);\\n        }\\n        _mint(recipient, toMint);\\n        liquidity = toMint;\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\\n    function burn(bytes calldata data) public override lock returns (IPool.TokenAmount[] memory withdrawnAmounts) {\\n        (address recipient, bool unwrapBento, uint256 toBurn) = abi.decode(data, (address, bool, uint256));\\n\\n        uint256 ratio = _div(toBurn, totalSupply);\\n\\n        withdrawnAmounts = new TokenAmount[](tokens.length);\\n\\n        _burn(address(this), toBurn);\\n\\n        for (uint256 i = 0; i < tokens.length; i++) {\\n            address tokenOut = tokens[i];\\n            uint256 balance = records[tokenOut].reserve;\\n            uint120 amountOut = uint120(_mul(ratio, balance));\\n            require(amountOut != 0, \\\"ZERO_OUT\\\");\\n            // @dev This is safe from underflow - only logged amounts handled.\\n            unchecked {\\n                records[tokenOut].reserve -= amountOut;\\n            }\\n            _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n            withdrawnAmounts[i] = TokenAmount({token: tokenOut, amount: amountOut});\\n            emit Burn(msg.sender, tokenOut, amountOut, recipient);\\n        }\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\\n    /// - i.e., the user gets a single token out by burning LP tokens.\\n    function burnSingle(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenOut, address recipient, bool unwrapBento, uint256 toBurn) = abi.decode(data, (address, address, bool, uint256));\\n\\n        Record storage outRecord = records[tokenOut];\\n\\n        amountOut = _computeSingleOutGivenPoolIn(outRecord.reserve, outRecord.weight, totalSupply, totalWeight, toBurn, swapFee);\\n\\n        require(amountOut <= _mul(outRecord.reserve, MAX_OUT_RATIO), \\\"MAX_OUT_RATIO\\\");\\n        // @dev This is safe from underflow - only logged amounts handled.\\n        unchecked {\\n            outRecord.reserve -= uint120(amountOut);\\n        }\\n        _burn(address(this), toBurn);\\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n        emit Burn(msg.sender, tokenOut, amountOut, recipient);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\\n    function swap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address tokenOut, address recipient, bool unwrapBento, uint256 amountIn) = abi.decode(\\n            data,\\n            (address, address, address, bool, uint256)\\n        );\\n\\n        Record storage inRecord = records[tokenIn];\\n        Record storage outRecord = records[tokenOut];\\n\\n        require(amountIn <= _mul(inRecord.reserve, MAX_IN_RATIO), \\\"MAX_IN_RATIO\\\");\\n\\n        amountOut = _getAmountOut(amountIn, inRecord.reserve, inRecord.weight, outRecord.reserve, outRecord.weight);\\n        // @dev Check Trident router has sent `amountIn` for skim into pool.\\n        unchecked {\\n            // @dev This is safe from under/overflow - only logged amounts handled.\\n            require(_balance(tokenIn) >= amountIn + inRecord.reserve, \\\"NOT_RECEIVED\\\");\\n            inRecord.reserve += uint120(amountIn);\\n            outRecord.reserve -= uint120(amountOut);\\n        }\\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage.\\n    function flashSwap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address tokenOut, address recipient, bool unwrapBento, uint256 amountIn, bytes memory context) = abi.decode(\\n            data,\\n            (address, address, address, bool, uint256, bytes)\\n        );\\n\\n        Record storage inRecord = records[tokenIn];\\n        Record storage outRecord = records[tokenOut];\\n\\n        require(amountIn <= _mul(inRecord.reserve, MAX_IN_RATIO), \\\"MAX_IN_RATIO\\\");\\n\\n        amountOut = _getAmountOut(amountIn, inRecord.reserve, inRecord.weight, outRecord.reserve, outRecord.weight);\\n\\n        ITridentCallee(msg.sender).tridentSwapCallback(context);\\n        // @dev Check Trident router has sent `amountIn` for skim into pool.\\n        unchecked {\\n            // @dev This is safe from under/overflow - only logged amounts handled.\\n            require(_balance(tokenIn) >= amountIn + inRecord.reserve, \\\"NOT_RECEIVED\\\");\\n            inRecord.reserve += uint120(amountIn);\\n            outRecord.reserve -= uint120(amountOut);\\n        }\\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\\n    }\\n\\n    /// @dev Updates `barFee` for Trident protocol.\\n    function updateBarFee() public {\\n        barFee = IMasterDeployer(masterDeployer).barFee();\\n    }\\n\\n    function _balance(address token) internal view returns (uint256 balance) {\\n        balance = bento.balanceOf(token, address(this));\\n    }\\n\\n    function _getAmountOut(\\n        uint256 tokenInAmount,\\n        uint256 tokenInBalance,\\n        uint256 tokenInWeight,\\n        uint256 tokenOutBalance,\\n        uint256 tokenOutWeight\\n    ) internal view returns (uint256 amountOut) {\\n        uint256 weightRatio = _div(tokenInWeight, tokenOutWeight);\\n        // @dev This is safe from under/overflow - only logged amounts handled.\\n        unchecked {\\n            uint256 adjustedIn = _mul(tokenInAmount, (BASE - swapFee));\\n            uint256 a = _div(tokenInBalance, tokenInBalance + adjustedIn);\\n            uint256 b = _compute(a, weightRatio);\\n            uint256 c = BASE - b;\\n            amountOut = _mul(tokenOutBalance, c);\\n        }\\n    }\\n\\n    function _compute(uint256 base, uint256 exp) internal pure returns (uint256 output) {\\n        require(MIN_POW_BASE <= base && base <= MAX_POW_BASE, \\\"INVALID_BASE\\\");\\n\\n        uint256 whole = (exp / BASE) * BASE;\\n        uint256 remain = exp - whole;\\n        uint256 wholePow = _pow(base, whole / BASE);\\n\\n        if (remain == 0) output = wholePow;\\n\\n        uint256 partialResult = _powApprox(base, remain, POW_PRECISION);\\n        output = _mul(wholePow, partialResult);\\n    }\\n\\n    function _computeSingleOutGivenPoolIn(\\n        uint256 tokenOutBalance,\\n        uint256 tokenOutWeight,\\n        uint256 _totalSupply,\\n        uint256 _totalWeight,\\n        uint256 toBurn,\\n        uint256 _swapFee\\n    ) internal pure returns (uint256 amountOut) {\\n        uint256 normalizedWeight = _div(tokenOutWeight, _totalWeight);\\n        uint256 newPoolSupply = _totalSupply - toBurn;\\n        uint256 poolRatio = _div(newPoolSupply, _totalSupply);\\n        uint256 tokenOutRatio = _pow(poolRatio, _div(BASE, normalizedWeight));\\n        uint256 newBalanceOut = _mul(tokenOutRatio, tokenOutBalance);\\n        uint256 tokenAmountOutBeforeSwapFee = tokenOutBalance - newBalanceOut;\\n        uint256 zaz = (BASE - normalizedWeight) * _swapFee;\\n        amountOut = _mul(tokenAmountOutBeforeSwapFee, (BASE - zaz));\\n    }\\n\\n    function _pow(uint256 a, uint256 n) internal pure returns (uint256 output) {\\n        output = n % 2 != 0 ? a : BASE;\\n        for (n /= 2; n != 0; n /= 2) a = a * a;\\n        if (n % 2 != 0) output = output * a;\\n    }\\n\\n    function _powApprox(\\n        uint256 base,\\n        uint256 exp,\\n        uint256 precision\\n    ) internal pure returns (uint256 sum) {\\n        uint256 a = exp;\\n        (uint256 x, bool xneg) = _subFlag(base, BASE);\\n        uint256 term = BASE;\\n        sum = term;\\n        bool negative;\\n\\n        for (uint256 i = 1; term >= precision; i++) {\\n            uint256 bigK = i * BASE;\\n            (uint256 c, bool cneg) = _subFlag(a, (bigK - BASE));\\n            term = _mul(term, _mul(c, x));\\n            term = _div(term, bigK);\\n            if (term == 0) break;\\n            if (xneg) negative = !negative;\\n            if (cneg) negative = !negative;\\n            if (negative) {\\n                sum = sum - term;\\n            } else {\\n                sum = sum + term;\\n            }\\n        }\\n    }\\n\\n    function _subFlag(uint256 a, uint256 b) internal pure returns (uint256 difference, bool flag) {\\n        // @dev This is safe from underflow - if/else flow performs checks.\\n        unchecked {\\n            if (a >= b) {\\n                (difference, flag) = (a - b, false);\\n            } else {\\n                (difference, flag) = (b - a, true);\\n            }\\n        }\\n    }\\n\\n    function _mul(uint256 a, uint256 b) internal pure returns (uint256 c2) {\\n        uint256 c0 = a * b;\\n        uint256 c1 = c0 + (BASE / 2);\\n        c2 = c1 / BASE;\\n    }\\n\\n    function _div(uint256 a, uint256 b) internal pure returns (uint256 c2) {\\n        uint256 c0 = a * BASE;\\n        uint256 c1 = c0 + (b / 2);\\n        c2 = c1 / b;\\n    }\\n\\n    function _transfer(\\n        address token,\\n        uint256 shares,\\n        address to,\\n        bool unwrapBento\\n    ) internal {\\n        if (unwrapBento) {\\n            bento.withdraw(token, address(this), to, 0, shares);\\n        } else {\\n            bento.transfer(token, address(this), to, shares);\\n        }\\n    }\\n\\n    function getAssets() public view override returns (address[] memory assets) {\\n        assets = tokens;\\n    }\\n\\n    function getAmountOut(bytes calldata data) public view override returns (uint256 amountOut) {\\n        (uint256 tokenInAmount, uint256 tokenInBalance, uint256 tokenInWeight, uint256 tokenOutBalance, uint256 tokenOutWeight) = abi\\n            .decode(data, (uint256, uint256, uint256, uint256, uint256));\\n        amountOut = _getAmountOut(tokenInAmount, tokenInBalance, tokenInWeight, tokenOutBalance, tokenOutWeight);\\n    }\\n\\n    function getAmountIn(bytes calldata) public pure override returns (uint256) {\\n        revert();\\n    }\\n\\n    function getReservesAndWeights() public view returns (uint256[] memory reserves, uint136[] memory weights) {\\n        uint256 length = tokens.length;\\n        reserves = new uint256[](length);\\n        weights = new uint136[](length);\\n        // @dev This is safe from overflow - `tokens` `length` is bound to '8'.\\n        unchecked {\\n            for (uint256 i = 0; i < length; i++) {\\n                reserves[i] = records[tokens[i]].reserve;\\n                weights[i] = records[tokens[i]].weight;\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x03c587721d26a31fcc23b2cdd57aef313de83d11049cf01bd55d30d34c3a7b23\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/IndexPoolFactory.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./IndexPool.sol\\\";\\nimport \\\"./PoolDeployer.sol\\\";\\n\\n/// @notice Contract for deploying Trident exchange Index Pool with configurations.\\n/// @author Mudit Gupta\\ncontract IndexPoolFactory is PoolDeployer {\\n    constructor(address _masterDeployer) PoolDeployer(_masterDeployer) {}\\n\\n    function deployPool(bytes memory _deployData) external returns (address pool) {\\n        (address[] memory tokens, uint136[] memory weights, uint256 swapFee) = abi.decode(_deployData, (address[], uint136[], uint256));\\n\\n        // @dev Strips any extra data.\\n        _deployData = abi.encode(tokens, weights, swapFee);\\n\\n        // @dev Salt is not actually needed since `_deployData` is part of creationCode and already contains the salt.\\n        bytes32 salt = keccak256(_deployData);\\n        pool = address(new IndexPool{salt: salt}(_deployData, masterDeployer));\\n        _registerPool(pool, tokens, salt);\\n    }\\n}\\n\",\"keccak256\":\"0xa5db55c356f74a2a8f49db87470021fbdf3112712537d0c6b785d4ee8f2de9cd\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/PoolDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer for whitelisted template factories.\\n/// @author Mudit Gupta.\\nabstract contract PoolDeployer {\\n    address public immutable masterDeployer;\\n\\n    mapping(address => mapping(address => address[])) public pools;\\n    mapping(bytes32 => address) public configAddress;\\n\\n    error UnauthorisedDeployer();\\n    error ZeroAddress();\\n    error InvalidTokenOrder();\\n\\n    modifier onlyMaster() {\\n        if (msg.sender != masterDeployer) revert UnauthorisedDeployer();\\n        _;\\n    }\\n\\n    constructor(address _masterDeployer) {\\n        if (_masterDeployer == address(0)) revert ZeroAddress();\\n        masterDeployer = _masterDeployer;\\n    }\\n\\n    function _registerPool(\\n        address pool,\\n        address[] memory tokens,\\n        bytes32 salt\\n    ) internal onlyMaster {\\n        // @dev Store the address of the deployed contract.\\n        configAddress[salt] = pool;\\n        // @dev Attacker used underflow, it was not very effective. poolimon!\\n        // null token array would cause deployment to fail via out of bounds memory axis/gas limit.\\n        unchecked {\\n            for (uint256 i; i < tokens.length - 1; i++) {\\n                if (tokens[i] >= tokens[i + 1]) revert InvalidTokenOrder();\\n                for (uint256 j = i + 1; j < tokens.length; j++) {\\n                    pools[tokens[i]][tokens[j]].push(pool);\\n                    pools[tokens[j]][tokens[i]].push(pool);\\n                }\\n            }\\n        }\\n    }\\n\\n    function poolsCount(address token0, address token1) external view returns (uint256 count) {\\n        count = pools[token0][token1].length;\\n    }\\n\\n    function getPools(\\n        address token0,\\n        address token1,\\n        uint256 startIndex,\\n        uint256 count\\n    ) external view returns (address[] memory pairPools) {\\n        pairPools = new address[](count);\\n        for (uint256 i = 0; i < count; i++) {\\n            pairPools[i] = pools[token0][token1][startIndex + i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x34c44a489ccaf9a7b2bc05527113552a2ebc5a8b4b9d47035e465c39cf569b81\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/TridentERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool ERC-20 with EIP-2612 extension.\\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol,\\n/// License-Identifier: AGPL-3.0-only.\\nabstract contract TridentERC20 {\\n    event Transfer(address indexed sender, address indexed recipient, uint256 amount);\\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\\n\\n    string public constant name = \\\"Sushi LP Token\\\";\\n    string public constant symbol = \\\"SLP\\\";\\n    uint8 public constant decimals = 18;\\n\\n    uint256 public totalSupply;\\n    /// @notice owner -> balance mapping.\\n    mapping(address => uint256) public balanceOf;\\n    /// @notice owner -> spender -> allowance mapping.\\n    mapping(address => mapping(address => uint256)) public allowance;\\n\\n    /// @notice Chain Id at this contract's deployment.\\n    uint256 internal immutable DOMAIN_SEPARATOR_CHAIN_ID;\\n    /// @notice EIP-712 typehash for this contract's domain at deployment.\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n    /// @notice EIP-712 typehash for this contract's {permit} struct.\\n    bytes32 public constant PERMIT_TYPEHASH =\\n        keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n    /// @notice owner -> nonce mapping used in {permit}.\\n    mapping(address => uint256) public nonces;\\n\\n    constructor() {\\n        DOMAIN_SEPARATOR_CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _calculateDomainSeparator();\\n    }\\n\\n    function _calculateDomainSeparator() internal view returns (bytes32 domainSeperator) {\\n        domainSeperator = keccak256(\\n            abi.encode(\\n                keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"),\\n                keccak256(bytes(name)),\\n                keccak256(bytes(\\\"1\\\")),\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    /// @notice EIP-712 typehash for this contract's domain.\\n    function DOMAIN_SEPARATOR() public view returns (bytes32 domainSeperator) {\\n        domainSeperator = block.chainid == DOMAIN_SEPARATOR_CHAIN_ID ? _DOMAIN_SEPARATOR : _calculateDomainSeparator();\\n    }\\n\\n    /// @notice Approves `amount` from `msg.sender` to be spent by `spender`.\\n    /// @param spender Address of the party that can pull tokens from `msg.sender`'s account.\\n    /// @param amount The maximum collective `amount` that `spender` can pull.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function approve(address spender, uint256 amount) external returns (bool) {\\n        allowance[msg.sender][spender] = amount;\\n        emit Approval(msg.sender, spender, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `msg.sender` to `recipient`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transfer(address recipient, uint256 amount) external returns (bool) {\\n        balanceOf[msg.sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(msg.sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\\n    /// @param sender Address to pull tokens `from`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool) {\\n        if (allowance[sender][msg.sender] != type(uint256).max) {\\n            allowance[sender][msg.sender] -= amount;\\n        }\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Triggers an approval from `owner` to `spender`.\\n    /// @param owner The address to approve from.\\n    /// @param spender The address to be approved.\\n    /// @param amount The number of tokens that are approved (2^256-1 means infinite).\\n    /// @param deadline The time at which to expire the signature.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        require(deadline >= block.timestamp, \\\"PERMIT_DEADLINE_EXPIRED\\\");\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                \\\"\\\\x19\\\\x01\\\",\\n                DOMAIN_SEPARATOR(),\\n                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))\\n            )\\n        );\\n        address recoveredAddress = ecrecover(digest, v, r, s);\\n        require(recoveredAddress != address(0) && recoveredAddress == owner, \\\"INVALID_PERMIT_SIGNATURE\\\");\\n        allowance[recoveredAddress][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    function _mint(address recipient, uint256 amount) internal {\\n        totalSupply += amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(address(0), recipient, amount);\\n    }\\n\\n    function _burn(address sender, uint256 amount) internal {\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from underflow - users won't ever\\n        // have a balance larger than `totalSupply`.\\n        unchecked {\\n            totalSupply -= amount;\\n        }\\n        emit Transfer(sender, address(0), amount);\\n    }\\n}\\n\",\"keccak256\":\"0xb249a6d507f6911b7de4f9655a9736710fac9847982ad9afa18650db9a84794d\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 11688,
                "contract": "contracts/pool/IndexPoolFactory.sol:IndexPoolFactory",
                "label": "pools",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_address,t_mapping(t_address,t_array(t_address)dyn_storage))"
              },
              {
                "astId": 11692,
                "contract": "contracts/pool/IndexPoolFactory.sol:IndexPoolFactory",
                "label": "configAddress",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_bytes32,t_address)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_address)dyn_storage": {
                "base": "t_address",
                "encoding": "dynamic_array",
                "label": "address[]",
                "numberOfBytes": "32"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_array(t_address)dyn_storage)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => address[])",
                "numberOfBytes": "32",
                "value": "t_array(t_address)dyn_storage"
              },
              "t_mapping(t_address,t_mapping(t_address,t_array(t_address)dyn_storage))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => address[]))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_array(t_address)dyn_storage)"
              },
              "t_mapping(t_bytes32,t_address)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Contract for deploying Trident exchange Index Pool with configurations.",
            "version": 1
          }
        }
      },
      "contracts/pool/PoolDeployer.sol": {
        "PoolDeployer": {
          "abi": [
            {
              "inputs": [],
              "name": "InvalidTokenOrder",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnauthorisedDeployer",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ZeroAddress",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "configAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "startIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "name": "getPools",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "pairPools",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                }
              ],
              "name": "poolsCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Mudit Gupta.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "configAddress(bytes32)": "f6ab6d99",
              "getPools(address,address,uint256,uint256)": "71a25812",
              "masterDeployer()": "cf58879a",
              "pools(address,address,uint256)": "169c4cef",
              "poolsCount(address,address)": "5bc93d6c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidTokenOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorisedDeployer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"configAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pairPools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterDeployer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pools\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"}],\"name\":\"poolsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Mudit Gupta.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Trident pool deployer for whitelisted template factories.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/PoolDeployer.sol\":\"PoolDeployer\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/pool/PoolDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer for whitelisted template factories.\\n/// @author Mudit Gupta.\\nabstract contract PoolDeployer {\\n    address public immutable masterDeployer;\\n\\n    mapping(address => mapping(address => address[])) public pools;\\n    mapping(bytes32 => address) public configAddress;\\n\\n    error UnauthorisedDeployer();\\n    error ZeroAddress();\\n    error InvalidTokenOrder();\\n\\n    modifier onlyMaster() {\\n        if (msg.sender != masterDeployer) revert UnauthorisedDeployer();\\n        _;\\n    }\\n\\n    constructor(address _masterDeployer) {\\n        if (_masterDeployer == address(0)) revert ZeroAddress();\\n        masterDeployer = _masterDeployer;\\n    }\\n\\n    function _registerPool(\\n        address pool,\\n        address[] memory tokens,\\n        bytes32 salt\\n    ) internal onlyMaster {\\n        // @dev Store the address of the deployed contract.\\n        configAddress[salt] = pool;\\n        // @dev Attacker used underflow, it was not very effective. poolimon!\\n        // null token array would cause deployment to fail via out of bounds memory axis/gas limit.\\n        unchecked {\\n            for (uint256 i; i < tokens.length - 1; i++) {\\n                if (tokens[i] >= tokens[i + 1]) revert InvalidTokenOrder();\\n                for (uint256 j = i + 1; j < tokens.length; j++) {\\n                    pools[tokens[i]][tokens[j]].push(pool);\\n                    pools[tokens[j]][tokens[i]].push(pool);\\n                }\\n            }\\n        }\\n    }\\n\\n    function poolsCount(address token0, address token1) external view returns (uint256 count) {\\n        count = pools[token0][token1].length;\\n    }\\n\\n    function getPools(\\n        address token0,\\n        address token1,\\n        uint256 startIndex,\\n        uint256 count\\n    ) external view returns (address[] memory pairPools) {\\n        pairPools = new address[](count);\\n        for (uint256 i = 0; i < count; i++) {\\n            pairPools[i] = pools[token0][token1][startIndex + i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x34c44a489ccaf9a7b2bc05527113552a2ebc5a8b4b9d47035e465c39cf569b81\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 11688,
                "contract": "contracts/pool/PoolDeployer.sol:PoolDeployer",
                "label": "pools",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_address,t_mapping(t_address,t_array(t_address)dyn_storage))"
              },
              {
                "astId": 11692,
                "contract": "contracts/pool/PoolDeployer.sol:PoolDeployer",
                "label": "configAddress",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_bytes32,t_address)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_address)dyn_storage": {
                "base": "t_address",
                "encoding": "dynamic_array",
                "label": "address[]",
                "numberOfBytes": "32"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_array(t_address)dyn_storage)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => address[])",
                "numberOfBytes": "32",
                "value": "t_array(t_address)dyn_storage"
              },
              "t_mapping(t_address,t_mapping(t_address,t_array(t_address)dyn_storage))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => address[]))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_array(t_address)dyn_storage)"
              },
              "t_mapping(t_bytes32,t_address)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Trident pool deployer for whitelisted template factories.",
            "version": 1
          }
        }
      },
      "contracts/pool/TridentERC20.sol": {
        "TridentERC20": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "domainSeperator",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol, License-Identifier: AGPL-3.0-only.",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "params": {
                  "amount": "The maximum collective `amount` that `spender` can pull.",
                  "spender": "Address of the party that can pull tokens from `msg.sender`'s account."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "amount": "The number of tokens that are approved (2^256-1 means infinite).",
                  "deadline": "The time at which to expire the signature.",
                  "owner": "The address to approve from.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "spender": "The address to be approved.",
                  "v": "The recovery byte of the signature."
                }
              },
              "transfer(address,uint256)": {
                "params": {
                  "amount": "The token `amount` to move.",
                  "recipient": "The address to move tokens to."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "transferFrom(address,address,uint256)": {
                "params": {
                  "amount": "The token `amount` to move.",
                  "recipient": "The address to move tokens to.",
                  "sender": "Address to pull tokens `from`."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "PERMIT_TYPEHASH()": "30adf81f",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"domainSeperator\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol, License-Identifier: AGPL-3.0-only.\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"params\":{\"amount\":\"The maximum collective `amount` that `spender` can pull.\",\"spender\":\"Address of the party that can pull tokens from `msg.sender`'s account.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"amount\":\"The number of tokens that are approved (2^256-1 means infinite).\",\"deadline\":\"The time at which to expire the signature.\",\"owner\":\"The address to approve from.\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"spender\":\"The address to be approved.\",\"v\":\"The recovery byte of the signature.\"}},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The token `amount` to move.\",\"recipient\":\"The address to move tokens to.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The token `amount` to move.\",\"recipient\":\"The address to move tokens to.\",\"sender\":\"Address to pull tokens `from`.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"EIP-712 typehash for this contract's domain.\"},\"PERMIT_TYPEHASH()\":{\"notice\":\"EIP-712 typehash for this contract's {permit} struct.\"},\"allowance(address,address)\":{\"notice\":\"owner -> spender -> allowance mapping.\"},\"approve(address,uint256)\":{\"notice\":\"Approves `amount` from `msg.sender` to be spent by `spender`.\"},\"balanceOf(address)\":{\"notice\":\"owner -> balance mapping.\"},\"nonces(address)\":{\"notice\":\"owner -> nonce mapping used in {permit}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Triggers an approval from `owner` to `spender`.\"},\"transfer(address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `msg.sender` to `recipient`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\"}},\"notice\":\"Trident pool ERC-20 with EIP-2612 extension.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/TridentERC20.sol\":\"TridentERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/pool/TridentERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool ERC-20 with EIP-2612 extension.\\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol,\\n/// License-Identifier: AGPL-3.0-only.\\nabstract contract TridentERC20 {\\n    event Transfer(address indexed sender, address indexed recipient, uint256 amount);\\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\\n\\n    string public constant name = \\\"Sushi LP Token\\\";\\n    string public constant symbol = \\\"SLP\\\";\\n    uint8 public constant decimals = 18;\\n\\n    uint256 public totalSupply;\\n    /// @notice owner -> balance mapping.\\n    mapping(address => uint256) public balanceOf;\\n    /// @notice owner -> spender -> allowance mapping.\\n    mapping(address => mapping(address => uint256)) public allowance;\\n\\n    /// @notice Chain Id at this contract's deployment.\\n    uint256 internal immutable DOMAIN_SEPARATOR_CHAIN_ID;\\n    /// @notice EIP-712 typehash for this contract's domain at deployment.\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n    /// @notice EIP-712 typehash for this contract's {permit} struct.\\n    bytes32 public constant PERMIT_TYPEHASH =\\n        keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n    /// @notice owner -> nonce mapping used in {permit}.\\n    mapping(address => uint256) public nonces;\\n\\n    constructor() {\\n        DOMAIN_SEPARATOR_CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _calculateDomainSeparator();\\n    }\\n\\n    function _calculateDomainSeparator() internal view returns (bytes32 domainSeperator) {\\n        domainSeperator = keccak256(\\n            abi.encode(\\n                keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"),\\n                keccak256(bytes(name)),\\n                keccak256(bytes(\\\"1\\\")),\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    /// @notice EIP-712 typehash for this contract's domain.\\n    function DOMAIN_SEPARATOR() public view returns (bytes32 domainSeperator) {\\n        domainSeperator = block.chainid == DOMAIN_SEPARATOR_CHAIN_ID ? _DOMAIN_SEPARATOR : _calculateDomainSeparator();\\n    }\\n\\n    /// @notice Approves `amount` from `msg.sender` to be spent by `spender`.\\n    /// @param spender Address of the party that can pull tokens from `msg.sender`'s account.\\n    /// @param amount The maximum collective `amount` that `spender` can pull.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function approve(address spender, uint256 amount) external returns (bool) {\\n        allowance[msg.sender][spender] = amount;\\n        emit Approval(msg.sender, spender, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `msg.sender` to `recipient`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transfer(address recipient, uint256 amount) external returns (bool) {\\n        balanceOf[msg.sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(msg.sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\\n    /// @param sender Address to pull tokens `from`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool) {\\n        if (allowance[sender][msg.sender] != type(uint256).max) {\\n            allowance[sender][msg.sender] -= amount;\\n        }\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Triggers an approval from `owner` to `spender`.\\n    /// @param owner The address to approve from.\\n    /// @param spender The address to be approved.\\n    /// @param amount The number of tokens that are approved (2^256-1 means infinite).\\n    /// @param deadline The time at which to expire the signature.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        require(deadline >= block.timestamp, \\\"PERMIT_DEADLINE_EXPIRED\\\");\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                \\\"\\\\x19\\\\x01\\\",\\n                DOMAIN_SEPARATOR(),\\n                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))\\n            )\\n        );\\n        address recoveredAddress = ecrecover(digest, v, r, s);\\n        require(recoveredAddress != address(0) && recoveredAddress == owner, \\\"INVALID_PERMIT_SIGNATURE\\\");\\n        allowance[recoveredAddress][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    function _mint(address recipient, uint256 amount) internal {\\n        totalSupply += amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(address(0), recipient, amount);\\n    }\\n\\n    function _burn(address sender, uint256 amount) internal {\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from underflow - users won't ever\\n        // have a balance larger than `totalSupply`.\\n        unchecked {\\n            totalSupply -= amount;\\n        }\\n        emit Transfer(sender, address(0), amount);\\n    }\\n}\\n\",\"keccak256\":\"0xb249a6d507f6911b7de4f9655a9736710fac9847982ad9afa18650db9a84794d\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 11917,
                "contract": "contracts/pool/TridentERC20.sol:TridentERC20",
                "label": "totalSupply",
                "offset": 0,
                "slot": "0",
                "type": "t_uint256"
              },
              {
                "astId": 11922,
                "contract": "contracts/pool/TridentERC20.sol:TridentERC20",
                "label": "balanceOf",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 11929,
                "contract": "contracts/pool/TridentERC20.sol:TridentERC20",
                "label": "allowance",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
              },
              {
                "astId": 11946,
                "contract": "contracts/pool/TridentERC20.sol:TridentERC20",
                "label": "nonces",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_address,t_uint256)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_mapping(t_address,t_mapping(t_address,t_uint256))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_uint256)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "DOMAIN_SEPARATOR()": {
                "notice": "EIP-712 typehash for this contract's domain."
              },
              "PERMIT_TYPEHASH()": {
                "notice": "EIP-712 typehash for this contract's {permit} struct."
              },
              "allowance(address,address)": {
                "notice": "owner -> spender -> allowance mapping."
              },
              "approve(address,uint256)": {
                "notice": "Approves `amount` from `msg.sender` to be spent by `spender`."
              },
              "balanceOf(address)": {
                "notice": "owner -> balance mapping."
              },
              "nonces(address)": {
                "notice": "owner -> nonce mapping used in {permit}."
              },
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Triggers an approval from `owner` to `spender`."
              },
              "transfer(address,uint256)": {
                "notice": "Transfers `amount` tokens from `msg.sender` to `recipient`."
              },
              "transferFrom(address,address,uint256)": {
                "notice": "Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`."
              }
            },
            "notice": "Trident pool ERC-20 with EIP-2612 extension.",
            "version": 1
          }
        }
      },
      "contracts/pool/concentrated/ConcentratedLiquidityPool.sol": {
        "ConcentratedLiquidityPool": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                },
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "InvalidSwapFee",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidTick",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidToken",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "LiquidityOverflow",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "Locked",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "LowerEven",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MaxTickLiquidity",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "Overflow",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "TickOutOfBounds",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "Token0Missing",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "Token1Missing",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UpperOdd",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ZeroAddress",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount0",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount1",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount0",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount1",
                  "type": "uint256"
                }
              ],
              "name": "Collect",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount0",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount1",
                  "type": "uint256"
                }
              ],
              "name": "Mint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenIn",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOut",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "name": "Swap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "reserveShares0",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "reserveShares1",
                  "type": "uint256"
                }
              ],
              "name": "Sync",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "barFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPool.TokenAmount[]",
                  "name": "",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "burnSingle",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "int24",
                  "name": "lower",
                  "type": "int24"
                },
                {
                  "internalType": "int24",
                  "name": "upper",
                  "type": "int24"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "unwrapBento",
                  "type": "bool"
                }
              ],
              "name": "collect",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amount0fees",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount1fees",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "collectProtocolFee",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "amount0",
                  "type": "uint128"
                },
                {
                  "internalType": "uint128",
                  "name": "amount1",
                  "type": "uint128"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "int24",
                  "name": "lower",
                  "type": "int24"
                },
                {
                  "internalType": "int24",
                  "name": "upper",
                  "type": "int24"
                },
                {
                  "internalType": "uint128",
                  "name": "amount",
                  "type": "uint128"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "unwrapBento",
                  "type": "bool"
                }
              ],
              "name": "decreaseLiquidity",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPool.TokenAmount[]",
                  "name": "withdrawnAmounts",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPool.TokenAmount[]",
                  "name": "feesWithdrawn",
                  "type": "tuple[]"
                },
                {
                  "internalType": "uint256",
                  "name": "oldLiquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "feeGrowthGlobal0",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "feeGrowthGlobal1",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "flashSwap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "getAmountIn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "getAmountOut",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAssets",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getImmutables",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "_MAX_TICK_LIQUIDITY",
                  "type": "uint128"
                },
                {
                  "internalType": "uint24",
                  "name": "_tickSpacing",
                  "type": "uint24"
                },
                {
                  "internalType": "uint24",
                  "name": "_swapFee",
                  "type": "uint24"
                },
                {
                  "internalType": "address",
                  "name": "_barFeeTo",
                  "type": "address"
                },
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "_bento",
                  "type": "address"
                },
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "_masterDeployer",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_token1",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getPriceAndNearestTicks",
              "outputs": [
                {
                  "internalType": "uint160",
                  "name": "_price",
                  "type": "uint160"
                },
                {
                  "internalType": "int24",
                  "name": "_nearestTick",
                  "type": "int24"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getReserves",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "_reserve0",
                  "type": "uint128"
                },
                {
                  "internalType": "uint128",
                  "name": "_reserve1",
                  "type": "uint128"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getSecondsGrowthAndLastObservation",
              "outputs": [
                {
                  "internalType": "uint160",
                  "name": "_secondsGrowthGlobal",
                  "type": "uint160"
                },
                {
                  "internalType": "uint32",
                  "name": "_lastObservation",
                  "type": "uint32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getTokenProtocolFees",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "_token0ProtocolFee",
                  "type": "uint128"
                },
                {
                  "internalType": "uint128",
                  "name": "_token1ProtocolFee",
                  "type": "uint128"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "liquidity",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "",
                  "type": "uint128"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolIdentifier",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "int24",
                  "name": "",
                  "type": "int24"
                },
                {
                  "internalType": "int24",
                  "name": "",
                  "type": "int24"
                }
              ],
              "name": "positions",
              "outputs": [
                {
                  "internalType": "uint128",
                  "name": "liquidity",
                  "type": "uint128"
                },
                {
                  "internalType": "uint256",
                  "name": "feeGrowthInside0Last",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "feeGrowthInside1Last",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "int24",
                  "name": "lowerTick",
                  "type": "int24"
                },
                {
                  "internalType": "int24",
                  "name": "upperTick",
                  "type": "int24"
                }
              ],
              "name": "rangeFeeGrowth",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "feeGrowthInside0",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "feeGrowthInside1",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "swap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "int24",
                  "name": "",
                  "type": "int24"
                }
              ],
              "name": "ticks",
              "outputs": [
                {
                  "internalType": "int24",
                  "name": "previousTick",
                  "type": "int24"
                },
                {
                  "internalType": "int24",
                  "name": "nextTick",
                  "type": "int24"
                },
                {
                  "internalType": "uint128",
                  "name": "liquidity",
                  "type": "uint128"
                },
                {
                  "internalType": "uint256",
                  "name": "feeGrowthOutside0",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "feeGrowthOutside1",
                  "type": "uint256"
                },
                {
                  "internalType": "uint160",
                  "name": "secondsGrowthOutside",
                  "type": "uint160"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "updateBarFee",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "Amounts are considered to be in Bentobox shared",
            "errors": {
              "Locked()": [
                {
                  "details": "Error list to optimize around pool requirements."
                }
              ]
            },
            "kind": "dev",
            "methods": {
              "collectProtocolFee()": {
                "details": "Collects fees for Trident protocol."
              },
              "constructor": {
                "details": "Only set immutable variables here - state changes made here will not be used."
              },
              "decreaseLiquidity(int24,int24,uint128,address,bool)": {
                "details": "Burns LP tokens sent to this contract."
              },
              "flashSwap(bytes)": {
                "details": "Reserved for IPool."
              },
              "getAmountIn(bytes)": {
                "details": "Reserved for IPool."
              },
              "getAmountOut(bytes)": {
                "details": "Reserved for IPool."
              },
              "getAssets()": {
                "returns": {
                  "assets": "An array of tokens supported by the pool."
                }
              },
              "mint(bytes)": {
                "details": "Mints LP tokens - should be called via the router after transferring `bento` tokens. The router must ensure that sufficient liquidity has been minted."
              },
              "rangeFeeGrowth(int24,int24)": {
                "details": "Multiply `rangeFeeGrowth` delta by the provided liquidity to get accrued fees for some period."
              },
              "swap(bytes)": {
                "details": "Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage - price is √(y/x) - x is token0 - zero for one -> price will move down."
              },
              "updateBarFee()": {
                "details": "Updates `barFee` for Trident protocol."
              }
            },
            "stateVariables": {
              "MAX_TICK_LIQUIDITY": {
                "details": "1000 corresponds to 0.1% fee. Fee is measured in pips."
              },
              "feeGrowthGlobal1": {
                "details": "All fee growth counters are multiplied by 2^128."
              },
              "lastObservation": {
                "details": "Multiplied by 2^128."
              },
              "nearestTick": {
                "details": "Sqrt of price aka. √(y/x), multiplied by 2^96."
              },
              "poolIdentifier": {
                "return": "A unique identifier for the pool type.",
                "returns": {
                  "_0": "A unique identifier for the pool type."
                }
              },
              "reserve1": {
                "details": "`bento` share balance tracker."
              },
              "tickSpacing": {
                "details": "Maximum `swapFee` is 10%.References for tickSpacing: 100 tickSpacing -> 2% between ticks."
              },
              "unlocked": {
                "details": "Tick that is just below the current price."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_12670": {
                  "entryPoint": null,
                  "id": 12670,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_decode_contract_IMasterDeployer_fromMemory": {
                  "entryPoint": 1600,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 1638,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_uint24t_uint160t_uint24_fromMemory": {
                  "entryPoint": 1677,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_bytes_memory_ptrt_contract$_IMasterDeployer_$2356_fromMemory": {
                  "entryPoint": 1796,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint128_fromMemory": {
                  "entryPoint": 2037,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 2080,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_uint24_fromMemory": {
                  "entryPoint": 1618,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint24__to_t_uint24__fromStack_library_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "negate_t_int24": {
                  "entryPoint": 2106,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x41": {
                  "entryPoint": 2156,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 2178,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:3765:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "91:78:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "101:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "116:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "110:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "110:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "101:5:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "157:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "132:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "132:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "132:31:64"
                            }
                          ]
                        },
                        "name": "abi_decode_contract_IMasterDeployer_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "70:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "81:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:155:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "233:106:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "243:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "258:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "252:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "252:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "243:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "317:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "326:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "329:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "319:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "319:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "319:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "287:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "298:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "305:8:64",
                                            "type": "",
                                            "value": "0xffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "294:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "294:20:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "284:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "284:31:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "277:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "277:39:64"
                              },
                              "nodeType": "YulIf",
                              "src": "274:59:64"
                            }
                          ]
                        },
                        "name": "abi_decode_uint24_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "212:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "223:5:64",
                            "type": ""
                          }
                        ],
                        "src": "174:165:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "425:170:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "471:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "480:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "483:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "473:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "473:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "473:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "446:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "455:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "442:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "442:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "467:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "438:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "438:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "435:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "496:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "515:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "509:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "509:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "500:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "559:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "534:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "534:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "534:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "574:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "584:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "574:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "391:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "402:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "414:6:64",
                            "type": ""
                          }
                        ],
                        "src": "344:251:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "763:540:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "810:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "819:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "822:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "812:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "812:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "812:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "784:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "793:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "780:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "780:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "805:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "776:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "776:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "773:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "835:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "854:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "848:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "848:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "839:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "898:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "873:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "873:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "873:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "913:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "923:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "913:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "937:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "962:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "973:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "958:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "958:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "952:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "952:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "941:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1011:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "986:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "986:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "986:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1028:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1038:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1028:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1054:58:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1097:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1108:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1093:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1093:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint24_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1064:28:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1064:48:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1054:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1121:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1146:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1157:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1142:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1142:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1136:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1136:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1125:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1195:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1170:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1170:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1170:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1212:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "1222:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1212:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1238:59:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1281:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1292:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1277:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1277:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint24_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1248:28:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1248:49:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "1238:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_uint24t_uint160t_uint24_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "697:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "708:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "720:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "728:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "736:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "744:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "752:6:64",
                            "type": ""
                          }
                        ],
                        "src": "600:703:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1439:1083:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1485:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1494:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1497:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1487:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1487:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1487:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1460:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1469:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1456:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1456:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1481:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1452:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1452:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1449:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1510:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1530:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1524:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1524:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1514:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1549:28:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1567:2:64",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1571:1:64",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1563:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1563:10:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1575:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1559:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1559:18:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1553:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1604:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1613:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1616:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1606:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1606:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1606:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1592:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1600:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1589:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1589:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1586:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1629:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1643:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1654:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1639:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1639:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1633:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1709:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1718:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1721:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1711:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1711:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1711:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1688:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1692:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1684:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1684:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1699:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1680:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1680:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1673:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1673:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1670:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1734:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1750:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1744:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1744:9:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1738:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1776:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1778:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1778:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1778:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1768:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1772:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1765:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1765:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1762:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1807:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1821:2:64",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "1817:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1817:7:64"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "1811:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1833:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1853:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1847:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1847:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1837:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1865:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1887:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1911:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1915:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1907:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1907:13:64"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "1922:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "1903:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1903:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1927:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1899:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1899:31:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "1932:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1895:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1895:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1883:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1883:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1869:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1995:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1997:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1997:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1997:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1954:10:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1966:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1951:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1951:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1974:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1986:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1971:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1971:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1948:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1948:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1945:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2033:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2037:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2026:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2026:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2026:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2064:6:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2072:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2057:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2057:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2057:18:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2084:14:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2094:4:64",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "2088:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2144:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2153:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2156:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2146:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2146:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2146:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2121:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2125:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2117:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2117:11:64"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "2130:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2113:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2113:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2135:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2110:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2110:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2107:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2169:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2178:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "2173:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2234:83:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "memPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2263:6:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2271:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2259:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2259:14:64"
                                            },
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "2275:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2255:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2255:23:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_2",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2294:2:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2298:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2290:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2290:10:64"
                                                },
                                                {
                                                  "name": "_5",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2302:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2286:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2286:19:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2280:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2280:26:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2248:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2248:59:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2248:59:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2199:1:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2202:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2196:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2196:9:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2206:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2208:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "2217:1:64"
                                        },
                                        {
                                          "name": "_5",
                                          "nodeType": "YulIdentifier",
                                          "src": "2220:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2213:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2213:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "2208:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2192:3:64",
                                "statements": []
                              },
                              "src": "2188:129:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2347:59:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "memPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2376:6:64"
                                                },
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2384:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "2372:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2372:15:64"
                                            },
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "2389:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2368:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2368:24:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2394:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2361:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2361:35:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2361:35:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2332:1:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2335:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2329:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2329:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2326:80:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2415:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "2425:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2415:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2440:76:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2501:9:64"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "2512:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2497:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2497:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_contract_IMasterDeployer_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2450:46:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2450:66:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2440:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptrt_contract$_IMasterDeployer_$2356_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1397:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1408:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1420:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1428:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1308:1214:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2608:209:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2654:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2663:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2666:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2656:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2656:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2656:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2629:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2638:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2625:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2625:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2650:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2621:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2621:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2618:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2679:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2698:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2692:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2692:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2683:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2771:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2780:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2783:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2773:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2773:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2773:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2730:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2741:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2756:3:64",
                                                    "type": "",
                                                    "value": "128"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2761:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2752:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2752:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2765:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "2748:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2748:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2737:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2737:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2727:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2727:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2720:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2720:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2717:70:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2796:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2806:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2796:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint128_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2574:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2585:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2597:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2527:290:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2903:103:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2949:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2958:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2961:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2951:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2951:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2951:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2924:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2933:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2920:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2920:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2945:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2916:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2916:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2913:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2974:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2990:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2984:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2984:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2974:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2869:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2880:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2892:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2822:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3118:91:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3128:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3140:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3151:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3136:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3136:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3128:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3170:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3185:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3193:8:64",
                                        "type": "",
                                        "value": "0xffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3181:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3181:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3163:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3163:40:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3163:40:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint24__to_t_uint24__fromStack_library_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3087:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3098:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3109:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3011:198:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3256:239:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3266:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3292:1:64",
                                    "type": "",
                                    "value": "2"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3295:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "signextend",
                                  "nodeType": "YulIdentifier",
                                  "src": "3281:10:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3281:20:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3270:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3347:111:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3368:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "3375:3:64",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "3380:10:64",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "3371:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3371:20:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3361:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3361:31:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3361:31:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3412:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3415:4:64",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3405:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3405:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3405:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3440:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3443:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3433:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3433:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3433:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3316:7:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3329:7:64",
                                        "type": "",
                                        "value": "8388607"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "3325:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3325:12:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "3313:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3313:25:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3310:148:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3467:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3478:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3481:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "3474:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3474:15:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "3467:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "negate_t_int24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3238:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "3248:3:64",
                            "type": ""
                          }
                        ],
                        "src": "3214:281:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3532:95:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3549:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3556:3:64",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3561:10:64",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "3552:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3552:20:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3542:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3542:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3542:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3589:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3592:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3582:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3582:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3582:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3613:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3616:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "3606:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3606:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3606:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "3500:127:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3677:86:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3741:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3750:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3753:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3743:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3743:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3743:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3700:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "3711:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3726:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3731:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3722:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3722:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3735:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "3718:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3718:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3707:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3707:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "3697:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3697:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3690:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3690:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3687:70:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3666:5:64",
                            "type": ""
                          }
                        ],
                        "src": "3632:131:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_contract_IMasterDeployer_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        validator_revert_address(value)\n    }\n    function abi_decode_uint24_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_uint24t_uint160t_uint24_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := abi_decode_uint24_fromMemory(add(headStart, 64))\n        let value_2 := mload(add(headStart, 96))\n        validator_revert_address(value_2)\n        value3 := value_2\n        value4 := abi_decode_uint24_fromMemory(add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_contract$_IMasterDeployer_$2356_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        let _5 := 0x20\n        if gt(add(add(_2, _3), _5), dataEnd) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _3) { i := add(i, _5) }\n        {\n            mstore(add(add(memPtr, i), _5), mload(add(add(_2, i), _5)))\n        }\n        if gt(i, _3)\n        {\n            mstore(add(add(memPtr, _3), _5), 0)\n        }\n        value0 := memPtr\n        value1 := abi_decode_contract_IMasterDeployer_fromMemory(add(headStart, _5))\n    }\n    function abi_decode_tuple_t_uint128_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(128, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_uint24__to_t_uint24__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffff))\n    }\n    function negate_t_int24(value) -> ret\n    {\n        let value_1 := signextend(2, value)\n        if eq(value_1, not(8388607))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        ret := sub(0, value_1)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {
                "contracts/libraries/concentratedPool/DyDxMath.sol": {
                  "DyDxMath": [
                    {
                      "length": 20,
                      "start": 8818
                    }
                  ]
                },
                "contracts/libraries/concentratedPool/Ticks.sol": {
                  "Ticks": [
                    {
                      "length": 20,
                      "start": 372
                    },
                    {
                      "length": 20,
                      "start": 8046
                    },
                    {
                      "length": 20,
                      "start": 9529
                    }
                  ]
                }
              },
              "object": "6101806040523480156200001257600080fd5b50604051620050c3380380620050c3833981016040819052620000359162000704565b6000806000806000868060200190518101906200005391906200068d565b9398509196509450925090506001600160a01b038516620000875760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038516301415620000b25760405163c1ab6dc160e01b815260040160405180910390fd5b6001600160a01b038416301415620000dd5760405163c1ab6dc160e01b815260040160405180910390fd5b620186a062ffffff84161115620001075760405163da7459b760e01b815260040160405180910390fd5b6001600160601b0319606086811b82166101405285901b16610160526001600160e81b031960e884811b821660a052600780546001600160a01b0386166001600160a01b031990911617905582901b16608052604051636e23d2e160e11b815262ffffff8216600482015273__$ce5bd159ffa25aa093db868fa3464622ad$__9063dc47a5c29060240160206040518083038186803b158015620001aa57600080fd5b505af4158015620001bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e59190620007f5565b60801b6001600160801b03191660c0908152604080519182019052620d89e719808252602082019062000218906200083a565b600290810b825260006020808401829052604080850183905260608086018490526080958601849052620d89e719938490526009835286517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebac8054898601518a8601516001600160801b0316660100000000000002600160301b600160b01b0319918a0b62ffffff90811663010000000265ffffffffffff1990941695909a0b90991693909317179190911695909517909455928501517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebad55928401517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebae5560a0909301517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebaf80546001600160a01b03929092166001600160a01b0319909216919091179055805160c0810190915282815291908201906200037a906200083a565b60020b815260200160006001600160801b03168152602001600081526020016000815260200160006001600160a01b031681525060096000620d89e719620003c2906200083a565b600290810b810b825260208083019390935260409182016000208451815486860151878601516001600160801b0316660100000000000002600160301b600160b01b031991860b62ffffff90811663010000000265ffffffffffff1990941694870b169390931791909117161781556060850151600182015560808501519181019190915560a090930151600390930180546001600160a01b039485166001600160a01b031990911617905560078054621e4ec360a31b62ffffff60a01b199091161790558051634da3182760e01b8152905192891692634da3182792600480840193919291829003018186803b158015620004bd57600080fd5b505afa158015620004d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f8919062000666565b6001600160a01b0316610100816001600160a01b031660601b81525050856001600160a01b0316630c0a0cd26040518163ffffffff1660e01b815260040160206040518083038186803b1580156200054f57600080fd5b505afa15801562000564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058a919062000666565b6001600160a01b031660e0816001600160a01b031660601b81525050856001600160a01b031663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b158015620005e057600080fd5b505afa158015620005f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061b919062000820565b600455505050505060601b6001600160601b031916610120525060016008556200089b565b80516200064d8162000882565b919050565b805162ffffff811681146200064d57600080fd5b6000602082840312156200067957600080fd5b8151620006868162000882565b9392505050565b600080600080600060a08688031215620006a657600080fd5b8551620006b38162000882565b6020870151909550620006c68162000882565b9350620006d66040870162000652565b92506060860151620006e88162000882565b9150620006f86080870162000652565b90509295509295909350565b600080604083850312156200071857600080fd5b82516001600160401b03808211156200073057600080fd5b818501915085601f8301126200074557600080fd5b8151818111156200075a576200075a6200086c565b604051601f8201601f19908116603f011681019083821181831017156200078557620007856200086c565b81604052828152602093508884848701011115620007a257600080fd5b600091505b82821015620007c65784820184015181830185015290830190620007a7565b82821115620007d85760008484830101525b9550620007ea91505085820162000640565b925050509250929050565b6000602082840312156200080857600080fd5b81516001600160801b03811681146200068657600080fd5b6000602082840312156200083357600080fd5b5051919050565b60008160020b627fffff198114156200086357634e487b7160e01b600052601160045260246000fd5b60000392915050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146200089857600080fd5b50565b60805160e81c60a05160e81c60c05160801c60e05160601c6101005160601c6101205160601c6101405160601c6101605160601c61467662000a4d6000396000818161059c01528181610e5e01528181610e8701528181610fb6015281816112ba015281816113cb015281816116b60152818161193d01528181611c8c01528181611e86015281816125180152818161312b0152818161381d01526139a101526000818161057401528181610ebe01528181610f5601528181610f7f015281816112510152818161136201528181611648015281816118c101528181611c0501528181611db0015281816123d101528181612fe80152818161371f01526138cd01526000818161054c0152612103015260008181610524015281816133310152818161340e01528181613763015281816138610152818161390a015281816139de0152613c080152600081816104fc01528181612405015261254c01526000818161046e01526136640152600081816104be0152610baa01526000818161049601528181610c4001528181610cce01528181613a1401528181613a7a01528181613ae80152613b4e01526146766000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80639da12096116100ee578063bcdb4dad11610097578063cf78756b11610071578063cf78756b146105db578063f30dba93146105e4578063fb39d628146106bb578063fb5d80b3146106ce57600080fd5b8063bcdb4dad14610457578063c14ad802146105ca578063caa4b46a146105d357600080fd5b8063aaca1b4d116100c8578063aaca1b4d146103ae578063acfe88f81461042f578063af8c09bf146101a857600080fd5b80639da120961461037e578063a69840a814610387578063a8f1f52e146101a857600080fd5b80636289db82116101505780637ba0e2e71161012a5780637ba0e2e7146103165780638c347f9b1461032957806392bc32191461037457600080fd5b80636289db821461029557806367e4ac2c146102b75780636d59d802146102cc57600080fd5b80632a07b6c7116101815780632a07b6c714610262578063499a3c50146101a8578063627dd56a1461028257600080fd5b8063053da1c8146101a85780630902f1ac146101ce5780631a68650214610225575b600080fd5b6101bb6101b6366004613d50565b610700565b6040519081526020015b60405180910390f35b6006546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004165b604080516fffffffffffffffffffffffffffffffff9384168152929091166020830152016101c5565b600054610241906fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020016101c5565b610275610270366004613d50565b610707565b6040516101c59190614195565b6101bb610290366004613dc2565b61070e565b6102a86102a3366004613f55565b611056565b6040516101c5939291906141a8565b6102bf611626565b6040516101c5919061413b565b6001546040805173ffffffffffffffffffffffffffffffffffffffff831681527401000000000000000000000000000000000000000090920463ffffffff166020830152016101c5565b6101bb610324366004613d50565b611725565b6007546040805173ffffffffffffffffffffffffffffffffffffffff8316815274010000000000000000000000000000000000000000909204600290810b900b6020830152016101c5565b61037c612101565b005b6101bb60025481565b6101bb7f54726964656e743a436f6e63656e7472617465644c697175696469747900000081565b6104016103bc366004613cb0565b600a6020908152600093845260408085208252928452828420905282529020805460018201546002909201546fffffffffffffffffffffffffffffffff909116919083565b604080516fffffffffffffffffffffffffffffffff90941684526020840192909252908201526060016101c5565b61044261043d366004613ecb565b6121a4565b604080519283526020830191909152016101c5565b604080516fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815262ffffff7f0000000000000000000000000000000000000000000000000000000000000000811660208301527f0000000000000000000000000000000000000000000000000000000000000000169181019190915273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660608301527f0000000000000000000000000000000000000000000000000000000000000000811660808301527f0000000000000000000000000000000000000000000000000000000000000000811660a08301527f0000000000000000000000000000000000000000000000000000000000000000811660c08301527f00000000000000000000000000000000000000000000000000000000000000001660e0820152610100016101c5565b6101bb60045481565b6101fc6122bd565b6101bb60035481565b61065a6105f2366004613e91565b60096020526000908152604090208054600182015460028084015460039094015483820b946301000000850490920b93660100000000000090046fffffffffffffffffffffffffffffffff1692919073ffffffffffffffffffffffffffffffffffffffff1686565b60408051600297880b81529590960b60208601526fffffffffffffffffffffffffffffffff909316948401949094526060830152608082019290925273ffffffffffffffffffffffffffffffffffffffff90911660a082015260c0016101c5565b6104426106c9366004613f04565b61257b565b6005546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004166101fc565b6000806000fd5b6060600080fd5b60006008546002141561074d576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026008819055506000806000808580602001905181019061076f9190613cfb565b93509350935093506000604051806101200160405280600081526020016000815260200160008152602001866107a7576002546107ab565b6003545b8152602001866107bd576003546107c1565b6002545b815260075473ffffffffffffffffffffffffffffffffffffffff1660208201526000546fffffffffffffffffffffffffffffffff166040820152606081018690526080018661084b57600754740100000000000000000000000000000000000000009004600290810b810b810b60009081526009602052604090205463010000009004900b61086a565b60075474010000000000000000000000000000000000000000900460020b5b60020b9052600154909150429074010000000000000000000000000000000000000000900463ffffffff168082039082148015906108bb57506000546fffffffffffffffffffffffffffffffff1615155b1561097c57600180547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8516021790556000546fffffffffffffffffffffffffffffffff16608082901b8161092e5761092e614571565b600180547fffffffffffffffffffffffff000000000000000000000000000000000000000081169390920473ffffffffffffffffffffffffffffffffffffffff928316019091169190911790555b50505b60e081015115610d0d576000610999826101000151612708565b73ffffffffffffffffffffffffffffffffffffffff1690506000808715610ae65760006109d18560c00151858760a001516000612a9b565b9050808560e0015111610aa657600060608660c00151901b90506000610a19828860a001518960e001518a60a00151610a0a91906143c0565b610a149086614320565b612af5565b9050808611158015610a2e57508660a0015181105b610a7957610a60828860e001518960a0015185610a4b91906143ac565b610a559190614320565b808204910615150190565b73ffffffffffffffffffffffffffffffffffffffff1690505b610a8e8760c00151828960a001516000612b51565b60a0880191909152600060e08801529350610ae09050565b610abb8560c00151858760a001516000612b51565b60a0860185905260e086018051919450600193508291610adc90839061445b565b9052505b50610ba4565b6000610afd8560c001518660a00151866000612b51565b9050808560e0015111610b68576000610b2c8660e001516c010000000000000000000000008860c00151612b96565b8660a00151610b3b9190614320565b9050610b528660c001518760a00151836000612a9b565b60a0870191909152600060e08701529250610ba2565b610b7d8560c001518660a00151866000612a9b565b60a0860185905260e086018051919450600193508291610b9e90839061445b565b9052505b505b610be6827f00000000000000000000000000000000000000000000000000000000000000006004548760c0015188602001518e8a604001518b60600151612c67565b60608801526040870152602086019190915298508015610d0557610c646009856101000151600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168760c00151886060015189608001518e7f0000000000000000000000000000000000000000000000000000000000000000612d0c565b600290810b900b61010086015260c08501819052610d0557610c8a846101000151612708565b73ffffffffffffffffffffffffffffffffffffffff90811660a086015261010085015160015460c087015160608801516080890151610cf29560099594169291908e7f0000000000000000000000000000000000000000000000000000000000000000612d0c565b600290810b900b61010086015260c08501525b50505061097f565b60a0810151600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055600085610d8057610100820151600290810b810b600090815260096020526040902054900b610d87565b8161010001515b90508060020b600760149054906101000a900460020b60020b14610e3557600780547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000062ffffff600285900b160217905560c0820151600080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9092169190911790555b610e40868689612fdb565b610e53868360600151846040015161321d565b8515610f5157610e857f00000000000000000000000000000000000000000000000000000000000000008886866132ca565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062888b604051610f44929190918252602082015260400190565b60405180910390a4611045565b610f7d7f00000000000000000000000000000000000000000000000000000000000000008886866132ca565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062888b60405161103c929190918252602082015260400190565b60405180910390a45b505060016008555092949350505050565b6060806000806000806110688b612708565b905060006110758b612708565b60075490915073ffffffffffffffffffffffffffffffffffffffff908116908316811180156110cf57508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b1561111857600080546fffffffffffffffffffffffffffffffff8082168e9003167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b61117a8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168e6fffffffffffffffffffffffffffffffff166000613472565b6fffffffffffffffffffffffffffffffff9182169650811694506f7fffffffffffffffffffffffffffffff908c16111592506111e5915050576040517f35278d1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806111fc338d8d6111f78e614494565b6134d0565b6040805160028082526060820190925291985092945090925090816020015b604080518082019091526000808252602082015281526020019060019003908161121b57905050965060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200185815250876000815181106112a2576112a26145a0565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001848152508760018151811061130b5761130b6145a0565b60209081029190910101526040805160028082526060820190925290816020015b604080518082019091526000808252602082015281526020019060019003908161132c57905050955060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200183815250866000815181106113b3576113b36145a0565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001828152508660018151811061141c5761141c6145a0565b60209081029190910101526006805493909101700100000000000000000000000000000000949092016fffffffffffffffffffffffffffffffff80851682900381167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090951685178690048116849003169094029092179091556114a2878383896136dc565b6007546040517f3c5474df0000000000000000000000000000000000000000000000000000000081526009600482015260028c810b60248301528b810b60448301526fffffffffffffffffffffffffffffffff8b16606483015274010000000000000000000000000000000000000000909204820b90910b608482015273__$ce5bd159ffa25aa093db868fa3464622ad$__90633c5474df9060a40160206040518083038186803b15801561155657600080fd5b505af415801561156a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158e9190613eae565b6007805460029290920b62ffffff1674010000000000000000000000000000000000000000027fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff909216919091179055604080518381526020810183905233917f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a910160405180910390a25050955095509592505050565b60408051600280825260608083018452926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061167a5761167a6145a0565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106116e8576116e86145a0565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b600060085460021415611764576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600855600061177783850185613fdb565b905060006117888260200151612708565b73ffffffffffffffffffffffffffffffffffffffff16905060006117af8360600151612708565b60075460a085015160808601516040517faec6cbfe0000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff9485166024820181905294909316604484018190526064840192909252608483015291925073__$df040e0a7bda43e0bcaf2b8c2beb7d11e8$__9063aec6cbfe9060a40160206040518083038186803b15801561185a57600080fd5b505af415801561186e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189291906140a2565b94506000806118b0866101000151876020015188606001518a6134d0565b5090925090508115611932576118ee7f00000000000000000000000000000000000000000000000000000000000000008388610100015160006132ca565b600680546fffffffffffffffffffffffffffffffff808216859003167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b80156119a25761196a7f00000000000000000000000000000000000000000000000000000000000000008288610100015160006132ca565b600680546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000808304821685900382160291161790555b505080831080156119b257508181105b156119fa57600080546fffffffffffffffffffffffffffffffff8082168801167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b611a0c84602001518560600151613a0f565b60028054600354600154875160208901516040808b015160608c015160075492517f33440084000000000000000000000000000000000000000000000000000000008152600960048201526024810198909852604488019690965273ffffffffffffffffffffffffffffffffffffffff948516606488015292870b608487015290860b60a486015290850b60c485015291840b60e48401526fffffffffffffffffffffffffffffffff891661010484015274010000000000000000000000000000000000000000909104830b90920b61012482015290821661014482015273__$ce5bd159ffa25aa093db868fa3464622ad$__906333440084906101640160206040518083038186803b158015611b2257600080fd5b505af4158015611b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5a9190613eae565b600760146101000a81548162ffffff021916908360020b62ffffff160217905550600080611b8c8585858a6001613472565b6040805160028082526060820190925292945090925060009190816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611bab57905050905060405180606001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018860c0015115158152602001846fffffffffffffffffffffffffffffffff1681525081600081518110611c7457611c746145a0565b602002602001018190525060405180606001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018860e0015115158152602001836fffffffffffffffffffffffffffffffff1681525081600181518110611cfb57611cfb6145a0565b60200260200101819052503373ffffffffffffffffffffffffffffffffffffffff1663ced10b4982604051602001611d3391906141de565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401611d5e919061424f565b600060405180830381600087803b158015611d7857600080fd5b505af1158015611d8c573d6000803e3d6000fd5b5050505050816fffffffffffffffffffffffffffffffff16600014611e6957611dd47f0000000000000000000000000000000000000000000000000000000000000000613bba565b6006546fffffffffffffffffffffffffffffffff9081168401161115611e26576040517f840463aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546fffffffffffffffffffffffffffffffff8082168501167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b6fffffffffffffffffffffffffffffffff811615611f4757611eaa7f0000000000000000000000000000000000000000000000000000000000000000613bba565b6006546fffffffffffffffffffffffffffffffff70010000000000000000000000000000000090910481168301161115611f10576040517fe430204200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216850182160291161790555b600080611f5c886020015189606001516121a4565b6101208a0151919350915073ffffffffffffffffffffffffffffffffffffffff16156120825761010088015161012089015160208a015160608b01516101408c01516040517f6d59ebe100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485166004820152600293840b60248201529190920b60448201526fffffffffffffffffffffffffffffffff8d1660648201526084810186905260a4810185905260c4810191909152911690636d59ebe19060e401602060405180830381600087803b15801561204857600080fd5b505af115801561205c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208091906140a2565b505b610100880151604080516fffffffffffffffffffffffffffffffff80881682528616602082015273ffffffffffffffffffffffffffffffffffffffff909216917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a2505060016008555094979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b15801561216757600080fd5b505afa15801561217b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219f91906140a2565b600455565b600754600283810b80820b60009081526009602052604080822086850b850b835290822084546003549396879674010000000000000000000000000000000000000000909104810b95939492939192918791829182918291908a900b1261221857876001015493508760020154925061223c565b6001880154612227908761445b565b9350876002015485612239919061445b565b92505b8b60020b8960020b121561225b5750506001850154600286015461227f565b600187015461226a908761445b565b915086600201548561227c919061445b565b90505b8161228a858861445b565b612294919061445b565b9a50806122a1848761445b565b6122ab919061445b565b99505050505050505050509250929050565b600080600854600214156122fd576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260085560055460016fffffffffffffffffffffffffffffffff909116111561242b57600554612342906001906fffffffffffffffffffffffffffffffff166143fd565b600580547fffffffffffffffffffffffffffffffff000000000000000000000000000000001660011790556006805491935083916000906123969084906fffffffffffffffffffffffffffffffff166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555061242b7f0000000000000000000000000000000000000000000000000000000000000000836fffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000060006132ca565b60055460017001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115612572576005546124929060019070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166143fd565b600580547001000000000000000000000000000000006fffffffffffffffffffffffffffffffff918216811790925560068054939450849390926010926124dd9286929004166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506125727f0000000000000000000000000000000000000000000000000000000000000000826fffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000060006132ca565b60016008559091565b600080600854600214156125bb576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026008556125cd33878760006134d0565b5090925090506125df848383866136dc565b600680548391906000906126069084906fffffffffffffffffffffffffffffffff166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080600660108282829054906101000a90046fffffffffffffffffffffffffffffffff1661266991906143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f4a1c185b7b5da020829d63d69222d8602aa53a6b7800a73ee6e3e15a625d863d83836040516126f0929190918252602082015260400190565b60405180910390a26001600855909590945092505050565b60008060008360020b1261271f578260020b61272c565b8260020b61272c90614509565b90506127577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186144d3565b62ffffff16811115612795576040517ff87dc40c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600182166127b6577001000000000000000000000000000000006127c8565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156127fc576ffff97272373d413259a46990580e213a0260801c5b600482161561281b576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561283a576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612859576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612878576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612897576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156128b6576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156128d6576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156128f6576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612916576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612936576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612956576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612976576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612996576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156129b6576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156129d7576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156129f7576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612a16576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612a33576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612a7257807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81612a6e57612a6e614571565b0490505b640100000000810615612a86576001612a89565b60005b60ff16602082901c0192505050919050565b60008115612aca57612ac3612ab7606087901b86860386612af5565b85808204910615150190565b9050612aed565b83612adc606087901b86860386612b96565b81612ae957612ae9614571565b0490505b949350505050565b6000612b02848484612b96565b90508180612b1257612b12614571565b83850915612b4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110612b4657600080fd5b6001015b9392505050565b60008115612b7357612ac3858585036c01000000000000000000000000612af5565b612b8d858585036c01000000000000000000000000612b96565b95945050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8587098587029250828110838203039150508060001415612bee5760008411612be357600080fd5b508290049050612b4a565b808411612bfa57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000806000806000612c828d8d62ffffff16620f4240612af5565b9050612c8e818a614320565b9850612c9a818e61445b565b612ca49089614320565b97506000612cb5828d612710612af5565b9050612cc18189614320565b9750612ccd818361445b565b9150612ceb827001000000000000000000000000000000008d612b96565b612cf59088614320565b999e989d50969b5097995095975050505050505050565b600287810b900b6000908152602089905260408120600301548190612d479073ffffffffffffffffffffffffffffffffffffffff168961442e565b60028a810b900b600090815260208c90526040902060030180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790558315612eb9576002612db4848b614338565b612dbe9190614472565b60020b612e0857600289810b900b600090815260208b90526040902054612e0190660100000000000090046fffffffffffffffffffffffffffffffff168861445b565b9650612e47565b600289810b900b600090815260208b90526040902054612e4490660100000000000090046fffffffffffffffffffffffffffffffff1688614320565b96505b600289810b900b600090815260208b90526040902060010154612e6a908661445b565b60028a810b810b600090815260208d90526040902060018101929092550154612e93908761445b565b6002998a0b8a0b600090815260208c905260409020808b01919091555490980b97612fcd565b6002612ec5848b614338565b612ecf9190614472565b60020b612f1957600289810b900b600090815260208b90526040902054612f1290660100000000000090046fffffffffffffffffffffffffffffffff1688614320565b9650612f58565b600289810b900b600090815260208b90526040902054612f5590660100000000000090046fffffffffffffffffffffffffffffffff168861445b565b96505b600289810b810b600090815260208c9052604090200154612f79908661445b565b60028a810b810b600090815260208d9052604090209081019190915560010154612fa3908761445b565b6002998a0b8a0b600090815260208c9052604090206001810191909155546301000000900490980b975b509498969750505050505050565b821561312457600061300c7f0000000000000000000000000000000000000000000000000000000000000000613bba565b6006549091506000906130329085906fffffffffffffffffffffffffffffffff166142ec565b905081816fffffffffffffffffffffffffffffffff161115613080576040517f840463aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff838116919091178083558592916010916130e79185917001000000000000000000000000000000009004166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505050505050565b600061314f7f0000000000000000000000000000000000000000000000000000000000000000613bba565b60065490915060009061318990859070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166142ec565b905081816fffffffffffffffffffffffffffffffff1611156131d7576040517fe430204200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000008483160281811784558693926000926130e792869216176143fd565b821561329e5760038290556005805482919060109061326390849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166142ec565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550505050565b6002829055600580548291906000906132639084906fffffffffffffffffffffffffffffffff166142ec565b80156133b4576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152306024830152838116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4015b6040805180830381600087803b15801561337557600080fd5b505af1158015613389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ad91906140bb565b505061346c565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301528381166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc906084015b600060405180830381600087803b15801561345357600080fd5b505af1158015613467573d6000803e3d6000fd5b505050505b50505050565b60008084861161348f5761348884888886612b51565b90506134c6565b8685116134a9576134a284888886612a9b565b91506134c6565b6134b584868886612a9b565b91506134c384888786612b51565b90505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a60209081526040808320600287810b810b855290835281842086820b90910b8452909152812081908190818061352489896121a4565b9150915061356683600101548361353b919061445b565b84546fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000612b96565b955061357b83600201548261353b919061445b565b83549095506fffffffffffffffffffffffffffffffff1693506000600f88900b1215613605576135aa87614494565b835484906000906135ce9084906fffffffffffffffffffffffffffffffff166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b600087600f0b13156136c1578254879084906000906136379084906fffffffffffffffffffffffffffffffff166142ec565b82546101009290920a6fffffffffffffffffffffffffffffffff81810219909316918316021790915584547f000000000000000000000000000000000000000000000000000000000000000082169116111590506136c1576040517fb03425ae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018301919091556002909101559196909550909350915050565b8015613890576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152858116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b1580156137a657600080fd5b505af11580156137ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137de91906140bb565b50506040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152858116604483015260006064830152608482018490527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a40161335c565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301528581166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401600060405180830381600087803b15801561394e57600080fd5b505af1158015613962573d6000803e3d6000fd5b50506040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301528781166044830152606482018690527f000000000000000000000000000000000000000000000000000000000000000016925063f18d03cc9150608401613439565b613a397f000000000000000000000000000000000000000000000000000000000000000083614472565b60020b15613a73576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002613a9f7f000000000000000000000000000000000000000000000000000000000000000084614338565b613aa99190614472565b60020b15613ae3576040517ffdf1420200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613b0d7f000000000000000000000000000000000000000000000000000000000000000082614472565b60020b15613b47576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002613b737f000000000000000000000000000000000000000000000000000000000000000083614338565b613b7d9190614472565b60020b613bb6576040517fa9778c6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301523060248301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b158015613c4c57600080fd5b505afa158015613c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c8491906140a2565b92915050565b8035613c95816145fe565b919050565b8035613c9581614623565b8035613c9581614631565b600080600060608486031215613cc557600080fd5b8335613cd0816145fe565b92506020840135613ce081614631565b91506040840135613cf081614631565b809150509250925092565b60008060008060808587031215613d1157600080fd5b8451613d1c81614623565b602086015160408701519195509350613d34816145fe565b6060860151909250613d4581614623565b939692955090935050565b60008060208385031215613d6357600080fd5b823567ffffffffffffffff80821115613d7b57600080fd5b818501915085601f830112613d8f57600080fd5b813581811115613d9e57600080fd5b866020828501011115613db057600080fd5b60209290920196919550909350505050565b600060208284031215613dd457600080fd5b813567ffffffffffffffff80821115613dec57600080fd5b818401915084601f830112613e0057600080fd5b813581811115613e1257613e126145cf565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715613e5857613e586145cf565b81604052828152876020848701011115613e7157600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208284031215613ea357600080fd5b8135612b4a81614631565b600060208284031215613ec057600080fd5b8151612b4a81614631565b60008060408385031215613ede57600080fd5b8235613ee981614631565b91506020830135613ef981614631565b809150509250929050565b60008060008060808587031215613f1a57600080fd5b8435613f2581614631565b93506020850135613f3581614631565b92506040850135613f45816145fe565b91506060850135613d4581614623565b600080600080600060a08688031215613f6d57600080fd5b8535613f7881614631565b94506020860135613f8881614631565b935060408601356fffffffffffffffffffffffffffffffff81168114613fad57600080fd5b92506060860135613fbd816145fe565b91506080860135613fcd81614623565b809150509295509295909350565b60006101608284031215613fee57600080fd5b613ff66142c2565b613fff83613ca5565b815261400d60208401613ca5565b602082015261401e60408401613ca5565b604082015261402f60608401613ca5565b60608201526080830135608082015260a083013560a082015261405460c08401613c9a565b60c082015261406560e08401613c9a565b60e0820152610100614078818501613c8a565b9082015261012061408a848201613c8a565b90820152610140928301359281019290925250919050565b6000602082840312156140b457600080fd5b5051919050565b600080604083850312156140ce57600080fd5b505080516020909101519092909150565b600081518084526020808501945080840160005b83811015614130578151805173ffffffffffffffffffffffffffffffffffffffff16885283015183880152604090960195908201906001016140f3565b509495945050505050565b6020808252825182820181905260009190848201906040850190845b8181101561418957835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101614157565b50909695505050505050565b602081526000612b4a60208301846140df565b6060815260006141bb60608301866140df565b82810360208401526141cd81866140df565b915050826040830152949350505050565b602080825282518282018190526000919060409081850190868401855b82811015614242578151805173ffffffffffffffffffffffffffffffffffffffff1685528681015115158786015285015185850152606090930192908501906001016141fb565b5091979650505050505050565b600060208083528351808285015260005b8181101561427c57858101830151858201604001528201614260565b8181111561428e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b604051610160810167ffffffffffffffff811182821017156142e6576142e66145cf565b60405290565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561431757614317614542565b01949350505050565b6000821982111561433357614333614542565b500190565b60008160020b8360020b8061434f5761434f614571565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000831416156143a3576143a3614542565b90059392505050565b6000826143bb576143bb614571565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143f8576143f8614542565b500290565b60006fffffffffffffffffffffffffffffffff8381169083168181101561442657614426614542565b039392505050565b600073ffffffffffffffffffffffffffffffffffffffff8381169083168181101561442657614426614542565b60008282101561446d5761446d614542565b500390565b60008260020b8061448557614485614571565b808360020b0791505092915050565b600081600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114156144ca576144ca614542565b60000392915050565b60008160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008114156144ca576144ca614542565b60007f800000000000000000000000000000000000000000000000000000000000000082141561453b5761453b614542565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461462057600080fd5b50565b801515811461462057600080fd5b8060020b811461462057600080fdfea2646970667358221220b5f4ddca6d99127e73ff19f59eccaed3901aa2bb1db06cd142170afc64577eb564736f6c63430008070033",
              "opcodes": "PUSH2 0x180 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x50C3 CODESIZE SUB DUP1 PUSH3 0x50C3 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x704 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x53 SWAP2 SWAP1 PUSH3 0x68D JUMP JUMPDEST SWAP4 SWAP9 POP SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH3 0x87 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ ISZERO PUSH3 0xB2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xC1AB6DC1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ ISZERO PUSH3 0xDD JUMPI PUSH1 0x40 MLOAD PUSH4 0xC1AB6DC1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x186A0 PUSH3 0xFFFFFF DUP5 AND GT ISZERO PUSH3 0x107 JUMPI PUSH1 0x40 MLOAD PUSH4 0xDA7459B7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP7 DUP2 SHL DUP3 AND PUSH2 0x140 MSTORE DUP6 SWAP1 SHL AND PUSH2 0x160 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE8 SHL SUB NOT PUSH1 0xE8 DUP5 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE DUP3 SWAP1 SHL AND PUSH1 0x80 MSTORE PUSH1 0x40 MLOAD PUSH4 0x6E23D2E1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH3 0xFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0x0 SWAP1 PUSH4 0xDC47A5C2 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x1BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1E5 SWAP2 SWAP1 PUSH3 0x7F5 JUMP JUMPDEST PUSH1 0x80 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0xC0 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 ADD SWAP1 MSTORE PUSH3 0xD89E7 NOT DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 PUSH3 0x218 SWAP1 PUSH3 0x83A JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP6 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP7 ADD DUP5 SWAP1 MSTORE PUSH1 0x80 SWAP6 DUP7 ADD DUP5 SWAP1 MSTORE PUSH3 0xD89E7 NOT SWAP4 DUP5 SWAP1 MSTORE PUSH1 0x9 DUP4 MSTORE DUP7 MLOAD PUSH32 0xCAFB9BD5A090B85CDC01F1FE9E79CCE261755DC1BFDD255E0D8DF8829987EBAC DUP1 SLOAD DUP10 DUP7 ADD MLOAD DUP11 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH7 0x1000000000000 MUL PUSH1 0x1 PUSH1 0x30 SHL PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT SWAP2 DUP11 SIGNEXTEND PUSH3 0xFFFFFF SWAP1 DUP2 AND PUSH4 0x1000000 MUL PUSH6 0xFFFFFFFFFFFF NOT SWAP1 SWAP5 AND SWAP6 SWAP1 SWAP11 SIGNEXTEND SWAP1 SWAP10 AND SWAP4 SWAP1 SWAP4 OR OR SWAP2 SWAP1 SWAP2 AND SWAP6 SWAP1 SWAP6 OR SWAP1 SWAP5 SSTORE SWAP3 DUP6 ADD MLOAD PUSH32 0xCAFB9BD5A090B85CDC01F1FE9E79CCE261755DC1BFDD255E0D8DF8829987EBAD SSTORE SWAP3 DUP5 ADD MLOAD PUSH32 0xCAFB9BD5A090B85CDC01F1FE9E79CCE261755DC1BFDD255E0D8DF8829987EBAE SSTORE PUSH1 0xA0 SWAP1 SWAP4 ADD MLOAD PUSH32 0xCAFB9BD5A090B85CDC01F1FE9E79CCE261755DC1BFDD255E0D8DF8829987EBAF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 MLOAD PUSH1 0xC0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP3 DUP2 MSTORE SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH3 0x37A SWAP1 PUSH3 0x83A JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH1 0x9 PUSH1 0x0 PUSH3 0xD89E7 NOT PUSH3 0x3C2 SWAP1 PUSH3 0x83A JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 KECCAK256 DUP5 MLOAD DUP2 SLOAD DUP7 DUP7 ADD MLOAD DUP8 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH7 0x1000000000000 MUL PUSH1 0x1 PUSH1 0x30 SHL PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT SWAP2 DUP7 SIGNEXTEND PUSH3 0xFFFFFF SWAP1 DUP2 AND PUSH4 0x1000000 MUL PUSH6 0xFFFFFFFFFFFF NOT SWAP1 SWAP5 AND SWAP5 DUP8 SIGNEXTEND AND SWAP4 SWAP1 SWAP4 OR SWAP2 SWAP1 SWAP2 OR AND OR DUP2 SSTORE PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x80 DUP6 ADD MLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0xA0 SWAP1 SWAP4 ADD MLOAD PUSH1 0x3 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH1 0x7 DUP1 SLOAD PUSH3 0x1E4EC3 PUSH1 0xA3 SHL PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE DUP1 MLOAD PUSH4 0x4DA31827 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 DUP10 AND SWAP3 PUSH4 0x4DA31827 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x4D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x4F8 SWAP2 SWAP1 PUSH3 0x666 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x100 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0A0CD2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x54F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x564 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x58A SWAP2 SWAP1 PUSH3 0x666 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xE0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x5E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x5F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x61B SWAP2 SWAP1 PUSH3 0x820 JUMP JUMPDEST PUSH1 0x4 SSTORE POP POP POP POP POP PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x120 MSTORE POP PUSH1 0x1 PUSH1 0x8 SSTORE PUSH3 0x89B JUMP JUMPDEST DUP1 MLOAD PUSH3 0x64D DUP2 PUSH3 0x882 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH3 0x64D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x686 DUP2 PUSH3 0x882 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x6A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 MLOAD PUSH3 0x6B3 DUP2 PUSH3 0x882 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD SWAP1 SWAP6 POP PUSH3 0x6C6 DUP2 PUSH3 0x882 JUMP JUMPDEST SWAP4 POP PUSH3 0x6D6 PUSH1 0x40 DUP8 ADD PUSH3 0x652 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD MLOAD PUSH3 0x6E8 DUP2 PUSH3 0x882 JUMP JUMPDEST SWAP2 POP PUSH3 0x6F8 PUSH1 0x80 DUP8 ADD PUSH3 0x652 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x730 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x75A JUMPI PUSH3 0x75A PUSH3 0x86C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x785 JUMPI PUSH3 0x785 PUSH3 0x86C JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE PUSH1 0x20 SWAP4 POP DUP9 DUP5 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x7A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP3 DUP3 LT ISZERO PUSH3 0x7C6 JUMPI DUP5 DUP3 ADD DUP5 ADD MLOAD DUP2 DUP4 ADD DUP6 ADD MSTORE SWAP1 DUP4 ADD SWAP1 PUSH3 0x7A7 JUMP JUMPDEST DUP3 DUP3 GT ISZERO PUSH3 0x7D8 JUMPI PUSH1 0x0 DUP5 DUP5 DUP4 ADD ADD MSTORE JUMPDEST SWAP6 POP PUSH3 0x7EA SWAP2 POP POP DUP6 DUP3 ADD PUSH3 0x640 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x808 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x686 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x833 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND PUSH3 0x7FFFFF NOT DUP2 EQ ISZERO PUSH3 0x863 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xE8 SHR PUSH1 0xA0 MLOAD PUSH1 0xE8 SHR PUSH1 0xC0 MLOAD PUSH1 0x80 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x160 MLOAD PUSH1 0x60 SHR PUSH2 0x4676 PUSH3 0xA4D PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x59C ADD MSTORE DUP2 DUP2 PUSH2 0xE5E ADD MSTORE DUP2 DUP2 PUSH2 0xE87 ADD MSTORE DUP2 DUP2 PUSH2 0xFB6 ADD MSTORE DUP2 DUP2 PUSH2 0x12BA ADD MSTORE DUP2 DUP2 PUSH2 0x13CB ADD MSTORE DUP2 DUP2 PUSH2 0x16B6 ADD MSTORE DUP2 DUP2 PUSH2 0x193D ADD MSTORE DUP2 DUP2 PUSH2 0x1C8C ADD MSTORE DUP2 DUP2 PUSH2 0x1E86 ADD MSTORE DUP2 DUP2 PUSH2 0x2518 ADD MSTORE DUP2 DUP2 PUSH2 0x312B ADD MSTORE DUP2 DUP2 PUSH2 0x381D ADD MSTORE PUSH2 0x39A1 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x574 ADD MSTORE DUP2 DUP2 PUSH2 0xEBE ADD MSTORE DUP2 DUP2 PUSH2 0xF56 ADD MSTORE DUP2 DUP2 PUSH2 0xF7F ADD MSTORE DUP2 DUP2 PUSH2 0x1251 ADD MSTORE DUP2 DUP2 PUSH2 0x1362 ADD MSTORE DUP2 DUP2 PUSH2 0x1648 ADD MSTORE DUP2 DUP2 PUSH2 0x18C1 ADD MSTORE DUP2 DUP2 PUSH2 0x1C05 ADD MSTORE DUP2 DUP2 PUSH2 0x1DB0 ADD MSTORE DUP2 DUP2 PUSH2 0x23D1 ADD MSTORE DUP2 DUP2 PUSH2 0x2FE8 ADD MSTORE DUP2 DUP2 PUSH2 0x371F ADD MSTORE PUSH2 0x38CD ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x54C ADD MSTORE PUSH2 0x2103 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x524 ADD MSTORE DUP2 DUP2 PUSH2 0x3331 ADD MSTORE DUP2 DUP2 PUSH2 0x340E ADD MSTORE DUP2 DUP2 PUSH2 0x3763 ADD MSTORE DUP2 DUP2 PUSH2 0x3861 ADD MSTORE DUP2 DUP2 PUSH2 0x390A ADD MSTORE DUP2 DUP2 PUSH2 0x39DE ADD MSTORE PUSH2 0x3C08 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x4FC ADD MSTORE DUP2 DUP2 PUSH2 0x2405 ADD MSTORE PUSH2 0x254C ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x46E ADD MSTORE PUSH2 0x3664 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x4BE ADD MSTORE PUSH2 0xBAA ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x496 ADD MSTORE DUP2 DUP2 PUSH2 0xC40 ADD MSTORE DUP2 DUP2 PUSH2 0xCCE ADD MSTORE DUP2 DUP2 PUSH2 0x3A14 ADD MSTORE DUP2 DUP2 PUSH2 0x3A7A ADD MSTORE DUP2 DUP2 PUSH2 0x3AE8 ADD MSTORE PUSH2 0x3B4E ADD MSTORE PUSH2 0x4676 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1A3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9DA12096 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0xBCDB4DAD GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xCF78756B GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xCF78756B EQ PUSH2 0x5DB JUMPI DUP1 PUSH4 0xF30DBA93 EQ PUSH2 0x5E4 JUMPI DUP1 PUSH4 0xFB39D628 EQ PUSH2 0x6BB JUMPI DUP1 PUSH4 0xFB5D80B3 EQ PUSH2 0x6CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBCDB4DAD EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x5CA JUMPI DUP1 PUSH4 0xCAA4B46A EQ PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xAACA1B4D GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0xAACA1B4D EQ PUSH2 0x3AE JUMPI DUP1 PUSH4 0xACFE88F8 EQ PUSH2 0x42F JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9DA12096 EQ PUSH2 0x37E JUMPI DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x387 JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6289DB82 GT PUSH2 0x150 JUMPI DUP1 PUSH4 0x7BA0E2E7 GT PUSH2 0x12A JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x316 JUMPI DUP1 PUSH4 0x8C347F9B EQ PUSH2 0x329 JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6289DB82 EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0x6D59D802 EQ PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x181 JUMPI DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x627DD56A EQ PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0x1A686502 EQ PUSH2 0x225 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1BB PUSH2 0x1B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D50 JUMP JUMPDEST PUSH2 0x700 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x241 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x275 PUSH2 0x270 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D50 JUMP JUMPDEST PUSH2 0x707 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C5 SWAP2 SWAP1 PUSH2 0x4195 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x290 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DC2 JUMP JUMPDEST PUSH2 0x70E JUMP JUMPDEST PUSH2 0x2A8 PUSH2 0x2A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F55 JUMP JUMPDEST PUSH2 0x1056 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x41A8 JUMP JUMPDEST PUSH2 0x2BF PUSH2 0x1626 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C5 SWAP2 SWAP1 PUSH2 0x413B JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV PUSH4 0xFFFFFFFF AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x324 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D50 JUMP JUMPDEST PUSH2 0x1725 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x37C PUSH2 0x2101 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BB PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1BB PUSH32 0x54726964656E743A436F6E63656E7472617465644C6971756964697479000000 DUP2 JUMP JUMPDEST PUSH2 0x401 PUSH2 0x3BC CALLDATASIZE PUSH1 0x4 PUSH2 0x3CB0 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x442 PUSH2 0x43D CALLDATASIZE PUSH1 0x4 PUSH2 0x3ECB JUMP JUMPDEST PUSH2 0x21A4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE PUSH3 0xFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0xC0 DUP4 ADD MSTORE PUSH32 0x0 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x1BB PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1FC PUSH2 0x22BD JUMP JUMPDEST PUSH2 0x1BB PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x65A PUSH2 0x5F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E91 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP1 DUP5 ADD SLOAD PUSH1 0x3 SWAP1 SWAP5 ADD SLOAD DUP4 DUP3 SIGNEXTEND SWAP5 PUSH4 0x1000000 DUP6 DIV SWAP1 SWAP3 SIGNEXTEND SWAP4 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP8 DUP9 SIGNEXTEND DUP2 MSTORE SWAP6 SWAP1 SWAP7 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x442 PUSH2 0x6C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F04 JUMP JUMPDEST PUSH2 0x257B JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND PUSH2 0x1FC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x74D JUMPI PUSH1 0x40 MLOAD PUSH32 0xF2E5B6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP6 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x76F SWAP2 SWAP1 PUSH2 0x3CFB JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH2 0x7A7 JUMPI PUSH1 0x2 SLOAD PUSH2 0x7AB JUMP JUMPDEST PUSH1 0x3 SLOAD JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH2 0x7BD JUMPI PUSH1 0x3 SLOAD PUSH2 0x7C1 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST DUP2 MSTORE PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 ADD DUP7 PUSH2 0x84B JUMPI PUSH1 0x7 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0x1000000 SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x86A JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0x2 SIGNEXTEND JUMPDEST PUSH1 0x2 SIGNEXTEND SWAP1 MSTORE PUSH1 0x1 SLOAD SWAP1 SWAP2 POP TIMESTAMP SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 DUP3 SUB SWAP1 DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0x8BB JUMPI POP PUSH1 0x0 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x97C JUMPI PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF DUP6 AND MUL OR SWAP1 SSTORE PUSH1 0x0 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP3 SWAP1 SHL DUP2 PUSH2 0x92E JUMPI PUSH2 0x92E PUSH2 0x4571 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP2 AND SWAP4 SWAP1 SWAP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND ADD SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST POP POP JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD ISZERO PUSH2 0xD0D JUMPI PUSH1 0x0 PUSH2 0x999 DUP3 PUSH2 0x100 ADD MLOAD PUSH2 0x2708 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP1 DUP8 ISZERO PUSH2 0xAE6 JUMPI PUSH1 0x0 PUSH2 0x9D1 DUP6 PUSH1 0xC0 ADD MLOAD DUP6 DUP8 PUSH1 0xA0 ADD MLOAD PUSH1 0x0 PUSH2 0x2A9B JUMP JUMPDEST SWAP1 POP DUP1 DUP6 PUSH1 0xE0 ADD MLOAD GT PUSH2 0xAA6 JUMPI PUSH1 0x0 PUSH1 0x60 DUP7 PUSH1 0xC0 ADD MLOAD SWAP1 SHL SWAP1 POP PUSH1 0x0 PUSH2 0xA19 DUP3 DUP9 PUSH1 0xA0 ADD MLOAD DUP10 PUSH1 0xE0 ADD MLOAD DUP11 PUSH1 0xA0 ADD MLOAD PUSH2 0xA0A SWAP2 SWAP1 PUSH2 0x43C0 JUMP JUMPDEST PUSH2 0xA14 SWAP1 DUP7 PUSH2 0x4320 JUMP JUMPDEST PUSH2 0x2AF5 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 GT ISZERO DUP1 ISZERO PUSH2 0xA2E JUMPI POP DUP7 PUSH1 0xA0 ADD MLOAD DUP2 LT JUMPDEST PUSH2 0xA79 JUMPI PUSH2 0xA60 DUP3 DUP9 PUSH1 0xE0 ADD MLOAD DUP10 PUSH1 0xA0 ADD MLOAD DUP6 PUSH2 0xA4B SWAP2 SWAP1 PUSH2 0x43AC JUMP JUMPDEST PUSH2 0xA55 SWAP2 SWAP1 PUSH2 0x4320 JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP JUMPDEST PUSH2 0xA8E DUP8 PUSH1 0xC0 ADD MLOAD DUP3 DUP10 PUSH1 0xA0 ADD MLOAD PUSH1 0x0 PUSH2 0x2B51 JUMP JUMPDEST PUSH1 0xA0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 PUSH1 0xE0 DUP9 ADD MSTORE SWAP4 POP PUSH2 0xAE0 SWAP1 POP JUMP JUMPDEST PUSH2 0xABB DUP6 PUSH1 0xC0 ADD MLOAD DUP6 DUP8 PUSH1 0xA0 ADD MLOAD PUSH1 0x0 PUSH2 0x2B51 JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD DUP6 SWAP1 MSTORE PUSH1 0xE0 DUP7 ADD DUP1 MLOAD SWAP2 SWAP5 POP PUSH1 0x1 SWAP4 POP DUP3 SWAP2 PUSH2 0xADC SWAP1 DUP4 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP1 MSTORE POP JUMPDEST POP PUSH2 0xBA4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAFD DUP6 PUSH1 0xC0 ADD MLOAD DUP7 PUSH1 0xA0 ADD MLOAD DUP7 PUSH1 0x0 PUSH2 0x2B51 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 PUSH1 0xE0 ADD MLOAD GT PUSH2 0xB68 JUMPI PUSH1 0x0 PUSH2 0xB2C DUP7 PUSH1 0xE0 ADD MLOAD PUSH13 0x1000000000000000000000000 DUP9 PUSH1 0xC0 ADD MLOAD PUSH2 0x2B96 JUMP JUMPDEST DUP7 PUSH1 0xA0 ADD MLOAD PUSH2 0xB3B SWAP2 SWAP1 PUSH2 0x4320 JUMP JUMPDEST SWAP1 POP PUSH2 0xB52 DUP7 PUSH1 0xC0 ADD MLOAD DUP8 PUSH1 0xA0 ADD MLOAD DUP4 PUSH1 0x0 PUSH2 0x2A9B JUMP JUMPDEST PUSH1 0xA0 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 PUSH1 0xE0 DUP8 ADD MSTORE SWAP3 POP PUSH2 0xBA2 JUMP JUMPDEST PUSH2 0xB7D DUP6 PUSH1 0xC0 ADD MLOAD DUP7 PUSH1 0xA0 ADD MLOAD DUP7 PUSH1 0x0 PUSH2 0x2A9B JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD DUP6 SWAP1 MSTORE PUSH1 0xE0 DUP7 ADD DUP1 MLOAD SWAP2 SWAP5 POP PUSH1 0x1 SWAP4 POP DUP3 SWAP2 PUSH2 0xB9E SWAP1 DUP4 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP1 MSTORE POP JUMPDEST POP JUMPDEST PUSH2 0xBE6 DUP3 PUSH32 0x0 PUSH1 0x4 SLOAD DUP8 PUSH1 0xC0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP15 DUP11 PUSH1 0x40 ADD MLOAD DUP12 PUSH1 0x60 ADD MLOAD PUSH2 0x2C67 JUMP JUMPDEST PUSH1 0x60 DUP9 ADD MSTORE PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x20 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP9 POP DUP1 ISZERO PUSH2 0xD05 JUMPI PUSH2 0xC64 PUSH1 0x9 DUP6 PUSH2 0x100 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH1 0xC0 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD DUP15 PUSH32 0x0 PUSH2 0x2D0C JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH2 0x100 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD DUP2 SWAP1 MSTORE PUSH2 0xD05 JUMPI PUSH2 0xC8A DUP5 PUSH2 0x100 ADD MLOAD PUSH2 0x2708 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0xA0 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD MLOAD PUSH1 0x1 SLOAD PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x80 DUP10 ADD MLOAD PUSH2 0xCF2 SWAP6 PUSH1 0x9 SWAP6 SWAP5 AND SWAP3 SWAP2 SWAP1 DUP15 PUSH32 0x0 PUSH2 0x2D0C JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH2 0x100 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD MSTORE JUMPDEST POP POP POP PUSH2 0x97F JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x0 DUP6 PUSH2 0xD80 JUMPI PUSH2 0x100 DUP3 ADD MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SIGNEXTEND PUSH2 0xD87 JUMP JUMPDEST DUP2 PUSH2 0x100 ADD MLOAD JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 SIGNEXTEND PUSH1 0x7 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x2 SIGNEXTEND PUSH1 0x2 SIGNEXTEND EQ PUSH2 0xE35 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 PUSH3 0xFFFFFF PUSH1 0x2 DUP6 SWAP1 SIGNEXTEND AND MUL OR SWAP1 SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH2 0xE40 DUP7 DUP7 DUP10 PUSH2 0x2FDB JUMP JUMPDEST PUSH2 0xE53 DUP7 DUP4 PUSH1 0x60 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD PUSH2 0x321D JUMP JUMPDEST DUP6 ISZERO PUSH2 0xF51 JUMPI PUSH2 0xE85 PUSH32 0x0 DUP9 DUP7 DUP7 PUSH2 0x32CA JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP9 DUP12 PUSH1 0x40 MLOAD PUSH2 0xF44 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1045 JUMP JUMPDEST PUSH2 0xF7D PUSH32 0x0 DUP9 DUP7 DUP7 PUSH2 0x32CA JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP9 DUP12 PUSH1 0x40 MLOAD PUSH2 0x103C SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP3 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1068 DUP12 PUSH2 0x2708 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1075 DUP12 PUSH2 0x2708 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP4 AND DUP2 GT DUP1 ISZERO PUSH2 0x10CF JUMPI POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT JUMPDEST ISZERO PUSH2 0x1118 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP15 SWAP1 SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x117A DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP15 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH2 0x3472 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP7 POP DUP2 AND SWAP5 POP PUSH16 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP13 AND GT ISZERO SWAP3 POP PUSH2 0x11E5 SWAP2 POP POP JUMPI PUSH1 0x40 MLOAD PUSH32 0x35278D1200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11FC CALLER DUP14 DUP14 PUSH2 0x11F7 DUP15 PUSH2 0x4494 JUMP JUMPDEST PUSH2 0x34D0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP9 POP SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x121B JUMPI SWAP1 POP POP SWAP7 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP DUP8 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x12A2 JUMPI PUSH2 0x12A2 PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE POP DUP8 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x130B JUMPI PUSH2 0x130B PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x132C JUMPI SWAP1 POP POP SWAP6 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP7 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x13B3 JUMPI PUSH2 0x13B3 PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP7 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x141C JUMPI PUSH2 0x141C PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x6 DUP1 SLOAD SWAP4 SWAP1 SWAP2 ADD PUSH17 0x100000000000000000000000000000000 SWAP5 SWAP1 SWAP3 ADD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND DUP3 SWAP1 SUB DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP6 AND DUP6 OR DUP7 SWAP1 DIV DUP2 AND DUP5 SWAP1 SUB AND SWAP1 SWAP5 MUL SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x14A2 DUP8 DUP4 DUP4 DUP10 PUSH2 0x36DC JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x3C5474DF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x9 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 DUP13 DUP2 SIGNEXTEND PUSH1 0x24 DUP4 ADD MSTORE DUP12 DUP2 SIGNEXTEND PUSH1 0x44 DUP4 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND PUSH1 0x84 DUP3 ADD MSTORE PUSH20 0x0 SWAP1 PUSH4 0x3C5474DF SWAP1 PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1556 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x156A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x158E SWAP2 SWAP1 PUSH2 0x3EAE JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND PUSH3 0xFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE CALLER SWAP2 PUSH32 0x49995E5DD6158CF69AD3E9777C46755A1A826A446C6416992167462DAD033B2A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP SWAP6 POP SWAP6 POP SWAP6 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x167A JUMPI PUSH2 0x167A PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x16E8 JUMPI PUSH2 0x16E8 PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x1764 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF2E5B6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 PUSH2 0x1777 DUP4 DUP6 ADD DUP6 PUSH2 0x3FDB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1788 DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x2708 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0x17AF DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x2708 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0x80 DUP7 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xAEC6CBFE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE SWAP5 SWAP1 SWAP4 AND PUSH1 0x44 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x64 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x84 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH20 0x0 SWAP1 PUSH4 0xAEC6CBFE SWAP1 PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x185A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x186E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1892 SWAP2 SWAP1 PUSH2 0x40A2 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 DUP1 PUSH2 0x18B0 DUP7 PUSH2 0x100 ADD MLOAD DUP8 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD DUP11 PUSH2 0x34D0 JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x1932 JUMPI PUSH2 0x18EE PUSH32 0x0 DUP4 DUP9 PUSH2 0x100 ADD MLOAD PUSH1 0x0 PUSH2 0x32CA JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP6 SWAP1 SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST DUP1 ISZERO PUSH2 0x19A2 JUMPI PUSH2 0x196A PUSH32 0x0 DUP3 DUP9 PUSH2 0x100 ADD MLOAD PUSH1 0x0 PUSH2 0x32CA JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND DUP6 SWAP1 SUB DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST POP POP DUP1 DUP4 LT DUP1 ISZERO PUSH2 0x19B2 JUMPI POP DUP2 DUP2 LT JUMPDEST ISZERO PUSH2 0x19FA JUMPI PUSH1 0x0 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP9 ADD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x1A0C DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD PUSH2 0x3A0F JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x3 SLOAD PUSH1 0x1 SLOAD DUP8 MLOAD PUSH1 0x20 DUP10 ADD MLOAD PUSH1 0x40 DUP1 DUP12 ADD MLOAD PUSH1 0x60 DUP13 ADD MLOAD PUSH1 0x7 SLOAD SWAP3 MLOAD PUSH32 0x3344008400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x9 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x44 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x64 DUP9 ADD MSTORE SWAP3 DUP8 SIGNEXTEND PUSH1 0x84 DUP8 ADD MSTORE SWAP1 DUP7 SIGNEXTEND PUSH1 0xA4 DUP7 ADD MSTORE SWAP1 DUP6 SIGNEXTEND PUSH1 0xC4 DUP6 ADD MSTORE SWAP2 DUP5 SIGNEXTEND PUSH1 0xE4 DUP5 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x104 DUP5 ADD MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP2 DIV DUP4 SIGNEXTEND SWAP1 SWAP3 SIGNEXTEND PUSH2 0x124 DUP3 ADD MSTORE SWAP1 DUP3 AND PUSH2 0x144 DUP3 ADD MSTORE PUSH20 0x0 SWAP1 PUSH4 0x33440084 SWAP1 PUSH2 0x164 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1B36 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B5A SWAP2 SWAP1 PUSH2 0x3EAE JUMP JUMPDEST PUSH1 0x7 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP1 PUSH2 0x1B8C DUP6 DUP6 DUP6 DUP11 PUSH1 0x1 PUSH2 0x3472 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD MSTORE DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x1BAB JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xC0 ADD MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1C74 JUMPI PUSH2 0x1C74 PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xE0 ADD MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1CFB JUMPI PUSH2 0x1CFB PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCED10B49 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1D33 SWAP2 SWAP1 PUSH2 0x41DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1D5E SWAP2 SWAP1 PUSH2 0x424F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D8C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 EQ PUSH2 0x1E69 JUMPI PUSH2 0x1DD4 PUSH32 0x0 PUSH2 0x3BBA JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP5 ADD AND GT ISZERO PUSH2 0x1E26 JUMPI PUSH1 0x40 MLOAD PUSH32 0x840463AA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP6 ADD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x1F47 JUMPI PUSH2 0x1EAA PUSH32 0x0 PUSH2 0x3BBA JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 AND DUP4 ADD AND GT ISZERO PUSH2 0x1F10 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE430204200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND DUP6 ADD DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F5C DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x60 ADD MLOAD PUSH2 0x21A4 JUMP JUMPDEST PUSH2 0x120 DUP11 ADD MLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x2082 JUMPI PUSH2 0x100 DUP9 ADD MLOAD PUSH2 0x120 DUP10 ADD MLOAD PUSH1 0x20 DUP11 ADD MLOAD PUSH1 0x60 DUP12 ADD MLOAD PUSH2 0x140 DUP13 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x6D59EBE100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND PUSH1 0x24 DUP3 ADD MSTORE SWAP2 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xA4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 AND SWAP1 PUSH4 0x6D59EBE1 SWAP1 PUSH1 0xE4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2048 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x205C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2080 SWAP2 SWAP1 PUSH2 0x40A2 JUMP JUMPDEST POP JUMPDEST PUSH2 0x100 DUP9 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND DUP3 MSTORE DUP7 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x217B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x219F SWAP2 SWAP1 PUSH2 0x40A2 JUMP JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x2 DUP4 DUP2 SIGNEXTEND DUP1 DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP7 DUP6 SIGNEXTEND DUP6 SIGNEXTEND DUP4 MSTORE SWAP1 DUP3 KECCAK256 DUP5 SLOAD PUSH1 0x3 SLOAD SWAP4 SWAP7 DUP8 SWAP7 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 SIGNEXTEND SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 DUP8 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 DUP11 SWAP1 SIGNEXTEND SLT PUSH2 0x2218 JUMPI DUP8 PUSH1 0x1 ADD SLOAD SWAP4 POP DUP8 PUSH1 0x2 ADD SLOAD SWAP3 POP PUSH2 0x223C JUMP JUMPDEST PUSH1 0x1 DUP9 ADD SLOAD PUSH2 0x2227 SWAP1 DUP8 PUSH2 0x445B JUMP JUMPDEST SWAP4 POP DUP8 PUSH1 0x2 ADD SLOAD DUP6 PUSH2 0x2239 SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP3 POP JUMPDEST DUP12 PUSH1 0x2 SIGNEXTEND DUP10 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x225B JUMPI POP POP PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x2 DUP7 ADD SLOAD PUSH2 0x227F JUMP JUMPDEST PUSH1 0x1 DUP8 ADD SLOAD PUSH2 0x226A SWAP1 DUP8 PUSH2 0x445B JUMP JUMPDEST SWAP2 POP DUP7 PUSH1 0x2 ADD SLOAD DUP6 PUSH2 0x227C SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 PUSH2 0x228A DUP6 DUP9 PUSH2 0x445B JUMP JUMPDEST PUSH2 0x2294 SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP11 POP DUP1 PUSH2 0x22A1 DUP5 DUP8 PUSH2 0x445B JUMP JUMPDEST PUSH2 0x22AB SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP10 POP POP POP POP POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x8 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x22FD JUMPI PUSH1 0x40 MLOAD PUSH32 0xF2E5B6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x5 SLOAD PUSH1 0x1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND GT ISZERO PUSH2 0x242B JUMPI PUSH1 0x5 SLOAD PUSH2 0x2342 SWAP1 PUSH1 0x1 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP2 SWAP4 POP DUP4 SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x2396 SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x242B PUSH32 0x0 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x32CA JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x2572 JUMPI PUSH1 0x5 SLOAD PUSH2 0x2492 SWAP1 PUSH1 0x1 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH17 0x100000000000000000000000000000000 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP4 SWAP5 POP DUP5 SWAP4 SWAP1 SWAP3 PUSH1 0x10 SWAP3 PUSH2 0x24DD SWAP3 DUP7 SWAP3 SWAP1 DIV AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2572 PUSH32 0x0 DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x32CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x8 SSTORE SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x8 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x25BB JUMPI PUSH1 0x40 MLOAD PUSH32 0xF2E5B6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH2 0x25CD CALLER DUP8 DUP8 PUSH1 0x0 PUSH2 0x34D0 JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x25DF DUP5 DUP4 DUP4 DUP7 PUSH2 0x36DC JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD DUP4 SWAP2 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x2606 SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x6 PUSH1 0x10 DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2669 SWAP2 SWAP1 PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A1C185B7B5DA020829D63D69222D8602AA53A6B7800A73EE6E3E15A625D863D DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x26F0 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 PUSH1 0x8 SSTORE SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x271F JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x272C JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x272C SWAP1 PUSH2 0x4509 JUMP JUMPDEST SWAP1 POP PUSH2 0x2757 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x44D3 JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 GT ISZERO PUSH2 0x2795 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF87DC40C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x27B6 JUMPI PUSH17 0x100000000000000000000000000000000 PUSH2 0x27C8 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x27FC JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x281B JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x283A JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x2859 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x2878 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x2897 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x28B6 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x28D6 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x28F6 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x2916 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x2936 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x2956 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x2976 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x2996 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x29B6 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x29D7 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x29F7 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x2A16 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x2A33 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x2A72 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 PUSH2 0x2A6E JUMPI PUSH2 0x2A6E PUSH2 0x4571 JUMP JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x2A86 JUMPI PUSH1 0x1 PUSH2 0x2A89 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x2ACA JUMPI PUSH2 0x2AC3 PUSH2 0x2AB7 PUSH1 0x60 DUP8 SWAP1 SHL DUP7 DUP7 SUB DUP7 PUSH2 0x2AF5 JUMP JUMPDEST DUP6 DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x2AED JUMP JUMPDEST DUP4 PUSH2 0x2ADC PUSH1 0x60 DUP8 SWAP1 SHL DUP7 DUP7 SUB DUP7 PUSH2 0x2B96 JUMP JUMPDEST DUP2 PUSH2 0x2AE9 JUMPI PUSH2 0x2AE9 PUSH2 0x4571 JUMP JUMPDEST DIV SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B02 DUP5 DUP5 DUP5 PUSH2 0x2B96 JUMP JUMPDEST SWAP1 POP DUP2 DUP1 PUSH2 0x2B12 JUMPI PUSH2 0x2B12 PUSH2 0x4571 JUMP JUMPDEST DUP4 DUP6 MULMOD ISZERO PUSH2 0x2B4A JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT PUSH2 0x2B46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x2B73 JUMPI PUSH2 0x2AC3 DUP6 DUP6 DUP6 SUB PUSH13 0x1000000000000000000000000 PUSH2 0x2AF5 JUMP JUMPDEST PUSH2 0x2B8D DUP6 DUP6 DUP6 SUB PUSH13 0x1000000000000000000000000 PUSH2 0x2B96 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP8 MULMOD DUP6 DUP8 MUL SWAP3 POP DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH1 0x0 EQ ISZERO PUSH2 0x2BEE JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x2BE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x2B4A JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x2BFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2C82 DUP14 DUP14 PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x2AF5 JUMP JUMPDEST SWAP1 POP PUSH2 0x2C8E DUP2 DUP11 PUSH2 0x4320 JUMP JUMPDEST SWAP9 POP PUSH2 0x2C9A DUP2 DUP15 PUSH2 0x445B JUMP JUMPDEST PUSH2 0x2CA4 SWAP1 DUP10 PUSH2 0x4320 JUMP JUMPDEST SWAP8 POP PUSH1 0x0 PUSH2 0x2CB5 DUP3 DUP14 PUSH2 0x2710 PUSH2 0x2AF5 JUMP JUMPDEST SWAP1 POP PUSH2 0x2CC1 DUP2 DUP10 PUSH2 0x4320 JUMP JUMPDEST SWAP8 POP PUSH2 0x2CCD DUP2 DUP4 PUSH2 0x445B JUMP JUMPDEST SWAP2 POP PUSH2 0x2CEB DUP3 PUSH17 0x100000000000000000000000000000000 DUP14 PUSH2 0x2B96 JUMP JUMPDEST PUSH2 0x2CF5 SWAP1 DUP9 PUSH2 0x4320 JUMP JUMPDEST SWAP10 SWAP15 SWAP9 SWAP14 POP SWAP7 SWAP12 POP SWAP8 SWAP10 POP SWAP6 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP8 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x3 ADD SLOAD DUP2 SWAP1 PUSH2 0x2D47 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH2 0x442E JUMP JUMPDEST PUSH1 0x2 DUP11 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 ISZERO PUSH2 0x2EB9 JUMPI PUSH1 0x2 PUSH2 0x2DB4 DUP5 DUP12 PUSH2 0x4338 JUMP JUMPDEST PUSH2 0x2DBE SWAP2 SWAP1 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH2 0x2E08 JUMPI PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2E01 SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH2 0x445B JUMP JUMPDEST SWAP7 POP PUSH2 0x2E47 JUMP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2E44 SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH2 0x4320 JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x2E6A SWAP1 DUP7 PUSH2 0x445B JUMP JUMPDEST PUSH1 0x2 DUP11 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SWAP3 SWAP1 SWAP3 SSTORE ADD SLOAD PUSH2 0x2E93 SWAP1 DUP8 PUSH2 0x445B JUMP JUMPDEST PUSH1 0x2 SWAP10 DUP11 SIGNEXTEND DUP11 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 DUP12 ADD SWAP2 SWAP1 SWAP2 SSTORE SLOAD SWAP1 SWAP9 SIGNEXTEND SWAP8 PUSH2 0x2FCD JUMP JUMPDEST PUSH1 0x2 PUSH2 0x2EC5 DUP5 DUP12 PUSH2 0x4338 JUMP JUMPDEST PUSH2 0x2ECF SWAP2 SWAP1 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH2 0x2F19 JUMPI PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2F12 SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH2 0x4320 JUMP JUMPDEST SWAP7 POP PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2F55 SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH2 0x445B JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 ADD SLOAD PUSH2 0x2F79 SWAP1 DUP7 PUSH2 0x445B JUMP JUMPDEST PUSH1 0x2 DUP11 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x1 ADD SLOAD PUSH2 0x2FA3 SWAP1 DUP8 PUSH2 0x445B JUMP JUMPDEST PUSH1 0x2 SWAP10 DUP11 SIGNEXTEND DUP11 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH4 0x1000000 SWAP1 DIV SWAP1 SWAP9 SIGNEXTEND SWAP8 JUMPDEST POP SWAP5 SWAP9 SWAP7 SWAP8 POP POP POP POP POP POP POP JUMP JUMPDEST DUP3 ISZERO PUSH2 0x3124 JUMPI PUSH1 0x0 PUSH2 0x300C PUSH32 0x0 PUSH2 0x3BBA JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x3032 SWAP1 DUP6 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x3080 JUMPI PUSH1 0x40 MLOAD PUSH32 0x840463AA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR DUP1 DUP4 SSTORE DUP6 SWAP3 SWAP2 PUSH1 0x10 SWAP2 PUSH2 0x30E7 SWAP2 DUP6 SWAP2 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x314F PUSH32 0x0 PUSH2 0x3BBA JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x3189 SWAP1 DUP6 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x31D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE430204200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 DUP5 DUP4 AND MUL DUP2 DUP2 OR DUP5 SSTORE DUP7 SWAP4 SWAP3 PUSH1 0x0 SWAP3 PUSH2 0x30E7 SWAP3 DUP7 SWAP3 AND OR PUSH2 0x43FD JUMP JUMPDEST DUP3 ISZERO PUSH2 0x329E JUMPI PUSH1 0x3 DUP3 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD DUP3 SWAP2 SWAP1 PUSH1 0x10 SWAP1 PUSH2 0x3263 SWAP1 DUP5 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD DUP3 SWAP2 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x3263 SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST DUP1 ISZERO PUSH2 0x33B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3389 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x33AD SWAP2 SWAP1 PUSH2 0x40BB JUMP JUMPDEST POP POP PUSH2 0x346C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3453 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3467 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 DUP7 GT PUSH2 0x348F JUMPI PUSH2 0x3488 DUP5 DUP9 DUP9 DUP7 PUSH2 0x2B51 JUMP JUMPDEST SWAP1 POP PUSH2 0x34C6 JUMP JUMPDEST DUP7 DUP6 GT PUSH2 0x34A9 JUMPI PUSH2 0x34A2 DUP5 DUP9 DUP9 DUP7 PUSH2 0x2A9B JUMP JUMPDEST SWAP2 POP PUSH2 0x34C6 JUMP JUMPDEST PUSH2 0x34B5 DUP5 DUP7 DUP9 DUP7 PUSH2 0x2A9B JUMP JUMPDEST SWAP2 POP PUSH2 0x34C3 DUP5 DUP9 DUP8 DUP7 PUSH2 0x2B51 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x2 DUP8 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP2 SWAP1 DUP2 SWAP1 DUP2 DUP1 PUSH2 0x3524 DUP10 DUP10 PUSH2 0x21A4 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3566 DUP4 PUSH1 0x1 ADD SLOAD DUP4 PUSH2 0x353B SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST DUP5 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH17 0x100000000000000000000000000000000 PUSH2 0x2B96 JUMP JUMPDEST SWAP6 POP PUSH2 0x357B DUP4 PUSH1 0x2 ADD SLOAD DUP3 PUSH2 0x353B SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST DUP4 SLOAD SWAP1 SWAP6 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 POP PUSH1 0x0 PUSH1 0xF DUP9 SWAP1 SIGNEXTEND SLT ISZERO PUSH2 0x3605 JUMPI PUSH2 0x35AA DUP8 PUSH2 0x4494 JUMP JUMPDEST DUP4 SLOAD DUP5 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x35CE SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x0 DUP8 PUSH1 0xF SIGNEXTEND SGT ISZERO PUSH2 0x36C1 JUMPI DUP3 SLOAD DUP8 SWAP1 DUP5 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x3637 SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST DUP3 SLOAD PUSH2 0x100 SWAP3 SWAP1 SWAP3 EXP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 MUL NOT SWAP1 SWAP4 AND SWAP2 DUP4 AND MUL OR SWAP1 SWAP2 SSTORE DUP5 SLOAD PUSH32 0x0 DUP3 AND SWAP2 AND GT ISZERO SWAP1 POP PUSH2 0x36C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB03425AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP4 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE SWAP2 SWAP7 SWAP1 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3890 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37DE SWAP2 SWAP1 PUSH2 0x40BB JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH2 0x335C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x394E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3962 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP7 SWAP1 MSTORE PUSH32 0x0 AND SWAP3 POP PUSH4 0xF18D03CC SWAP2 POP PUSH1 0x84 ADD PUSH2 0x3439 JUMP JUMPDEST PUSH2 0x3A39 PUSH32 0x0 DUP4 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x3A73 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCE8EF7FC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH2 0x3A9F PUSH32 0x0 DUP5 PUSH2 0x4338 JUMP JUMPDEST PUSH2 0x3AA9 SWAP2 SWAP1 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x3AE3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xFDF1420200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3B0D PUSH32 0x0 DUP3 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x3B47 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCE8EF7FC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH2 0x3B73 PUSH32 0x0 DUP4 PUSH2 0x4338 JUMP JUMPDEST PUSH2 0x3B7D SWAP2 SWAP1 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH2 0x3BB6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9778C6300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3C60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3C84 SWAP2 SWAP1 PUSH2 0x40A2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C95 DUP2 PUSH2 0x45FE JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C95 DUP2 PUSH2 0x4623 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C95 DUP2 PUSH2 0x4631 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3CC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3CD0 DUP2 PUSH2 0x45FE JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3CE0 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x3CF0 DUP2 PUSH2 0x4631 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3D11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH2 0x3D1C DUP2 PUSH2 0x4623 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x40 DUP8 ADD MLOAD SWAP2 SWAP6 POP SWAP4 POP PUSH2 0x3D34 DUP2 PUSH2 0x45FE JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x3D45 DUP2 PUSH2 0x4623 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3D7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3D8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3D9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3DB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3DD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3DEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3E12 JUMPI PUSH2 0x3E12 PUSH2 0x45CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3E58 JUMPI PUSH2 0x3E58 PUSH2 0x45CF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3E71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2B4A DUP2 PUSH2 0x4631 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2B4A DUP2 PUSH2 0x4631 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3EE9 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3EF9 DUP2 PUSH2 0x4631 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3F1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3F25 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3F35 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x3F45 DUP2 PUSH2 0x45FE JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x3D45 DUP2 PUSH2 0x4623 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3F6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3F78 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3F88 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3FAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x3FBD DUP2 PUSH2 0x45FE JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x3FCD DUP2 PUSH2 0x4623 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3FEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3FF6 PUSH2 0x42C2 JUMP JUMPDEST PUSH2 0x3FFF DUP4 PUSH2 0x3CA5 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x400D PUSH1 0x20 DUP5 ADD PUSH2 0x3CA5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x401E PUSH1 0x40 DUP5 ADD PUSH2 0x3CA5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x402F PUSH1 0x60 DUP5 ADD PUSH2 0x3CA5 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x4054 PUSH1 0xC0 DUP5 ADD PUSH2 0x3C9A JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x4065 PUSH1 0xE0 DUP5 ADD PUSH2 0x3C9A JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x4078 DUP2 DUP6 ADD PUSH2 0x3C8A JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 PUSH2 0x408A DUP5 DUP3 ADD PUSH2 0x3C8A JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x140 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4130 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 MSTORE DUP4 ADD MLOAD DUP4 DUP9 ADD MSTORE PUSH1 0x40 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x40F3 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4189 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4157 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2B4A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x40DF JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x41BB PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x40DF JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x41CD DUP2 DUP7 PUSH2 0x40DF JUMP JUMPDEST SWAP2 POP POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4242 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 DUP2 ADD MLOAD ISZERO ISZERO DUP8 DUP7 ADD MSTORE DUP6 ADD MLOAD DUP6 DUP6 ADD MSTORE PUSH1 0x60 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x41FB JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x427C JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x4260 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x428E JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x160 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x42E6 JUMPI PUSH2 0x42E6 PUSH2 0x45CF JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x4317 JUMPI PUSH2 0x4317 PUSH2 0x4542 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x4333 JUMPI PUSH2 0x4333 PUSH2 0x4542 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND DUP4 PUSH1 0x2 SIGNEXTEND DUP1 PUSH2 0x434F JUMPI PUSH2 0x434F PUSH2 0x4571 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000 DUP4 EQ AND ISZERO PUSH2 0x43A3 JUMPI PUSH2 0x43A3 PUSH2 0x4542 JUMP JUMPDEST SWAP1 SDIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x43BB JUMPI PUSH2 0x43BB PUSH2 0x4571 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x43F8 JUMPI PUSH2 0x43F8 PUSH2 0x4542 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x4426 JUMPI PUSH2 0x4426 PUSH2 0x4542 JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x4426 JUMPI PUSH2 0x4426 PUSH2 0x4542 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x446D JUMPI PUSH2 0x446D PUSH2 0x4542 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x2 SIGNEXTEND DUP1 PUSH2 0x4485 JUMPI PUSH2 0x4485 PUSH2 0x4571 JUMP JUMPDEST DUP1 DUP4 PUSH1 0x2 SIGNEXTEND SMOD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xF SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000000000000000000000 DUP2 EQ ISZERO PUSH2 0x44CA JUMPI PUSH2 0x44CA PUSH2 0x4542 JUMP JUMPDEST PUSH1 0x0 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000 DUP2 EQ ISZERO PUSH2 0x44CA JUMPI PUSH2 0x44CA PUSH2 0x4542 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ ISZERO PUSH2 0x453B JUMPI PUSH2 0x453B PUSH2 0x4542 JUMP JUMPDEST POP PUSH1 0x0 SUB SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x4620 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 DELEGATECALL 0xDD 0xCA PUSH14 0x99127E73FF19F59ECCAED3901AA2 0xBB SAR 0xB0 PUSH13 0xD142170AFC64577EB564736F6C PUSH4 0x43000807 STOP CALLER ",
              "sourceMap": "875:27442:46:-:0;;;4205:1276;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4287:15;4304;4321;4338:14;4354:19;4401:11;4377:102;;;;;;;;;;;;:::i;:::-;4286:193;;-1:-1:-1;4286:193:46;;-1:-1:-1;4286:193:46;-1:-1:-1;4286:193:46;-1:-1:-1;4286:193:46;-1:-1:-1;;4494:21:46;;4490:47;;4524:13;;-1:-1:-1;;;4524:13:46;;;;;;;;;;;4490:47;4570:4;-1:-1:-1;4551:24:46;;;4547:51;;;4584:14;;-1:-1:-1;;;4584:14:46;;;;;;;;;;;4547:51;4631:4;-1:-1:-1;4612:24:46;;;4608:51;;;4645:14;;-1:-1:-1;;;4645:14:46;;;;;;;;;;;4608:51;1387:6;4673:18;;;;4669:47;;;4700:16;;-1:-1:-1;;;4700:16:46;;;;;;;;;;;4669:47;-1:-1:-1;;4727:16:46;;;;;;;4753;;;;;;-1:-1:-1;;4779:18:46;;;;;;;4807:5;:14;;-1:-1:-1;4807:14:46;;-1:-1:-1;4807:14:46;;;;;;4831:26;;;;;;4973:35;;;-1:-1:-1;4973:35:46;;3193:8:64;3181:21;;4973:35:46;;;3163:40:64;4973:35:46;;:5;;:21;;3136:18:64;;;;;-1:-1:-1;;4973:35:46;;;;;;;:5;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4952:56;;-1:-1:-1;4952:56:46;;;;;5045:69;;;;;;;;-1:-1:-1;5045:69:46;;;;;;;705:9:28;;;:::i;:::-;5045:69:46;;;;;;5102:1;5045:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5018:24:46;;;;:5;:24;;:96;;:24;:96;;;;;;;;;;;;;;;;;-1:-1:-1;5018:96:46;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5018:96:46;;-1:-1:-1;5018:96:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5018:96:46;-1:-1:-1;5018:96:46;;;;;;;;;5151:69;;;;;;;;;;;;;;;;705:9:28;;;:::i;:::-;5151:69:46;;;;5208:1;5151:69;;;;;;;;;;;;;;;;;;-1:-1:-1;5151:69:46;;;;;;5124:5;;705:9:28;-1:-1:-1;705:9:28;:::i;:::-;5124:24:46;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5124:24:46;:96;;;;;;;;;;;;-1:-1:-1;5124:96:46;;;-1:-1:-1;5124:96:46;;;;;;;;;-1:-1:-1;5124:96:46;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5124:96:46;;;-1:-1:-1;5124:96:46;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5124:96:46;;;-1:-1:-1;5124:96:46;;;;;;5230:11;:31;;-1:-1:-1;;5230:31:46;;;;;;5296:23;;-1:-1:-1;5296:23:46;;;;:21;;;;-1:-1:-1;;5296:23:46;;;;;5124:24;;5296:23;;;;;;:21;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5271:49;;;;;;5341:26;;;;;;;;-1:-1:-1;5341:24:46;;;;;:26;;;;;;;;;;;;;;:24;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5330:37;;;;;;5386:24;;;;;;;;-1:-1:-1;5386:22:46;;;;;:24;;;;;;;;;;;;;;:22;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5377:6;:33;-1:-1:-1;;;;;5420:32:46;;-1:-1:-1;;;;;;5420:32:46;;;-1:-1:-1;5473:1:46;5462:8;:12;875:27442;;14:155:64;110:13;;132:31;110:13;132:31;:::i;:::-;14:155;;;:::o;174:165::-;252:13;;305:8;294:20;;284:31;;274:59;;329:1;326;319:12;344:251;414:6;467:2;455:9;446:7;442:23;438:32;435:52;;;483:1;480;473:12;435:52;515:9;509:16;534:31;559:5;534:31;:::i;:::-;584:5;344:251;-1:-1:-1;;;344:251:64:o;600:703::-;720:6;728;736;744;752;805:3;793:9;784:7;780:23;776:33;773:53;;;822:1;819;812:12;773:53;854:9;848:16;873:31;898:5;873:31;:::i;:::-;973:2;958:18;;952:25;923:5;;-1:-1:-1;986:33:64;952:25;986:33;:::i;:::-;1038:7;-1:-1:-1;1064:48:64;1108:2;1093:18;;1064:48;:::i;:::-;1054:58;;1157:2;1146:9;1142:18;1136:25;1170:33;1195:7;1170:33;:::i;:::-;1222:7;-1:-1:-1;1248:49:64;1292:3;1277:19;;1248:49;:::i;:::-;1238:59;;600:703;;;;;;;;:::o;1308:1214::-;1420:6;1428;1481:2;1469:9;1460:7;1456:23;1452:32;1449:52;;;1497:1;1494;1487:12;1449:52;1524:16;;-1:-1:-1;1589:14:64;;;1586:34;;;1616:1;1613;1606:12;1586:34;1654:6;1643:9;1639:22;1629:32;;1699:7;1692:4;1688:2;1684:13;1680:27;1670:55;;1721:1;1718;1711:12;1670:55;1750:2;1744:9;1772:2;1768;1765:10;1762:36;;;1778:18;;:::i;:::-;1853:2;1847:9;1821:2;1907:13;;-1:-1:-1;;1903:22:64;;;1927:2;1899:31;1895:40;1883:53;;;1951:18;;;1971:22;;;1948:46;1945:72;;;1997:18;;:::i;:::-;2037:10;2033:2;2026:22;2072:2;2064:6;2057:18;2094:4;2084:14;;2135:7;2130:2;2125;2121;2117:11;2113:20;2110:33;2107:53;;;2156:1;2153;2146:12;2107:53;2178:1;2169:10;;2188:129;2202:2;2199:1;2196:9;2188:129;;;2290:10;;;2286:19;;2280:26;2259:14;;;2255:23;;2248:59;2213:10;;;;2188:129;;;2335:2;2332:1;2329:9;2326:80;;;2394:1;2389:2;2384;2376:6;2372:15;2368:24;2361:35;2326:80;2425:6;-1:-1:-1;2450:66:64;;-1:-1:-1;;2497:18:64;;;2450:66;:::i;:::-;2440:76;;;;1308:1214;;;;;:::o;2527:290::-;2597:6;2650:2;2638:9;2629:7;2625:23;2621:32;2618:52;;;2666:1;2663;2656:12;2618:52;2692:16;;-1:-1:-1;2737:31:64;;2727:42;;2717:70;;2783:1;2780;2773:12;2822:184;2892:6;2945:2;2933:9;2924:7;2920:23;2916:32;2913:52;;;2961:1;2958;2951:12;2913:52;-1:-1:-1;2984:16:64;;2822:184;-1:-1:-1;2822:184:64:o;3214:281::-;3248:3;3295:5;3292:1;3281:20;3329:7;3325:12;3316:7;3313:25;3310:148;;;3380:10;3375:3;3371:20;3368:1;3361:31;3415:4;3412:1;3405:15;3443:4;3440:1;3433:15;3310:148;3478:1;3474:15;;3214:281;-1:-1:-1;;3214:281:64:o;3500:127::-;3561:10;3556:3;3552:20;3549:1;3542:31;3592:4;3589:1;3582:15;3616:4;3613:1;3606:15;3632:131;-1:-1:-1;3707:31:64;;3697:42;;3687:70;;3753:1;3750;3743:12;3687:70;3632:131;:::o;:::-;875:27442:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_balance_14242": {
                  "entryPoint": 15290,
                  "id": 14242,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_ensureTickSpacing_13995": {
                  "entryPoint": 14863,
                  "id": 13995,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_transferBothTokens_14349": {
                  "entryPoint": 14044,
                  "id": 14349,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_transfer_14283": {
                  "entryPoint": 13002,
                  "id": 14283,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_updateFees_14105": {
                  "entryPoint": 12829,
                  "id": 14105,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_updatePosition_14223": {
                  "entryPoint": 13520,
                  "id": 14223,
                  "parameterSlots": 4,
                  "returnSlots": 3
                },
                "@_updateReserves_14075": {
                  "entryPoint": 12251,
                  "id": 14075,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@barFee_12373": {
                  "entryPoint": null,
                  "id": 12373,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@burnSingle_13251": {
                  "entryPoint": null,
                  "id": 13251,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@burn_13239": {
                  "entryPoint": 1799,
                  "id": 13239,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@collectProtocolFee_13933": {
                  "entryPoint": 8893,
                  "id": 13933,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@collect_13309": {
                  "entryPoint": 9595,
                  "id": 13309,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "@cross_4431": {
                  "entryPoint": 11532,
                  "id": 4431,
                  "parameterSlots": 8,
                  "returnSlots": 2
                },
                "@decreaseLiquidity_13225": {
                  "entryPoint": 4182,
                  "id": 13225,
                  "parameterSlots": 5,
                  "returnSlots": 3
                },
                "@divRoundingUp_4921": {
                  "entryPoint": null,
                  "id": 4921,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@feeGrowthGlobal0_12368": {
                  "entryPoint": null,
                  "id": 12368,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@feeGrowthGlobal1_12371": {
                  "entryPoint": null,
                  "id": 12371,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@flashSwap_13857": {
                  "entryPoint": 1792,
                  "id": 13857,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAmountIn_14534": {
                  "entryPoint": null,
                  "id": 14534,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAmountOut_14521": {
                  "entryPoint": null,
                  "id": 14521,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAmountsForLiquidity_3408": {
                  "entryPoint": 13426,
                  "id": 3408,
                  "parameterSlots": 5,
                  "returnSlots": 2
                },
                "@getAssets_14508": {
                  "entryPoint": 5670,
                  "id": 14508,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@getDx_3236": {
                  "entryPoint": 10907,
                  "id": 3236,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@getDy_3185": {
                  "entryPoint": 11089,
                  "id": 3185,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@getImmutables_14588": {
                  "entryPoint": null,
                  "id": 14588,
                  "parameterSlots": 0,
                  "returnSlots": 8
                },
                "@getPriceAndNearestTicks_14604": {
                  "entryPoint": null,
                  "id": 14604,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@getReserves_14636": {
                  "entryPoint": null,
                  "id": 14636,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@getSecondsGrowthAndLastObservation_14652": {
                  "entryPoint": null,
                  "id": 14652,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@getSqrtRatioAtTick_4077": {
                  "entryPoint": 9992,
                  "id": 4077,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getTokenProtocolFees_14620": {
                  "entryPoint": null,
                  "id": 14620,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@handleFees_3673": {
                  "entryPoint": 11367,
                  "id": 3673,
                  "parameterSlots": 8,
                  "returnSlots": 4
                },
                "@liquidity_12361": {
                  "entryPoint": null,
                  "id": 12361,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@mint_12996": {
                  "entryPoint": 5925,
                  "id": 12996,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@mulDivRoundingUp_3589": {
                  "entryPoint": 10997,
                  "id": 3589,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@mulDiv_3545": {
                  "entryPoint": 11158,
                  "id": 3545,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@poolIdentifier_12336": {
                  "entryPoint": null,
                  "id": 12336,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@positions_12404": {
                  "entryPoint": null,
                  "id": 12404,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@rangeFeeGrowth_14480": {
                  "entryPoint": 8612,
                  "id": 14480,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@swap_13844": {
                  "entryPoint": 1806,
                  "id": 13844,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@ticks_12395": {
                  "entryPoint": null,
                  "id": 12395,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@updateBarFee_13870": {
                  "entryPoint": 8449,
                  "id": 13870,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_address": {
                  "entryPoint": 15498,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_bool": {
                  "entryPoint": 15514,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_int24": {
                  "entryPoint": 15525,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_int24t_int24": {
                  "entryPoint": 15536,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_boolt_uint256t_address_payablet_bool_fromMemory": {
                  "entryPoint": 15611,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_bytes_calldata_ptr": {
                  "entryPoint": 15696,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes_memory_ptr": {
                  "entryPoint": 15810,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_int24": {
                  "entryPoint": 16017,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_int24_fromMemory": {
                  "entryPoint": 16046,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_int24t_int24": {
                  "entryPoint": 16075,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_int24t_int24t_addresst_bool": {
                  "entryPoint": 16132,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_int24t_int24t_uint128t_addresst_bool": {
                  "entryPoint": 16213,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_struct$_MintParams_$12453_memory_ptr": {
                  "entryPoint": 16347,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 16546,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_uint256_fromMemory": {
                  "entryPoint": 16571,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_array_struct_TokenAmount_dyn": {
                  "entryPoint": 16607,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint256__to_t_address_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 8,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16699,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16789,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed": {
                  "entryPoint": 16808,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16862,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16975,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint160__to_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint160__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$_t_int24_t_int24_t_uint128_t_int24__to_t_uint256_t_int24_t_int24_t_uint128_t_int24__fromStack_library_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$_t_uint256_t_uint256_t_uint160_t_int24_t_int24_t_int24_t_int24_t_uint128_t_int24_t_uint160__to_t_uint256_t_uint256_t_uint256_t_uint160_t_int24_t_int24_t_int24_t_int24_t_uint128_t_int24_t_uint160__fromStack_library_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 12,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint128__to_t_uint128__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint128_t_uint128__to_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint128_t_uint24_t_uint24_t_address_t_contract$_IBentoBoxMinimal_$2253_t_contract$_IMasterDeployer_$2356_t_address_t_address__to_t_uint128_t_uint24_t_uint24_t_address_t_address_t_address_t_address_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 9,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint128_t_uint256_t_uint256__to_t_uint128_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint160_t_int24__to_t_uint160_t_int24__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint160_t_uint32__to_t_uint160_t_uint32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_library_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 17090,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "checked_add_t_uint128": {
                  "entryPoint": 17132,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 17184,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_int24": {
                  "entryPoint": 17208,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 17324,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 17344,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint128": {
                  "entryPoint": 17405,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint160": {
                  "entryPoint": 17454,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 17499,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "mod_t_int24": {
                  "entryPoint": 17522,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "negate_t_int128": {
                  "entryPoint": 17556,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "negate_t_int24": {
                  "entryPoint": 17619,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "negate_t_int256": {
                  "entryPoint": 17673,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 17730,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": 17777,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 17824,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 17871,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 17918,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bool": {
                  "entryPoint": 17955,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_int24": {
                  "entryPoint": 17969,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:23265:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "63:85:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "73:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "95:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "82:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "82:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "73:5:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "136:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "111:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "111:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "111:31:64"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "42:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "53:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:134:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "199:82:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "209:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "231:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "218:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "218:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "209:5:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "269:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "247:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "247:28:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "247:28:64"
                            }
                          ]
                        },
                        "name": "abi_decode_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "178:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "189:5:64",
                            "type": ""
                          }
                        ],
                        "src": "153:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "333:83:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "343:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "365:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "352:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "352:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "343:5:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "404:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "381:22:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "381:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "381:29:64"
                            }
                          ]
                        },
                        "name": "abi_decode_int24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "312:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "323:5:64",
                            "type": ""
                          }
                        ],
                        "src": "286:130:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "521:421:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "567:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "576:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "579:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "569:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "569:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "569:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "542:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "551:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "538:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "538:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "563:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "534:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "534:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "531:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "592:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "618:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "605:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "605:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "596:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "662:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "637:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "637:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "637:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "677:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "687:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "677:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "701:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "733:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "744:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "729:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "729:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "716:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "716:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "705:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "780:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "757:22:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "757:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "757:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "797:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "807:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "797:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "823:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "855:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "866:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "851:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "851:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "838:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "838:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "827:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "902:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "879:22:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "879:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "879:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "919:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "929:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "919:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_int24t_int24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "471:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "482:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "494:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "502:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "510:6:64",
                            "type": ""
                          }
                        ],
                        "src": "421:521:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1081:443:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1128:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1137:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1140:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1130:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1130:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1130:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1102:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1111:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1098:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1098:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1123:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1094:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1094:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1091:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1153:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1172:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1166:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1166:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1157:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1213:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "1191:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1191:28:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1191:28:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1228:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1238:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1228:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1252:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1272:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1283:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1268:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1268:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1262:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1262:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1252:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1296:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1321:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1332:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1317:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1317:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1311:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1311:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1300:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1370:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1345:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1345:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1345:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1387:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1397:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1387:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1413:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1438:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1449:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1434:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1434:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1428:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1428:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1417:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1484:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "1462:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1462:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1462:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1501:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "1511:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1501:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_boolt_uint256t_address_payablet_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1023:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1034:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1046:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1054:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1062:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1070:6:64",
                            "type": ""
                          }
                        ],
                        "src": "947:577:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1618:502:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1664:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1673:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1676:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1666:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1666:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1666:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1639:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1648:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1635:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1635:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1660:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1631:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1631:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1628:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1689:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1716:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1703:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1703:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1693:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1735:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1745:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1739:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1790:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1799:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1802:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1792:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1792:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1792:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1778:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1786:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1775:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1775:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1772:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1815:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1829:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1840:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1825:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1825:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1819:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1895:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1904:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1907:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1897:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1897:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1897:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1874:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1878:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1870:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1870:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1885:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1866:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1866:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1859:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1859:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1856:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1920:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1947:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1934:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1934:16:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1924:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1977:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1986:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1989:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1979:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1979:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1979:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1965:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1973:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1962:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1962:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1959:34:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2043:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2052:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2055:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2045:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2045:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2045:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2016:2:64"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "2020:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2012:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2012:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2029:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2008:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2008:24:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2034:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2005:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2005:37:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2002:57:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2068:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2082:2:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2086:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2078:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2078:11:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2068:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2098:16:64",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "2108:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2098:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1576:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1587:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1599:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1607:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1529:591:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2204:901:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2250:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2259:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2262:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2252:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2252:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2252:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2225:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2234:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2221:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2221:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2246:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2217:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2217:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2214:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2275:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2302:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2289:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2289:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2279:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2321:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2331:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2325:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2376:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2385:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2388:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2378:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2378:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2378:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2364:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2372:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2361:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2361:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2358:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2401:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2415:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2426:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2411:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2411:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2405:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2481:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2490:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2493:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2483:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2483:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2483:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2460:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2464:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2456:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2456:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2471:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2452:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2452:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2445:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2445:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2442:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2506:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2529:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2516:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2516:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2510:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2555:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2557:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2557:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2557:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2547:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2551:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2544:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2544:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2541:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2586:76:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2596:66:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "2590:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2671:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2691:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2685:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2685:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2675:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2703:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2725:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2749:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2753:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2745:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2745:13:64"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "2760:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "2741:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2741:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2765:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2737:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2737:31:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "2770:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2733:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2733:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2721:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2721:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2707:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2833:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2835:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2835:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2835:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2792:10:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2804:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2789:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2789:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2812:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2824:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2809:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2809:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2786:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2786:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2783:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2871:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2875:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2864:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2864:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2864:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2902:6:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2910:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2895:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2895:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2895:18:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2959:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2968:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2971:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2961:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2961:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2961:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2936:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2940:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2932:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2932:11:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2945:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2928:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2928:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2950:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2925:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2925:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2922:53:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3001:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3009:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2997:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2997:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3018:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3022:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3014:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3014:11:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3027:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "2984:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2984:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2984:46:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "3054:6:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3062:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3050:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3050:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3067:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3046:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3046:24:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3072:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3039:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3039:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3039:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3083:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "3093:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3083:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2170:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2181:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2193:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2125:980:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3178:175:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3224:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3233:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3236:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3226:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3226:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3226:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3199:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3208:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3195:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3195:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3220:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3191:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3191:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3188:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3249:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3275:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3262:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3262:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3253:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3317:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "3294:22:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3294:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3294:29:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3332:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3342:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3332:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_int24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3144:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3155:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3167:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3110:243:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3437:168:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3483:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3492:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3495:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3485:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3485:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3485:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3458:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3467:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3454:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3454:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3479:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3450:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3450:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3447:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3508:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3527:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3521:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3521:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3512:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3569:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "3546:22:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3546:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3546:29:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3584:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3594:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3584:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_int24_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3403:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3414:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3426:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3358:247:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3693:297:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3739:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3748:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3751:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3741:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3741:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3741:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3714:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3723:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3710:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3710:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3735:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3706:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3706:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3703:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3764:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3790:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3777:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3777:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3768:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3832:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "3809:22:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3809:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3809:29:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3847:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3857:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3847:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3871:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3903:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3914:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3899:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3899:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3886:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3886:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3875:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3950:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "3927:22:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3927:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3927:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3967:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3977:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3967:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_int24t_int24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3651:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3662:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3674:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3682:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3610:380:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4109:543:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4156:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4165:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4168:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4158:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4158:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4158:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4130:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4139:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4126:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4126:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4151:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4122:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4122:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4119:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4181:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4207:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4194:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4194:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4185:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4249:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "4226:22:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4226:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4226:29:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4264:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4274:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4264:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4288:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4320:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4331:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4316:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4316:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4303:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4303:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4292:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4367:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "4344:22:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4344:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4344:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4384:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4394:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4384:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4410:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4442:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4453:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4438:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4438:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4425:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4425:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4414:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4491:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4466:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4466:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4466:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4508:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "4518:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4508:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4534:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4566:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4577:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4562:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4562:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4549:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4549:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "4538:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4612:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "4590:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4590:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4590:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4629:17:64",
                              "value": {
                                "name": "value_3",
                                "nodeType": "YulIdentifier",
                                "src": "4639:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4629:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_int24t_int24t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4051:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4062:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4074:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4082:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4090:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4098:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3995:657:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4788:724:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4835:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4844:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4847:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4837:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4837:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4837:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4809:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4818:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4805:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4805:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4830:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4801:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4801:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4798:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4860:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4886:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4873:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4873:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4864:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4928:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "4905:22:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4905:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4905:29:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4943:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4953:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4943:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4967:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4999:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5010:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4995:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4995:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4982:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4982:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4971:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5046:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "5023:22:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5023:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5023:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5063:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "5073:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5063:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5089:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5121:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5132:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5117:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5117:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5104:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5104:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5093:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5218:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5227:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5230:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5220:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5220:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5220:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5158:7:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "5171:7:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5180:34:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "5167:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5167:48:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "5155:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5155:61:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5148:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5148:69:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5145:89:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5243:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "5253:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5243:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5269:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5301:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5312:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5297:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5297:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5284:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5284:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "5273:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "5350:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5325:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5325:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5325:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5367:17:64",
                              "value": {
                                "name": "value_3",
                                "nodeType": "YulIdentifier",
                                "src": "5377:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "5367:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5393:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5425:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5436:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5421:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5421:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5408:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5408:33:64"
                              },
                              "variables": [
                                {
                                  "name": "value_4",
                                  "nodeType": "YulTypedName",
                                  "src": "5397:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "5472:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "5450:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5450:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5450:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5489:17:64",
                              "value": {
                                "name": "value_4",
                                "nodeType": "YulIdentifier",
                                "src": "5499:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "5489:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_int24t_int24t_uint128t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4722:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4733:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4745:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4753:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4761:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4769:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "4777:6:64",
                            "type": ""
                          }
                        ],
                        "src": "4657:855:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5616:937:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5663:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5672:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5675:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5665:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5665:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5665:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5637:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5646:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5633:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5633:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5658:3:64",
                                    "type": "",
                                    "value": "352"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5629:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5629:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5626:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5688:30:64",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "5701:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5701:17:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5692:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5734:5:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5758:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_int24",
                                      "nodeType": "YulIdentifier",
                                      "src": "5741:16:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5741:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5727:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5727:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5727:42:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "5789:5:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5796:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5785:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5785:14:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "5822:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5833:2:64",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5818:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5818:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_int24",
                                      "nodeType": "YulIdentifier",
                                      "src": "5801:16:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5801:36:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5778:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5778:60:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5778:60:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "5858:5:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5865:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5854:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5854:14:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "5891:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5902:2:64",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5887:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5887:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_int24",
                                      "nodeType": "YulIdentifier",
                                      "src": "5870:16:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5870:36:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5847:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5847:60:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5847:60:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "5927:5:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5934:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5923:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5923:14:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "5960:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5971:2:64",
                                            "type": "",
                                            "value": "96"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5956:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5956:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_int24",
                                      "nodeType": "YulIdentifier",
                                      "src": "5939:16:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5939:36:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5916:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5916:60:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5916:60:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "5996:5:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6003:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5992:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5992:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "6026:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6037:3:64",
                                            "type": "",
                                            "value": "128"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6022:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6022:19:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "6009:12:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6009:33:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5985:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5985:58:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5985:58:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6063:5:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6070:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6059:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6059:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "6093:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6104:3:64",
                                            "type": "",
                                            "value": "160"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6089:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6089:19:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "6076:12:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6076:33:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6052:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6052:58:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6052:58:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6130:5:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6137:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6126:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6126:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "6163:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6174:3:64",
                                            "type": "",
                                            "value": "192"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6159:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6159:19:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_bool",
                                      "nodeType": "YulIdentifier",
                                      "src": "6143:15:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6143:36:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6119:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6119:61:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6119:61:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6200:5:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6207:3:64",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6196:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6196:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "6233:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6244:3:64",
                                            "type": "",
                                            "value": "224"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6229:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6229:19:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_bool",
                                      "nodeType": "YulIdentifier",
                                      "src": "6213:15:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6213:36:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6189:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6189:61:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6189:61:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6259:13:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6269:3:64",
                                "type": "",
                                "value": "256"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6263:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6292:5:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6299:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6288:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6288:14:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "6327:9:64"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "6338:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6323:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6323:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_address",
                                      "nodeType": "YulIdentifier",
                                      "src": "6304:18:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6304:38:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6281:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6281:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6281:62:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6352:13:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6362:3:64",
                                "type": "",
                                "value": "288"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "6356:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6385:5:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "6392:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6381:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6381:14:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "6420:9:64"
                                          },
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "6431:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6416:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6416:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_address",
                                      "nodeType": "YulIdentifier",
                                      "src": "6397:18:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6397:38:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6374:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6374:62:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6374:62:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6445:13:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6455:3:64",
                                "type": "",
                                "value": "320"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "6449:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6478:5:64"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "6485:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6474:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6474:14:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "6507:9:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "6518:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6503:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6503:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "6490:12:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6490:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6467:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6467:56:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6467:56:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6532:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6542:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6532:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_MintParams_$12453_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5582:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5593:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5605:6:64",
                            "type": ""
                          }
                        ],
                        "src": "5517:1036:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6639:103:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6685:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6694:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6697:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6687:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6687:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6687:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6660:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6669:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6656:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6656:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6681:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6652:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6652:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6649:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6710:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6726:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6720:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6720:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6710:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6605:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6616:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6628:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6558:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6845:147:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6891:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6900:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6903:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6893:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6893:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6893:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6866:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6875:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6862:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6862:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6887:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6858:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6858:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6855:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6916:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6932:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6926:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6926:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6916:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6951:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6971:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6982:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6967:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6967:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6961:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6961:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6951:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6803:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6814:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6826:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6834:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6747:245:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7069:510:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7079:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7099:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7093:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7093:12:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "7083:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "7121:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7126:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7114:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7114:19:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7114:19:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7142:14:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7152:4:64",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7146:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7165:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "7176:3:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7181:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7172:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7172:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "7165:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7193:28:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7211:5:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7218:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7207:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7207:14:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7197:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7230:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7239:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "7234:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7298:256:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "7312:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "7328:6:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "7322:5:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7322:13:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "7316:2:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "7355:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7370:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "7364:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7364:9:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "7375:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "7360:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7360:58:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7348:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7348:71:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7348:71:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "7443:3:64"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "7448:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "7439:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7439:12:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7463:2:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7467:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "7459:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "7459:11:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "7453:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7453:18:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7432:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7432:40:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7432:40:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7485:21:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "7496:3:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7501:4:64",
                                          "type": "",
                                          "value": "0x40"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7492:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7492:14:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7485:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7519:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "7533:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7541:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7529:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7529:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7519:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7260:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7263:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7257:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7257:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "7271:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7273:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "7282:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7285:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7278:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7278:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "7273:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "7253:3:64",
                                "statements": []
                              },
                              "src": "7249:305:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7563:10:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "7570:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7563:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_struct_TokenAmount_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "7046:5:64",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7053:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7061:3:64",
                            "type": ""
                          }
                        ],
                        "src": "6997:582:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7713:198:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7723:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7735:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7746:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7731:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7731:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7723:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7758:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7768:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7762:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7826:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "7841:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7849:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7837:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7837:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7819:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7819:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7819:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7873:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7884:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7869:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7869:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7893:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7901:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7889:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7889:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7862:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7862:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7862:43:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7674:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7685:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7693:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7704:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7584:327:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8137:338:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8147:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8159:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8170:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8155:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8155:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8147:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8183:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8193:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8187:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8251:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8266:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8274:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8262:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8262:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8244:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8244:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8244:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8298:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8309:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8294:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8294:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8318:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8326:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8314:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8314:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8287:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8287:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8287:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8350:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8361:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8346:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8346:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8370:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8378:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8366:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8366:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8339:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8339:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8339:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8402:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8413:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8398:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8398:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "8418:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8391:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8391:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8391:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8445:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8456:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8441:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8441:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "8462:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8434:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8434:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8434:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8074:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "8085:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "8093:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8101:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8109:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8117:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8128:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7916:559:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8665:294:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8675:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8687:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8698:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8683:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8683:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8675:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8711:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8721:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8715:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8779:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8794:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8802:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8790:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8790:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8772:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8772:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8772:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8826:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8837:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8822:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8822:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8846:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8854:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8842:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8842:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8815:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8815:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8815:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8878:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8889:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8874:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8874:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8898:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8906:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8894:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8894:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8867:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8867:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8867:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8930:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8941:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8926:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8926:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "8946:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8919:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8919:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8919:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8610:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "8621:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8629:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8637:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8645:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8656:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8480:479:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9225:458:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9235:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9247:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9258:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9243:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9243:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9235:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9278:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "9293:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9301:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9289:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9289:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9271:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9271:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9271:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9365:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9376:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9361:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9361:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9392:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9395:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "9381:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9381:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9354:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9354:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9354:49:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9423:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9434:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9419:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9419:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9450:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "9453:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "9439:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9439:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9412:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9412:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9412:49:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9481:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9492:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9477:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9477:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "9501:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9509:34:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9497:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9497:47:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9470:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9470:75:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9470:75:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9565:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9576:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9561:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9561:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "9582:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9554:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9554:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9554:35:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9609:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9620:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9605:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9605:19:64"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "9626:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9598:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9598:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9598:35:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9653:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9664:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9649:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9649:19:64"
                                  },
                                  {
                                    "name": "value6",
                                    "nodeType": "YulIdentifier",
                                    "src": "9670:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9642:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9642:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9642:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint256__to_t_address_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9146:9:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "9157:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "9165:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "9173:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9181:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9189:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9197:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9205:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9216:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8964:719:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9839:530:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9849:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9859:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9853:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9870:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9888:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9899:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9884:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9884:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9874:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9918:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9929:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9911:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9911:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9911:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9941:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "9952:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "9945:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9967:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9987:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9981:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9981:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "9971:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10010:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10018:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10003:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10003:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10003:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10034:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10045:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10056:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10041:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10041:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "10034:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10068:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10086:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10094:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10082:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10082:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "10072:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10106:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10115:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "10110:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10174:169:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "10195:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10210:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "10204:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "10204:13:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "10219:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "10200:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10200:62:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10188:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10188:75:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10188:75:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10276:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "10287:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "10292:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10283:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10283:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "10276:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10308:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "10322:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "10330:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10318:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10318:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10308:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "10136:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10139:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10133:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10133:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "10147:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10149:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "10158:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10161:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10154:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10154:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "10149:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "10129:3:64",
                                "statements": []
                              },
                              "src": "10125:218:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10352:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "10360:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10352:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9808:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9819:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9830:4:64",
                            "type": ""
                          }
                        ],
                        "src": "9688:681:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10583:121:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10600:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10611:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10593:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10593:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10593:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10623:75:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10671:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10683:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10694:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10679:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10679:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_struct_TokenAmount_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "10631:39:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10631:67:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10623:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10552:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10563:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10574:4:64",
                            "type": ""
                          }
                        ],
                        "src": "10374:330:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11082:301:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11099:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11110:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11092:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11092:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11092:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11122:81:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11176:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11188:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11199:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11184:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11184:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_struct_TokenAmount_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "11136:39:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11136:67:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11126:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11223:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11234:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11219:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11219:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11243:6:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11251:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11239:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11239:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11212:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11212:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11212:50:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11271:63:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11319:6:64"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11327:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_struct_TokenAmount_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "11279:39:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11279:55:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11271:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11354:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11365:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11350:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11350:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11370:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11343:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11343:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11343:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11035:9:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "11046:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11054:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11062:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11073:4:64",
                            "type": ""
                          }
                        ],
                        "src": "10709:674:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11595:707:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11605:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11615:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11609:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11626:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11644:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11655:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11640:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11640:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11630:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11674:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11685:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11667:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11667:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11667:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11697:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "11708:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "11701:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11723:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11743:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11737:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11737:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "11727:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11766:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11774:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11759:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11759:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11759:22:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11790:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11800:2:64",
                                "type": "",
                                "value": "64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "11794:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11811:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11822:9:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11833:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11818:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11818:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "11811:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11845:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11863:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11871:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11859:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11859:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "11849:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11883:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11892:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "11887:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11951:325:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "11965:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "11981:6:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "11975:5:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11975:13:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "11969:2:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "12008:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12023:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "12017:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "12017:9:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "12028:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "12013:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12013:58:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "12001:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12001:71:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12001:71:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "12096:3:64"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "12101:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "12092:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12092:12:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "_3",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "12130:2:64"
                                                        },
                                                        {
                                                          "name": "_1",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "12134:2:64"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12126:3:64"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "12126:11:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12120:5:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "12120:18:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "iszero",
                                                "nodeType": "YulIdentifier",
                                                "src": "12113:6:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "12113:26:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "12106:6:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12106:34:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "12085:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12085:56:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12085:56:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "12165:3:64"
                                            },
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "12170:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "12161:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12161:12:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12185:2:64"
                                                },
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12189:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "12181:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "12181:11:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "12175:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12175:18:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "12154:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12154:40:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12154:40:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12207:21:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "12218:3:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12223:4:64",
                                          "type": "",
                                          "value": "0x60"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "12214:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12214:14:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12207:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12241:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "12255:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "12263:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "12251:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12251:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "12241:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "11913:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11916:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11910:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11910:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "11924:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11926:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "11935:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11938:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11931:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11931:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "11926:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "11906:3:64",
                                "statements": []
                              },
                              "src": "11902:374:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12285:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "12293:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12285:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11564:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11575:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11586:4:64",
                            "type": ""
                          }
                        ],
                        "src": "11388:914:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12408:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12418:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12430:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12441:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12426:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12426:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12418:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12460:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12471:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12453:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12453:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12453:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12377:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12388:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12399:4:64",
                            "type": ""
                          }
                        ],
                        "src": "12307:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12608:535:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12618:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12628:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12622:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12646:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12657:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12639:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12639:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12639:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12669:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12689:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12683:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12683:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "12673:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12716:9:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12727:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12712:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12712:18:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12732:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12705:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12705:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12705:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12748:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12757:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "12752:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12817:90:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12846:9:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12857:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "12842:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "12842:17:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "12861:2:64",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "12838:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12838:26:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "12880:6:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "12888:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12876:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "12876:14:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12892:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "12872:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "12872:23:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "12866:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12866:30:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "12831:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12831:66:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12831:66:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "12778:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12781:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12775:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12775:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "12789:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12791:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "12800:1:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "12803:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "12796:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12796:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "12791:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "12771:3:64",
                                "statements": []
                              },
                              "src": "12767:140:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12941:66:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12970:9:64"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12981:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "12966:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "12966:22:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "12990:2:64",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "12962:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12962:31:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12995:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "12955:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12955:42:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12955:42:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "12922:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12925:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12919:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12919:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "12916:91:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13016:121:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13032:9:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "13051:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "13059:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "13047:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "13047:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "13064:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "13043:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13043:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13028:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13028:104:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13134:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13024:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13024:113:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13016:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12577:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12588:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12599:4:64",
                            "type": ""
                          }
                        ],
                        "src": "12489:654:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13381:414:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13391:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13403:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13414:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13399:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13399:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13391:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13434:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13456:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "13459:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "13445:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13445:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13427:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13427:40:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13427:40:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13487:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13498:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13483:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13483:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13514:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13517:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "13503:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13503:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13476:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13476:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13476:49:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13545:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13556:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13541:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13541:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "13565:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13573:34:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13561:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13561:47:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13534:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13534:75:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13534:75:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13629:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13640:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13625:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13625:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "13645:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13618:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13618:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13618:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13672:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13683:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13668:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13668:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "13689:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13661:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13661:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13661:35:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13716:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13727:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13712:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13712:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "13737:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13745:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13733:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13733:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13705:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13705:84:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13705:84:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint160__to_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint160__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13310:9:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "13321:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "13329:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "13337:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "13345:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13353:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13361:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13372:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13148:647:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14051:336:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14061:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14073:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14084:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14069:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14069:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14061:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14104:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14115:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14097:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14097:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14097:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14142:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14153:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14138:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14138:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14169:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14172:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "14158:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14158:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14131:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14131:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14131:49:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14200:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14211:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14196:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14196:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14227:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "14230:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "14216:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14216:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14189:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14189:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14189:49:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14258:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14269:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14254:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14254:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "14278:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14286:34:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14274:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14274:47:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14247:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14247:75:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14247:75:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14342:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14353:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14338:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14338:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14370:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "14373:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "14359:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14359:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14331:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14331:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14331:50:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$_t_int24_t_int24_t_uint128_t_int24__to_t_uint256_t_int24_t_int24_t_uint128_t_int24__fromStack_library_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13988:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "13999:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "14007:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14015:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14023:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14031:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14042:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13800:587:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14804:710:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14814:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14826:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14837:3:64",
                                    "type": "",
                                    "value": "352"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14822:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14822:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14814:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14857:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14868:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14850:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14850:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14850:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14895:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14906:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14891:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14891:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14911:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14884:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14884:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14884:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14938:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14949:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14934:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14934:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "14954:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14927:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14927:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14927:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14970:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14980:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14974:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15042:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15053:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15038:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15038:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "15062:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15070:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15058:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15058:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15031:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15031:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15031:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15094:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15105:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15090:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15090:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15122:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "15125:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "15111:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15111:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15083:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15083:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15083:50:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15153:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15164:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15149:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15149:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15181:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "15184:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "15170:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15170:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15142:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15142:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15142:50:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15212:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15223:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15208:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15208:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15240:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value6",
                                        "nodeType": "YulIdentifier",
                                        "src": "15243:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "15229:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15229:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15201:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15201:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15201:50:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15271:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15282:3:64",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15267:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15267:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15299:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value7",
                                        "nodeType": "YulIdentifier",
                                        "src": "15302:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "15288:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15288:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15260:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15260:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15260:50:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15330:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15341:3:64",
                                        "type": "",
                                        "value": "256"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15326:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15326:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value8",
                                        "nodeType": "YulIdentifier",
                                        "src": "15351:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15359:34:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15347:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15347:47:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15319:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15319:76:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15319:76:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15415:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15426:3:64",
                                        "type": "",
                                        "value": "288"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15411:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15411:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15443:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value9",
                                        "nodeType": "YulIdentifier",
                                        "src": "15446:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "15432:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15432:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15404:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15404:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15404:50:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15474:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15485:3:64",
                                        "type": "",
                                        "value": "320"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15470:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15470:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value10",
                                        "nodeType": "YulIdentifier",
                                        "src": "15495:7:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15504:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15491:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15491:16:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15463:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15463:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15463:45:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$_t_uint256_t_uint256_t_uint160_t_int24_t_int24_t_int24_t_int24_t_uint128_t_int24_t_uint160__to_t_uint256_t_uint256_t_uint256_t_uint160_t_int24_t_int24_t_int24_t_int24_t_uint128_t_int24_t_uint160__fromStack_library_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14692:9:64",
                            "type": ""
                          },
                          {
                            "name": "value10",
                            "nodeType": "YulTypedName",
                            "src": "14703:7:64",
                            "type": ""
                          },
                          {
                            "name": "value9",
                            "nodeType": "YulTypedName",
                            "src": "14712:6:64",
                            "type": ""
                          },
                          {
                            "name": "value8",
                            "nodeType": "YulTypedName",
                            "src": "14720:6:64",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "14728:6:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "14736:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "14744:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "14752:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "14760:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14768:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14776:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14784:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14795:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14392:1122:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15620:117:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15630:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15642:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15653:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15638:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15638:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15630:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15672:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "15687:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15695:34:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15683:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15683:47:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15665:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15665:66:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15665:66:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint128__to_t_uint128__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15589:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15600:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15611:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15519:218:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15871:190:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15881:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15893:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15904:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15889:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15889:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15881:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15916:44:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15926:34:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15920:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15976:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "15991:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15999:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15987:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15987:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15969:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15969:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15969:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16023:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16034:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16019:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16019:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16043:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16051:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16039:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16039:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16012:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16012:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16012:43:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15832:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15843:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15851:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15862:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15742:319:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16195:190:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16205:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16217:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16228:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16213:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16213:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16205:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16240:44:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16250:34:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16244:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16300:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "16315:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16323:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16311:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16311:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16293:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16293:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16293:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16347:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16358:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16343:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16343:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16367:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16375:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16363:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16363:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16336:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16336:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16336:43:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint128_t_uint128__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16156:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16167:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16175:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16186:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16066:319:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16732:574:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16742:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16754:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16765:3:64",
                                    "type": "",
                                    "value": "256"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16750:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16750:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16742:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16785:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "16800:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16808:34:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16796:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16796:47:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16778:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16778:66:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16778:66:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16853:18:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16863:8:64",
                                "type": "",
                                "value": "0xffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16857:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16891:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16902:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16887:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16887:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16911:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16919:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16907:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16907:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16880:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16880:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16880:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16943:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16954:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16939:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16939:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "16963:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16971:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16959:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16959:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16932:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16932:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16932:43:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16984:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16994:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "16988:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17056:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17067:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17052:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17052:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "17076:6:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "17084:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17072:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17072:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17045:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17045:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17045:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17108:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17119:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17104:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17104:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "17129:6:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "17137:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17125:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17125:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17097:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17097:44:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17097:44:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17161:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17172:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17157:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17157:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "17182:6:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "17190:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17178:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17178:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17150:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17150:44:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17150:44:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17214:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17225:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17210:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17210:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value6",
                                        "nodeType": "YulIdentifier",
                                        "src": "17235:6:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "17243:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17231:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17231:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17203:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17203:44:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17203:44:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17267:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17278:3:64",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17263:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17263:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value7",
                                        "nodeType": "YulIdentifier",
                                        "src": "17288:6:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "17296:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17284:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17284:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17256:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17256:44:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17256:44:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint128_t_uint24_t_uint24_t_address_t_contract$_IBentoBoxMinimal_$2253_t_contract$_IMasterDeployer_$2356_t_address_t_address__to_t_uint128_t_uint24_t_uint24_t_address_t_address_t_address_t_address_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16645:9:64",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "16656:6:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "16664:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "16672:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "16680:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "16688:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "16696:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16704:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16712:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16723:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16390:916:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17468:203:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17478:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17490:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17501:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17486:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17486:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17478:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17520:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "17535:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17543:34:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17531:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17531:47:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17513:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17513:66:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17513:66:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17599:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17610:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17595:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17595:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17615:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17588:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17588:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17588:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17642:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17653:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17638:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17638:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "17658:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17631:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17631:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17631:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint128_t_uint256_t_uint256__to_t_uint128_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17421:9:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17432:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17440:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17448:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17459:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17311:360:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17801:183:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17811:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17823:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17834:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17819:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17819:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17811:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17853:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "17868:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17876:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17864:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17864:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17846:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17846:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17846:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17940:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17951:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17936:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17936:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17967:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17970:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "17956:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17956:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17929:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17929:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17929:49:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint160_t_int24__to_t_uint160_t_int24__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17762:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17773:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17781:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17792:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17676:308:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18116:185:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18126:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18138:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18149:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18134:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18134:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18126:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18168:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "18183:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18191:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18179:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18179:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18161:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18161:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18161:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18255:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18266:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18251:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18251:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18275:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18283:10:64",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18271:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18271:23:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18244:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18244:51:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18244:51:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint160_t_uint32__to_t_uint160_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18077:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18088:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18096:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18107:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17989:312:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18407:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18417:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18429:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18440:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18425:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18425:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18417:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18459:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18470:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18452:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18452:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18452:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18376:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18387:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18398:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18306:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18617:119:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18627:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18639:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18650:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18635:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18635:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18627:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18669:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18680:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18662:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18662:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18662:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18707:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18718:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18703:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18703:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18723:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18696:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18696:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18696:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18578:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18589:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18597:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18608:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18488:248:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18962:250:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18972:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18984:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18995:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18980:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18980:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18972:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19015:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "19026:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19008:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19008:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19008:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19053:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19064:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19049:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19049:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19069:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19042:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19042:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19042:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19096:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19107:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19092:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19092:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "19112:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19085:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19085:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19085:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19139:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19150:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19135:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19135:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "19155:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19128:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19128:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19128:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19182:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19193:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19178:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19178:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "19199:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19171:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19171:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19171:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_library_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18899:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "18910:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "18918:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "18926:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18934:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18942:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18953:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18741:471:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19258:206:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19268:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19284:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "19278:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19278:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "19268:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19296:34:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "19318:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19326:3:64",
                                    "type": "",
                                    "value": "352"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19314:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19314:16:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "19300:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19405:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "19407:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19407:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19407:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "19348:10:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19360:18:64",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "19345:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19345:34:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "19384:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "19396:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "19381:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19381:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "19342:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19342:62:64"
                              },
                              "nodeType": "YulIf",
                              "src": "19339:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19443:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "19447:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19436:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19436:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19436:22:64"
                            }
                          ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "19247:6:64",
                            "type": ""
                          }
                        ],
                        "src": "19217:247:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19517:205:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19527:44:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "19537:34:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19531:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19580:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "19595:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19598:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "19591:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19591:10:64"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19584:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19610:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "19625:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19628:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "19621:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19621:10:64"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19614:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19665:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "19667:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19667:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19667:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19646:3:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19655:2:64"
                                      },
                                      {
                                        "name": "y_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19659:3:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "19651:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19651:12:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19643:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19643:21:64"
                              },
                              "nodeType": "YulIf",
                              "src": "19640:47:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19696:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19707:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19712:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19703:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19703:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "19696:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint128",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "19500:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "19503:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "19509:3:64",
                            "type": ""
                          }
                        ],
                        "src": "19469:253:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19775:80:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19802:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "19804:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19804:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19804:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "19791:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "19798:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "19794:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19794:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19788:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19788:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "19785:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19833:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "19844:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "19847:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19840:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19840:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "19833:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "19758:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "19761:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "19767:3:64",
                            "type": ""
                          }
                        ],
                        "src": "19727:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19904:345:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19914:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19936:1:64",
                                    "type": "",
                                    "value": "2"
                                  },
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "19939:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "signextend",
                                  "nodeType": "YulIdentifier",
                                  "src": "19925:10:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19925:16:64"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19918:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19950:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19972:1:64",
                                    "type": "",
                                    "value": "2"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "19975:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "signextend",
                                  "nodeType": "YulIdentifier",
                                  "src": "19961:10:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19961:16:64"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19954:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20001:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "20003:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20003:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20003:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19996:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "19989:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19989:11:64"
                              },
                              "nodeType": "YulIf",
                              "src": "19986:37:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20193:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "20195:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20195:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20195:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "x_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20042:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20047:66:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "20039:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20039:75:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20119:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20124:66:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "20116:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20116:75:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "20035:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20035:157:64"
                              },
                              "nodeType": "YulIf",
                              "src": "20032:183:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20224:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20234:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20239:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sdiv",
                                  "nodeType": "YulIdentifier",
                                  "src": "20229:4:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20229:14:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "20224:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_int24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "19889:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "19892:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "19898:1:64",
                            "type": ""
                          }
                        ],
                        "src": "19860:389:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20300:74:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20323:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "20325:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20325:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20325:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "20320:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "20313:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20313:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "20310:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20354:14:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "20363:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "20366:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "20359:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20359:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "20354:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "20285:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "20288:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "20294:1:64",
                            "type": ""
                          }
                        ],
                        "src": "20254:120:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20431:176:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20550:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "20552:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20552:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20552:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "20462:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "20455:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20455:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "20448:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20448:17:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "20470:1:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "20477:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "20545:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "20473:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20473:74:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "20467:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20467:81:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "20444:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20444:105:64"
                              },
                              "nodeType": "YulIf",
                              "src": "20441:131:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20581:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "20596:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "20599:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "20592:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20592:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "20581:7:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "20410:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "20413:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "20419:7:64",
                            "type": ""
                          }
                        ],
                        "src": "20379:228:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20661:197:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20671:44:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "20681:34:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20675:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20724:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "20739:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20742:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "20735:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20735:10:64"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20728:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20754:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "20769:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20772:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "20765:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20765:10:64"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20758:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20800:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "20802:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20802:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20802:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20790:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20795:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20787:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20787:12:64"
                              },
                              "nodeType": "YulIf",
                              "src": "20784:38:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20831:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20843:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20848:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "20839:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20839:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "20831:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint128",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "20643:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "20646:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "20652:4:64",
                            "type": ""
                          }
                        ],
                        "src": "20612:246:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20912:205:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20922:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "20932:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20926:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20983:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "20998:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21001:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "20994:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20994:10:64"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20987:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21013:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "21028:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21031:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "21024:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21024:10:64"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21017:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21059:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "21061:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21061:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21061:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21049:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21054:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21046:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21046:12:64"
                              },
                              "nodeType": "YulIf",
                              "src": "21043:38:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21090:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21102:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21107:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "21098:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21098:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "21090:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint160",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "20894:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "20897:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "20903:4:64",
                            "type": ""
                          }
                        ],
                        "src": "20863:254:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21171:76:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21193:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "21195:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21195:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21195:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "21187:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "21190:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21184:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21184:8:64"
                              },
                              "nodeType": "YulIf",
                              "src": "21181:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21224:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "21236:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "21239:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "21232:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21232:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "21224:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "21153:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "21156:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "21162:4:64",
                            "type": ""
                          }
                        ],
                        "src": "21122:125:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21288:130:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21298:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21320:1:64",
                                    "type": "",
                                    "value": "2"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "21323:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "signextend",
                                  "nodeType": "YulIdentifier",
                                  "src": "21309:10:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21309:16:64"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21302:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21349:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "21351:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21351:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21351:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21344:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "21337:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21337:11:64"
                              },
                              "nodeType": "YulIf",
                              "src": "21334:37:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21380:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21401:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "21404:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "21390:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21390:16:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21408:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "smod",
                                  "nodeType": "YulIdentifier",
                                  "src": "21385:4:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21385:27:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "21380:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "mod_t_int24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "21273:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "21276:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "21282:1:64",
                            "type": ""
                          }
                        ],
                        "src": "21252:166:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21466:197:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21476:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21502:2:64",
                                    "type": "",
                                    "value": "15"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "21506:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "signextend",
                                  "nodeType": "YulIdentifier",
                                  "src": "21491:10:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21491:21:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21480:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21604:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "21606:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21606:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21606:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21527:7:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21536:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffff80000000000000000000000000000000"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "21524:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21524:79:64"
                              },
                              "nodeType": "YulIf",
                              "src": "21521:105:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21635:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21646:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21649:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "21642:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21642:15:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "21635:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "negate_t_int128",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "21448:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "21458:3:64",
                            "type": ""
                          }
                        ],
                        "src": "21423:240:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21710:196:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21720:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21746:1:64",
                                    "type": "",
                                    "value": "2"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "21749:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "signextend",
                                  "nodeType": "YulIdentifier",
                                  "src": "21735:10:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21735:20:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21724:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21847:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "21849:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21849:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21849:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21770:7:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21779:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "21767:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21767:79:64"
                              },
                              "nodeType": "YulIf",
                              "src": "21764:105:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21878:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21889:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21892:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "21885:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21885:15:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "21878:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "negate_t_int24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "21692:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "21702:3:64",
                            "type": ""
                          }
                        ],
                        "src": "21668:238:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21954:148:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22045:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "22047:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22047:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22047:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "21970:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21977:66:64",
                                    "type": "",
                                    "value": "0x8000000000000000000000000000000000000000000000000000000000000000"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "21967:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21967:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "21964:103:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22076:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22087:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "22090:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "22083:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22083:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "22076:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "negate_t_int256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "21936:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "21946:3:64",
                            "type": ""
                          }
                        ],
                        "src": "21911:191:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22139:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22156:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22159:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22149:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22149:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22149:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22253:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22256:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22246:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22246:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22246:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22277:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22280:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "22270:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22270:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22270:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "22107:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22328:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22345:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22348:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22338:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22338:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22338:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22442:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22445:4:64",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22435:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22435:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22435:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22466:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22469:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "22459:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22459:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22459:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "22296:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22517:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22534:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22537:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22527:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22527:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22527:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22631:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22634:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22624:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22624:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22624:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22655:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22658:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "22648:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22648:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22648:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "22485:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22706:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22723:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22726:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22716:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22716:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22716:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22820:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22823:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22813:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22813:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22813:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22844:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22847:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "22837:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22837:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22837:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "22674:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22908:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22995:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23004:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23007:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22997:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22997:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22997:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22931:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "22942:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22949:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "22938:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22938:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "22928:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22928:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "22921:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22921:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "22918:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "22897:5:64",
                            "type": ""
                          }
                        ],
                        "src": "22863:154:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23064:76:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "23118:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23127:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23130:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "23120:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23120:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23120:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "23087:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "23108:5:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "23101:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "23101:13:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "23094:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23094:21:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "23084:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23084:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "23077:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23077:40:64"
                              },
                              "nodeType": "YulIf",
                              "src": "23074:60:64"
                            }
                          ]
                        },
                        "name": "validator_revert_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "23053:5:64",
                            "type": ""
                          }
                        ],
                        "src": "23022:118:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23188:75:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "23241:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23250:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23253:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "23243:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23243:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23243:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "23211:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "23229:1:64",
                                            "type": "",
                                            "value": "2"
                                          },
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "23232:5:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "signextend",
                                          "nodeType": "YulIdentifier",
                                          "src": "23218:10:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23218:20:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "23208:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23208:31:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "23201:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23201:39:64"
                              },
                              "nodeType": "YulIf",
                              "src": "23198:59:64"
                            }
                          ]
                        },
                        "name": "validator_revert_int24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "23177:5:64",
                            "type": ""
                          }
                        ],
                        "src": "23145:118:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_address(value)\n    }\n    function abi_decode_bool(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_bool(value)\n    }\n    function abi_decode_int24(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_int24(value)\n    }\n    function abi_decode_tuple_t_addresst_int24t_int24(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_int24(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_int24(value_2)\n        value2 := value_2\n    }\n    function abi_decode_tuple_t_boolt_uint256t_address_payablet_bool_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n        value1 := mload(add(headStart, 32))\n        let value_1 := mload(add(headStart, 64))\n        validator_revert_address(value_1)\n        value2 := value_1\n        let value_2 := mload(add(headStart, 96))\n        validator_revert_bool(value_2)\n        value3 := value_2\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_tuple_t_bytes_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_int24(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_int24(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_int24_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_int24(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_int24t_int24(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_int24(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_int24(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_int24t_int24t_addresst_bool(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_int24(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_int24(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_address(value_2)\n        value2 := value_2\n        let value_3 := calldataload(add(headStart, 96))\n        validator_revert_bool(value_3)\n        value3 := value_3\n    }\n    function abi_decode_tuple_t_int24t_int24t_uint128t_addresst_bool(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_int24(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_int24(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        if iszero(eq(value_2, and(value_2, 0xffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n        value2 := value_2\n        let value_3 := calldataload(add(headStart, 96))\n        validator_revert_address(value_3)\n        value3 := value_3\n        let value_4 := calldataload(add(headStart, 128))\n        validator_revert_bool(value_4)\n        value4 := value_4\n    }\n    function abi_decode_tuple_t_struct$_MintParams_$12453_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 352) { revert(0, 0) }\n        let value := allocate_memory()\n        mstore(value, abi_decode_int24(headStart))\n        mstore(add(value, 32), abi_decode_int24(add(headStart, 32)))\n        mstore(add(value, 64), abi_decode_int24(add(headStart, 64)))\n        mstore(add(value, 96), abi_decode_int24(add(headStart, 96)))\n        mstore(add(value, 128), calldataload(add(headStart, 128)))\n        mstore(add(value, 160), calldataload(add(headStart, 160)))\n        mstore(add(value, 192), abi_decode_bool(add(headStart, 192)))\n        mstore(add(value, 224), abi_decode_bool(add(headStart, 224)))\n        let _1 := 256\n        mstore(add(value, _1), abi_decode_address(add(headStart, _1)))\n        let _2 := 288\n        mstore(add(value, _2), abi_decode_address(add(headStart, _2)))\n        let _3 := 320\n        mstore(add(value, _3), calldataload(add(headStart, _3)))\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_array_struct_TokenAmount_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _2 := mload(srcPtr)\n            mstore(pos, and(mload(_2), 0xffffffffffffffffffffffffffffffffffffffff))\n            mstore(add(pos, _1), mload(add(_2, _1)))\n            pos := add(pos, 0x40)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_address_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint256__to_t_address_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 224)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), signextend(2, value1))\n        mstore(add(headStart, 64), signextend(2, value2))\n        mstore(add(headStart, 96), and(value3, 0xffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n        mstore(add(headStart, 192), value6)\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_array_struct_TokenAmount_dyn(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_t_uint256__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        let tail_1 := abi_encode_array_struct_TokenAmount_dyn(value0, add(headStart, 96))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        tail := abi_encode_array_struct_TokenAmount_dyn(value1, tail_1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        let _2 := 64\n        pos := add(headStart, _2)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _3 := mload(srcPtr)\n            mstore(pos, and(mload(_3), 0xffffffffffffffffffffffffffffffffffffffff))\n            mstore(add(pos, _1), iszero(iszero(mload(add(_3, _1)))))\n            mstore(add(pos, _2), mload(add(_3, _2)))\n            pos := add(pos, 0x60)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n    function abi_encode_tuple_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint160__to_t_int24_t_int24_t_uint128_t_uint256_t_uint256_t_uint160__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, signextend(2, value0))\n        mstore(add(headStart, 32), signextend(2, value1))\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), and(value5, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$_t_int24_t_int24_t_uint128_t_int24__to_t_uint256_t_int24_t_int24_t_uint128_t_int24__fromStack_library_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), signextend(2, value1))\n        mstore(add(headStart, 64), signextend(2, value2))\n        mstore(add(headStart, 96), and(value3, 0xffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 128), signextend(2, value4))\n    }\n    function abi_encode_tuple_t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$_t_uint256_t_uint256_t_uint160_t_int24_t_int24_t_int24_t_int24_t_uint128_t_int24_t_uint160__to_t_uint256_t_uint256_t_uint256_t_uint160_t_int24_t_int24_t_int24_t_int24_t_uint128_t_int24_t_uint160__fromStack_library_reversed(headStart, value10, value9, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 352)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), signextend(2, value4))\n        mstore(add(headStart, 160), signextend(2, value5))\n        mstore(add(headStart, 192), signextend(2, value6))\n        mstore(add(headStart, 224), signextend(2, value7))\n        mstore(add(headStart, 256), and(value8, 0xffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 288), signextend(2, value9))\n        mstore(add(headStart, 320), and(value10, _1))\n    }\n    function abi_encode_tuple_t_uint128__to_t_uint128__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint128_t_uint128__to_t_uint128_t_uint128__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_encode_tuple_t_uint128_t_uint128__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_encode_tuple_t_uint128_t_uint24_t_uint24_t_address_t_contract$_IBentoBoxMinimal_$2253_t_contract$_IMasterDeployer_$2356_t_address_t_address__to_t_uint128_t_uint24_t_uint24_t_address_t_address_t_address_t_address_t_address__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 256)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffff))\n        let _1 := 0xffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        let _2 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 96), and(value3, _2))\n        mstore(add(headStart, 128), and(value4, _2))\n        mstore(add(headStart, 160), and(value5, _2))\n        mstore(add(headStart, 192), and(value6, _2))\n        mstore(add(headStart, 224), and(value7, _2))\n    }\n    function abi_encode_tuple_t_uint128_t_uint256_t_uint256__to_t_uint128_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_uint160_t_int24__to_t_uint160_t_int24__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), signextend(2, value1))\n    }\n    function abi_encode_tuple_t_uint160_t_uint32__to_t_uint160_t_uint32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffff))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_library_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function allocate_memory() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 352)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function checked_add_t_uint128(x, y) -> sum\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_div_t_int24(x, y) -> r\n    {\n        let x_1 := signextend(2, x)\n        let y_1 := signextend(2, y)\n        if iszero(y_1) { panic_error_0x12() }\n        if and(eq(x_1, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000), eq(y_1, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)) { panic_error_0x11() }\n        r := sdiv(x_1, y_1)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := div(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_sub_t_uint128(x, y) -> diff\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if lt(x_1, y_1) { panic_error_0x11() }\n        diff := sub(x_1, y_1)\n    }\n    function checked_sub_t_uint160(x, y) -> diff\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if lt(x_1, y_1) { panic_error_0x11() }\n        diff := sub(x_1, y_1)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function mod_t_int24(x, y) -> r\n    {\n        let y_1 := signextend(2, y)\n        if iszero(y_1) { panic_error_0x12() }\n        r := smod(signextend(2, x), y_1)\n    }\n    function negate_t_int128(value) -> ret\n    {\n        let value_1 := signextend(15, value)\n        if eq(value_1, 0xffffffffffffffffffffffffffffffff80000000000000000000000000000000) { panic_error_0x11() }\n        ret := sub(0, value_1)\n    }\n    function negate_t_int24(value) -> ret\n    {\n        let value_1 := signextend(2, value)\n        if eq(value_1, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000) { panic_error_0x11() }\n        ret := sub(0, value_1)\n    }\n    function negate_t_int256(value) -> ret\n    {\n        if eq(value, 0x8000000000000000000000000000000000000000000000000000000000000000) { panic_error_0x11() }\n        ret := sub(0, value)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function validator_revert_int24(value)\n    {\n        if iszero(eq(value, signextend(2, value))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "12342": [
                  {
                    "length": 32,
                    "start": 1174
                  },
                  {
                    "length": 32,
                    "start": 3136
                  },
                  {
                    "length": 32,
                    "start": 3278
                  },
                  {
                    "length": 32,
                    "start": 14868
                  },
                  {
                    "length": 32,
                    "start": 14970
                  },
                  {
                    "length": 32,
                    "start": 15080
                  },
                  {
                    "length": 32,
                    "start": 15182
                  }
                ],
                "12344": [
                  {
                    "length": 32,
                    "start": 1214
                  },
                  {
                    "length": 32,
                    "start": 2986
                  }
                ],
                "12347": [
                  {
                    "length": 32,
                    "start": 1134
                  },
                  {
                    "length": 32,
                    "start": 13924
                  }
                ],
                "12349": [
                  {
                    "length": 32,
                    "start": 1276
                  },
                  {
                    "length": 32,
                    "start": 9221
                  },
                  {
                    "length": 32,
                    "start": 9548
                  }
                ],
                "12352": [
                  {
                    "length": 32,
                    "start": 1316
                  },
                  {
                    "length": 32,
                    "start": 13105
                  },
                  {
                    "length": 32,
                    "start": 13326
                  },
                  {
                    "length": 32,
                    "start": 14179
                  },
                  {
                    "length": 32,
                    "start": 14433
                  },
                  {
                    "length": 32,
                    "start": 14602
                  },
                  {
                    "length": 32,
                    "start": 14814
                  },
                  {
                    "length": 32,
                    "start": 15368
                  }
                ],
                "12355": [
                  {
                    "length": 32,
                    "start": 1356
                  },
                  {
                    "length": 32,
                    "start": 8451
                  }
                ],
                "12357": [
                  {
                    "length": 32,
                    "start": 1396
                  },
                  {
                    "length": 32,
                    "start": 3774
                  },
                  {
                    "length": 32,
                    "start": 3926
                  },
                  {
                    "length": 32,
                    "start": 3967
                  },
                  {
                    "length": 32,
                    "start": 4689
                  },
                  {
                    "length": 32,
                    "start": 4962
                  },
                  {
                    "length": 32,
                    "start": 5704
                  },
                  {
                    "length": 32,
                    "start": 6337
                  },
                  {
                    "length": 32,
                    "start": 7173
                  },
                  {
                    "length": 32,
                    "start": 7600
                  },
                  {
                    "length": 32,
                    "start": 9169
                  },
                  {
                    "length": 32,
                    "start": 12264
                  },
                  {
                    "length": 32,
                    "start": 14111
                  },
                  {
                    "length": 32,
                    "start": 14541
                  }
                ],
                "12359": [
                  {
                    "length": 32,
                    "start": 1436
                  },
                  {
                    "length": 32,
                    "start": 3678
                  },
                  {
                    "length": 32,
                    "start": 3719
                  },
                  {
                    "length": 32,
                    "start": 4022
                  },
                  {
                    "length": 32,
                    "start": 4794
                  },
                  {
                    "length": 32,
                    "start": 5067
                  },
                  {
                    "length": 32,
                    "start": 5814
                  },
                  {
                    "length": 32,
                    "start": 6461
                  },
                  {
                    "length": 32,
                    "start": 7308
                  },
                  {
                    "length": 32,
                    "start": 7814
                  },
                  {
                    "length": 32,
                    "start": 9496
                  },
                  {
                    "length": 32,
                    "start": 12587
                  },
                  {
                    "length": 32,
                    "start": 14365
                  },
                  {
                    "length": 32,
                    "start": 14753
                  }
                ]
              },
              "linkReferences": {
                "contracts/libraries/concentratedPool/DyDxMath.sol": {
                  "DyDxMath": [
                    {
                      "length": 20,
                      "start": 6181
                    }
                  ]
                },
                "contracts/libraries/concentratedPool/Ticks.sol": {
                  "Ticks": [
                    {
                      "length": 20,
                      "start": 5409
                    },
                    {
                      "length": 20,
                      "start": 6892
                    }
                  ]
                }
              },
              "object": "608060405234801561001057600080fd5b50600436106101a35760003560e01c80639da12096116100ee578063bcdb4dad11610097578063cf78756b11610071578063cf78756b146105db578063f30dba93146105e4578063fb39d628146106bb578063fb5d80b3146106ce57600080fd5b8063bcdb4dad14610457578063c14ad802146105ca578063caa4b46a146105d357600080fd5b8063aaca1b4d116100c8578063aaca1b4d146103ae578063acfe88f81461042f578063af8c09bf146101a857600080fd5b80639da120961461037e578063a69840a814610387578063a8f1f52e146101a857600080fd5b80636289db82116101505780637ba0e2e71161012a5780637ba0e2e7146103165780638c347f9b1461032957806392bc32191461037457600080fd5b80636289db821461029557806367e4ac2c146102b75780636d59d802146102cc57600080fd5b80632a07b6c7116101815780632a07b6c714610262578063499a3c50146101a8578063627dd56a1461028257600080fd5b8063053da1c8146101a85780630902f1ac146101ce5780631a68650214610225575b600080fd5b6101bb6101b6366004613d50565b610700565b6040519081526020015b60405180910390f35b6006546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004165b604080516fffffffffffffffffffffffffffffffff9384168152929091166020830152016101c5565b600054610241906fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020016101c5565b610275610270366004613d50565b610707565b6040516101c59190614195565b6101bb610290366004613dc2565b61070e565b6102a86102a3366004613f55565b611056565b6040516101c5939291906141a8565b6102bf611626565b6040516101c5919061413b565b6001546040805173ffffffffffffffffffffffffffffffffffffffff831681527401000000000000000000000000000000000000000090920463ffffffff166020830152016101c5565b6101bb610324366004613d50565b611725565b6007546040805173ffffffffffffffffffffffffffffffffffffffff8316815274010000000000000000000000000000000000000000909204600290810b900b6020830152016101c5565b61037c612101565b005b6101bb60025481565b6101bb7f54726964656e743a436f6e63656e7472617465644c697175696469747900000081565b6104016103bc366004613cb0565b600a6020908152600093845260408085208252928452828420905282529020805460018201546002909201546fffffffffffffffffffffffffffffffff909116919083565b604080516fffffffffffffffffffffffffffffffff90941684526020840192909252908201526060016101c5565b61044261043d366004613ecb565b6121a4565b604080519283526020830191909152016101c5565b604080516fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815262ffffff7f0000000000000000000000000000000000000000000000000000000000000000811660208301527f0000000000000000000000000000000000000000000000000000000000000000169181019190915273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660608301527f0000000000000000000000000000000000000000000000000000000000000000811660808301527f0000000000000000000000000000000000000000000000000000000000000000811660a08301527f0000000000000000000000000000000000000000000000000000000000000000811660c08301527f00000000000000000000000000000000000000000000000000000000000000001660e0820152610100016101c5565b6101bb60045481565b6101fc6122bd565b6101bb60035481565b61065a6105f2366004613e91565b60096020526000908152604090208054600182015460028084015460039094015483820b946301000000850490920b93660100000000000090046fffffffffffffffffffffffffffffffff1692919073ffffffffffffffffffffffffffffffffffffffff1686565b60408051600297880b81529590960b60208601526fffffffffffffffffffffffffffffffff909316948401949094526060830152608082019290925273ffffffffffffffffffffffffffffffffffffffff90911660a082015260c0016101c5565b6104426106c9366004613f04565b61257b565b6005546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004166101fc565b6000806000fd5b6060600080fd5b60006008546002141561074d576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026008819055506000806000808580602001905181019061076f9190613cfb565b93509350935093506000604051806101200160405280600081526020016000815260200160008152602001866107a7576002546107ab565b6003545b8152602001866107bd576003546107c1565b6002545b815260075473ffffffffffffffffffffffffffffffffffffffff1660208201526000546fffffffffffffffffffffffffffffffff166040820152606081018690526080018661084b57600754740100000000000000000000000000000000000000009004600290810b810b810b60009081526009602052604090205463010000009004900b61086a565b60075474010000000000000000000000000000000000000000900460020b5b60020b9052600154909150429074010000000000000000000000000000000000000000900463ffffffff168082039082148015906108bb57506000546fffffffffffffffffffffffffffffffff1615155b1561097c57600180547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8516021790556000546fffffffffffffffffffffffffffffffff16608082901b8161092e5761092e614571565b600180547fffffffffffffffffffffffff000000000000000000000000000000000000000081169390920473ffffffffffffffffffffffffffffffffffffffff928316019091169190911790555b50505b60e081015115610d0d576000610999826101000151612708565b73ffffffffffffffffffffffffffffffffffffffff1690506000808715610ae65760006109d18560c00151858760a001516000612a9b565b9050808560e0015111610aa657600060608660c00151901b90506000610a19828860a001518960e001518a60a00151610a0a91906143c0565b610a149086614320565b612af5565b9050808611158015610a2e57508660a0015181105b610a7957610a60828860e001518960a0015185610a4b91906143ac565b610a559190614320565b808204910615150190565b73ffffffffffffffffffffffffffffffffffffffff1690505b610a8e8760c00151828960a001516000612b51565b60a0880191909152600060e08801529350610ae09050565b610abb8560c00151858760a001516000612b51565b60a0860185905260e086018051919450600193508291610adc90839061445b565b9052505b50610ba4565b6000610afd8560c001518660a00151866000612b51565b9050808560e0015111610b68576000610b2c8660e001516c010000000000000000000000008860c00151612b96565b8660a00151610b3b9190614320565b9050610b528660c001518760a00151836000612a9b565b60a0870191909152600060e08701529250610ba2565b610b7d8560c001518660a00151866000612a9b565b60a0860185905260e086018051919450600193508291610b9e90839061445b565b9052505b505b610be6827f00000000000000000000000000000000000000000000000000000000000000006004548760c0015188602001518e8a604001518b60600151612c67565b60608801526040870152602086019190915298508015610d0557610c646009856101000151600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168760c00151886060015189608001518e7f0000000000000000000000000000000000000000000000000000000000000000612d0c565b600290810b900b61010086015260c08501819052610d0557610c8a846101000151612708565b73ffffffffffffffffffffffffffffffffffffffff90811660a086015261010085015160015460c087015160608801516080890151610cf29560099594169291908e7f0000000000000000000000000000000000000000000000000000000000000000612d0c565b600290810b900b61010086015260c08501525b50505061097f565b60a0810151600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055600085610d8057610100820151600290810b810b600090815260096020526040902054900b610d87565b8161010001515b90508060020b600760149054906101000a900460020b60020b14610e3557600780547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000062ffffff600285900b160217905560c0820151600080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9092169190911790555b610e40868689612fdb565b610e53868360600151846040015161321d565b8515610f5157610e857f00000000000000000000000000000000000000000000000000000000000000008886866132ca565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062888b604051610f44929190918252602082015260400190565b60405180910390a4611045565b610f7d7f00000000000000000000000000000000000000000000000000000000000000008886866132ca565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062888b60405161103c929190918252602082015260400190565b60405180910390a45b505060016008555092949350505050565b6060806000806000806110688b612708565b905060006110758b612708565b60075490915073ffffffffffffffffffffffffffffffffffffffff908116908316811180156110cf57508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b1561111857600080546fffffffffffffffffffffffffffffffff8082168e9003167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b61117a8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168e6fffffffffffffffffffffffffffffffff166000613472565b6fffffffffffffffffffffffffffffffff9182169650811694506f7fffffffffffffffffffffffffffffff908c16111592506111e5915050576040517f35278d1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806111fc338d8d6111f78e614494565b6134d0565b6040805160028082526060820190925291985092945090925090816020015b604080518082019091526000808252602082015281526020019060019003908161121b57905050965060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200185815250876000815181106112a2576112a26145a0565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001848152508760018151811061130b5761130b6145a0565b60209081029190910101526040805160028082526060820190925290816020015b604080518082019091526000808252602082015281526020019060019003908161132c57905050955060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200183815250866000815181106113b3576113b36145a0565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001828152508660018151811061141c5761141c6145a0565b60209081029190910101526006805493909101700100000000000000000000000000000000949092016fffffffffffffffffffffffffffffffff80851682900381167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090951685178690048116849003169094029092179091556114a2878383896136dc565b6007546040517f3c5474df0000000000000000000000000000000000000000000000000000000081526009600482015260028c810b60248301528b810b60448301526fffffffffffffffffffffffffffffffff8b16606483015274010000000000000000000000000000000000000000909204820b90910b608482015273__$ce5bd159ffa25aa093db868fa3464622ad$__90633c5474df9060a40160206040518083038186803b15801561155657600080fd5b505af415801561156a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158e9190613eae565b6007805460029290920b62ffffff1674010000000000000000000000000000000000000000027fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff909216919091179055604080518381526020810183905233917f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a910160405180910390a25050955095509592505050565b60408051600280825260608083018452926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061167a5761167a6145a0565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106116e8576116e86145a0565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b600060085460021415611764576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600855600061177783850185613fdb565b905060006117888260200151612708565b73ffffffffffffffffffffffffffffffffffffffff16905060006117af8360600151612708565b60075460a085015160808601516040517faec6cbfe0000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff9485166024820181905294909316604484018190526064840192909252608483015291925073__$df040e0a7bda43e0bcaf2b8c2beb7d11e8$__9063aec6cbfe9060a40160206040518083038186803b15801561185a57600080fd5b505af415801561186e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189291906140a2565b94506000806118b0866101000151876020015188606001518a6134d0565b5090925090508115611932576118ee7f00000000000000000000000000000000000000000000000000000000000000008388610100015160006132ca565b600680546fffffffffffffffffffffffffffffffff808216859003167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b80156119a25761196a7f00000000000000000000000000000000000000000000000000000000000000008288610100015160006132ca565b600680546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000808304821685900382160291161790555b505080831080156119b257508181105b156119fa57600080546fffffffffffffffffffffffffffffffff8082168801167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b611a0c84602001518560600151613a0f565b60028054600354600154875160208901516040808b015160608c015160075492517f33440084000000000000000000000000000000000000000000000000000000008152600960048201526024810198909852604488019690965273ffffffffffffffffffffffffffffffffffffffff948516606488015292870b608487015290860b60a486015290850b60c485015291840b60e48401526fffffffffffffffffffffffffffffffff891661010484015274010000000000000000000000000000000000000000909104830b90920b61012482015290821661014482015273__$ce5bd159ffa25aa093db868fa3464622ad$__906333440084906101640160206040518083038186803b158015611b2257600080fd5b505af4158015611b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5a9190613eae565b600760146101000a81548162ffffff021916908360020b62ffffff160217905550600080611b8c8585858a6001613472565b6040805160028082526060820190925292945090925060009190816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611bab57905050905060405180606001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018860c0015115158152602001846fffffffffffffffffffffffffffffffff1681525081600081518110611c7457611c746145a0565b602002602001018190525060405180606001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018860e0015115158152602001836fffffffffffffffffffffffffffffffff1681525081600181518110611cfb57611cfb6145a0565b60200260200101819052503373ffffffffffffffffffffffffffffffffffffffff1663ced10b4982604051602001611d3391906141de565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401611d5e919061424f565b600060405180830381600087803b158015611d7857600080fd5b505af1158015611d8c573d6000803e3d6000fd5b5050505050816fffffffffffffffffffffffffffffffff16600014611e6957611dd47f0000000000000000000000000000000000000000000000000000000000000000613bba565b6006546fffffffffffffffffffffffffffffffff9081168401161115611e26576040517f840463aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546fffffffffffffffffffffffffffffffff8082168501167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b6fffffffffffffffffffffffffffffffff811615611f4757611eaa7f0000000000000000000000000000000000000000000000000000000000000000613bba565b6006546fffffffffffffffffffffffffffffffff70010000000000000000000000000000000090910481168301161115611f10576040517fe430204200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216850182160291161790555b600080611f5c886020015189606001516121a4565b6101208a0151919350915073ffffffffffffffffffffffffffffffffffffffff16156120825761010088015161012089015160208a015160608b01516101408c01516040517f6d59ebe100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485166004820152600293840b60248201529190920b60448201526fffffffffffffffffffffffffffffffff8d1660648201526084810186905260a4810185905260c4810191909152911690636d59ebe19060e401602060405180830381600087803b15801561204857600080fd5b505af115801561205c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208091906140a2565b505b610100880151604080516fffffffffffffffffffffffffffffffff80881682528616602082015273ffffffffffffffffffffffffffffffffffffffff909216917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a2505060016008555094979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b15801561216757600080fd5b505afa15801561217b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219f91906140a2565b600455565b600754600283810b80820b60009081526009602052604080822086850b850b835290822084546003549396879674010000000000000000000000000000000000000000909104810b95939492939192918791829182918291908a900b1261221857876001015493508760020154925061223c565b6001880154612227908761445b565b9350876002015485612239919061445b565b92505b8b60020b8960020b121561225b5750506001850154600286015461227f565b600187015461226a908761445b565b915086600201548561227c919061445b565b90505b8161228a858861445b565b612294919061445b565b9a50806122a1848761445b565b6122ab919061445b565b99505050505050505050509250929050565b600080600854600214156122fd576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260085560055460016fffffffffffffffffffffffffffffffff909116111561242b57600554612342906001906fffffffffffffffffffffffffffffffff166143fd565b600580547fffffffffffffffffffffffffffffffff000000000000000000000000000000001660011790556006805491935083916000906123969084906fffffffffffffffffffffffffffffffff166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555061242b7f0000000000000000000000000000000000000000000000000000000000000000836fffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000060006132ca565b60055460017001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115612572576005546124929060019070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166143fd565b600580547001000000000000000000000000000000006fffffffffffffffffffffffffffffffff918216811790925560068054939450849390926010926124dd9286929004166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506125727f0000000000000000000000000000000000000000000000000000000000000000826fffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000060006132ca565b60016008559091565b600080600854600214156125bb576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026008556125cd33878760006134d0565b5090925090506125df848383866136dc565b600680548391906000906126069084906fffffffffffffffffffffffffffffffff166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080600660108282829054906101000a90046fffffffffffffffffffffffffffffffff1661266991906143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f4a1c185b7b5da020829d63d69222d8602aa53a6b7800a73ee6e3e15a625d863d83836040516126f0929190918252602082015260400190565b60405180910390a26001600855909590945092505050565b60008060008360020b1261271f578260020b61272c565b8260020b61272c90614509565b90506127577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186144d3565b62ffffff16811115612795576040517ff87dc40c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600182166127b6577001000000000000000000000000000000006127c8565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156127fc576ffff97272373d413259a46990580e213a0260801c5b600482161561281b576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561283a576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612859576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612878576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612897576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156128b6576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156128d6576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156128f6576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612916576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612936576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612956576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612976576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612996576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156129b6576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156129d7576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156129f7576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612a16576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612a33576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612a7257807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81612a6e57612a6e614571565b0490505b640100000000810615612a86576001612a89565b60005b60ff16602082901c0192505050919050565b60008115612aca57612ac3612ab7606087901b86860386612af5565b85808204910615150190565b9050612aed565b83612adc606087901b86860386612b96565b81612ae957612ae9614571565b0490505b949350505050565b6000612b02848484612b96565b90508180612b1257612b12614571565b83850915612b4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110612b4657600080fd5b6001015b9392505050565b60008115612b7357612ac3858585036c01000000000000000000000000612af5565b612b8d858585036c01000000000000000000000000612b96565b95945050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8587098587029250828110838203039150508060001415612bee5760008411612be357600080fd5b508290049050612b4a565b808411612bfa57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000806000806000612c828d8d62ffffff16620f4240612af5565b9050612c8e818a614320565b9850612c9a818e61445b565b612ca49089614320565b97506000612cb5828d612710612af5565b9050612cc18189614320565b9750612ccd818361445b565b9150612ceb827001000000000000000000000000000000008d612b96565b612cf59088614320565b999e989d50969b5097995095975050505050505050565b600287810b900b6000908152602089905260408120600301548190612d479073ffffffffffffffffffffffffffffffffffffffff168961442e565b60028a810b900b600090815260208c90526040902060030180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790558315612eb9576002612db4848b614338565b612dbe9190614472565b60020b612e0857600289810b900b600090815260208b90526040902054612e0190660100000000000090046fffffffffffffffffffffffffffffffff168861445b565b9650612e47565b600289810b900b600090815260208b90526040902054612e4490660100000000000090046fffffffffffffffffffffffffffffffff1688614320565b96505b600289810b900b600090815260208b90526040902060010154612e6a908661445b565b60028a810b810b600090815260208d90526040902060018101929092550154612e93908761445b565b6002998a0b8a0b600090815260208c905260409020808b01919091555490980b97612fcd565b6002612ec5848b614338565b612ecf9190614472565b60020b612f1957600289810b900b600090815260208b90526040902054612f1290660100000000000090046fffffffffffffffffffffffffffffffff1688614320565b9650612f58565b600289810b900b600090815260208b90526040902054612f5590660100000000000090046fffffffffffffffffffffffffffffffff168861445b565b96505b600289810b810b600090815260208c9052604090200154612f79908661445b565b60028a810b810b600090815260208d9052604090209081019190915560010154612fa3908761445b565b6002998a0b8a0b600090815260208c9052604090206001810191909155546301000000900490980b975b509498969750505050505050565b821561312457600061300c7f0000000000000000000000000000000000000000000000000000000000000000613bba565b6006549091506000906130329085906fffffffffffffffffffffffffffffffff166142ec565b905081816fffffffffffffffffffffffffffffffff161115613080576040517f840463aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff838116919091178083558592916010916130e79185917001000000000000000000000000000000009004166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505050505050565b600061314f7f0000000000000000000000000000000000000000000000000000000000000000613bba565b60065490915060009061318990859070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166142ec565b905081816fffffffffffffffffffffffffffffffff1611156131d7576040517fe430204200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000008483160281811784558693926000926130e792869216176143fd565b821561329e5760038290556005805482919060109061326390849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166142ec565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550505050565b6002829055600580548291906000906132639084906fffffffffffffffffffffffffffffffff166142ec565b80156133b4576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152306024830152838116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4015b6040805180830381600087803b15801561337557600080fd5b505af1158015613389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ad91906140bb565b505061346c565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301528381166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc906084015b600060405180830381600087803b15801561345357600080fd5b505af1158015613467573d6000803e3d6000fd5b505050505b50505050565b60008084861161348f5761348884888886612b51565b90506134c6565b8685116134a9576134a284888886612a9b565b91506134c6565b6134b584868886612a9b565b91506134c384888786612b51565b90505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a60209081526040808320600287810b810b855290835281842086820b90910b8452909152812081908190818061352489896121a4565b9150915061356683600101548361353b919061445b565b84546fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000612b96565b955061357b83600201548261353b919061445b565b83549095506fffffffffffffffffffffffffffffffff1693506000600f88900b1215613605576135aa87614494565b835484906000906135ce9084906fffffffffffffffffffffffffffffffff166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b600087600f0b13156136c1578254879084906000906136379084906fffffffffffffffffffffffffffffffff166142ec565b82546101009290920a6fffffffffffffffffffffffffffffffff81810219909316918316021790915584547f000000000000000000000000000000000000000000000000000000000000000082169116111590506136c1576040517fb03425ae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018301919091556002909101559196909550909350915050565b8015613890576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152858116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b1580156137a657600080fd5b505af11580156137ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137de91906140bb565b50506040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152858116604483015260006064830152608482018490527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a40161335c565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301528581166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401600060405180830381600087803b15801561394e57600080fd5b505af1158015613962573d6000803e3d6000fd5b50506040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301528781166044830152606482018690527f000000000000000000000000000000000000000000000000000000000000000016925063f18d03cc9150608401613439565b613a397f000000000000000000000000000000000000000000000000000000000000000083614472565b60020b15613a73576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002613a9f7f000000000000000000000000000000000000000000000000000000000000000084614338565b613aa99190614472565b60020b15613ae3576040517ffdf1420200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613b0d7f000000000000000000000000000000000000000000000000000000000000000082614472565b60020b15613b47576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002613b737f000000000000000000000000000000000000000000000000000000000000000083614338565b613b7d9190614472565b60020b613bb6576040517fa9778c6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301523060248301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b158015613c4c57600080fd5b505afa158015613c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c8491906140a2565b92915050565b8035613c95816145fe565b919050565b8035613c9581614623565b8035613c9581614631565b600080600060608486031215613cc557600080fd5b8335613cd0816145fe565b92506020840135613ce081614631565b91506040840135613cf081614631565b809150509250925092565b60008060008060808587031215613d1157600080fd5b8451613d1c81614623565b602086015160408701519195509350613d34816145fe565b6060860151909250613d4581614623565b939692955090935050565b60008060208385031215613d6357600080fd5b823567ffffffffffffffff80821115613d7b57600080fd5b818501915085601f830112613d8f57600080fd5b813581811115613d9e57600080fd5b866020828501011115613db057600080fd5b60209290920196919550909350505050565b600060208284031215613dd457600080fd5b813567ffffffffffffffff80821115613dec57600080fd5b818401915084601f830112613e0057600080fd5b813581811115613e1257613e126145cf565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715613e5857613e586145cf565b81604052828152876020848701011115613e7157600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208284031215613ea357600080fd5b8135612b4a81614631565b600060208284031215613ec057600080fd5b8151612b4a81614631565b60008060408385031215613ede57600080fd5b8235613ee981614631565b91506020830135613ef981614631565b809150509250929050565b60008060008060808587031215613f1a57600080fd5b8435613f2581614631565b93506020850135613f3581614631565b92506040850135613f45816145fe565b91506060850135613d4581614623565b600080600080600060a08688031215613f6d57600080fd5b8535613f7881614631565b94506020860135613f8881614631565b935060408601356fffffffffffffffffffffffffffffffff81168114613fad57600080fd5b92506060860135613fbd816145fe565b91506080860135613fcd81614623565b809150509295509295909350565b60006101608284031215613fee57600080fd5b613ff66142c2565b613fff83613ca5565b815261400d60208401613ca5565b602082015261401e60408401613ca5565b604082015261402f60608401613ca5565b60608201526080830135608082015260a083013560a082015261405460c08401613c9a565b60c082015261406560e08401613c9a565b60e0820152610100614078818501613c8a565b9082015261012061408a848201613c8a565b90820152610140928301359281019290925250919050565b6000602082840312156140b457600080fd5b5051919050565b600080604083850312156140ce57600080fd5b505080516020909101519092909150565b600081518084526020808501945080840160005b83811015614130578151805173ffffffffffffffffffffffffffffffffffffffff16885283015183880152604090960195908201906001016140f3565b509495945050505050565b6020808252825182820181905260009190848201906040850190845b8181101561418957835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101614157565b50909695505050505050565b602081526000612b4a60208301846140df565b6060815260006141bb60608301866140df565b82810360208401526141cd81866140df565b915050826040830152949350505050565b602080825282518282018190526000919060409081850190868401855b82811015614242578151805173ffffffffffffffffffffffffffffffffffffffff1685528681015115158786015285015185850152606090930192908501906001016141fb565b5091979650505050505050565b600060208083528351808285015260005b8181101561427c57858101830151858201604001528201614260565b8181111561428e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b604051610160810167ffffffffffffffff811182821017156142e6576142e66145cf565b60405290565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561431757614317614542565b01949350505050565b6000821982111561433357614333614542565b500190565b60008160020b8360020b8061434f5761434f614571565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000831416156143a3576143a3614542565b90059392505050565b6000826143bb576143bb614571565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143f8576143f8614542565b500290565b60006fffffffffffffffffffffffffffffffff8381169083168181101561442657614426614542565b039392505050565b600073ffffffffffffffffffffffffffffffffffffffff8381169083168181101561442657614426614542565b60008282101561446d5761446d614542565b500390565b60008260020b8061448557614485614571565b808360020b0791505092915050565b600081600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114156144ca576144ca614542565b60000392915050565b60008160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008114156144ca576144ca614542565b60007f800000000000000000000000000000000000000000000000000000000000000082141561453b5761453b614542565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461462057600080fd5b50565b801515811461462057600080fd5b8060020b811461462057600080fdfea2646970667358221220b5f4ddca6d99127e73ff19f59eccaed3901aa2bb1db06cd142170afc64577eb564736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1A3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9DA12096 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0xBCDB4DAD GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xCF78756B GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xCF78756B EQ PUSH2 0x5DB JUMPI DUP1 PUSH4 0xF30DBA93 EQ PUSH2 0x5E4 JUMPI DUP1 PUSH4 0xFB39D628 EQ PUSH2 0x6BB JUMPI DUP1 PUSH4 0xFB5D80B3 EQ PUSH2 0x6CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBCDB4DAD EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x5CA JUMPI DUP1 PUSH4 0xCAA4B46A EQ PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xAACA1B4D GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0xAACA1B4D EQ PUSH2 0x3AE JUMPI DUP1 PUSH4 0xACFE88F8 EQ PUSH2 0x42F JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9DA12096 EQ PUSH2 0x37E JUMPI DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x387 JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6289DB82 GT PUSH2 0x150 JUMPI DUP1 PUSH4 0x7BA0E2E7 GT PUSH2 0x12A JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x316 JUMPI DUP1 PUSH4 0x8C347F9B EQ PUSH2 0x329 JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6289DB82 EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0x6D59D802 EQ PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x181 JUMPI DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x627DD56A EQ PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0x1A686502 EQ PUSH2 0x225 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1BB PUSH2 0x1B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D50 JUMP JUMPDEST PUSH2 0x700 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x241 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x275 PUSH2 0x270 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D50 JUMP JUMPDEST PUSH2 0x707 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C5 SWAP2 SWAP1 PUSH2 0x4195 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x290 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DC2 JUMP JUMPDEST PUSH2 0x70E JUMP JUMPDEST PUSH2 0x2A8 PUSH2 0x2A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F55 JUMP JUMPDEST PUSH2 0x1056 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x41A8 JUMP JUMPDEST PUSH2 0x2BF PUSH2 0x1626 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C5 SWAP2 SWAP1 PUSH2 0x413B JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV PUSH4 0xFFFFFFFF AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x324 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D50 JUMP JUMPDEST PUSH2 0x1725 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x37C PUSH2 0x2101 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BB PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1BB PUSH32 0x54726964656E743A436F6E63656E7472617465644C6971756964697479000000 DUP2 JUMP JUMPDEST PUSH2 0x401 PUSH2 0x3BC CALLDATASIZE PUSH1 0x4 PUSH2 0x3CB0 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x442 PUSH2 0x43D CALLDATASIZE PUSH1 0x4 PUSH2 0x3ECB JUMP JUMPDEST PUSH2 0x21A4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE PUSH3 0xFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0xC0 DUP4 ADD MSTORE PUSH32 0x0 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x1BB PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1FC PUSH2 0x22BD JUMP JUMPDEST PUSH2 0x1BB PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x65A PUSH2 0x5F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E91 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP1 DUP5 ADD SLOAD PUSH1 0x3 SWAP1 SWAP5 ADD SLOAD DUP4 DUP3 SIGNEXTEND SWAP5 PUSH4 0x1000000 DUP6 DIV SWAP1 SWAP3 SIGNEXTEND SWAP4 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP8 DUP9 SIGNEXTEND DUP2 MSTORE SWAP6 SWAP1 SWAP7 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x442 PUSH2 0x6C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F04 JUMP JUMPDEST PUSH2 0x257B JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND PUSH2 0x1FC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x74D JUMPI PUSH1 0x40 MLOAD PUSH32 0xF2E5B6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP6 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x76F SWAP2 SWAP1 PUSH2 0x3CFB JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH2 0x7A7 JUMPI PUSH1 0x2 SLOAD PUSH2 0x7AB JUMP JUMPDEST PUSH1 0x3 SLOAD JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH2 0x7BD JUMPI PUSH1 0x3 SLOAD PUSH2 0x7C1 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST DUP2 MSTORE PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 ADD DUP7 PUSH2 0x84B JUMPI PUSH1 0x7 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0x1000000 SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x86A JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0x2 SIGNEXTEND JUMPDEST PUSH1 0x2 SIGNEXTEND SWAP1 MSTORE PUSH1 0x1 SLOAD SWAP1 SWAP2 POP TIMESTAMP SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 DUP3 SUB SWAP1 DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0x8BB JUMPI POP PUSH1 0x0 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x97C JUMPI PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF DUP6 AND MUL OR SWAP1 SSTORE PUSH1 0x0 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP3 SWAP1 SHL DUP2 PUSH2 0x92E JUMPI PUSH2 0x92E PUSH2 0x4571 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP2 AND SWAP4 SWAP1 SWAP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND ADD SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST POP POP JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD ISZERO PUSH2 0xD0D JUMPI PUSH1 0x0 PUSH2 0x999 DUP3 PUSH2 0x100 ADD MLOAD PUSH2 0x2708 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP1 DUP8 ISZERO PUSH2 0xAE6 JUMPI PUSH1 0x0 PUSH2 0x9D1 DUP6 PUSH1 0xC0 ADD MLOAD DUP6 DUP8 PUSH1 0xA0 ADD MLOAD PUSH1 0x0 PUSH2 0x2A9B JUMP JUMPDEST SWAP1 POP DUP1 DUP6 PUSH1 0xE0 ADD MLOAD GT PUSH2 0xAA6 JUMPI PUSH1 0x0 PUSH1 0x60 DUP7 PUSH1 0xC0 ADD MLOAD SWAP1 SHL SWAP1 POP PUSH1 0x0 PUSH2 0xA19 DUP3 DUP9 PUSH1 0xA0 ADD MLOAD DUP10 PUSH1 0xE0 ADD MLOAD DUP11 PUSH1 0xA0 ADD MLOAD PUSH2 0xA0A SWAP2 SWAP1 PUSH2 0x43C0 JUMP JUMPDEST PUSH2 0xA14 SWAP1 DUP7 PUSH2 0x4320 JUMP JUMPDEST PUSH2 0x2AF5 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 GT ISZERO DUP1 ISZERO PUSH2 0xA2E JUMPI POP DUP7 PUSH1 0xA0 ADD MLOAD DUP2 LT JUMPDEST PUSH2 0xA79 JUMPI PUSH2 0xA60 DUP3 DUP9 PUSH1 0xE0 ADD MLOAD DUP10 PUSH1 0xA0 ADD MLOAD DUP6 PUSH2 0xA4B SWAP2 SWAP1 PUSH2 0x43AC JUMP JUMPDEST PUSH2 0xA55 SWAP2 SWAP1 PUSH2 0x4320 JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP JUMPDEST PUSH2 0xA8E DUP8 PUSH1 0xC0 ADD MLOAD DUP3 DUP10 PUSH1 0xA0 ADD MLOAD PUSH1 0x0 PUSH2 0x2B51 JUMP JUMPDEST PUSH1 0xA0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 PUSH1 0xE0 DUP9 ADD MSTORE SWAP4 POP PUSH2 0xAE0 SWAP1 POP JUMP JUMPDEST PUSH2 0xABB DUP6 PUSH1 0xC0 ADD MLOAD DUP6 DUP8 PUSH1 0xA0 ADD MLOAD PUSH1 0x0 PUSH2 0x2B51 JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD DUP6 SWAP1 MSTORE PUSH1 0xE0 DUP7 ADD DUP1 MLOAD SWAP2 SWAP5 POP PUSH1 0x1 SWAP4 POP DUP3 SWAP2 PUSH2 0xADC SWAP1 DUP4 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP1 MSTORE POP JUMPDEST POP PUSH2 0xBA4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAFD DUP6 PUSH1 0xC0 ADD MLOAD DUP7 PUSH1 0xA0 ADD MLOAD DUP7 PUSH1 0x0 PUSH2 0x2B51 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 PUSH1 0xE0 ADD MLOAD GT PUSH2 0xB68 JUMPI PUSH1 0x0 PUSH2 0xB2C DUP7 PUSH1 0xE0 ADD MLOAD PUSH13 0x1000000000000000000000000 DUP9 PUSH1 0xC0 ADD MLOAD PUSH2 0x2B96 JUMP JUMPDEST DUP7 PUSH1 0xA0 ADD MLOAD PUSH2 0xB3B SWAP2 SWAP1 PUSH2 0x4320 JUMP JUMPDEST SWAP1 POP PUSH2 0xB52 DUP7 PUSH1 0xC0 ADD MLOAD DUP8 PUSH1 0xA0 ADD MLOAD DUP4 PUSH1 0x0 PUSH2 0x2A9B JUMP JUMPDEST PUSH1 0xA0 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 PUSH1 0xE0 DUP8 ADD MSTORE SWAP3 POP PUSH2 0xBA2 JUMP JUMPDEST PUSH2 0xB7D DUP6 PUSH1 0xC0 ADD MLOAD DUP7 PUSH1 0xA0 ADD MLOAD DUP7 PUSH1 0x0 PUSH2 0x2A9B JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD DUP6 SWAP1 MSTORE PUSH1 0xE0 DUP7 ADD DUP1 MLOAD SWAP2 SWAP5 POP PUSH1 0x1 SWAP4 POP DUP3 SWAP2 PUSH2 0xB9E SWAP1 DUP4 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP1 MSTORE POP JUMPDEST POP JUMPDEST PUSH2 0xBE6 DUP3 PUSH32 0x0 PUSH1 0x4 SLOAD DUP8 PUSH1 0xC0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP15 DUP11 PUSH1 0x40 ADD MLOAD DUP12 PUSH1 0x60 ADD MLOAD PUSH2 0x2C67 JUMP JUMPDEST PUSH1 0x60 DUP9 ADD MSTORE PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x20 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP9 POP DUP1 ISZERO PUSH2 0xD05 JUMPI PUSH2 0xC64 PUSH1 0x9 DUP6 PUSH2 0x100 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH1 0xC0 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD DUP15 PUSH32 0x0 PUSH2 0x2D0C JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH2 0x100 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD DUP2 SWAP1 MSTORE PUSH2 0xD05 JUMPI PUSH2 0xC8A DUP5 PUSH2 0x100 ADD MLOAD PUSH2 0x2708 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0xA0 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD MLOAD PUSH1 0x1 SLOAD PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x80 DUP10 ADD MLOAD PUSH2 0xCF2 SWAP6 PUSH1 0x9 SWAP6 SWAP5 AND SWAP3 SWAP2 SWAP1 DUP15 PUSH32 0x0 PUSH2 0x2D0C JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH2 0x100 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD MSTORE JUMPDEST POP POP POP PUSH2 0x97F JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x0 DUP6 PUSH2 0xD80 JUMPI PUSH2 0x100 DUP3 ADD MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SIGNEXTEND PUSH2 0xD87 JUMP JUMPDEST DUP2 PUSH2 0x100 ADD MLOAD JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 SIGNEXTEND PUSH1 0x7 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x2 SIGNEXTEND PUSH1 0x2 SIGNEXTEND EQ PUSH2 0xE35 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 PUSH3 0xFFFFFF PUSH1 0x2 DUP6 SWAP1 SIGNEXTEND AND MUL OR SWAP1 SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH2 0xE40 DUP7 DUP7 DUP10 PUSH2 0x2FDB JUMP JUMPDEST PUSH2 0xE53 DUP7 DUP4 PUSH1 0x60 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD PUSH2 0x321D JUMP JUMPDEST DUP6 ISZERO PUSH2 0xF51 JUMPI PUSH2 0xE85 PUSH32 0x0 DUP9 DUP7 DUP7 PUSH2 0x32CA JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP9 DUP12 PUSH1 0x40 MLOAD PUSH2 0xF44 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1045 JUMP JUMPDEST PUSH2 0xF7D PUSH32 0x0 DUP9 DUP7 DUP7 PUSH2 0x32CA JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP9 DUP12 PUSH1 0x40 MLOAD PUSH2 0x103C SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP3 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1068 DUP12 PUSH2 0x2708 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1075 DUP12 PUSH2 0x2708 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP4 AND DUP2 GT DUP1 ISZERO PUSH2 0x10CF JUMPI POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT JUMPDEST ISZERO PUSH2 0x1118 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP15 SWAP1 SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x117A DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP15 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH2 0x3472 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP7 POP DUP2 AND SWAP5 POP PUSH16 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP13 AND GT ISZERO SWAP3 POP PUSH2 0x11E5 SWAP2 POP POP JUMPI PUSH1 0x40 MLOAD PUSH32 0x35278D1200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11FC CALLER DUP14 DUP14 PUSH2 0x11F7 DUP15 PUSH2 0x4494 JUMP JUMPDEST PUSH2 0x34D0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP9 POP SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x121B JUMPI SWAP1 POP POP SWAP7 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP DUP8 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x12A2 JUMPI PUSH2 0x12A2 PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE POP DUP8 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x130B JUMPI PUSH2 0x130B PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x132C JUMPI SWAP1 POP POP SWAP6 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP7 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x13B3 JUMPI PUSH2 0x13B3 PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP7 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x141C JUMPI PUSH2 0x141C PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x6 DUP1 SLOAD SWAP4 SWAP1 SWAP2 ADD PUSH17 0x100000000000000000000000000000000 SWAP5 SWAP1 SWAP3 ADD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND DUP3 SWAP1 SUB DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP6 AND DUP6 OR DUP7 SWAP1 DIV DUP2 AND DUP5 SWAP1 SUB AND SWAP1 SWAP5 MUL SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x14A2 DUP8 DUP4 DUP4 DUP10 PUSH2 0x36DC JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x3C5474DF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x9 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 DUP13 DUP2 SIGNEXTEND PUSH1 0x24 DUP4 ADD MSTORE DUP12 DUP2 SIGNEXTEND PUSH1 0x44 DUP4 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND PUSH1 0x84 DUP3 ADD MSTORE PUSH20 0x0 SWAP1 PUSH4 0x3C5474DF SWAP1 PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1556 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x156A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x158E SWAP2 SWAP1 PUSH2 0x3EAE JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND PUSH3 0xFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE CALLER SWAP2 PUSH32 0x49995E5DD6158CF69AD3E9777C46755A1A826A446C6416992167462DAD033B2A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP SWAP6 POP SWAP6 POP SWAP6 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x167A JUMPI PUSH2 0x167A PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x16E8 JUMPI PUSH2 0x16E8 PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x1764 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF2E5B6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 PUSH2 0x1777 DUP4 DUP6 ADD DUP6 PUSH2 0x3FDB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1788 DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x2708 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0x17AF DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x2708 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0x80 DUP7 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xAEC6CBFE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE SWAP5 SWAP1 SWAP4 AND PUSH1 0x44 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x64 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x84 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH20 0x0 SWAP1 PUSH4 0xAEC6CBFE SWAP1 PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x185A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x186E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1892 SWAP2 SWAP1 PUSH2 0x40A2 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 DUP1 PUSH2 0x18B0 DUP7 PUSH2 0x100 ADD MLOAD DUP8 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD DUP11 PUSH2 0x34D0 JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x1932 JUMPI PUSH2 0x18EE PUSH32 0x0 DUP4 DUP9 PUSH2 0x100 ADD MLOAD PUSH1 0x0 PUSH2 0x32CA JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP6 SWAP1 SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST DUP1 ISZERO PUSH2 0x19A2 JUMPI PUSH2 0x196A PUSH32 0x0 DUP3 DUP9 PUSH2 0x100 ADD MLOAD PUSH1 0x0 PUSH2 0x32CA JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND DUP6 SWAP1 SUB DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST POP POP DUP1 DUP4 LT DUP1 ISZERO PUSH2 0x19B2 JUMPI POP DUP2 DUP2 LT JUMPDEST ISZERO PUSH2 0x19FA JUMPI PUSH1 0x0 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP9 ADD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x1A0C DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD PUSH2 0x3A0F JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x3 SLOAD PUSH1 0x1 SLOAD DUP8 MLOAD PUSH1 0x20 DUP10 ADD MLOAD PUSH1 0x40 DUP1 DUP12 ADD MLOAD PUSH1 0x60 DUP13 ADD MLOAD PUSH1 0x7 SLOAD SWAP3 MLOAD PUSH32 0x3344008400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x9 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x44 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x64 DUP9 ADD MSTORE SWAP3 DUP8 SIGNEXTEND PUSH1 0x84 DUP8 ADD MSTORE SWAP1 DUP7 SIGNEXTEND PUSH1 0xA4 DUP7 ADD MSTORE SWAP1 DUP6 SIGNEXTEND PUSH1 0xC4 DUP6 ADD MSTORE SWAP2 DUP5 SIGNEXTEND PUSH1 0xE4 DUP5 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x104 DUP5 ADD MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP2 DIV DUP4 SIGNEXTEND SWAP1 SWAP3 SIGNEXTEND PUSH2 0x124 DUP3 ADD MSTORE SWAP1 DUP3 AND PUSH2 0x144 DUP3 ADD MSTORE PUSH20 0x0 SWAP1 PUSH4 0x33440084 SWAP1 PUSH2 0x164 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1B36 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B5A SWAP2 SWAP1 PUSH2 0x3EAE JUMP JUMPDEST PUSH1 0x7 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP1 PUSH2 0x1B8C DUP6 DUP6 DUP6 DUP11 PUSH1 0x1 PUSH2 0x3472 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD MSTORE DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x1BAB JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xC0 ADD MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1C74 JUMPI PUSH2 0x1C74 PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xE0 ADD MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1CFB JUMPI PUSH2 0x1CFB PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCED10B49 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1D33 SWAP2 SWAP1 PUSH2 0x41DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1D5E SWAP2 SWAP1 PUSH2 0x424F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D8C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 EQ PUSH2 0x1E69 JUMPI PUSH2 0x1DD4 PUSH32 0x0 PUSH2 0x3BBA JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP5 ADD AND GT ISZERO PUSH2 0x1E26 JUMPI PUSH1 0x40 MLOAD PUSH32 0x840463AA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP6 ADD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x1F47 JUMPI PUSH2 0x1EAA PUSH32 0x0 PUSH2 0x3BBA JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 AND DUP4 ADD AND GT ISZERO PUSH2 0x1F10 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE430204200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND DUP6 ADD DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F5C DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x60 ADD MLOAD PUSH2 0x21A4 JUMP JUMPDEST PUSH2 0x120 DUP11 ADD MLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x2082 JUMPI PUSH2 0x100 DUP9 ADD MLOAD PUSH2 0x120 DUP10 ADD MLOAD PUSH1 0x20 DUP11 ADD MLOAD PUSH1 0x60 DUP12 ADD MLOAD PUSH2 0x140 DUP13 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x6D59EBE100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND PUSH1 0x24 DUP3 ADD MSTORE SWAP2 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xA4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 AND SWAP1 PUSH4 0x6D59EBE1 SWAP1 PUSH1 0xE4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2048 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x205C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2080 SWAP2 SWAP1 PUSH2 0x40A2 JUMP JUMPDEST POP JUMPDEST PUSH2 0x100 DUP9 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND DUP3 MSTORE DUP7 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x217B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x219F SWAP2 SWAP1 PUSH2 0x40A2 JUMP JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x2 DUP4 DUP2 SIGNEXTEND DUP1 DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP7 DUP6 SIGNEXTEND DUP6 SIGNEXTEND DUP4 MSTORE SWAP1 DUP3 KECCAK256 DUP5 SLOAD PUSH1 0x3 SLOAD SWAP4 SWAP7 DUP8 SWAP7 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 SIGNEXTEND SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 DUP8 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 DUP11 SWAP1 SIGNEXTEND SLT PUSH2 0x2218 JUMPI DUP8 PUSH1 0x1 ADD SLOAD SWAP4 POP DUP8 PUSH1 0x2 ADD SLOAD SWAP3 POP PUSH2 0x223C JUMP JUMPDEST PUSH1 0x1 DUP9 ADD SLOAD PUSH2 0x2227 SWAP1 DUP8 PUSH2 0x445B JUMP JUMPDEST SWAP4 POP DUP8 PUSH1 0x2 ADD SLOAD DUP6 PUSH2 0x2239 SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP3 POP JUMPDEST DUP12 PUSH1 0x2 SIGNEXTEND DUP10 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x225B JUMPI POP POP PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x2 DUP7 ADD SLOAD PUSH2 0x227F JUMP JUMPDEST PUSH1 0x1 DUP8 ADD SLOAD PUSH2 0x226A SWAP1 DUP8 PUSH2 0x445B JUMP JUMPDEST SWAP2 POP DUP7 PUSH1 0x2 ADD SLOAD DUP6 PUSH2 0x227C SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 PUSH2 0x228A DUP6 DUP9 PUSH2 0x445B JUMP JUMPDEST PUSH2 0x2294 SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP11 POP DUP1 PUSH2 0x22A1 DUP5 DUP8 PUSH2 0x445B JUMP JUMPDEST PUSH2 0x22AB SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP10 POP POP POP POP POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x8 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x22FD JUMPI PUSH1 0x40 MLOAD PUSH32 0xF2E5B6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x5 SLOAD PUSH1 0x1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND GT ISZERO PUSH2 0x242B JUMPI PUSH1 0x5 SLOAD PUSH2 0x2342 SWAP1 PUSH1 0x1 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP2 SWAP4 POP DUP4 SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x2396 SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x242B PUSH32 0x0 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x32CA JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x2572 JUMPI PUSH1 0x5 SLOAD PUSH2 0x2492 SWAP1 PUSH1 0x1 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH17 0x100000000000000000000000000000000 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP4 SWAP5 POP DUP5 SWAP4 SWAP1 SWAP3 PUSH1 0x10 SWAP3 PUSH2 0x24DD SWAP3 DUP7 SWAP3 SWAP1 DIV AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2572 PUSH32 0x0 DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x32CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x8 SSTORE SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x8 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x25BB JUMPI PUSH1 0x40 MLOAD PUSH32 0xF2E5B6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH2 0x25CD CALLER DUP8 DUP8 PUSH1 0x0 PUSH2 0x34D0 JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x25DF DUP5 DUP4 DUP4 DUP7 PUSH2 0x36DC JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD DUP4 SWAP2 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x2606 SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x6 PUSH1 0x10 DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2669 SWAP2 SWAP1 PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A1C185B7B5DA020829D63D69222D8602AA53A6B7800A73EE6E3E15A625D863D DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x26F0 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 PUSH1 0x8 SSTORE SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x271F JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x272C JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x272C SWAP1 PUSH2 0x4509 JUMP JUMPDEST SWAP1 POP PUSH2 0x2757 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x44D3 JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 GT ISZERO PUSH2 0x2795 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF87DC40C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x27B6 JUMPI PUSH17 0x100000000000000000000000000000000 PUSH2 0x27C8 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x27FC JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x281B JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x283A JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x2859 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x2878 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x2897 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x28B6 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x28D6 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x28F6 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x2916 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x2936 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x2956 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x2976 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x2996 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x29B6 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x29D7 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x29F7 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x2A16 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x2A33 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x2A72 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 PUSH2 0x2A6E JUMPI PUSH2 0x2A6E PUSH2 0x4571 JUMP JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x2A86 JUMPI PUSH1 0x1 PUSH2 0x2A89 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x2ACA JUMPI PUSH2 0x2AC3 PUSH2 0x2AB7 PUSH1 0x60 DUP8 SWAP1 SHL DUP7 DUP7 SUB DUP7 PUSH2 0x2AF5 JUMP JUMPDEST DUP6 DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x2AED JUMP JUMPDEST DUP4 PUSH2 0x2ADC PUSH1 0x60 DUP8 SWAP1 SHL DUP7 DUP7 SUB DUP7 PUSH2 0x2B96 JUMP JUMPDEST DUP2 PUSH2 0x2AE9 JUMPI PUSH2 0x2AE9 PUSH2 0x4571 JUMP JUMPDEST DIV SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B02 DUP5 DUP5 DUP5 PUSH2 0x2B96 JUMP JUMPDEST SWAP1 POP DUP2 DUP1 PUSH2 0x2B12 JUMPI PUSH2 0x2B12 PUSH2 0x4571 JUMP JUMPDEST DUP4 DUP6 MULMOD ISZERO PUSH2 0x2B4A JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT PUSH2 0x2B46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x2B73 JUMPI PUSH2 0x2AC3 DUP6 DUP6 DUP6 SUB PUSH13 0x1000000000000000000000000 PUSH2 0x2AF5 JUMP JUMPDEST PUSH2 0x2B8D DUP6 DUP6 DUP6 SUB PUSH13 0x1000000000000000000000000 PUSH2 0x2B96 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP8 MULMOD DUP6 DUP8 MUL SWAP3 POP DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH1 0x0 EQ ISZERO PUSH2 0x2BEE JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x2BE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x2B4A JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x2BFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2C82 DUP14 DUP14 PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x2AF5 JUMP JUMPDEST SWAP1 POP PUSH2 0x2C8E DUP2 DUP11 PUSH2 0x4320 JUMP JUMPDEST SWAP9 POP PUSH2 0x2C9A DUP2 DUP15 PUSH2 0x445B JUMP JUMPDEST PUSH2 0x2CA4 SWAP1 DUP10 PUSH2 0x4320 JUMP JUMPDEST SWAP8 POP PUSH1 0x0 PUSH2 0x2CB5 DUP3 DUP14 PUSH2 0x2710 PUSH2 0x2AF5 JUMP JUMPDEST SWAP1 POP PUSH2 0x2CC1 DUP2 DUP10 PUSH2 0x4320 JUMP JUMPDEST SWAP8 POP PUSH2 0x2CCD DUP2 DUP4 PUSH2 0x445B JUMP JUMPDEST SWAP2 POP PUSH2 0x2CEB DUP3 PUSH17 0x100000000000000000000000000000000 DUP14 PUSH2 0x2B96 JUMP JUMPDEST PUSH2 0x2CF5 SWAP1 DUP9 PUSH2 0x4320 JUMP JUMPDEST SWAP10 SWAP15 SWAP9 SWAP14 POP SWAP7 SWAP12 POP SWAP8 SWAP10 POP SWAP6 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP8 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x3 ADD SLOAD DUP2 SWAP1 PUSH2 0x2D47 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH2 0x442E JUMP JUMPDEST PUSH1 0x2 DUP11 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 ISZERO PUSH2 0x2EB9 JUMPI PUSH1 0x2 PUSH2 0x2DB4 DUP5 DUP12 PUSH2 0x4338 JUMP JUMPDEST PUSH2 0x2DBE SWAP2 SWAP1 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH2 0x2E08 JUMPI PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2E01 SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH2 0x445B JUMP JUMPDEST SWAP7 POP PUSH2 0x2E47 JUMP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2E44 SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH2 0x4320 JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x2E6A SWAP1 DUP7 PUSH2 0x445B JUMP JUMPDEST PUSH1 0x2 DUP11 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SWAP3 SWAP1 SWAP3 SSTORE ADD SLOAD PUSH2 0x2E93 SWAP1 DUP8 PUSH2 0x445B JUMP JUMPDEST PUSH1 0x2 SWAP10 DUP11 SIGNEXTEND DUP11 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 DUP12 ADD SWAP2 SWAP1 SWAP2 SSTORE SLOAD SWAP1 SWAP9 SIGNEXTEND SWAP8 PUSH2 0x2FCD JUMP JUMPDEST PUSH1 0x2 PUSH2 0x2EC5 DUP5 DUP12 PUSH2 0x4338 JUMP JUMPDEST PUSH2 0x2ECF SWAP2 SWAP1 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH2 0x2F19 JUMPI PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2F12 SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH2 0x4320 JUMP JUMPDEST SWAP7 POP PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2F55 SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH2 0x445B JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 ADD SLOAD PUSH2 0x2F79 SWAP1 DUP7 PUSH2 0x445B JUMP JUMPDEST PUSH1 0x2 DUP11 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x1 ADD SLOAD PUSH2 0x2FA3 SWAP1 DUP8 PUSH2 0x445B JUMP JUMPDEST PUSH1 0x2 SWAP10 DUP11 SIGNEXTEND DUP11 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH4 0x1000000 SWAP1 DIV SWAP1 SWAP9 SIGNEXTEND SWAP8 JUMPDEST POP SWAP5 SWAP9 SWAP7 SWAP8 POP POP POP POP POP POP POP JUMP JUMPDEST DUP3 ISZERO PUSH2 0x3124 JUMPI PUSH1 0x0 PUSH2 0x300C PUSH32 0x0 PUSH2 0x3BBA JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x3032 SWAP1 DUP6 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x3080 JUMPI PUSH1 0x40 MLOAD PUSH32 0x840463AA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR DUP1 DUP4 SSTORE DUP6 SWAP3 SWAP2 PUSH1 0x10 SWAP2 PUSH2 0x30E7 SWAP2 DUP6 SWAP2 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x314F PUSH32 0x0 PUSH2 0x3BBA JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x3189 SWAP1 DUP6 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x31D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE430204200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 DUP5 DUP4 AND MUL DUP2 DUP2 OR DUP5 SSTORE DUP7 SWAP4 SWAP3 PUSH1 0x0 SWAP3 PUSH2 0x30E7 SWAP3 DUP7 SWAP3 AND OR PUSH2 0x43FD JUMP JUMPDEST DUP3 ISZERO PUSH2 0x329E JUMPI PUSH1 0x3 DUP3 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD DUP3 SWAP2 SWAP1 PUSH1 0x10 SWAP1 PUSH2 0x3263 SWAP1 DUP5 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD DUP3 SWAP2 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x3263 SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST DUP1 ISZERO PUSH2 0x33B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3389 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x33AD SWAP2 SWAP1 PUSH2 0x40BB JUMP JUMPDEST POP POP PUSH2 0x346C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3453 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3467 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 DUP7 GT PUSH2 0x348F JUMPI PUSH2 0x3488 DUP5 DUP9 DUP9 DUP7 PUSH2 0x2B51 JUMP JUMPDEST SWAP1 POP PUSH2 0x34C6 JUMP JUMPDEST DUP7 DUP6 GT PUSH2 0x34A9 JUMPI PUSH2 0x34A2 DUP5 DUP9 DUP9 DUP7 PUSH2 0x2A9B JUMP JUMPDEST SWAP2 POP PUSH2 0x34C6 JUMP JUMPDEST PUSH2 0x34B5 DUP5 DUP7 DUP9 DUP7 PUSH2 0x2A9B JUMP JUMPDEST SWAP2 POP PUSH2 0x34C3 DUP5 DUP9 DUP8 DUP7 PUSH2 0x2B51 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x2 DUP8 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP2 SWAP1 DUP2 SWAP1 DUP2 DUP1 PUSH2 0x3524 DUP10 DUP10 PUSH2 0x21A4 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3566 DUP4 PUSH1 0x1 ADD SLOAD DUP4 PUSH2 0x353B SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST DUP5 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH17 0x100000000000000000000000000000000 PUSH2 0x2B96 JUMP JUMPDEST SWAP6 POP PUSH2 0x357B DUP4 PUSH1 0x2 ADD SLOAD DUP3 PUSH2 0x353B SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST DUP4 SLOAD SWAP1 SWAP6 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 POP PUSH1 0x0 PUSH1 0xF DUP9 SWAP1 SIGNEXTEND SLT ISZERO PUSH2 0x3605 JUMPI PUSH2 0x35AA DUP8 PUSH2 0x4494 JUMP JUMPDEST DUP4 SLOAD DUP5 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x35CE SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x0 DUP8 PUSH1 0xF SIGNEXTEND SGT ISZERO PUSH2 0x36C1 JUMPI DUP3 SLOAD DUP8 SWAP1 DUP5 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x3637 SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST DUP3 SLOAD PUSH2 0x100 SWAP3 SWAP1 SWAP3 EXP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 MUL NOT SWAP1 SWAP4 AND SWAP2 DUP4 AND MUL OR SWAP1 SWAP2 SSTORE DUP5 SLOAD PUSH32 0x0 DUP3 AND SWAP2 AND GT ISZERO SWAP1 POP PUSH2 0x36C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB03425AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP4 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE SWAP2 SWAP7 SWAP1 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3890 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37DE SWAP2 SWAP1 PUSH2 0x40BB JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH2 0x335C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x394E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3962 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP7 SWAP1 MSTORE PUSH32 0x0 AND SWAP3 POP PUSH4 0xF18D03CC SWAP2 POP PUSH1 0x84 ADD PUSH2 0x3439 JUMP JUMPDEST PUSH2 0x3A39 PUSH32 0x0 DUP4 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x3A73 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCE8EF7FC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH2 0x3A9F PUSH32 0x0 DUP5 PUSH2 0x4338 JUMP JUMPDEST PUSH2 0x3AA9 SWAP2 SWAP1 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x3AE3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xFDF1420200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3B0D PUSH32 0x0 DUP3 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x3B47 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCE8EF7FC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH2 0x3B73 PUSH32 0x0 DUP4 PUSH2 0x4338 JUMP JUMPDEST PUSH2 0x3B7D SWAP2 SWAP1 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH2 0x3BB6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9778C6300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3C60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3C84 SWAP2 SWAP1 PUSH2 0x40A2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C95 DUP2 PUSH2 0x45FE JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C95 DUP2 PUSH2 0x4623 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C95 DUP2 PUSH2 0x4631 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3CC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3CD0 DUP2 PUSH2 0x45FE JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3CE0 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x3CF0 DUP2 PUSH2 0x4631 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3D11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH2 0x3D1C DUP2 PUSH2 0x4623 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x40 DUP8 ADD MLOAD SWAP2 SWAP6 POP SWAP4 POP PUSH2 0x3D34 DUP2 PUSH2 0x45FE JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x3D45 DUP2 PUSH2 0x4623 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3D7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3D8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3D9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3DB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3DD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3DEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3E12 JUMPI PUSH2 0x3E12 PUSH2 0x45CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3E58 JUMPI PUSH2 0x3E58 PUSH2 0x45CF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3E71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2B4A DUP2 PUSH2 0x4631 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2B4A DUP2 PUSH2 0x4631 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3EE9 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3EF9 DUP2 PUSH2 0x4631 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3F1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3F25 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3F35 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x3F45 DUP2 PUSH2 0x45FE JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x3D45 DUP2 PUSH2 0x4623 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3F6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3F78 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3F88 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3FAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x3FBD DUP2 PUSH2 0x45FE JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x3FCD DUP2 PUSH2 0x4623 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3FEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3FF6 PUSH2 0x42C2 JUMP JUMPDEST PUSH2 0x3FFF DUP4 PUSH2 0x3CA5 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x400D PUSH1 0x20 DUP5 ADD PUSH2 0x3CA5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x401E PUSH1 0x40 DUP5 ADD PUSH2 0x3CA5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x402F PUSH1 0x60 DUP5 ADD PUSH2 0x3CA5 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x4054 PUSH1 0xC0 DUP5 ADD PUSH2 0x3C9A JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x4065 PUSH1 0xE0 DUP5 ADD PUSH2 0x3C9A JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x4078 DUP2 DUP6 ADD PUSH2 0x3C8A JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 PUSH2 0x408A DUP5 DUP3 ADD PUSH2 0x3C8A JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x140 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4130 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 MSTORE DUP4 ADD MLOAD DUP4 DUP9 ADD MSTORE PUSH1 0x40 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x40F3 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4189 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4157 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2B4A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x40DF JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x41BB PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x40DF JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x41CD DUP2 DUP7 PUSH2 0x40DF JUMP JUMPDEST SWAP2 POP POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4242 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 DUP2 ADD MLOAD ISZERO ISZERO DUP8 DUP7 ADD MSTORE DUP6 ADD MLOAD DUP6 DUP6 ADD MSTORE PUSH1 0x60 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x41FB JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x427C JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x4260 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x428E JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x160 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x42E6 JUMPI PUSH2 0x42E6 PUSH2 0x45CF JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x4317 JUMPI PUSH2 0x4317 PUSH2 0x4542 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x4333 JUMPI PUSH2 0x4333 PUSH2 0x4542 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND DUP4 PUSH1 0x2 SIGNEXTEND DUP1 PUSH2 0x434F JUMPI PUSH2 0x434F PUSH2 0x4571 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000 DUP4 EQ AND ISZERO PUSH2 0x43A3 JUMPI PUSH2 0x43A3 PUSH2 0x4542 JUMP JUMPDEST SWAP1 SDIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x43BB JUMPI PUSH2 0x43BB PUSH2 0x4571 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x43F8 JUMPI PUSH2 0x43F8 PUSH2 0x4542 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x4426 JUMPI PUSH2 0x4426 PUSH2 0x4542 JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x4426 JUMPI PUSH2 0x4426 PUSH2 0x4542 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x446D JUMPI PUSH2 0x446D PUSH2 0x4542 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x2 SIGNEXTEND DUP1 PUSH2 0x4485 JUMPI PUSH2 0x4485 PUSH2 0x4571 JUMP JUMPDEST DUP1 DUP4 PUSH1 0x2 SIGNEXTEND SMOD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xF SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000000000000000000000 DUP2 EQ ISZERO PUSH2 0x44CA JUMPI PUSH2 0x44CA PUSH2 0x4542 JUMP JUMPDEST PUSH1 0x0 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000 DUP2 EQ ISZERO PUSH2 0x44CA JUMPI PUSH2 0x44CA PUSH2 0x4542 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ ISZERO PUSH2 0x453B JUMPI PUSH2 0x453B PUSH2 0x4542 JUMP JUMPDEST POP PUSH1 0x0 SUB SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x4620 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 DELEGATECALL 0xDD 0xCA PUSH14 0x99127E73FF19F59ECCAED3901AA2 0xBB SAR 0xB0 PUSH13 0xD142170AFC64577EB564736F6C PUSH4 0x43000807 STOP CALLER ",
              "sourceMap": "875:27442:46:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19674:99;;;;;;:::i;:::-;;:::i;:::-;;;12453:25:64;;;12441:2;12426:18;19674:99:46;;;;;;;;27935:149;28039:8;;;;;;;28069;;;;27935:149;;;;15926:34:64;15987:15;;;15969:34;;16039:15;;;;16034:2;16019:18;;16012:43;15889:18;27935:149:46;15742:319:64;1941:24:46;;;;;;;;;;;;15695:34:64;15683:47;;;15665:66;;15653:2;15638:18;1941:24:46;15519:218:64;11455:113:46;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12404:7231::-;;;;;;:::i;:::-;;:::i;9257:2192::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;26425:174::-;;;:::i;:::-;;;;;;;:::i;28090:225::-;28245:19;;28090:225;;;28245:19;;;18161:74:64;;28293:15:46;;;;;;18266:2:64;18251:18;;18244:51;18134:18;28090:225:46;17989:312:64;5659:3432:46;;;;;;:::i;:::-;;:::i;27552:159::-;27663:5;;27552:159;;;27663:5;;;17846:74:64;;27693:11:46;;;;;;;;17956:21:64;;17951:2;17936:18;;17929:49;17819:18;27552:159:46;17676:308:64;19831:97:46;;;:::i;:::-;;2082:31;;;;;;1264:81;;;;;2677;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17543:34:64;17531:47;;;17513:66;;17610:2;17595:18;;17588:34;;;;17638:18;;;17631:34;17501:2;17486:18;2677:81:46;17311:360:64;25025:1394:46;;;;;;:::i;:::-;;:::i;:::-;;;;18662:25:64;;;18718:2;18703:18;;18696:34;;;;18635:18;25025:1394:46;18488:248:64;26886:660:46;;;;16808:34:64;27276:18:46;16796:47:64;16778:66;;16863:8;27319:11:46;16907:15:64;;16902:2;16887:18;;16880:43;27351:7:46;16959:15:64;16939:18;;;16932:43;;;;16994:42;27413:8:46;17072:15:64;;17067:2;17052:18;;17045:43;27440:5:46;17125:15:64;;17119:3;17104:19;;17097:44;27473:14:46;17178:15:64;;17172:3;17157:19;;17150:44;27507:6:46;17231:15:64;;17225:3;17210:19;;17203:44;27533:6:46;17284:15:64;17278:3;17263:19;;17256:44;16765:3;16750:19;26886:660:46;16390:916:64;2215:21:46;;;;;;19983:526;;;:::i;2177:31::-;;;;;;2630:41;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13456:1:64;13445:21;;;13427:40;;13503:21;;;;13498:2;13483:18;;13476:49;13573:34;13561:47;;;13541:18;;;13534:75;;;;13640:2;13625:18;;13618:34;13683:3;13668:19;;13661:35;;;;13745:42;13733:55;;;13727:3;13712:19;;13705:84;13414:3;13399:19;2630:41:46;13148:647:64;11680:499:46;;;;;;:::i;:::-;;:::i;27717:212::-;27857:17;;;;;;;27905;;;;27717:212;;19674:99;19739:7;19758:8;;;11455:113;11515:26;11553:8;;;12404:7231;12467:17;4016:8;;4028:1;4016:13;4012:34;;;4038:8;;;;;;;;;;;;;;4012:34;4067:1;4056:8;:12;;;;12497:15:::1;12514:16:::0;12532:17:::1;12551:16:::0;12582:4:::1;12571:48;;;;;;;;;;;;:::i;:::-;12496:123;;;;;;;;12630:22;12655:472;;;;;;;;12690:1;12655:472;;;;12721:1;12655:472;;;;12749:1;12655:472;;;;12782:10;:48;;12814:16;;12782:48;;;12795:16;;12782:48;12655:472;;;;12862:10;:48;;12894:16;;12862:48;;;12875:16;;12862:48;12655:472:::0;;12946:5:::1;::::0;::::1;;12655:472;::::0;::::1;::::0;12946:5:::1;12992:9:::0;::::1;;12655:472:::0;;;;;;;;;;;;13062:10;:54:::1;;13095:11;::::0;;;::::1;;::::0;;::::1;13089:18:::0;::::1;::::0;::::1;;::::0;;;:5:::1;:18;::::0;;;;:27;;;::::1;::::0;::::1;13062:54;;;13075:11;::::0;;;::::1;;;13062:54;12655:472;;::::0;;13246:15:::1;::::0;12630:497;;-1:-1:-1;13182:15:46::1;::::0;13246;;::::1;;;13226:36:::0;;::::1;::::0;13345:8;;;;;:25:::1;;-1:-1:-1::0;13369:1:46::1;13357:9:::0;::::1;;:13:::0;;13345:25:::1;13341:174;;;13390:15;:35:::0;;;::::1;::::0;::::1;::::0;::::1;;;::::0;;-1:-1:-1;13490:9:46;::::1;;13483:3;13475:11:::0;;::::1;13490:9:::0;13474:25:::1;;;;:::i;:::-;13443:19;:57:::0;;;;::::1;13474:25:::0;;;::::1;13443:57;::::0;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;13341:174:::1;13138:387;;13535:5299;13542:11;::::0;::::1;::::0;:16;13535:5299:::1;;13574:21;13606:50;13634:5;:21;;;13606:27;:50::i;:::-;13598:59;;13574:83;;13671:14;13703:10:::0;13740::::1;13736:3410;;;13959:13;13975:80;13990:5;:22;;;14014:13;14029:5;:18;;;14049:5;13975:14;:80::i;:::-;13959:96;;14093:5;14078;:11;;;:20;14074:1831;;14183:23;14235:2;14209:5;:22;;;:28;;14183:54;;14740:16;14792:114;14818:15;14835:5;:18;;;14894:5;:11;;;14873:5;:18;;;:32;;;;:::i;:::-;14855:50;::::0;:15;:50:::1;:::i;:::-;14792:25;:114::i;:::-;14740:188;;14974:8;14957:13;:25;;:58;;;;;14997:5;:18;;;14986:8;:29;14957:58;14951:308;;15142:93;15167:15;15223:5;:11;;;15202:5;:18;;;15184:15;:36;;;;:::i;:::-;:50;;;;:::i;:::-;690:9:30::0;;;704;;701:16;;686:32;;569:165;15142:93:46::1;15123:113;;;;14951:308;15394:75;15409:5;:22;;;15433:8;15443:5;:18;;;15463:5;15394:14;:75::i;:::-;15491:18;::::0;::::1;:29:::0;;;;15556:1:::1;15542:11;::::0;::::1;:15:::0;15385:84;-1:-1:-1;14074:1831:46::1;::::0;-1:-1:-1;14074:1831:46::1;;15674:80;15689:5;:22;;;15713:13;15728:5;:18;;;15748:5;15674:14;:80::i;:::-;15776:18;::::0;::::1;:34:::0;;;15866:11:::1;::::0;::::1;:20:::0;;15665:89;;-1:-1:-1;15840:4:46::1;::::0;-1:-1:-1;15881:5:46;;15866:20:::1;::::0;15881:5;;15866:20:::1;:::i;:::-;::::0;;-1:-1:-1;14074:1831:46::1;13752:2167;13736:3410;;;16072:13;16088:80;16103:5;:22;;;16127:5;:18;;;16147:13;16162:5;16088:14;:80::i;:::-;16072:96;;16206:5;16191;:11;;;:20;16187:945;;16364:16;16428:81;16444:5;:11;;;16457:27;16486:5;:22;;;16428:15;:81::i;:::-;16383:5;:18;;;:126;;;;:::i;:::-;16364:145;;16636:75;16651:5;:22;;;16675:5;:18;;;16695:8;16705:5;16636:14;:75::i;:::-;16733:18;::::0;::::1;:29:::0;;;;16798:1:::1;16784:11;::::0;::::1;:15:::0;16627:84;-1:-1:-1;16187:945:46::1;;;16901:80;16916:5;:22;;;16940:5;:18;;;16960:13;16975:5;16901:14;:80::i;:::-;17003:18;::::0;::::1;:34:::0;;;17093:11:::1;::::0;::::1;:20:::0;;16892:89;;-1:-1:-1;17067:4:46::1;::::0;-1:-1:-1;17108:5:46;;17093:20:::1;::::0;17108:5;;17093:20:::1;:::i;:::-;::::0;;-1:-1:-1;16187:945:46::1;15925:1221;13736:3410;17374:285;17410:6;17434:7;17459:6;;17483:5;:22;;;17523:5;:20;;;17561:9;17588:5;:17;;;17623:5;:22;;;17374:18;:285::i;:::-;17348:22;::::0;::::1;17295:364:::0;17329:17:::1;::::0;::::1;17295:364:::0;17296:20:::1;::::0;::::1;17295:364:::0;;;;;-1:-1:-1;17673:1151:46;::::1;;;17752:337;17785:5;17812;:21;;;17855:19;;;;;;;;;;;17896:5;:22;;;17940:5;:22;;;17984:5;:22;;;18028:10;18060:11;17752;:337::i;:::-;17702:387;::::0;;::::1;::::0;::::1;17727:21;::::0;::::1;17702:387:::0;17703:22:::1;::::0;::::1;17702:387:::0;;;18107:703:::1;;18295:50;18323:5;:21;;;18295:27;:50::i;:::-;18287:59;::::0;;::::1;18266:18;::::0;::::1;:80:::0;18486:21:::1;::::0;::::1;::::0;18533:19:::1;::::0;18578:22:::1;::::0;::::1;::::0;18626::::1;::::0;::::1;::::0;18674::::1;::::0;::::1;::::0;18418:373:::1;::::0;18455:5:::1;::::0;18486:21;18533:19:::1;::::0;18578:22;18626;18722:10;18758:11:::1;18418;:373::i;:::-;18368:423;::::0;;::::1;::::0;::::1;18393:21;::::0;::::1;18368:423:::0;18369:22:::1;::::0;::::1;18368:423:::0;18107:703:::1;13560:5274;;;13535:5299;;;18860:18;::::0;::::1;::::0;18844:5:::1;:35:::0;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;18913:10:46;:78:::1;;18956:21;::::0;::::1;::::0;18950:28:::1;::::0;;::::1;::::0;::::1;;::::0;;;:5:::1;:28;::::0;;;;:41;;::::1;18913:78;;;18926:5;:21;;;18913:78;18890:101;;19021:14;19006:29;;:11;;;;;;;;;;;:29;;;19002:145;;19051:11;:28:::0;;;::::1;::::0;::::1;;::::0;;::::1;;;;::::0;;19113:22:::1;::::0;::::1;::::0;-1:-1:-1;19093:43:46;;;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;19002:145:::1;19157:57;19173:10;19193:8;19204:9;19157:15;:57::i;:::-;19225:75;19237:10;19249:5;:22;;;19281:5;:17;;;19225:11;:75::i;:::-;19315:10;19311:318;;;19341:52;19351:6;19359:9;19370;19381:11;19341:9;:52::i;:::-;19436:6;19412:52;;19428:6;19412:52;;19417:9;19412:52;;;19444:8;19454:9;19412:52;;;;;;18662:25:64::0;;;18718:2;18703:18;;18696:34;18650:2;18635:18;;18488:248;19412:52:46::1;;;;;;;;19311:318;;;19495:52;19505:6;19513:9;19524;19535:11;19495:9;:52::i;:::-;19590:6;19566:52;;19582:6;19566:52;;19571:9;19566:52;;;19598:8;19608:9;19566:52;;;;;;18662:25:64::0;;;18718:2;18703:18;;18696:34;18650:2;18635:18;;18488:248;19566:52:46::1;;;;;;;;19311:318;-1:-1:-1::0;;4100:1:46;4089:8;:12;-1:-1:-1;12404:7231:46;;;-1:-1:-1;;;;12404:7231:46:o;9257:2192::-;9454:43;9511:40;9565:20;9610:15;9635;9675:18;9696:34;9724:5;9696:27;:34::i;:::-;9675:55;;9744:18;9765:34;9793:5;9765:27;:34::i;:::-;9836:5;;9744:55;;-1:-1:-1;9836:5:46;;;;;9888:25;;;-1:-1:-1;9888:54:46;;;;;9932:10;9917:25;;:12;:25;;;9888:54;9884:79;;;9944:9;:19;;;;;;;;;;;;;;;;;9884:79;10013:214;10070:10;10062:19;;10107:10;10099:19;;10144:12;10136:21;;10183:6;10175:15;;10208:5;10013:31;:214::i;:::-;9992:235;;;;;-1:-1:-1;9992:235:46;;;-1:-1:-1;10349:16:46;10332:34;;;;10328:57;;-1:-1:-1;10328:57:46;;-1:-1:-1;;10328:57:46;10375:10;;;;;;;;;;;;;;10328:57;10400:19;;10509:58;10525:10;10537:5;10544;10551:15;10559:6;10551:15;:::i;:::-;10509;:58::i;:::-;10601:20;;;10619:1;10601:20;;;;;;;;;10466:101;;-1:-1:-1;10466:101:46;;-1:-1:-1;10466:101:46;;-1:-1:-1;10601:20:46;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10601:20:46;;;;;;;;;;;;;;;10582:39;;10657:45;;;;;;;;10677:6;10657:45;;;;;;10693:7;10657:45;;;10635:16;10652:1;10635:19;;;;;;;;:::i;:::-;;;;;;:67;;;;10738:45;;;;;;;;10758:6;10738:45;;;;;;10774:7;10738:45;;;10716:16;10733:1;10716:19;;;;;;;;:::i;:::-;;;;;;;;;;:67;10814:20;;;10832:1;10814:20;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;10814:20:46;;;;;;;;;;;;;;;10798:36;;10867:49;;;;;;;;10887:6;10867:49;;;;;;10903:11;10867:49;;;10848:13;10862:1;10848:16;;;;;;;;:::i;:::-;;;;;;:68;;;;10949:49;;;;;;;;10969:6;10949:49;;;;;;10985:11;10949:49;;;10930:13;10944:1;10930:16;;;;;;;;:::i;:::-;;;;;;;;;;:68;11162:8;:28;;11081:22;;;;11204:28;11041:22;;;;11162:28;;;;;;;;;;;;;;;11204;;;;;;;;;;;;;;;;;;11253:61;11273:9;11041:22;11081;11302:11;11253:19;:61::i;:::-;11381:11;;11339:54;;;;;11352:5;11339:54;;;14097:25:64;11381:11:46;14158:21:64;;;14138:18;;;14131:49;14216:21;;;14196:18;;;14189:49;14286:34;14274:47;;14254:18;;;14247:75;11381:11:46;;;;;;14359:21:64;;;14338:19;;;14331:50;11339:5:46;;:12;;14069:19:64;;11339:54:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11325:11;:68;;;;;;;;;;;;;;;;;;;;;11408:34;;;18662:25:64;;;18718:2;18703:18;;18696:34;;;11413:10:46;;11408:34;;18635:18:64;11408:34:46;;;;;;;9600:1849;;9257:2192;;;;;;;;;:::o;26425:174::-;26520:16;;;26534:1;26520:16;;;26476:23;26520:16;;;;;26476:23;26520:16;;;;;;;;;;-1:-1:-1;26520:16:46;26511:25;;26558:6;26546;26553:1;26546:9;;;;;;;;:::i;:::-;;;;;;:18;;;;;;;;;;;26586:6;26574;26581:1;26574:9;;;;;;;;:::i;:::-;;;;;;:18;;;;;;;;;;;26425:174;:::o;5659:3432::-;5724:18;4016:8;;4028:1;4016:13;4012:34;;;4038:8;;;;;;;;;;;;;;4012:34;4067:1;4056:8;:12;5754:28:::1;5785:30;::::0;;::::1;5796:4:::0;5785:30:::1;:::i;:::-;5754:61;;5826:18;5855:45;5883:10;:16;;;5855:27;:45::i;:::-;5847:54;;5826:75;;5911:18;5940:45;5968:10;:16;;;5940:27;:45::i;:::-;6027:5;::::0;6176:25:::1;::::0;::::1;::::0;6215::::1;::::0;::::1;::::0;6057:193:::1;::::0;;;;::::1;::::0;::::1;19008:25:64::0;;;5932:54:46::1;::::0;;::::1;19049:18:64::0;;;19042:34;;;6027:5:46;;;::::1;19092:18:64::0;;;19085:34;;;19135:18;;;19128:34;;;;19178:19;;;19171:35;5932:54:46;;-1:-1:-1;6057:8:46::1;::::0;:31:::1;::::0;18980:19:64;;6057:193:46::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6044:206;;6286:19;6307::::0;6332:184:::1;6365:10;:24;;;6407:10;:16;;;6441:10;:16;;;6490:10;6332:15;:184::i;:::-;-1:-1:-1::0;6285:231:46;;-1:-1:-1;6285:231:46;-1:-1:-1;6534:15:46;;6530:167:::1;;6569:63;6579:6;6587:11;6600:10;:24;;;6626:5;6569:9;:63::i;:::-;6650:8;:32:::0;;::::1;::::0;;::::1;::::0;;::::1;;::::0;;;::::1;;::::0;;6530:167:::1;6714:15:::0;;6710:167:::1;;6749:63;6759:6;6767:11;6780:10;:24;;;6806:5;6749:9;:63::i;:::-;6830:8;:32:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;::::1;;::::0;;6710:167:::1;6261:626;;6938:12;6925:10;:25;:54;;;;;6969:10;6954:12;:25;6925:54;6921:92;;;6981:9;:32:::0;;::::1;::::0;;::::1;::::0;::::1;;::::0;;;::::1;;::::0;;6921:92:::1;7034:54;7053:10;:16;;;7071:10;:16;;;7034:18;:54::i;:::-;7158:16;::::0;;7188::::1;::::0;7218:19:::1;::::0;7251;;7284:16:::1;::::0;::::1;::::0;7314:19:::1;::::0;;::::1;::::0;7347:16:::1;::::0;::::1;::::0;7410:11:::1;::::0;7113:353;;;;;7139:5:::1;7113:353;::::0;::::1;14850:25:64::0;14891:18;;;14884:34;;;;14934:18;;;14927:34;;;;7218:19:46::1;::::0;;::::1;15038:18:64::0;;;15031:43;15111:21;;;15090:19;;;15083:50;15170:21;;;15149:19;;;15142:50;15229:21;;;15208:19;;;15201:50;15288:21;;;15267:19;;;15260:50;15359:34;15347:47;;15326:19;;;15319:76;7410:11:46;;;::::1;::::0;::::1;15432:21:64::0;;;15411:19;;;15404:50;15491:16;;;15470:19;;;15463:45;7113:5:46::1;::::0;:12:::1;::::0;14822:19:64;;7113:353:46::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7099:11;;:367;;;;;;;;;;;;;;;;;;;;7478:21;7501::::0;7526:157:::1;7571:10;7595;7619:12;7645:10;7669:4;7526:31;:157::i;:::-;7758:34;::::0;;7790:1:::1;7758:34:::0;;;;;::::1;::::0;;;7477:206;;-1:-1:-1;7477:206:46;;-1:-1:-1;7708:47:46::1;::::0;7758:34;::::1;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;7758:34:46;;;;;;;::::1;::::0;::::1;;;;;7708:84;;7824:73;;;;;;;;7850:6;7824:73;;;;;;7858:10;:23;;;7824:73;;;;;;7883:13;7824:73;;;;::::0;7806:12:::1;7819:1;7806:15;;;;;;;;:::i;:::-;;;;;;:91;;;;7929:73;;;;;;;;7955:6;7929:73;;;;;;7963:10;:23;;;7929:73;;;;;;7988:13;7929:73;;;;::::0;7911:12:::1;7924:1;7911:15;;;;;;;;:::i;:::-;;;;;;:91;;;;8031:10;8016:46;;;8074:12;8063:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;8016:72;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7694:405;8137:13;:18;;8154:1;8137:18;8133:171;;8206:16;8215:6;8206:8;:16::i;:::-;8195:8;::::0;::::1;::::0;;::::1;8179:24:::0;::::1;:43;;8175:71;;;8231:15;;;;;;;;;;;;;;8175:71;8264:8;:25:::0;;::::1;::::0;;::::1;::::0;::::1;;::::0;;;::::1;;::::0;;8133:171:::1;8322:18;::::0;::::1;::::0;8318:171:::1;;8391:16;8400:6;8391:8;:16::i;:::-;8380:8;::::0;::::1;::::0;;;::::1;::::0;::::1;8364:24:::0;::::1;:43;;8360:71;;;8416:15;;;;;;;;;;;;;;8360:71;8449:8;:25:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;;::::0;::::1;;::::0;;8318:171:::1;8510:18;8530::::0;8552:50:::1;8567:10;:16;;;8585:10;:16;;;8552:14;:50::i;:::-;8617:28;::::0;::::1;::::0;8509:93;;-1:-1:-1;8509:93:46;-1:-1:-1;8617:42:46::1;;::::0;8613:396:::1;;8692:24;::::0;::::1;::::0;8756:28:::1;::::0;::::1;::::0;8802:16:::1;::::0;::::1;::::0;8836::::1;::::0;::::1;::::0;8963:21:::1;::::0;::::1;::::0;8675:323:::1;::::0;;;;:63:::1;9289:55:64::0;;;8675:323:46::1;::::0;::::1;9271:74:64::0;9392:1;9381:21;;;9361:18;;;9354:49;9439:21;;;;9419:18;;;9412:49;9509:34;9497:47;;9477:18;;;9470:75;9561:19;;;9554:35;;;9605:19;;;9598:35;;;9649:19;;;9642:35;;;;8675:63:46;::::1;::::0;::::1;::::0;9243:19:64;;8675:323:46::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8613:396;9029:24;::::0;::::1;::::0;9024:60:::1;::::0;;15926:34:64;15987:15;;;15969:34;;16039:15;;16034:2;16019:18;;16012:43;9024:60:46::1;::::0;;::::1;::::0;::::1;::::0;15889:18:64;9024:60:46::1;;;;;;;-1:-1:-1::0;;4100:1:46;4089:8;:12;-1:-1:-1;5659:3432:46;;;-1:-1:-1;;;;;;;5659:3432:46:o;19831:97::-;19897:14;19881:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19872:6;:49;19831:97::o;25025:1394::-;25186:11;;;25235:16;;;;;;25104:24;25235:16;;;:5;:16;;;;;;25288;;;;;;;;;;25390;;25444;;25104:24;;;;25186:11;;;;;;;25235:16;;25288;;25390;;25444;25104:24;;;;;;;;25607;;;;-1:-1:-1;25603:318:46;;25665:5;:23;;;25647:41;;25720:5;:23;;;25702:41;;25603:318;;;25812:23;;;;25792:43;;:17;:43;:::i;:::-;25774:61;;25887:5;:23;;;25867:17;:43;;;;:::i;:::-;25849:61;;25603:318;25949:9;25935:23;;:11;:23;;;25931:317;;;-1:-1:-1;;25992:23:46;;;;26047;;;;25931:317;;;26139:23;;;;26119:43;;:17;:43;:::i;:::-;26101:61;;26214:5;:23;;;26194:17;:43;;;;:::i;:::-;26176:61;;25931:317;26315:15;26277:35;26297:15;26277:17;:35;:::i;:::-;:53;;;;:::i;:::-;26258:72;-1:-1:-1;26397:15:46;26359:35;26379:15;26359:17;:35;:::i;:::-;:53;;;;:::i;:::-;26340:72;;25156:1263;;;;;;;;;25025:1394;;;;;:::o;19983:526::-;20034:15;20051;4016:8;;4028:1;4016:13;4012:34;;;4038:8;;;;;;;;;;;;;;4012:34;4067:1;4056:8;:12;20082:17:::1;::::0;20102:1:::1;20082:17;::::0;;::::1;:21;20078:208;;;20129:17;::::0;:21:::1;::::0;20149:1:::1;::::0;20129:17:::1;;:21;:::i;:::-;20164:17;:21:::0;;;::::1;20184:1;20164:21;::::0;;20199:8:::1;:19:::0;;20119:31;;-1:-1:-1;20119:31:46;;20164:17:::1;::::0;20199:19:::1;::::0;20119:31;;20164:21:::1;20199:19;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20232:43;20242:6;20250:7;20232:43;;20259:8;20269:5;20232:9;:43::i;:::-;20299:17;::::0;20319:1:::1;20299:17:::0;;;::::1;;;:21;20295:208;;;20346:17;::::0;:21:::1;::::0;20366:1:::1;::::0;20346:17;;::::1;;;:21;:::i;:::-;20381:17;:21:::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;20416:8:::1;:19:::0;;20336:31;;-1:-1:-1;20336:31:46;;20416:8;;20381:17:::1;::::0;20416:19:::1;::::0;20336:31;;20416:19;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20449:43;20459:6;20467:7;20449:43;;20476:8;20486:5;20449:9;:43::i;:::-;4100:1:::0;4089:8;:12;19983:526;;:::o;11680:499::-;11819:19;11840;4016:8;;4028:1;4016:13;4012:34;;;4038:8;;;;;;;;;;;;;;4012:34;4067:1;4056:8;:12;11902:44:::1;11918:10;11930:5:::0;11937;11944:1:::1;11902:15;:44::i;:::-;-1:-1:-1::0;11871:75:46;;-1:-1:-1;11871:75:46;-1:-1:-1;11957:69:46::1;11977:9:::0;11871:75;;12014:11;11957:19:::1;:69::i;:::-;12037:8;:32:::0;;12057:11;;12037:8;::::1;::::0;:32:::1;::::0;12057:11;;12037:32:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12099:11;12079:8;;:32;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12135:10;12127:45;;;12147:11;12160;12127:45;;;;;;18662:25:64::0;;;18718:2;18703:18;;18696:34;18650:2;18635:18;;18488:248;12127:45:46::1;;;;;;;;4100:1:::0;4089:8;:12;11680:499;;;;-1:-1:-1;11680:499:46;-1:-1:-1;;;11680:499:46:o;1488:2733:28:-;1551:20;1583:15;1608:1;1601:4;:8;;;:57;;1652:4;1645:12;;1601:57;;;1628:4;1621:12;;1620:13;;;:::i;:::-;1583:75;-1:-1:-1;705:9:28;540:7;705:9;:::i;:::-;1682:25;;1672:7;:35;1668:65;;;1716:17;;;;;;;;;;;;;;1668:65;1767:13;1793:3;1783:13;;:93;;1841:35;1783:93;;;1804:34;1783:93;1767:109;;;-1:-1:-1;1904:3:28;1894:13;;:18;1890:83;;1931:34;1923:42;1970:3;1922:51;1890:83;2001:3;1991:13;;:18;1987:83;;2028:34;2020:42;2067:3;2019:51;1987:83;2098:3;2088:13;;:18;2084:83;;2125:34;2117:42;2164:3;2116:51;2084:83;2195:4;2185:14;;:19;2181:84;;2223:34;2215:42;2262:3;2214:51;2181:84;2293:4;2283:14;;:19;2279:84;;2321:34;2313:42;2360:3;2312:51;2279:84;2391:4;2381:14;;:19;2377:84;;2419:34;2411:42;2458:3;2410:51;2377:84;2489:4;2479:14;;:19;2475:84;;2517:34;2509:42;2556:3;2508:51;2475:84;2587:5;2577:15;;:20;2573:85;;2616:34;2608:42;2655:3;2607:51;2573:85;2686:5;2676:15;;:20;2672:85;;2715:34;2707:42;2754:3;2706:51;2672:85;2785:5;2775:15;;:20;2771:85;;2814:34;2806:42;2853:3;2805:51;2771:85;2884:5;2874:15;;:20;2870:85;;2913:34;2905:42;2952:3;2904:51;2870:85;2983:6;2973:16;;:21;2969:86;;3013:34;3005:42;3052:3;3004:51;2969:86;3083:6;3073:16;;:21;3069:86;;3113:34;3105:42;3152:3;3104:51;3069:86;3183:6;3173:16;;:21;3169:86;;3213:34;3205:42;3252:3;3204:51;3169:86;3283:6;3273:16;;:21;3269:86;;3313:34;3305:42;3352:3;3304:51;3269:86;3383:7;3373:17;;:22;3369:86;;3414:33;3406:41;3452:3;3405:50;3369:86;3483:7;3473:17;;:22;3469:85;;3514:32;3506:40;3551:3;3505:49;3469:85;3582:7;3572:17;;:22;3568:83;;3613:30;3605:38;3648:3;3604:47;3568:83;3679:7;3669:17;;:22;3665:78;;3710:25;3702:33;3740:3;3701:42;3665:78;3769:1;3762:4;:8;;;3758:47;;;3800:5;3780:17;:25;;;;;:::i;:::-;;3772:33;;3758:47;4181:7;4172:5;:17;:22;:30;;4201:1;4172:30;;;4197:1;4172:30;4155:48;;4165:2;4156:5;:11;;4155:48;4132:72;;1743:2472;1573:2648;1488:2733;;;:::o;703:505:25:-;852:10;902:7;898:294;;;934:117;959:79;998:2;985:9;:15;;1015:10;1002;:23;1027:10;959:25;:79::i;:::-;1040:10;690:9:30;;;704;;701:16;;686:32;;569:165;934:117:25;929:122;;898:294;;;1167:10;1095:69;1124:2;1111:9;:15;;1141:10;1128;:23;1153:10;1095:15;:69::i;:::-;:82;;;;;:::i;:::-;;1090:87;;898:294;703:505;;;;;;:::o;5281:362:26:-;5403:14;5438:25;5445:1;5448;5451:11;5438:6;:25::i;:::-;5429:34;;5514:11;5501:25;;;;;:::i;:::-;5511:1;5508;5501:25;:30;5497:130;;5568:17;5559:6;:26;5551:35;;;;;;5604:8;;5497:130;5281:362;;;;;:::o;221:476:25:-;370:10;420:7;416:265;;;452:90;478:9;502:10;489;:23;514:27;452:25;:90::i;416:265::-;586:80;602:9;626:10;613;:23;638:27;586:15;:80::i;:::-;581:85;221:476;-1:-1:-1;;;;;221:476:25:o;841:4151:26:-;953:14;;;1524:6;1521:1;1518;1511:20;1564:1;1561;1557:9;1548:18;;1619:5;1615:2;1612:13;1604:5;1600:2;1596:14;1592:34;1583:43;;;1720:5;1729:1;1720:10;1716:203;;;1772:1;1758:11;:15;1750:24;;;;;;-1:-1:-1;1833:23:26;;;;-1:-1:-1;1891:13:26;;1716:203;2059:5;2045:11;:19;2037:28;;;;;;2367:17;2451:11;2448:1;2445;2438:25;2846:12;2869:20;;;2861:43;;3011:22;;;;;3882:1;3863;:15;;3862:21;;4125:17;;;4121:21;;4114:28;4188:17;;;4184:21;;4177:28;4252:17;;;4248:21;;4241:28;4316:17;;;4312:21;;4305:28;4380:17;;;4376:21;;4369:28;4445:17;;;4441:21;;;4434:28;3425:12;;;;3421:23;;;3446:1;3417:31;2597:20;;;2586:32;;;3484:12;;;;2644:21;;;;3155:16;;;;3475:21;;;;4937:11;;;;;-1:-1:-1;;841:4151:26;;;;;:::o;217:1012:27:-;530:7;551;572;593;625:17;645:47;671:6;679:7;645:47;;688:3;645:25;:47::i;:::-;625:67;-1:-1:-1;703:27:27;625:67;703:27;;:::i;:::-;;-1:-1:-1;754:18:27;763:9;754:6;:18;:::i;:::-;741:31;;;;:::i;:::-;;;844:16;863:49;889:9;900:6;908:3;863:25;:49::i;:::-;844:68;-1:-1:-1;923:23:27;844:68;923:23;;:::i;:::-;;-1:-1:-1;1015:21:27;1028:8;1015:21;;:::i;:::-;;;1066:81;1082:9;1093:35;1130:16;1066:15;:81::i;:::-;1047:100;;;;:::i;:::-;1166:14;;1182:9;;-1:-1:-1;1193:11:27;;-1:-1:-1;1047:100:27;;-1:-1:-1;217:1012:27;;-1:-1:-1;;;;;;;;217:1012:27:o;633:1777:29:-;1035:22;;;;;;941:7;1035:22;;;;;;;;;;:43;;;941:7;;1013:65;;1035:43;;1013:19;:65;:::i;:::-;967:22;;;;;;;;;;;;;;;;;:43;;:111;;;;;;;;;;;;;;;1089:1263;;;;1219:1;1179:36;1203:11;1179:15;:36;:::i;:::-;1178:42;;;;:::i;:::-;:47;;1174:258;;1265:22;;;;;;;;;;;;;;;;;:32;1245:52;;1265:32;;;;;1245:52;;:::i;:::-;;;1174:258;;;1385:22;;;;;;;;;;;;;;;;;:32;1365:52;;1385:32;;;;;1365:52;;:::i;:::-;;;1174:258;1507:22;;;;;;;;;;;;;;;;;:40;;;1488:59;;:16;:59;:::i;:::-;1445:22;;;;;;;;;;;;;;;;;:40;;;:102;;;;1623:40;;1604:59;;:16;:59;:::i;:::-;1561:22;;;;;;;;;;;;;;;;;:40;;;:102;;;;1695:35;;;;;1089:1263;;;1863:1;1823:36;1847:11;1823:15;:36;:::i;:::-;1822:42;;;;:::i;:::-;:47;;1818:229;;1909:22;;;;;;;;;;;;;;;;;:32;1889:52;;1909:32;;;;;1889:52;;:::i;:::-;;;1818:229;;;2000:22;;;;;;;;;;;;;;;;;:32;1980:52;;2000:32;;;;;1980:52;;:::i;:::-;;;1818:229;2122:22;;;;;;;;;;;;;;;;;:40;;2103:59;;:16;:59;:::i;:::-;2060:22;;;;;;;;;;;;;;;;;:40;;;:102;;;;2238:40;;;2219:59;;:16;:59;:::i;:::-;2176:22;;;;;;;;;;;;;;;;;:40;;;:102;;;;2310:31;;;;;;;;1089:1263;-1:-1:-1;2369:16:29;;2387:15;;-1:-1:-1;;;;;;;633:1777:29:o;20871:715:46:-;21003:10;20999:581;;;21029:16;21048;21057:6;21048:8;:16::i;:::-;21099:8;;21029:35;;-1:-1:-1;21078:18:46;;21099:19;;21110:8;;21099;;:19;:::i;:::-;21078:40;;21158:8;21144:10;21136:19;;:30;21132:58;;;21175:15;;;;;;;;;;;;;;21132:58;21204:8;:21;;;;;;;;;;;;;;;21259:9;;21204:8;21239;;:30;;21259:9;;21239:30;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21015:294;;20871:715;;;:::o;20999:581::-;21329:16;21348;21357:6;21348:8;:16::i;:::-;21399:8;;21329:35;;-1:-1:-1;21378:18:46;;21399:19;;21410:8;;21399;;;;;:19;:::i;:::-;21378:40;;21458:8;21444:10;21436:19;;:30;21432:58;;;21475:15;;;;;;;;;;;;;;21432:58;21504:8;:21;;;;;;;;;;;;;;;;21559:9;;21504:8;-1:-1:-1;;21539:30:46;;21559:9;;21539:30;;;:::i;21592:371::-;21729:10;21725:232;;;21755:16;:34;;;21803:17;:32;;21824:11;;21803:17;;;:32;;21824:11;;21803:32;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20871:715;;;:::o;21725:232::-;21866:16;:34;;;21914:17;:32;;21935:11;;21914:17;;;:32;;21935:11;;21914:32;;;:::i;23350:315::-;23491:11;23487:172;;;23518:51;;;;;:14;8262:15:64;;;23518:51:46;;;8244:34:64;23548:4:46;8294:18:64;;;8287:43;8366:15;;;8346:18;;;8339:43;23559:1:46;8398:18:64;;;8391:34;8441:19;;;8434:35;;;23518:5:46;:14;;;;8155:19:64;;23518:51:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;23487:172;;;23600:48;;;;;:14;8790:15:64;;;23600:48:46;;;8772:34:64;23630:4:46;8822:18:64;;;8815:43;8894:15;;;8874:18;;;8867:43;8926:18;;;8919:34;;;23600:5:46;:14;;;;8683:19:64;;23600:48:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23487:172;23350:315;;;;:::o;2348:924:25:-;2550:20;2572;2622:12;2608:10;:26;2604:662;;2726:64;2741:15;2758:10;2770;2782:7;2726:14;:64::i;:::-;2703:88;;2604:662;;;2828:10;2812:12;:26;2808:458;;2930:64;2945:15;2962:10;2974;2986:7;2930:14;:64::i;:::-;2907:88;;2808:458;;;3084:66;3099:15;3116:12;3130:10;3142:7;3084:14;:66::i;:::-;3061:90;;3188:66;3203:15;3220:10;3232:12;3246:7;3188:14;:66::i;:::-;3165:90;;2808:458;2348:924;;;;;;;;:::o;21969:1232:46:-;22274:16;;;22135:19;22274:16;;;:9;:16;;;;;;;;:23;;;;;;;;;;;;;;:30;;;;;;;;;;;;;22135:19;;;;;;22366:28;22291:5;22298;22366:14;:28::i;:::-;22315:79;;;;22418:166;22464:8;:29;;;22447:14;:46;;;;:::i;:::-;22507:18;;;;22539:35;22418:15;:166::i;:::-;22404:180;;22609:166;22655:8;:29;;;22638:14;:46;;;;:::i;22609:166::-;22801:18;;22595:180;;-1:-1:-1;22801:18:46;;;-1:-1:-1;22801:18:46;22834:10;;;;;22830:79;;;22890:7;22891:6;22890:7;:::i;:::-;22860:38;;:8;;:18;;:38;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22830:79;22932:1;22923:6;:10;;;22919:163;;;22949:37;;22979:6;;22949:8;;:18;;:37;;22979:6;;22949:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;23004:18;;23025;23004:39;;:18;;:39;23000:71;;-1:-1:-1;23000:71:46;;23052:19;;;;;;;;;;;;;;23000:71;23092:29;;;:46;;;;23148:29;;;;:46;21969:1232;;;;-1:-1:-1;21969:1232:46;;-1:-1:-1;21969:1232:46;-1:-1:-1;;21969:1232:46:o;23671:463::-;23825:11;23821:307;;;23852:53;;;;;:14;23867:6;8262:15:64;;23852:53:46;;;8244:34:64;23883:4:46;8294:18:64;;;8287:43;8366:15;;;8346:18;;;8339:43;-1:-1:-1;8398:18:64;;;8391:34;8441:19;;;8434:35;;;23852:5:46;:14;;;;8155:19:64;;23852:53:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;23919:53:46;;;;;:14;23934:6;8262:15:64;;23919:53:46;;;8244:34:64;23950:4:46;8294:18:64;;;8287:43;8366:15;;;8346:18;;;8339:43;-1:-1:-1;8398:18:64;;;8391:34;8441:19;;;8434:35;;;23919:5:46;:14;;;;8155:19:64;;23919:53:46;7916:559:64;23821:307:46;24003:50;;;;;:14;24018:6;8790:15:64;;24003:50:46;;;8772:34:64;24034:4:46;8822:18:64;;;8815:43;8894:15;;;8874:18;;;8867:43;8926:18;;;8919:34;;;24003:5:46;:14;;;;8683:19:64;;24003:50:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24067:50:46;;;;;:14;24082:6;8790:15:64;;24067:50:46;;;8772:34:64;24098:4:46;8822:18:64;;;8815:43;8894:15;;;8874:18;;;8867:43;8926:18;;;8919:34;;;24067:5:46;:14;;-1:-1:-1;24067:14:46;;-1:-1:-1;8683:19:64;;24067:50:46;8480:479:64;20515:350:46;20597:26;20611:11;20597:5;:26;:::i;:::-;:31;;;20593:57;;20637:13;;;;;;;;;;;;;;20593:57;20695:1;20665:26;20679:11;20665:5;:26;:::i;:::-;20664:32;;;;:::i;:::-;:37;;;20660:61;;20710:11;;;;;;;;;;;;;;20660:61;20735:26;20749:11;20735:5;:26;:::i;:::-;:31;;;20731:57;;20775:13;;;;;;;;;;;;;;20731:57;20833:1;20803:26;20817:11;20803:5;:26;:::i;:::-;20802:32;;;;:::i;:::-;:37;;20798:60;;20848:10;;;;;;;;;;;;;;20798:60;20515:350;;:::o;23207:137::-;23300:37;;;;;:15;7837::64;;;23300:37:46;;;7819:34:64;23331:4:46;7869:18:64;;;7862:43;23263:15:46;;23300:5;:15;;;;;;7731:18:64;;23300:37:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23290:47;23207:137;-1:-1:-1;;23207:137:46:o;14:134:64:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:128::-;218:20;;247:28;218:20;247:28;:::i;286:130::-;352:20;;381:29;352:20;381:29;:::i;421:521::-;494:6;502;510;563:2;551:9;542:7;538:23;534:32;531:52;;;579:1;576;569:12;531:52;618:9;605:23;637:31;662:5;637:31;:::i;:::-;687:5;-1:-1:-1;744:2:64;729:18;;716:32;757:31;716:32;757:31;:::i;:::-;807:7;-1:-1:-1;866:2:64;851:18;;838:32;879:31;838:32;879:31;:::i;:::-;929:7;919:17;;;421:521;;;;;:::o;947:577::-;1046:6;1054;1062;1070;1123:3;1111:9;1102:7;1098:23;1094:33;1091:53;;;1140:1;1137;1130:12;1091:53;1172:9;1166:16;1191:28;1213:5;1191:28;:::i;:::-;1283:2;1268:18;;1262:25;1332:2;1317:18;;1311:25;1238:5;;-1:-1:-1;1262:25:64;-1:-1:-1;1345:33:64;1311:25;1345:33;:::i;:::-;1449:2;1434:18;;1428:25;1397:7;;-1:-1:-1;1462:30:64;1428:25;1462:30;:::i;:::-;947:577;;;;-1:-1:-1;947:577:64;;-1:-1:-1;;947:577:64:o;1529:591::-;1599:6;1607;1660:2;1648:9;1639:7;1635:23;1631:32;1628:52;;;1676:1;1673;1666:12;1628:52;1716:9;1703:23;1745:18;1786:2;1778:6;1775:14;1772:34;;;1802:1;1799;1792:12;1772:34;1840:6;1829:9;1825:22;1815:32;;1885:7;1878:4;1874:2;1870:13;1866:27;1856:55;;1907:1;1904;1897:12;1856:55;1947:2;1934:16;1973:2;1965:6;1962:14;1959:34;;;1989:1;1986;1979:12;1959:34;2034:7;2029:2;2020:6;2016:2;2012:15;2008:24;2005:37;2002:57;;;2055:1;2052;2045:12;2002:57;2086:2;2078:11;;;;;2108:6;;-1:-1:-1;1529:591:64;;-1:-1:-1;;;;1529:591:64:o;2125:980::-;2193:6;2246:2;2234:9;2225:7;2221:23;2217:32;2214:52;;;2262:1;2259;2252:12;2214:52;2302:9;2289:23;2331:18;2372:2;2364:6;2361:14;2358:34;;;2388:1;2385;2378:12;2358:34;2426:6;2415:9;2411:22;2401:32;;2471:7;2464:4;2460:2;2456:13;2452:27;2442:55;;2493:1;2490;2483:12;2442:55;2529:2;2516:16;2551:2;2547;2544:10;2541:36;;;2557:18;;:::i;:::-;2691:2;2685:9;2753:4;2745:13;;2596:66;2741:22;;;2765:2;2737:31;2733:40;2721:53;;;2789:18;;;2809:22;;;2786:46;2783:72;;;2835:18;;:::i;:::-;2875:10;2871:2;2864:22;2910:2;2902:6;2895:18;2950:7;2945:2;2940;2936;2932:11;2928:20;2925:33;2922:53;;;2971:1;2968;2961:12;2922:53;3027:2;3022;3018;3014:11;3009:2;3001:6;2997:15;2984:46;3072:1;3050:15;;;3067:2;3046:24;3039:35;;;;-1:-1:-1;3054:6:64;2125:980;-1:-1:-1;;;;;2125:980:64:o;3110:243::-;3167:6;3220:2;3208:9;3199:7;3195:23;3191:32;3188:52;;;3236:1;3233;3226:12;3188:52;3275:9;3262:23;3294:29;3317:5;3294:29;:::i;3358:247::-;3426:6;3479:2;3467:9;3458:7;3454:23;3450:32;3447:52;;;3495:1;3492;3485:12;3447:52;3527:9;3521:16;3546:29;3569:5;3546:29;:::i;3610:380::-;3674:6;3682;3735:2;3723:9;3714:7;3710:23;3706:32;3703:52;;;3751:1;3748;3741:12;3703:52;3790:9;3777:23;3809:29;3832:5;3809:29;:::i;:::-;3857:5;-1:-1:-1;3914:2:64;3899:18;;3886:32;3927:31;3886:32;3927:31;:::i;:::-;3977:7;3967:17;;;3610:380;;;;;:::o;3995:657::-;4074:6;4082;4090;4098;4151:3;4139:9;4130:7;4126:23;4122:33;4119:53;;;4168:1;4165;4158:12;4119:53;4207:9;4194:23;4226:29;4249:5;4226:29;:::i;:::-;4274:5;-1:-1:-1;4331:2:64;4316:18;;4303:32;4344:31;4303:32;4344:31;:::i;:::-;4394:7;-1:-1:-1;4453:2:64;4438:18;;4425:32;4466:33;4425:32;4466:33;:::i;:::-;4518:7;-1:-1:-1;4577:2:64;4562:18;;4549:32;4590:30;4549:32;4590:30;:::i;4657:855::-;4745:6;4753;4761;4769;4777;4830:3;4818:9;4809:7;4805:23;4801:33;4798:53;;;4847:1;4844;4837:12;4798:53;4886:9;4873:23;4905:29;4928:5;4905:29;:::i;:::-;4953:5;-1:-1:-1;5010:2:64;4995:18;;4982:32;5023:31;4982:32;5023:31;:::i;:::-;5073:7;-1:-1:-1;5132:2:64;5117:18;;5104:32;5180:34;5167:48;;5155:61;;5145:89;;5230:1;5227;5220:12;5145:89;5253:7;-1:-1:-1;5312:2:64;5297:18;;5284:32;5325:33;5284:32;5325:33;:::i;:::-;5377:7;-1:-1:-1;5436:3:64;5421:19;;5408:33;5450:30;5408:33;5450:30;:::i;:::-;5499:7;5489:17;;;4657:855;;;;;;;;:::o;5517:1036::-;5605:6;5658:3;5646:9;5637:7;5633:23;5629:33;5626:53;;;5675:1;5672;5665:12;5626:53;5701:17;;:::i;:::-;5741:27;5758:9;5741:27;:::i;:::-;5734:5;5727:42;5801:36;5833:2;5822:9;5818:18;5801:36;:::i;:::-;5796:2;5789:5;5785:14;5778:60;5870:36;5902:2;5891:9;5887:18;5870:36;:::i;:::-;5865:2;5858:5;5854:14;5847:60;5939:36;5971:2;5960:9;5956:18;5939:36;:::i;:::-;5934:2;5927:5;5923:14;5916:60;6037:3;6026:9;6022:19;6009:33;6003:3;5996:5;5992:15;5985:58;6104:3;6093:9;6089:19;6076:33;6070:3;6063:5;6059:15;6052:58;6143:36;6174:3;6163:9;6159:19;6143:36;:::i;:::-;6137:3;6130:5;6126:15;6119:61;6213:36;6244:3;6233:9;6229:19;6213:36;:::i;:::-;6207:3;6200:5;6196:15;6189:61;6269:3;6304:38;6338:2;6327:9;6323:18;6304:38;:::i;:::-;6288:14;;;6281:62;6362:3;6397:38;6416:18;;;6397:38;:::i;:::-;6381:14;;;6374:62;6455:3;6503:18;;;6490:32;6474:14;;;6467:56;;;;-1:-1:-1;6385:5:64;5517:1036;-1:-1:-1;5517:1036:64:o;6558:184::-;6628:6;6681:2;6669:9;6660:7;6656:23;6652:32;6649:52;;;6697:1;6694;6687:12;6649:52;-1:-1:-1;6720:16:64;;6558:184;-1:-1:-1;6558:184:64:o;6747:245::-;6826:6;6834;6887:2;6875:9;6866:7;6862:23;6858:32;6855:52;;;6903:1;6900;6893:12;6855:52;-1:-1:-1;;6926:16:64;;6982:2;6967:18;;;6961:25;6926:16;;6961:25;;-1:-1:-1;6747:245:64:o;6997:582::-;7061:3;7099:5;7093:12;7126:6;7121:3;7114:19;7152:4;7181:2;7176:3;7172:12;7165:19;;7218:2;7211:5;7207:14;7239:1;7249:305;7263:6;7260:1;7257:13;7249:305;;;7322:13;;7364:9;;7375:42;7360:58;7348:71;;7459:11;;7453:18;7439:12;;;7432:40;7501:4;7492:14;;;;7529:15;;;;7285:1;7278:9;7249:305;;;-1:-1:-1;7570:3:64;;6997:582;-1:-1:-1;;;;;6997:582:64:o;9688:681::-;9859:2;9911:21;;;9981:13;;9884:18;;;10003:22;;;9830:4;;9859:2;10082:15;;;;10056:2;10041:18;;;9830:4;10125:218;10139:6;10136:1;10133:13;10125:218;;;10204:13;;10219:42;10200:62;10188:75;;10318:15;;;;10283:12;;;;10161:1;10154:9;10125:218;;;-1:-1:-1;10360:3:64;;9688:681;-1:-1:-1;;;;;;9688:681:64:o;10374:330::-;10611:2;10600:9;10593:21;10574:4;10631:67;10694:2;10683:9;10679:18;10671:6;10631:67;:::i;10709:674::-;11110:2;11099:9;11092:21;11073:4;11136:67;11199:2;11188:9;11184:18;11176:6;11136:67;:::i;:::-;11251:9;11243:6;11239:22;11234:2;11223:9;11219:18;11212:50;11279:55;11327:6;11319;11279:55;:::i;:::-;11271:63;;;11370:6;11365:2;11354:9;11350:18;11343:34;10709:674;;;;;;:::o;11388:914::-;11615:2;11667:21;;;11737:13;;11640:18;;;11759:22;;;11586:4;;11615:2;11800;;11818:18;;;;11859:15;;;11586:4;11902:374;11916:6;11913:1;11910:13;11902:374;;;11975:13;;12017:9;;12028:42;12013:58;12001:71;;12126:11;;;12120:18;12113:26;12106:34;12092:12;;;12085:56;12181:11;;12175:18;12161:12;;;12154:40;12223:4;12214:14;;;;12251:15;;;;11938:1;11931:9;11902:374;;;-1:-1:-1;12293:3:64;;11388:914;-1:-1:-1;;;;;;;11388:914:64:o;12489:654::-;12599:4;12628:2;12657;12646:9;12639:21;12689:6;12683:13;12732:6;12727:2;12716:9;12712:18;12705:34;12757:1;12767:140;12781:6;12778:1;12775:13;12767:140;;;12876:14;;;12872:23;;12866:30;12842:17;;;12861:2;12838:26;12831:66;12796:10;;12767:140;;;12925:6;12922:1;12919:13;12916:91;;;12995:1;12990:2;12981:6;12970:9;12966:22;12962:31;12955:42;12916:91;-1:-1:-1;13059:2:64;13047:15;13064:66;13043:88;13028:104;;;;13134:2;13024:113;;12489:654;-1:-1:-1;;;12489:654:64:o;19217:247::-;19284:2;19278:9;19326:3;19314:16;;19360:18;19345:34;;19381:22;;;19342:62;19339:88;;;19407:18;;:::i;:::-;19443:2;19436:22;19217:247;:::o;19469:253::-;19509:3;19537:34;19598:2;19595:1;19591:10;19628:2;19625:1;19621:10;19659:3;19655:2;19651:12;19646:3;19643:21;19640:47;;;19667:18;;:::i;:::-;19703:13;;19469:253;-1:-1:-1;;;;19469:253:64:o;19727:128::-;19767:3;19798:1;19794:6;19791:1;19788:13;19785:39;;;19804:18;;:::i;:::-;-1:-1:-1;19840:9:64;;19727:128::o;19860:389::-;19898:1;19939;19936;19925:16;19975:1;19972;19961:16;19996:3;19986:37;;20003:18;;:::i;:::-;20124:66;20119:3;20116:75;20047:66;20042:3;20039:75;20035:157;20032:183;;;20195:18;;:::i;:::-;20229:14;;;19860:389;-1:-1:-1;;;19860:389:64:o;20254:120::-;20294:1;20320;20310:35;;20325:18;;:::i;:::-;-1:-1:-1;20359:9:64;;20254:120::o;20379:228::-;20419:7;20545:1;20477:66;20473:74;20470:1;20467:81;20462:1;20455:9;20448:17;20444:105;20441:131;;;20552:18;;:::i;:::-;-1:-1:-1;20592:9:64;;20379:228::o;20612:246::-;20652:4;20681:34;20765:10;;;;20735;;20787:12;;;20784:38;;;20802:18;;:::i;:::-;20839:13;;20612:246;-1:-1:-1;;;20612:246:64:o;20863:254::-;20903:4;20932:42;21024:10;;;;20994;;21046:12;;;21043:38;;;21061:18;;:::i;21122:125::-;21162:4;21190:1;21187;21184:8;21181:34;;;21195:18;;:::i;:::-;-1:-1:-1;21232:9:64;;21122:125::o;21252:166::-;21282:1;21323;21320;21309:16;21344:3;21334:37;;21351:18;;:::i;:::-;21408:3;21404:1;21401;21390:16;21385:27;21380:32;;;21252:166;;;;:::o;21423:240::-;21458:3;21506:5;21502:2;21491:21;21536:66;21527:7;21524:79;21521:105;;;21606:18;;:::i;:::-;21646:1;21642:15;;21423:240;-1:-1:-1;;21423:240:64:o;21668:238::-;21702:3;21749:5;21746:1;21735:20;21779:66;21770:7;21767:79;21764:105;;;21849:18;;:::i;21911:191::-;21946:3;21977:66;21970:5;21967:77;21964:103;;;22047:18;;:::i;:::-;-1:-1:-1;22087:1:64;22083:13;;21911:191::o;22107:184::-;22159:77;22156:1;22149:88;22256:4;22253:1;22246:15;22280:4;22277:1;22270:15;22296:184;22348:77;22345:1;22338:88;22445:4;22442:1;22435:15;22469:4;22466:1;22459:15;22485:184;22537:77;22534:1;22527:88;22634:4;22631:1;22624:15;22658:4;22655:1;22648:15;22674:184;22726:77;22723:1;22716:88;22823:4;22820:1;22813:15;22847:4;22844:1;22837:15;22863:154;22949:42;22942:5;22938:54;22931:5;22928:65;22918:93;;23007:1;23004;22997:12;22918:93;22863:154;:::o;23022:118::-;23108:5;23101:13;23094:21;23087:5;23084:32;23074:60;;23130:1;23127;23120:12;23145:118;23232:5;23229:1;23218:20;23211:5;23208:31;23198:59;;23253:1;23250;23243:12"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "3607600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "barFee()": "2351",
                "burn(bytes)": "445",
                "burnSingle(bytes)": "488",
                "collect(int24,int24,address,bool)": "infinite",
                "collectProtocolFee()": "infinite",
                "decreaseLiquidity(int24,int24,uint128,address,bool)": "infinite",
                "feeGrowthGlobal0()": "2330",
                "feeGrowthGlobal1()": "2328",
                "flashSwap(bytes)": "446",
                "getAmountIn(bytes)": "467",
                "getAmountOut(bytes)": "489",
                "getAssets()": "infinite",
                "getImmutables()": "infinite",
                "getPriceAndNearestTicks()": "2404",
                "getReserves()": "2415",
                "getSecondsGrowthAndLastObservation()": "2411",
                "getTokenProtocolFees()": "2467",
                "liquidity()": "2404",
                "mint(bytes)": "infinite",
                "poolIdentifier()": "252",
                "positions(address,int24,int24)": "infinite",
                "rangeFeeGrowth(int24,int24)": "infinite",
                "swap(bytes)": "infinite",
                "ticks(int24)": "9121",
                "updateBarFee()": "infinite"
              },
              "internal": {
                "_balance(address)": "infinite",
                "_ensureTickSpacing(int24,int24)": "infinite",
                "_transfer(address,uint256,address,bool)": "infinite",
                "_transferBothTokens(address,uint256,uint256,bool)": "infinite",
                "_updateFees(bool,uint256,uint128)": "48700",
                "_updatePosition(address,int24,int24,int128)": "infinite",
                "_updateReserves(bool,uint128,uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "barFee()": "c14ad802",
              "burn(bytes)": "2a07b6c7",
              "burnSingle(bytes)": "af8c09bf",
              "collect(int24,int24,address,bool)": "fb39d628",
              "collectProtocolFee()": "caa4b46a",
              "decreaseLiquidity(int24,int24,uint128,address,bool)": "6289db82",
              "feeGrowthGlobal0()": "9da12096",
              "feeGrowthGlobal1()": "cf78756b",
              "flashSwap(bytes)": "053da1c8",
              "getAmountIn(bytes)": "499a3c50",
              "getAmountOut(bytes)": "a8f1f52e",
              "getAssets()": "67e4ac2c",
              "getImmutables()": "bcdb4dad",
              "getPriceAndNearestTicks()": "8c347f9b",
              "getReserves()": "0902f1ac",
              "getSecondsGrowthAndLastObservation()": "6d59d802",
              "getTokenProtocolFees()": "fb5d80b3",
              "liquidity()": "1a686502",
              "mint(bytes)": "7ba0e2e7",
              "poolIdentifier()": "a69840a8",
              "positions(address,int24,int24)": "aaca1b4d",
              "rangeFeeGrowth(int24,int24)": "acfe88f8",
              "swap(bytes)": "627dd56a",
              "ticks(int24)": "f30dba93",
              "updateBarFee()": "92bc3219"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_deployData\",\"type\":\"bytes\"},{\"internalType\":\"contract IMasterDeployer\",\"name\":\"_masterDeployer\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidSwapFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTick\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LiquidityOverflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Locked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowerEven\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxTickLiquidity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Overflow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TickOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Token0Missing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Token1Missing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UpperOdd\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Collect\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reserveShares0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reserveShares1\",\"type\":\"uint256\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"barFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"burn\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPool.TokenAmount[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"burnSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"unwrapBento\",\"type\":\"bool\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0fees\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1fees\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectProtocolFee\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amount0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount1\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"unwrapBento\",\"type\":\"bool\"}],\"name\":\"decreaseLiquidity\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPool.TokenAmount[]\",\"name\":\"withdrawnAmounts\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPool.TokenAmount[]\",\"name\":\"feesWithdrawn\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"oldLiquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal0\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeGrowthGlobal1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"flashSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAssets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getImmutables\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_MAX_TICK_LIQUIDITY\",\"type\":\"uint128\"},{\"internalType\":\"uint24\",\"name\":\"_tickSpacing\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"_swapFee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"_barFeeTo\",\"type\":\"address\"},{\"internalType\":\"contract IBentoBoxMinimal\",\"name\":\"_bento\",\"type\":\"address\"},{\"internalType\":\"contract IMasterDeployer\",\"name\":\"_masterDeployer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token1\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPriceAndNearestTicks\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"_price\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"_nearestTick\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_reserve0\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"_reserve1\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSecondsGrowthAndLastObservation\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"_secondsGrowthGlobal\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"_lastObservation\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTokenProtocolFees\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"_token0ProtocolFee\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"_token1ProtocolFee\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolIdentifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0Last\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1Last\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"lowerTick\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upperTick\",\"type\":\"int24\"}],\"name\":\"rangeFeeGrowth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"name\":\"ticks\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"previousTick\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"nextTick\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthOutside1\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"secondsGrowthOutside\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateBarFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Amounts are considered to be in Bentobox shared\",\"errors\":{\"Locked()\":[{\"details\":\"Error list to optimize around pool requirements.\"}]},\"kind\":\"dev\",\"methods\":{\"collectProtocolFee()\":{\"details\":\"Collects fees for Trident protocol.\"},\"constructor\":{\"details\":\"Only set immutable variables here - state changes made here will not be used.\"},\"decreaseLiquidity(int24,int24,uint128,address,bool)\":{\"details\":\"Burns LP tokens sent to this contract.\"},\"flashSwap(bytes)\":{\"details\":\"Reserved for IPool.\"},\"getAmountIn(bytes)\":{\"details\":\"Reserved for IPool.\"},\"getAmountOut(bytes)\":{\"details\":\"Reserved for IPool.\"},\"getAssets()\":{\"returns\":{\"assets\":\"An array of tokens supported by the pool.\"}},\"mint(bytes)\":{\"details\":\"Mints LP tokens - should be called via the router after transferring `bento` tokens. The router must ensure that sufficient liquidity has been minted.\"},\"rangeFeeGrowth(int24,int24)\":{\"details\":\"Multiply `rangeFeeGrowth` delta by the provided liquidity to get accrued fees for some period.\"},\"swap(bytes)\":{\"details\":\"Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage - price is \\u221a(y/x) - x is token0 - zero for one -> price will move down.\"},\"updateBarFee()\":{\"details\":\"Updates `barFee` for Trident protocol.\"}},\"stateVariables\":{\"MAX_TICK_LIQUIDITY\":{\"details\":\"1000 corresponds to 0.1% fee. Fee is measured in pips.\"},\"feeGrowthGlobal1\":{\"details\":\"All fee growth counters are multiplied by 2^128.\"},\"lastObservation\":{\"details\":\"Multiplied by 2^128.\"},\"nearestTick\":{\"details\":\"Sqrt of price aka. \\u221a(y/x), multiplied by 2^96.\"},\"poolIdentifier\":{\"return\":\"A unique identifier for the pool type.\",\"returns\":{\"_0\":\"A unique identifier for the pool type.\"}},\"reserve1\":{\"details\":\"`bento` share balance tracker.\"},\"tickSpacing\":{\"details\":\"Maximum `swapFee` is 10%.References for tickSpacing: 100 tickSpacing -> 2% between ticks.\"},\"unlocked\":{\"details\":\"Tick that is just below the current price.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"decreaseLiquidity(int24,int24,uint128,address,bool)\":{\"notice\":\"Burn function that cannpt conform to the IPool interface due to having three return values.\"},\"rangeFeeGrowth(int24,int24)\":{\"notice\":\"Calculates the fee growth inside a range (per unit of liquidity).\"}},\"notice\":\"Trident exchange pool template implementing concentrated liquidity for swapping between an ERC-20 token pair.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/concentrated/ConcentratedLiquidityPool.sol\":\"ConcentratedLiquidityPool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentCallee.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool callback interface.\\ninterface ITridentCallee {\\n    function tridentSwapCallback(bytes calldata data) external;\\n\\n    function tridentMintCallback(bytes calldata data) external;\\n}\\n\",\"keccak256\":\"0x256e838362a3064201b37b3b7c08bc1421b173a6fea633176123f0b827b868c9\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentRouter.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool router interface.\\ninterface ITridentRouter {\\n    struct Path {\\n        address pool;\\n        bytes data;\\n    }\\n\\n    struct ExactInputSingleParams {\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n        address pool;\\n        address tokenIn;\\n        bytes data;\\n    }\\n\\n    struct ExactInputParams {\\n        address tokenIn;\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n        Path[] path;\\n    }\\n\\n    struct TokenInput {\\n        address token;\\n        bool native;\\n        uint256 amount;\\n    }\\n\\n    struct InitialPath {\\n        address tokenIn;\\n        address pool;\\n        bool native;\\n        uint256 amount;\\n        bytes data;\\n    }\\n\\n    struct PercentagePath {\\n        address tokenIn;\\n        address pool;\\n        uint64 balancePercentage; // Multiplied by 10^6. 100% = 100_000_000\\n        bytes data;\\n    }\\n\\n    struct Output {\\n        address token;\\n        address to;\\n        bool unwrapBento;\\n        uint256 minAmount;\\n    }\\n\\n    struct ComplexPathParams {\\n        InitialPath[] initialPath;\\n        PercentagePath[] percentagePath;\\n        Output[] output;\\n    }\\n}\\n\",\"keccak256\":\"0x40f1af6b213ff8827d515460f9057eb87ddc35d8020501f727d229ea239cbf24\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/concentratedPool/IPositionManager.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident concentrated Liquidity pool mint callback receiver.\\ninterface IPositionManager {\\n    function positionMintCallback(\\n        address recipient,\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        uint256 feeGrowthInside0,\\n        uint256 feeGrowthInside1,\\n        uint256 positionId\\n    ) external returns (uint256 _positionId);\\n}\\n\",\"keccak256\":\"0x859ec714a21d5aeae280167b4e03ab84ec33767dca2e7cf8ab89a2c2418f0ec2\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/concentratedPool/DyDxMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./FullMath.sol\\\";\\nimport \\\"./UnsafeMath.sol\\\";\\n\\n/// @notice Math library that facilitates ranged liquidity calculations.\\nlibrary DyDxMath {\\n    function getDy(\\n        uint256 liquidity,\\n        uint256 priceLower,\\n        uint256 priceUpper,\\n        bool roundUp\\n    ) internal pure returns (uint256 dy) {\\n        unchecked {\\n            if (roundUp) {\\n                dy = FullMath.mulDivRoundingUp(liquidity, priceUpper - priceLower, 0x1000000000000000000000000);\\n            } else {\\n                dy = FullMath.mulDiv(liquidity, priceUpper - priceLower, 0x1000000000000000000000000);\\n            }\\n        }\\n    }\\n\\n    function getDx(\\n        uint256 liquidity,\\n        uint256 priceLower,\\n        uint256 priceUpper,\\n        bool roundUp\\n    ) internal pure returns (uint256 dx) {\\n        unchecked {\\n            if (roundUp) {\\n                dx = UnsafeMath.divRoundingUp(FullMath.mulDivRoundingUp(liquidity << 96, priceUpper - priceLower, priceUpper), priceLower);\\n            } else {\\n                dx = FullMath.mulDiv(liquidity << 96, priceUpper - priceLower, priceUpper) / priceLower;\\n            }\\n        }\\n    }\\n\\n    function getLiquidityForAmounts(\\n        uint256 priceLower,\\n        uint256 priceUpper,\\n        uint256 currentPrice,\\n        uint256 dy,\\n        uint256 dx\\n    ) public pure returns (uint256 liquidity) {\\n        unchecked {\\n            if (priceUpper <= currentPrice) {\\n                liquidity = FullMath.mulDiv(dy, 0x1000000000000000000000000, priceUpper - priceLower);\\n            } else if (currentPrice <= priceLower) {\\n                liquidity = FullMath.mulDiv(\\n                    dx,\\n                    FullMath.mulDiv(priceLower, priceUpper, 0x1000000000000000000000000),\\n                    priceUpper - priceLower\\n                );\\n            } else {\\n                uint256 liquidity0 = FullMath.mulDiv(\\n                    dx,\\n                    FullMath.mulDiv(priceUpper, currentPrice, 0x1000000000000000000000000),\\n                    priceUpper - currentPrice\\n                );\\n                uint256 liquidity1 = FullMath.mulDiv(dy, 0x1000000000000000000000000, currentPrice - priceLower);\\n                liquidity = liquidity0 < liquidity1 ? liquidity0 : liquidity1;\\n            }\\n        }\\n    }\\n\\n    function getAmountsForLiquidity(\\n        uint256 priceLower,\\n        uint256 priceUpper,\\n        uint256 currentPrice,\\n        uint256 liquidityAmount,\\n        bool roundUp\\n    ) internal pure returns (uint128 token0amount, uint128 token1amount) {\\n        if (priceUpper <= currentPrice) {\\n            // Only supply `token1` (`token1` is Y).\\n            token1amount = uint128(DyDxMath.getDy(liquidityAmount, priceLower, priceUpper, roundUp));\\n        } else if (currentPrice <= priceLower) {\\n            // Only supply `token0` (`token0` is X).\\n            token0amount = uint128(DyDxMath.getDx(liquidityAmount, priceLower, priceUpper, roundUp));\\n        } else {\\n            // Supply both tokens.\\n            token0amount = uint128(DyDxMath.getDx(liquidityAmount, currentPrice, priceUpper, roundUp));\\n            token1amount = uint128(DyDxMath.getDy(liquidityAmount, priceLower, currentPrice, roundUp));\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xbf29a7f41190849b413935c0f3db4566383f6db68ee771cb13ec85082e583b38\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/concentratedPool/FullMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Math library that facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/FullMath.sol.\\n/// @dev Handles \\\"phantom overflow\\\", i.e., allows multiplication and division where an intermediate value overflows 256 bits.\\nlibrary FullMath {\\n    /// @notice Calculates floor(a\\u00d7b\\u00f7denominator) with full precision - throws if result overflows an uint256 or denominator == 0.\\n    /// @param a The multiplicand.\\n    /// @param b The multiplier.\\n    /// @param denominator The divisor.\\n    /// @return result The 256-bit result.\\n    /// @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv.\\n    function mulDiv(\\n        uint256 a,\\n        uint256 b,\\n        uint256 denominator\\n    ) internal pure returns (uint256 result) {\\n        unchecked {\\n            // 512-bit multiply [prod1 prod0] = a * b.\\n            // Compute the product mod 2**256 and mod 2**256 - 1,\\n            // then use the Chinese Remainder Theorem to reconstruct\\n            // the 512 bit result. The result is stored in two 256\\n            // variables such that product = prod1 * 2**256 + prod0.\\n            uint256 prod0; // Least significant 256 bits of the product.\\n            uint256 prod1; // Most significant 256 bits of the product.\\n            assembly {\\n                let mm := mulmod(a, b, not(0))\\n                prod0 := mul(a, b)\\n                prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n            }\\n            // Handle non-overflow cases, 256 by 256 division.\\n            if (prod1 == 0) {\\n                require(denominator > 0);\\n                assembly {\\n                    result := div(prod0, denominator)\\n                }\\n                return result;\\n            }\\n            // Make sure the result is less than 2**256 -\\n            // also prevents denominator == 0.\\n            require(denominator > prod1);\\n            ///////////////////////////////////////////////\\n            // 512 by 256 division.\\n            ///////////////////////////////////////////////\\n            // Make division exact by subtracting the remainder from [prod1 prod0] -\\n            // compute remainder using mulmod.\\n            uint256 remainder;\\n            assembly {\\n                remainder := mulmod(a, b, denominator)\\n            }\\n            // Subtract 256 bit number from 512 bit number.\\n            assembly {\\n                prod1 := sub(prod1, gt(remainder, prod0))\\n                prod0 := sub(prod0, remainder)\\n            }\\n            // Factor powers of two out of denominator -\\n            // compute largest power of two divisor of denominator\\n            // (always >= 1).\\n            uint256 twos = uint256(-int256(denominator)) & denominator;\\n            // Divide denominator by power of two.\\n            assembly {\\n                denominator := div(denominator, twos)\\n            }\\n            // Divide [prod1 prod0] by the factors of two.\\n            assembly {\\n                prod0 := div(prod0, twos)\\n            }\\n            // Shift in bits from prod1 into prod0. For this we need\\n            // to flip `twos` such that it is 2**256 / twos -\\n            // if twos is zero, then it becomes one.\\n            assembly {\\n                twos := add(div(sub(0, twos), twos), 1)\\n            }\\n            prod0 |= prod1 * twos;\\n            // Invert denominator mod 2**256 -\\n            // now that denominator is an odd number, it has an inverse\\n            // modulo 2**256 such that denominator * inv = 1 mod 2**256.\\n            // Compute the inverse by starting with a seed that is correct\\n            // for four bits. That is, denominator * inv = 1 mod 2**4.\\n            uint256 inv = (3 * denominator) ^ 2;\\n            // Now use Newton-Raphson iteration to improve the precision.\\n            // Thanks to Hensel's lifting lemma, this also works in modular\\n            // arithmetic, doubling the correct bits in each step.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**8.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**16.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**32.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**64.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**128.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**256.\\n            // Because the division is now exact we can divide by multiplying\\n            // with the modular inverse of denominator. This will give us the\\n            // correct result modulo 2**256. Since the precoditions guarantee\\n            // that the outcome is less than 2**256, this is the final result.\\n            // We don't need to compute the high bits of the result and prod1\\n            // is no longer required.\\n            result = prod0 * inv;\\n            return result;\\n        }\\n    }\\n\\n    /// @notice Calculates ceil(a\\u00d7b\\u00f7denominator) with full precision - throws if result overflows an uint256 or denominator == 0.\\n    /// @param a The multiplicand.\\n    /// @param b The multiplier.\\n    /// @param denominator The divisor.\\n    /// @return result The 256-bit result.\\n    function mulDivRoundingUp(\\n        uint256 a,\\n        uint256 b,\\n        uint256 denominator\\n    ) internal pure returns (uint256 result) {\\n        result = mulDiv(a, b, denominator);\\n        unchecked {\\n            if (mulmod(a, b, denominator) != 0) {\\n                require(result < type(uint256).max);\\n                result++;\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x8211b004be6ff6be30b81fe484544d00c7bb467a4fd2a0d6c60114353e2300cf\",\"license\":\"MIT\"},\"contracts/libraries/concentratedPool/SwapLib.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./FullMath.sol\\\";\\n\\n/// @notice Math library that facilitates fee handling for Trident Concentrated Liquidity Pools.\\nlibrary SwapLib {\\n    function handleFees(\\n        uint256 output,\\n        uint24 swapFee,\\n        uint256 barFee,\\n        uint256 currentLiquidity,\\n        uint256 totalFeeAmount,\\n        uint256 amountOut,\\n        uint256 protocolFee,\\n        uint256 feeGrowthGlobal\\n    )\\n        internal\\n        pure\\n        returns (\\n            uint256,\\n            uint256,\\n            uint256,\\n            uint256\\n        )\\n    {\\n        uint256 feeAmount = FullMath.mulDivRoundingUp(output, swapFee, 1e6);\\n\\n        totalFeeAmount += feeAmount;\\n\\n        amountOut += output - feeAmount;\\n\\n        // Calculate `protocolFee` and convert pips to bips.\\n        uint256 feeDelta = FullMath.mulDivRoundingUp(feeAmount, barFee, 1e4);\\n\\n        protocolFee += feeDelta;\\n\\n        // Updating `feeAmount` based on the protocolFee.\\n        feeAmount -= feeDelta;\\n\\n        feeGrowthGlobal += FullMath.mulDiv(feeAmount, 0x100000000000000000000000000000000, currentLiquidity);\\n\\n        return (totalFeeAmount, amountOut, protocolFee, feeGrowthGlobal);\\n    }\\n}\\n\",\"keccak256\":\"0x618173841d25c54122f3aea4786b2e235ae2b5f8faba6db44601967b058623bf\",\"license\":\"GPL-2.0-or-later\"},\"contracts/libraries/concentratedPool/TickMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Math library for computing sqrt price for ticks of size 1.0001, i.e., sqrt(1.0001^tick) as fixed point Q64.96 numbers - supports\\n/// prices between 2**-128 and 2**128 - 1.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/TickMath.sol.\\nlibrary TickMath {\\n    /// @dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128.\\n    int24 internal constant MIN_TICK = -887272;\\n    /// @dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128 - 1.\\n    int24 internal constant MAX_TICK = -MIN_TICK;\\n    /// @dev The minimum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MIN_TICK).\\n    uint160 internal constant MIN_SQRT_RATIO = 4295128739;\\n    /// @dev The maximum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MAX_TICK).\\n    uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;\\n\\n    error TickOutOfBounds();\\n    error PriceOutOfBounds();\\n\\n    /// @notice Calculates sqrt(1.0001^tick) * 2^96.\\n    /// @dev Throws if |tick| > max tick.\\n    /// @param tick The input tick for the above formula.\\n    /// @return sqrtPriceX96 Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\\n    /// at the given tick.\\n    function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {\\n        uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));\\n        if (absTick > uint256(uint24(MAX_TICK))) revert TickOutOfBounds();\\n        unchecked {\\n            uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;\\n            if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;\\n            if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;\\n            if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;\\n            if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;\\n            if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;\\n            if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;\\n            if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;\\n            if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;\\n            if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;\\n            if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;\\n            if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;\\n            if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;\\n            if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;\\n            if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;\\n            if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;\\n            if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;\\n            if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;\\n            if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;\\n            if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;\\n\\n            if (tick > 0) ratio = type(uint256).max / ratio;\\n            // This divides by 1<<32 rounding up to go from a Q128.128 to a Q128.96.\\n            // We then downcast because we know the result always fits within 160 bits due to our tick input constraint.\\n            // We round up in the division so getTickAtSqrtRatio of the output price is always consistent.\\n            sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));\\n        }\\n    }\\n\\n    /// @notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio.\\n    /// @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\\n    /// ever return.\\n    /// @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96.\\n    /// @return tick The greatest tick for which the ratio is less than or equal to the input ratio.\\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {\\n        // Second inequality must be < because the price can never reach the price at the max tick.\\n        if (sqrtPriceX96 < MIN_SQRT_RATIO || sqrtPriceX96 >= MAX_SQRT_RATIO) revert PriceOutOfBounds();\\n        uint256 ratio = uint256(sqrtPriceX96) << 32;\\n\\n        uint256 r = ratio;\\n        uint256 msb;\\n\\n        assembly {\\n            let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(5, gt(r, 0xFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(4, gt(r, 0xFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(3, gt(r, 0xFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(2, gt(r, 0xF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(1, gt(r, 0x3))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := gt(r, 0x1)\\n            msb := or(msb, f)\\n        }\\n        unchecked {\\n            if (msb >= 128) r = ratio >> (msb - 127);\\n            else r = ratio << (127 - msb);\\n\\n            int256 log_2 = (int256(msb) - 128) << 64;\\n\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(63, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(62, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(61, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(60, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(59, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(58, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(57, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(56, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(55, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(54, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(53, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(52, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(51, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(50, f))\\n            }\\n\\n            int256 log_sqrt10001 = log_2 * 255738958999603826347141; // 128.128 number.\\n\\n            int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);\\n            int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);\\n\\n            tick = tickLow == tickHi ? tickLow : getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x78121358a23f8c7f267cc4622b3cd0d94970018c637c61a9f2e99a0fa40b7bda\",\"license\":\"GPL-2.0-or-later\"},\"contracts/libraries/concentratedPool/Ticks.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./TickMath.sol\\\";\\nimport \\\"hardhat/console.sol\\\";\\n\\n/// @notice Tick management library for ranged liquidity.\\nlibrary Ticks {\\n    struct Tick {\\n        int24 previousTick;\\n        int24 nextTick;\\n        uint128 liquidity;\\n        uint256 feeGrowthOutside0; // Per unit of liquidity.\\n        uint256 feeGrowthOutside1;\\n        uint160 secondsGrowthOutside;\\n    }\\n\\n    function getMaxLiquidity(uint24 _tickSpacing) public pure returns (uint128) {\\n        return type(uint128).max / uint128(uint24(TickMath.MAX_TICK) / (2 * uint24(_tickSpacing)));\\n    }\\n\\n    function cross(\\n        mapping(int24 => Tick) storage ticks,\\n        int24 nextTickToCross,\\n        uint160 secondsGrowthGlobal,\\n        uint256 currentLiquidity,\\n        uint256 feeGrowthGlobalA,\\n        uint256 feeGrowthGlobalB,\\n        bool zeroForOne,\\n        uint24 tickSpacing\\n    ) internal returns (uint256, int24) {\\n        ticks[nextTickToCross].secondsGrowthOutside = secondsGrowthGlobal - ticks[nextTickToCross].secondsGrowthOutside;\\n\\n        if (zeroForOne) {\\n            // Moving forward through the linked list.\\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\\n                currentLiquidity -= ticks[nextTickToCross].liquidity; // todo wrap in unchecked {}\\n            } else {\\n                currentLiquidity += ticks[nextTickToCross].liquidity;\\n            }\\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside0;\\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside1;\\n            nextTickToCross = ticks[nextTickToCross].previousTick;\\n        } else {\\n            // Moving backwards through the linked list.\\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\\n                currentLiquidity += ticks[nextTickToCross].liquidity;\\n            } else {\\n                currentLiquidity -= ticks[nextTickToCross].liquidity;\\n            }\\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside1;\\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside0;\\n            nextTickToCross = ticks[nextTickToCross].nextTick;\\n        }\\n        return (currentLiquidity, nextTickToCross);\\n    }\\n\\n    function insert(\\n        mapping(int24 => Tick) storage ticks,\\n        uint256 feeGrowthGlobal0,\\n        uint256 feeGrowthGlobal1,\\n        uint160 secondsGrowthGlobal,\\n        int24 lowerOld,\\n        int24 lower,\\n        int24 upperOld,\\n        int24 upper,\\n        uint128 amount,\\n        int24 nearestTick,\\n        uint160 currentPrice\\n    ) public returns (int24) {\\n        require(lower < upper, \\\"WRONG_ORDER\\\");\\n        require(TickMath.MIN_TICK <= lower, \\\"LOWER_RANGE\\\");\\n        require(upper <= TickMath.MAX_TICK, \\\"UPPER_RANGE\\\");\\n\\n        {\\n            // Stack overflow.\\n            uint128 currentLowerLiquidity = ticks[lower].liquidity;\\n            if (currentLowerLiquidity != 0 || lower == TickMath.MIN_TICK) {\\n                // We are adding liquidity to an existing tick.\\n                ticks[lower].liquidity = currentLowerLiquidity + amount;\\n            } else {\\n                // We are inserting a new tick.\\n                Ticks.Tick storage old = ticks[lowerOld];\\n                int24 oldNextTick = old.nextTick;\\n\\n                require((old.liquidity != 0 || lowerOld == TickMath.MIN_TICK) && lowerOld < lower && lower < oldNextTick, \\\"LOWER_ORDER\\\");\\n\\n                if (lower <= nearestTick) {\\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\\n                } else {\\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, 0, 0, 0);\\n                }\\n\\n                old.nextTick = lower;\\n                ticks[oldNextTick].previousTick = lower;\\n            }\\n        }\\n\\n        uint128 currentUpperLiquidity = ticks[upper].liquidity;\\n        if (currentUpperLiquidity != 0 || upper == TickMath.MAX_TICK) {\\n            // We are adding liquidity to an existing tick.\\n            ticks[upper].liquidity = currentUpperLiquidity + amount;\\n        } else {\\n            // Inserting a new tick.\\n            Ticks.Tick storage old = ticks[upperOld];\\n            int24 oldNextTick = old.nextTick;\\n\\n            require(old.liquidity != 0 && oldNextTick > upper && upperOld < upper, \\\"UPPER_ORDER\\\");\\n\\n            if (upper <= nearestTick) {\\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\\n            } else {\\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, 0, 0, 0);\\n            }\\n            old.nextTick = upper;\\n            ticks[oldNextTick].previousTick = upper;\\n        }\\n\\n        int24 actualNearestTick = TickMath.getTickAtSqrtRatio(currentPrice);\\n\\n        if (nearestTick < upper && upper <= actualNearestTick) {\\n            nearestTick = upper;\\n        } else if (nearestTick < lower && lower <= actualNearestTick) {\\n            nearestTick = lower;\\n        }\\n\\n        return nearestTick;\\n    }\\n\\n    function remove(\\n        mapping(int24 => Tick) storage ticks,\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        int24 nearestTick\\n    ) public returns (int24) {\\n        Ticks.Tick storage current = ticks[lower];\\n\\n        if (lower != TickMath.MIN_TICK && current.liquidity == amount) {\\n            // Delete lower tick.\\n            Ticks.Tick storage previous = ticks[current.previousTick];\\n            Ticks.Tick storage next = ticks[current.nextTick];\\n\\n            previous.nextTick = current.nextTick;\\n            next.previousTick = current.previousTick;\\n\\n            if (nearestTick == lower) nearestTick = current.previousTick;\\n\\n            delete ticks[lower];\\n        } else {\\n            unchecked {\\n                current.liquidity -= amount;\\n            }\\n        }\\n\\n        current = ticks[upper];\\n\\n        if (upper != TickMath.MAX_TICK && current.liquidity == amount) {\\n            // Delete upper tick.\\n            Ticks.Tick storage previous = ticks[current.previousTick];\\n            Ticks.Tick storage next = ticks[current.nextTick];\\n\\n            previous.nextTick = current.nextTick;\\n            next.previousTick = current.previousTick;\\n\\n            if (nearestTick == upper) nearestTick = current.previousTick;\\n\\n            delete ticks[upper];\\n        } else {\\n            unchecked {\\n                current.liquidity -= amount;\\n            }\\n        }\\n\\n        return nearestTick;\\n    }\\n}\\n\",\"keccak256\":\"0x3c5bb30d7769f72aad064ab482c1237a794fd1e16fc85c444255227cf93b65d2\",\"license\":\"GPL-2.0-or-later\"},\"contracts/libraries/concentratedPool/UnsafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.5.0;\\n\\n/// @notice Math library that contains methods that perform common math functions but do not do any overflow or underflow checks.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/UnsafeMath.sol.\\nlibrary UnsafeMath {\\n    /// @notice Returns ceil(x / y).\\n    /// @dev Division by 0 has unspecified behavior, and must be checked externally.\\n    /// @param x The dividend.\\n    /// @param y The divisor.\\n    /// @return z The quotient, ceil(x / y).\\n    function divRoundingUp(uint256 x, uint256 y) internal pure returns (uint256 z) {\\n        assembly {\\n            z := add(div(x, y), gt(mod(x, y), 0))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x7441e71bffbdeb978784685e2a88618190942f1c9b5452574326256d5d0b7039\",\"license\":\"GPL-2.0-or-later\"},\"contracts/pool/concentrated/ConcentratedLiquidityPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../../interfaces/IBentoBoxMinimal.sol\\\";\\nimport \\\"../../interfaces/IMasterDeployer.sol\\\";\\nimport \\\"../../interfaces/IPool.sol\\\";\\nimport \\\"../../interfaces/concentratedPool/IPositionManager.sol\\\";\\nimport \\\"../../interfaces/ITridentCallee.sol\\\";\\nimport \\\"../../interfaces/ITridentRouter.sol\\\";\\nimport \\\"../../libraries/concentratedPool/FullMath.sol\\\";\\nimport \\\"../../libraries/concentratedPool/TickMath.sol\\\";\\nimport \\\"../../libraries/concentratedPool/UnsafeMath.sol\\\";\\nimport \\\"../../libraries/concentratedPool/DyDxMath.sol\\\";\\nimport \\\"../../libraries/concentratedPool/SwapLib.sol\\\";\\nimport \\\"../../libraries/concentratedPool/Ticks.sol\\\";\\n\\n/// @notice Trident exchange pool template implementing concentrated liquidity for swapping between an ERC-20 token pair.\\n/// @dev Amounts are considered to be in Bentobox shared\\ncontract ConcentratedLiquidityPool is IPool {\\n    using Ticks for mapping(int24 => Ticks.Tick);\\n\\n    event Mint(address indexed owner, uint256 amount0, uint256 amount1);\\n    event Burn(address indexed owner, uint256 amount0, uint256 amount1);\\n    event Collect(address indexed sender, uint256 amount0, uint256 amount1);\\n    event Sync(uint256 reserveShares0, uint256 reserveShares1);\\n\\n    bytes32 public constant override poolIdentifier = \\\"Trident:ConcentratedLiquidity\\\";\\n\\n    uint24 internal constant MAX_FEE = 100000; /// @dev Maximum `swapFee` is 10%.\\n    /// @dev References for tickSpacing:\\n    /// 100 tickSpacing -> 2% between ticks.\\n    uint24 internal immutable tickSpacing;\\n    uint24 internal immutable swapFee; /// @dev 1000 corresponds to 0.1% fee. Fee is measured in pips.\\n    uint128 internal immutable MAX_TICK_LIQUIDITY;\\n\\n    address internal immutable barFeeTo;\\n    IBentoBoxMinimal internal immutable bento;\\n    IMasterDeployer internal immutable masterDeployer;\\n\\n    address internal immutable token0;\\n    address internal immutable token1;\\n\\n    uint128 public liquidity;\\n\\n    uint160 internal secondsGrowthGlobal; /// @dev Multiplied by 2^128.\\n    uint32 internal lastObservation;\\n\\n    uint256 public feeGrowthGlobal0; /// @dev All fee growth counters are multiplied by 2^128.\\n    uint256 public feeGrowthGlobal1;\\n\\n    uint256 public barFee;\\n\\n    uint128 internal token0ProtocolFee;\\n    uint128 internal token1ProtocolFee;\\n\\n    uint128 internal reserve0; /// @dev `bento` share balance tracker.\\n    uint128 internal reserve1;\\n\\n    uint160 internal price; /// @dev Sqrt of price aka. \\u221a(y/x), multiplied by 2^96.\\n    int24 internal nearestTick; /// @dev Tick that is just below the current price.\\n\\n    uint256 internal unlocked;\\n\\n    mapping(int24 => Ticks.Tick) public ticks;\\n    mapping(address => mapping(int24 => mapping(int24 => Position))) public positions;\\n\\n    struct Position {\\n        uint128 liquidity;\\n        uint256 feeGrowthInside0Last;\\n        uint256 feeGrowthInside1Last;\\n    }\\n\\n    struct SwapCache {\\n        uint256 feeAmount;\\n        uint256 totalFeeAmount;\\n        uint256 protocolFee;\\n        uint256 feeGrowthGlobalA;\\n        uint256 feeGrowthGlobalB;\\n        uint256 currentPrice;\\n        uint256 currentLiquidity;\\n        uint256 input;\\n        int24 nextTickToCross;\\n    }\\n\\n    struct MintParams {\\n        int24 lowerOld;\\n        int24 lower;\\n        int24 upperOld;\\n        int24 upper;\\n        uint256 amount0Desired;\\n        uint256 amount1Desired;\\n        bool token0native;\\n        bool token1native;\\n        address positionOwner; // To mint an NFT the positionOwner should be set to the positionManager contract.\\n        address positionRecipient;\\n        uint256 positionId;\\n    }\\n\\n    /// @dev Error list to optimize around pool requirements.\\n    error Locked();\\n    error ZeroAddress();\\n    error InvalidToken();\\n    error InvalidSwapFee();\\n    error LiquidityOverflow();\\n    error Token0Missing();\\n    error Token1Missing();\\n    error InvalidTick();\\n    error LowerEven();\\n    error UpperOdd();\\n    error MaxTickLiquidity();\\n    error Overflow();\\n\\n    modifier lock() {\\n        if (unlocked == 2) revert Locked();\\n        unlocked = 2;\\n        _;\\n        unlocked = 1;\\n    }\\n\\n    /// @dev Only set immutable variables here - state changes made here will not be used.\\n    constructor(bytes memory _deployData, IMasterDeployer _masterDeployer) {\\n        (address _token0, address _token1, uint24 _swapFee, uint160 _price, uint24 _tickSpacing) = abi.decode(\\n            _deployData,\\n            (address, address, uint24, uint160, uint24)\\n        );\\n\\n        if (_token0 == address(0)) revert ZeroAddress();\\n        if (_token0 == address(this)) revert InvalidToken();\\n        if (_token1 == address(this)) revert InvalidToken();\\n        if (_swapFee > MAX_FEE) revert InvalidSwapFee();\\n\\n        token0 = _token0;\\n        token1 = _token1;\\n        swapFee = _swapFee;\\n        price = _price;\\n        tickSpacing = _tickSpacing;\\n        // Prevents global liquidity overflow in the case all ticks are initialised.\\n        MAX_TICK_LIQUIDITY = Ticks.getMaxLiquidity(_tickSpacing);\\n        ticks[TickMath.MIN_TICK] = Ticks.Tick(TickMath.MIN_TICK, TickMath.MAX_TICK, uint128(0), 0, 0, 0);\\n        ticks[TickMath.MAX_TICK] = Ticks.Tick(TickMath.MIN_TICK, TickMath.MAX_TICK, uint128(0), 0, 0, 0);\\n        nearestTick = TickMath.MIN_TICK;\\n        bento = IBentoBoxMinimal(_masterDeployer.bento());\\n        barFeeTo = _masterDeployer.barFeeTo();\\n        barFee = _masterDeployer.barFee();\\n        masterDeployer = _masterDeployer;\\n        unlocked = 1;\\n    }\\n\\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\\n    /// The router must ensure that sufficient liquidity has been minted.\\n    function mint(bytes calldata data) public override lock returns (uint256 _liquidity) {\\n        MintParams memory mintParams = abi.decode(data, (MintParams));\\n\\n        uint256 priceLower = uint256(TickMath.getSqrtRatioAtTick(mintParams.lower));\\n        uint256 priceUpper = uint256(TickMath.getSqrtRatioAtTick(mintParams.upper));\\n        uint256 currentPrice = uint256(price);\\n\\n        _liquidity = DyDxMath.getLiquidityForAmounts(\\n            priceLower,\\n            priceUpper,\\n            currentPrice,\\n            mintParams.amount1Desired,\\n            mintParams.amount0Desired\\n        );\\n\\n        unchecked {\\n            (uint256 amount0fees, uint256 amount1fees, ) = _updatePosition(\\n                mintParams.positionOwner,\\n                mintParams.lower,\\n                mintParams.upper,\\n                int128(uint128(_liquidity))\\n            );\\n            if (amount0fees > 0) {\\n                _transfer(token0, amount0fees, mintParams.positionOwner, false);\\n                reserve0 -= uint128(amount0fees);\\n            }\\n            if (amount1fees > 0) {\\n                _transfer(token1, amount1fees, mintParams.positionOwner, false);\\n                reserve1 -= uint128(amount1fees);\\n            }\\n        }\\n\\n        unchecked {\\n            if (priceLower < currentPrice && currentPrice < priceUpper) liquidity += uint128(_liquidity);\\n        }\\n\\n        _ensureTickSpacing(mintParams.lower, mintParams.upper);\\n\\n        nearestTick = Ticks.insert(\\n            ticks,\\n            feeGrowthGlobal0,\\n            feeGrowthGlobal1,\\n            secondsGrowthGlobal,\\n            mintParams.lowerOld,\\n            mintParams.lower,\\n            mintParams.upperOld,\\n            mintParams.upper,\\n            uint128(_liquidity),\\n            nearestTick,\\n            uint160(currentPrice)\\n        );\\n\\n        (uint128 amount0Actual, uint128 amount1Actual) = DyDxMath.getAmountsForLiquidity(\\n            priceLower,\\n            priceUpper,\\n            currentPrice,\\n            _liquidity,\\n            true\\n        );\\n\\n        {\\n            ITridentRouter.TokenInput[] memory callbackData = new ITridentRouter.TokenInput[](2);\\n            callbackData[0] = ITridentRouter.TokenInput(token0, mintParams.token0native, amount0Actual);\\n            callbackData[1] = ITridentRouter.TokenInput(token1, mintParams.token1native, amount1Actual);\\n            ITridentCallee(msg.sender).tridentMintCallback(abi.encode(callbackData));\\n        }\\n\\n        unchecked {\\n            if (amount0Actual != 0) {\\n                if (amount0Actual + reserve0 > _balance(token0)) revert Token0Missing();\\n                reserve0 += amount0Actual;\\n            }\\n\\n            if (amount1Actual != 0) {\\n                if (amount1Actual + reserve1 > _balance(token1)) revert Token1Missing();\\n                reserve1 += amount1Actual;\\n            }\\n        }\\n\\n        (uint256 feeGrowth0, uint256 feeGrowth1) = rangeFeeGrowth(mintParams.lower, mintParams.upper);\\n\\n        if (mintParams.positionRecipient != address(0)) {\\n            IPositionManager(mintParams.positionOwner).positionMintCallback(\\n                mintParams.positionRecipient,\\n                mintParams.lower,\\n                mintParams.upper,\\n                uint128(_liquidity),\\n                feeGrowth0,\\n                feeGrowth1,\\n                mintParams.positionId\\n            );\\n        }\\n\\n        emit Mint(mintParams.positionOwner, amount0Actual, amount1Actual);\\n    }\\n\\n    /// @notice Burn function that cannpt conform to the IPool interface due to having three return values.\\n    /// @dev Burns LP tokens sent to this contract.\\n    function decreaseLiquidity(\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        address recipient,\\n        bool unwrapBento\\n    )\\n        public\\n        returns (\\n            IPool.TokenAmount[] memory withdrawnAmounts,\\n            IPool.TokenAmount[] memory feesWithdrawn,\\n            uint256 oldLiquidity\\n        )\\n    {\\n        uint256 amount0;\\n        uint256 amount1;\\n\\n        {\\n            uint160 priceLower = TickMath.getSqrtRatioAtTick(lower);\\n            uint160 priceUpper = TickMath.getSqrtRatioAtTick(upper);\\n            uint160 currentPrice = price;\\n\\n            unchecked {\\n                if (priceLower < currentPrice && currentPrice < priceUpper) liquidity -= amount;\\n            }\\n\\n            (amount0, amount1) = DyDxMath.getAmountsForLiquidity(\\n                uint256(priceLower),\\n                uint256(priceUpper),\\n                uint256(currentPrice),\\n                uint256(amount),\\n                false\\n            );\\n        }\\n\\n        {\\n            // Ensure no overflow happens when we cast to int128.\\n            if (amount > uint128(type(int128).max)) revert Overflow();\\n\\n            uint256 amount0fees;\\n            uint256 amount1fees;\\n            (amount0fees, amount1fees, oldLiquidity) = _updatePosition(msg.sender, lower, upper, -int128(amount));\\n\\n            withdrawnAmounts = new TokenAmount[](2);\\n            withdrawnAmounts[0] = TokenAmount({token: token0, amount: amount0});\\n            withdrawnAmounts[1] = TokenAmount({token: token1, amount: amount1});\\n\\n            feesWithdrawn = new TokenAmount[](2);\\n            feesWithdrawn[0] = TokenAmount({token: token0, amount: amount0fees});\\n            feesWithdrawn[1] = TokenAmount({token: token1, amount: amount1fees});\\n\\n            unchecked {\\n                amount0 += amount0fees;\\n                amount1 += amount1fees;\\n            }\\n        }\\n\\n        unchecked {\\n            reserve0 -= uint128(amount0);\\n            reserve1 -= uint128(amount1);\\n        }\\n\\n        _transferBothTokens(recipient, amount0, amount1, unwrapBento);\\n\\n        nearestTick = Ticks.remove(ticks, lower, upper, amount, nearestTick);\\n        emit Burn(msg.sender, amount0, amount1);\\n    }\\n\\n    function burn(bytes calldata) public pure override returns (IPool.TokenAmount[] memory) {\\n        revert();\\n    }\\n\\n    function burnSingle(bytes calldata) public pure override returns (uint256) {\\n        revert();\\n    }\\n\\n    function collect(\\n        int24 lower,\\n        int24 upper,\\n        address recipient,\\n        bool unwrapBento\\n    ) public lock returns (uint256 amount0fees, uint256 amount1fees) {\\n        (amount0fees, amount1fees, ) = _updatePosition(msg.sender, lower, upper, 0);\\n\\n        _transferBothTokens(recipient, amount0fees, amount1fees, unwrapBento);\\n\\n        reserve0 -= uint128(amount0fees);\\n        reserve1 -= uint128(amount1fees);\\n\\n        emit Collect(msg.sender, amount0fees, amount1fees);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage\\n    /// - price is \\u221a(y/x)\\n    /// - x is token0\\n    /// - zero for one -> price will move down.\\n    function swap(bytes memory data) public override lock returns (uint256 amountOut) {\\n        (bool zeroForOne, uint256 inAmount, address recipient, bool unwrapBento) = abi.decode(data, (bool, uint256, address, bool));\\n\\n        SwapCache memory cache = SwapCache({\\n            feeAmount: 0,\\n            totalFeeAmount: 0,\\n            protocolFee: 0,\\n            feeGrowthGlobalA: zeroForOne ? feeGrowthGlobal1 : feeGrowthGlobal0,\\n            feeGrowthGlobalB: zeroForOne ? feeGrowthGlobal0 : feeGrowthGlobal1,\\n            currentPrice: uint256(price),\\n            currentLiquidity: uint256(liquidity),\\n            input: inAmount,\\n            nextTickToCross: zeroForOne ? nearestTick : ticks[nearestTick].nextTick\\n        });\\n\\n        unchecked {\\n            uint256 timestamp = block.timestamp;\\n            uint256 diff = timestamp - uint256(lastObservation); // Underflow in 2106. Don't do staking rewards in the year 2106.\\n            if (diff > 0 && liquidity > 0) {\\n                lastObservation = uint32(timestamp);\\n                secondsGrowthGlobal += uint160((diff << 128) / liquidity);\\n            }\\n        }\\n\\n        while (cache.input != 0) {\\n            uint256 nextTickPrice = uint256(TickMath.getSqrtRatioAtTick(cache.nextTickToCross));\\n            uint256 output = 0;\\n            bool cross = false;\\n\\n            if (zeroForOne) {\\n                // Trading token 0 (x) for token 1 (y).\\n                // Price is decreasing.\\n                // Maximum input amount within current tick range: \\u0394x = \\u0394(1/\\u221a\\ud835\\udc43) \\u00b7 L.\\n                uint256 maxDx = DyDxMath.getDx(cache.currentLiquidity, nextTickPrice, cache.currentPrice, false);\\n\\n                if (cache.input <= maxDx) {\\n                    // We can swap within the current range.\\n                    uint256 liquidityPadded = cache.currentLiquidity << 96;\\n                    // Calculate new price after swap: \\u221a\\ud835\\udc43[new] =  L \\u00b7 \\u221a\\ud835\\udc43 / (L + \\u0394x \\u00b7 \\u221a\\ud835\\udc43)\\n                    // This is derrived from \\u0394(1/\\u221a\\ud835\\udc43) = \\u0394x/L\\n                    // where \\u0394(1/\\u221a\\ud835\\udc43) is 1/\\u221a\\ud835\\udc43[old] - 1/\\u221a\\ud835\\udc43[new] and we solve for \\u221a\\ud835\\udc43[new].\\n                    // In case of an owerflow we can use: \\u221a\\ud835\\udc43[new] = L / (L / \\u221a\\ud835\\udc43 + \\u0394x).\\n                    // This is derrived by dividing the original fraction by \\u221a\\ud835\\udc43 on both sides.\\n                    uint256 newPrice = uint256(\\n                        FullMath.mulDivRoundingUp(liquidityPadded, cache.currentPrice, liquidityPadded + cache.currentPrice * cache.input)\\n                    );\\n\\n                    if (!(nextTickPrice <= newPrice && newPrice < cache.currentPrice)) {\\n                        // Overflow. We use a modified version of the formula.\\n                        newPrice = uint160(UnsafeMath.divRoundingUp(liquidityPadded, liquidityPadded / cache.currentPrice + cache.input));\\n                    }\\n                    // Based on the price difference calculate the output of th swap: \\u0394y = \\u0394\\u221aP \\u00b7 L.\\n                    output = DyDxMath.getDy(cache.currentLiquidity, newPrice, cache.currentPrice, false);\\n                    cache.currentPrice = newPrice;\\n                    cache.input = 0;\\n                } else {\\n                    // Execute swap step and cross the tick.\\n                    output = DyDxMath.getDy(cache.currentLiquidity, nextTickPrice, cache.currentPrice, false);\\n                    cache.currentPrice = nextTickPrice;\\n                    cross = true;\\n                    cache.input -= maxDx;\\n                }\\n            } else {\\n                // Price is increasing.\\n                // Maximum swap amount within the current tick range: \\u0394y = \\u0394\\u221aP \\u00b7 L.\\n                uint256 maxDy = DyDxMath.getDy(cache.currentLiquidity, cache.currentPrice, nextTickPrice, false);\\n\\n                if (cache.input <= maxDy) {\\n                    // We can swap within the current range.\\n                    // Calculate new price after swap: \\u0394P = \\u0394y/L.\\n                    uint256 newPrice = cache.currentPrice +\\n                        FullMath.mulDiv(cache.input, 0x1000000000000000000000000, cache.currentLiquidity);\\n                    // Calculate output of swap\\n                    // - \\u0394x = \\u0394(1/\\u221aP) \\u00b7 L.\\n                    output = DyDxMath.getDx(cache.currentLiquidity, cache.currentPrice, newPrice, false);\\n                    cache.currentPrice = newPrice;\\n                    cache.input = 0;\\n                } else {\\n                    // Swap & cross the tick.\\n                    output = DyDxMath.getDx(cache.currentLiquidity, cache.currentPrice, nextTickPrice, false);\\n                    cache.currentPrice = nextTickPrice;\\n                    cross = true;\\n                    cache.input -= maxDy;\\n                }\\n            }\\n\\n            // cache.feeGrowthGlobalA is the feeGrowthGlobal counter for the output token.\\n            // It increases each swap step.\\n            (cache.totalFeeAmount, amountOut, cache.protocolFee, cache.feeGrowthGlobalA) = SwapLib.handleFees(\\n                output,\\n                swapFee,\\n                barFee,\\n                cache.currentLiquidity,\\n                cache.totalFeeAmount,\\n                amountOut,\\n                cache.protocolFee,\\n                cache.feeGrowthGlobalA\\n            );\\n            if (cross) {\\n                (cache.currentLiquidity, cache.nextTickToCross) = Ticks.cross(\\n                    ticks,\\n                    cache.nextTickToCross,\\n                    secondsGrowthGlobal,\\n                    cache.currentLiquidity,\\n                    cache.feeGrowthGlobalA,\\n                    cache.feeGrowthGlobalB,\\n                    zeroForOne,\\n                    tickSpacing\\n                );\\n                if (cache.currentLiquidity == 0) {\\n                    // We step into a zone that has liquidity - or we reach the end of the linked list.\\n                    cache.currentPrice = uint256(TickMath.getSqrtRatioAtTick(cache.nextTickToCross));\\n                    (cache.currentLiquidity, cache.nextTickToCross) = Ticks.cross(\\n                        ticks,\\n                        cache.nextTickToCross,\\n                        secondsGrowthGlobal,\\n                        cache.currentLiquidity,\\n                        cache.feeGrowthGlobalA,\\n                        cache.feeGrowthGlobalB,\\n                        zeroForOne,\\n                        tickSpacing\\n                    );\\n                }\\n            }\\n        }\\n\\n        price = uint160(cache.currentPrice);\\n\\n        int24 newNearestTick = zeroForOne ? cache.nextTickToCross : ticks[cache.nextTickToCross].previousTick;\\n\\n        if (nearestTick != newNearestTick) {\\n            nearestTick = newNearestTick;\\n            liquidity = uint128(cache.currentLiquidity);\\n        }\\n\\n        _updateReserves(zeroForOne, uint128(inAmount), amountOut);\\n\\n        _updateFees(zeroForOne, cache.feeGrowthGlobalA, uint128(cache.protocolFee));\\n\\n        if (zeroForOne) {\\n            _transfer(token1, amountOut, recipient, unwrapBento);\\n            emit Swap(recipient, token0, token1, inAmount, amountOut);\\n        } else {\\n            _transfer(token0, amountOut, recipient, unwrapBento);\\n            emit Swap(recipient, token1, token0, inAmount, amountOut);\\n        }\\n    }\\n\\n    /// @dev Reserved for IPool.\\n    function flashSwap(bytes calldata) public pure override returns (uint256) {\\n        revert();\\n    }\\n\\n    /// @dev Updates `barFee` for Trident protocol.\\n    function updateBarFee() public {\\n        barFee = IMasterDeployer(masterDeployer).barFee();\\n    }\\n\\n    /// @dev Collects fees for Trident protocol.\\n    function collectProtocolFee() public lock returns (uint128 amount0, uint128 amount1) {\\n        if (token0ProtocolFee > 1) {\\n            amount0 = token0ProtocolFee - 1;\\n            token0ProtocolFee = 1;\\n            reserve0 -= amount0;\\n            _transfer(token0, amount0, barFeeTo, false);\\n        }\\n        if (token1ProtocolFee > 1) {\\n            amount1 = token1ProtocolFee - 1;\\n            token1ProtocolFee = 1;\\n            reserve1 -= amount1;\\n            _transfer(token1, amount1, barFeeTo, false);\\n        }\\n    }\\n\\n    function _ensureTickSpacing(int24 lower, int24 upper) internal view {\\n        if (lower % int24(tickSpacing) != 0) revert InvalidTick();\\n        if ((lower / int24(tickSpacing)) % 2 != 0) revert LowerEven();\\n        if (upper % int24(tickSpacing) != 0) revert InvalidTick();\\n        if ((upper / int24(tickSpacing)) % 2 == 0) revert UpperOdd();\\n    }\\n\\n    function _updateReserves(\\n        bool zeroForOne,\\n        uint128 inAmount,\\n        uint256 amountOut\\n    ) internal {\\n        if (zeroForOne) {\\n            uint256 balance0 = _balance(token0);\\n            uint128 newBalance = reserve0 + inAmount;\\n            if (uint256(newBalance) > balance0) revert Token0Missing();\\n            reserve0 = newBalance;\\n            reserve1 -= uint128(amountOut); // todo wrap in unchecked {}\\n        } else {\\n            uint256 balance1 = _balance(token1);\\n            uint128 newBalance = reserve1 + inAmount;\\n            if (uint256(newBalance) > balance1) revert Token1Missing();\\n            reserve1 = newBalance;\\n            reserve0 -= uint128(amountOut);\\n        }\\n    }\\n\\n    function _updateFees(\\n        bool zeroForOne,\\n        uint256 feeGrowthGlobal,\\n        uint128 protocolFee\\n    ) internal {\\n        if (zeroForOne) {\\n            feeGrowthGlobal1 = feeGrowthGlobal;\\n            token1ProtocolFee += protocolFee;\\n        } else {\\n            feeGrowthGlobal0 = feeGrowthGlobal;\\n            token0ProtocolFee += protocolFee;\\n        }\\n    }\\n\\n    function _updatePosition(\\n        address owner,\\n        int24 lower,\\n        int24 upper,\\n        int128 amount\\n    )\\n        internal\\n        returns (\\n            uint256 amount0fees,\\n            uint256 amount1fees,\\n            uint256 oldLiquidity\\n        )\\n    {\\n        Position storage position = positions[owner][lower][upper];\\n\\n        (uint256 growth0current, uint256 growth1current) = rangeFeeGrowth(lower, upper);\\n        amount0fees = FullMath.mulDiv(\\n            growth0current - position.feeGrowthInside0Last,\\n            position.liquidity,\\n            0x100000000000000000000000000000000\\n        );\\n\\n        amount1fees = FullMath.mulDiv(\\n            growth1current - position.feeGrowthInside1Last,\\n            position.liquidity,\\n            0x100000000000000000000000000000000\\n        );\\n\\n        oldLiquidity = position.liquidity;\\n\\n        if (amount < 0) {\\n            position.liquidity -= uint128(-amount);\\n        }\\n\\n        if (amount > 0) {\\n            position.liquidity += uint128(amount);\\n            if (position.liquidity > MAX_TICK_LIQUIDITY) revert LiquidityOverflow();\\n        }\\n\\n        position.feeGrowthInside0Last = growth0current;\\n        position.feeGrowthInside1Last = growth1current;\\n    }\\n\\n    function _balance(address token) internal view returns (uint256 balance) {\\n        balance = bento.balanceOf(token, address(this));\\n    }\\n\\n    function _transfer(\\n        address token,\\n        uint256 shares,\\n        address to,\\n        bool unwrapBento\\n    ) internal {\\n        if (unwrapBento) {\\n            bento.withdraw(token, address(this), to, 0, shares);\\n        } else {\\n            bento.transfer(token, address(this), to, shares);\\n        }\\n    }\\n\\n    function _transferBothTokens(\\n        address to,\\n        uint256 shares0,\\n        uint256 shares1,\\n        bool unwrapBento\\n    ) internal {\\n        if (unwrapBento) {\\n            bento.withdraw(token0, address(this), to, 0, shares0);\\n            bento.withdraw(token1, address(this), to, 0, shares1);\\n        } else {\\n            bento.transfer(token0, address(this), to, shares0);\\n            bento.transfer(token1, address(this), to, shares1);\\n        }\\n    }\\n\\n    /// @dev Generic formula for fee growth inside a range: (globalGrowth - growthBelow - growthAbove)\\n    /// - available counters: global, outside u, outside v.\\n\\n    ///                  u         \\u25bc         v\\n    /// ----|----|-------|xxxxxxxxxxxxxxxxxxx|--------|--------- (global - feeGrowthOutside(u) - feeGrowthOutside(v))\\n\\n    ///             \\u25bc    u                   v\\n    /// ----|----|-------|xxxxxxxxxxxxxxxxxxx|--------|--------- (global - (global - feeGrowthOutside(u)) - feeGrowthOutside(v))\\n\\n    ///                  u                   v    \\u25bc\\n    /// ----|----|-------|xxxxxxxxxxxxxxxxxxx|--------|--------- (global - feeGrowthOutside(u) - (global - feeGrowthOutside(v)))\\n\\n    /// @notice Calculates the fee growth inside a range (per unit of liquidity).\\n    /// @dev Multiply `rangeFeeGrowth` delta by the provided liquidity to get accrued fees for some period.\\n    function rangeFeeGrowth(int24 lowerTick, int24 upperTick) public view returns (uint256 feeGrowthInside0, uint256 feeGrowthInside1) {\\n        int24 currentTick = nearestTick;\\n\\n        Ticks.Tick storage lower = ticks[lowerTick];\\n        Ticks.Tick storage upper = ticks[upperTick];\\n\\n        // Calculate fee growth below & above.\\n        uint256 _feeGrowthGlobal0 = feeGrowthGlobal0;\\n        uint256 _feeGrowthGlobal1 = feeGrowthGlobal1;\\n        uint256 feeGrowthBelow0;\\n        uint256 feeGrowthBelow1;\\n        uint256 feeGrowthAbove0;\\n        uint256 feeGrowthAbove1;\\n\\n        if (lowerTick <= currentTick) {\\n            feeGrowthBelow0 = lower.feeGrowthOutside0;\\n            feeGrowthBelow1 = lower.feeGrowthOutside1;\\n        } else {\\n            feeGrowthBelow0 = _feeGrowthGlobal0 - lower.feeGrowthOutside0;\\n            feeGrowthBelow1 = _feeGrowthGlobal1 - lower.feeGrowthOutside1;\\n        }\\n\\n        if (currentTick < upperTick) {\\n            feeGrowthAbove0 = upper.feeGrowthOutside0;\\n            feeGrowthAbove1 = upper.feeGrowthOutside1;\\n        } else {\\n            feeGrowthAbove0 = _feeGrowthGlobal0 - upper.feeGrowthOutside0;\\n            feeGrowthAbove1 = _feeGrowthGlobal1 - upper.feeGrowthOutside1;\\n        }\\n\\n        feeGrowthInside0 = _feeGrowthGlobal0 - feeGrowthBelow0 - feeGrowthAbove0;\\n        feeGrowthInside1 = _feeGrowthGlobal1 - feeGrowthBelow1 - feeGrowthAbove1;\\n    }\\n\\n    function getAssets() public view override returns (address[] memory assets) {\\n        assets = new address[](2);\\n        assets[0] = token0;\\n        assets[1] = token1;\\n    }\\n\\n    /// @dev Reserved for IPool.\\n    function getAmountOut(bytes calldata) public pure override returns (uint256) {\\n        revert();\\n    }\\n\\n    /// @dev Reserved for IPool.\\n    function getAmountIn(bytes calldata) public pure override returns (uint256) {\\n        revert();\\n    }\\n\\n    function getImmutables()\\n        public\\n        view\\n        returns (\\n            uint128 _MAX_TICK_LIQUIDITY,\\n            uint24 _tickSpacing,\\n            uint24 _swapFee,\\n            address _barFeeTo,\\n            IBentoBoxMinimal _bento,\\n            IMasterDeployer _masterDeployer,\\n            address _token0,\\n            address _token1\\n        )\\n    {\\n        _MAX_TICK_LIQUIDITY = MAX_TICK_LIQUIDITY;\\n        _tickSpacing = tickSpacing;\\n        _swapFee = swapFee; // 1000 corresponds to 0.1% fee.\\n        _barFeeTo = barFeeTo;\\n        _bento = bento;\\n        _masterDeployer = masterDeployer;\\n        _token0 = token0;\\n        _token1 = token1;\\n    }\\n\\n    function getPriceAndNearestTicks() public view returns (uint160 _price, int24 _nearestTick) {\\n        _price = price;\\n        _nearestTick = nearestTick;\\n    }\\n\\n    function getTokenProtocolFees() public view returns (uint128 _token0ProtocolFee, uint128 _token1ProtocolFee) {\\n        _token0ProtocolFee = token0ProtocolFee;\\n        _token1ProtocolFee = token1ProtocolFee;\\n    }\\n\\n    function getReserves() public view returns (uint128 _reserve0, uint128 _reserve1) {\\n        _reserve0 = reserve0;\\n        _reserve1 = reserve1;\\n    }\\n\\n    function getSecondsGrowthAndLastObservation() public view returns (uint160 _secondsGrowthGlobal, uint32 _lastObservation) {\\n        _secondsGrowthGlobal = secondsGrowthGlobal;\\n        _lastObservation = lastObservation;\\n    }\\n}\\n\",\"keccak256\":\"0x25a83786893f3ffec804307a654ebce683447d9fca6e3f80c56057c44e913730\",\"license\":\"GPL-3.0-or-later\"},\"hardhat/console.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >= 0.4.22 <0.9.0;\\n\\nlibrary console {\\n\\taddress constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);\\n\\n\\tfunction _sendLogPayload(bytes memory payload) private view {\\n\\t\\tuint256 payloadLength = payload.length;\\n\\t\\taddress consoleAddress = CONSOLE_ADDRESS;\\n\\t\\tassembly {\\n\\t\\t\\tlet payloadStart := add(payload, 32)\\n\\t\\t\\tlet r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)\\n\\t\\t}\\n\\t}\\n\\n\\tfunction log() internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log()\\\"));\\n\\t}\\n\\n\\tfunction logInt(int p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(int)\\\", p0));\\n\\t}\\n\\n\\tfunction logUint(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction logString(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction logBool(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction logAddress(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes(bytes memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes1(bytes1 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes1)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes2(bytes2 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes2)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes3(bytes3 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes3)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes4(bytes4 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes4)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes5(bytes5 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes5)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes6(bytes6 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes6)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes7(bytes7 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes7)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes8(bytes8 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes8)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes9(bytes9 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes9)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes10(bytes10 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes10)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes11(bytes11 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes11)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes12(bytes12 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes12)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes13(bytes13 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes13)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes14(bytes14 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes14)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes15(bytes15 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes15)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes16(bytes16 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes16)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes17(bytes17 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes17)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes18(bytes18 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes18)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes19(bytes19 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes19)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes20(bytes20 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes20)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes21(bytes21 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes21)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes22(bytes22 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes22)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes23(bytes23 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes23)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes24(bytes24 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes24)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes25(bytes25 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes25)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes26(bytes26 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes26)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes27(bytes27 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes27)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes28(bytes28 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes28)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes29(bytes29 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes29)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes30(bytes30 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes30)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes31(bytes31 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes31)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes32(bytes32 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes32)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction log(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction log(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction log(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n}\\n\",\"keccak256\":\"0x72b6a1d297cd3b033d7c2e4a7e7864934bb767db6453623f1c3082c6534547f4\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 12361,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                "label": "liquidity",
                "offset": 0,
                "slot": "0",
                "type": "t_uint128"
              },
              {
                "astId": 12363,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                "label": "secondsGrowthGlobal",
                "offset": 0,
                "slot": "1",
                "type": "t_uint160"
              },
              {
                "astId": 12366,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                "label": "lastObservation",
                "offset": 20,
                "slot": "1",
                "type": "t_uint32"
              },
              {
                "astId": 12368,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                "label": "feeGrowthGlobal0",
                "offset": 0,
                "slot": "2",
                "type": "t_uint256"
              },
              {
                "astId": 12371,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                "label": "feeGrowthGlobal1",
                "offset": 0,
                "slot": "3",
                "type": "t_uint256"
              },
              {
                "astId": 12373,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                "label": "barFee",
                "offset": 0,
                "slot": "4",
                "type": "t_uint256"
              },
              {
                "astId": 12375,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                "label": "token0ProtocolFee",
                "offset": 0,
                "slot": "5",
                "type": "t_uint128"
              },
              {
                "astId": 12377,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                "label": "token1ProtocolFee",
                "offset": 16,
                "slot": "5",
                "type": "t_uint128"
              },
              {
                "astId": 12379,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                "label": "reserve0",
                "offset": 0,
                "slot": "6",
                "type": "t_uint128"
              },
              {
                "astId": 12382,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                "label": "reserve1",
                "offset": 16,
                "slot": "6",
                "type": "t_uint128"
              },
              {
                "astId": 12384,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                "label": "price",
                "offset": 0,
                "slot": "7",
                "type": "t_uint160"
              },
              {
                "astId": 12387,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                "label": "nearestTick",
                "offset": 20,
                "slot": "7",
                "type": "t_int24"
              },
              {
                "astId": 12390,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                "label": "unlocked",
                "offset": 0,
                "slot": "8",
                "type": "t_uint256"
              },
              {
                "astId": 12395,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                "label": "ticks",
                "offset": 0,
                "slot": "9",
                "type": "t_mapping(t_int24,t_struct(Tick)4235_storage)"
              },
              {
                "astId": 12404,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                "label": "positions",
                "offset": 0,
                "slot": "10",
                "type": "t_mapping(t_address,t_mapping(t_int24,t_mapping(t_int24,t_struct(Position)12411_storage)))"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_int24": {
                "encoding": "inplace",
                "label": "int24",
                "numberOfBytes": "3"
              },
              "t_mapping(t_address,t_mapping(t_int24,t_mapping(t_int24,t_struct(Position)12411_storage)))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(int24 => mapping(int24 => struct ConcentratedLiquidityPool.Position)))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_int24,t_mapping(t_int24,t_struct(Position)12411_storage))"
              },
              "t_mapping(t_int24,t_mapping(t_int24,t_struct(Position)12411_storage))": {
                "encoding": "mapping",
                "key": "t_int24",
                "label": "mapping(int24 => mapping(int24 => struct ConcentratedLiquidityPool.Position))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_int24,t_struct(Position)12411_storage)"
              },
              "t_mapping(t_int24,t_struct(Position)12411_storage)": {
                "encoding": "mapping",
                "key": "t_int24",
                "label": "mapping(int24 => struct ConcentratedLiquidityPool.Position)",
                "numberOfBytes": "32",
                "value": "t_struct(Position)12411_storage"
              },
              "t_mapping(t_int24,t_struct(Tick)4235_storage)": {
                "encoding": "mapping",
                "key": "t_int24",
                "label": "mapping(int24 => struct Ticks.Tick)",
                "numberOfBytes": "32",
                "value": "t_struct(Tick)4235_storage"
              },
              "t_struct(Position)12411_storage": {
                "encoding": "inplace",
                "label": "struct ConcentratedLiquidityPool.Position",
                "members": [
                  {
                    "astId": 12406,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                    "label": "liquidity",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint128"
                  },
                  {
                    "astId": 12408,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                    "label": "feeGrowthInside0Last",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_uint256"
                  },
                  {
                    "astId": 12410,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                    "label": "feeGrowthInside1Last",
                    "offset": 0,
                    "slot": "2",
                    "type": "t_uint256"
                  }
                ],
                "numberOfBytes": "96"
              },
              "t_struct(Tick)4235_storage": {
                "encoding": "inplace",
                "label": "struct Ticks.Tick",
                "members": [
                  {
                    "astId": 4224,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                    "label": "previousTick",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_int24"
                  },
                  {
                    "astId": 4226,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                    "label": "nextTick",
                    "offset": 3,
                    "slot": "0",
                    "type": "t_int24"
                  },
                  {
                    "astId": 4228,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                    "label": "liquidity",
                    "offset": 6,
                    "slot": "0",
                    "type": "t_uint128"
                  },
                  {
                    "astId": 4230,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                    "label": "feeGrowthOutside0",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_uint256"
                  },
                  {
                    "astId": 4232,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                    "label": "feeGrowthOutside1",
                    "offset": 0,
                    "slot": "2",
                    "type": "t_uint256"
                  },
                  {
                    "astId": 4234,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol:ConcentratedLiquidityPool",
                    "label": "secondsGrowthOutside",
                    "offset": 0,
                    "slot": "3",
                    "type": "t_uint160"
                  }
                ],
                "numberOfBytes": "128"
              },
              "t_uint128": {
                "encoding": "inplace",
                "label": "uint128",
                "numberOfBytes": "16"
              },
              "t_uint160": {
                "encoding": "inplace",
                "label": "uint160",
                "numberOfBytes": "20"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint32": {
                "encoding": "inplace",
                "label": "uint32",
                "numberOfBytes": "4"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "decreaseLiquidity(int24,int24,uint128,address,bool)": {
                "notice": "Burn function that cannpt conform to the IPool interface due to having three return values."
              },
              "rangeFeeGrowth(int24,int24)": {
                "notice": "Calculates the fee growth inside a range (per unit of liquidity)."
              }
            },
            "notice": "Trident exchange pool template implementing concentrated liquidity for swapping between an ERC-20 token pair.",
            "version": 1
          }
        }
      },
      "contracts/pool/concentrated/ConcentratedLiquidityPoolFactory.sol": {
        "ConcentratedLiquidityPoolFactory": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "InvalidTokenOrder",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnauthorisedDeployer",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ZeroAddress",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "configAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "startIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "name": "getPools",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "pairPools",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                }
              ],
              "name": "poolsCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Mudit Gupta.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_11730": {
                  "entryPoint": null,
                  "id": 11730,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_14669": {
                  "entryPoint": null,
                  "id": 14669,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 109,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:306:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:290:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {
                "contracts/libraries/concentratedPool/DyDxMath.sol": {
                  "DyDxMath": [
                    {
                      "length": 20,
                      "start": 12340
                    }
                  ]
                },
                "contracts/libraries/concentratedPool/Ticks.sol": {
                  "Ticks": [
                    {
                      "length": 20,
                      "start": 3894
                    },
                    {
                      "length": 20,
                      "start": 11568
                    },
                    {
                      "length": 20,
                      "start": 13051
                    }
                  ]
                }
              },
              "object": "60a060405234801561001057600080fd5b50604051615eba380380615eba83398101604081905261002f9161006d565b806001600160a01b0381166100575760405163d92e233d60e01b815260040160405180910390fd5b60601b6001600160601b0319166080525061009d565b60006020828403121561007f57600080fd5b81516001600160a01b038116811461009657600080fd5b9392505050565b60805160601c615df16100c96000396000818161015a0152818161039e01526105540152615df16000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c806371a25812116200005657806371a25812146200012e578063cf58879a1462000154578063f6ab6d99146200017c57600080fd5b8063169c4cef146200008057806327c3cae114620000c15780635bc93d6c14620000d8575b600080fd5b62000097620000913660046200097a565b620001b5565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b62000097620000d236600462000a25565b62000208565b6200011f620000e93660046200093c565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526020818152604080832093909416825291909152205490565b604051908152602001620000b8565b620001456200013f366004620009c0565b62000413565b604051620000b8919062000afe565b620000977f000000000000000000000000000000000000000000000000000000000000000081565b620000976200018d36600462000a0b565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60006020528260005260406000206020528160005260406000208181548110620001de57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16925083915050565b60008060008060008086806020019051810190620002279190620008c5565b945094509450945094508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1611156200026a579293925b6040805173ffffffffffffffffffffffffffffffffffffffff80881660208301528087169282019290925262ffffff8086166060830152918416608082015290821660a082015260c001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815260028084526060840190925298506000919081602001602082028036833701905050905085816000815181106200031a576200031a62000c74565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505084816001815181106200036b576200036b62000c74565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910182015288519089012060405181908a907f000000000000000000000000000000000000000000000000000000000000000090620003c9906200089e565b620003d692919062000b5a565b8190604051809103906000f5905080158015620003f7573d6000803e3d6000fd5b509750620004078883836200053c565b50505050505050919050565b60608167ffffffffffffffff81111562000431576200043162000ca3565b6040519080825280602002602001820160405280156200045b578160200160208202803683370190505b50905060005b82811015620005335773ffffffffffffffffffffffffffffffffffffffff808716600090815260208181526040808320938916835292905220620004a6828662000bee565b81548110620004b957620004b962000c74565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110620004f957620004f962000c74565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152806200052a8162000c09565b91505062000461565b50949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614620005ac576040517f03781a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555b600183510381101562000898578281600101815181106200061e576200061e62000c74565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1683828151811062000651576200065162000c74565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1610620006a7576040517f3f06bf8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015b83518110156200088e57600080858481518110620006ce57620006ce62000c74565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085838151811062000727576200072762000c74565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409091016000908120805460018101825590825291812090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915584518190869084908110620007b657620007b662000c74565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008584815181106200080f576200080f62000c74565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604090910160009081208054600180820183559183529290912090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915501620006ac565b50600101620005f9565b50505050565b6150c38062000cf983390190565b805162ffffff81168114620008c057600080fd5b919050565b600080600080600060a08688031215620008de57600080fd5b8551620008eb8162000cd2565b6020870151909550620008fe8162000cd2565b93506200090e60408701620008ac565b92506060860151620009208162000cd2565b91506200093060808701620008ac565b90509295509295909350565b600080604083850312156200095057600080fd5b82356200095d8162000cd2565b915060208301356200096f8162000cd2565b809150509250929050565b6000806000606084860312156200099057600080fd5b83356200099d8162000cd2565b92506020840135620009af8162000cd2565b929592945050506040919091013590565b60008060008060808587031215620009d757600080fd5b8435620009e48162000cd2565b93506020850135620009f68162000cd2565b93969395505050506040820135916060013590565b60006020828403121562000a1e57600080fd5b5035919050565b60006020828403121562000a3857600080fd5b813567ffffffffffffffff8082111562000a5157600080fd5b818401915084601f83011262000a6657600080fd5b81358181111562000a7b5762000a7b62000ca3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171562000ac45762000ac462000ca3565b8160405282815287602084870101111562000ade57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6020808252825182820181905260009190848201906040850190845b8181101562000b4e57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162000b1a565b50909695505050505050565b604081526000835180604084015260005b8181101562000b8a576020818701810151606086840101520162000b6b565b8181111562000b9d576000606083860101525b5073ffffffffffffffffffffffffffffffffffffffff93909316602083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b6000821982111562000c045762000c0462000c45565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000c3e5762000c3e62000c45565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811462000cf557600080fd5b5056fe6101806040523480156200001257600080fd5b50604051620050c3380380620050c3833981016040819052620000359162000704565b6000806000806000868060200190518101906200005391906200068d565b9398509196509450925090506001600160a01b038516620000875760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038516301415620000b25760405163c1ab6dc160e01b815260040160405180910390fd5b6001600160a01b038416301415620000dd5760405163c1ab6dc160e01b815260040160405180910390fd5b620186a062ffffff84161115620001075760405163da7459b760e01b815260040160405180910390fd5b6001600160601b0319606086811b82166101405285901b16610160526001600160e81b031960e884811b821660a052600780546001600160a01b0386166001600160a01b031990911617905582901b16608052604051636e23d2e160e11b815262ffffff8216600482015273__$ce5bd159ffa25aa093db868fa3464622ad$__9063dc47a5c29060240160206040518083038186803b158015620001aa57600080fd5b505af4158015620001bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e59190620007f5565b60801b6001600160801b03191660c0908152604080519182019052620d89e719808252602082019062000218906200083a565b600290810b825260006020808401829052604080850183905260608086018490526080958601849052620d89e719938490526009835286517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebac8054898601518a8601516001600160801b0316660100000000000002600160301b600160b01b0319918a0b62ffffff90811663010000000265ffffffffffff1990941695909a0b90991693909317179190911695909517909455928501517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebad55928401517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebae5560a0909301517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebaf80546001600160a01b03929092166001600160a01b0319909216919091179055805160c0810190915282815291908201906200037a906200083a565b60020b815260200160006001600160801b03168152602001600081526020016000815260200160006001600160a01b031681525060096000620d89e719620003c2906200083a565b600290810b810b825260208083019390935260409182016000208451815486860151878601516001600160801b0316660100000000000002600160301b600160b01b031991860b62ffffff90811663010000000265ffffffffffff1990941694870b169390931791909117161781556060850151600182015560808501519181019190915560a090930151600390930180546001600160a01b039485166001600160a01b031990911617905560078054621e4ec360a31b62ffffff60a01b199091161790558051634da3182760e01b8152905192891692634da3182792600480840193919291829003018186803b158015620004bd57600080fd5b505afa158015620004d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f8919062000666565b6001600160a01b0316610100816001600160a01b031660601b81525050856001600160a01b0316630c0a0cd26040518163ffffffff1660e01b815260040160206040518083038186803b1580156200054f57600080fd5b505afa15801562000564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058a919062000666565b6001600160a01b031660e0816001600160a01b031660601b81525050856001600160a01b031663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b158015620005e057600080fd5b505afa158015620005f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061b919062000820565b600455505050505060601b6001600160601b031916610120525060016008556200089b565b80516200064d8162000882565b919050565b805162ffffff811681146200064d57600080fd5b6000602082840312156200067957600080fd5b8151620006868162000882565b9392505050565b600080600080600060a08688031215620006a657600080fd5b8551620006b38162000882565b6020870151909550620006c68162000882565b9350620006d66040870162000652565b92506060860151620006e88162000882565b9150620006f86080870162000652565b90509295509295909350565b600080604083850312156200071857600080fd5b82516001600160401b03808211156200073057600080fd5b818501915085601f8301126200074557600080fd5b8151818111156200075a576200075a6200086c565b604051601f8201601f19908116603f011681019083821181831017156200078557620007856200086c565b81604052828152602093508884848701011115620007a257600080fd5b600091505b82821015620007c65784820184015181830185015290830190620007a7565b82821115620007d85760008484830101525b9550620007ea91505085820162000640565b925050509250929050565b6000602082840312156200080857600080fd5b81516001600160801b03811681146200068657600080fd5b6000602082840312156200083357600080fd5b5051919050565b60008160020b627fffff198114156200086357634e487b7160e01b600052601160045260246000fd5b60000392915050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146200089857600080fd5b50565b60805160e81c60a05160e81c60c05160801c60e05160601c6101005160601c6101205160601c6101405160601c6101605160601c61467662000a4d6000396000818161059c01528181610e5e01528181610e8701528181610fb6015281816112ba015281816113cb015281816116b60152818161193d01528181611c8c01528181611e86015281816125180152818161312b0152818161381d01526139a101526000818161057401528181610ebe01528181610f5601528181610f7f015281816112510152818161136201528181611648015281816118c101528181611c0501528181611db0015281816123d101528181612fe80152818161371f01526138cd01526000818161054c0152612103015260008181610524015281816133310152818161340e01528181613763015281816138610152818161390a015281816139de0152613c080152600081816104fc01528181612405015261254c01526000818161046e01526136640152600081816104be0152610baa01526000818161049601528181610c4001528181610cce01528181613a1401528181613a7a01528181613ae80152613b4e01526146766000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80639da12096116100ee578063bcdb4dad11610097578063cf78756b11610071578063cf78756b146105db578063f30dba93146105e4578063fb39d628146106bb578063fb5d80b3146106ce57600080fd5b8063bcdb4dad14610457578063c14ad802146105ca578063caa4b46a146105d357600080fd5b8063aaca1b4d116100c8578063aaca1b4d146103ae578063acfe88f81461042f578063af8c09bf146101a857600080fd5b80639da120961461037e578063a69840a814610387578063a8f1f52e146101a857600080fd5b80636289db82116101505780637ba0e2e71161012a5780637ba0e2e7146103165780638c347f9b1461032957806392bc32191461037457600080fd5b80636289db821461029557806367e4ac2c146102b75780636d59d802146102cc57600080fd5b80632a07b6c7116101815780632a07b6c714610262578063499a3c50146101a8578063627dd56a1461028257600080fd5b8063053da1c8146101a85780630902f1ac146101ce5780631a68650214610225575b600080fd5b6101bb6101b6366004613d50565b610700565b6040519081526020015b60405180910390f35b6006546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004165b604080516fffffffffffffffffffffffffffffffff9384168152929091166020830152016101c5565b600054610241906fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020016101c5565b610275610270366004613d50565b610707565b6040516101c59190614195565b6101bb610290366004613dc2565b61070e565b6102a86102a3366004613f55565b611056565b6040516101c5939291906141a8565b6102bf611626565b6040516101c5919061413b565b6001546040805173ffffffffffffffffffffffffffffffffffffffff831681527401000000000000000000000000000000000000000090920463ffffffff166020830152016101c5565b6101bb610324366004613d50565b611725565b6007546040805173ffffffffffffffffffffffffffffffffffffffff8316815274010000000000000000000000000000000000000000909204600290810b900b6020830152016101c5565b61037c612101565b005b6101bb60025481565b6101bb7f54726964656e743a436f6e63656e7472617465644c697175696469747900000081565b6104016103bc366004613cb0565b600a6020908152600093845260408085208252928452828420905282529020805460018201546002909201546fffffffffffffffffffffffffffffffff909116919083565b604080516fffffffffffffffffffffffffffffffff90941684526020840192909252908201526060016101c5565b61044261043d366004613ecb565b6121a4565b604080519283526020830191909152016101c5565b604080516fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815262ffffff7f0000000000000000000000000000000000000000000000000000000000000000811660208301527f0000000000000000000000000000000000000000000000000000000000000000169181019190915273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660608301527f0000000000000000000000000000000000000000000000000000000000000000811660808301527f0000000000000000000000000000000000000000000000000000000000000000811660a08301527f0000000000000000000000000000000000000000000000000000000000000000811660c08301527f00000000000000000000000000000000000000000000000000000000000000001660e0820152610100016101c5565b6101bb60045481565b6101fc6122bd565b6101bb60035481565b61065a6105f2366004613e91565b60096020526000908152604090208054600182015460028084015460039094015483820b946301000000850490920b93660100000000000090046fffffffffffffffffffffffffffffffff1692919073ffffffffffffffffffffffffffffffffffffffff1686565b60408051600297880b81529590960b60208601526fffffffffffffffffffffffffffffffff909316948401949094526060830152608082019290925273ffffffffffffffffffffffffffffffffffffffff90911660a082015260c0016101c5565b6104426106c9366004613f04565b61257b565b6005546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004166101fc565b6000806000fd5b6060600080fd5b60006008546002141561074d576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026008819055506000806000808580602001905181019061076f9190613cfb565b93509350935093506000604051806101200160405280600081526020016000815260200160008152602001866107a7576002546107ab565b6003545b8152602001866107bd576003546107c1565b6002545b815260075473ffffffffffffffffffffffffffffffffffffffff1660208201526000546fffffffffffffffffffffffffffffffff166040820152606081018690526080018661084b57600754740100000000000000000000000000000000000000009004600290810b810b810b60009081526009602052604090205463010000009004900b61086a565b60075474010000000000000000000000000000000000000000900460020b5b60020b9052600154909150429074010000000000000000000000000000000000000000900463ffffffff168082039082148015906108bb57506000546fffffffffffffffffffffffffffffffff1615155b1561097c57600180547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8516021790556000546fffffffffffffffffffffffffffffffff16608082901b8161092e5761092e614571565b600180547fffffffffffffffffffffffff000000000000000000000000000000000000000081169390920473ffffffffffffffffffffffffffffffffffffffff928316019091169190911790555b50505b60e081015115610d0d576000610999826101000151612708565b73ffffffffffffffffffffffffffffffffffffffff1690506000808715610ae65760006109d18560c00151858760a001516000612a9b565b9050808560e0015111610aa657600060608660c00151901b90506000610a19828860a001518960e001518a60a00151610a0a91906143c0565b610a149086614320565b612af5565b9050808611158015610a2e57508660a0015181105b610a7957610a60828860e001518960a0015185610a4b91906143ac565b610a559190614320565b808204910615150190565b73ffffffffffffffffffffffffffffffffffffffff1690505b610a8e8760c00151828960a001516000612b51565b60a0880191909152600060e08801529350610ae09050565b610abb8560c00151858760a001516000612b51565b60a0860185905260e086018051919450600193508291610adc90839061445b565b9052505b50610ba4565b6000610afd8560c001518660a00151866000612b51565b9050808560e0015111610b68576000610b2c8660e001516c010000000000000000000000008860c00151612b96565b8660a00151610b3b9190614320565b9050610b528660c001518760a00151836000612a9b565b60a0870191909152600060e08701529250610ba2565b610b7d8560c001518660a00151866000612a9b565b60a0860185905260e086018051919450600193508291610b9e90839061445b565b9052505b505b610be6827f00000000000000000000000000000000000000000000000000000000000000006004548760c0015188602001518e8a604001518b60600151612c67565b60608801526040870152602086019190915298508015610d0557610c646009856101000151600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168760c00151886060015189608001518e7f0000000000000000000000000000000000000000000000000000000000000000612d0c565b600290810b900b61010086015260c08501819052610d0557610c8a846101000151612708565b73ffffffffffffffffffffffffffffffffffffffff90811660a086015261010085015160015460c087015160608801516080890151610cf29560099594169291908e7f0000000000000000000000000000000000000000000000000000000000000000612d0c565b600290810b900b61010086015260c08501525b50505061097f565b60a0810151600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055600085610d8057610100820151600290810b810b600090815260096020526040902054900b610d87565b8161010001515b90508060020b600760149054906101000a900460020b60020b14610e3557600780547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000062ffffff600285900b160217905560c0820151600080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9092169190911790555b610e40868689612fdb565b610e53868360600151846040015161321d565b8515610f5157610e857f00000000000000000000000000000000000000000000000000000000000000008886866132ca565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062888b604051610f44929190918252602082015260400190565b60405180910390a4611045565b610f7d7f00000000000000000000000000000000000000000000000000000000000000008886866132ca565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062888b60405161103c929190918252602082015260400190565b60405180910390a45b505060016008555092949350505050565b6060806000806000806110688b612708565b905060006110758b612708565b60075490915073ffffffffffffffffffffffffffffffffffffffff908116908316811180156110cf57508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b1561111857600080546fffffffffffffffffffffffffffffffff8082168e9003167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b61117a8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168e6fffffffffffffffffffffffffffffffff166000613472565b6fffffffffffffffffffffffffffffffff9182169650811694506f7fffffffffffffffffffffffffffffff908c16111592506111e5915050576040517f35278d1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806111fc338d8d6111f78e614494565b6134d0565b6040805160028082526060820190925291985092945090925090816020015b604080518082019091526000808252602082015281526020019060019003908161121b57905050965060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200185815250876000815181106112a2576112a26145a0565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001848152508760018151811061130b5761130b6145a0565b60209081029190910101526040805160028082526060820190925290816020015b604080518082019091526000808252602082015281526020019060019003908161132c57905050955060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200183815250866000815181106113b3576113b36145a0565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001828152508660018151811061141c5761141c6145a0565b60209081029190910101526006805493909101700100000000000000000000000000000000949092016fffffffffffffffffffffffffffffffff80851682900381167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090951685178690048116849003169094029092179091556114a2878383896136dc565b6007546040517f3c5474df0000000000000000000000000000000000000000000000000000000081526009600482015260028c810b60248301528b810b60448301526fffffffffffffffffffffffffffffffff8b16606483015274010000000000000000000000000000000000000000909204820b90910b608482015273__$ce5bd159ffa25aa093db868fa3464622ad$__90633c5474df9060a40160206040518083038186803b15801561155657600080fd5b505af415801561156a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158e9190613eae565b6007805460029290920b62ffffff1674010000000000000000000000000000000000000000027fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff909216919091179055604080518381526020810183905233917f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a910160405180910390a25050955095509592505050565b60408051600280825260608083018452926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061167a5761167a6145a0565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106116e8576116e86145a0565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b600060085460021415611764576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600855600061177783850185613fdb565b905060006117888260200151612708565b73ffffffffffffffffffffffffffffffffffffffff16905060006117af8360600151612708565b60075460a085015160808601516040517faec6cbfe0000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff9485166024820181905294909316604484018190526064840192909252608483015291925073__$df040e0a7bda43e0bcaf2b8c2beb7d11e8$__9063aec6cbfe9060a40160206040518083038186803b15801561185a57600080fd5b505af415801561186e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189291906140a2565b94506000806118b0866101000151876020015188606001518a6134d0565b5090925090508115611932576118ee7f00000000000000000000000000000000000000000000000000000000000000008388610100015160006132ca565b600680546fffffffffffffffffffffffffffffffff808216859003167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b80156119a25761196a7f00000000000000000000000000000000000000000000000000000000000000008288610100015160006132ca565b600680546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000808304821685900382160291161790555b505080831080156119b257508181105b156119fa57600080546fffffffffffffffffffffffffffffffff8082168801167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b611a0c84602001518560600151613a0f565b60028054600354600154875160208901516040808b015160608c015160075492517f33440084000000000000000000000000000000000000000000000000000000008152600960048201526024810198909852604488019690965273ffffffffffffffffffffffffffffffffffffffff948516606488015292870b608487015290860b60a486015290850b60c485015291840b60e48401526fffffffffffffffffffffffffffffffff891661010484015274010000000000000000000000000000000000000000909104830b90920b61012482015290821661014482015273__$ce5bd159ffa25aa093db868fa3464622ad$__906333440084906101640160206040518083038186803b158015611b2257600080fd5b505af4158015611b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5a9190613eae565b600760146101000a81548162ffffff021916908360020b62ffffff160217905550600080611b8c8585858a6001613472565b6040805160028082526060820190925292945090925060009190816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611bab57905050905060405180606001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018860c0015115158152602001846fffffffffffffffffffffffffffffffff1681525081600081518110611c7457611c746145a0565b602002602001018190525060405180606001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018860e0015115158152602001836fffffffffffffffffffffffffffffffff1681525081600181518110611cfb57611cfb6145a0565b60200260200101819052503373ffffffffffffffffffffffffffffffffffffffff1663ced10b4982604051602001611d3391906141de565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401611d5e919061424f565b600060405180830381600087803b158015611d7857600080fd5b505af1158015611d8c573d6000803e3d6000fd5b5050505050816fffffffffffffffffffffffffffffffff16600014611e6957611dd47f0000000000000000000000000000000000000000000000000000000000000000613bba565b6006546fffffffffffffffffffffffffffffffff9081168401161115611e26576040517f840463aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546fffffffffffffffffffffffffffffffff8082168501167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b6fffffffffffffffffffffffffffffffff811615611f4757611eaa7f0000000000000000000000000000000000000000000000000000000000000000613bba565b6006546fffffffffffffffffffffffffffffffff70010000000000000000000000000000000090910481168301161115611f10576040517fe430204200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216850182160291161790555b600080611f5c886020015189606001516121a4565b6101208a0151919350915073ffffffffffffffffffffffffffffffffffffffff16156120825761010088015161012089015160208a015160608b01516101408c01516040517f6d59ebe100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485166004820152600293840b60248201529190920b60448201526fffffffffffffffffffffffffffffffff8d1660648201526084810186905260a4810185905260c4810191909152911690636d59ebe19060e401602060405180830381600087803b15801561204857600080fd5b505af115801561205c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208091906140a2565b505b610100880151604080516fffffffffffffffffffffffffffffffff80881682528616602082015273ffffffffffffffffffffffffffffffffffffffff909216917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a2505060016008555094979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b15801561216757600080fd5b505afa15801561217b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219f91906140a2565b600455565b600754600283810b80820b60009081526009602052604080822086850b850b835290822084546003549396879674010000000000000000000000000000000000000000909104810b95939492939192918791829182918291908a900b1261221857876001015493508760020154925061223c565b6001880154612227908761445b565b9350876002015485612239919061445b565b92505b8b60020b8960020b121561225b5750506001850154600286015461227f565b600187015461226a908761445b565b915086600201548561227c919061445b565b90505b8161228a858861445b565b612294919061445b565b9a50806122a1848761445b565b6122ab919061445b565b99505050505050505050509250929050565b600080600854600214156122fd576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260085560055460016fffffffffffffffffffffffffffffffff909116111561242b57600554612342906001906fffffffffffffffffffffffffffffffff166143fd565b600580547fffffffffffffffffffffffffffffffff000000000000000000000000000000001660011790556006805491935083916000906123969084906fffffffffffffffffffffffffffffffff166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555061242b7f0000000000000000000000000000000000000000000000000000000000000000836fffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000060006132ca565b60055460017001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115612572576005546124929060019070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166143fd565b600580547001000000000000000000000000000000006fffffffffffffffffffffffffffffffff918216811790925560068054939450849390926010926124dd9286929004166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506125727f0000000000000000000000000000000000000000000000000000000000000000826fffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000060006132ca565b60016008559091565b600080600854600214156125bb576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026008556125cd33878760006134d0565b5090925090506125df848383866136dc565b600680548391906000906126069084906fffffffffffffffffffffffffffffffff166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080600660108282829054906101000a90046fffffffffffffffffffffffffffffffff1661266991906143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f4a1c185b7b5da020829d63d69222d8602aa53a6b7800a73ee6e3e15a625d863d83836040516126f0929190918252602082015260400190565b60405180910390a26001600855909590945092505050565b60008060008360020b1261271f578260020b61272c565b8260020b61272c90614509565b90506127577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186144d3565b62ffffff16811115612795576040517ff87dc40c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600182166127b6577001000000000000000000000000000000006127c8565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156127fc576ffff97272373d413259a46990580e213a0260801c5b600482161561281b576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561283a576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612859576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612878576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612897576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156128b6576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156128d6576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156128f6576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612916576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612936576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612956576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612976576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612996576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156129b6576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156129d7576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156129f7576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612a16576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612a33576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612a7257807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81612a6e57612a6e614571565b0490505b640100000000810615612a86576001612a89565b60005b60ff16602082901c0192505050919050565b60008115612aca57612ac3612ab7606087901b86860386612af5565b85808204910615150190565b9050612aed565b83612adc606087901b86860386612b96565b81612ae957612ae9614571565b0490505b949350505050565b6000612b02848484612b96565b90508180612b1257612b12614571565b83850915612b4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110612b4657600080fd5b6001015b9392505050565b60008115612b7357612ac3858585036c01000000000000000000000000612af5565b612b8d858585036c01000000000000000000000000612b96565b95945050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8587098587029250828110838203039150508060001415612bee5760008411612be357600080fd5b508290049050612b4a565b808411612bfa57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000806000806000612c828d8d62ffffff16620f4240612af5565b9050612c8e818a614320565b9850612c9a818e61445b565b612ca49089614320565b97506000612cb5828d612710612af5565b9050612cc18189614320565b9750612ccd818361445b565b9150612ceb827001000000000000000000000000000000008d612b96565b612cf59088614320565b999e989d50969b5097995095975050505050505050565b600287810b900b6000908152602089905260408120600301548190612d479073ffffffffffffffffffffffffffffffffffffffff168961442e565b60028a810b900b600090815260208c90526040902060030180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790558315612eb9576002612db4848b614338565b612dbe9190614472565b60020b612e0857600289810b900b600090815260208b90526040902054612e0190660100000000000090046fffffffffffffffffffffffffffffffff168861445b565b9650612e47565b600289810b900b600090815260208b90526040902054612e4490660100000000000090046fffffffffffffffffffffffffffffffff1688614320565b96505b600289810b900b600090815260208b90526040902060010154612e6a908661445b565b60028a810b810b600090815260208d90526040902060018101929092550154612e93908761445b565b6002998a0b8a0b600090815260208c905260409020808b01919091555490980b97612fcd565b6002612ec5848b614338565b612ecf9190614472565b60020b612f1957600289810b900b600090815260208b90526040902054612f1290660100000000000090046fffffffffffffffffffffffffffffffff1688614320565b9650612f58565b600289810b900b600090815260208b90526040902054612f5590660100000000000090046fffffffffffffffffffffffffffffffff168861445b565b96505b600289810b810b600090815260208c9052604090200154612f79908661445b565b60028a810b810b600090815260208d9052604090209081019190915560010154612fa3908761445b565b6002998a0b8a0b600090815260208c9052604090206001810191909155546301000000900490980b975b509498969750505050505050565b821561312457600061300c7f0000000000000000000000000000000000000000000000000000000000000000613bba565b6006549091506000906130329085906fffffffffffffffffffffffffffffffff166142ec565b905081816fffffffffffffffffffffffffffffffff161115613080576040517f840463aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff838116919091178083558592916010916130e79185917001000000000000000000000000000000009004166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505050505050565b600061314f7f0000000000000000000000000000000000000000000000000000000000000000613bba565b60065490915060009061318990859070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166142ec565b905081816fffffffffffffffffffffffffffffffff1611156131d7576040517fe430204200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000008483160281811784558693926000926130e792869216176143fd565b821561329e5760038290556005805482919060109061326390849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166142ec565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550505050565b6002829055600580548291906000906132639084906fffffffffffffffffffffffffffffffff166142ec565b80156133b4576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152306024830152838116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4015b6040805180830381600087803b15801561337557600080fd5b505af1158015613389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ad91906140bb565b505061346c565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301528381166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc906084015b600060405180830381600087803b15801561345357600080fd5b505af1158015613467573d6000803e3d6000fd5b505050505b50505050565b60008084861161348f5761348884888886612b51565b90506134c6565b8685116134a9576134a284888886612a9b565b91506134c6565b6134b584868886612a9b565b91506134c384888786612b51565b90505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a60209081526040808320600287810b810b855290835281842086820b90910b8452909152812081908190818061352489896121a4565b9150915061356683600101548361353b919061445b565b84546fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000612b96565b955061357b83600201548261353b919061445b565b83549095506fffffffffffffffffffffffffffffffff1693506000600f88900b1215613605576135aa87614494565b835484906000906135ce9084906fffffffffffffffffffffffffffffffff166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b600087600f0b13156136c1578254879084906000906136379084906fffffffffffffffffffffffffffffffff166142ec565b82546101009290920a6fffffffffffffffffffffffffffffffff81810219909316918316021790915584547f000000000000000000000000000000000000000000000000000000000000000082169116111590506136c1576040517fb03425ae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018301919091556002909101559196909550909350915050565b8015613890576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152858116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b1580156137a657600080fd5b505af11580156137ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137de91906140bb565b50506040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152858116604483015260006064830152608482018490527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a40161335c565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301528581166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401600060405180830381600087803b15801561394e57600080fd5b505af1158015613962573d6000803e3d6000fd5b50506040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301528781166044830152606482018690527f000000000000000000000000000000000000000000000000000000000000000016925063f18d03cc9150608401613439565b613a397f000000000000000000000000000000000000000000000000000000000000000083614472565b60020b15613a73576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002613a9f7f000000000000000000000000000000000000000000000000000000000000000084614338565b613aa99190614472565b60020b15613ae3576040517ffdf1420200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613b0d7f000000000000000000000000000000000000000000000000000000000000000082614472565b60020b15613b47576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002613b737f000000000000000000000000000000000000000000000000000000000000000083614338565b613b7d9190614472565b60020b613bb6576040517fa9778c6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301523060248301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b158015613c4c57600080fd5b505afa158015613c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c8491906140a2565b92915050565b8035613c95816145fe565b919050565b8035613c9581614623565b8035613c9581614631565b600080600060608486031215613cc557600080fd5b8335613cd0816145fe565b92506020840135613ce081614631565b91506040840135613cf081614631565b809150509250925092565b60008060008060808587031215613d1157600080fd5b8451613d1c81614623565b602086015160408701519195509350613d34816145fe565b6060860151909250613d4581614623565b939692955090935050565b60008060208385031215613d6357600080fd5b823567ffffffffffffffff80821115613d7b57600080fd5b818501915085601f830112613d8f57600080fd5b813581811115613d9e57600080fd5b866020828501011115613db057600080fd5b60209290920196919550909350505050565b600060208284031215613dd457600080fd5b813567ffffffffffffffff80821115613dec57600080fd5b818401915084601f830112613e0057600080fd5b813581811115613e1257613e126145cf565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715613e5857613e586145cf565b81604052828152876020848701011115613e7157600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208284031215613ea357600080fd5b8135612b4a81614631565b600060208284031215613ec057600080fd5b8151612b4a81614631565b60008060408385031215613ede57600080fd5b8235613ee981614631565b91506020830135613ef981614631565b809150509250929050565b60008060008060808587031215613f1a57600080fd5b8435613f2581614631565b93506020850135613f3581614631565b92506040850135613f45816145fe565b91506060850135613d4581614623565b600080600080600060a08688031215613f6d57600080fd5b8535613f7881614631565b94506020860135613f8881614631565b935060408601356fffffffffffffffffffffffffffffffff81168114613fad57600080fd5b92506060860135613fbd816145fe565b91506080860135613fcd81614623565b809150509295509295909350565b60006101608284031215613fee57600080fd5b613ff66142c2565b613fff83613ca5565b815261400d60208401613ca5565b602082015261401e60408401613ca5565b604082015261402f60608401613ca5565b60608201526080830135608082015260a083013560a082015261405460c08401613c9a565b60c082015261406560e08401613c9a565b60e0820152610100614078818501613c8a565b9082015261012061408a848201613c8a565b90820152610140928301359281019290925250919050565b6000602082840312156140b457600080fd5b5051919050565b600080604083850312156140ce57600080fd5b505080516020909101519092909150565b600081518084526020808501945080840160005b83811015614130578151805173ffffffffffffffffffffffffffffffffffffffff16885283015183880152604090960195908201906001016140f3565b509495945050505050565b6020808252825182820181905260009190848201906040850190845b8181101561418957835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101614157565b50909695505050505050565b602081526000612b4a60208301846140df565b6060815260006141bb60608301866140df565b82810360208401526141cd81866140df565b915050826040830152949350505050565b602080825282518282018190526000919060409081850190868401855b82811015614242578151805173ffffffffffffffffffffffffffffffffffffffff1685528681015115158786015285015185850152606090930192908501906001016141fb565b5091979650505050505050565b600060208083528351808285015260005b8181101561427c57858101830151858201604001528201614260565b8181111561428e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b604051610160810167ffffffffffffffff811182821017156142e6576142e66145cf565b60405290565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561431757614317614542565b01949350505050565b6000821982111561433357614333614542565b500190565b60008160020b8360020b8061434f5761434f614571565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000831416156143a3576143a3614542565b90059392505050565b6000826143bb576143bb614571565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143f8576143f8614542565b500290565b60006fffffffffffffffffffffffffffffffff8381169083168181101561442657614426614542565b039392505050565b600073ffffffffffffffffffffffffffffffffffffffff8381169083168181101561442657614426614542565b60008282101561446d5761446d614542565b500390565b60008260020b8061448557614485614571565b808360020b0791505092915050565b600081600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114156144ca576144ca614542565b60000392915050565b60008160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008114156144ca576144ca614542565b60007f800000000000000000000000000000000000000000000000000000000000000082141561453b5761453b614542565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461462057600080fd5b50565b801515811461462057600080fd5b8060020b811461462057600080fdfea2646970667358221220b5f4ddca6d99127e73ff19f59eccaed3901aa2bb1db06cd142170afc64577eb564736f6c63430008070033a2646970667358221220b8f221b9c25254282020f76712f35ba17ca7aa891e61e7c6cb1c4fb41f50f48864736f6c63430008070033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x5EBA CODESIZE SUB DUP1 PUSH2 0x5EBA DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x6D JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x57 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE POP PUSH2 0x9D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0x5DF1 PUSH2 0xC9 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x15A ADD MSTORE DUP2 DUP2 PUSH2 0x39E ADD MSTORE PUSH2 0x554 ADD MSTORE PUSH2 0x5DF1 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x71A25812 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x71A25812 EQ PUSH3 0x12E JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH3 0x154 JUMPI DUP1 PUSH4 0xF6AB6D99 EQ PUSH3 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x169C4CEF EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x27C3CAE1 EQ PUSH3 0xC1 JUMPI DUP1 PUSH4 0x5BC93D6C EQ PUSH3 0xD8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x97A JUMP JUMPDEST PUSH3 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x97 PUSH3 0xD2 CALLDATASIZE PUSH1 0x4 PUSH3 0xA25 JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH3 0x11F PUSH3 0xE9 CALLDATASIZE PUSH1 0x4 PUSH3 0x93C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xB8 JUMP JUMPDEST PUSH3 0x145 PUSH3 0x13F CALLDATASIZE PUSH1 0x4 PUSH3 0x9C0 JUMP JUMPDEST PUSH3 0x413 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xB8 SWAP2 SWAP1 PUSH3 0xAFE JUMP JUMPDEST PUSH3 0x97 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0x97 PUSH3 0x18D CALLDATASIZE PUSH1 0x4 PUSH3 0xA0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP3 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH3 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP DUP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP7 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x227 SWAP2 SWAP1 PUSH3 0x8C5 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH3 0x26A JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 DUP8 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH3 0xFFFFFF DUP1 DUP7 AND PUSH1 0x60 DUP4 ADD MSTORE SWAP2 DUP5 AND PUSH1 0x80 DUP3 ADD MSTORE SWAP1 DUP3 AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE PUSH1 0x2 DUP1 DUP5 MSTORE PUSH1 0x60 DUP5 ADD SWAP1 SWAP3 MSTORE SWAP9 POP PUSH1 0x0 SWAP2 SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH3 0x31A JUMPI PUSH3 0x31A PUSH3 0xC74 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH3 0x36B JUMPI PUSH3 0x36B PUSH3 0xC74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE DUP9 MLOAD SWAP1 DUP10 ADD KECCAK256 PUSH1 0x40 MLOAD DUP2 SWAP1 DUP11 SWAP1 PUSH32 0x0 SWAP1 PUSH3 0x3C9 SWAP1 PUSH3 0x89E JUMP JUMPDEST PUSH3 0x3D6 SWAP3 SWAP2 SWAP1 PUSH3 0xB5A JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH3 0x3F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP8 POP PUSH3 0x407 DUP9 DUP4 DUP4 PUSH3 0x53C JUMP JUMPDEST POP POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x431 JUMPI PUSH3 0x431 PUSH3 0xCA3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x45B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x533 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH3 0x4A6 DUP3 DUP7 PUSH3 0xBEE JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH3 0x4B9 JUMPI PUSH3 0x4B9 PUSH3 0xC74 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x4F9 JUMPI PUSH3 0x4F9 PUSH3 0xC74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x52A DUP2 PUSH3 0xC09 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x461 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH3 0x5AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x3781A5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH3 0x898 JUMPI DUP3 DUP2 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH3 0x61E JUMPI PUSH3 0x61E PUSH3 0xC74 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x651 JUMPI PUSH3 0x651 PUSH3 0xC74 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH3 0x6A7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3F06BF8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH3 0x88E JUMPI PUSH1 0x0 DUP1 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x6CE JUMPI PUSH3 0x6CE PUSH3 0xC74 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x727 JUMPI PUSH3 0x727 PUSH3 0xC74 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP3 MSTORE SWAP2 DUP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP5 MLOAD DUP2 SWAP1 DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH3 0x7B6 JUMPI PUSH3 0x7B6 PUSH3 0xC74 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x80F JUMPI PUSH3 0x80F PUSH3 0xC74 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE SWAP2 DUP4 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE ADD PUSH3 0x6AC JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH3 0x5F9 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x50C3 DUP1 PUSH3 0xCF9 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH3 0x8C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x8DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 MLOAD PUSH3 0x8EB DUP2 PUSH3 0xCD2 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD SWAP1 SWAP6 POP PUSH3 0x8FE DUP2 PUSH3 0xCD2 JUMP JUMPDEST SWAP4 POP PUSH3 0x90E PUSH1 0x40 DUP8 ADD PUSH3 0x8AC JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD MLOAD PUSH3 0x920 DUP2 PUSH3 0xCD2 JUMP JUMPDEST SWAP2 POP PUSH3 0x930 PUSH1 0x80 DUP8 ADD PUSH3 0x8AC JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x950 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH3 0x95D DUP2 PUSH3 0xCD2 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH3 0x96F DUP2 PUSH3 0xCD2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x990 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH3 0x99D DUP2 PUSH3 0xCD2 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH3 0x9AF DUP2 PUSH3 0xCD2 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x9D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH3 0x9E4 DUP2 PUSH3 0xCD2 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH3 0x9F6 DUP2 PUSH3 0xCD2 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0xA51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA7B JUMPI PUSH3 0xA7B PUSH3 0xCA3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xAC4 JUMPI PUSH3 0xAC4 PUSH3 0xCA3 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xADE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xB4E JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0xB1A JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xB8A JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH3 0xB6B JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0xB9D JUMPI PUSH1 0x0 PUSH1 0x60 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD PUSH1 0x60 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0xC04 JUMPI PUSH3 0xC04 PUSH3 0xC45 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH3 0xC3E JUMPI PUSH3 0xC3E PUSH3 0xC45 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0xCF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH2 0x180 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x50C3 CODESIZE SUB DUP1 PUSH3 0x50C3 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x704 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x53 SWAP2 SWAP1 PUSH3 0x68D JUMP JUMPDEST SWAP4 SWAP9 POP SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH3 0x87 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ ISZERO PUSH3 0xB2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xC1AB6DC1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ ISZERO PUSH3 0xDD JUMPI PUSH1 0x40 MLOAD PUSH4 0xC1AB6DC1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x186A0 PUSH3 0xFFFFFF DUP5 AND GT ISZERO PUSH3 0x107 JUMPI PUSH1 0x40 MLOAD PUSH4 0xDA7459B7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP7 DUP2 SHL DUP3 AND PUSH2 0x140 MSTORE DUP6 SWAP1 SHL AND PUSH2 0x160 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE8 SHL SUB NOT PUSH1 0xE8 DUP5 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE DUP3 SWAP1 SHL AND PUSH1 0x80 MSTORE PUSH1 0x40 MLOAD PUSH4 0x6E23D2E1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH3 0xFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0x0 SWAP1 PUSH4 0xDC47A5C2 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x1BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1E5 SWAP2 SWAP1 PUSH3 0x7F5 JUMP JUMPDEST PUSH1 0x80 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0xC0 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 ADD SWAP1 MSTORE PUSH3 0xD89E7 NOT DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 PUSH3 0x218 SWAP1 PUSH3 0x83A JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP6 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP7 ADD DUP5 SWAP1 MSTORE PUSH1 0x80 SWAP6 DUP7 ADD DUP5 SWAP1 MSTORE PUSH3 0xD89E7 NOT SWAP4 DUP5 SWAP1 MSTORE PUSH1 0x9 DUP4 MSTORE DUP7 MLOAD PUSH32 0xCAFB9BD5A090B85CDC01F1FE9E79CCE261755DC1BFDD255E0D8DF8829987EBAC DUP1 SLOAD DUP10 DUP7 ADD MLOAD DUP11 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH7 0x1000000000000 MUL PUSH1 0x1 PUSH1 0x30 SHL PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT SWAP2 DUP11 SIGNEXTEND PUSH3 0xFFFFFF SWAP1 DUP2 AND PUSH4 0x1000000 MUL PUSH6 0xFFFFFFFFFFFF NOT SWAP1 SWAP5 AND SWAP6 SWAP1 SWAP11 SIGNEXTEND SWAP1 SWAP10 AND SWAP4 SWAP1 SWAP4 OR OR SWAP2 SWAP1 SWAP2 AND SWAP6 SWAP1 SWAP6 OR SWAP1 SWAP5 SSTORE SWAP3 DUP6 ADD MLOAD PUSH32 0xCAFB9BD5A090B85CDC01F1FE9E79CCE261755DC1BFDD255E0D8DF8829987EBAD SSTORE SWAP3 DUP5 ADD MLOAD PUSH32 0xCAFB9BD5A090B85CDC01F1FE9E79CCE261755DC1BFDD255E0D8DF8829987EBAE SSTORE PUSH1 0xA0 SWAP1 SWAP4 ADD MLOAD PUSH32 0xCAFB9BD5A090B85CDC01F1FE9E79CCE261755DC1BFDD255E0D8DF8829987EBAF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 MLOAD PUSH1 0xC0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP3 DUP2 MSTORE SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH3 0x37A SWAP1 PUSH3 0x83A JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH1 0x9 PUSH1 0x0 PUSH3 0xD89E7 NOT PUSH3 0x3C2 SWAP1 PUSH3 0x83A JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 KECCAK256 DUP5 MLOAD DUP2 SLOAD DUP7 DUP7 ADD MLOAD DUP8 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH7 0x1000000000000 MUL PUSH1 0x1 PUSH1 0x30 SHL PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT SWAP2 DUP7 SIGNEXTEND PUSH3 0xFFFFFF SWAP1 DUP2 AND PUSH4 0x1000000 MUL PUSH6 0xFFFFFFFFFFFF NOT SWAP1 SWAP5 AND SWAP5 DUP8 SIGNEXTEND AND SWAP4 SWAP1 SWAP4 OR SWAP2 SWAP1 SWAP2 OR AND OR DUP2 SSTORE PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x80 DUP6 ADD MLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0xA0 SWAP1 SWAP4 ADD MLOAD PUSH1 0x3 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH1 0x7 DUP1 SLOAD PUSH3 0x1E4EC3 PUSH1 0xA3 SHL PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE DUP1 MLOAD PUSH4 0x4DA31827 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 DUP10 AND SWAP3 PUSH4 0x4DA31827 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x4D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x4F8 SWAP2 SWAP1 PUSH3 0x666 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x100 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0A0CD2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x54F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x564 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x58A SWAP2 SWAP1 PUSH3 0x666 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xE0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x5E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x5F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x61B SWAP2 SWAP1 PUSH3 0x820 JUMP JUMPDEST PUSH1 0x4 SSTORE POP POP POP POP POP PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x120 MSTORE POP PUSH1 0x1 PUSH1 0x8 SSTORE PUSH3 0x89B JUMP JUMPDEST DUP1 MLOAD PUSH3 0x64D DUP2 PUSH3 0x882 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH3 0x64D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x686 DUP2 PUSH3 0x882 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x6A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 MLOAD PUSH3 0x6B3 DUP2 PUSH3 0x882 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD SWAP1 SWAP6 POP PUSH3 0x6C6 DUP2 PUSH3 0x882 JUMP JUMPDEST SWAP4 POP PUSH3 0x6D6 PUSH1 0x40 DUP8 ADD PUSH3 0x652 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD MLOAD PUSH3 0x6E8 DUP2 PUSH3 0x882 JUMP JUMPDEST SWAP2 POP PUSH3 0x6F8 PUSH1 0x80 DUP8 ADD PUSH3 0x652 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x730 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x75A JUMPI PUSH3 0x75A PUSH3 0x86C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x785 JUMPI PUSH3 0x785 PUSH3 0x86C JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE PUSH1 0x20 SWAP4 POP DUP9 DUP5 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x7A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP3 DUP3 LT ISZERO PUSH3 0x7C6 JUMPI DUP5 DUP3 ADD DUP5 ADD MLOAD DUP2 DUP4 ADD DUP6 ADD MSTORE SWAP1 DUP4 ADD SWAP1 PUSH3 0x7A7 JUMP JUMPDEST DUP3 DUP3 GT ISZERO PUSH3 0x7D8 JUMPI PUSH1 0x0 DUP5 DUP5 DUP4 ADD ADD MSTORE JUMPDEST SWAP6 POP PUSH3 0x7EA SWAP2 POP POP DUP6 DUP3 ADD PUSH3 0x640 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x808 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x686 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x833 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND PUSH3 0x7FFFFF NOT DUP2 EQ ISZERO PUSH3 0x863 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xE8 SHR PUSH1 0xA0 MLOAD PUSH1 0xE8 SHR PUSH1 0xC0 MLOAD PUSH1 0x80 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x160 MLOAD PUSH1 0x60 SHR PUSH2 0x4676 PUSH3 0xA4D PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x59C ADD MSTORE DUP2 DUP2 PUSH2 0xE5E ADD MSTORE DUP2 DUP2 PUSH2 0xE87 ADD MSTORE DUP2 DUP2 PUSH2 0xFB6 ADD MSTORE DUP2 DUP2 PUSH2 0x12BA ADD MSTORE DUP2 DUP2 PUSH2 0x13CB ADD MSTORE DUP2 DUP2 PUSH2 0x16B6 ADD MSTORE DUP2 DUP2 PUSH2 0x193D ADD MSTORE DUP2 DUP2 PUSH2 0x1C8C ADD MSTORE DUP2 DUP2 PUSH2 0x1E86 ADD MSTORE DUP2 DUP2 PUSH2 0x2518 ADD MSTORE DUP2 DUP2 PUSH2 0x312B ADD MSTORE DUP2 DUP2 PUSH2 0x381D ADD MSTORE PUSH2 0x39A1 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x574 ADD MSTORE DUP2 DUP2 PUSH2 0xEBE ADD MSTORE DUP2 DUP2 PUSH2 0xF56 ADD MSTORE DUP2 DUP2 PUSH2 0xF7F ADD MSTORE DUP2 DUP2 PUSH2 0x1251 ADD MSTORE DUP2 DUP2 PUSH2 0x1362 ADD MSTORE DUP2 DUP2 PUSH2 0x1648 ADD MSTORE DUP2 DUP2 PUSH2 0x18C1 ADD MSTORE DUP2 DUP2 PUSH2 0x1C05 ADD MSTORE DUP2 DUP2 PUSH2 0x1DB0 ADD MSTORE DUP2 DUP2 PUSH2 0x23D1 ADD MSTORE DUP2 DUP2 PUSH2 0x2FE8 ADD MSTORE DUP2 DUP2 PUSH2 0x371F ADD MSTORE PUSH2 0x38CD ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x54C ADD MSTORE PUSH2 0x2103 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x524 ADD MSTORE DUP2 DUP2 PUSH2 0x3331 ADD MSTORE DUP2 DUP2 PUSH2 0x340E ADD MSTORE DUP2 DUP2 PUSH2 0x3763 ADD MSTORE DUP2 DUP2 PUSH2 0x3861 ADD MSTORE DUP2 DUP2 PUSH2 0x390A ADD MSTORE DUP2 DUP2 PUSH2 0x39DE ADD MSTORE PUSH2 0x3C08 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x4FC ADD MSTORE DUP2 DUP2 PUSH2 0x2405 ADD MSTORE PUSH2 0x254C ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x46E ADD MSTORE PUSH2 0x3664 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x4BE ADD MSTORE PUSH2 0xBAA ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x496 ADD MSTORE DUP2 DUP2 PUSH2 0xC40 ADD MSTORE DUP2 DUP2 PUSH2 0xCCE ADD MSTORE DUP2 DUP2 PUSH2 0x3A14 ADD MSTORE DUP2 DUP2 PUSH2 0x3A7A ADD MSTORE DUP2 DUP2 PUSH2 0x3AE8 ADD MSTORE PUSH2 0x3B4E ADD MSTORE PUSH2 0x4676 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1A3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9DA12096 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0xBCDB4DAD GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xCF78756B GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xCF78756B EQ PUSH2 0x5DB JUMPI DUP1 PUSH4 0xF30DBA93 EQ PUSH2 0x5E4 JUMPI DUP1 PUSH4 0xFB39D628 EQ PUSH2 0x6BB JUMPI DUP1 PUSH4 0xFB5D80B3 EQ PUSH2 0x6CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBCDB4DAD EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x5CA JUMPI DUP1 PUSH4 0xCAA4B46A EQ PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xAACA1B4D GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0xAACA1B4D EQ PUSH2 0x3AE JUMPI DUP1 PUSH4 0xACFE88F8 EQ PUSH2 0x42F JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9DA12096 EQ PUSH2 0x37E JUMPI DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x387 JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6289DB82 GT PUSH2 0x150 JUMPI DUP1 PUSH4 0x7BA0E2E7 GT PUSH2 0x12A JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x316 JUMPI DUP1 PUSH4 0x8C347F9B EQ PUSH2 0x329 JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6289DB82 EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0x6D59D802 EQ PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x181 JUMPI DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x627DD56A EQ PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0x1A686502 EQ PUSH2 0x225 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1BB PUSH2 0x1B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D50 JUMP JUMPDEST PUSH2 0x700 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x241 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x275 PUSH2 0x270 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D50 JUMP JUMPDEST PUSH2 0x707 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C5 SWAP2 SWAP1 PUSH2 0x4195 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x290 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DC2 JUMP JUMPDEST PUSH2 0x70E JUMP JUMPDEST PUSH2 0x2A8 PUSH2 0x2A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F55 JUMP JUMPDEST PUSH2 0x1056 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x41A8 JUMP JUMPDEST PUSH2 0x2BF PUSH2 0x1626 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C5 SWAP2 SWAP1 PUSH2 0x413B JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV PUSH4 0xFFFFFFFF AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x324 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D50 JUMP JUMPDEST PUSH2 0x1725 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x37C PUSH2 0x2101 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BB PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1BB PUSH32 0x54726964656E743A436F6E63656E7472617465644C6971756964697479000000 DUP2 JUMP JUMPDEST PUSH2 0x401 PUSH2 0x3BC CALLDATASIZE PUSH1 0x4 PUSH2 0x3CB0 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x442 PUSH2 0x43D CALLDATASIZE PUSH1 0x4 PUSH2 0x3ECB JUMP JUMPDEST PUSH2 0x21A4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE PUSH3 0xFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0xC0 DUP4 ADD MSTORE PUSH32 0x0 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x1BB PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1FC PUSH2 0x22BD JUMP JUMPDEST PUSH2 0x1BB PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x65A PUSH2 0x5F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E91 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP1 DUP5 ADD SLOAD PUSH1 0x3 SWAP1 SWAP5 ADD SLOAD DUP4 DUP3 SIGNEXTEND SWAP5 PUSH4 0x1000000 DUP6 DIV SWAP1 SWAP3 SIGNEXTEND SWAP4 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP8 DUP9 SIGNEXTEND DUP2 MSTORE SWAP6 SWAP1 SWAP7 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x442 PUSH2 0x6C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F04 JUMP JUMPDEST PUSH2 0x257B JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND PUSH2 0x1FC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x74D JUMPI PUSH1 0x40 MLOAD PUSH32 0xF2E5B6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP6 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x76F SWAP2 SWAP1 PUSH2 0x3CFB JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH2 0x7A7 JUMPI PUSH1 0x2 SLOAD PUSH2 0x7AB JUMP JUMPDEST PUSH1 0x3 SLOAD JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH2 0x7BD JUMPI PUSH1 0x3 SLOAD PUSH2 0x7C1 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST DUP2 MSTORE PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 ADD DUP7 PUSH2 0x84B JUMPI PUSH1 0x7 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0x1000000 SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x86A JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0x2 SIGNEXTEND JUMPDEST PUSH1 0x2 SIGNEXTEND SWAP1 MSTORE PUSH1 0x1 SLOAD SWAP1 SWAP2 POP TIMESTAMP SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 DUP3 SUB SWAP1 DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0x8BB JUMPI POP PUSH1 0x0 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x97C JUMPI PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF DUP6 AND MUL OR SWAP1 SSTORE PUSH1 0x0 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP3 SWAP1 SHL DUP2 PUSH2 0x92E JUMPI PUSH2 0x92E PUSH2 0x4571 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP2 AND SWAP4 SWAP1 SWAP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND ADD SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST POP POP JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD ISZERO PUSH2 0xD0D JUMPI PUSH1 0x0 PUSH2 0x999 DUP3 PUSH2 0x100 ADD MLOAD PUSH2 0x2708 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP1 DUP8 ISZERO PUSH2 0xAE6 JUMPI PUSH1 0x0 PUSH2 0x9D1 DUP6 PUSH1 0xC0 ADD MLOAD DUP6 DUP8 PUSH1 0xA0 ADD MLOAD PUSH1 0x0 PUSH2 0x2A9B JUMP JUMPDEST SWAP1 POP DUP1 DUP6 PUSH1 0xE0 ADD MLOAD GT PUSH2 0xAA6 JUMPI PUSH1 0x0 PUSH1 0x60 DUP7 PUSH1 0xC0 ADD MLOAD SWAP1 SHL SWAP1 POP PUSH1 0x0 PUSH2 0xA19 DUP3 DUP9 PUSH1 0xA0 ADD MLOAD DUP10 PUSH1 0xE0 ADD MLOAD DUP11 PUSH1 0xA0 ADD MLOAD PUSH2 0xA0A SWAP2 SWAP1 PUSH2 0x43C0 JUMP JUMPDEST PUSH2 0xA14 SWAP1 DUP7 PUSH2 0x4320 JUMP JUMPDEST PUSH2 0x2AF5 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 GT ISZERO DUP1 ISZERO PUSH2 0xA2E JUMPI POP DUP7 PUSH1 0xA0 ADD MLOAD DUP2 LT JUMPDEST PUSH2 0xA79 JUMPI PUSH2 0xA60 DUP3 DUP9 PUSH1 0xE0 ADD MLOAD DUP10 PUSH1 0xA0 ADD MLOAD DUP6 PUSH2 0xA4B SWAP2 SWAP1 PUSH2 0x43AC JUMP JUMPDEST PUSH2 0xA55 SWAP2 SWAP1 PUSH2 0x4320 JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP JUMPDEST PUSH2 0xA8E DUP8 PUSH1 0xC0 ADD MLOAD DUP3 DUP10 PUSH1 0xA0 ADD MLOAD PUSH1 0x0 PUSH2 0x2B51 JUMP JUMPDEST PUSH1 0xA0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 PUSH1 0xE0 DUP9 ADD MSTORE SWAP4 POP PUSH2 0xAE0 SWAP1 POP JUMP JUMPDEST PUSH2 0xABB DUP6 PUSH1 0xC0 ADD MLOAD DUP6 DUP8 PUSH1 0xA0 ADD MLOAD PUSH1 0x0 PUSH2 0x2B51 JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD DUP6 SWAP1 MSTORE PUSH1 0xE0 DUP7 ADD DUP1 MLOAD SWAP2 SWAP5 POP PUSH1 0x1 SWAP4 POP DUP3 SWAP2 PUSH2 0xADC SWAP1 DUP4 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP1 MSTORE POP JUMPDEST POP PUSH2 0xBA4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAFD DUP6 PUSH1 0xC0 ADD MLOAD DUP7 PUSH1 0xA0 ADD MLOAD DUP7 PUSH1 0x0 PUSH2 0x2B51 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 PUSH1 0xE0 ADD MLOAD GT PUSH2 0xB68 JUMPI PUSH1 0x0 PUSH2 0xB2C DUP7 PUSH1 0xE0 ADD MLOAD PUSH13 0x1000000000000000000000000 DUP9 PUSH1 0xC0 ADD MLOAD PUSH2 0x2B96 JUMP JUMPDEST DUP7 PUSH1 0xA0 ADD MLOAD PUSH2 0xB3B SWAP2 SWAP1 PUSH2 0x4320 JUMP JUMPDEST SWAP1 POP PUSH2 0xB52 DUP7 PUSH1 0xC0 ADD MLOAD DUP8 PUSH1 0xA0 ADD MLOAD DUP4 PUSH1 0x0 PUSH2 0x2A9B JUMP JUMPDEST PUSH1 0xA0 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 PUSH1 0xE0 DUP8 ADD MSTORE SWAP3 POP PUSH2 0xBA2 JUMP JUMPDEST PUSH2 0xB7D DUP6 PUSH1 0xC0 ADD MLOAD DUP7 PUSH1 0xA0 ADD MLOAD DUP7 PUSH1 0x0 PUSH2 0x2A9B JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD DUP6 SWAP1 MSTORE PUSH1 0xE0 DUP7 ADD DUP1 MLOAD SWAP2 SWAP5 POP PUSH1 0x1 SWAP4 POP DUP3 SWAP2 PUSH2 0xB9E SWAP1 DUP4 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP1 MSTORE POP JUMPDEST POP JUMPDEST PUSH2 0xBE6 DUP3 PUSH32 0x0 PUSH1 0x4 SLOAD DUP8 PUSH1 0xC0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP15 DUP11 PUSH1 0x40 ADD MLOAD DUP12 PUSH1 0x60 ADD MLOAD PUSH2 0x2C67 JUMP JUMPDEST PUSH1 0x60 DUP9 ADD MSTORE PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x20 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP9 POP DUP1 ISZERO PUSH2 0xD05 JUMPI PUSH2 0xC64 PUSH1 0x9 DUP6 PUSH2 0x100 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH1 0xC0 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD DUP15 PUSH32 0x0 PUSH2 0x2D0C JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH2 0x100 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD DUP2 SWAP1 MSTORE PUSH2 0xD05 JUMPI PUSH2 0xC8A DUP5 PUSH2 0x100 ADD MLOAD PUSH2 0x2708 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0xA0 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD MLOAD PUSH1 0x1 SLOAD PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x80 DUP10 ADD MLOAD PUSH2 0xCF2 SWAP6 PUSH1 0x9 SWAP6 SWAP5 AND SWAP3 SWAP2 SWAP1 DUP15 PUSH32 0x0 PUSH2 0x2D0C JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH2 0x100 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD MSTORE JUMPDEST POP POP POP PUSH2 0x97F JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x0 DUP6 PUSH2 0xD80 JUMPI PUSH2 0x100 DUP3 ADD MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SIGNEXTEND PUSH2 0xD87 JUMP JUMPDEST DUP2 PUSH2 0x100 ADD MLOAD JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 SIGNEXTEND PUSH1 0x7 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x2 SIGNEXTEND PUSH1 0x2 SIGNEXTEND EQ PUSH2 0xE35 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 PUSH3 0xFFFFFF PUSH1 0x2 DUP6 SWAP1 SIGNEXTEND AND MUL OR SWAP1 SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH2 0xE40 DUP7 DUP7 DUP10 PUSH2 0x2FDB JUMP JUMPDEST PUSH2 0xE53 DUP7 DUP4 PUSH1 0x60 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD PUSH2 0x321D JUMP JUMPDEST DUP6 ISZERO PUSH2 0xF51 JUMPI PUSH2 0xE85 PUSH32 0x0 DUP9 DUP7 DUP7 PUSH2 0x32CA JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP9 DUP12 PUSH1 0x40 MLOAD PUSH2 0xF44 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1045 JUMP JUMPDEST PUSH2 0xF7D PUSH32 0x0 DUP9 DUP7 DUP7 PUSH2 0x32CA JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP9 DUP12 PUSH1 0x40 MLOAD PUSH2 0x103C SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP3 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1068 DUP12 PUSH2 0x2708 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1075 DUP12 PUSH2 0x2708 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP4 AND DUP2 GT DUP1 ISZERO PUSH2 0x10CF JUMPI POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT JUMPDEST ISZERO PUSH2 0x1118 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP15 SWAP1 SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x117A DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP15 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH2 0x3472 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP7 POP DUP2 AND SWAP5 POP PUSH16 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP13 AND GT ISZERO SWAP3 POP PUSH2 0x11E5 SWAP2 POP POP JUMPI PUSH1 0x40 MLOAD PUSH32 0x35278D1200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11FC CALLER DUP14 DUP14 PUSH2 0x11F7 DUP15 PUSH2 0x4494 JUMP JUMPDEST PUSH2 0x34D0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP9 POP SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x121B JUMPI SWAP1 POP POP SWAP7 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP DUP8 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x12A2 JUMPI PUSH2 0x12A2 PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE POP DUP8 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x130B JUMPI PUSH2 0x130B PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x132C JUMPI SWAP1 POP POP SWAP6 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP7 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x13B3 JUMPI PUSH2 0x13B3 PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP7 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x141C JUMPI PUSH2 0x141C PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x6 DUP1 SLOAD SWAP4 SWAP1 SWAP2 ADD PUSH17 0x100000000000000000000000000000000 SWAP5 SWAP1 SWAP3 ADD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND DUP3 SWAP1 SUB DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP6 AND DUP6 OR DUP7 SWAP1 DIV DUP2 AND DUP5 SWAP1 SUB AND SWAP1 SWAP5 MUL SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x14A2 DUP8 DUP4 DUP4 DUP10 PUSH2 0x36DC JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x3C5474DF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x9 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 DUP13 DUP2 SIGNEXTEND PUSH1 0x24 DUP4 ADD MSTORE DUP12 DUP2 SIGNEXTEND PUSH1 0x44 DUP4 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND PUSH1 0x84 DUP3 ADD MSTORE PUSH20 0x0 SWAP1 PUSH4 0x3C5474DF SWAP1 PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1556 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x156A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x158E SWAP2 SWAP1 PUSH2 0x3EAE JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND PUSH3 0xFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE CALLER SWAP2 PUSH32 0x49995E5DD6158CF69AD3E9777C46755A1A826A446C6416992167462DAD033B2A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP SWAP6 POP SWAP6 POP SWAP6 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x167A JUMPI PUSH2 0x167A PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x16E8 JUMPI PUSH2 0x16E8 PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x1764 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF2E5B6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 PUSH2 0x1777 DUP4 DUP6 ADD DUP6 PUSH2 0x3FDB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1788 DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x2708 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0x17AF DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x2708 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0x80 DUP7 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xAEC6CBFE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE SWAP5 SWAP1 SWAP4 AND PUSH1 0x44 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x64 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x84 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH20 0x0 SWAP1 PUSH4 0xAEC6CBFE SWAP1 PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x185A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x186E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1892 SWAP2 SWAP1 PUSH2 0x40A2 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 DUP1 PUSH2 0x18B0 DUP7 PUSH2 0x100 ADD MLOAD DUP8 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD DUP11 PUSH2 0x34D0 JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x1932 JUMPI PUSH2 0x18EE PUSH32 0x0 DUP4 DUP9 PUSH2 0x100 ADD MLOAD PUSH1 0x0 PUSH2 0x32CA JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP6 SWAP1 SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST DUP1 ISZERO PUSH2 0x19A2 JUMPI PUSH2 0x196A PUSH32 0x0 DUP3 DUP9 PUSH2 0x100 ADD MLOAD PUSH1 0x0 PUSH2 0x32CA JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND DUP6 SWAP1 SUB DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST POP POP DUP1 DUP4 LT DUP1 ISZERO PUSH2 0x19B2 JUMPI POP DUP2 DUP2 LT JUMPDEST ISZERO PUSH2 0x19FA JUMPI PUSH1 0x0 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP9 ADD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x1A0C DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD PUSH2 0x3A0F JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x3 SLOAD PUSH1 0x1 SLOAD DUP8 MLOAD PUSH1 0x20 DUP10 ADD MLOAD PUSH1 0x40 DUP1 DUP12 ADD MLOAD PUSH1 0x60 DUP13 ADD MLOAD PUSH1 0x7 SLOAD SWAP3 MLOAD PUSH32 0x3344008400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x9 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x44 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x64 DUP9 ADD MSTORE SWAP3 DUP8 SIGNEXTEND PUSH1 0x84 DUP8 ADD MSTORE SWAP1 DUP7 SIGNEXTEND PUSH1 0xA4 DUP7 ADD MSTORE SWAP1 DUP6 SIGNEXTEND PUSH1 0xC4 DUP6 ADD MSTORE SWAP2 DUP5 SIGNEXTEND PUSH1 0xE4 DUP5 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x104 DUP5 ADD MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP2 DIV DUP4 SIGNEXTEND SWAP1 SWAP3 SIGNEXTEND PUSH2 0x124 DUP3 ADD MSTORE SWAP1 DUP3 AND PUSH2 0x144 DUP3 ADD MSTORE PUSH20 0x0 SWAP1 PUSH4 0x33440084 SWAP1 PUSH2 0x164 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1B36 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B5A SWAP2 SWAP1 PUSH2 0x3EAE JUMP JUMPDEST PUSH1 0x7 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP1 PUSH2 0x1B8C DUP6 DUP6 DUP6 DUP11 PUSH1 0x1 PUSH2 0x3472 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD MSTORE DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x1BAB JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xC0 ADD MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1C74 JUMPI PUSH2 0x1C74 PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xE0 ADD MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1CFB JUMPI PUSH2 0x1CFB PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCED10B49 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1D33 SWAP2 SWAP1 PUSH2 0x41DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1D5E SWAP2 SWAP1 PUSH2 0x424F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D8C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 EQ PUSH2 0x1E69 JUMPI PUSH2 0x1DD4 PUSH32 0x0 PUSH2 0x3BBA JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP5 ADD AND GT ISZERO PUSH2 0x1E26 JUMPI PUSH1 0x40 MLOAD PUSH32 0x840463AA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP6 ADD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x1F47 JUMPI PUSH2 0x1EAA PUSH32 0x0 PUSH2 0x3BBA JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 AND DUP4 ADD AND GT ISZERO PUSH2 0x1F10 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE430204200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND DUP6 ADD DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F5C DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x60 ADD MLOAD PUSH2 0x21A4 JUMP JUMPDEST PUSH2 0x120 DUP11 ADD MLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x2082 JUMPI PUSH2 0x100 DUP9 ADD MLOAD PUSH2 0x120 DUP10 ADD MLOAD PUSH1 0x20 DUP11 ADD MLOAD PUSH1 0x60 DUP12 ADD MLOAD PUSH2 0x140 DUP13 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x6D59EBE100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND PUSH1 0x24 DUP3 ADD MSTORE SWAP2 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xA4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 AND SWAP1 PUSH4 0x6D59EBE1 SWAP1 PUSH1 0xE4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2048 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x205C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2080 SWAP2 SWAP1 PUSH2 0x40A2 JUMP JUMPDEST POP JUMPDEST PUSH2 0x100 DUP9 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND DUP3 MSTORE DUP7 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x217B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x219F SWAP2 SWAP1 PUSH2 0x40A2 JUMP JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x2 DUP4 DUP2 SIGNEXTEND DUP1 DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP7 DUP6 SIGNEXTEND DUP6 SIGNEXTEND DUP4 MSTORE SWAP1 DUP3 KECCAK256 DUP5 SLOAD PUSH1 0x3 SLOAD SWAP4 SWAP7 DUP8 SWAP7 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 SIGNEXTEND SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 DUP8 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 DUP11 SWAP1 SIGNEXTEND SLT PUSH2 0x2218 JUMPI DUP8 PUSH1 0x1 ADD SLOAD SWAP4 POP DUP8 PUSH1 0x2 ADD SLOAD SWAP3 POP PUSH2 0x223C JUMP JUMPDEST PUSH1 0x1 DUP9 ADD SLOAD PUSH2 0x2227 SWAP1 DUP8 PUSH2 0x445B JUMP JUMPDEST SWAP4 POP DUP8 PUSH1 0x2 ADD SLOAD DUP6 PUSH2 0x2239 SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP3 POP JUMPDEST DUP12 PUSH1 0x2 SIGNEXTEND DUP10 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x225B JUMPI POP POP PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x2 DUP7 ADD SLOAD PUSH2 0x227F JUMP JUMPDEST PUSH1 0x1 DUP8 ADD SLOAD PUSH2 0x226A SWAP1 DUP8 PUSH2 0x445B JUMP JUMPDEST SWAP2 POP DUP7 PUSH1 0x2 ADD SLOAD DUP6 PUSH2 0x227C SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 PUSH2 0x228A DUP6 DUP9 PUSH2 0x445B JUMP JUMPDEST PUSH2 0x2294 SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP11 POP DUP1 PUSH2 0x22A1 DUP5 DUP8 PUSH2 0x445B JUMP JUMPDEST PUSH2 0x22AB SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP10 POP POP POP POP POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x8 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x22FD JUMPI PUSH1 0x40 MLOAD PUSH32 0xF2E5B6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x5 SLOAD PUSH1 0x1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND GT ISZERO PUSH2 0x242B JUMPI PUSH1 0x5 SLOAD PUSH2 0x2342 SWAP1 PUSH1 0x1 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP2 SWAP4 POP DUP4 SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x2396 SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x242B PUSH32 0x0 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x32CA JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x2572 JUMPI PUSH1 0x5 SLOAD PUSH2 0x2492 SWAP1 PUSH1 0x1 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH17 0x100000000000000000000000000000000 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP4 SWAP5 POP DUP5 SWAP4 SWAP1 SWAP3 PUSH1 0x10 SWAP3 PUSH2 0x24DD SWAP3 DUP7 SWAP3 SWAP1 DIV AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2572 PUSH32 0x0 DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x32CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x8 SSTORE SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x8 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x25BB JUMPI PUSH1 0x40 MLOAD PUSH32 0xF2E5B6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH2 0x25CD CALLER DUP8 DUP8 PUSH1 0x0 PUSH2 0x34D0 JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x25DF DUP5 DUP4 DUP4 DUP7 PUSH2 0x36DC JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD DUP4 SWAP2 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x2606 SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x6 PUSH1 0x10 DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2669 SWAP2 SWAP1 PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A1C185B7B5DA020829D63D69222D8602AA53A6B7800A73EE6E3E15A625D863D DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x26F0 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 PUSH1 0x8 SSTORE SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x271F JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x272C JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x272C SWAP1 PUSH2 0x4509 JUMP JUMPDEST SWAP1 POP PUSH2 0x2757 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x44D3 JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 GT ISZERO PUSH2 0x2795 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF87DC40C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x27B6 JUMPI PUSH17 0x100000000000000000000000000000000 PUSH2 0x27C8 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x27FC JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x281B JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x283A JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x2859 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x2878 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x2897 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x28B6 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x28D6 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x28F6 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x2916 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x2936 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x2956 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x2976 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x2996 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x29B6 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x29D7 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x29F7 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x2A16 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x2A33 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x2A72 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 PUSH2 0x2A6E JUMPI PUSH2 0x2A6E PUSH2 0x4571 JUMP JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x2A86 JUMPI PUSH1 0x1 PUSH2 0x2A89 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x2ACA JUMPI PUSH2 0x2AC3 PUSH2 0x2AB7 PUSH1 0x60 DUP8 SWAP1 SHL DUP7 DUP7 SUB DUP7 PUSH2 0x2AF5 JUMP JUMPDEST DUP6 DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x2AED JUMP JUMPDEST DUP4 PUSH2 0x2ADC PUSH1 0x60 DUP8 SWAP1 SHL DUP7 DUP7 SUB DUP7 PUSH2 0x2B96 JUMP JUMPDEST DUP2 PUSH2 0x2AE9 JUMPI PUSH2 0x2AE9 PUSH2 0x4571 JUMP JUMPDEST DIV SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B02 DUP5 DUP5 DUP5 PUSH2 0x2B96 JUMP JUMPDEST SWAP1 POP DUP2 DUP1 PUSH2 0x2B12 JUMPI PUSH2 0x2B12 PUSH2 0x4571 JUMP JUMPDEST DUP4 DUP6 MULMOD ISZERO PUSH2 0x2B4A JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT PUSH2 0x2B46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x2B73 JUMPI PUSH2 0x2AC3 DUP6 DUP6 DUP6 SUB PUSH13 0x1000000000000000000000000 PUSH2 0x2AF5 JUMP JUMPDEST PUSH2 0x2B8D DUP6 DUP6 DUP6 SUB PUSH13 0x1000000000000000000000000 PUSH2 0x2B96 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP8 MULMOD DUP6 DUP8 MUL SWAP3 POP DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH1 0x0 EQ ISZERO PUSH2 0x2BEE JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x2BE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x2B4A JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x2BFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2C82 DUP14 DUP14 PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x2AF5 JUMP JUMPDEST SWAP1 POP PUSH2 0x2C8E DUP2 DUP11 PUSH2 0x4320 JUMP JUMPDEST SWAP9 POP PUSH2 0x2C9A DUP2 DUP15 PUSH2 0x445B JUMP JUMPDEST PUSH2 0x2CA4 SWAP1 DUP10 PUSH2 0x4320 JUMP JUMPDEST SWAP8 POP PUSH1 0x0 PUSH2 0x2CB5 DUP3 DUP14 PUSH2 0x2710 PUSH2 0x2AF5 JUMP JUMPDEST SWAP1 POP PUSH2 0x2CC1 DUP2 DUP10 PUSH2 0x4320 JUMP JUMPDEST SWAP8 POP PUSH2 0x2CCD DUP2 DUP4 PUSH2 0x445B JUMP JUMPDEST SWAP2 POP PUSH2 0x2CEB DUP3 PUSH17 0x100000000000000000000000000000000 DUP14 PUSH2 0x2B96 JUMP JUMPDEST PUSH2 0x2CF5 SWAP1 DUP9 PUSH2 0x4320 JUMP JUMPDEST SWAP10 SWAP15 SWAP9 SWAP14 POP SWAP7 SWAP12 POP SWAP8 SWAP10 POP SWAP6 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP8 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x3 ADD SLOAD DUP2 SWAP1 PUSH2 0x2D47 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH2 0x442E JUMP JUMPDEST PUSH1 0x2 DUP11 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 ISZERO PUSH2 0x2EB9 JUMPI PUSH1 0x2 PUSH2 0x2DB4 DUP5 DUP12 PUSH2 0x4338 JUMP JUMPDEST PUSH2 0x2DBE SWAP2 SWAP1 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH2 0x2E08 JUMPI PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2E01 SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH2 0x445B JUMP JUMPDEST SWAP7 POP PUSH2 0x2E47 JUMP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2E44 SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH2 0x4320 JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x2E6A SWAP1 DUP7 PUSH2 0x445B JUMP JUMPDEST PUSH1 0x2 DUP11 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SWAP3 SWAP1 SWAP3 SSTORE ADD SLOAD PUSH2 0x2E93 SWAP1 DUP8 PUSH2 0x445B JUMP JUMPDEST PUSH1 0x2 SWAP10 DUP11 SIGNEXTEND DUP11 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 DUP12 ADD SWAP2 SWAP1 SWAP2 SSTORE SLOAD SWAP1 SWAP9 SIGNEXTEND SWAP8 PUSH2 0x2FCD JUMP JUMPDEST PUSH1 0x2 PUSH2 0x2EC5 DUP5 DUP12 PUSH2 0x4338 JUMP JUMPDEST PUSH2 0x2ECF SWAP2 SWAP1 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH2 0x2F19 JUMPI PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2F12 SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH2 0x4320 JUMP JUMPDEST SWAP7 POP PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2F55 SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH2 0x445B JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 ADD SLOAD PUSH2 0x2F79 SWAP1 DUP7 PUSH2 0x445B JUMP JUMPDEST PUSH1 0x2 DUP11 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x1 ADD SLOAD PUSH2 0x2FA3 SWAP1 DUP8 PUSH2 0x445B JUMP JUMPDEST PUSH1 0x2 SWAP10 DUP11 SIGNEXTEND DUP11 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH4 0x1000000 SWAP1 DIV SWAP1 SWAP9 SIGNEXTEND SWAP8 JUMPDEST POP SWAP5 SWAP9 SWAP7 SWAP8 POP POP POP POP POP POP POP JUMP JUMPDEST DUP3 ISZERO PUSH2 0x3124 JUMPI PUSH1 0x0 PUSH2 0x300C PUSH32 0x0 PUSH2 0x3BBA JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x3032 SWAP1 DUP6 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x3080 JUMPI PUSH1 0x40 MLOAD PUSH32 0x840463AA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR DUP1 DUP4 SSTORE DUP6 SWAP3 SWAP2 PUSH1 0x10 SWAP2 PUSH2 0x30E7 SWAP2 DUP6 SWAP2 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x314F PUSH32 0x0 PUSH2 0x3BBA JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x3189 SWAP1 DUP6 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x31D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE430204200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 DUP5 DUP4 AND MUL DUP2 DUP2 OR DUP5 SSTORE DUP7 SWAP4 SWAP3 PUSH1 0x0 SWAP3 PUSH2 0x30E7 SWAP3 DUP7 SWAP3 AND OR PUSH2 0x43FD JUMP JUMPDEST DUP3 ISZERO PUSH2 0x329E JUMPI PUSH1 0x3 DUP3 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD DUP3 SWAP2 SWAP1 PUSH1 0x10 SWAP1 PUSH2 0x3263 SWAP1 DUP5 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD DUP3 SWAP2 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x3263 SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST DUP1 ISZERO PUSH2 0x33B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3389 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x33AD SWAP2 SWAP1 PUSH2 0x40BB JUMP JUMPDEST POP POP PUSH2 0x346C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3453 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3467 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 DUP7 GT PUSH2 0x348F JUMPI PUSH2 0x3488 DUP5 DUP9 DUP9 DUP7 PUSH2 0x2B51 JUMP JUMPDEST SWAP1 POP PUSH2 0x34C6 JUMP JUMPDEST DUP7 DUP6 GT PUSH2 0x34A9 JUMPI PUSH2 0x34A2 DUP5 DUP9 DUP9 DUP7 PUSH2 0x2A9B JUMP JUMPDEST SWAP2 POP PUSH2 0x34C6 JUMP JUMPDEST PUSH2 0x34B5 DUP5 DUP7 DUP9 DUP7 PUSH2 0x2A9B JUMP JUMPDEST SWAP2 POP PUSH2 0x34C3 DUP5 DUP9 DUP8 DUP7 PUSH2 0x2B51 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x2 DUP8 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP2 SWAP1 DUP2 SWAP1 DUP2 DUP1 PUSH2 0x3524 DUP10 DUP10 PUSH2 0x21A4 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3566 DUP4 PUSH1 0x1 ADD SLOAD DUP4 PUSH2 0x353B SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST DUP5 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH17 0x100000000000000000000000000000000 PUSH2 0x2B96 JUMP JUMPDEST SWAP6 POP PUSH2 0x357B DUP4 PUSH1 0x2 ADD SLOAD DUP3 PUSH2 0x353B SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST DUP4 SLOAD SWAP1 SWAP6 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 POP PUSH1 0x0 PUSH1 0xF DUP9 SWAP1 SIGNEXTEND SLT ISZERO PUSH2 0x3605 JUMPI PUSH2 0x35AA DUP8 PUSH2 0x4494 JUMP JUMPDEST DUP4 SLOAD DUP5 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x35CE SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x0 DUP8 PUSH1 0xF SIGNEXTEND SGT ISZERO PUSH2 0x36C1 JUMPI DUP3 SLOAD DUP8 SWAP1 DUP5 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x3637 SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST DUP3 SLOAD PUSH2 0x100 SWAP3 SWAP1 SWAP3 EXP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 MUL NOT SWAP1 SWAP4 AND SWAP2 DUP4 AND MUL OR SWAP1 SWAP2 SSTORE DUP5 SLOAD PUSH32 0x0 DUP3 AND SWAP2 AND GT ISZERO SWAP1 POP PUSH2 0x36C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB03425AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP4 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE SWAP2 SWAP7 SWAP1 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3890 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37DE SWAP2 SWAP1 PUSH2 0x40BB JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH2 0x335C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x394E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3962 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP7 SWAP1 MSTORE PUSH32 0x0 AND SWAP3 POP PUSH4 0xF18D03CC SWAP2 POP PUSH1 0x84 ADD PUSH2 0x3439 JUMP JUMPDEST PUSH2 0x3A39 PUSH32 0x0 DUP4 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x3A73 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCE8EF7FC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH2 0x3A9F PUSH32 0x0 DUP5 PUSH2 0x4338 JUMP JUMPDEST PUSH2 0x3AA9 SWAP2 SWAP1 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x3AE3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xFDF1420200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3B0D PUSH32 0x0 DUP3 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x3B47 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCE8EF7FC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH2 0x3B73 PUSH32 0x0 DUP4 PUSH2 0x4338 JUMP JUMPDEST PUSH2 0x3B7D SWAP2 SWAP1 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH2 0x3BB6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9778C6300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3C60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3C84 SWAP2 SWAP1 PUSH2 0x40A2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C95 DUP2 PUSH2 0x45FE JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C95 DUP2 PUSH2 0x4623 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C95 DUP2 PUSH2 0x4631 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3CC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3CD0 DUP2 PUSH2 0x45FE JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3CE0 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x3CF0 DUP2 PUSH2 0x4631 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3D11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH2 0x3D1C DUP2 PUSH2 0x4623 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x40 DUP8 ADD MLOAD SWAP2 SWAP6 POP SWAP4 POP PUSH2 0x3D34 DUP2 PUSH2 0x45FE JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x3D45 DUP2 PUSH2 0x4623 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3D7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3D8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3D9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3DB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3DD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3DEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3E12 JUMPI PUSH2 0x3E12 PUSH2 0x45CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3E58 JUMPI PUSH2 0x3E58 PUSH2 0x45CF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3E71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2B4A DUP2 PUSH2 0x4631 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2B4A DUP2 PUSH2 0x4631 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3EE9 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3EF9 DUP2 PUSH2 0x4631 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3F1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3F25 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3F35 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x3F45 DUP2 PUSH2 0x45FE JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x3D45 DUP2 PUSH2 0x4623 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3F6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3F78 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3F88 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3FAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x3FBD DUP2 PUSH2 0x45FE JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x3FCD DUP2 PUSH2 0x4623 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3FEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3FF6 PUSH2 0x42C2 JUMP JUMPDEST PUSH2 0x3FFF DUP4 PUSH2 0x3CA5 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x400D PUSH1 0x20 DUP5 ADD PUSH2 0x3CA5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x401E PUSH1 0x40 DUP5 ADD PUSH2 0x3CA5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x402F PUSH1 0x60 DUP5 ADD PUSH2 0x3CA5 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x4054 PUSH1 0xC0 DUP5 ADD PUSH2 0x3C9A JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x4065 PUSH1 0xE0 DUP5 ADD PUSH2 0x3C9A JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x4078 DUP2 DUP6 ADD PUSH2 0x3C8A JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 PUSH2 0x408A DUP5 DUP3 ADD PUSH2 0x3C8A JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x140 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4130 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 MSTORE DUP4 ADD MLOAD DUP4 DUP9 ADD MSTORE PUSH1 0x40 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x40F3 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4189 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4157 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2B4A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x40DF JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x41BB PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x40DF JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x41CD DUP2 DUP7 PUSH2 0x40DF JUMP JUMPDEST SWAP2 POP POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4242 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 DUP2 ADD MLOAD ISZERO ISZERO DUP8 DUP7 ADD MSTORE DUP6 ADD MLOAD DUP6 DUP6 ADD MSTORE PUSH1 0x60 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x41FB JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x427C JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x4260 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x428E JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x160 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x42E6 JUMPI PUSH2 0x42E6 PUSH2 0x45CF JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x4317 JUMPI PUSH2 0x4317 PUSH2 0x4542 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x4333 JUMPI PUSH2 0x4333 PUSH2 0x4542 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND DUP4 PUSH1 0x2 SIGNEXTEND DUP1 PUSH2 0x434F JUMPI PUSH2 0x434F PUSH2 0x4571 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000 DUP4 EQ AND ISZERO PUSH2 0x43A3 JUMPI PUSH2 0x43A3 PUSH2 0x4542 JUMP JUMPDEST SWAP1 SDIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x43BB JUMPI PUSH2 0x43BB PUSH2 0x4571 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x43F8 JUMPI PUSH2 0x43F8 PUSH2 0x4542 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x4426 JUMPI PUSH2 0x4426 PUSH2 0x4542 JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x4426 JUMPI PUSH2 0x4426 PUSH2 0x4542 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x446D JUMPI PUSH2 0x446D PUSH2 0x4542 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x2 SIGNEXTEND DUP1 PUSH2 0x4485 JUMPI PUSH2 0x4485 PUSH2 0x4571 JUMP JUMPDEST DUP1 DUP4 PUSH1 0x2 SIGNEXTEND SMOD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xF SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000000000000000000000 DUP2 EQ ISZERO PUSH2 0x44CA JUMPI PUSH2 0x44CA PUSH2 0x4542 JUMP JUMPDEST PUSH1 0x0 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000 DUP2 EQ ISZERO PUSH2 0x44CA JUMPI PUSH2 0x44CA PUSH2 0x4542 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ ISZERO PUSH2 0x453B JUMPI PUSH2 0x453B PUSH2 0x4542 JUMP JUMPDEST POP PUSH1 0x0 SUB SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x4620 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 DELEGATECALL 0xDD 0xCA PUSH14 0x99127E73FF19F59ECCAED3901AA2 0xBB SAR 0xB0 PUSH13 0xD142170AFC64577EB564736F6C PUSH4 0x43000807 STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 CALLCODE 0x21 0xB9 0xC2 MSTORE SLOAD 0x28 KECCAK256 KECCAK256 0xF7 PUSH8 0x12F35BA17CA7AA89 0x1E PUSH2 0xE7C6 0xCB SHR 0x4F 0xB4 0x1F POP DELEGATECALL DUP9 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "271:1064:47:-:0;;;335:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;385:15;-1:-1:-1;;;;;634:29:44;;630:55;;672:13;;-1:-1:-1;;;672:13:44;;;;;;;;;;;630:55;695:32;;-1:-1:-1;;;;;;695:32:44;;;-1:-1:-1;271:1064:47;;14:290:64;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:64;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:64:o;:::-;271:1064:47;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_registerPool_11818": {
                  "entryPoint": 1340,
                  "id": 11818,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@configAddress_11692": {
                  "entryPoint": null,
                  "id": 11692,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@deployPool_14778": {
                  "entryPoint": 520,
                  "id": 14778,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getPools_11886": {
                  "entryPoint": 1043,
                  "id": 11886,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@masterDeployer_11681": {
                  "entryPoint": null,
                  "id": 11681,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@poolsCount_11837": {
                  "entryPoint": null,
                  "id": 11837,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@pools_11688": {
                  "entryPoint": 437,
                  "id": 11688,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_uint24t_uint160t_uint24_fromMemory": {
                  "entryPoint": 2245,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 2364,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 2426,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256": {
                  "entryPoint": 2496,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 2571,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_memory_ptr": {
                  "entryPoint": 2597,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_uint24_fromMemory": {
                  "entryPoint": 2220,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint24_t_uint160_t_uint24__to_t_address_t_address_t_uint24_t_uint160_t_uint24__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 2814,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_contract$_IMasterDeployer_$2356__to_t_bytes_memory_ptr_t_address__fromStack_reversed": {
                  "entryPoint": 2906,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 3054,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 3081,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 3141,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 3188,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 3235,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 3282,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:6986:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "73:106:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "83:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "98:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "92:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "92:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "83:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "157:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "166:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "169:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "159:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "159:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "159:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "127:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "138:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "145:8:64",
                                            "type": "",
                                            "value": "0xffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "134:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "134:20:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "124:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "124:31:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "117:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "117:39:64"
                              },
                              "nodeType": "YulIf",
                              "src": "114:59:64"
                            }
                          ]
                        },
                        "name": "abi_decode_uint24_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "52:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "63:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:165:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "347:540:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "394:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "403:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "406:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "396:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "396:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "396:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "368:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "377:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "364:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "364:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "389:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "360:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "360:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "357:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "419:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "438:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "432:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "432:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "423:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "482:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "457:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "457:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "457:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "497:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "507:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "497:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "521:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "546:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "557:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "542:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "542:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "536:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "536:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "525:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "595:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "570:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "570:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "570:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "612:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "622:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "612:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "638:58:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "681:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "692:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "677:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "677:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint24_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "648:28:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "648:48:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "638:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "705:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "730:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "741:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "726:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "726:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "720:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "720:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "709:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "779:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "754:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "754:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "754:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "796:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "806:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "796:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "822:59:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "865:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "876:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "861:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "861:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint24_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "832:28:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "832:49:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "822:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_uint24t_uint160t_uint24_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "281:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "292:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "304:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "312:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "320:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "328:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "336:6:64",
                            "type": ""
                          }
                        ],
                        "src": "184:703:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "979:301:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1025:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1034:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1037:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1027:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1027:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1027:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1000:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1009:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "996:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "996:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1021:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "992:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "992:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "989:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1050:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1076:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1063:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1063:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1054:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1120:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1095:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1095:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1095:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1135:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1145:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1135:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1159:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1191:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1202:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1187:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1187:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1174:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1174:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1163:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1240:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1215:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1215:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1215:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1257:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1267:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1257:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "937:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "948:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "960:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "968:6:64",
                            "type": ""
                          }
                        ],
                        "src": "892:388:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1389:352:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1435:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1444:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1447:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1437:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1437:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1437:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1410:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1419:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1406:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1406:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1431:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1402:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1402:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1399:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1460:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1486:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1473:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1473:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1464:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1530:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1505:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1505:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1505:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1545:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1555:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1545:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1569:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1601:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1612:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1597:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1597:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1584:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1584:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1573:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1650:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1625:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1625:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1625:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1667:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1677:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1667:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1693:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1720:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1731:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1716:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1716:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1703:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1703:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1693:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1339:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1350:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1362:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1370:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1378:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1285:456:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1867:404:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1914:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1923:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1926:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1916:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1916:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1916:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1888:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1897:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1884:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1884:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1909:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1880:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1880:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1877:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1939:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1965:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1952:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1952:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1943:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2009:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1984:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1984:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1984:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2024:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2034:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2024:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2048:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2080:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2091:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2076:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2076:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2063:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2063:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2052:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2129:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2104:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2104:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2104:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2146:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "2156:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2146:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2172:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2199:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2210:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2195:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2195:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2182:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2182:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2172:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2223:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2250:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2261:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2246:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2246:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2233:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2233:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2223:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1809:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1820:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1832:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1840:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1848:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1856:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1746:525:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2346:110:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2392:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2401:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2404:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2394:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2394:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2394:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2367:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2376:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2363:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2363:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2388:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2359:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2359:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2356:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2417:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2440:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2427:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2427:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2417:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2312:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2323:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2335:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2276:180:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2540:901:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2586:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2595:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2598:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2588:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2588:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2588:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2561:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2570:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2557:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2557:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2582:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2553:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2553:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2550:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2611:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2638:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2625:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2625:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2615:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2657:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2667:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2661:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2712:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2721:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2724:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2714:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2714:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2714:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2700:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2708:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2697:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2697:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2694:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2737:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2751:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2762:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2747:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2747:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2741:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2817:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2826:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2829:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2819:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2819:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2819:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2796:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2800:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2792:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2792:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2807:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2788:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2788:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2781:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2781:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2778:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2842:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2865:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2852:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2852:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2846:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2891:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2893:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2893:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2893:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2883:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2887:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2880:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2880:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2877:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2922:76:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2932:66:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "2926:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3007:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3027:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3021:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3021:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "3011:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3039:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3061:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3085:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3089:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3081:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3081:13:64"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "3096:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "3077:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3077:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3101:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3073:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3073:31:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "3106:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3069:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3069:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3057:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3057:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "3043:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3169:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "3171:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3171:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3171:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3128:10:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3140:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3125:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3125:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3148:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3160:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3145:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3145:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "3122:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3122:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3119:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3207:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3211:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3200:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3200:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3200:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3238:6:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3246:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3231:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3231:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3231:18:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3295:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3304:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3307:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3297:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3297:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3297:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "3272:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3276:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3268:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3268:11:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3281:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3264:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3264:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3286:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3261:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3261:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3258:53:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3337:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3345:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3333:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3333:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3354:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3358:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3350:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3350:11:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3363:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "3320:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3320:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3320:46:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "3390:6:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3398:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3386:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3386:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3403:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3382:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3382:24:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3408:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3375:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3375:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3375:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3419:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "3429:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3419:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2506:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2517:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2529:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2461:980:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3547:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3557:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3569:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3580:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3565:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3565:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3557:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3599:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3614:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3622:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3610:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3610:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3592:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3592:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3592:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3516:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3527:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3538:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3446:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3886:383:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3896:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3908:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3919:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3904:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3904:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3896:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3932:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3942:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3936:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4000:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4015:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4023:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4011:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4011:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3993:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3993:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3993:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4047:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4058:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4043:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4043:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4067:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4075:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4063:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4063:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4036:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4036:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4036:43:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4088:18:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4098:8:64",
                                "type": "",
                                "value": "0xffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4092:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4126:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4137:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4122:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4122:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4146:6:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4154:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4142:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4142:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4115:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4115:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4115:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4178:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4189:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4174:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4174:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "4198:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4206:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4194:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4194:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4167:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4167:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4167:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4230:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4241:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4226:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4226:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "4251:6:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4259:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4247:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4247:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4219:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4219:44:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4219:44:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint24_t_uint160_t_uint24__to_t_address_t_address_t_uint24_t_uint160_t_uint24__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3823:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3834:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3842:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3850:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3858:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3866:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3877:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3677:592:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4425:530:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4435:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4445:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4439:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4456:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4474:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4485:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4470:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4470:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4460:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4504:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4515:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4497:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4497:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4497:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4527:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "4538:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "4531:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4553:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4573:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4567:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4567:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "4557:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4596:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4604:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4589:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4589:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4589:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4620:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4631:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4642:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4627:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4627:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "4620:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4654:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4672:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4680:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4668:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4668:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4658:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4692:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4701:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "4696:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4760:169:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "4781:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4796:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "4790:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4790:13:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "4805:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "4786:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4786:62:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4774:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4774:75:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4774:75:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4862:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "4873:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4878:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4869:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4869:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4862:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4894:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "4908:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4916:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4904:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4904:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4894:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4722:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4725:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4719:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4719:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4733:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4735:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "4744:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4747:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4740:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4740:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "4735:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4715:3:64",
                                "statements": []
                              },
                              "src": "4711:218:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4938:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "4946:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4938:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4394:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4405:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4416:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4274:681:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5131:612:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5148:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5159:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5141:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5141:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5141:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5171:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5191:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5185:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5185:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "5175:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5218:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5229:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5214:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5214:18:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5234:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5207:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5207:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5207:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5250:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5259:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "5254:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5321:92:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5350:9:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5361:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "5346:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5346:17:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5365:2:64",
                                              "type": "",
                                              "value": "96"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "5342:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5342:26:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5384:6:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5392:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5380:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "5380:14:64"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "5396:4:64",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "5376:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5376:25:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "5370:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5370:32:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5335:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5335:68:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5335:68:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "5280:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5283:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5277:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5277:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "5291:21:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5293:17:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "5302:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5305:4:64",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "5298:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5298:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "5293:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "5273:3:64",
                                "statements": []
                              },
                              "src": "5269:144:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5447:66:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5476:9:64"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5487:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "5472:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5472:22:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5496:2:64",
                                              "type": "",
                                              "value": "96"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "5468:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5468:31:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5501:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5461:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5461:42:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5461:42:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "5428:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5431:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5425:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5425:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5422:91:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5522:121:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5538:9:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "5557:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5565:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5553:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5553:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5570:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "5549:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5549:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5534:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5534:104:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5640:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5530:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5530:113:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5522:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5663:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5674:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5659:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5659:20:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5685:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5693:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5681:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5681:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5652:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5652:85:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5652:85:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_contract$_IMasterDeployer_$2356__to_t_bytes_memory_ptr_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5092:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5103:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5111:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5122:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4960:783:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5849:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5859:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5871:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5882:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5867:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5867:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5859:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5901:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5912:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5894:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5894:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5894:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5818:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5829:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5840:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5748:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5978:80:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6005:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "6007:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6007:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6007:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "5994:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "6001:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "5997:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5997:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5991:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5991:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5988:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6036:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "6047:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "6050:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6043:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6043:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "6036:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "5961:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "5964:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "5970:3:64",
                            "type": ""
                          }
                        ],
                        "src": "5930:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6110:148:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6201:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "6203:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6203:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6203:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6126:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6133:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "6123:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6123:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6120:103:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6232:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6243:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6250:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6239:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6239:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "6232:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6092:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "6102:3:64",
                            "type": ""
                          }
                        ],
                        "src": "6063:195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6295:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6312:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6315:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6305:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6305:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6305:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6409:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6412:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6402:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6402:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6402:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6433:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6436:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6426:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6426:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6426:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6263:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6484:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6501:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6504:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6494:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6494:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6494:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6598:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6601:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6591:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6591:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6591:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6622:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6625:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6615:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6615:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6615:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6452:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6673:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6690:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6693:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6683:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6683:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6683:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6787:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6790:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6780:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6780:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6780:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6811:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6814:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6804:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6804:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6804:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6641:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6875:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6962:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6971:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6974:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6964:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6964:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6964:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6898:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "6909:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6916:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "6905:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6905:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "6895:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6895:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6888:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6888:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6885:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6864:5:64",
                            "type": ""
                          }
                        ],
                        "src": "6830:154:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_uint24_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_uint24t_uint160t_uint24_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := abi_decode_uint24_fromMemory(add(headStart, 64))\n        let value_2 := mload(add(headStart, 96))\n        validator_revert_address(value_2)\n        value3 := value_2\n        value4 := abi_decode_uint24_fromMemory(add(headStart, 128))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_bytes_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value0 := memPtr\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint24_t_uint160_t_uint24__to_t_address_t_address_t_uint24_t_uint160_t_uint24__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        let _2 := 0xffffff\n        mstore(add(headStart, 64), and(value2, _2))\n        mstore(add(headStart, 96), and(value3, _1))\n        mstore(add(headStart, 128), and(value4, _2))\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_contract$_IMasterDeployer_$2356__to_t_bytes_memory_ptr_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let length := mload(value0)\n        mstore(add(headStart, 64), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(add(headStart, i), 96), mload(add(add(value0, i), 0x20)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 96), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 96)\n        mstore(add(headStart, 0x20), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "11681": [
                  {
                    "length": 32,
                    "start": 346
                  },
                  {
                    "length": 32,
                    "start": 926
                  },
                  {
                    "length": 32,
                    "start": 1364
                  }
                ]
              },
              "linkReferences": {
                "contracts/libraries/concentratedPool/DyDxMath.sol": {
                  "DyDxMath": [
                    {
                      "length": 20,
                      "start": 12139
                    }
                  ]
                },
                "contracts/libraries/concentratedPool/Ticks.sol": {
                  "Ticks": [
                    {
                      "length": 20,
                      "start": 3693
                    },
                    {
                      "length": 20,
                      "start": 11367
                    },
                    {
                      "length": 20,
                      "start": 12850
                    }
                  ]
                }
              },
              "object": "60806040523480156200001157600080fd5b50600436106200007b5760003560e01c806371a25812116200005657806371a25812146200012e578063cf58879a1462000154578063f6ab6d99146200017c57600080fd5b8063169c4cef146200008057806327c3cae114620000c15780635bc93d6c14620000d8575b600080fd5b62000097620000913660046200097a565b620001b5565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b62000097620000d236600462000a25565b62000208565b6200011f620000e93660046200093c565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526020818152604080832093909416825291909152205490565b604051908152602001620000b8565b620001456200013f366004620009c0565b62000413565b604051620000b8919062000afe565b620000977f000000000000000000000000000000000000000000000000000000000000000081565b620000976200018d36600462000a0b565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60006020528260005260406000206020528160005260406000208181548110620001de57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16925083915050565b60008060008060008086806020019051810190620002279190620008c5565b945094509450945094508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1611156200026a579293925b6040805173ffffffffffffffffffffffffffffffffffffffff80881660208301528087169282019290925262ffffff8086166060830152918416608082015290821660a082015260c001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815260028084526060840190925298506000919081602001602082028036833701905050905085816000815181106200031a576200031a62000c74565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505084816001815181106200036b576200036b62000c74565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910182015288519089012060405181908a907f000000000000000000000000000000000000000000000000000000000000000090620003c9906200089e565b620003d692919062000b5a565b8190604051809103906000f5905080158015620003f7573d6000803e3d6000fd5b509750620004078883836200053c565b50505050505050919050565b60608167ffffffffffffffff81111562000431576200043162000ca3565b6040519080825280602002602001820160405280156200045b578160200160208202803683370190505b50905060005b82811015620005335773ffffffffffffffffffffffffffffffffffffffff808716600090815260208181526040808320938916835292905220620004a6828662000bee565b81548110620004b957620004b962000c74565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828281518110620004f957620004f962000c74565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152806200052a8162000c09565b91505062000461565b50949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614620005ac576040517f03781a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555b600183510381101562000898578281600101815181106200061e576200061e62000c74565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1683828151811062000651576200065162000c74565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1610620006a7576040517f3f06bf8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015b83518110156200088e57600080858481518110620006ce57620006ce62000c74565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085838151811062000727576200072762000c74565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409091016000908120805460018101825590825291812090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915584518190869084908110620007b657620007b662000c74565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008584815181106200080f576200080f62000c74565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604090910160009081208054600180820183559183529290912090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915501620006ac565b50600101620005f9565b50505050565b6150c38062000cf983390190565b805162ffffff81168114620008c057600080fd5b919050565b600080600080600060a08688031215620008de57600080fd5b8551620008eb8162000cd2565b6020870151909550620008fe8162000cd2565b93506200090e60408701620008ac565b92506060860151620009208162000cd2565b91506200093060808701620008ac565b90509295509295909350565b600080604083850312156200095057600080fd5b82356200095d8162000cd2565b915060208301356200096f8162000cd2565b809150509250929050565b6000806000606084860312156200099057600080fd5b83356200099d8162000cd2565b92506020840135620009af8162000cd2565b929592945050506040919091013590565b60008060008060808587031215620009d757600080fd5b8435620009e48162000cd2565b93506020850135620009f68162000cd2565b93969395505050506040820135916060013590565b60006020828403121562000a1e57600080fd5b5035919050565b60006020828403121562000a3857600080fd5b813567ffffffffffffffff8082111562000a5157600080fd5b818401915084601f83011262000a6657600080fd5b81358181111562000a7b5762000a7b62000ca3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171562000ac45762000ac462000ca3565b8160405282815287602084870101111562000ade57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6020808252825182820181905260009190848201906040850190845b8181101562000b4e57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162000b1a565b50909695505050505050565b604081526000835180604084015260005b8181101562000b8a576020818701810151606086840101520162000b6b565b8181111562000b9d576000606083860101525b5073ffffffffffffffffffffffffffffffffffffffff93909316602083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b6000821982111562000c045762000c0462000c45565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000c3e5762000c3e62000c45565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811462000cf557600080fd5b5056fe6101806040523480156200001257600080fd5b50604051620050c3380380620050c3833981016040819052620000359162000704565b6000806000806000868060200190518101906200005391906200068d565b9398509196509450925090506001600160a01b038516620000875760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038516301415620000b25760405163c1ab6dc160e01b815260040160405180910390fd5b6001600160a01b038416301415620000dd5760405163c1ab6dc160e01b815260040160405180910390fd5b620186a062ffffff84161115620001075760405163da7459b760e01b815260040160405180910390fd5b6001600160601b0319606086811b82166101405285901b16610160526001600160e81b031960e884811b821660a052600780546001600160a01b0386166001600160a01b031990911617905582901b16608052604051636e23d2e160e11b815262ffffff8216600482015273__$ce5bd159ffa25aa093db868fa3464622ad$__9063dc47a5c29060240160206040518083038186803b158015620001aa57600080fd5b505af4158015620001bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e59190620007f5565b60801b6001600160801b03191660c0908152604080519182019052620d89e719808252602082019062000218906200083a565b600290810b825260006020808401829052604080850183905260608086018490526080958601849052620d89e719938490526009835286517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebac8054898601518a8601516001600160801b0316660100000000000002600160301b600160b01b0319918a0b62ffffff90811663010000000265ffffffffffff1990941695909a0b90991693909317179190911695909517909455928501517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebad55928401517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebae5560a0909301517fcafb9bd5a090b85cdc01f1fe9e79cce261755dc1bfdd255e0d8df8829987ebaf80546001600160a01b03929092166001600160a01b0319909216919091179055805160c0810190915282815291908201906200037a906200083a565b60020b815260200160006001600160801b03168152602001600081526020016000815260200160006001600160a01b031681525060096000620d89e719620003c2906200083a565b600290810b810b825260208083019390935260409182016000208451815486860151878601516001600160801b0316660100000000000002600160301b600160b01b031991860b62ffffff90811663010000000265ffffffffffff1990941694870b169390931791909117161781556060850151600182015560808501519181019190915560a090930151600390930180546001600160a01b039485166001600160a01b031990911617905560078054621e4ec360a31b62ffffff60a01b199091161790558051634da3182760e01b8152905192891692634da3182792600480840193919291829003018186803b158015620004bd57600080fd5b505afa158015620004d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f8919062000666565b6001600160a01b0316610100816001600160a01b031660601b81525050856001600160a01b0316630c0a0cd26040518163ffffffff1660e01b815260040160206040518083038186803b1580156200054f57600080fd5b505afa15801562000564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200058a919062000666565b6001600160a01b031660e0816001600160a01b031660601b81525050856001600160a01b031663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b158015620005e057600080fd5b505afa158015620005f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200061b919062000820565b600455505050505060601b6001600160601b031916610120525060016008556200089b565b80516200064d8162000882565b919050565b805162ffffff811681146200064d57600080fd5b6000602082840312156200067957600080fd5b8151620006868162000882565b9392505050565b600080600080600060a08688031215620006a657600080fd5b8551620006b38162000882565b6020870151909550620006c68162000882565b9350620006d66040870162000652565b92506060860151620006e88162000882565b9150620006f86080870162000652565b90509295509295909350565b600080604083850312156200071857600080fd5b82516001600160401b03808211156200073057600080fd5b818501915085601f8301126200074557600080fd5b8151818111156200075a576200075a6200086c565b604051601f8201601f19908116603f011681019083821181831017156200078557620007856200086c565b81604052828152602093508884848701011115620007a257600080fd5b600091505b82821015620007c65784820184015181830185015290830190620007a7565b82821115620007d85760008484830101525b9550620007ea91505085820162000640565b925050509250929050565b6000602082840312156200080857600080fd5b81516001600160801b03811681146200068657600080fd5b6000602082840312156200083357600080fd5b5051919050565b60008160020b627fffff198114156200086357634e487b7160e01b600052601160045260246000fd5b60000392915050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146200089857600080fd5b50565b60805160e81c60a05160e81c60c05160801c60e05160601c6101005160601c6101205160601c6101405160601c6101605160601c61467662000a4d6000396000818161059c01528181610e5e01528181610e8701528181610fb6015281816112ba015281816113cb015281816116b60152818161193d01528181611c8c01528181611e86015281816125180152818161312b0152818161381d01526139a101526000818161057401528181610ebe01528181610f5601528181610f7f015281816112510152818161136201528181611648015281816118c101528181611c0501528181611db0015281816123d101528181612fe80152818161371f01526138cd01526000818161054c0152612103015260008181610524015281816133310152818161340e01528181613763015281816138610152818161390a015281816139de0152613c080152600081816104fc01528181612405015261254c01526000818161046e01526136640152600081816104be0152610baa01526000818161049601528181610c4001528181610cce01528181613a1401528181613a7a01528181613ae80152613b4e01526146766000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80639da12096116100ee578063bcdb4dad11610097578063cf78756b11610071578063cf78756b146105db578063f30dba93146105e4578063fb39d628146106bb578063fb5d80b3146106ce57600080fd5b8063bcdb4dad14610457578063c14ad802146105ca578063caa4b46a146105d357600080fd5b8063aaca1b4d116100c8578063aaca1b4d146103ae578063acfe88f81461042f578063af8c09bf146101a857600080fd5b80639da120961461037e578063a69840a814610387578063a8f1f52e146101a857600080fd5b80636289db82116101505780637ba0e2e71161012a5780637ba0e2e7146103165780638c347f9b1461032957806392bc32191461037457600080fd5b80636289db821461029557806367e4ac2c146102b75780636d59d802146102cc57600080fd5b80632a07b6c7116101815780632a07b6c714610262578063499a3c50146101a8578063627dd56a1461028257600080fd5b8063053da1c8146101a85780630902f1ac146101ce5780631a68650214610225575b600080fd5b6101bb6101b6366004613d50565b610700565b6040519081526020015b60405180910390f35b6006546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004165b604080516fffffffffffffffffffffffffffffffff9384168152929091166020830152016101c5565b600054610241906fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020016101c5565b610275610270366004613d50565b610707565b6040516101c59190614195565b6101bb610290366004613dc2565b61070e565b6102a86102a3366004613f55565b611056565b6040516101c5939291906141a8565b6102bf611626565b6040516101c5919061413b565b6001546040805173ffffffffffffffffffffffffffffffffffffffff831681527401000000000000000000000000000000000000000090920463ffffffff166020830152016101c5565b6101bb610324366004613d50565b611725565b6007546040805173ffffffffffffffffffffffffffffffffffffffff8316815274010000000000000000000000000000000000000000909204600290810b900b6020830152016101c5565b61037c612101565b005b6101bb60025481565b6101bb7f54726964656e743a436f6e63656e7472617465644c697175696469747900000081565b6104016103bc366004613cb0565b600a6020908152600093845260408085208252928452828420905282529020805460018201546002909201546fffffffffffffffffffffffffffffffff909116919083565b604080516fffffffffffffffffffffffffffffffff90941684526020840192909252908201526060016101c5565b61044261043d366004613ecb565b6121a4565b604080519283526020830191909152016101c5565b604080516fffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815262ffffff7f0000000000000000000000000000000000000000000000000000000000000000811660208301527f0000000000000000000000000000000000000000000000000000000000000000169181019190915273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660608301527f0000000000000000000000000000000000000000000000000000000000000000811660808301527f0000000000000000000000000000000000000000000000000000000000000000811660a08301527f0000000000000000000000000000000000000000000000000000000000000000811660c08301527f00000000000000000000000000000000000000000000000000000000000000001660e0820152610100016101c5565b6101bb60045481565b6101fc6122bd565b6101bb60035481565b61065a6105f2366004613e91565b60096020526000908152604090208054600182015460028084015460039094015483820b946301000000850490920b93660100000000000090046fffffffffffffffffffffffffffffffff1692919073ffffffffffffffffffffffffffffffffffffffff1686565b60408051600297880b81529590960b60208601526fffffffffffffffffffffffffffffffff909316948401949094526060830152608082019290925273ffffffffffffffffffffffffffffffffffffffff90911660a082015260c0016101c5565b6104426106c9366004613f04565b61257b565b6005546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004166101fc565b6000806000fd5b6060600080fd5b60006008546002141561074d576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026008819055506000806000808580602001905181019061076f9190613cfb565b93509350935093506000604051806101200160405280600081526020016000815260200160008152602001866107a7576002546107ab565b6003545b8152602001866107bd576003546107c1565b6002545b815260075473ffffffffffffffffffffffffffffffffffffffff1660208201526000546fffffffffffffffffffffffffffffffff166040820152606081018690526080018661084b57600754740100000000000000000000000000000000000000009004600290810b810b810b60009081526009602052604090205463010000009004900b61086a565b60075474010000000000000000000000000000000000000000900460020b5b60020b9052600154909150429074010000000000000000000000000000000000000000900463ffffffff168082039082148015906108bb57506000546fffffffffffffffffffffffffffffffff1615155b1561097c57600180547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8516021790556000546fffffffffffffffffffffffffffffffff16608082901b8161092e5761092e614571565b600180547fffffffffffffffffffffffff000000000000000000000000000000000000000081169390920473ffffffffffffffffffffffffffffffffffffffff928316019091169190911790555b50505b60e081015115610d0d576000610999826101000151612708565b73ffffffffffffffffffffffffffffffffffffffff1690506000808715610ae65760006109d18560c00151858760a001516000612a9b565b9050808560e0015111610aa657600060608660c00151901b90506000610a19828860a001518960e001518a60a00151610a0a91906143c0565b610a149086614320565b612af5565b9050808611158015610a2e57508660a0015181105b610a7957610a60828860e001518960a0015185610a4b91906143ac565b610a559190614320565b808204910615150190565b73ffffffffffffffffffffffffffffffffffffffff1690505b610a8e8760c00151828960a001516000612b51565b60a0880191909152600060e08801529350610ae09050565b610abb8560c00151858760a001516000612b51565b60a0860185905260e086018051919450600193508291610adc90839061445b565b9052505b50610ba4565b6000610afd8560c001518660a00151866000612b51565b9050808560e0015111610b68576000610b2c8660e001516c010000000000000000000000008860c00151612b96565b8660a00151610b3b9190614320565b9050610b528660c001518760a00151836000612a9b565b60a0870191909152600060e08701529250610ba2565b610b7d8560c001518660a00151866000612a9b565b60a0860185905260e086018051919450600193508291610b9e90839061445b565b9052505b505b610be6827f00000000000000000000000000000000000000000000000000000000000000006004548760c0015188602001518e8a604001518b60600151612c67565b60608801526040870152602086019190915298508015610d0557610c646009856101000151600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168760c00151886060015189608001518e7f0000000000000000000000000000000000000000000000000000000000000000612d0c565b600290810b900b61010086015260c08501819052610d0557610c8a846101000151612708565b73ffffffffffffffffffffffffffffffffffffffff90811660a086015261010085015160015460c087015160608801516080890151610cf29560099594169291908e7f0000000000000000000000000000000000000000000000000000000000000000612d0c565b600290810b900b61010086015260c08501525b50505061097f565b60a0810151600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055600085610d8057610100820151600290810b810b600090815260096020526040902054900b610d87565b8161010001515b90508060020b600760149054906101000a900460020b60020b14610e3557600780547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000062ffffff600285900b160217905560c0820151600080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff9092169190911790555b610e40868689612fdb565b610e53868360600151846040015161321d565b8515610f5157610e857f00000000000000000000000000000000000000000000000000000000000000008886866132ca565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062888b604051610f44929190918252602082015260400190565b60405180910390a4611045565b610f7d7f00000000000000000000000000000000000000000000000000000000000000008886866132ca565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062888b60405161103c929190918252602082015260400190565b60405180910390a45b505060016008555092949350505050565b6060806000806000806110688b612708565b905060006110758b612708565b60075490915073ffffffffffffffffffffffffffffffffffffffff908116908316811180156110cf57508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b1561111857600080546fffffffffffffffffffffffffffffffff8082168e9003167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b61117a8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168e6fffffffffffffffffffffffffffffffff166000613472565b6fffffffffffffffffffffffffffffffff9182169650811694506f7fffffffffffffffffffffffffffffff908c16111592506111e5915050576040517f35278d1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806111fc338d8d6111f78e614494565b6134d0565b6040805160028082526060820190925291985092945090925090816020015b604080518082019091526000808252602082015281526020019060019003908161121b57905050965060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200185815250876000815181106112a2576112a26145a0565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001848152508760018151811061130b5761130b6145a0565b60209081029190910101526040805160028082526060820190925290816020015b604080518082019091526000808252602082015281526020019060019003908161132c57905050955060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200183815250866000815181106113b3576113b36145a0565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001828152508660018151811061141c5761141c6145a0565b60209081029190910101526006805493909101700100000000000000000000000000000000949092016fffffffffffffffffffffffffffffffff80851682900381167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090951685178690048116849003169094029092179091556114a2878383896136dc565b6007546040517f3c5474df0000000000000000000000000000000000000000000000000000000081526009600482015260028c810b60248301528b810b60448301526fffffffffffffffffffffffffffffffff8b16606483015274010000000000000000000000000000000000000000909204820b90910b608482015273__$ce5bd159ffa25aa093db868fa3464622ad$__90633c5474df9060a40160206040518083038186803b15801561155657600080fd5b505af415801561156a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158e9190613eae565b6007805460029290920b62ffffff1674010000000000000000000000000000000000000000027fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff909216919091179055604080518381526020810183905233917f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a910160405180910390a25050955095509592505050565b60408051600280825260608083018452926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061167a5761167a6145a0565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106116e8576116e86145a0565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b600060085460021415611764576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600855600061177783850185613fdb565b905060006117888260200151612708565b73ffffffffffffffffffffffffffffffffffffffff16905060006117af8360600151612708565b60075460a085015160808601516040517faec6cbfe0000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff9485166024820181905294909316604484018190526064840192909252608483015291925073__$df040e0a7bda43e0bcaf2b8c2beb7d11e8$__9063aec6cbfe9060a40160206040518083038186803b15801561185a57600080fd5b505af415801561186e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189291906140a2565b94506000806118b0866101000151876020015188606001518a6134d0565b5090925090508115611932576118ee7f00000000000000000000000000000000000000000000000000000000000000008388610100015160006132ca565b600680546fffffffffffffffffffffffffffffffff808216859003167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b80156119a25761196a7f00000000000000000000000000000000000000000000000000000000000000008288610100015160006132ca565b600680546fffffffffffffffffffffffffffffffff700100000000000000000000000000000000808304821685900382160291161790555b505080831080156119b257508181105b156119fa57600080546fffffffffffffffffffffffffffffffff8082168801167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b611a0c84602001518560600151613a0f565b60028054600354600154875160208901516040808b015160608c015160075492517f33440084000000000000000000000000000000000000000000000000000000008152600960048201526024810198909852604488019690965273ffffffffffffffffffffffffffffffffffffffff948516606488015292870b608487015290860b60a486015290850b60c485015291840b60e48401526fffffffffffffffffffffffffffffffff891661010484015274010000000000000000000000000000000000000000909104830b90920b61012482015290821661014482015273__$ce5bd159ffa25aa093db868fa3464622ad$__906333440084906101640160206040518083038186803b158015611b2257600080fd5b505af4158015611b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5a9190613eae565b600760146101000a81548162ffffff021916908360020b62ffffff160217905550600080611b8c8585858a6001613472565b6040805160028082526060820190925292945090925060009190816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181611bab57905050905060405180606001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018860c0015115158152602001846fffffffffffffffffffffffffffffffff1681525081600081518110611c7457611c746145a0565b602002602001018190525060405180606001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020018860e0015115158152602001836fffffffffffffffffffffffffffffffff1681525081600181518110611cfb57611cfb6145a0565b60200260200101819052503373ffffffffffffffffffffffffffffffffffffffff1663ced10b4982604051602001611d3391906141de565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401611d5e919061424f565b600060405180830381600087803b158015611d7857600080fd5b505af1158015611d8c573d6000803e3d6000fd5b5050505050816fffffffffffffffffffffffffffffffff16600014611e6957611dd47f0000000000000000000000000000000000000000000000000000000000000000613bba565b6006546fffffffffffffffffffffffffffffffff9081168401161115611e26576040517f840463aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546fffffffffffffffffffffffffffffffff8082168501167fffffffffffffffffffffffffffffffff000000000000000000000000000000009091161790555b6fffffffffffffffffffffffffffffffff811615611f4757611eaa7f0000000000000000000000000000000000000000000000000000000000000000613bba565b6006546fffffffffffffffffffffffffffffffff70010000000000000000000000000000000090910481168301161115611f10576040517fe430204200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008083048216850182160291161790555b600080611f5c886020015189606001516121a4565b6101208a0151919350915073ffffffffffffffffffffffffffffffffffffffff16156120825761010088015161012089015160208a015160608b01516101408c01516040517f6d59ebe100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9485166004820152600293840b60248201529190920b60448201526fffffffffffffffffffffffffffffffff8d1660648201526084810186905260a4810185905260c4810191909152911690636d59ebe19060e401602060405180830381600087803b15801561204857600080fd5b505af115801561205c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208091906140a2565b505b610100880151604080516fffffffffffffffffffffffffffffffff80881682528616602082015273ffffffffffffffffffffffffffffffffffffffff909216917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a2505060016008555094979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c14ad8026040518163ffffffff1660e01b815260040160206040518083038186803b15801561216757600080fd5b505afa15801561217b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219f91906140a2565b600455565b600754600283810b80820b60009081526009602052604080822086850b850b835290822084546003549396879674010000000000000000000000000000000000000000909104810b95939492939192918791829182918291908a900b1261221857876001015493508760020154925061223c565b6001880154612227908761445b565b9350876002015485612239919061445b565b92505b8b60020b8960020b121561225b5750506001850154600286015461227f565b600187015461226a908761445b565b915086600201548561227c919061445b565b90505b8161228a858861445b565b612294919061445b565b9a50806122a1848761445b565b6122ab919061445b565b99505050505050505050509250929050565b600080600854600214156122fd576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260085560055460016fffffffffffffffffffffffffffffffff909116111561242b57600554612342906001906fffffffffffffffffffffffffffffffff166143fd565b600580547fffffffffffffffffffffffffffffffff000000000000000000000000000000001660011790556006805491935083916000906123969084906fffffffffffffffffffffffffffffffff166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555061242b7f0000000000000000000000000000000000000000000000000000000000000000836fffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000060006132ca565b60055460017001000000000000000000000000000000009091046fffffffffffffffffffffffffffffffff161115612572576005546124929060019070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166143fd565b600580547001000000000000000000000000000000006fffffffffffffffffffffffffffffffff918216811790925560068054939450849390926010926124dd9286929004166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506125727f0000000000000000000000000000000000000000000000000000000000000000826fffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000060006132ca565b60016008559091565b600080600854600214156125bb576040517f0f2e5b6c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026008556125cd33878760006134d0565b5090925090506125df848383866136dc565b600680548391906000906126069084906fffffffffffffffffffffffffffffffff166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080600660108282829054906101000a90046fffffffffffffffffffffffffffffffff1661266991906143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff167f4a1c185b7b5da020829d63d69222d8602aa53a6b7800a73ee6e3e15a625d863d83836040516126f0929190918252602082015260400190565b60405180910390a26001600855909590945092505050565b60008060008360020b1261271f578260020b61272c565b8260020b61272c90614509565b90506127577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186144d3565b62ffffff16811115612795576040517ff87dc40c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600182166127b6577001000000000000000000000000000000006127c8565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156127fc576ffff97272373d413259a46990580e213a0260801c5b600482161561281b576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561283a576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612859576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612878576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612897576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156128b6576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156128d6576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156128f6576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612916576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612936576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612956576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612976576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612996576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156129b6576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156129d7576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156129f7576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612a16576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612a33576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612a7257807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81612a6e57612a6e614571565b0490505b640100000000810615612a86576001612a89565b60005b60ff16602082901c0192505050919050565b60008115612aca57612ac3612ab7606087901b86860386612af5565b85808204910615150190565b9050612aed565b83612adc606087901b86860386612b96565b81612ae957612ae9614571565b0490505b949350505050565b6000612b02848484612b96565b90508180612b1257612b12614571565b83850915612b4a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110612b4657600080fd5b6001015b9392505050565b60008115612b7357612ac3858585036c01000000000000000000000000612af5565b612b8d858585036c01000000000000000000000000612b96565b95945050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8587098587029250828110838203039150508060001415612bee5760008411612be357600080fd5b508290049050612b4a565b808411612bfa57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000806000806000612c828d8d62ffffff16620f4240612af5565b9050612c8e818a614320565b9850612c9a818e61445b565b612ca49089614320565b97506000612cb5828d612710612af5565b9050612cc18189614320565b9750612ccd818361445b565b9150612ceb827001000000000000000000000000000000008d612b96565b612cf59088614320565b999e989d50969b5097995095975050505050505050565b600287810b900b6000908152602089905260408120600301548190612d479073ffffffffffffffffffffffffffffffffffffffff168961442e565b60028a810b900b600090815260208c90526040902060030180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790558315612eb9576002612db4848b614338565b612dbe9190614472565b60020b612e0857600289810b900b600090815260208b90526040902054612e0190660100000000000090046fffffffffffffffffffffffffffffffff168861445b565b9650612e47565b600289810b900b600090815260208b90526040902054612e4490660100000000000090046fffffffffffffffffffffffffffffffff1688614320565b96505b600289810b900b600090815260208b90526040902060010154612e6a908661445b565b60028a810b810b600090815260208d90526040902060018101929092550154612e93908761445b565b6002998a0b8a0b600090815260208c905260409020808b01919091555490980b97612fcd565b6002612ec5848b614338565b612ecf9190614472565b60020b612f1957600289810b900b600090815260208b90526040902054612f1290660100000000000090046fffffffffffffffffffffffffffffffff1688614320565b9650612f58565b600289810b900b600090815260208b90526040902054612f5590660100000000000090046fffffffffffffffffffffffffffffffff168861445b565b96505b600289810b810b600090815260208c9052604090200154612f79908661445b565b60028a810b810b600090815260208d9052604090209081019190915560010154612fa3908761445b565b6002998a0b8a0b600090815260208c9052604090206001810191909155546301000000900490980b975b509498969750505050505050565b821561312457600061300c7f0000000000000000000000000000000000000000000000000000000000000000613bba565b6006549091506000906130329085906fffffffffffffffffffffffffffffffff166142ec565b905081816fffffffffffffffffffffffffffffffff161115613080576040517f840463aa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff838116919091178083558592916010916130e79185917001000000000000000000000000000000009004166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505050505050565b600061314f7f0000000000000000000000000000000000000000000000000000000000000000613bba565b60065490915060009061318990859070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166142ec565b905081816fffffffffffffffffffffffffffffffff1611156131d7576040517fe430204200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680546fffffffffffffffffffffffffffffffff9081167001000000000000000000000000000000008483160281811784558693926000926130e792869216176143fd565b821561329e5760038290556005805482919060109061326390849070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff166142ec565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550505050565b6002829055600580548291906000906132639084906fffffffffffffffffffffffffffffffff166142ec565b80156133b4576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152306024830152838116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4015b6040805180830381600087803b15801561337557600080fd5b505af1158015613389573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ad91906140bb565b505061346c565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301528381166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc906084015b600060405180830381600087803b15801561345357600080fd5b505af1158015613467573d6000803e3d6000fd5b505050505b50505050565b60008084861161348f5761348884888886612b51565b90506134c6565b8685116134a9576134a284888886612a9b565b91506134c6565b6134b584868886612a9b565b91506134c384888786612b51565b90505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a60209081526040808320600287810b810b855290835281842086820b90910b8452909152812081908190818061352489896121a4565b9150915061356683600101548361353b919061445b565b84546fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000612b96565b955061357b83600201548261353b919061445b565b83549095506fffffffffffffffffffffffffffffffff1693506000600f88900b1215613605576135aa87614494565b835484906000906135ce9084906fffffffffffffffffffffffffffffffff166143fd565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b600087600f0b13156136c1578254879084906000906136379084906fffffffffffffffffffffffffffffffff166142ec565b82546101009290920a6fffffffffffffffffffffffffffffffff81810219909316918316021790915584547f000000000000000000000000000000000000000000000000000000000000000082169116111590506136c1576040517fb03425ae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018301919091556002909101559196909550909350915050565b8015613890576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152858116604483015260006064830152608482018590527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b1580156137a657600080fd5b505af11580156137ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137de91906140bb565b50506040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830152858116604483015260006064830152608482018490527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a40161335c565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301528581166044830152606482018590527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401600060405180830381600087803b15801561394e57600080fd5b505af1158015613962573d6000803e3d6000fd5b50506040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301523060248301528781166044830152606482018690527f000000000000000000000000000000000000000000000000000000000000000016925063f18d03cc9150608401613439565b613a397f000000000000000000000000000000000000000000000000000000000000000083614472565b60020b15613a73576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002613a9f7f000000000000000000000000000000000000000000000000000000000000000084614338565b613aa99190614472565b60020b15613ae3576040517ffdf1420200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613b0d7f000000000000000000000000000000000000000000000000000000000000000082614472565b60020b15613b47576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002613b737f000000000000000000000000000000000000000000000000000000000000000083614338565b613b7d9190614472565b60020b613bb6576040517fa9778c6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301523060248301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063f7888aec9060440160206040518083038186803b158015613c4c57600080fd5b505afa158015613c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c8491906140a2565b92915050565b8035613c95816145fe565b919050565b8035613c9581614623565b8035613c9581614631565b600080600060608486031215613cc557600080fd5b8335613cd0816145fe565b92506020840135613ce081614631565b91506040840135613cf081614631565b809150509250925092565b60008060008060808587031215613d1157600080fd5b8451613d1c81614623565b602086015160408701519195509350613d34816145fe565b6060860151909250613d4581614623565b939692955090935050565b60008060208385031215613d6357600080fd5b823567ffffffffffffffff80821115613d7b57600080fd5b818501915085601f830112613d8f57600080fd5b813581811115613d9e57600080fd5b866020828501011115613db057600080fd5b60209290920196919550909350505050565b600060208284031215613dd457600080fd5b813567ffffffffffffffff80821115613dec57600080fd5b818401915084601f830112613e0057600080fd5b813581811115613e1257613e126145cf565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715613e5857613e586145cf565b81604052828152876020848701011115613e7157600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208284031215613ea357600080fd5b8135612b4a81614631565b600060208284031215613ec057600080fd5b8151612b4a81614631565b60008060408385031215613ede57600080fd5b8235613ee981614631565b91506020830135613ef981614631565b809150509250929050565b60008060008060808587031215613f1a57600080fd5b8435613f2581614631565b93506020850135613f3581614631565b92506040850135613f45816145fe565b91506060850135613d4581614623565b600080600080600060a08688031215613f6d57600080fd5b8535613f7881614631565b94506020860135613f8881614631565b935060408601356fffffffffffffffffffffffffffffffff81168114613fad57600080fd5b92506060860135613fbd816145fe565b91506080860135613fcd81614623565b809150509295509295909350565b60006101608284031215613fee57600080fd5b613ff66142c2565b613fff83613ca5565b815261400d60208401613ca5565b602082015261401e60408401613ca5565b604082015261402f60608401613ca5565b60608201526080830135608082015260a083013560a082015261405460c08401613c9a565b60c082015261406560e08401613c9a565b60e0820152610100614078818501613c8a565b9082015261012061408a848201613c8a565b90820152610140928301359281019290925250919050565b6000602082840312156140b457600080fd5b5051919050565b600080604083850312156140ce57600080fd5b505080516020909101519092909150565b600081518084526020808501945080840160005b83811015614130578151805173ffffffffffffffffffffffffffffffffffffffff16885283015183880152604090960195908201906001016140f3565b509495945050505050565b6020808252825182820181905260009190848201906040850190845b8181101561418957835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101614157565b50909695505050505050565b602081526000612b4a60208301846140df565b6060815260006141bb60608301866140df565b82810360208401526141cd81866140df565b915050826040830152949350505050565b602080825282518282018190526000919060409081850190868401855b82811015614242578151805173ffffffffffffffffffffffffffffffffffffffff1685528681015115158786015285015185850152606090930192908501906001016141fb565b5091979650505050505050565b600060208083528351808285015260005b8181101561427c57858101830151858201604001528201614260565b8181111561428e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b604051610160810167ffffffffffffffff811182821017156142e6576142e66145cf565b60405290565b60006fffffffffffffffffffffffffffffffff80831681851680830382111561431757614317614542565b01949350505050565b6000821982111561433357614333614542565b500190565b60008160020b8360020b8061434f5761434f614571565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000831416156143a3576143a3614542565b90059392505050565b6000826143bb576143bb614571565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143f8576143f8614542565b500290565b60006fffffffffffffffffffffffffffffffff8381169083168181101561442657614426614542565b039392505050565b600073ffffffffffffffffffffffffffffffffffffffff8381169083168181101561442657614426614542565b60008282101561446d5761446d614542565b500390565b60008260020b8061448557614485614571565b808360020b0791505092915050565b600081600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008114156144ca576144ca614542565b60000392915050565b60008160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008114156144ca576144ca614542565b60007f800000000000000000000000000000000000000000000000000000000000000082141561453b5761453b614542565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461462057600080fd5b50565b801515811461462057600080fd5b8060020b811461462057600080fdfea2646970667358221220b5f4ddca6d99127e73ff19f59eccaed3901aa2bb1db06cd142170afc64577eb564736f6c63430008070033a2646970667358221220b8f221b9c25254282020f76712f35ba17ca7aa891e61e7c6cb1c4fb41f50f48864736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x71A25812 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x71A25812 EQ PUSH3 0x12E JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH3 0x154 JUMPI DUP1 PUSH4 0xF6AB6D99 EQ PUSH3 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x169C4CEF EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x27C3CAE1 EQ PUSH3 0xC1 JUMPI DUP1 PUSH4 0x5BC93D6C EQ PUSH3 0xD8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x97A JUMP JUMPDEST PUSH3 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x97 PUSH3 0xD2 CALLDATASIZE PUSH1 0x4 PUSH3 0xA25 JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH3 0x11F PUSH3 0xE9 CALLDATASIZE PUSH1 0x4 PUSH3 0x93C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xB8 JUMP JUMPDEST PUSH3 0x145 PUSH3 0x13F CALLDATASIZE PUSH1 0x4 PUSH3 0x9C0 JUMP JUMPDEST PUSH3 0x413 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xB8 SWAP2 SWAP1 PUSH3 0xAFE JUMP JUMPDEST PUSH3 0x97 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0x97 PUSH3 0x18D CALLDATASIZE PUSH1 0x4 PUSH3 0xA0B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP3 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH3 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP DUP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP7 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x227 SWAP2 SWAP1 PUSH3 0x8C5 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH3 0x26A JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 DUP8 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH3 0xFFFFFF DUP1 DUP7 AND PUSH1 0x60 DUP4 ADD MSTORE SWAP2 DUP5 AND PUSH1 0x80 DUP3 ADD MSTORE SWAP1 DUP3 AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE PUSH1 0x2 DUP1 DUP5 MSTORE PUSH1 0x60 DUP5 ADD SWAP1 SWAP3 MSTORE SWAP9 POP PUSH1 0x0 SWAP2 SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH3 0x31A JUMPI PUSH3 0x31A PUSH3 0xC74 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH3 0x36B JUMPI PUSH3 0x36B PUSH3 0xC74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE DUP9 MLOAD SWAP1 DUP10 ADD KECCAK256 PUSH1 0x40 MLOAD DUP2 SWAP1 DUP11 SWAP1 PUSH32 0x0 SWAP1 PUSH3 0x3C9 SWAP1 PUSH3 0x89E JUMP JUMPDEST PUSH3 0x3D6 SWAP3 SWAP2 SWAP1 PUSH3 0xB5A JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH3 0x3F7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP8 POP PUSH3 0x407 DUP9 DUP4 DUP4 PUSH3 0x53C JUMP JUMPDEST POP POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x431 JUMPI PUSH3 0x431 PUSH3 0xCA3 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x45B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x533 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH3 0x4A6 DUP3 DUP7 PUSH3 0xBEE JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH3 0x4B9 JUMPI PUSH3 0x4B9 PUSH3 0xC74 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x4F9 JUMPI PUSH3 0x4F9 PUSH3 0xC74 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x52A DUP2 PUSH3 0xC09 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x461 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH3 0x5AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x3781A5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH3 0x898 JUMPI DUP3 DUP2 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH3 0x61E JUMPI PUSH3 0x61E PUSH3 0xC74 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x651 JUMPI PUSH3 0x651 PUSH3 0xC74 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH3 0x6A7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3F06BF8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH3 0x88E JUMPI PUSH1 0x0 DUP1 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x6CE JUMPI PUSH3 0x6CE PUSH3 0xC74 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x727 JUMPI PUSH3 0x727 PUSH3 0xC74 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP3 MSTORE SWAP2 DUP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP5 MLOAD DUP2 SWAP1 DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH3 0x7B6 JUMPI PUSH3 0x7B6 PUSH3 0xC74 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x80F JUMPI PUSH3 0x80F PUSH3 0xC74 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE SWAP2 DUP4 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE ADD PUSH3 0x6AC JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH3 0x5F9 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x50C3 DUP1 PUSH3 0xCF9 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH3 0x8C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x8DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 MLOAD PUSH3 0x8EB DUP2 PUSH3 0xCD2 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD SWAP1 SWAP6 POP PUSH3 0x8FE DUP2 PUSH3 0xCD2 JUMP JUMPDEST SWAP4 POP PUSH3 0x90E PUSH1 0x40 DUP8 ADD PUSH3 0x8AC JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD MLOAD PUSH3 0x920 DUP2 PUSH3 0xCD2 JUMP JUMPDEST SWAP2 POP PUSH3 0x930 PUSH1 0x80 DUP8 ADD PUSH3 0x8AC JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x950 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH3 0x95D DUP2 PUSH3 0xCD2 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH3 0x96F DUP2 PUSH3 0xCD2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x990 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH3 0x99D DUP2 PUSH3 0xCD2 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH3 0x9AF DUP2 PUSH3 0xCD2 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x9D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH3 0x9E4 DUP2 PUSH3 0xCD2 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH3 0x9F6 DUP2 PUSH3 0xCD2 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0xA51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA7B JUMPI PUSH3 0xA7B PUSH3 0xCA3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xAC4 JUMPI PUSH3 0xAC4 PUSH3 0xCA3 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xADE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xB4E JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0xB1A JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xB8A JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH3 0xB6B JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0xB9D JUMPI PUSH1 0x0 PUSH1 0x60 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD PUSH1 0x60 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0xC04 JUMPI PUSH3 0xC04 PUSH3 0xC45 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH3 0xC3E JUMPI PUSH3 0xC3E PUSH3 0xC45 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0xCF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH2 0x180 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x50C3 CODESIZE SUB DUP1 PUSH3 0x50C3 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x704 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x53 SWAP2 SWAP1 PUSH3 0x68D JUMP JUMPDEST SWAP4 SWAP9 POP SWAP2 SWAP7 POP SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH3 0x87 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND ADDRESS EQ ISZERO PUSH3 0xB2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xC1AB6DC1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADDRESS EQ ISZERO PUSH3 0xDD JUMPI PUSH1 0x40 MLOAD PUSH4 0xC1AB6DC1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x186A0 PUSH3 0xFFFFFF DUP5 AND GT ISZERO PUSH3 0x107 JUMPI PUSH1 0x40 MLOAD PUSH4 0xDA7459B7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP7 DUP2 SHL DUP3 AND PUSH2 0x140 MSTORE DUP6 SWAP1 SHL AND PUSH2 0x160 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xE8 SHL SUB NOT PUSH1 0xE8 DUP5 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE PUSH1 0x7 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE DUP3 SWAP1 SHL AND PUSH1 0x80 MSTORE PUSH1 0x40 MLOAD PUSH4 0x6E23D2E1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH3 0xFFFFFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0x0 SWAP1 PUSH4 0xDC47A5C2 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH3 0x1BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1E5 SWAP2 SWAP1 PUSH3 0x7F5 JUMP JUMPDEST PUSH1 0x80 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0xC0 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 ADD SWAP1 MSTORE PUSH3 0xD89E7 NOT DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 PUSH3 0x218 SWAP1 PUSH3 0x83A JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP6 ADD DUP4 SWAP1 MSTORE PUSH1 0x60 DUP1 DUP7 ADD DUP5 SWAP1 MSTORE PUSH1 0x80 SWAP6 DUP7 ADD DUP5 SWAP1 MSTORE PUSH3 0xD89E7 NOT SWAP4 DUP5 SWAP1 MSTORE PUSH1 0x9 DUP4 MSTORE DUP7 MLOAD PUSH32 0xCAFB9BD5A090B85CDC01F1FE9E79CCE261755DC1BFDD255E0D8DF8829987EBAC DUP1 SLOAD DUP10 DUP7 ADD MLOAD DUP11 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH7 0x1000000000000 MUL PUSH1 0x1 PUSH1 0x30 SHL PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT SWAP2 DUP11 SIGNEXTEND PUSH3 0xFFFFFF SWAP1 DUP2 AND PUSH4 0x1000000 MUL PUSH6 0xFFFFFFFFFFFF NOT SWAP1 SWAP5 AND SWAP6 SWAP1 SWAP11 SIGNEXTEND SWAP1 SWAP10 AND SWAP4 SWAP1 SWAP4 OR OR SWAP2 SWAP1 SWAP2 AND SWAP6 SWAP1 SWAP6 OR SWAP1 SWAP5 SSTORE SWAP3 DUP6 ADD MLOAD PUSH32 0xCAFB9BD5A090B85CDC01F1FE9E79CCE261755DC1BFDD255E0D8DF8829987EBAD SSTORE SWAP3 DUP5 ADD MLOAD PUSH32 0xCAFB9BD5A090B85CDC01F1FE9E79CCE261755DC1BFDD255E0D8DF8829987EBAE SSTORE PUSH1 0xA0 SWAP1 SWAP4 ADD MLOAD PUSH32 0xCAFB9BD5A090B85CDC01F1FE9E79CCE261755DC1BFDD255E0D8DF8829987EBAF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 MLOAD PUSH1 0xC0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP3 DUP2 MSTORE SWAP2 SWAP1 DUP3 ADD SWAP1 PUSH3 0x37A SWAP1 PUSH3 0x83A JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP PUSH1 0x9 PUSH1 0x0 PUSH3 0xD89E7 NOT PUSH3 0x3C2 SWAP1 PUSH3 0x83A JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 KECCAK256 DUP5 MLOAD DUP2 SLOAD DUP7 DUP7 ADD MLOAD DUP8 DUP7 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH7 0x1000000000000 MUL PUSH1 0x1 PUSH1 0x30 SHL PUSH1 0x1 PUSH1 0xB0 SHL SUB NOT SWAP2 DUP7 SIGNEXTEND PUSH3 0xFFFFFF SWAP1 DUP2 AND PUSH4 0x1000000 MUL PUSH6 0xFFFFFFFFFFFF NOT SWAP1 SWAP5 AND SWAP5 DUP8 SIGNEXTEND AND SWAP4 SWAP1 SWAP4 OR SWAP2 SWAP1 SWAP2 OR AND OR DUP2 SSTORE PUSH1 0x60 DUP6 ADD MLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x80 DUP6 ADD MLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0xA0 SWAP1 SWAP4 ADD MLOAD PUSH1 0x3 SWAP1 SWAP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH1 0x7 DUP1 SLOAD PUSH3 0x1E4EC3 PUSH1 0xA3 SHL PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE DUP1 MLOAD PUSH4 0x4DA31827 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP3 DUP10 AND SWAP3 PUSH4 0x4DA31827 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x4D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x4F8 SWAP2 SWAP1 PUSH3 0x666 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x100 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC0A0CD2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x54F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x564 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x58A SWAP2 SWAP1 PUSH3 0x666 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xE0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x5E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x5F5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x61B SWAP2 SWAP1 PUSH3 0x820 JUMP JUMPDEST PUSH1 0x4 SSTORE POP POP POP POP POP PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH2 0x120 MSTORE POP PUSH1 0x1 PUSH1 0x8 SSTORE PUSH3 0x89B JUMP JUMPDEST DUP1 MLOAD PUSH3 0x64D DUP2 PUSH3 0x882 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH3 0x64D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x679 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x686 DUP2 PUSH3 0x882 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH3 0x6A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 MLOAD PUSH3 0x6B3 DUP2 PUSH3 0x882 JUMP JUMPDEST PUSH1 0x20 DUP8 ADD MLOAD SWAP1 SWAP6 POP PUSH3 0x6C6 DUP2 PUSH3 0x882 JUMP JUMPDEST SWAP4 POP PUSH3 0x6D6 PUSH1 0x40 DUP8 ADD PUSH3 0x652 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD MLOAD PUSH3 0x6E8 DUP2 PUSH3 0x882 JUMP JUMPDEST SWAP2 POP PUSH3 0x6F8 PUSH1 0x80 DUP8 ADD PUSH3 0x652 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x718 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x730 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x75A JUMPI PUSH3 0x75A PUSH3 0x86C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x785 JUMPI PUSH3 0x785 PUSH3 0x86C JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE PUSH1 0x20 SWAP4 POP DUP9 DUP5 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x7A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP3 DUP3 LT ISZERO PUSH3 0x7C6 JUMPI DUP5 DUP3 ADD DUP5 ADD MLOAD DUP2 DUP4 ADD DUP6 ADD MSTORE SWAP1 DUP4 ADD SWAP1 PUSH3 0x7A7 JUMP JUMPDEST DUP3 DUP3 GT ISZERO PUSH3 0x7D8 JUMPI PUSH1 0x0 DUP5 DUP5 DUP4 ADD ADD MSTORE JUMPDEST SWAP6 POP PUSH3 0x7EA SWAP2 POP POP DUP6 DUP3 ADD PUSH3 0x640 JUMP JUMPDEST SWAP3 POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x808 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x686 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x833 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND PUSH3 0x7FFFFF NOT DUP2 EQ ISZERO PUSH3 0x863 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xE8 SHR PUSH1 0xA0 MLOAD PUSH1 0xE8 SHR PUSH1 0xC0 MLOAD PUSH1 0x80 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x160 MLOAD PUSH1 0x60 SHR PUSH2 0x4676 PUSH3 0xA4D PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x59C ADD MSTORE DUP2 DUP2 PUSH2 0xE5E ADD MSTORE DUP2 DUP2 PUSH2 0xE87 ADD MSTORE DUP2 DUP2 PUSH2 0xFB6 ADD MSTORE DUP2 DUP2 PUSH2 0x12BA ADD MSTORE DUP2 DUP2 PUSH2 0x13CB ADD MSTORE DUP2 DUP2 PUSH2 0x16B6 ADD MSTORE DUP2 DUP2 PUSH2 0x193D ADD MSTORE DUP2 DUP2 PUSH2 0x1C8C ADD MSTORE DUP2 DUP2 PUSH2 0x1E86 ADD MSTORE DUP2 DUP2 PUSH2 0x2518 ADD MSTORE DUP2 DUP2 PUSH2 0x312B ADD MSTORE DUP2 DUP2 PUSH2 0x381D ADD MSTORE PUSH2 0x39A1 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x574 ADD MSTORE DUP2 DUP2 PUSH2 0xEBE ADD MSTORE DUP2 DUP2 PUSH2 0xF56 ADD MSTORE DUP2 DUP2 PUSH2 0xF7F ADD MSTORE DUP2 DUP2 PUSH2 0x1251 ADD MSTORE DUP2 DUP2 PUSH2 0x1362 ADD MSTORE DUP2 DUP2 PUSH2 0x1648 ADD MSTORE DUP2 DUP2 PUSH2 0x18C1 ADD MSTORE DUP2 DUP2 PUSH2 0x1C05 ADD MSTORE DUP2 DUP2 PUSH2 0x1DB0 ADD MSTORE DUP2 DUP2 PUSH2 0x23D1 ADD MSTORE DUP2 DUP2 PUSH2 0x2FE8 ADD MSTORE DUP2 DUP2 PUSH2 0x371F ADD MSTORE PUSH2 0x38CD ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x54C ADD MSTORE PUSH2 0x2103 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x524 ADD MSTORE DUP2 DUP2 PUSH2 0x3331 ADD MSTORE DUP2 DUP2 PUSH2 0x340E ADD MSTORE DUP2 DUP2 PUSH2 0x3763 ADD MSTORE DUP2 DUP2 PUSH2 0x3861 ADD MSTORE DUP2 DUP2 PUSH2 0x390A ADD MSTORE DUP2 DUP2 PUSH2 0x39DE ADD MSTORE PUSH2 0x3C08 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x4FC ADD MSTORE DUP2 DUP2 PUSH2 0x2405 ADD MSTORE PUSH2 0x254C ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x46E ADD MSTORE PUSH2 0x3664 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x4BE ADD MSTORE PUSH2 0xBAA ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x496 ADD MSTORE DUP2 DUP2 PUSH2 0xC40 ADD MSTORE DUP2 DUP2 PUSH2 0xCCE ADD MSTORE DUP2 DUP2 PUSH2 0x3A14 ADD MSTORE DUP2 DUP2 PUSH2 0x3A7A ADD MSTORE DUP2 DUP2 PUSH2 0x3AE8 ADD MSTORE PUSH2 0x3B4E ADD MSTORE PUSH2 0x4676 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1A3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9DA12096 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0xBCDB4DAD GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xCF78756B GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xCF78756B EQ PUSH2 0x5DB JUMPI DUP1 PUSH4 0xF30DBA93 EQ PUSH2 0x5E4 JUMPI DUP1 PUSH4 0xFB39D628 EQ PUSH2 0x6BB JUMPI DUP1 PUSH4 0xFB5D80B3 EQ PUSH2 0x6CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBCDB4DAD EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x5CA JUMPI DUP1 PUSH4 0xCAA4B46A EQ PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xAACA1B4D GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0xAACA1B4D EQ PUSH2 0x3AE JUMPI DUP1 PUSH4 0xACFE88F8 EQ PUSH2 0x42F JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x9DA12096 EQ PUSH2 0x37E JUMPI DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x387 JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x1A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6289DB82 GT PUSH2 0x150 JUMPI DUP1 PUSH4 0x7BA0E2E7 GT PUSH2 0x12A JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x316 JUMPI DUP1 PUSH4 0x8C347F9B EQ PUSH2 0x329 JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x374 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6289DB82 EQ PUSH2 0x295 JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x2B7 JUMPI DUP1 PUSH4 0x6D59D802 EQ PUSH2 0x2CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x181 JUMPI DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x627DD56A EQ PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x1A8 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x1CE JUMPI DUP1 PUSH4 0x1A686502 EQ PUSH2 0x225 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1BB PUSH2 0x1B6 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D50 JUMP JUMPDEST PUSH2 0x700 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x241 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x275 PUSH2 0x270 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D50 JUMP JUMPDEST PUSH2 0x707 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C5 SWAP2 SWAP1 PUSH2 0x4195 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x290 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DC2 JUMP JUMPDEST PUSH2 0x70E JUMP JUMPDEST PUSH2 0x2A8 PUSH2 0x2A3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F55 JUMP JUMPDEST PUSH2 0x1056 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x41A8 JUMP JUMPDEST PUSH2 0x2BF PUSH2 0x1626 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1C5 SWAP2 SWAP1 PUSH2 0x413B JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV PUSH4 0xFFFFFFFF AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x1BB PUSH2 0x324 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D50 JUMP JUMPDEST PUSH2 0x1725 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x37C PUSH2 0x2101 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1BB PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1BB PUSH32 0x54726964656E743A436F6E63656E7472617465644C6971756964697479000000 DUP2 JUMP JUMPDEST PUSH2 0x401 PUSH2 0x3BC CALLDATASIZE PUSH1 0x4 PUSH2 0x3CB0 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 SWAP1 DUP4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x442 PUSH2 0x43D CALLDATASIZE PUSH1 0x4 PUSH2 0x3ECB JUMP JUMPDEST PUSH2 0x21A4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP2 MSTORE PUSH3 0xFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH32 0x0 AND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH32 0x0 DUP2 AND PUSH1 0xC0 DUP4 ADD MSTORE PUSH32 0x0 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x1BB PUSH1 0x4 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x1FC PUSH2 0x22BD JUMP JUMPDEST PUSH2 0x1BB PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x65A PUSH2 0x5F2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3E91 JUMP JUMPDEST PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP1 DUP5 ADD SLOAD PUSH1 0x3 SWAP1 SWAP5 ADD SLOAD DUP4 DUP3 SIGNEXTEND SWAP5 PUSH4 0x1000000 DUP6 DIV SWAP1 SWAP3 SIGNEXTEND SWAP4 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP8 DUP9 SIGNEXTEND DUP2 MSTORE SWAP6 SWAP1 SWAP7 SIGNEXTEND PUSH1 0x20 DUP7 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x80 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x442 PUSH2 0x6C9 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F04 JUMP JUMPDEST PUSH2 0x257B JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND PUSH2 0x1FC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x74D JUMPI PUSH1 0x40 MLOAD PUSH32 0xF2E5B6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 DUP2 SWAP1 SSTORE POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP6 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x76F SWAP2 SWAP1 PUSH2 0x3CFB JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH2 0x120 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH2 0x7A7 JUMPI PUSH1 0x2 SLOAD PUSH2 0x7AB JUMP JUMPDEST PUSH1 0x3 SLOAD JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH2 0x7BD JUMPI PUSH1 0x3 SLOAD PUSH2 0x7C1 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST DUP2 MSTORE PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 ADD DUP7 PUSH2 0x84B JUMPI PUSH1 0x7 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH4 0x1000000 SWAP1 DIV SWAP1 SIGNEXTEND PUSH2 0x86A JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0x2 SIGNEXTEND JUMPDEST PUSH1 0x2 SIGNEXTEND SWAP1 MSTORE PUSH1 0x1 SLOAD SWAP1 SWAP2 POP TIMESTAMP SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 DUP3 SUB SWAP1 DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0x8BB JUMPI POP PUSH1 0x0 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x97C JUMPI PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF DUP6 AND MUL OR SWAP1 SSTORE PUSH1 0x0 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP3 SWAP1 SHL DUP2 PUSH2 0x92E JUMPI PUSH2 0x92E PUSH2 0x4571 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 DUP2 AND SWAP4 SWAP1 SWAP3 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND ADD SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST POP POP JUMPDEST PUSH1 0xE0 DUP2 ADD MLOAD ISZERO PUSH2 0xD0D JUMPI PUSH1 0x0 PUSH2 0x999 DUP3 PUSH2 0x100 ADD MLOAD PUSH2 0x2708 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP1 DUP8 ISZERO PUSH2 0xAE6 JUMPI PUSH1 0x0 PUSH2 0x9D1 DUP6 PUSH1 0xC0 ADD MLOAD DUP6 DUP8 PUSH1 0xA0 ADD MLOAD PUSH1 0x0 PUSH2 0x2A9B JUMP JUMPDEST SWAP1 POP DUP1 DUP6 PUSH1 0xE0 ADD MLOAD GT PUSH2 0xAA6 JUMPI PUSH1 0x0 PUSH1 0x60 DUP7 PUSH1 0xC0 ADD MLOAD SWAP1 SHL SWAP1 POP PUSH1 0x0 PUSH2 0xA19 DUP3 DUP9 PUSH1 0xA0 ADD MLOAD DUP10 PUSH1 0xE0 ADD MLOAD DUP11 PUSH1 0xA0 ADD MLOAD PUSH2 0xA0A SWAP2 SWAP1 PUSH2 0x43C0 JUMP JUMPDEST PUSH2 0xA14 SWAP1 DUP7 PUSH2 0x4320 JUMP JUMPDEST PUSH2 0x2AF5 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 GT ISZERO DUP1 ISZERO PUSH2 0xA2E JUMPI POP DUP7 PUSH1 0xA0 ADD MLOAD DUP2 LT JUMPDEST PUSH2 0xA79 JUMPI PUSH2 0xA60 DUP3 DUP9 PUSH1 0xE0 ADD MLOAD DUP10 PUSH1 0xA0 ADD MLOAD DUP6 PUSH2 0xA4B SWAP2 SWAP1 PUSH2 0x43AC JUMP JUMPDEST PUSH2 0xA55 SWAP2 SWAP1 PUSH2 0x4320 JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP JUMPDEST PUSH2 0xA8E DUP8 PUSH1 0xC0 ADD MLOAD DUP3 DUP10 PUSH1 0xA0 ADD MLOAD PUSH1 0x0 PUSH2 0x2B51 JUMP JUMPDEST PUSH1 0xA0 DUP9 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 PUSH1 0xE0 DUP9 ADD MSTORE SWAP4 POP PUSH2 0xAE0 SWAP1 POP JUMP JUMPDEST PUSH2 0xABB DUP6 PUSH1 0xC0 ADD MLOAD DUP6 DUP8 PUSH1 0xA0 ADD MLOAD PUSH1 0x0 PUSH2 0x2B51 JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD DUP6 SWAP1 MSTORE PUSH1 0xE0 DUP7 ADD DUP1 MLOAD SWAP2 SWAP5 POP PUSH1 0x1 SWAP4 POP DUP3 SWAP2 PUSH2 0xADC SWAP1 DUP4 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP1 MSTORE POP JUMPDEST POP PUSH2 0xBA4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAFD DUP6 PUSH1 0xC0 ADD MLOAD DUP7 PUSH1 0xA0 ADD MLOAD DUP7 PUSH1 0x0 PUSH2 0x2B51 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 PUSH1 0xE0 ADD MLOAD GT PUSH2 0xB68 JUMPI PUSH1 0x0 PUSH2 0xB2C DUP7 PUSH1 0xE0 ADD MLOAD PUSH13 0x1000000000000000000000000 DUP9 PUSH1 0xC0 ADD MLOAD PUSH2 0x2B96 JUMP JUMPDEST DUP7 PUSH1 0xA0 ADD MLOAD PUSH2 0xB3B SWAP2 SWAP1 PUSH2 0x4320 JUMP JUMPDEST SWAP1 POP PUSH2 0xB52 DUP7 PUSH1 0xC0 ADD MLOAD DUP8 PUSH1 0xA0 ADD MLOAD DUP4 PUSH1 0x0 PUSH2 0x2A9B JUMP JUMPDEST PUSH1 0xA0 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x0 PUSH1 0xE0 DUP8 ADD MSTORE SWAP3 POP PUSH2 0xBA2 JUMP JUMPDEST PUSH2 0xB7D DUP6 PUSH1 0xC0 ADD MLOAD DUP7 PUSH1 0xA0 ADD MLOAD DUP7 PUSH1 0x0 PUSH2 0x2A9B JUMP JUMPDEST PUSH1 0xA0 DUP7 ADD DUP6 SWAP1 MSTORE PUSH1 0xE0 DUP7 ADD DUP1 MLOAD SWAP2 SWAP5 POP PUSH1 0x1 SWAP4 POP DUP3 SWAP2 PUSH2 0xB9E SWAP1 DUP4 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP1 MSTORE POP JUMPDEST POP JUMPDEST PUSH2 0xBE6 DUP3 PUSH32 0x0 PUSH1 0x4 SLOAD DUP8 PUSH1 0xC0 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP15 DUP11 PUSH1 0x40 ADD MLOAD DUP12 PUSH1 0x60 ADD MLOAD PUSH2 0x2C67 JUMP JUMPDEST PUSH1 0x60 DUP9 ADD MSTORE PUSH1 0x40 DUP8 ADD MSTORE PUSH1 0x20 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP9 POP DUP1 ISZERO PUSH2 0xD05 JUMPI PUSH2 0xC64 PUSH1 0x9 DUP6 PUSH2 0x100 ADD MLOAD PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH1 0xC0 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD DUP15 PUSH32 0x0 PUSH2 0x2D0C JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH2 0x100 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD DUP2 SWAP1 MSTORE PUSH2 0xD05 JUMPI PUSH2 0xC8A DUP5 PUSH2 0x100 ADD MLOAD PUSH2 0x2708 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0xA0 DUP7 ADD MSTORE PUSH2 0x100 DUP6 ADD MLOAD PUSH1 0x1 SLOAD PUSH1 0xC0 DUP8 ADD MLOAD PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x80 DUP10 ADD MLOAD PUSH2 0xCF2 SWAP6 PUSH1 0x9 SWAP6 SWAP5 AND SWAP3 SWAP2 SWAP1 DUP15 PUSH32 0x0 PUSH2 0x2D0C JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH2 0x100 DUP7 ADD MSTORE PUSH1 0xC0 DUP6 ADD MSTORE JUMPDEST POP POP POP PUSH2 0x97F JUMP JUMPDEST PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x0 DUP6 PUSH2 0xD80 JUMPI PUSH2 0x100 DUP3 ADD MLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SIGNEXTEND PUSH2 0xD87 JUMP JUMPDEST DUP2 PUSH2 0x100 ADD MLOAD JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 SIGNEXTEND PUSH1 0x7 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x2 SIGNEXTEND PUSH1 0x2 SIGNEXTEND EQ PUSH2 0xE35 JUMPI PUSH1 0x7 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 PUSH3 0xFFFFFF PUSH1 0x2 DUP6 SWAP1 SIGNEXTEND AND MUL OR SWAP1 SSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH2 0xE40 DUP7 DUP7 DUP10 PUSH2 0x2FDB JUMP JUMPDEST PUSH2 0xE53 DUP7 DUP4 PUSH1 0x60 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD PUSH2 0x321D JUMP JUMPDEST DUP6 ISZERO PUSH2 0xF51 JUMPI PUSH2 0xE85 PUSH32 0x0 DUP9 DUP7 DUP7 PUSH2 0x32CA JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP9 DUP12 PUSH1 0x40 MLOAD PUSH2 0xF44 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x1045 JUMP JUMPDEST PUSH2 0xF7D PUSH32 0x0 DUP9 DUP7 DUP7 PUSH2 0x32CA JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP9 DUP12 PUSH1 0x40 MLOAD PUSH2 0x103C SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP3 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1068 DUP12 PUSH2 0x2708 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1075 DUP12 PUSH2 0x2708 JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP4 AND DUP2 GT DUP1 ISZERO PUSH2 0x10CF JUMPI POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT JUMPDEST ISZERO PUSH2 0x1118 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP15 SWAP1 SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x117A DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP15 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH2 0x3472 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP7 POP DUP2 AND SWAP5 POP PUSH16 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP13 AND GT ISZERO SWAP3 POP PUSH2 0x11E5 SWAP2 POP POP JUMPI PUSH1 0x40 MLOAD PUSH32 0x35278D1200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x11FC CALLER DUP14 DUP14 PUSH2 0x11F7 DUP15 PUSH2 0x4494 JUMP JUMPDEST PUSH2 0x34D0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP9 POP SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x121B JUMPI SWAP1 POP POP SWAP7 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE POP DUP8 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x12A2 JUMPI PUSH2 0x12A2 PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE POP DUP8 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x130B JUMPI PUSH2 0x130B PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x132C JUMPI SWAP1 POP POP SWAP6 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP7 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x13B3 JUMPI PUSH2 0x13B3 PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP7 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x141C JUMPI PUSH2 0x141C PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x6 DUP1 SLOAD SWAP4 SWAP1 SWAP2 ADD PUSH17 0x100000000000000000000000000000000 SWAP5 SWAP1 SWAP3 ADD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND DUP3 SWAP1 SUB DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP6 AND DUP6 OR DUP7 SWAP1 DIV DUP2 AND DUP5 SWAP1 SUB AND SWAP1 SWAP5 MUL SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x14A2 DUP8 DUP4 DUP4 DUP10 PUSH2 0x36DC JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 MLOAD PUSH32 0x3C5474DF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x9 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 DUP13 DUP2 SIGNEXTEND PUSH1 0x24 DUP4 ADD MSTORE DUP12 DUP2 SIGNEXTEND PUSH1 0x44 DUP4 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND PUSH1 0x84 DUP3 ADD MSTORE PUSH20 0x0 SWAP1 PUSH4 0x3C5474DF SWAP1 PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1556 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x156A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x158E SWAP2 SWAP1 PUSH2 0x3EAE JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND PUSH3 0xFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE CALLER SWAP2 PUSH32 0x49995E5DD6158CF69AD3E9777C46755A1A826A446C6416992167462DAD033B2A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP SWAP6 POP SWAP6 POP SWAP6 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x167A JUMPI PUSH2 0x167A PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x16E8 JUMPI PUSH2 0x16E8 PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x1764 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF2E5B6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 PUSH2 0x1777 DUP4 DUP6 ADD DUP6 PUSH2 0x3FDB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1788 DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x2708 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH2 0x17AF DUP4 PUSH1 0x60 ADD MLOAD PUSH2 0x2708 JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0x80 DUP7 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0xAEC6CBFE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE SWAP5 SWAP1 SWAP4 AND PUSH1 0x44 DUP5 ADD DUP2 SWAP1 MSTORE PUSH1 0x64 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x84 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH20 0x0 SWAP1 PUSH4 0xAEC6CBFE SWAP1 PUSH1 0xA4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x185A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x186E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1892 SWAP2 SWAP1 PUSH2 0x40A2 JUMP JUMPDEST SWAP5 POP PUSH1 0x0 DUP1 PUSH2 0x18B0 DUP7 PUSH2 0x100 ADD MLOAD DUP8 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD DUP11 PUSH2 0x34D0 JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO PUSH2 0x1932 JUMPI PUSH2 0x18EE PUSH32 0x0 DUP4 DUP9 PUSH2 0x100 ADD MLOAD PUSH1 0x0 PUSH2 0x32CA JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP6 SWAP1 SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST DUP1 ISZERO PUSH2 0x19A2 JUMPI PUSH2 0x196A PUSH32 0x0 DUP3 DUP9 PUSH2 0x100 ADD MLOAD PUSH1 0x0 PUSH2 0x32CA JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND DUP6 SWAP1 SUB DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST POP POP DUP1 DUP4 LT DUP1 ISZERO PUSH2 0x19B2 JUMPI POP DUP2 DUP2 LT JUMPDEST ISZERO PUSH2 0x19FA JUMPI PUSH1 0x0 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP9 ADD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x1A0C DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD PUSH2 0x3A0F JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH1 0x3 SLOAD PUSH1 0x1 SLOAD DUP8 MLOAD PUSH1 0x20 DUP10 ADD MLOAD PUSH1 0x40 DUP1 DUP12 ADD MLOAD PUSH1 0x60 DUP13 ADD MLOAD PUSH1 0x7 SLOAD SWAP3 MLOAD PUSH32 0x3344008400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x9 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x44 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x64 DUP9 ADD MSTORE SWAP3 DUP8 SIGNEXTEND PUSH1 0x84 DUP8 ADD MSTORE SWAP1 DUP7 SIGNEXTEND PUSH1 0xA4 DUP7 ADD MSTORE SWAP1 DUP6 SIGNEXTEND PUSH1 0xC4 DUP6 ADD MSTORE SWAP2 DUP5 SIGNEXTEND PUSH1 0xE4 DUP5 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH2 0x104 DUP5 ADD MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP2 DIV DUP4 SIGNEXTEND SWAP1 SWAP3 SIGNEXTEND PUSH2 0x124 DUP3 ADD MSTORE SWAP1 DUP3 AND PUSH2 0x144 DUP3 ADD MSTORE PUSH20 0x0 SWAP1 PUSH4 0x33440084 SWAP1 PUSH2 0x164 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B22 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1B36 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B5A SWAP2 SWAP1 PUSH2 0x3EAE JUMP JUMPDEST PUSH1 0x7 PUSH1 0x14 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH3 0xFFFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x2 SIGNEXTEND PUSH3 0xFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP1 PUSH2 0x1B8C DUP6 DUP6 DUP6 DUP11 PUSH1 0x1 PUSH2 0x3472 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP5 POP SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD DUP3 SWAP1 MSTORE SWAP3 DUP3 ADD MSTORE DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 ADD SWAP2 ADD DUP2 PUSH2 0x1BAB JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xC0 ADD MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1C74 JUMPI PUSH2 0x1C74 PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0xE0 ADD MLOAD ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1CFB JUMPI PUSH2 0x1CFB PUSH2 0x45A0 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xCED10B49 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1D33 SWAP2 SWAP1 PUSH2 0x41DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1D5E SWAP2 SWAP1 PUSH2 0x424F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D8C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 EQ PUSH2 0x1E69 JUMPI PUSH2 0x1DD4 PUSH32 0x0 PUSH2 0x3BBA JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP5 ADD AND GT ISZERO PUSH2 0x1E26 JUMPI PUSH1 0x40 MLOAD PUSH32 0x840463AA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP6 ADD AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x1F47 JUMPI PUSH2 0x1EAA PUSH32 0x0 PUSH2 0x3BBA JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 AND DUP4 ADD AND GT ISZERO PUSH2 0x1F10 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE430204200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH17 0x100000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND DUP6 ADD DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1F5C DUP9 PUSH1 0x20 ADD MLOAD DUP10 PUSH1 0x60 ADD MLOAD PUSH2 0x21A4 JUMP JUMPDEST PUSH2 0x120 DUP11 ADD MLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x2082 JUMPI PUSH2 0x100 DUP9 ADD MLOAD PUSH2 0x120 DUP10 ADD MLOAD PUSH1 0x20 DUP11 ADD MLOAD PUSH1 0x60 DUP12 ADD MLOAD PUSH2 0x140 DUP13 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x6D59EBE100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND PUSH1 0x24 DUP3 ADD MSTORE SWAP2 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x44 DUP3 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0xA4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 AND SWAP1 PUSH4 0x6D59EBE1 SWAP1 PUSH1 0xE4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2048 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x205C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2080 SWAP2 SWAP1 PUSH2 0x40A2 JUMP JUMPDEST POP JUMPDEST PUSH2 0x100 DUP9 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND DUP3 MSTORE DUP7 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC14AD802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x217B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x219F SWAP2 SWAP1 PUSH2 0x40A2 JUMP JUMPDEST PUSH1 0x4 SSTORE JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x2 DUP4 DUP2 SIGNEXTEND DUP1 DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x9 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP7 DUP6 SIGNEXTEND DUP6 SIGNEXTEND DUP4 MSTORE SWAP1 DUP3 KECCAK256 DUP5 SLOAD PUSH1 0x3 SLOAD SWAP4 SWAP7 DUP8 SWAP7 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 SIGNEXTEND SWAP6 SWAP4 SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 DUP8 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 DUP11 SWAP1 SIGNEXTEND SLT PUSH2 0x2218 JUMPI DUP8 PUSH1 0x1 ADD SLOAD SWAP4 POP DUP8 PUSH1 0x2 ADD SLOAD SWAP3 POP PUSH2 0x223C JUMP JUMPDEST PUSH1 0x1 DUP9 ADD SLOAD PUSH2 0x2227 SWAP1 DUP8 PUSH2 0x445B JUMP JUMPDEST SWAP4 POP DUP8 PUSH1 0x2 ADD SLOAD DUP6 PUSH2 0x2239 SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP3 POP JUMPDEST DUP12 PUSH1 0x2 SIGNEXTEND DUP10 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x225B JUMPI POP POP PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x2 DUP7 ADD SLOAD PUSH2 0x227F JUMP JUMPDEST PUSH1 0x1 DUP8 ADD SLOAD PUSH2 0x226A SWAP1 DUP8 PUSH2 0x445B JUMP JUMPDEST SWAP2 POP DUP7 PUSH1 0x2 ADD SLOAD DUP6 PUSH2 0x227C SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP1 POP JUMPDEST DUP2 PUSH2 0x228A DUP6 DUP9 PUSH2 0x445B JUMP JUMPDEST PUSH2 0x2294 SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP11 POP DUP1 PUSH2 0x22A1 DUP5 DUP8 PUSH2 0x445B JUMP JUMPDEST PUSH2 0x22AB SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST SWAP10 POP POP POP POP POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x8 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x22FD JUMPI PUSH1 0x40 MLOAD PUSH32 0xF2E5B6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x5 SLOAD PUSH1 0x1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND GT ISZERO PUSH2 0x242B JUMPI PUSH1 0x5 SLOAD PUSH2 0x2342 SWAP1 PUSH1 0x1 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP2 SWAP4 POP DUP4 SWAP2 PUSH1 0x0 SWAP1 PUSH2 0x2396 SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x242B PUSH32 0x0 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x32CA JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x2572 JUMPI PUSH1 0x5 SLOAD PUSH2 0x2492 SWAP1 PUSH1 0x1 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH17 0x100000000000000000000000000000000 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP4 SWAP5 POP DUP5 SWAP4 SWAP1 SWAP3 PUSH1 0x10 SWAP3 PUSH2 0x24DD SWAP3 DUP7 SWAP3 SWAP1 DIV AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2572 PUSH32 0x0 DUP3 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x0 PUSH1 0x0 PUSH2 0x32CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x8 SSTORE SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x8 SLOAD PUSH1 0x2 EQ ISZERO PUSH2 0x25BB JUMPI PUSH1 0x40 MLOAD PUSH32 0xF2E5B6C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH2 0x25CD CALLER DUP8 DUP8 PUSH1 0x0 PUSH2 0x34D0 JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x25DF DUP5 DUP4 DUP4 DUP7 PUSH2 0x36DC JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD DUP4 SWAP2 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x2606 SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP1 PUSH1 0x6 PUSH1 0x10 DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2669 SWAP2 SWAP1 PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A1C185B7B5DA020829D63D69222D8602AA53A6B7800A73EE6E3E15A625D863D DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x26F0 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x1 PUSH1 0x8 SSTORE SWAP1 SWAP6 SWAP1 SWAP5 POP SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x271F JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x272C JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x272C SWAP1 PUSH2 0x4509 JUMP JUMPDEST SWAP1 POP PUSH2 0x2757 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x44D3 JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 GT ISZERO PUSH2 0x2795 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF87DC40C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x27B6 JUMPI PUSH17 0x100000000000000000000000000000000 PUSH2 0x27C8 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x27FC JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x281B JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x283A JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x2859 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x2878 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x2897 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x28B6 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x28D6 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x28F6 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x2916 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x2936 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x2956 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x2976 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x2996 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x29B6 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x29D7 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x29F7 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x2A16 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x2A33 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x2A72 JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 PUSH2 0x2A6E JUMPI PUSH2 0x2A6E PUSH2 0x4571 JUMP JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x2A86 JUMPI PUSH1 0x1 PUSH2 0x2A89 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x2ACA JUMPI PUSH2 0x2AC3 PUSH2 0x2AB7 PUSH1 0x60 DUP8 SWAP1 SHL DUP7 DUP7 SUB DUP7 PUSH2 0x2AF5 JUMP JUMPDEST DUP6 DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x2AED JUMP JUMPDEST DUP4 PUSH2 0x2ADC PUSH1 0x60 DUP8 SWAP1 SHL DUP7 DUP7 SUB DUP7 PUSH2 0x2B96 JUMP JUMPDEST DUP2 PUSH2 0x2AE9 JUMPI PUSH2 0x2AE9 PUSH2 0x4571 JUMP JUMPDEST DIV SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B02 DUP5 DUP5 DUP5 PUSH2 0x2B96 JUMP JUMPDEST SWAP1 POP DUP2 DUP1 PUSH2 0x2B12 JUMPI PUSH2 0x2B12 PUSH2 0x4571 JUMP JUMPDEST DUP4 DUP6 MULMOD ISZERO PUSH2 0x2B4A JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT PUSH2 0x2B46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x2B73 JUMPI PUSH2 0x2AC3 DUP6 DUP6 DUP6 SUB PUSH13 0x1000000000000000000000000 PUSH2 0x2AF5 JUMP JUMPDEST PUSH2 0x2B8D DUP6 DUP6 DUP6 SUB PUSH13 0x1000000000000000000000000 PUSH2 0x2B96 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP8 MULMOD DUP6 DUP8 MUL SWAP3 POP DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH1 0x0 EQ ISZERO PUSH2 0x2BEE JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x2BE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x2B4A JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x2BFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2C82 DUP14 DUP14 PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x2AF5 JUMP JUMPDEST SWAP1 POP PUSH2 0x2C8E DUP2 DUP11 PUSH2 0x4320 JUMP JUMPDEST SWAP9 POP PUSH2 0x2C9A DUP2 DUP15 PUSH2 0x445B JUMP JUMPDEST PUSH2 0x2CA4 SWAP1 DUP10 PUSH2 0x4320 JUMP JUMPDEST SWAP8 POP PUSH1 0x0 PUSH2 0x2CB5 DUP3 DUP14 PUSH2 0x2710 PUSH2 0x2AF5 JUMP JUMPDEST SWAP1 POP PUSH2 0x2CC1 DUP2 DUP10 PUSH2 0x4320 JUMP JUMPDEST SWAP8 POP PUSH2 0x2CCD DUP2 DUP4 PUSH2 0x445B JUMP JUMPDEST SWAP2 POP PUSH2 0x2CEB DUP3 PUSH17 0x100000000000000000000000000000000 DUP14 PUSH2 0x2B96 JUMP JUMPDEST PUSH2 0x2CF5 SWAP1 DUP9 PUSH2 0x4320 JUMP JUMPDEST SWAP10 SWAP15 SWAP9 SWAP14 POP SWAP7 SWAP12 POP SWAP8 SWAP10 POP SWAP6 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP8 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP10 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x3 ADD SLOAD DUP2 SWAP1 PUSH2 0x2D47 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH2 0x442E JUMP JUMPDEST PUSH1 0x2 DUP11 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP4 ISZERO PUSH2 0x2EB9 JUMPI PUSH1 0x2 PUSH2 0x2DB4 DUP5 DUP12 PUSH2 0x4338 JUMP JUMPDEST PUSH2 0x2DBE SWAP2 SWAP1 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH2 0x2E08 JUMPI PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2E01 SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH2 0x445B JUMP JUMPDEST SWAP7 POP PUSH2 0x2E47 JUMP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2E44 SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH2 0x4320 JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH2 0x2E6A SWAP1 DUP7 PUSH2 0x445B JUMP JUMPDEST PUSH1 0x2 DUP11 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SWAP3 SWAP1 SWAP3 SSTORE ADD SLOAD PUSH2 0x2E93 SWAP1 DUP8 PUSH2 0x445B JUMP JUMPDEST PUSH1 0x2 SWAP10 DUP11 SIGNEXTEND DUP11 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 DUP12 ADD SWAP2 SWAP1 SWAP2 SSTORE SLOAD SWAP1 SWAP9 SIGNEXTEND SWAP8 PUSH2 0x2FCD JUMP JUMPDEST PUSH1 0x2 PUSH2 0x2EC5 DUP5 DUP12 PUSH2 0x4338 JUMP JUMPDEST PUSH2 0x2ECF SWAP2 SWAP1 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH2 0x2F19 JUMPI PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2F12 SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH2 0x4320 JUMP JUMPDEST SWAP7 POP PUSH2 0x2F58 JUMP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP12 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2F55 SWAP1 PUSH7 0x1000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH2 0x445B JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH1 0x2 DUP10 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 ADD SLOAD PUSH2 0x2F79 SWAP1 DUP7 PUSH2 0x445B JUMP JUMPDEST PUSH1 0x2 DUP11 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x1 ADD SLOAD PUSH2 0x2FA3 SWAP1 DUP8 PUSH2 0x445B JUMP JUMPDEST PUSH1 0x2 SWAP10 DUP11 SIGNEXTEND DUP11 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH4 0x1000000 SWAP1 DIV SWAP1 SWAP9 SIGNEXTEND SWAP8 JUMPDEST POP SWAP5 SWAP9 SWAP7 SWAP8 POP POP POP POP POP POP POP JUMP JUMPDEST DUP3 ISZERO PUSH2 0x3124 JUMPI PUSH1 0x0 PUSH2 0x300C PUSH32 0x0 PUSH2 0x3BBA JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x3032 SWAP1 DUP6 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x3080 JUMPI PUSH1 0x40 MLOAD PUSH32 0x840463AA00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP2 SWAP1 SWAP2 OR DUP1 DUP4 SSTORE DUP6 SWAP3 SWAP2 PUSH1 0x10 SWAP2 PUSH2 0x30E7 SWAP2 DUP6 SWAP2 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x314F PUSH32 0x0 PUSH2 0x3BBA JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x3189 SWAP1 DUP6 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST SWAP1 POP DUP2 DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x31D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xE430204200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH17 0x100000000000000000000000000000000 DUP5 DUP4 AND MUL DUP2 DUP2 OR DUP5 SSTORE DUP7 SWAP4 SWAP3 PUSH1 0x0 SWAP3 PUSH2 0x30E7 SWAP3 DUP7 SWAP3 AND OR PUSH2 0x43FD JUMP JUMPDEST DUP3 ISZERO PUSH2 0x329E JUMPI PUSH1 0x3 DUP3 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD DUP3 SWAP2 SWAP1 PUSH1 0x10 SWAP1 PUSH2 0x3263 SWAP1 DUP5 SWAP1 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SSTORE PUSH1 0x5 DUP1 SLOAD DUP3 SWAP2 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x3263 SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST DUP1 ISZERO PUSH2 0x33B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3375 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3389 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x33AD SWAP2 SWAP1 PUSH2 0x40BB JUMP JUMPDEST POP POP PUSH2 0x346C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP4 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3453 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3467 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 DUP7 GT PUSH2 0x348F JUMPI PUSH2 0x3488 DUP5 DUP9 DUP9 DUP7 PUSH2 0x2B51 JUMP JUMPDEST SWAP1 POP PUSH2 0x34C6 JUMP JUMPDEST DUP7 DUP6 GT PUSH2 0x34A9 JUMPI PUSH2 0x34A2 DUP5 DUP9 DUP9 DUP7 PUSH2 0x2A9B JUMP JUMPDEST SWAP2 POP PUSH2 0x34C6 JUMP JUMPDEST PUSH2 0x34B5 DUP5 DUP7 DUP9 DUP7 PUSH2 0x2A9B JUMP JUMPDEST SWAP2 POP PUSH2 0x34C3 DUP5 DUP9 DUP8 DUP7 PUSH2 0x2B51 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x2 DUP8 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP2 SWAP1 DUP2 SWAP1 DUP2 DUP1 PUSH2 0x3524 DUP10 DUP10 PUSH2 0x21A4 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3566 DUP4 PUSH1 0x1 ADD SLOAD DUP4 PUSH2 0x353B SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST DUP5 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH17 0x100000000000000000000000000000000 PUSH2 0x2B96 JUMP JUMPDEST SWAP6 POP PUSH2 0x357B DUP4 PUSH1 0x2 ADD SLOAD DUP3 PUSH2 0x353B SWAP2 SWAP1 PUSH2 0x445B JUMP JUMPDEST DUP4 SLOAD SWAP1 SWAP6 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP4 POP PUSH1 0x0 PUSH1 0xF DUP9 SWAP1 SIGNEXTEND SLT ISZERO PUSH2 0x3605 JUMPI PUSH2 0x35AA DUP8 PUSH2 0x4494 JUMP JUMPDEST DUP4 SLOAD DUP5 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x35CE SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x43FD JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x0 DUP8 PUSH1 0xF SIGNEXTEND SGT ISZERO PUSH2 0x36C1 JUMPI DUP3 SLOAD DUP8 SWAP1 DUP5 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x3637 SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x42EC JUMP JUMPDEST DUP3 SLOAD PUSH2 0x100 SWAP3 SWAP1 SWAP3 EXP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 MUL NOT SWAP1 SWAP4 AND SWAP2 DUP4 AND MUL OR SWAP1 SWAP2 SSTORE DUP5 SLOAD PUSH32 0x0 DUP3 AND SWAP2 AND GT ISZERO SWAP1 POP PUSH2 0x36C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB03425AE00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP4 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE SWAP2 SWAP7 SWAP1 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3890 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x37BA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x37DE SWAP2 SWAP1 PUSH2 0x40BB JUMP JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH2 0x335C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP6 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x394E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3962 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP7 SWAP1 MSTORE PUSH32 0x0 AND SWAP3 POP PUSH4 0xF18D03CC SWAP2 POP PUSH1 0x84 ADD PUSH2 0x3439 JUMP JUMPDEST PUSH2 0x3A39 PUSH32 0x0 DUP4 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x3A73 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCE8EF7FC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH2 0x3A9F PUSH32 0x0 DUP5 PUSH2 0x4338 JUMP JUMPDEST PUSH2 0x3AA9 SWAP2 SWAP1 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x3AE3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xFDF1420200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3B0D PUSH32 0x0 DUP3 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x3B47 JUMPI PUSH1 0x40 MLOAD PUSH32 0xCE8EF7FC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH2 0x3B73 PUSH32 0x0 DUP4 PUSH2 0x4338 JUMP JUMPDEST PUSH2 0x3B7D SWAP2 SWAP1 PUSH2 0x4472 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH2 0x3BB6 JUMPI PUSH1 0x40 MLOAD PUSH32 0xA9778C6300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 SWAP2 PUSH32 0x0 SWAP1 SWAP2 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3C60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3C84 SWAP2 SWAP1 PUSH2 0x40A2 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C95 DUP2 PUSH2 0x45FE JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C95 DUP2 PUSH2 0x4623 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x3C95 DUP2 PUSH2 0x4631 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3CC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3CD0 DUP2 PUSH2 0x45FE JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3CE0 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x3CF0 DUP2 PUSH2 0x4631 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3D11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 MLOAD PUSH2 0x3D1C DUP2 PUSH2 0x4623 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD PUSH1 0x40 DUP8 ADD MLOAD SWAP2 SWAP6 POP SWAP4 POP PUSH2 0x3D34 DUP2 PUSH2 0x45FE JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x3D45 DUP2 PUSH2 0x4623 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3D7B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3D8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3D9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3DB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3DD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3DEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3E12 JUMPI PUSH2 0x3E12 PUSH2 0x45CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3E58 JUMPI PUSH2 0x3E58 PUSH2 0x45CF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3E71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2B4A DUP2 PUSH2 0x4631 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2B4A DUP2 PUSH2 0x4631 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3EE9 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3EF9 DUP2 PUSH2 0x4631 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3F1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3F25 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3F35 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x3F45 DUP2 PUSH2 0x45FE JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x3D45 DUP2 PUSH2 0x4623 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3F6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3F78 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3F88 DUP2 PUSH2 0x4631 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3FAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x3FBD DUP2 PUSH2 0x45FE JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x3FCD DUP2 PUSH2 0x4623 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3FEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3FF6 PUSH2 0x42C2 JUMP JUMPDEST PUSH2 0x3FFF DUP4 PUSH2 0x3CA5 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x400D PUSH1 0x20 DUP5 ADD PUSH2 0x3CA5 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x401E PUSH1 0x40 DUP5 ADD PUSH2 0x3CA5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x402F PUSH1 0x60 DUP5 ADD PUSH2 0x3CA5 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x4054 PUSH1 0xC0 DUP5 ADD PUSH2 0x3C9A JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x4065 PUSH1 0xE0 DUP5 ADD PUSH2 0x3C9A JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 PUSH2 0x4078 DUP2 DUP6 ADD PUSH2 0x3C8A JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x120 PUSH2 0x408A DUP5 DUP3 ADD PUSH2 0x3C8A JUMP JUMPDEST SWAP1 DUP3 ADD MSTORE PUSH2 0x140 SWAP3 DUP4 ADD CALLDATALOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4130 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 MSTORE DUP4 ADD MLOAD DUP4 DUP9 ADD MSTORE PUSH1 0x40 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x40F3 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4189 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4157 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2B4A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x40DF JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x41BB PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x40DF JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x41CD DUP2 DUP7 PUSH2 0x40DF JUMP JUMPDEST SWAP2 POP POP DUP3 PUSH1 0x40 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4242 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 DUP2 ADD MLOAD ISZERO ISZERO DUP8 DUP7 ADD MSTORE DUP6 ADD MLOAD DUP6 DUP6 ADD MSTORE PUSH1 0x60 SWAP1 SWAP4 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x41FB JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x427C JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x4260 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x428E JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x160 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x42E6 JUMPI PUSH2 0x42E6 PUSH2 0x45CF JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x4317 JUMPI PUSH2 0x4317 PUSH2 0x4542 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x4333 JUMPI PUSH2 0x4333 PUSH2 0x4542 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND DUP4 PUSH1 0x2 SIGNEXTEND DUP1 PUSH2 0x434F JUMPI PUSH2 0x434F PUSH2 0x4571 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 EQ PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000 DUP4 EQ AND ISZERO PUSH2 0x43A3 JUMPI PUSH2 0x43A3 PUSH2 0x4542 JUMP JUMPDEST SWAP1 SDIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x43BB JUMPI PUSH2 0x43BB PUSH2 0x4571 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x43F8 JUMPI PUSH2 0x43F8 PUSH2 0x4542 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x4426 JUMPI PUSH2 0x4426 PUSH2 0x4542 JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x4426 JUMPI PUSH2 0x4426 PUSH2 0x4542 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x446D JUMPI PUSH2 0x446D PUSH2 0x4542 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x2 SIGNEXTEND DUP1 PUSH2 0x4485 JUMPI PUSH2 0x4485 PUSH2 0x4571 JUMP JUMPDEST DUP1 DUP4 PUSH1 0x2 SIGNEXTEND SMOD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xF SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000000000000000000000000000 DUP2 EQ ISZERO PUSH2 0x44CA JUMPI PUSH2 0x44CA PUSH2 0x4542 JUMP JUMPDEST PUSH1 0x0 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000 DUP2 EQ ISZERO PUSH2 0x44CA JUMPI PUSH2 0x44CA PUSH2 0x4542 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ ISZERO PUSH2 0x453B JUMPI PUSH2 0x453B PUSH2 0x4542 JUMP JUMPDEST POP PUSH1 0x0 SUB SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x4620 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x4620 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB5 DELEGATECALL 0xDD 0xCA PUSH14 0x99127E73FF19F59ECCAED3901AA2 0xBB SAR 0xB0 PUSH13 0xD142170AFC64577EB564736F6C PUSH4 0x43000807 STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB8 CALLCODE 0x21 0xB9 0xC2 MSTORE SLOAD 0x28 KECCAK256 KECCAK256 0xF7 PUSH8 0x12F35BA17CA7AA89 0x1E PUSH2 0xE7C6 0xCB SHR 0x4F 0xB4 0x1F POP DELEGATECALL DUP9 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "271:1064:47:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:62:44;;;;;;:::i;:::-;;:::i;:::-;;;3622:42:64;3610:55;;;3592:74;;3580:2;3565:18;250:62:44;;;;;;;;410:923:47;;;;;;:::i;:::-;;:::i;1535:143:44:-;;;;;;:::i;:::-;1643:13;;;;1610;1643;;;;;;;;;;;:21;;;;;;;;;;;:28;;1535:143;;;;5894:25:64;;;5882:2;5867:18;1535:143:44;5748:177:64;1684:345:44;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;204:39::-;;;;;318:48;;;;;;:::i;:::-;;;;;;;;;;;;;;;;250:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;250:62:44;;-1:-1:-1;;250:62:44:o;410:923:47:-;474:12;499:14;515;531;547:13;562:18;608:11;584:102;;;;;;;;;;;;:::i;:::-;498:188;;;;;;;;;;709:6;700:15;;:6;:15;;;696:81;;;751:6;;759;696:81;839:55;;;3942:42:64;4011:15;;;839:55:47;;;3993:34:64;4063:15;;;4043:18;;;4036:43;;;;4098:8;4142:15;;;4122:18;;;4115:43;4194:15;;;4174:18;;;4167:43;4247:15;;;4226:19;;;4219:44;3904:19;;839:55:47;;;;;;;;;;945:1;931:16;;;;;;;;;839:55;-1:-1:-1;905:23:47;;839:55;931:16;;;;;;;;;;;;-1:-1:-1;931:16:47;905:42;;969:6;957;964:1;957:9;;;;;;;;:::i;:::-;;;;;;:18;;;;;;;;;;;997:6;985;992:1;985:9;;;;;;;;:::i;:::-;:18;;;;:9;;;;;;;;;;:18;1148:22;;;;;;1195:87;;1148:22;;1158:11;;1266:14;;1195:87;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;1180:103;;1293:33;1307:4;1313:6;1321:4;1293:13;:33::i;:::-;488:845;;;;;;;410:923;;;:::o;1684:345:44:-;1830:26;1894:5;1880:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1880:20:44;;1868:32;;1915:9;1910:113;1934:5;1930:1;:9;1910:113;;;1975:13;;;;:5;:13;;;;;;;;;;;:21;;;;;;;;;1997:14;2010:1;1997:10;:14;:::i;:::-;1975:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1960:9;1970:1;1960:12;;;;;;;;:::i;:::-;:52;;;;:12;;;;;;;;;;;:52;1941:3;;;;:::i;:::-;;;;1910:113;;;;1684:345;;;;;;:::o;740:789::-;500:10;:28;514:14;500:28;;496:63;;537:22;;;;;;;;;;;;;;496:63;936:19:::1;::::0;;;:13:::1;:19;::::0;;;;:26;;;::::1;;::::0;::::1;;::::0;;1174:339:::1;1210:1;1194:6;:13;:17;1190:1;:21;1174:339;;;1253:6;1260:1;1264;1260:5;1253:13;;;;;;;;:::i;:::-;;;;;;;1240:26;;:6;1247:1;1240:9;;;;;;;;:::i;:::-;;;;;;;:26;;;1236:58;;1275:19;;;;;;;;;;;;;;1236:58;1333:1;1329:5:::0;::::1;1312:187;1340:6;:13;1336:1;:17;1312:187;;;1382:5;:16:::0;1388:6:::1;1395:1;1388:9;;;;;;;;:::i;:::-;;;;;;;1382:16;;;;;;;;;;;;;;;:27;1399:6;1406:1;1399:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;1382:27:::1;::::0;;::::1;::::0;;;;::::1;::::0;;;;;;;;-1:-1:-1;1382:27:44;;;:38;;::::1;::::0;::::1;::::0;;;;;;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;1448:9;;-1:-1:-1;;1448:9:44;;1455:1;;1448:9;::::1;;;;;:::i;:::-;;;;;;;1442:16;;;;;;;;;;;;;;;:27;1459:6;1466:1;1459:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;1442:27:::1;::::0;;::::1;::::0;;;;::::1;::::0;;;;;;;;-1:-1:-1;1442:27:44;;;:38;;::::1;::::0;;::::1;::::0;;;;;;;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;1355:3:::1;1312:187;;;-1:-1:-1::0;1213:3:44::1;;1174:339;;;;740:789:::0;;;:::o;-1:-1:-1:-;;;;;;;;:::o;14:165:64:-;92:13;;145:8;134:20;;124:31;;114:59;;169:1;166;159:12;114:59;14:165;;;:::o;184:703::-;304:6;312;320;328;336;389:3;377:9;368:7;364:23;360:33;357:53;;;406:1;403;396:12;357:53;438:9;432:16;457:31;482:5;457:31;:::i;:::-;557:2;542:18;;536:25;507:5;;-1:-1:-1;570:33:64;536:25;570:33;:::i;:::-;622:7;-1:-1:-1;648:48:64;692:2;677:18;;648:48;:::i;:::-;638:58;;741:2;730:9;726:18;720:25;754:33;779:7;754:33;:::i;:::-;806:7;-1:-1:-1;832:49:64;876:3;861:19;;832:49;:::i;:::-;822:59;;184:703;;;;;;;;:::o;892:388::-;960:6;968;1021:2;1009:9;1000:7;996:23;992:32;989:52;;;1037:1;1034;1027:12;989:52;1076:9;1063:23;1095:31;1120:5;1095:31;:::i;:::-;1145:5;-1:-1:-1;1202:2:64;1187:18;;1174:32;1215:33;1174:32;1215:33;:::i;:::-;1267:7;1257:17;;;892:388;;;;;:::o;1285:456::-;1362:6;1370;1378;1431:2;1419:9;1410:7;1406:23;1402:32;1399:52;;;1447:1;1444;1437:12;1399:52;1486:9;1473:23;1505:31;1530:5;1505:31;:::i;:::-;1555:5;-1:-1:-1;1612:2:64;1597:18;;1584:32;1625:33;1584:32;1625:33;:::i;:::-;1285:456;;1677:7;;-1:-1:-1;;;1731:2:64;1716:18;;;;1703:32;;1285:456::o;1746:525::-;1832:6;1840;1848;1856;1909:3;1897:9;1888:7;1884:23;1880:33;1877:53;;;1926:1;1923;1916:12;1877:53;1965:9;1952:23;1984:31;2009:5;1984:31;:::i;:::-;2034:5;-1:-1:-1;2091:2:64;2076:18;;2063:32;2104:33;2063:32;2104:33;:::i;:::-;1746:525;;2156:7;;-1:-1:-1;;;;2210:2:64;2195:18;;2182:32;;2261:2;2246:18;2233:32;;1746:525::o;2276:180::-;2335:6;2388:2;2376:9;2367:7;2363:23;2359:32;2356:52;;;2404:1;2401;2394:12;2356:52;-1:-1:-1;2427:23:64;;2276:180;-1:-1:-1;2276:180:64:o;2461:980::-;2529:6;2582:2;2570:9;2561:7;2557:23;2553:32;2550:52;;;2598:1;2595;2588:12;2550:52;2638:9;2625:23;2667:18;2708:2;2700:6;2697:14;2694:34;;;2724:1;2721;2714:12;2694:34;2762:6;2751:9;2747:22;2737:32;;2807:7;2800:4;2796:2;2792:13;2788:27;2778:55;;2829:1;2826;2819:12;2778:55;2865:2;2852:16;2887:2;2883;2880:10;2877:36;;;2893:18;;:::i;:::-;3027:2;3021:9;3089:4;3081:13;;2932:66;3077:22;;;3101:2;3073:31;3069:40;3057:53;;;3125:18;;;3145:22;;;3122:46;3119:72;;;3171:18;;:::i;:::-;3211:10;3207:2;3200:22;3246:2;3238:6;3231:18;3286:7;3281:2;3276;3272;3268:11;3264:20;3261:33;3258:53;;;3307:1;3304;3297:12;3258:53;3363:2;3358;3354;3350:11;3345:2;3337:6;3333:15;3320:46;3408:1;3386:15;;;3403:2;3382:24;3375:35;;;;-1:-1:-1;3390:6:64;2461:980;-1:-1:-1;;;;;2461:980:64:o;4274:681::-;4445:2;4497:21;;;4567:13;;4470:18;;;4589:22;;;4416:4;;4445:2;4668:15;;;;4642:2;4627:18;;;4416:4;4711:218;4725:6;4722:1;4719:13;4711:218;;;4790:13;;4805:42;4786:62;4774:75;;4904:15;;;;4869:12;;;;4747:1;4740:9;4711:218;;;-1:-1:-1;4946:3:64;;4274:681;-1:-1:-1;;;;;;4274:681:64:o;4960:783::-;5159:2;5148:9;5141:21;5122:4;5191:6;5185:13;5234:6;5229:2;5218:9;5214:18;5207:34;5259:1;5269:144;5283:6;5280:1;5277:13;5269:144;;;5396:4;5380:14;;;5376:25;;5370:32;5365:2;5346:17;;;5342:26;5335:68;5298:12;5269:144;;;5431:6;5428:1;5425:13;5422:91;;;5501:1;5496:2;5487:6;5476:9;5472:22;5468:31;5461:42;5422:91;-1:-1:-1;5693:42:64;5681:55;;;;5674:4;5659:20;;5652:85;-1:-1:-1;5565:2:64;5553:15;;;;5570:66;5549:88;5534:104;5640:2;5530:113;;4960:783;-1:-1:-1;4960:783:64:o;5930:128::-;5970:3;6001:1;5997:6;5994:1;5991:13;5988:39;;;6007:18;;:::i;:::-;-1:-1:-1;6043:9:64;;5930:128::o;6063:195::-;6102:3;6133:66;6126:5;6123:77;6120:103;;;6203:18;;:::i;:::-;-1:-1:-1;6250:1:64;6239:13;;6063:195::o;6263:184::-;6315:77;6312:1;6305:88;6412:4;6409:1;6402:15;6436:4;6433:1;6426:15;6452:184;6504:77;6501:1;6494:88;6601:4;6598:1;6591:15;6625:4;6622:1;6615:15;6641:184;6693:77;6690:1;6683:88;6790:4;6787:1;6780:15;6814:4;6811:1;6804:15;6830:154;6916:42;6909:5;6905:54;6898:5;6895:65;6885:93;;6974:1;6971;6964:12;6885:93;6830:154;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "4809800",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "configAddress(bytes32)": "2486",
                "deployPool(bytes)": "infinite",
                "getPools(address,address,uint256,uint256)": "infinite",
                "masterDeployer()": "infinite",
                "pools(address,address,uint256)": "infinite",
                "poolsCount(address,address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "configAddress(bytes32)": "f6ab6d99",
              "deployPool(bytes)": "27c3cae1",
              "getPools(address,address,uint256,uint256)": "71a25812",
              "masterDeployer()": "cf58879a",
              "pools(address,address,uint256)": "169c4cef",
              "poolsCount(address,address)": "5bc93d6c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_masterDeployer\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidTokenOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorisedDeployer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"configAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_deployData\",\"type\":\"bytes\"}],\"name\":\"deployPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pairPools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterDeployer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pools\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"}],\"name\":\"poolsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Mudit Gupta.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contract for deploying Trident exchange Concentrated Liquidity Pool with configurations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/concentrated/ConcentratedLiquidityPoolFactory.sol\":\"ConcentratedLiquidityPoolFactory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentCallee.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool callback interface.\\ninterface ITridentCallee {\\n    function tridentSwapCallback(bytes calldata data) external;\\n\\n    function tridentMintCallback(bytes calldata data) external;\\n}\\n\",\"keccak256\":\"0x256e838362a3064201b37b3b7c08bc1421b173a6fea633176123f0b827b868c9\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentRouter.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool router interface.\\ninterface ITridentRouter {\\n    struct Path {\\n        address pool;\\n        bytes data;\\n    }\\n\\n    struct ExactInputSingleParams {\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n        address pool;\\n        address tokenIn;\\n        bytes data;\\n    }\\n\\n    struct ExactInputParams {\\n        address tokenIn;\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n        Path[] path;\\n    }\\n\\n    struct TokenInput {\\n        address token;\\n        bool native;\\n        uint256 amount;\\n    }\\n\\n    struct InitialPath {\\n        address tokenIn;\\n        address pool;\\n        bool native;\\n        uint256 amount;\\n        bytes data;\\n    }\\n\\n    struct PercentagePath {\\n        address tokenIn;\\n        address pool;\\n        uint64 balancePercentage; // Multiplied by 10^6. 100% = 100_000_000\\n        bytes data;\\n    }\\n\\n    struct Output {\\n        address token;\\n        address to;\\n        bool unwrapBento;\\n        uint256 minAmount;\\n    }\\n\\n    struct ComplexPathParams {\\n        InitialPath[] initialPath;\\n        PercentagePath[] percentagePath;\\n        Output[] output;\\n    }\\n}\\n\",\"keccak256\":\"0x40f1af6b213ff8827d515460f9057eb87ddc35d8020501f727d229ea239cbf24\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/concentratedPool/IPositionManager.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident concentrated Liquidity pool mint callback receiver.\\ninterface IPositionManager {\\n    function positionMintCallback(\\n        address recipient,\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        uint256 feeGrowthInside0,\\n        uint256 feeGrowthInside1,\\n        uint256 positionId\\n    ) external returns (uint256 _positionId);\\n}\\n\",\"keccak256\":\"0x859ec714a21d5aeae280167b4e03ab84ec33767dca2e7cf8ab89a2c2418f0ec2\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/concentratedPool/DyDxMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./FullMath.sol\\\";\\nimport \\\"./UnsafeMath.sol\\\";\\n\\n/// @notice Math library that facilitates ranged liquidity calculations.\\nlibrary DyDxMath {\\n    function getDy(\\n        uint256 liquidity,\\n        uint256 priceLower,\\n        uint256 priceUpper,\\n        bool roundUp\\n    ) internal pure returns (uint256 dy) {\\n        unchecked {\\n            if (roundUp) {\\n                dy = FullMath.mulDivRoundingUp(liquidity, priceUpper - priceLower, 0x1000000000000000000000000);\\n            } else {\\n                dy = FullMath.mulDiv(liquidity, priceUpper - priceLower, 0x1000000000000000000000000);\\n            }\\n        }\\n    }\\n\\n    function getDx(\\n        uint256 liquidity,\\n        uint256 priceLower,\\n        uint256 priceUpper,\\n        bool roundUp\\n    ) internal pure returns (uint256 dx) {\\n        unchecked {\\n            if (roundUp) {\\n                dx = UnsafeMath.divRoundingUp(FullMath.mulDivRoundingUp(liquidity << 96, priceUpper - priceLower, priceUpper), priceLower);\\n            } else {\\n                dx = FullMath.mulDiv(liquidity << 96, priceUpper - priceLower, priceUpper) / priceLower;\\n            }\\n        }\\n    }\\n\\n    function getLiquidityForAmounts(\\n        uint256 priceLower,\\n        uint256 priceUpper,\\n        uint256 currentPrice,\\n        uint256 dy,\\n        uint256 dx\\n    ) public pure returns (uint256 liquidity) {\\n        unchecked {\\n            if (priceUpper <= currentPrice) {\\n                liquidity = FullMath.mulDiv(dy, 0x1000000000000000000000000, priceUpper - priceLower);\\n            } else if (currentPrice <= priceLower) {\\n                liquidity = FullMath.mulDiv(\\n                    dx,\\n                    FullMath.mulDiv(priceLower, priceUpper, 0x1000000000000000000000000),\\n                    priceUpper - priceLower\\n                );\\n            } else {\\n                uint256 liquidity0 = FullMath.mulDiv(\\n                    dx,\\n                    FullMath.mulDiv(priceUpper, currentPrice, 0x1000000000000000000000000),\\n                    priceUpper - currentPrice\\n                );\\n                uint256 liquidity1 = FullMath.mulDiv(dy, 0x1000000000000000000000000, currentPrice - priceLower);\\n                liquidity = liquidity0 < liquidity1 ? liquidity0 : liquidity1;\\n            }\\n        }\\n    }\\n\\n    function getAmountsForLiquidity(\\n        uint256 priceLower,\\n        uint256 priceUpper,\\n        uint256 currentPrice,\\n        uint256 liquidityAmount,\\n        bool roundUp\\n    ) internal pure returns (uint128 token0amount, uint128 token1amount) {\\n        if (priceUpper <= currentPrice) {\\n            // Only supply `token1` (`token1` is Y).\\n            token1amount = uint128(DyDxMath.getDy(liquidityAmount, priceLower, priceUpper, roundUp));\\n        } else if (currentPrice <= priceLower) {\\n            // Only supply `token0` (`token0` is X).\\n            token0amount = uint128(DyDxMath.getDx(liquidityAmount, priceLower, priceUpper, roundUp));\\n        } else {\\n            // Supply both tokens.\\n            token0amount = uint128(DyDxMath.getDx(liquidityAmount, currentPrice, priceUpper, roundUp));\\n            token1amount = uint128(DyDxMath.getDy(liquidityAmount, priceLower, currentPrice, roundUp));\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xbf29a7f41190849b413935c0f3db4566383f6db68ee771cb13ec85082e583b38\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/concentratedPool/FullMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Math library that facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/FullMath.sol.\\n/// @dev Handles \\\"phantom overflow\\\", i.e., allows multiplication and division where an intermediate value overflows 256 bits.\\nlibrary FullMath {\\n    /// @notice Calculates floor(a\\u00d7b\\u00f7denominator) with full precision - throws if result overflows an uint256 or denominator == 0.\\n    /// @param a The multiplicand.\\n    /// @param b The multiplier.\\n    /// @param denominator The divisor.\\n    /// @return result The 256-bit result.\\n    /// @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv.\\n    function mulDiv(\\n        uint256 a,\\n        uint256 b,\\n        uint256 denominator\\n    ) internal pure returns (uint256 result) {\\n        unchecked {\\n            // 512-bit multiply [prod1 prod0] = a * b.\\n            // Compute the product mod 2**256 and mod 2**256 - 1,\\n            // then use the Chinese Remainder Theorem to reconstruct\\n            // the 512 bit result. The result is stored in two 256\\n            // variables such that product = prod1 * 2**256 + prod0.\\n            uint256 prod0; // Least significant 256 bits of the product.\\n            uint256 prod1; // Most significant 256 bits of the product.\\n            assembly {\\n                let mm := mulmod(a, b, not(0))\\n                prod0 := mul(a, b)\\n                prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n            }\\n            // Handle non-overflow cases, 256 by 256 division.\\n            if (prod1 == 0) {\\n                require(denominator > 0);\\n                assembly {\\n                    result := div(prod0, denominator)\\n                }\\n                return result;\\n            }\\n            // Make sure the result is less than 2**256 -\\n            // also prevents denominator == 0.\\n            require(denominator > prod1);\\n            ///////////////////////////////////////////////\\n            // 512 by 256 division.\\n            ///////////////////////////////////////////////\\n            // Make division exact by subtracting the remainder from [prod1 prod0] -\\n            // compute remainder using mulmod.\\n            uint256 remainder;\\n            assembly {\\n                remainder := mulmod(a, b, denominator)\\n            }\\n            // Subtract 256 bit number from 512 bit number.\\n            assembly {\\n                prod1 := sub(prod1, gt(remainder, prod0))\\n                prod0 := sub(prod0, remainder)\\n            }\\n            // Factor powers of two out of denominator -\\n            // compute largest power of two divisor of denominator\\n            // (always >= 1).\\n            uint256 twos = uint256(-int256(denominator)) & denominator;\\n            // Divide denominator by power of two.\\n            assembly {\\n                denominator := div(denominator, twos)\\n            }\\n            // Divide [prod1 prod0] by the factors of two.\\n            assembly {\\n                prod0 := div(prod0, twos)\\n            }\\n            // Shift in bits from prod1 into prod0. For this we need\\n            // to flip `twos` such that it is 2**256 / twos -\\n            // if twos is zero, then it becomes one.\\n            assembly {\\n                twos := add(div(sub(0, twos), twos), 1)\\n            }\\n            prod0 |= prod1 * twos;\\n            // Invert denominator mod 2**256 -\\n            // now that denominator is an odd number, it has an inverse\\n            // modulo 2**256 such that denominator * inv = 1 mod 2**256.\\n            // Compute the inverse by starting with a seed that is correct\\n            // for four bits. That is, denominator * inv = 1 mod 2**4.\\n            uint256 inv = (3 * denominator) ^ 2;\\n            // Now use Newton-Raphson iteration to improve the precision.\\n            // Thanks to Hensel's lifting lemma, this also works in modular\\n            // arithmetic, doubling the correct bits in each step.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**8.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**16.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**32.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**64.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**128.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**256.\\n            // Because the division is now exact we can divide by multiplying\\n            // with the modular inverse of denominator. This will give us the\\n            // correct result modulo 2**256. Since the precoditions guarantee\\n            // that the outcome is less than 2**256, this is the final result.\\n            // We don't need to compute the high bits of the result and prod1\\n            // is no longer required.\\n            result = prod0 * inv;\\n            return result;\\n        }\\n    }\\n\\n    /// @notice Calculates ceil(a\\u00d7b\\u00f7denominator) with full precision - throws if result overflows an uint256 or denominator == 0.\\n    /// @param a The multiplicand.\\n    /// @param b The multiplier.\\n    /// @param denominator The divisor.\\n    /// @return result The 256-bit result.\\n    function mulDivRoundingUp(\\n        uint256 a,\\n        uint256 b,\\n        uint256 denominator\\n    ) internal pure returns (uint256 result) {\\n        result = mulDiv(a, b, denominator);\\n        unchecked {\\n            if (mulmod(a, b, denominator) != 0) {\\n                require(result < type(uint256).max);\\n                result++;\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x8211b004be6ff6be30b81fe484544d00c7bb467a4fd2a0d6c60114353e2300cf\",\"license\":\"MIT\"},\"contracts/libraries/concentratedPool/SwapLib.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./FullMath.sol\\\";\\n\\n/// @notice Math library that facilitates fee handling for Trident Concentrated Liquidity Pools.\\nlibrary SwapLib {\\n    function handleFees(\\n        uint256 output,\\n        uint24 swapFee,\\n        uint256 barFee,\\n        uint256 currentLiquidity,\\n        uint256 totalFeeAmount,\\n        uint256 amountOut,\\n        uint256 protocolFee,\\n        uint256 feeGrowthGlobal\\n    )\\n        internal\\n        pure\\n        returns (\\n            uint256,\\n            uint256,\\n            uint256,\\n            uint256\\n        )\\n    {\\n        uint256 feeAmount = FullMath.mulDivRoundingUp(output, swapFee, 1e6);\\n\\n        totalFeeAmount += feeAmount;\\n\\n        amountOut += output - feeAmount;\\n\\n        // Calculate `protocolFee` and convert pips to bips.\\n        uint256 feeDelta = FullMath.mulDivRoundingUp(feeAmount, barFee, 1e4);\\n\\n        protocolFee += feeDelta;\\n\\n        // Updating `feeAmount` based on the protocolFee.\\n        feeAmount -= feeDelta;\\n\\n        feeGrowthGlobal += FullMath.mulDiv(feeAmount, 0x100000000000000000000000000000000, currentLiquidity);\\n\\n        return (totalFeeAmount, amountOut, protocolFee, feeGrowthGlobal);\\n    }\\n}\\n\",\"keccak256\":\"0x618173841d25c54122f3aea4786b2e235ae2b5f8faba6db44601967b058623bf\",\"license\":\"GPL-2.0-or-later\"},\"contracts/libraries/concentratedPool/TickMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Math library for computing sqrt price for ticks of size 1.0001, i.e., sqrt(1.0001^tick) as fixed point Q64.96 numbers - supports\\n/// prices between 2**-128 and 2**128 - 1.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/TickMath.sol.\\nlibrary TickMath {\\n    /// @dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128.\\n    int24 internal constant MIN_TICK = -887272;\\n    /// @dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128 - 1.\\n    int24 internal constant MAX_TICK = -MIN_TICK;\\n    /// @dev The minimum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MIN_TICK).\\n    uint160 internal constant MIN_SQRT_RATIO = 4295128739;\\n    /// @dev The maximum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MAX_TICK).\\n    uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;\\n\\n    error TickOutOfBounds();\\n    error PriceOutOfBounds();\\n\\n    /// @notice Calculates sqrt(1.0001^tick) * 2^96.\\n    /// @dev Throws if |tick| > max tick.\\n    /// @param tick The input tick for the above formula.\\n    /// @return sqrtPriceX96 Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\\n    /// at the given tick.\\n    function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {\\n        uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));\\n        if (absTick > uint256(uint24(MAX_TICK))) revert TickOutOfBounds();\\n        unchecked {\\n            uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;\\n            if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;\\n            if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;\\n            if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;\\n            if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;\\n            if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;\\n            if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;\\n            if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;\\n            if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;\\n            if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;\\n            if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;\\n            if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;\\n            if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;\\n            if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;\\n            if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;\\n            if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;\\n            if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;\\n            if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;\\n            if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;\\n            if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;\\n\\n            if (tick > 0) ratio = type(uint256).max / ratio;\\n            // This divides by 1<<32 rounding up to go from a Q128.128 to a Q128.96.\\n            // We then downcast because we know the result always fits within 160 bits due to our tick input constraint.\\n            // We round up in the division so getTickAtSqrtRatio of the output price is always consistent.\\n            sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));\\n        }\\n    }\\n\\n    /// @notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio.\\n    /// @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\\n    /// ever return.\\n    /// @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96.\\n    /// @return tick The greatest tick for which the ratio is less than or equal to the input ratio.\\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {\\n        // Second inequality must be < because the price can never reach the price at the max tick.\\n        if (sqrtPriceX96 < MIN_SQRT_RATIO || sqrtPriceX96 >= MAX_SQRT_RATIO) revert PriceOutOfBounds();\\n        uint256 ratio = uint256(sqrtPriceX96) << 32;\\n\\n        uint256 r = ratio;\\n        uint256 msb;\\n\\n        assembly {\\n            let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(5, gt(r, 0xFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(4, gt(r, 0xFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(3, gt(r, 0xFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(2, gt(r, 0xF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(1, gt(r, 0x3))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := gt(r, 0x1)\\n            msb := or(msb, f)\\n        }\\n        unchecked {\\n            if (msb >= 128) r = ratio >> (msb - 127);\\n            else r = ratio << (127 - msb);\\n\\n            int256 log_2 = (int256(msb) - 128) << 64;\\n\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(63, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(62, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(61, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(60, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(59, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(58, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(57, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(56, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(55, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(54, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(53, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(52, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(51, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(50, f))\\n            }\\n\\n            int256 log_sqrt10001 = log_2 * 255738958999603826347141; // 128.128 number.\\n\\n            int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);\\n            int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);\\n\\n            tick = tickLow == tickHi ? tickLow : getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x78121358a23f8c7f267cc4622b3cd0d94970018c637c61a9f2e99a0fa40b7bda\",\"license\":\"GPL-2.0-or-later\"},\"contracts/libraries/concentratedPool/Ticks.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./TickMath.sol\\\";\\nimport \\\"hardhat/console.sol\\\";\\n\\n/// @notice Tick management library for ranged liquidity.\\nlibrary Ticks {\\n    struct Tick {\\n        int24 previousTick;\\n        int24 nextTick;\\n        uint128 liquidity;\\n        uint256 feeGrowthOutside0; // Per unit of liquidity.\\n        uint256 feeGrowthOutside1;\\n        uint160 secondsGrowthOutside;\\n    }\\n\\n    function getMaxLiquidity(uint24 _tickSpacing) public pure returns (uint128) {\\n        return type(uint128).max / uint128(uint24(TickMath.MAX_TICK) / (2 * uint24(_tickSpacing)));\\n    }\\n\\n    function cross(\\n        mapping(int24 => Tick) storage ticks,\\n        int24 nextTickToCross,\\n        uint160 secondsGrowthGlobal,\\n        uint256 currentLiquidity,\\n        uint256 feeGrowthGlobalA,\\n        uint256 feeGrowthGlobalB,\\n        bool zeroForOne,\\n        uint24 tickSpacing\\n    ) internal returns (uint256, int24) {\\n        ticks[nextTickToCross].secondsGrowthOutside = secondsGrowthGlobal - ticks[nextTickToCross].secondsGrowthOutside;\\n\\n        if (zeroForOne) {\\n            // Moving forward through the linked list.\\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\\n                currentLiquidity -= ticks[nextTickToCross].liquidity; // todo wrap in unchecked {}\\n            } else {\\n                currentLiquidity += ticks[nextTickToCross].liquidity;\\n            }\\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside0;\\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside1;\\n            nextTickToCross = ticks[nextTickToCross].previousTick;\\n        } else {\\n            // Moving backwards through the linked list.\\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\\n                currentLiquidity += ticks[nextTickToCross].liquidity;\\n            } else {\\n                currentLiquidity -= ticks[nextTickToCross].liquidity;\\n            }\\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside1;\\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside0;\\n            nextTickToCross = ticks[nextTickToCross].nextTick;\\n        }\\n        return (currentLiquidity, nextTickToCross);\\n    }\\n\\n    function insert(\\n        mapping(int24 => Tick) storage ticks,\\n        uint256 feeGrowthGlobal0,\\n        uint256 feeGrowthGlobal1,\\n        uint160 secondsGrowthGlobal,\\n        int24 lowerOld,\\n        int24 lower,\\n        int24 upperOld,\\n        int24 upper,\\n        uint128 amount,\\n        int24 nearestTick,\\n        uint160 currentPrice\\n    ) public returns (int24) {\\n        require(lower < upper, \\\"WRONG_ORDER\\\");\\n        require(TickMath.MIN_TICK <= lower, \\\"LOWER_RANGE\\\");\\n        require(upper <= TickMath.MAX_TICK, \\\"UPPER_RANGE\\\");\\n\\n        {\\n            // Stack overflow.\\n            uint128 currentLowerLiquidity = ticks[lower].liquidity;\\n            if (currentLowerLiquidity != 0 || lower == TickMath.MIN_TICK) {\\n                // We are adding liquidity to an existing tick.\\n                ticks[lower].liquidity = currentLowerLiquidity + amount;\\n            } else {\\n                // We are inserting a new tick.\\n                Ticks.Tick storage old = ticks[lowerOld];\\n                int24 oldNextTick = old.nextTick;\\n\\n                require((old.liquidity != 0 || lowerOld == TickMath.MIN_TICK) && lowerOld < lower && lower < oldNextTick, \\\"LOWER_ORDER\\\");\\n\\n                if (lower <= nearestTick) {\\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\\n                } else {\\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, 0, 0, 0);\\n                }\\n\\n                old.nextTick = lower;\\n                ticks[oldNextTick].previousTick = lower;\\n            }\\n        }\\n\\n        uint128 currentUpperLiquidity = ticks[upper].liquidity;\\n        if (currentUpperLiquidity != 0 || upper == TickMath.MAX_TICK) {\\n            // We are adding liquidity to an existing tick.\\n            ticks[upper].liquidity = currentUpperLiquidity + amount;\\n        } else {\\n            // Inserting a new tick.\\n            Ticks.Tick storage old = ticks[upperOld];\\n            int24 oldNextTick = old.nextTick;\\n\\n            require(old.liquidity != 0 && oldNextTick > upper && upperOld < upper, \\\"UPPER_ORDER\\\");\\n\\n            if (upper <= nearestTick) {\\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\\n            } else {\\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, 0, 0, 0);\\n            }\\n            old.nextTick = upper;\\n            ticks[oldNextTick].previousTick = upper;\\n        }\\n\\n        int24 actualNearestTick = TickMath.getTickAtSqrtRatio(currentPrice);\\n\\n        if (nearestTick < upper && upper <= actualNearestTick) {\\n            nearestTick = upper;\\n        } else if (nearestTick < lower && lower <= actualNearestTick) {\\n            nearestTick = lower;\\n        }\\n\\n        return nearestTick;\\n    }\\n\\n    function remove(\\n        mapping(int24 => Tick) storage ticks,\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        int24 nearestTick\\n    ) public returns (int24) {\\n        Ticks.Tick storage current = ticks[lower];\\n\\n        if (lower != TickMath.MIN_TICK && current.liquidity == amount) {\\n            // Delete lower tick.\\n            Ticks.Tick storage previous = ticks[current.previousTick];\\n            Ticks.Tick storage next = ticks[current.nextTick];\\n\\n            previous.nextTick = current.nextTick;\\n            next.previousTick = current.previousTick;\\n\\n            if (nearestTick == lower) nearestTick = current.previousTick;\\n\\n            delete ticks[lower];\\n        } else {\\n            unchecked {\\n                current.liquidity -= amount;\\n            }\\n        }\\n\\n        current = ticks[upper];\\n\\n        if (upper != TickMath.MAX_TICK && current.liquidity == amount) {\\n            // Delete upper tick.\\n            Ticks.Tick storage previous = ticks[current.previousTick];\\n            Ticks.Tick storage next = ticks[current.nextTick];\\n\\n            previous.nextTick = current.nextTick;\\n            next.previousTick = current.previousTick;\\n\\n            if (nearestTick == upper) nearestTick = current.previousTick;\\n\\n            delete ticks[upper];\\n        } else {\\n            unchecked {\\n                current.liquidity -= amount;\\n            }\\n        }\\n\\n        return nearestTick;\\n    }\\n}\\n\",\"keccak256\":\"0x3c5bb30d7769f72aad064ab482c1237a794fd1e16fc85c444255227cf93b65d2\",\"license\":\"GPL-2.0-or-later\"},\"contracts/libraries/concentratedPool/UnsafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.5.0;\\n\\n/// @notice Math library that contains methods that perform common math functions but do not do any overflow or underflow checks.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/UnsafeMath.sol.\\nlibrary UnsafeMath {\\n    /// @notice Returns ceil(x / y).\\n    /// @dev Division by 0 has unspecified behavior, and must be checked externally.\\n    /// @param x The dividend.\\n    /// @param y The divisor.\\n    /// @return z The quotient, ceil(x / y).\\n    function divRoundingUp(uint256 x, uint256 y) internal pure returns (uint256 z) {\\n        assembly {\\n            z := add(div(x, y), gt(mod(x, y), 0))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x7441e71bffbdeb978784685e2a88618190942f1c9b5452574326256d5d0b7039\",\"license\":\"GPL-2.0-or-later\"},\"contracts/pool/PoolDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer for whitelisted template factories.\\n/// @author Mudit Gupta.\\nabstract contract PoolDeployer {\\n    address public immutable masterDeployer;\\n\\n    mapping(address => mapping(address => address[])) public pools;\\n    mapping(bytes32 => address) public configAddress;\\n\\n    error UnauthorisedDeployer();\\n    error ZeroAddress();\\n    error InvalidTokenOrder();\\n\\n    modifier onlyMaster() {\\n        if (msg.sender != masterDeployer) revert UnauthorisedDeployer();\\n        _;\\n    }\\n\\n    constructor(address _masterDeployer) {\\n        if (_masterDeployer == address(0)) revert ZeroAddress();\\n        masterDeployer = _masterDeployer;\\n    }\\n\\n    function _registerPool(\\n        address pool,\\n        address[] memory tokens,\\n        bytes32 salt\\n    ) internal onlyMaster {\\n        // @dev Store the address of the deployed contract.\\n        configAddress[salt] = pool;\\n        // @dev Attacker used underflow, it was not very effective. poolimon!\\n        // null token array would cause deployment to fail via out of bounds memory axis/gas limit.\\n        unchecked {\\n            for (uint256 i; i < tokens.length - 1; i++) {\\n                if (tokens[i] >= tokens[i + 1]) revert InvalidTokenOrder();\\n                for (uint256 j = i + 1; j < tokens.length; j++) {\\n                    pools[tokens[i]][tokens[j]].push(pool);\\n                    pools[tokens[j]][tokens[i]].push(pool);\\n                }\\n            }\\n        }\\n    }\\n\\n    function poolsCount(address token0, address token1) external view returns (uint256 count) {\\n        count = pools[token0][token1].length;\\n    }\\n\\n    function getPools(\\n        address token0,\\n        address token1,\\n        uint256 startIndex,\\n        uint256 count\\n    ) external view returns (address[] memory pairPools) {\\n        pairPools = new address[](count);\\n        for (uint256 i = 0; i < count; i++) {\\n            pairPools[i] = pools[token0][token1][startIndex + i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x34c44a489ccaf9a7b2bc05527113552a2ebc5a8b4b9d47035e465c39cf569b81\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/concentrated/ConcentratedLiquidityPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../../interfaces/IBentoBoxMinimal.sol\\\";\\nimport \\\"../../interfaces/IMasterDeployer.sol\\\";\\nimport \\\"../../interfaces/IPool.sol\\\";\\nimport \\\"../../interfaces/concentratedPool/IPositionManager.sol\\\";\\nimport \\\"../../interfaces/ITridentCallee.sol\\\";\\nimport \\\"../../interfaces/ITridentRouter.sol\\\";\\nimport \\\"../../libraries/concentratedPool/FullMath.sol\\\";\\nimport \\\"../../libraries/concentratedPool/TickMath.sol\\\";\\nimport \\\"../../libraries/concentratedPool/UnsafeMath.sol\\\";\\nimport \\\"../../libraries/concentratedPool/DyDxMath.sol\\\";\\nimport \\\"../../libraries/concentratedPool/SwapLib.sol\\\";\\nimport \\\"../../libraries/concentratedPool/Ticks.sol\\\";\\n\\n/// @notice Trident exchange pool template implementing concentrated liquidity for swapping between an ERC-20 token pair.\\n/// @dev Amounts are considered to be in Bentobox shared\\ncontract ConcentratedLiquidityPool is IPool {\\n    using Ticks for mapping(int24 => Ticks.Tick);\\n\\n    event Mint(address indexed owner, uint256 amount0, uint256 amount1);\\n    event Burn(address indexed owner, uint256 amount0, uint256 amount1);\\n    event Collect(address indexed sender, uint256 amount0, uint256 amount1);\\n    event Sync(uint256 reserveShares0, uint256 reserveShares1);\\n\\n    bytes32 public constant override poolIdentifier = \\\"Trident:ConcentratedLiquidity\\\";\\n\\n    uint24 internal constant MAX_FEE = 100000; /// @dev Maximum `swapFee` is 10%.\\n    /// @dev References for tickSpacing:\\n    /// 100 tickSpacing -> 2% between ticks.\\n    uint24 internal immutable tickSpacing;\\n    uint24 internal immutable swapFee; /// @dev 1000 corresponds to 0.1% fee. Fee is measured in pips.\\n    uint128 internal immutable MAX_TICK_LIQUIDITY;\\n\\n    address internal immutable barFeeTo;\\n    IBentoBoxMinimal internal immutable bento;\\n    IMasterDeployer internal immutable masterDeployer;\\n\\n    address internal immutable token0;\\n    address internal immutable token1;\\n\\n    uint128 public liquidity;\\n\\n    uint160 internal secondsGrowthGlobal; /// @dev Multiplied by 2^128.\\n    uint32 internal lastObservation;\\n\\n    uint256 public feeGrowthGlobal0; /// @dev All fee growth counters are multiplied by 2^128.\\n    uint256 public feeGrowthGlobal1;\\n\\n    uint256 public barFee;\\n\\n    uint128 internal token0ProtocolFee;\\n    uint128 internal token1ProtocolFee;\\n\\n    uint128 internal reserve0; /// @dev `bento` share balance tracker.\\n    uint128 internal reserve1;\\n\\n    uint160 internal price; /// @dev Sqrt of price aka. \\u221a(y/x), multiplied by 2^96.\\n    int24 internal nearestTick; /// @dev Tick that is just below the current price.\\n\\n    uint256 internal unlocked;\\n\\n    mapping(int24 => Ticks.Tick) public ticks;\\n    mapping(address => mapping(int24 => mapping(int24 => Position))) public positions;\\n\\n    struct Position {\\n        uint128 liquidity;\\n        uint256 feeGrowthInside0Last;\\n        uint256 feeGrowthInside1Last;\\n    }\\n\\n    struct SwapCache {\\n        uint256 feeAmount;\\n        uint256 totalFeeAmount;\\n        uint256 protocolFee;\\n        uint256 feeGrowthGlobalA;\\n        uint256 feeGrowthGlobalB;\\n        uint256 currentPrice;\\n        uint256 currentLiquidity;\\n        uint256 input;\\n        int24 nextTickToCross;\\n    }\\n\\n    struct MintParams {\\n        int24 lowerOld;\\n        int24 lower;\\n        int24 upperOld;\\n        int24 upper;\\n        uint256 amount0Desired;\\n        uint256 amount1Desired;\\n        bool token0native;\\n        bool token1native;\\n        address positionOwner; // To mint an NFT the positionOwner should be set to the positionManager contract.\\n        address positionRecipient;\\n        uint256 positionId;\\n    }\\n\\n    /// @dev Error list to optimize around pool requirements.\\n    error Locked();\\n    error ZeroAddress();\\n    error InvalidToken();\\n    error InvalidSwapFee();\\n    error LiquidityOverflow();\\n    error Token0Missing();\\n    error Token1Missing();\\n    error InvalidTick();\\n    error LowerEven();\\n    error UpperOdd();\\n    error MaxTickLiquidity();\\n    error Overflow();\\n\\n    modifier lock() {\\n        if (unlocked == 2) revert Locked();\\n        unlocked = 2;\\n        _;\\n        unlocked = 1;\\n    }\\n\\n    /// @dev Only set immutable variables here - state changes made here will not be used.\\n    constructor(bytes memory _deployData, IMasterDeployer _masterDeployer) {\\n        (address _token0, address _token1, uint24 _swapFee, uint160 _price, uint24 _tickSpacing) = abi.decode(\\n            _deployData,\\n            (address, address, uint24, uint160, uint24)\\n        );\\n\\n        if (_token0 == address(0)) revert ZeroAddress();\\n        if (_token0 == address(this)) revert InvalidToken();\\n        if (_token1 == address(this)) revert InvalidToken();\\n        if (_swapFee > MAX_FEE) revert InvalidSwapFee();\\n\\n        token0 = _token0;\\n        token1 = _token1;\\n        swapFee = _swapFee;\\n        price = _price;\\n        tickSpacing = _tickSpacing;\\n        // Prevents global liquidity overflow in the case all ticks are initialised.\\n        MAX_TICK_LIQUIDITY = Ticks.getMaxLiquidity(_tickSpacing);\\n        ticks[TickMath.MIN_TICK] = Ticks.Tick(TickMath.MIN_TICK, TickMath.MAX_TICK, uint128(0), 0, 0, 0);\\n        ticks[TickMath.MAX_TICK] = Ticks.Tick(TickMath.MIN_TICK, TickMath.MAX_TICK, uint128(0), 0, 0, 0);\\n        nearestTick = TickMath.MIN_TICK;\\n        bento = IBentoBoxMinimal(_masterDeployer.bento());\\n        barFeeTo = _masterDeployer.barFeeTo();\\n        barFee = _masterDeployer.barFee();\\n        masterDeployer = _masterDeployer;\\n        unlocked = 1;\\n    }\\n\\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\\n    /// The router must ensure that sufficient liquidity has been minted.\\n    function mint(bytes calldata data) public override lock returns (uint256 _liquidity) {\\n        MintParams memory mintParams = abi.decode(data, (MintParams));\\n\\n        uint256 priceLower = uint256(TickMath.getSqrtRatioAtTick(mintParams.lower));\\n        uint256 priceUpper = uint256(TickMath.getSqrtRatioAtTick(mintParams.upper));\\n        uint256 currentPrice = uint256(price);\\n\\n        _liquidity = DyDxMath.getLiquidityForAmounts(\\n            priceLower,\\n            priceUpper,\\n            currentPrice,\\n            mintParams.amount1Desired,\\n            mintParams.amount0Desired\\n        );\\n\\n        unchecked {\\n            (uint256 amount0fees, uint256 amount1fees, ) = _updatePosition(\\n                mintParams.positionOwner,\\n                mintParams.lower,\\n                mintParams.upper,\\n                int128(uint128(_liquidity))\\n            );\\n            if (amount0fees > 0) {\\n                _transfer(token0, amount0fees, mintParams.positionOwner, false);\\n                reserve0 -= uint128(amount0fees);\\n            }\\n            if (amount1fees > 0) {\\n                _transfer(token1, amount1fees, mintParams.positionOwner, false);\\n                reserve1 -= uint128(amount1fees);\\n            }\\n        }\\n\\n        unchecked {\\n            if (priceLower < currentPrice && currentPrice < priceUpper) liquidity += uint128(_liquidity);\\n        }\\n\\n        _ensureTickSpacing(mintParams.lower, mintParams.upper);\\n\\n        nearestTick = Ticks.insert(\\n            ticks,\\n            feeGrowthGlobal0,\\n            feeGrowthGlobal1,\\n            secondsGrowthGlobal,\\n            mintParams.lowerOld,\\n            mintParams.lower,\\n            mintParams.upperOld,\\n            mintParams.upper,\\n            uint128(_liquidity),\\n            nearestTick,\\n            uint160(currentPrice)\\n        );\\n\\n        (uint128 amount0Actual, uint128 amount1Actual) = DyDxMath.getAmountsForLiquidity(\\n            priceLower,\\n            priceUpper,\\n            currentPrice,\\n            _liquidity,\\n            true\\n        );\\n\\n        {\\n            ITridentRouter.TokenInput[] memory callbackData = new ITridentRouter.TokenInput[](2);\\n            callbackData[0] = ITridentRouter.TokenInput(token0, mintParams.token0native, amount0Actual);\\n            callbackData[1] = ITridentRouter.TokenInput(token1, mintParams.token1native, amount1Actual);\\n            ITridentCallee(msg.sender).tridentMintCallback(abi.encode(callbackData));\\n        }\\n\\n        unchecked {\\n            if (amount0Actual != 0) {\\n                if (amount0Actual + reserve0 > _balance(token0)) revert Token0Missing();\\n                reserve0 += amount0Actual;\\n            }\\n\\n            if (amount1Actual != 0) {\\n                if (amount1Actual + reserve1 > _balance(token1)) revert Token1Missing();\\n                reserve1 += amount1Actual;\\n            }\\n        }\\n\\n        (uint256 feeGrowth0, uint256 feeGrowth1) = rangeFeeGrowth(mintParams.lower, mintParams.upper);\\n\\n        if (mintParams.positionRecipient != address(0)) {\\n            IPositionManager(mintParams.positionOwner).positionMintCallback(\\n                mintParams.positionRecipient,\\n                mintParams.lower,\\n                mintParams.upper,\\n                uint128(_liquidity),\\n                feeGrowth0,\\n                feeGrowth1,\\n                mintParams.positionId\\n            );\\n        }\\n\\n        emit Mint(mintParams.positionOwner, amount0Actual, amount1Actual);\\n    }\\n\\n    /// @notice Burn function that cannpt conform to the IPool interface due to having three return values.\\n    /// @dev Burns LP tokens sent to this contract.\\n    function decreaseLiquidity(\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        address recipient,\\n        bool unwrapBento\\n    )\\n        public\\n        returns (\\n            IPool.TokenAmount[] memory withdrawnAmounts,\\n            IPool.TokenAmount[] memory feesWithdrawn,\\n            uint256 oldLiquidity\\n        )\\n    {\\n        uint256 amount0;\\n        uint256 amount1;\\n\\n        {\\n            uint160 priceLower = TickMath.getSqrtRatioAtTick(lower);\\n            uint160 priceUpper = TickMath.getSqrtRatioAtTick(upper);\\n            uint160 currentPrice = price;\\n\\n            unchecked {\\n                if (priceLower < currentPrice && currentPrice < priceUpper) liquidity -= amount;\\n            }\\n\\n            (amount0, amount1) = DyDxMath.getAmountsForLiquidity(\\n                uint256(priceLower),\\n                uint256(priceUpper),\\n                uint256(currentPrice),\\n                uint256(amount),\\n                false\\n            );\\n        }\\n\\n        {\\n            // Ensure no overflow happens when we cast to int128.\\n            if (amount > uint128(type(int128).max)) revert Overflow();\\n\\n            uint256 amount0fees;\\n            uint256 amount1fees;\\n            (amount0fees, amount1fees, oldLiquidity) = _updatePosition(msg.sender, lower, upper, -int128(amount));\\n\\n            withdrawnAmounts = new TokenAmount[](2);\\n            withdrawnAmounts[0] = TokenAmount({token: token0, amount: amount0});\\n            withdrawnAmounts[1] = TokenAmount({token: token1, amount: amount1});\\n\\n            feesWithdrawn = new TokenAmount[](2);\\n            feesWithdrawn[0] = TokenAmount({token: token0, amount: amount0fees});\\n            feesWithdrawn[1] = TokenAmount({token: token1, amount: amount1fees});\\n\\n            unchecked {\\n                amount0 += amount0fees;\\n                amount1 += amount1fees;\\n            }\\n        }\\n\\n        unchecked {\\n            reserve0 -= uint128(amount0);\\n            reserve1 -= uint128(amount1);\\n        }\\n\\n        _transferBothTokens(recipient, amount0, amount1, unwrapBento);\\n\\n        nearestTick = Ticks.remove(ticks, lower, upper, amount, nearestTick);\\n        emit Burn(msg.sender, amount0, amount1);\\n    }\\n\\n    function burn(bytes calldata) public pure override returns (IPool.TokenAmount[] memory) {\\n        revert();\\n    }\\n\\n    function burnSingle(bytes calldata) public pure override returns (uint256) {\\n        revert();\\n    }\\n\\n    function collect(\\n        int24 lower,\\n        int24 upper,\\n        address recipient,\\n        bool unwrapBento\\n    ) public lock returns (uint256 amount0fees, uint256 amount1fees) {\\n        (amount0fees, amount1fees, ) = _updatePosition(msg.sender, lower, upper, 0);\\n\\n        _transferBothTokens(recipient, amount0fees, amount1fees, unwrapBento);\\n\\n        reserve0 -= uint128(amount0fees);\\n        reserve1 -= uint128(amount1fees);\\n\\n        emit Collect(msg.sender, amount0fees, amount1fees);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage\\n    /// - price is \\u221a(y/x)\\n    /// - x is token0\\n    /// - zero for one -> price will move down.\\n    function swap(bytes memory data) public override lock returns (uint256 amountOut) {\\n        (bool zeroForOne, uint256 inAmount, address recipient, bool unwrapBento) = abi.decode(data, (bool, uint256, address, bool));\\n\\n        SwapCache memory cache = SwapCache({\\n            feeAmount: 0,\\n            totalFeeAmount: 0,\\n            protocolFee: 0,\\n            feeGrowthGlobalA: zeroForOne ? feeGrowthGlobal1 : feeGrowthGlobal0,\\n            feeGrowthGlobalB: zeroForOne ? feeGrowthGlobal0 : feeGrowthGlobal1,\\n            currentPrice: uint256(price),\\n            currentLiquidity: uint256(liquidity),\\n            input: inAmount,\\n            nextTickToCross: zeroForOne ? nearestTick : ticks[nearestTick].nextTick\\n        });\\n\\n        unchecked {\\n            uint256 timestamp = block.timestamp;\\n            uint256 diff = timestamp - uint256(lastObservation); // Underflow in 2106. Don't do staking rewards in the year 2106.\\n            if (diff > 0 && liquidity > 0) {\\n                lastObservation = uint32(timestamp);\\n                secondsGrowthGlobal += uint160((diff << 128) / liquidity);\\n            }\\n        }\\n\\n        while (cache.input != 0) {\\n            uint256 nextTickPrice = uint256(TickMath.getSqrtRatioAtTick(cache.nextTickToCross));\\n            uint256 output = 0;\\n            bool cross = false;\\n\\n            if (zeroForOne) {\\n                // Trading token 0 (x) for token 1 (y).\\n                // Price is decreasing.\\n                // Maximum input amount within current tick range: \\u0394x = \\u0394(1/\\u221a\\ud835\\udc43) \\u00b7 L.\\n                uint256 maxDx = DyDxMath.getDx(cache.currentLiquidity, nextTickPrice, cache.currentPrice, false);\\n\\n                if (cache.input <= maxDx) {\\n                    // We can swap within the current range.\\n                    uint256 liquidityPadded = cache.currentLiquidity << 96;\\n                    // Calculate new price after swap: \\u221a\\ud835\\udc43[new] =  L \\u00b7 \\u221a\\ud835\\udc43 / (L + \\u0394x \\u00b7 \\u221a\\ud835\\udc43)\\n                    // This is derrived from \\u0394(1/\\u221a\\ud835\\udc43) = \\u0394x/L\\n                    // where \\u0394(1/\\u221a\\ud835\\udc43) is 1/\\u221a\\ud835\\udc43[old] - 1/\\u221a\\ud835\\udc43[new] and we solve for \\u221a\\ud835\\udc43[new].\\n                    // In case of an owerflow we can use: \\u221a\\ud835\\udc43[new] = L / (L / \\u221a\\ud835\\udc43 + \\u0394x).\\n                    // This is derrived by dividing the original fraction by \\u221a\\ud835\\udc43 on both sides.\\n                    uint256 newPrice = uint256(\\n                        FullMath.mulDivRoundingUp(liquidityPadded, cache.currentPrice, liquidityPadded + cache.currentPrice * cache.input)\\n                    );\\n\\n                    if (!(nextTickPrice <= newPrice && newPrice < cache.currentPrice)) {\\n                        // Overflow. We use a modified version of the formula.\\n                        newPrice = uint160(UnsafeMath.divRoundingUp(liquidityPadded, liquidityPadded / cache.currentPrice + cache.input));\\n                    }\\n                    // Based on the price difference calculate the output of th swap: \\u0394y = \\u0394\\u221aP \\u00b7 L.\\n                    output = DyDxMath.getDy(cache.currentLiquidity, newPrice, cache.currentPrice, false);\\n                    cache.currentPrice = newPrice;\\n                    cache.input = 0;\\n                } else {\\n                    // Execute swap step and cross the tick.\\n                    output = DyDxMath.getDy(cache.currentLiquidity, nextTickPrice, cache.currentPrice, false);\\n                    cache.currentPrice = nextTickPrice;\\n                    cross = true;\\n                    cache.input -= maxDx;\\n                }\\n            } else {\\n                // Price is increasing.\\n                // Maximum swap amount within the current tick range: \\u0394y = \\u0394\\u221aP \\u00b7 L.\\n                uint256 maxDy = DyDxMath.getDy(cache.currentLiquidity, cache.currentPrice, nextTickPrice, false);\\n\\n                if (cache.input <= maxDy) {\\n                    // We can swap within the current range.\\n                    // Calculate new price after swap: \\u0394P = \\u0394y/L.\\n                    uint256 newPrice = cache.currentPrice +\\n                        FullMath.mulDiv(cache.input, 0x1000000000000000000000000, cache.currentLiquidity);\\n                    // Calculate output of swap\\n                    // - \\u0394x = \\u0394(1/\\u221aP) \\u00b7 L.\\n                    output = DyDxMath.getDx(cache.currentLiquidity, cache.currentPrice, newPrice, false);\\n                    cache.currentPrice = newPrice;\\n                    cache.input = 0;\\n                } else {\\n                    // Swap & cross the tick.\\n                    output = DyDxMath.getDx(cache.currentLiquidity, cache.currentPrice, nextTickPrice, false);\\n                    cache.currentPrice = nextTickPrice;\\n                    cross = true;\\n                    cache.input -= maxDy;\\n                }\\n            }\\n\\n            // cache.feeGrowthGlobalA is the feeGrowthGlobal counter for the output token.\\n            // It increases each swap step.\\n            (cache.totalFeeAmount, amountOut, cache.protocolFee, cache.feeGrowthGlobalA) = SwapLib.handleFees(\\n                output,\\n                swapFee,\\n                barFee,\\n                cache.currentLiquidity,\\n                cache.totalFeeAmount,\\n                amountOut,\\n                cache.protocolFee,\\n                cache.feeGrowthGlobalA\\n            );\\n            if (cross) {\\n                (cache.currentLiquidity, cache.nextTickToCross) = Ticks.cross(\\n                    ticks,\\n                    cache.nextTickToCross,\\n                    secondsGrowthGlobal,\\n                    cache.currentLiquidity,\\n                    cache.feeGrowthGlobalA,\\n                    cache.feeGrowthGlobalB,\\n                    zeroForOne,\\n                    tickSpacing\\n                );\\n                if (cache.currentLiquidity == 0) {\\n                    // We step into a zone that has liquidity - or we reach the end of the linked list.\\n                    cache.currentPrice = uint256(TickMath.getSqrtRatioAtTick(cache.nextTickToCross));\\n                    (cache.currentLiquidity, cache.nextTickToCross) = Ticks.cross(\\n                        ticks,\\n                        cache.nextTickToCross,\\n                        secondsGrowthGlobal,\\n                        cache.currentLiquidity,\\n                        cache.feeGrowthGlobalA,\\n                        cache.feeGrowthGlobalB,\\n                        zeroForOne,\\n                        tickSpacing\\n                    );\\n                }\\n            }\\n        }\\n\\n        price = uint160(cache.currentPrice);\\n\\n        int24 newNearestTick = zeroForOne ? cache.nextTickToCross : ticks[cache.nextTickToCross].previousTick;\\n\\n        if (nearestTick != newNearestTick) {\\n            nearestTick = newNearestTick;\\n            liquidity = uint128(cache.currentLiquidity);\\n        }\\n\\n        _updateReserves(zeroForOne, uint128(inAmount), amountOut);\\n\\n        _updateFees(zeroForOne, cache.feeGrowthGlobalA, uint128(cache.protocolFee));\\n\\n        if (zeroForOne) {\\n            _transfer(token1, amountOut, recipient, unwrapBento);\\n            emit Swap(recipient, token0, token1, inAmount, amountOut);\\n        } else {\\n            _transfer(token0, amountOut, recipient, unwrapBento);\\n            emit Swap(recipient, token1, token0, inAmount, amountOut);\\n        }\\n    }\\n\\n    /// @dev Reserved for IPool.\\n    function flashSwap(bytes calldata) public pure override returns (uint256) {\\n        revert();\\n    }\\n\\n    /// @dev Updates `barFee` for Trident protocol.\\n    function updateBarFee() public {\\n        barFee = IMasterDeployer(masterDeployer).barFee();\\n    }\\n\\n    /// @dev Collects fees for Trident protocol.\\n    function collectProtocolFee() public lock returns (uint128 amount0, uint128 amount1) {\\n        if (token0ProtocolFee > 1) {\\n            amount0 = token0ProtocolFee - 1;\\n            token0ProtocolFee = 1;\\n            reserve0 -= amount0;\\n            _transfer(token0, amount0, barFeeTo, false);\\n        }\\n        if (token1ProtocolFee > 1) {\\n            amount1 = token1ProtocolFee - 1;\\n            token1ProtocolFee = 1;\\n            reserve1 -= amount1;\\n            _transfer(token1, amount1, barFeeTo, false);\\n        }\\n    }\\n\\n    function _ensureTickSpacing(int24 lower, int24 upper) internal view {\\n        if (lower % int24(tickSpacing) != 0) revert InvalidTick();\\n        if ((lower / int24(tickSpacing)) % 2 != 0) revert LowerEven();\\n        if (upper % int24(tickSpacing) != 0) revert InvalidTick();\\n        if ((upper / int24(tickSpacing)) % 2 == 0) revert UpperOdd();\\n    }\\n\\n    function _updateReserves(\\n        bool zeroForOne,\\n        uint128 inAmount,\\n        uint256 amountOut\\n    ) internal {\\n        if (zeroForOne) {\\n            uint256 balance0 = _balance(token0);\\n            uint128 newBalance = reserve0 + inAmount;\\n            if (uint256(newBalance) > balance0) revert Token0Missing();\\n            reserve0 = newBalance;\\n            reserve1 -= uint128(amountOut); // todo wrap in unchecked {}\\n        } else {\\n            uint256 balance1 = _balance(token1);\\n            uint128 newBalance = reserve1 + inAmount;\\n            if (uint256(newBalance) > balance1) revert Token1Missing();\\n            reserve1 = newBalance;\\n            reserve0 -= uint128(amountOut);\\n        }\\n    }\\n\\n    function _updateFees(\\n        bool zeroForOne,\\n        uint256 feeGrowthGlobal,\\n        uint128 protocolFee\\n    ) internal {\\n        if (zeroForOne) {\\n            feeGrowthGlobal1 = feeGrowthGlobal;\\n            token1ProtocolFee += protocolFee;\\n        } else {\\n            feeGrowthGlobal0 = feeGrowthGlobal;\\n            token0ProtocolFee += protocolFee;\\n        }\\n    }\\n\\n    function _updatePosition(\\n        address owner,\\n        int24 lower,\\n        int24 upper,\\n        int128 amount\\n    )\\n        internal\\n        returns (\\n            uint256 amount0fees,\\n            uint256 amount1fees,\\n            uint256 oldLiquidity\\n        )\\n    {\\n        Position storage position = positions[owner][lower][upper];\\n\\n        (uint256 growth0current, uint256 growth1current) = rangeFeeGrowth(lower, upper);\\n        amount0fees = FullMath.mulDiv(\\n            growth0current - position.feeGrowthInside0Last,\\n            position.liquidity,\\n            0x100000000000000000000000000000000\\n        );\\n\\n        amount1fees = FullMath.mulDiv(\\n            growth1current - position.feeGrowthInside1Last,\\n            position.liquidity,\\n            0x100000000000000000000000000000000\\n        );\\n\\n        oldLiquidity = position.liquidity;\\n\\n        if (amount < 0) {\\n            position.liquidity -= uint128(-amount);\\n        }\\n\\n        if (amount > 0) {\\n            position.liquidity += uint128(amount);\\n            if (position.liquidity > MAX_TICK_LIQUIDITY) revert LiquidityOverflow();\\n        }\\n\\n        position.feeGrowthInside0Last = growth0current;\\n        position.feeGrowthInside1Last = growth1current;\\n    }\\n\\n    function _balance(address token) internal view returns (uint256 balance) {\\n        balance = bento.balanceOf(token, address(this));\\n    }\\n\\n    function _transfer(\\n        address token,\\n        uint256 shares,\\n        address to,\\n        bool unwrapBento\\n    ) internal {\\n        if (unwrapBento) {\\n            bento.withdraw(token, address(this), to, 0, shares);\\n        } else {\\n            bento.transfer(token, address(this), to, shares);\\n        }\\n    }\\n\\n    function _transferBothTokens(\\n        address to,\\n        uint256 shares0,\\n        uint256 shares1,\\n        bool unwrapBento\\n    ) internal {\\n        if (unwrapBento) {\\n            bento.withdraw(token0, address(this), to, 0, shares0);\\n            bento.withdraw(token1, address(this), to, 0, shares1);\\n        } else {\\n            bento.transfer(token0, address(this), to, shares0);\\n            bento.transfer(token1, address(this), to, shares1);\\n        }\\n    }\\n\\n    /// @dev Generic formula for fee growth inside a range: (globalGrowth - growthBelow - growthAbove)\\n    /// - available counters: global, outside u, outside v.\\n\\n    ///                  u         \\u25bc         v\\n    /// ----|----|-------|xxxxxxxxxxxxxxxxxxx|--------|--------- (global - feeGrowthOutside(u) - feeGrowthOutside(v))\\n\\n    ///             \\u25bc    u                   v\\n    /// ----|----|-------|xxxxxxxxxxxxxxxxxxx|--------|--------- (global - (global - feeGrowthOutside(u)) - feeGrowthOutside(v))\\n\\n    ///                  u                   v    \\u25bc\\n    /// ----|----|-------|xxxxxxxxxxxxxxxxxxx|--------|--------- (global - feeGrowthOutside(u) - (global - feeGrowthOutside(v)))\\n\\n    /// @notice Calculates the fee growth inside a range (per unit of liquidity).\\n    /// @dev Multiply `rangeFeeGrowth` delta by the provided liquidity to get accrued fees for some period.\\n    function rangeFeeGrowth(int24 lowerTick, int24 upperTick) public view returns (uint256 feeGrowthInside0, uint256 feeGrowthInside1) {\\n        int24 currentTick = nearestTick;\\n\\n        Ticks.Tick storage lower = ticks[lowerTick];\\n        Ticks.Tick storage upper = ticks[upperTick];\\n\\n        // Calculate fee growth below & above.\\n        uint256 _feeGrowthGlobal0 = feeGrowthGlobal0;\\n        uint256 _feeGrowthGlobal1 = feeGrowthGlobal1;\\n        uint256 feeGrowthBelow0;\\n        uint256 feeGrowthBelow1;\\n        uint256 feeGrowthAbove0;\\n        uint256 feeGrowthAbove1;\\n\\n        if (lowerTick <= currentTick) {\\n            feeGrowthBelow0 = lower.feeGrowthOutside0;\\n            feeGrowthBelow1 = lower.feeGrowthOutside1;\\n        } else {\\n            feeGrowthBelow0 = _feeGrowthGlobal0 - lower.feeGrowthOutside0;\\n            feeGrowthBelow1 = _feeGrowthGlobal1 - lower.feeGrowthOutside1;\\n        }\\n\\n        if (currentTick < upperTick) {\\n            feeGrowthAbove0 = upper.feeGrowthOutside0;\\n            feeGrowthAbove1 = upper.feeGrowthOutside1;\\n        } else {\\n            feeGrowthAbove0 = _feeGrowthGlobal0 - upper.feeGrowthOutside0;\\n            feeGrowthAbove1 = _feeGrowthGlobal1 - upper.feeGrowthOutside1;\\n        }\\n\\n        feeGrowthInside0 = _feeGrowthGlobal0 - feeGrowthBelow0 - feeGrowthAbove0;\\n        feeGrowthInside1 = _feeGrowthGlobal1 - feeGrowthBelow1 - feeGrowthAbove1;\\n    }\\n\\n    function getAssets() public view override returns (address[] memory assets) {\\n        assets = new address[](2);\\n        assets[0] = token0;\\n        assets[1] = token1;\\n    }\\n\\n    /// @dev Reserved for IPool.\\n    function getAmountOut(bytes calldata) public pure override returns (uint256) {\\n        revert();\\n    }\\n\\n    /// @dev Reserved for IPool.\\n    function getAmountIn(bytes calldata) public pure override returns (uint256) {\\n        revert();\\n    }\\n\\n    function getImmutables()\\n        public\\n        view\\n        returns (\\n            uint128 _MAX_TICK_LIQUIDITY,\\n            uint24 _tickSpacing,\\n            uint24 _swapFee,\\n            address _barFeeTo,\\n            IBentoBoxMinimal _bento,\\n            IMasterDeployer _masterDeployer,\\n            address _token0,\\n            address _token1\\n        )\\n    {\\n        _MAX_TICK_LIQUIDITY = MAX_TICK_LIQUIDITY;\\n        _tickSpacing = tickSpacing;\\n        _swapFee = swapFee; // 1000 corresponds to 0.1% fee.\\n        _barFeeTo = barFeeTo;\\n        _bento = bento;\\n        _masterDeployer = masterDeployer;\\n        _token0 = token0;\\n        _token1 = token1;\\n    }\\n\\n    function getPriceAndNearestTicks() public view returns (uint160 _price, int24 _nearestTick) {\\n        _price = price;\\n        _nearestTick = nearestTick;\\n    }\\n\\n    function getTokenProtocolFees() public view returns (uint128 _token0ProtocolFee, uint128 _token1ProtocolFee) {\\n        _token0ProtocolFee = token0ProtocolFee;\\n        _token1ProtocolFee = token1ProtocolFee;\\n    }\\n\\n    function getReserves() public view returns (uint128 _reserve0, uint128 _reserve1) {\\n        _reserve0 = reserve0;\\n        _reserve1 = reserve1;\\n    }\\n\\n    function getSecondsGrowthAndLastObservation() public view returns (uint160 _secondsGrowthGlobal, uint32 _lastObservation) {\\n        _secondsGrowthGlobal = secondsGrowthGlobal;\\n        _lastObservation = lastObservation;\\n    }\\n}\\n\",\"keccak256\":\"0x25a83786893f3ffec804307a654ebce683447d9fca6e3f80c56057c44e913730\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/concentrated/ConcentratedLiquidityPoolFactory.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./ConcentratedLiquidityPool.sol\\\";\\nimport \\\"../PoolDeployer.sol\\\";\\n\\n/// @notice Contract for deploying Trident exchange Concentrated Liquidity Pool with configurations.\\n/// @author Mudit Gupta.\\ncontract ConcentratedLiquidityPoolFactory is PoolDeployer {\\n    constructor(address _masterDeployer) PoolDeployer(_masterDeployer) {}\\n\\n    function deployPool(bytes memory _deployData) external returns (address pool) {\\n        (address tokenA, address tokenB, uint24 swapFee, uint160 price, uint24 tickSpacing) = abi.decode(\\n            _deployData,\\n            (address, address, uint24, uint160, uint24)\\n        );\\n        if (tokenA > tokenB) {\\n            (tokenA, tokenB) = (tokenB, tokenA);\\n        }\\n        // @dev Strips any extra data.\\n        _deployData = abi.encode(tokenA, tokenB, swapFee, price, tickSpacing);\\n\\n        address[] memory tokens = new address[](2);\\n        tokens[0] = tokenA;\\n        tokens[1] = tokenB;\\n\\n        // @dev Salt is not actually needed since `_deployData` is part of creationCode and already contains the salt.\\n        bytes32 salt = keccak256(_deployData);\\n        pool = address(new ConcentratedLiquidityPool{salt: salt}(_deployData, IMasterDeployer(masterDeployer)));\\n        _registerPool(pool, tokens, salt);\\n    }\\n}\\n\",\"keccak256\":\"0x0421a433e666c0120e7418f28b2f8b221989efb2b931c2bf07b7b30db61a5c1a\",\"license\":\"GPL-3.0-or-later\"},\"hardhat/console.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >= 0.4.22 <0.9.0;\\n\\nlibrary console {\\n\\taddress constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);\\n\\n\\tfunction _sendLogPayload(bytes memory payload) private view {\\n\\t\\tuint256 payloadLength = payload.length;\\n\\t\\taddress consoleAddress = CONSOLE_ADDRESS;\\n\\t\\tassembly {\\n\\t\\t\\tlet payloadStart := add(payload, 32)\\n\\t\\t\\tlet r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)\\n\\t\\t}\\n\\t}\\n\\n\\tfunction log() internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log()\\\"));\\n\\t}\\n\\n\\tfunction logInt(int p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(int)\\\", p0));\\n\\t}\\n\\n\\tfunction logUint(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction logString(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction logBool(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction logAddress(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes(bytes memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes1(bytes1 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes1)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes2(bytes2 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes2)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes3(bytes3 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes3)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes4(bytes4 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes4)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes5(bytes5 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes5)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes6(bytes6 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes6)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes7(bytes7 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes7)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes8(bytes8 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes8)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes9(bytes9 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes9)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes10(bytes10 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes10)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes11(bytes11 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes11)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes12(bytes12 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes12)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes13(bytes13 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes13)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes14(bytes14 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes14)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes15(bytes15 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes15)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes16(bytes16 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes16)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes17(bytes17 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes17)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes18(bytes18 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes18)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes19(bytes19 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes19)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes20(bytes20 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes20)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes21(bytes21 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes21)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes22(bytes22 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes22)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes23(bytes23 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes23)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes24(bytes24 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes24)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes25(bytes25 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes25)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes26(bytes26 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes26)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes27(bytes27 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes27)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes28(bytes28 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes28)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes29(bytes29 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes29)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes30(bytes30 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes30)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes31(bytes31 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes31)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes32(bytes32 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes32)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction log(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction log(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction log(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n}\\n\",\"keccak256\":\"0x72b6a1d297cd3b033d7c2e4a7e7864934bb767db6453623f1c3082c6534547f4\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 11688,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolFactory.sol:ConcentratedLiquidityPoolFactory",
                "label": "pools",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_address,t_mapping(t_address,t_array(t_address)dyn_storage))"
              },
              {
                "astId": 11692,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolFactory.sol:ConcentratedLiquidityPoolFactory",
                "label": "configAddress",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_bytes32,t_address)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_address)dyn_storage": {
                "base": "t_address",
                "encoding": "dynamic_array",
                "label": "address[]",
                "numberOfBytes": "32"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_array(t_address)dyn_storage)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => address[])",
                "numberOfBytes": "32",
                "value": "t_array(t_address)dyn_storage"
              },
              "t_mapping(t_address,t_mapping(t_address,t_array(t_address)dyn_storage))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => address[]))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_array(t_address)dyn_storage)"
              },
              "t_mapping(t_bytes32,t_address)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Contract for deploying Trident exchange Concentrated Liquidity Pool with configurations.",
            "version": 1
          }
        }
      },
      "contracts/pool/concentrated/ConcentratedLiquidityPoolHelper.sol": {
        "ConcentratedLiquidityPoolHelper": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IConcentratedLiquidityPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint24",
                  "name": "tickCount",
                  "type": "uint24"
                }
              ],
              "name": "getTickState",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "int24",
                      "name": "index",
                      "type": "int24"
                    },
                    {
                      "internalType": "uint128",
                      "name": "liquidity",
                      "type": "uint128"
                    }
                  ],
                  "internalType": "struct ConcentratedLiquidityPoolHelper.SimpleTick[]",
                  "name": "",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610667806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063f01a1b6814610030575b600080fd5b61004361003e3660046103c0565b610059565b60405161005091906104b9565b60405180910390f35b606060008262ffffff1667ffffffffffffffff81111561007b5761007b6105dd565b6040519080825280602002602001820160405280156100c057816020015b60408051808201909152600080825260208201528152602001906001900390816100995790505b506040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081018290529192507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276185b6101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618610540565b60020b8160020b14610257576040517ff30dba93000000000000000000000000000000000000000000000000000000008152600282900b600482015273ffffffffffffffffffffffffffffffffffffffff88169063f30dba939060240160c06040518083038186803b1580156101b557600080fd5b505afa1580156101c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ed9190610401565b925060405180604001604052808260020b815260200184604001516fffffffffffffffffffffffffffffffff168152508483806102299061051d565b945062ffffff1681518110610240576102406105ae565b602002602001018190525082602001519050610117565b6040517ff30dba93000000000000000000000000000000000000000000000000000000008152600282900b600482015273ffffffffffffffffffffffffffffffffffffffff88169063f30dba939060240160c06040518083038186803b1580156102c057600080fd5b505afa1580156102d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f89190610401565b925060405180604001604052807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761861032f90610540565b60020b815260200184604001516fffffffffffffffffffffffffffffffff16815250848362ffffff1681518110610368576103686105ae565b6020908102919091010152509195945050505050565b8051600281900b811461039057600080fd5b919050565b80516fffffffffffffffffffffffffffffffff8116811461039057600080fd5b80516103908161060c565b600080604083850312156103d357600080fd5b82356103de8161060c565b9150602083013562ffffff811681146103f657600080fd5b809150509250929050565b600060c0828403121561041357600080fd5b60405160c0810181811067ffffffffffffffff8211171561045d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526104698361037e565b81526104776020840161037e565b602082015261048860408401610395565b604082015260608301516060820152608083015160808201526104ad60a084016103b5565b60a08201529392505050565b602080825282518282018190526000919060409081850190868401855b82811015610510578151805160020b85528601516fffffffffffffffffffffffffffffffff168685015292840192908501906001016104d6565b5091979650505050505050565b600062ffffff808316818114156105365761053661057f565b6001019392505050565b60008160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008114156105765761057661057f565b60000392915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461062e57600080fd5b5056fea2646970667358221220d78b4e577500a69faefb04d83122c31450167d81becd98607d5bf7239600e55764736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x667 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xF01A1B68 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x3C0 JUMP JUMPDEST PUSH2 0x59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x4B9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH3 0xFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7B JUMPI PUSH2 0x7B PUSH2 0x5DD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC0 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x99 JUMPI SWAP1 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 JUMPDEST PUSH2 0x140 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x540 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x2 SIGNEXTEND EQ PUSH2 0x257 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF30DBA9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0xF30DBA93 SWAP1 PUSH1 0x24 ADD PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1ED SWAP2 SWAP1 PUSH2 0x401 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x40 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP5 DUP4 DUP1 PUSH2 0x229 SWAP1 PUSH2 0x51D JUMP JUMPDEST SWAP5 POP PUSH3 0xFFFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x240 JUMPI PUSH2 0x240 PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP3 PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH2 0x117 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF30DBA9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0xF30DBA93 SWAP1 PUSH1 0x24 ADD PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F8 SWAP2 SWAP1 PUSH2 0x401 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x32F SWAP1 PUSH2 0x540 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x40 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP5 DUP4 PUSH3 0xFFFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x368 JUMPI PUSH2 0x368 PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x390 DUP2 PUSH2 0x60C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3DE DUP2 PUSH2 0x60C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x45D JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x469 DUP4 PUSH2 0x37E JUMP JUMPDEST DUP2 MSTORE PUSH2 0x477 PUSH1 0x20 DUP5 ADD PUSH2 0x37E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x488 PUSH1 0x40 DUP5 ADD PUSH2 0x395 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x4AD PUSH1 0xA0 DUP5 ADD PUSH2 0x3B5 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x510 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH1 0x2 SIGNEXTEND DUP6 MSTORE DUP7 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4D6 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xFFFFFF DUP1 DUP4 AND DUP2 DUP2 EQ ISZERO PUSH2 0x536 JUMPI PUSH2 0x536 PUSH2 0x57F JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000 DUP2 EQ ISZERO PUSH2 0x576 JUMPI PUSH2 0x576 PUSH2 0x57F JUMP JUMPDEST PUSH1 0x0 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x62E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD7 DUP12 0x4E JUMPI PUSH22 0xA69FAEFB04D83122C31450167D81BECD98607D5BF7 0x23 SWAP7 STOP 0xE5 JUMPI PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "339:818:48:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@getTickState_14878": {
                  "entryPoint": 89,
                  "id": 14878,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_int24_fromMemory": {
                  "entryPoint": 894,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_contract$_IConcentratedLiquidityPool_$2753t_uint24": {
                  "entryPoint": 960,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_struct$_Tick_$4235_memory_ptr_fromMemory": {
                  "entryPoint": 1025,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_uint128_fromMemory": {
                  "entryPoint": 917,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_uint160_fromMemory": {
                  "entryPoint": 949,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_struct$_SimpleTick_$14790_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_SimpleTick_$14790_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 1209,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_int24__to_t_int24__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint24": {
                  "entryPoint": 1309,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "negate_t_int24": {
                  "entryPoint": 1344,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 1407,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 1454,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 1501,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_contract_IConcentratedLiquidityPool": {
                  "entryPoint": 1548,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:4275:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "72:106:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "82:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "97:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "91:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "91:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "82:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "156:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "165:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "168:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "158:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "158:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "158:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "126:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "144:1:64",
                                            "type": "",
                                            "value": "2"
                                          },
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "147:5:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "signextend",
                                          "nodeType": "YulIdentifier",
                                          "src": "133:10:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "133:20:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "123:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "123:31:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "116:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "116:39:64"
                              },
                              "nodeType": "YulIf",
                              "src": "113:59:64"
                            }
                          ]
                        },
                        "name": "abi_decode_int24_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "51:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "62:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:164:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "243:132:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "253:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "268:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "262:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "262:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "253:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "353:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "362:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "365:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "355:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "355:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "355:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "297:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "308:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "315:34:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "304:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "304:46:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "294:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "294:57:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "287:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "287:65:64"
                              },
                              "nodeType": "YulIf",
                              "src": "284:85:64"
                            }
                          ]
                        },
                        "name": "abi_decode_uint128_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "222:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "233:5:64",
                            "type": ""
                          }
                        ],
                        "src": "183:192:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "440:106:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "450:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "465:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "459:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "459:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "450:5:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "534:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_IConcentratedLiquidityPool",
                                  "nodeType": "YulIdentifier",
                                  "src": "481:52:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "481:59:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "481:59:64"
                            }
                          ]
                        },
                        "name": "abi_decode_uint160_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "419:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "430:5:64",
                            "type": ""
                          }
                        ],
                        "src": "380:166:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "672:359:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "718:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "727:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "730:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "720:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "720:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "720:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "693:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "702:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "689:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "689:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "714:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "685:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "685:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "682:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "743:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "769:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "756:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "756:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "747:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "841:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_IConcentratedLiquidityPool",
                                  "nodeType": "YulIdentifier",
                                  "src": "788:52:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "788:59:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "788:59:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "856:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "866:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "856:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "880:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "912:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "923:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "908:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "908:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "895:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "895:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "884:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "983:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "992:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "995:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "985:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "985:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "985:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "949:7:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "962:7:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "971:8:64",
                                            "type": "",
                                            "value": "0xffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "958:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "958:22:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "946:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "946:35:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "939:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "939:43:64"
                              },
                              "nodeType": "YulIf",
                              "src": "936:63:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1008:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1018:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1008:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_IConcentratedLiquidityPool_$2753t_uint24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "630:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "641:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "653:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "661:6:64",
                            "type": ""
                          }
                        ],
                        "src": "551:480:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1139:883:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1186:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1195:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1198:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1188:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1188:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1188:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1160:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1169:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1156:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1156:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1181:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1152:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1152:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1149:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1211:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1231:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1225:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1225:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1215:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1243:34:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1265:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1273:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1261:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1261:16:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1247:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1360:168:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1381:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1384:77:64",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1374:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1374:88:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1374:88:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1482:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1485:4:64",
                                          "type": "",
                                          "value": "0x41"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1475:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1475:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1475:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1510:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1513:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1503:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1503:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1503:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1295:10:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1307:18:64",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1292:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1292:34:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1331:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1343:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1328:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1328:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1289:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1289:62:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1286:242:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1544:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1548:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1537:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1537:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1537:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1575:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1611:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_int24_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "1583:27:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1583:38:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1568:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1568:54:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1568:54:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1642:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1650:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1638:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1638:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "1687:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1698:2:64",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1683:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1683:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_int24_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "1655:27:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1655:47:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1631:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1631:72:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1631:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1723:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1731:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1719:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1719:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "1770:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1781:2:64",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1766:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1766:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint128_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "1736:29:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1736:49:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1712:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1712:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1712:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1806:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1814:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1802:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1802:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "1829:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1840:2:64",
                                            "type": "",
                                            "value": "96"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1825:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1825:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "1819:5:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1819:25:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1795:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1795:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1795:50:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1865:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1873:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1861:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1861:16:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "1889:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1900:3:64",
                                            "type": "",
                                            "value": "128"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1885:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1885:19:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "1879:5:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1879:26:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1854:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1854:52:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1854:52:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1926:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1934:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1922:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1922:16:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "1974:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1985:3:64",
                                            "type": "",
                                            "value": "160"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1970:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1970:19:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint160_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "1940:29:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1940:50:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1915:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1915:76:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1915:76:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2000:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "2010:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2000:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_Tick_$4235_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1105:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1116:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1128:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1036:986:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2236:643:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2246:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2256:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2250:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2267:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2285:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2296:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2281:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2281:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2271:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2315:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2326:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2308:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2308:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2308:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2338:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "2349:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "2342:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2364:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2384:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2378:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2378:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2368:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2407:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2415:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2400:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2400:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2400:22:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2431:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2441:2:64",
                                "type": "",
                                "value": "64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2435:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2452:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2463:9:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2474:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2459:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2459:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "2452:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2486:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2504:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2512:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2500:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2500:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2490:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2524:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2533:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "2528:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2592:261:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2606:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "2622:6:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "2616:5:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2616:13:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "2610:2:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "2649:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2665:1:64",
                                              "type": "",
                                              "value": "2"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2674:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "2668:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2668:9:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "signextend",
                                            "nodeType": "YulIdentifier",
                                            "src": "2654:10:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2654:24:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2642:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2642:37:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2642:37:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "2703:3:64"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "2708:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2699:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2699:12:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_3",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2727:2:64"
                                                    },
                                                    {
                                                      "name": "_1",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2731:2:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2723:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2723:11:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "2717:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2717:18:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2737:34:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "2713:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2713:59:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2692:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2692:81:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2692:81:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2786:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "2797:3:64"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "2802:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2793:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2793:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2786:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2818:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "2832:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "2840:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2828:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2828:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2818:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2554:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2557:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2551:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2551:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2565:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2567:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "2576:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2579:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2572:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2572:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "2567:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2547:3:64",
                                "statements": []
                              },
                              "src": "2543:310:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2862:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "2870:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2862:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_struct$_SimpleTick_$14790_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_SimpleTick_$14790_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2205:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2216:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2227:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2027:852:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2981:91:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2991:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3003:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3014:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2999:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2999:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2991:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3033:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3055:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3058:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "3044:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3044:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3026:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3026:40:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3026:40:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_int24__to_t_int24__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2950:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2961:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2972:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2884:188:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3123:153:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3133:18:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3143:8:64",
                                "type": "",
                                "value": "0xffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3137:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3160:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3179:5:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3186:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "3175:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3175:14:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3164:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3217:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "3219:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3219:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3219:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3204:7:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3213:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "3201:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3201:15:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3198:41:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3248:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3259:7:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3268:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3255:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3255:15:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "3248:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3105:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "3115:3:64",
                            "type": ""
                          }
                        ],
                        "src": "3077:199:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3323:196:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3333:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3359:1:64",
                                    "type": "",
                                    "value": "2"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3362:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "signextend",
                                  "nodeType": "YulIdentifier",
                                  "src": "3348:10:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3348:20:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3337:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3460:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "3462:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3462:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3462:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3383:7:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3392:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "3380:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3380:79:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3377:105:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3491:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3502:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3505:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "3498:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3498:15:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "3491:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "negate_t_int24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3305:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "3315:3:64",
                            "type": ""
                          }
                        ],
                        "src": "3281:238:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3556:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3573:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3576:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3566:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3566:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3566:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3670:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3673:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3663:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3663:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3663:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3694:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3697:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "3687:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3687:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3687:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "3524:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3745:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3762:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3765:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3755:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3755:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3755:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3859:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3862:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3852:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3852:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3852:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3883:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3886:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "3876:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3876:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3876:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "3713:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3934:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3951:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3954:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3944:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3944:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3944:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4048:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4051:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4041:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4041:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4041:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4072:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4075:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "4065:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4065:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4065:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "3902:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4164:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4251:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4260:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4263:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4253:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4253:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4253:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "4187:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "4198:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4205:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "4194:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4194:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "4184:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4184:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4177:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4177:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4174:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_contract_IConcentratedLiquidityPool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "4153:5:64",
                            "type": ""
                          }
                        ],
                        "src": "4091:182:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_int24_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, signextend(2, value))) { revert(0, 0) }\n    }\n    function abi_decode_uint128_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_uint160_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        validator_revert_contract_IConcentratedLiquidityPool(value)\n    }\n    function abi_decode_tuple_t_contract$_IConcentratedLiquidityPool_$2753t_uint24(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_contract_IConcentratedLiquidityPool(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, and(value_1, 0xffffff))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_struct$_Tick_$4235_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 192)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x41)\n            revert(0, 0x24)\n        }\n        mstore(64, newFreePtr)\n        mstore(memPtr, abi_decode_int24_fromMemory(headStart))\n        mstore(add(memPtr, 32), abi_decode_int24_fromMemory(add(headStart, 32)))\n        mstore(add(memPtr, 64), abi_decode_uint128_fromMemory(add(headStart, 64)))\n        mstore(add(memPtr, 96), mload(add(headStart, 96)))\n        mstore(add(memPtr, 128), mload(add(headStart, 128)))\n        mstore(add(memPtr, 160), abi_decode_uint160_fromMemory(add(headStart, 160)))\n        value0 := memPtr\n    }\n    function abi_encode_tuple_t_array$_t_struct$_SimpleTick_$14790_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_SimpleTick_$14790_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        let _2 := 64\n        pos := add(headStart, _2)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _3 := mload(srcPtr)\n            mstore(pos, signextend(2, mload(_3)))\n            mstore(add(pos, _1), and(mload(add(_3, _1)), 0xffffffffffffffffffffffffffffffff))\n            pos := add(pos, _2)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_int24__to_t_int24__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, signextend(2, value0))\n    }\n    function increment_t_uint24(value) -> ret\n    {\n        let _1 := 0xffffff\n        let value_1 := and(value, _1)\n        if eq(value_1, _1) { panic_error_0x11() }\n        ret := add(value_1, 1)\n    }\n    function negate_t_int24(value) -> ret\n    {\n        let value_1 := signextend(2, value)\n        if eq(value_1, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000) { panic_error_0x11() }\n        ret := sub(0, value_1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_contract_IConcentratedLiquidityPool(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c8063f01a1b6814610030575b600080fd5b61004361003e3660046103c0565b610059565b60405161005091906104b9565b60405180910390f35b606060008262ffffff1667ffffffffffffffff81111561007b5761007b6105dd565b6040519080825280602002602001820160405280156100c057816020015b60408051808201909152600080825260208201528152602001906001900390816100995790505b506040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081018290529192507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276185b6101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618610540565b60020b8160020b14610257576040517ff30dba93000000000000000000000000000000000000000000000000000000008152600282900b600482015273ffffffffffffffffffffffffffffffffffffffff88169063f30dba939060240160c06040518083038186803b1580156101b557600080fd5b505afa1580156101c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ed9190610401565b925060405180604001604052808260020b815260200184604001516fffffffffffffffffffffffffffffffff168152508483806102299061051d565b945062ffffff1681518110610240576102406105ae565b602002602001018190525082602001519050610117565b6040517ff30dba93000000000000000000000000000000000000000000000000000000008152600282900b600482015273ffffffffffffffffffffffffffffffffffffffff88169063f30dba939060240160c06040518083038186803b1580156102c057600080fd5b505afa1580156102d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f89190610401565b925060405180604001604052807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761861032f90610540565b60020b815260200184604001516fffffffffffffffffffffffffffffffff16815250848362ffffff1681518110610368576103686105ae565b6020908102919091010152509195945050505050565b8051600281900b811461039057600080fd5b919050565b80516fffffffffffffffffffffffffffffffff8116811461039057600080fd5b80516103908161060c565b600080604083850312156103d357600080fd5b82356103de8161060c565b9150602083013562ffffff811681146103f657600080fd5b809150509250929050565b600060c0828403121561041357600080fd5b60405160c0810181811067ffffffffffffffff8211171561045d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526104698361037e565b81526104776020840161037e565b602082015261048860408401610395565b604082015260608301516060820152608083015160808201526104ad60a084016103b5565b60a08201529392505050565b602080825282518282018190526000919060409081850190868401855b82811015610510578151805160020b85528601516fffffffffffffffffffffffffffffffff168685015292840192908501906001016104d6565b5091979650505050505050565b600062ffffff808316818114156105365761053661057f565b6001019392505050565b60008160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008114156105765761057661057f565b60000392915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461062e57600080fd5b5056fea2646970667358221220d78b4e577500a69faefb04d83122c31450167d81becd98607d5bf7239600e55764736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xF01A1B68 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43 PUSH2 0x3E CALLDATASIZE PUSH1 0x4 PUSH2 0x3C0 JUMP JUMPDEST PUSH2 0x59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x50 SWAP2 SWAP1 PUSH2 0x4B9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP3 PUSH3 0xFFFFFF AND PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x7B JUMPI PUSH2 0x7B PUSH2 0x5DD JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xC0 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x99 JUMPI SWAP1 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP3 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 JUMPDEST PUSH2 0x140 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x540 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x2 SIGNEXTEND EQ PUSH2 0x257 JUMPI PUSH1 0x40 MLOAD PUSH32 0xF30DBA9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0xF30DBA93 SWAP1 PUSH1 0x24 ADD PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1ED SWAP2 SWAP1 PUSH2 0x401 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x40 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP5 DUP4 DUP1 PUSH2 0x229 SWAP1 PUSH2 0x51D JUMP JUMPDEST SWAP5 POP PUSH3 0xFFFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x240 JUMPI PUSH2 0x240 PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP3 PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH2 0x117 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF30DBA9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND PUSH1 0x4 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0xF30DBA93 SWAP1 PUSH1 0x24 ADD PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2D4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2F8 SWAP2 SWAP1 PUSH2 0x401 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x32F SWAP1 PUSH2 0x540 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x40 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP5 DUP4 PUSH3 0xFFFFFF AND DUP2 MLOAD DUP2 LT PUSH2 0x368 JUMPI PUSH2 0x368 PUSH2 0x5AE JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x390 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x390 DUP2 PUSH2 0x60C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3DE DUP2 PUSH2 0x60C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH3 0xFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x45D JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x469 DUP4 PUSH2 0x37E JUMP JUMPDEST DUP2 MSTORE PUSH2 0x477 PUSH1 0x20 DUP5 ADD PUSH2 0x37E JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x488 PUSH1 0x40 DUP5 ADD PUSH2 0x395 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x4AD PUSH1 0xA0 DUP5 ADD PUSH2 0x3B5 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x510 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH1 0x2 SIGNEXTEND DUP6 MSTORE DUP7 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4D6 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xFFFFFF DUP1 DUP4 AND DUP2 DUP2 EQ ISZERO PUSH2 0x536 JUMPI PUSH2 0x536 PUSH2 0x57F JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000 DUP2 EQ ISZERO PUSH2 0x576 JUMPI PUSH2 0x576 PUSH2 0x57F JUMP JUMPDEST PUSH1 0x0 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x62E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD7 DUP12 0x4E JUMPI PUSH22 0xA69FAEFB04D83122C31450167D81BECD98607D5BF7 0x23 SWAP7 STOP 0xE5 JUMPI PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "339:818:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;465:690;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;561:19;592:25;637:9;620:27;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;620:27:48;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;592:55:48;;-1:-1:-1;540:7:28;796:207:48;705:9:28;540:7;705:9;:::i;:::-;803:28:48;;:7;:28;;;796:207;;854:19;;;;;3055:1:64;3044:21;;;854:19:48;;;3026:40:64;854:10:48;;;;;;2999:18:64;;854:19:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;847:26;;900:55;;;;;;;;919:7;900:55;;;;;;939:4;:14;;;900:55;;;;;887:5;893:3;;;;;:::i;:::-;;;887:10;;;;;;;;;;:::i;:::-;;;;;;:68;;;;979:4;:13;;;969:23;;796:207;;;1020:19;;;;;3055:1:64;3044:21;;;1020:19:48;;;3026:40:64;1020:10:48;;;;;;2999:18:64;;1020:19:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1013:26;;1060:65;;;;;;;;540:7:28;705:9;;;:::i;:::-;1060:65:48;;;;;;1109:4;:14;;;1060:65;;;;;1049:5;1055:1;1049:8;;;;;;;;;;:::i;:::-;;;;;;;;;;:76;-1:-1:-1;1143:5:48;;465:690;-1:-1:-1;;;;;465:690:48:o;14:164:64:-;91:13;;144:1;133:20;;;123:31;;113:59;;168:1;165;158:12;113:59;14:164;;;:::o;183:192::-;262:13;;315:34;304:46;;294:57;;284:85;;365:1;362;355:12;380:166;459:13;;481:59;459:13;481:59;:::i;551:480::-;653:6;661;714:2;702:9;693:7;689:23;685:32;682:52;;;730:1;727;720:12;682:52;769:9;756:23;788:59;841:5;788:59;:::i;:::-;866:5;-1:-1:-1;923:2:64;908:18;;895:32;971:8;958:22;;946:35;;936:63;;995:1;992;985:12;936:63;1018:7;1008:17;;;551:480;;;;;:::o;1036:986::-;1128:6;1181:3;1169:9;1160:7;1156:23;1152:33;1149:53;;;1198:1;1195;1188:12;1149:53;1231:2;1225:9;1273:3;1265:6;1261:16;1343:6;1331:10;1328:22;1307:18;1295:10;1292:34;1289:62;1286:242;;;1384:77;1381:1;1374:88;1485:4;1482:1;1475:15;1513:4;1510:1;1503:15;1286:242;1544:2;1537:22;1583:38;1611:9;1583:38;:::i;:::-;1575:6;1568:54;1655:47;1698:2;1687:9;1683:18;1655:47;:::i;:::-;1650:2;1642:6;1638:15;1631:72;1736:49;1781:2;1770:9;1766:18;1736:49;:::i;:::-;1731:2;1723:6;1719:15;1712:74;1840:2;1829:9;1825:18;1819:25;1814:2;1806:6;1802:15;1795:50;1900:3;1889:9;1885:19;1879:26;1873:3;1865:6;1861:16;1854:52;1940:50;1985:3;1974:9;1970:19;1940:50;:::i;:::-;1934:3;1922:16;;1915:76;1926:6;1036:986;-1:-1:-1;;;1036:986:64:o;2027:852::-;2256:2;2308:21;;;2378:13;;2281:18;;;2400:22;;;2227:4;;2256:2;2441;;2459:18;;;;2500:15;;;2227:4;2543:310;2557:6;2554:1;2551:13;2543:310;;;2616:13;;2668:9;;2665:1;2654:24;2642:37;;2723:11;;2717:18;2737:34;2713:59;2699:12;;;2692:81;2793:12;;;;2828:15;;;;2579:1;2572:9;2543:310;;;-1:-1:-1;2870:3:64;;2027:852;-1:-1:-1;;;;;;;2027:852:64:o;3077:199::-;3115:3;3143:8;3186:2;3179:5;3175:14;3213:2;3204:7;3201:15;3198:41;;;3219:18;;:::i;:::-;3268:1;3255:15;;3077:199;-1:-1:-1;;;3077:199:64:o;3281:238::-;3315:3;3362:5;3359:1;3348:20;3392:66;3383:7;3380:79;3377:105;;;3462:18;;:::i;:::-;3502:1;3498:15;;3281:238;-1:-1:-1;;3281:238:64:o;3524:184::-;3576:77;3573:1;3566:88;3673:4;3670:1;3663:15;3697:4;3694:1;3687:15;3713:184;3765:77;3762:1;3755:88;3862:4;3859:1;3852:15;3886:4;3883:1;3876:15;3902:184;3954:77;3951:1;3944:88;4051:4;4048:1;4041:15;4075:4;4072:1;4065:15;4091:182;4205:42;4198:5;4194:54;4187:5;4184:65;4174:93;;4263:1;4260;4253:12;4174:93;4091:182;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "327800",
                "executionCost": "368",
                "totalCost": "328168"
              },
              "external": {
                "getTickState(address,uint24)": "infinite"
              }
            },
            "methodIdentifiers": {
              "getTickState(address,uint24)": "f01a1b68"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IConcentratedLiquidityPool\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"tickCount\",\"type\":\"uint24\"}],\"name\":\"getTickState\",\"outputs\":[{\"components\":[{\"internalType\":\"int24\",\"name\":\"index\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"internalType\":\"struct ConcentratedLiquidityPoolHelper.SimpleTick[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Trident Concentrated Liquidity Pool periphery contract to read state.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/concentrated/ConcentratedLiquidityPoolHelper.sol\":\"ConcentratedLiquidityPoolHelper\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/concentratedPool/IConcentratedLiquidityPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./../IPool.sol\\\";\\nimport \\\"./../IBentoBoxMinimal.sol\\\";\\nimport \\\"./../IMasterDeployer.sol\\\";\\nimport \\\"../../libraries/concentratedPool/Ticks.sol\\\";\\n\\n/// @notice Trident Concentrated Liquidity Pool interface.\\ninterface IConcentratedLiquidityPool is IPool {\\n    function price() external view returns (uint160);\\n\\n    function token0() external view returns (address);\\n\\n    function token1() external view returns (address);\\n\\n    function ticks(int24 _tick) external view returns (Ticks.Tick memory tick);\\n\\n    function feeGrowthGlobal0() external view returns (uint256);\\n\\n    function feeGrowthGlobal1() external view returns (uint256);\\n\\n    function rangeFeeGrowth(int24 lowerTick, int24 upperTick) external view returns (uint256 feeGrowthInside0, uint256 feeGrowthInside1);\\n\\n    function collect(\\n        int24,\\n        int24,\\n        address,\\n        bool\\n    ) external returns (uint256 amount0fees, uint256 amount1fees);\\n\\n    function decreaseLiquidity(\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        address recipient,\\n        bool unwrapBento\\n    )\\n        external\\n        returns (\\n            TokenAmount[] memory withdrawnAmounts,\\n            TokenAmount[] memory feesWithdrawn,\\n            uint256 oldLiquidity\\n        );\\n\\n    function getImmutables()\\n        external\\n        view\\n        returns (\\n            uint128 _MAX_TICK_LIQUIDITY,\\n            uint24 _tickSpacing,\\n            uint24 _swapFee,\\n            address _barFeeTo,\\n            IBentoBoxMinimal _bento,\\n            IMasterDeployer _masterDeployer,\\n            address _token0,\\n            address _token1\\n        );\\n\\n    function getPriceAndNearestTicks() external view returns (uint160 _price, int24 _nearestTick);\\n\\n    function getTokenProtocolFees() external view returns (uint128 _token0ProtocolFee, uint128 _token1ProtocolFee);\\n\\n    function getReserves() external view returns (uint128 _reserve0, uint128 _reserve1);\\n\\n    function getSecondsGrowthAndLastObservation() external view returns (uint160 _secondGrowthGlobal, uint32 _lastObservation);\\n}\\n\",\"keccak256\":\"0xf36fa12652a134eb2b8bfe1cde732ff493fd8b4afa3c290ccd12bb77f04af277\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/concentratedPool/TickMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Math library for computing sqrt price for ticks of size 1.0001, i.e., sqrt(1.0001^tick) as fixed point Q64.96 numbers - supports\\n/// prices between 2**-128 and 2**128 - 1.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/TickMath.sol.\\nlibrary TickMath {\\n    /// @dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128.\\n    int24 internal constant MIN_TICK = -887272;\\n    /// @dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128 - 1.\\n    int24 internal constant MAX_TICK = -MIN_TICK;\\n    /// @dev The minimum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MIN_TICK).\\n    uint160 internal constant MIN_SQRT_RATIO = 4295128739;\\n    /// @dev The maximum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MAX_TICK).\\n    uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;\\n\\n    error TickOutOfBounds();\\n    error PriceOutOfBounds();\\n\\n    /// @notice Calculates sqrt(1.0001^tick) * 2^96.\\n    /// @dev Throws if |tick| > max tick.\\n    /// @param tick The input tick for the above formula.\\n    /// @return sqrtPriceX96 Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\\n    /// at the given tick.\\n    function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {\\n        uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));\\n        if (absTick > uint256(uint24(MAX_TICK))) revert TickOutOfBounds();\\n        unchecked {\\n            uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;\\n            if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;\\n            if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;\\n            if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;\\n            if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;\\n            if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;\\n            if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;\\n            if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;\\n            if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;\\n            if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;\\n            if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;\\n            if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;\\n            if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;\\n            if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;\\n            if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;\\n            if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;\\n            if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;\\n            if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;\\n            if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;\\n            if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;\\n\\n            if (tick > 0) ratio = type(uint256).max / ratio;\\n            // This divides by 1<<32 rounding up to go from a Q128.128 to a Q128.96.\\n            // We then downcast because we know the result always fits within 160 bits due to our tick input constraint.\\n            // We round up in the division so getTickAtSqrtRatio of the output price is always consistent.\\n            sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));\\n        }\\n    }\\n\\n    /// @notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio.\\n    /// @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\\n    /// ever return.\\n    /// @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96.\\n    /// @return tick The greatest tick for which the ratio is less than or equal to the input ratio.\\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {\\n        // Second inequality must be < because the price can never reach the price at the max tick.\\n        if (sqrtPriceX96 < MIN_SQRT_RATIO || sqrtPriceX96 >= MAX_SQRT_RATIO) revert PriceOutOfBounds();\\n        uint256 ratio = uint256(sqrtPriceX96) << 32;\\n\\n        uint256 r = ratio;\\n        uint256 msb;\\n\\n        assembly {\\n            let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(5, gt(r, 0xFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(4, gt(r, 0xFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(3, gt(r, 0xFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(2, gt(r, 0xF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(1, gt(r, 0x3))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := gt(r, 0x1)\\n            msb := or(msb, f)\\n        }\\n        unchecked {\\n            if (msb >= 128) r = ratio >> (msb - 127);\\n            else r = ratio << (127 - msb);\\n\\n            int256 log_2 = (int256(msb) - 128) << 64;\\n\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(63, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(62, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(61, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(60, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(59, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(58, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(57, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(56, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(55, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(54, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(53, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(52, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(51, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(50, f))\\n            }\\n\\n            int256 log_sqrt10001 = log_2 * 255738958999603826347141; // 128.128 number.\\n\\n            int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);\\n            int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);\\n\\n            tick = tickLow == tickHi ? tickLow : getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x78121358a23f8c7f267cc4622b3cd0d94970018c637c61a9f2e99a0fa40b7bda\",\"license\":\"GPL-2.0-or-later\"},\"contracts/libraries/concentratedPool/Ticks.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./TickMath.sol\\\";\\nimport \\\"hardhat/console.sol\\\";\\n\\n/// @notice Tick management library for ranged liquidity.\\nlibrary Ticks {\\n    struct Tick {\\n        int24 previousTick;\\n        int24 nextTick;\\n        uint128 liquidity;\\n        uint256 feeGrowthOutside0; // Per unit of liquidity.\\n        uint256 feeGrowthOutside1;\\n        uint160 secondsGrowthOutside;\\n    }\\n\\n    function getMaxLiquidity(uint24 _tickSpacing) public pure returns (uint128) {\\n        return type(uint128).max / uint128(uint24(TickMath.MAX_TICK) / (2 * uint24(_tickSpacing)));\\n    }\\n\\n    function cross(\\n        mapping(int24 => Tick) storage ticks,\\n        int24 nextTickToCross,\\n        uint160 secondsGrowthGlobal,\\n        uint256 currentLiquidity,\\n        uint256 feeGrowthGlobalA,\\n        uint256 feeGrowthGlobalB,\\n        bool zeroForOne,\\n        uint24 tickSpacing\\n    ) internal returns (uint256, int24) {\\n        ticks[nextTickToCross].secondsGrowthOutside = secondsGrowthGlobal - ticks[nextTickToCross].secondsGrowthOutside;\\n\\n        if (zeroForOne) {\\n            // Moving forward through the linked list.\\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\\n                currentLiquidity -= ticks[nextTickToCross].liquidity; // todo wrap in unchecked {}\\n            } else {\\n                currentLiquidity += ticks[nextTickToCross].liquidity;\\n            }\\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside0;\\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside1;\\n            nextTickToCross = ticks[nextTickToCross].previousTick;\\n        } else {\\n            // Moving backwards through the linked list.\\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\\n                currentLiquidity += ticks[nextTickToCross].liquidity;\\n            } else {\\n                currentLiquidity -= ticks[nextTickToCross].liquidity;\\n            }\\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside1;\\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside0;\\n            nextTickToCross = ticks[nextTickToCross].nextTick;\\n        }\\n        return (currentLiquidity, nextTickToCross);\\n    }\\n\\n    function insert(\\n        mapping(int24 => Tick) storage ticks,\\n        uint256 feeGrowthGlobal0,\\n        uint256 feeGrowthGlobal1,\\n        uint160 secondsGrowthGlobal,\\n        int24 lowerOld,\\n        int24 lower,\\n        int24 upperOld,\\n        int24 upper,\\n        uint128 amount,\\n        int24 nearestTick,\\n        uint160 currentPrice\\n    ) public returns (int24) {\\n        require(lower < upper, \\\"WRONG_ORDER\\\");\\n        require(TickMath.MIN_TICK <= lower, \\\"LOWER_RANGE\\\");\\n        require(upper <= TickMath.MAX_TICK, \\\"UPPER_RANGE\\\");\\n\\n        {\\n            // Stack overflow.\\n            uint128 currentLowerLiquidity = ticks[lower].liquidity;\\n            if (currentLowerLiquidity != 0 || lower == TickMath.MIN_TICK) {\\n                // We are adding liquidity to an existing tick.\\n                ticks[lower].liquidity = currentLowerLiquidity + amount;\\n            } else {\\n                // We are inserting a new tick.\\n                Ticks.Tick storage old = ticks[lowerOld];\\n                int24 oldNextTick = old.nextTick;\\n\\n                require((old.liquidity != 0 || lowerOld == TickMath.MIN_TICK) && lowerOld < lower && lower < oldNextTick, \\\"LOWER_ORDER\\\");\\n\\n                if (lower <= nearestTick) {\\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\\n                } else {\\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, 0, 0, 0);\\n                }\\n\\n                old.nextTick = lower;\\n                ticks[oldNextTick].previousTick = lower;\\n            }\\n        }\\n\\n        uint128 currentUpperLiquidity = ticks[upper].liquidity;\\n        if (currentUpperLiquidity != 0 || upper == TickMath.MAX_TICK) {\\n            // We are adding liquidity to an existing tick.\\n            ticks[upper].liquidity = currentUpperLiquidity + amount;\\n        } else {\\n            // Inserting a new tick.\\n            Ticks.Tick storage old = ticks[upperOld];\\n            int24 oldNextTick = old.nextTick;\\n\\n            require(old.liquidity != 0 && oldNextTick > upper && upperOld < upper, \\\"UPPER_ORDER\\\");\\n\\n            if (upper <= nearestTick) {\\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\\n            } else {\\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, 0, 0, 0);\\n            }\\n            old.nextTick = upper;\\n            ticks[oldNextTick].previousTick = upper;\\n        }\\n\\n        int24 actualNearestTick = TickMath.getTickAtSqrtRatio(currentPrice);\\n\\n        if (nearestTick < upper && upper <= actualNearestTick) {\\n            nearestTick = upper;\\n        } else if (nearestTick < lower && lower <= actualNearestTick) {\\n            nearestTick = lower;\\n        }\\n\\n        return nearestTick;\\n    }\\n\\n    function remove(\\n        mapping(int24 => Tick) storage ticks,\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        int24 nearestTick\\n    ) public returns (int24) {\\n        Ticks.Tick storage current = ticks[lower];\\n\\n        if (lower != TickMath.MIN_TICK && current.liquidity == amount) {\\n            // Delete lower tick.\\n            Ticks.Tick storage previous = ticks[current.previousTick];\\n            Ticks.Tick storage next = ticks[current.nextTick];\\n\\n            previous.nextTick = current.nextTick;\\n            next.previousTick = current.previousTick;\\n\\n            if (nearestTick == lower) nearestTick = current.previousTick;\\n\\n            delete ticks[lower];\\n        } else {\\n            unchecked {\\n                current.liquidity -= amount;\\n            }\\n        }\\n\\n        current = ticks[upper];\\n\\n        if (upper != TickMath.MAX_TICK && current.liquidity == amount) {\\n            // Delete upper tick.\\n            Ticks.Tick storage previous = ticks[current.previousTick];\\n            Ticks.Tick storage next = ticks[current.nextTick];\\n\\n            previous.nextTick = current.nextTick;\\n            next.previousTick = current.previousTick;\\n\\n            if (nearestTick == upper) nearestTick = current.previousTick;\\n\\n            delete ticks[upper];\\n        } else {\\n            unchecked {\\n                current.liquidity -= amount;\\n            }\\n        }\\n\\n        return nearestTick;\\n    }\\n}\\n\",\"keccak256\":\"0x3c5bb30d7769f72aad064ab482c1237a794fd1e16fc85c444255227cf93b65d2\",\"license\":\"GPL-2.0-or-later\"},\"contracts/pool/concentrated/ConcentratedLiquidityPoolHelper.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../../interfaces/concentratedPool/IConcentratedLiquidityPool.sol\\\";\\nimport \\\"../../libraries/concentratedPool/TickMath.sol\\\";\\nimport \\\"../../libraries/concentratedPool/Ticks.sol\\\";\\n\\n/// @notice Trident Concentrated Liquidity Pool periphery contract to read state.\\ncontract ConcentratedLiquidityPoolHelper {\\n    struct SimpleTick {\\n        int24 index;\\n        uint128 liquidity;\\n    }\\n\\n    function getTickState(IConcentratedLiquidityPool pool, uint24 tickCount) external view returns (SimpleTick[] memory) {\\n        SimpleTick[] memory ticks = new SimpleTick[](tickCount); // todo save tickCount in the core contract\\n\\n        Ticks.Tick memory tick;\\n        uint24 i;\\n        int24 current = TickMath.MIN_TICK;\\n\\n        while (current != TickMath.MAX_TICK) {\\n            tick = pool.ticks(current);\\n            ticks[i++] = SimpleTick({index: current, liquidity: tick.liquidity});\\n            current = tick.nextTick;\\n        }\\n\\n        tick = pool.ticks(current);\\n        ticks[i] = SimpleTick({index: TickMath.MAX_TICK, liquidity: tick.liquidity});\\n\\n        return ticks;\\n    }\\n}\\n\",\"keccak256\":\"0x6e10f36ab6773fceb74c490e1915d590c7440ff689dc3a1e494b5be7515874b7\",\"license\":\"GPL-3.0-or-later\"},\"hardhat/console.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >= 0.4.22 <0.9.0;\\n\\nlibrary console {\\n\\taddress constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);\\n\\n\\tfunction _sendLogPayload(bytes memory payload) private view {\\n\\t\\tuint256 payloadLength = payload.length;\\n\\t\\taddress consoleAddress = CONSOLE_ADDRESS;\\n\\t\\tassembly {\\n\\t\\t\\tlet payloadStart := add(payload, 32)\\n\\t\\t\\tlet r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)\\n\\t\\t}\\n\\t}\\n\\n\\tfunction log() internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log()\\\"));\\n\\t}\\n\\n\\tfunction logInt(int p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(int)\\\", p0));\\n\\t}\\n\\n\\tfunction logUint(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction logString(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction logBool(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction logAddress(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes(bytes memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes1(bytes1 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes1)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes2(bytes2 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes2)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes3(bytes3 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes3)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes4(bytes4 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes4)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes5(bytes5 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes5)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes6(bytes6 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes6)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes7(bytes7 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes7)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes8(bytes8 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes8)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes9(bytes9 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes9)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes10(bytes10 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes10)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes11(bytes11 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes11)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes12(bytes12 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes12)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes13(bytes13 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes13)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes14(bytes14 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes14)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes15(bytes15 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes15)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes16(bytes16 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes16)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes17(bytes17 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes17)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes18(bytes18 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes18)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes19(bytes19 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes19)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes20(bytes20 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes20)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes21(bytes21 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes21)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes22(bytes22 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes22)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes23(bytes23 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes23)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes24(bytes24 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes24)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes25(bytes25 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes25)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes26(bytes26 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes26)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes27(bytes27 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes27)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes28(bytes28 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes28)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes29(bytes29 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes29)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes30(bytes30 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes30)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes31(bytes31 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes31)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes32(bytes32 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes32)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction log(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction log(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction log(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n}\\n\",\"keccak256\":\"0x72b6a1d297cd3b033d7c2e4a7e7864934bb767db6453623f1c3082c6534547f4\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Trident Concentrated Liquidity Pool periphery contract to read state.",
            "version": 1
          }
        }
      },
      "contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol": {
        "ConcentratedLiquidityPoolManager": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "positionId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint128",
                  "name": "liquidity",
                  "type": "uint128"
                }
              ],
              "name": "DecreaseLiquidity",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "positionId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint128",
                  "name": "liquidity",
                  "type": "uint128"
                }
              ],
              "name": "IncreaseLiquidity",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "domainSeperator",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_ALL_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                }
              ],
              "name": "batch",
              "outputs": [
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "unwrapBento",
                  "type": "bool"
                }
              ],
              "name": "collect",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "token0amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "token1amount",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint128",
                  "name": "amount",
                  "type": "uint128"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "unwrapBento",
                  "type": "bool"
                }
              ],
              "name": "decreaseLiquidity",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "noncesForAll",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "positionFees",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "token0amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "token1amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "feeGrowthInside0",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "feeGrowthInside1",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "int24",
                  "name": "lower",
                  "type": "int24"
                },
                {
                  "internalType": "int24",
                  "name": "upper",
                  "type": "int24"
                },
                {
                  "internalType": "uint128",
                  "name": "amount",
                  "type": "uint128"
                },
                {
                  "internalType": "uint256",
                  "name": "feeGrowthInside0",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "feeGrowthInside1",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_positionId",
                  "type": "uint256"
                }
              ],
              "name": "positionMintCallback",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "positionId",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "positions",
              "outputs": [
                {
                  "internalType": "contract IConcentratedLiquidityPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint128",
                  "name": "liquidity",
                  "type": "uint128"
                },
                {
                  "internalType": "int24",
                  "name": "lower",
                  "type": "int24"
                },
                {
                  "internalType": "int24",
                  "name": "upper",
                  "type": "int24"
                },
                {
                  "internalType": "uint32",
                  "name": "latestAddition",
                  "type": "uint32"
                },
                {
                  "internalType": "uint256",
                  "name": "feeGrowthInside0",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "feeGrowthInside1",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "supported",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "params": {
                  "spender": "Address of the party that can pull `tokenId` from 'owner''s account.",
                  "tokenId": "The Id to approve for `spender`."
                }
              },
              "batch(bytes[])": {
                "details": "The `msg.value` should not be trusted for any method callable from this function.",
                "params": {
                  "data": "ABI-encoded params for each of the calls to make to this contract."
                },
                "returns": {
                  "results": "The results from each of the calls passed in via `data`."
                }
              },
              "permit(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "deadline": "The time at which to expire the signature.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "spender": "The address to be approved.",
                  "tokenId": "The Id that is approved for `spender`.",
                  "v": "The recovery byte of the signature."
                }
              },
              "permitAll(address,address,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "deadline": "The time at which to expire the signature.",
                  "operator": "Address of the party that can pull `tokenId`s from 'owner''s account or approve others to do same.",
                  "owner": "The address to be approved.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "v": "The recovery byte of the signature."
                }
              },
              "safeTransferFrom(address,address,uint256)": {
                "params": {
                  "recipient": "The address to move `tokenId` to.",
                  "tokenId": "The Id to move."
                }
              },
              "safeTransferFrom(address,address,uint256,bytes)": {
                "params": {
                  "recipient": "The address to move `tokenId` to.",
                  "tokenId": "The Id to move."
                }
              },
              "setApprovalForAll(address,bool)": {
                "params": {
                  "approved": "The approval status of `operator`.",
                  "operator": "Address of the party that can pull `tokenId`s from 'owner''s account or approve others to do same."
                }
              },
              "supportsInterface(bytes4)": {
                "params": {
                  "interfaceId": "XOR of all function selectors in the reference interface."
                },
                "returns": {
                  "supported": "Returns 'true' if `interfaceId` is flagged as implemented."
                }
              },
              "transfer(address,uint256)": {
                "params": {
                  "recipient": "The address to move `tokenId` to.",
                  "tokenId": "The Id to move."
                }
              },
              "transferFrom(address,address,uint256)": {
                "params": {
                  "recipient": "The address to move `tokenId` to.",
                  "tokenId": "The Id to move."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_14970": {
                  "entryPoint": null,
                  "id": 14970,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_16553": {
                  "entryPoint": null,
                  "id": 16553,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_calculateDomainSeparator_16588": {
                  "entryPoint": null,
                  "id": 16588,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_mint_17096": {
                  "entryPoint": 544,
                  "id": 17096,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 751,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_e3f56786f4dc15ea567a5bcea1aa6e11424106cac78b0acf41b1b7deccad9f1b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1143:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:290:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "522:276:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "532:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "544:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "555:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "540:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "540:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "532:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "575:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "586:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "568:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "568:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "568:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "613:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "624:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "609:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "609:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "629:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "602:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "602:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "602:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "656:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "667:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "652:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "652:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "672:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "645:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "645:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "645:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "699:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "710:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "695:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "695:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "715:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "688:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "688:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "688:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "742:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "753:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "738:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "738:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "763:6:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "779:3:64",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "784:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "775:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "775:11:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "788:1:64",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "771:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "771:19:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "759:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "759:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "731:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "731:61:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "731:61:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "459:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "470:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "478:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "486:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "494:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "502:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "513:4:64",
                            "type": ""
                          }
                        ],
                        "src": "309:489:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "977:164:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "994:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1005:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "987:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "987:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "987:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1028:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1039:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1024:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1024:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1044:2:64",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1017:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1017:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1017:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1067:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1078:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1063:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1063:18:64"
                                  },
                                  {
                                    "hexValue": "414c52454144595f4d494e544544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1083:16:64",
                                    "type": "",
                                    "value": "ALREADY_MINTED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1056:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1056:44:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1056:44:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1109:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1121:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1132:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1117:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1117:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1109:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e3f56786f4dc15ea567a5bcea1aa6e11424106cac78b0acf41b1b7deccad9f1b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "954:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "968:4:64",
                            "type": ""
                          }
                        ],
                        "src": "803:338:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_e3f56786f4dc15ea567a5bcea1aa6e11424106cac78b0acf41b1b7deccad9f1b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"ALREADY_MINTED\")\n        tail := add(headStart, 96)\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101006040523480156200001257600080fd5b5060405162004072380380620040728339810160408190526200003591620002ef565b466080526200010e604080518082018252600a815269151c9a59195b9d13919560b21b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f790a7a9b65ea2ce0cf93ce97615ad3ceeb0a6082b5ad238c5227302f947047b0818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b60a0526001600160601b0319606082901b1660e05260408051634da3182760e01b815290516000916001600160a01b03841691634da3182791600480820192602092909190829003018186803b1580156200016857600080fd5b505afa1580156200017d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a39190620002ef565b9050806001600160a01b031663aee4d1b26040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620001e157600080fd5b505af1158015620001f6573d6000803e3d6000fd5b5050506001600160601b0319606083901b1660c0525062000218600062000220565b505062000321565b6000805460018101825580825260026020526040909120546001600160a01b031615620002845760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b604482015260640160405180910390fd5b6001600160a01b038216600081815260016020818152604080842080549093019092558483526002905280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000602082840312156200030257600080fd5b81516001600160a01b03811681146200031a57600080fd5b9392505050565b60805160a05160c05160601c60e05160601c613cee62000384600039600081816107560152610e160152600081816103e8015281816119d701528181611aa201528181612e3d0152612f1b01526000610da201526000610c790152613cee6000f3fe6080604052600436106101c25760003560e01c806370a08231116100f7578063a9059cbb11610095578063cf58879a11610064578063cf58879a14610744578063e985e9c514610778578063ed7bba9a146107b3578063f745f815146107f357600080fd5b8063a9059cbb146106b0578063aba07847146106d0578063b4e13c8d146106f0578063b88d4fde1461072457600080fd5b8063904dfb8e116100d1578063904dfb8e146104ef57806395d89b411461051c57806399fbab8814610565578063a22cb4651461069057600080fd5b806370a082311461046d5780637ac2ff7b1461049a5780638c6ab013146104ba57600080fd5b806323b872dd1161016457806342842e0e1161013e57806342842e0e146103b65780634da31827146103d65780636352211e1461040a5780636d59ebe11461044d57600080fd5b806323b872dd1461034d57806330adf81f1461036d5780633644e515146103a157600080fd5b8063095ea7b3116101a0578063095ea7b3146102ba578063141a468c146102dc57806318160ddd146103175780631e897afb1461032d57600080fd5b806301ffc9a7146101c757806306fdde03146101fc578063081812fc14610252575b600080fd5b3480156101d357600080fd5b506101e76101e236600461361f565b610813565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b506102456040518060400160405280600a81526020017f54726964656e744e46540000000000000000000000000000000000000000000081525081565b6040516101f391906138f8565b34801561025e57600080fd5b5061029561026d3660046136d0565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f3565b3480156102c657600080fd5b506102da6102d5366004613413565b6108ac565b005b3480156102e857600080fd5b506103096102f73660046136d0565b60056020526000908152604090205481565b6040519081526020016101f3565b34801561032357600080fd5b5061030960005481565b61034061033b366004613520565b6109fb565b6040516101f39190613878565b34801561035957600080fd5b506102da610368366004613226565b610b6d565b34801561037957600080fd5b506103097f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad81565b3480156103ad57600080fd5b50610309610c75565b3480156103c257600080fd5b506102da6103d1366004613226565b610dc4565b3480156103e257600080fd5b506102957f000000000000000000000000000000000000000000000000000000000000000081565b34801561041657600080fd5b506102956104253660046136d0565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561045957600080fd5b506103096104683660046133a2565b610de5565b34801561047957600080fd5b506103096104883660046131d0565b60016020526000908152604090205481565b3480156104a657600080fd5b506102da6104b536600461343f565b6113e2565b3480156104c657600080fd5b506104da6104d5366004613702565b6117ce565b604080519283526020830191909152016101f3565b3480156104fb57600080fd5b5061030961050a3660046131d0565b60066020526000908152604090205481565b34801561052857600080fd5b506102456040518060400160405280600481526020017f744e46540000000000000000000000000000000000000000000000000000000081525081565b34801561057157600080fd5b506106256105803660046136d0565b60076020526000908152604090208054600182015460028084015460039094015473ffffffffffffffffffffffffffffffffffffffff909316936fffffffffffffffffffffffffffffffff8316937001000000000000000000000000000000008404830b93730100000000000000000000000000000000000000810490930b92760100000000000000000000000000000000000000000000900463ffffffff16919087565b6040805173ffffffffffffffffffffffffffffffffffffffff90981688526fffffffffffffffffffffffffffffffff9096166020880152600294850b958701959095529190920b606085015263ffffffff909116608084015260a083015260c082015260e0016101f3565b34801561069c57600080fd5b506102da6106ab366004613374565b611c8a565b3480156106bc57600080fd5b506102da6106cb366004613413565b611d9e565b3480156106dc57600080fd5b506102da6106eb366004613311565b611e3a565b3480156106fc57600080fd5b506103097fdaab21af31ece73a508939fedd476a5ee5129a5ed4bb091f3236ffb45394df6281565b34801561073057600080fd5b506102da61073f366004613267565b6121be565b34801561075057600080fd5b506102957f000000000000000000000000000000000000000000000000000000000000000081565b34801561078457600080fd5b506101e76107933660046131ed565b600460209081526000928352604080842090915290825290205460ff1681565b3480156107bf57600080fd5b506107d36107ce3660046136d0565b61237a565b6040805194855260208501939093529183015260608201526080016101f3565b3480156107ff57600080fd5b506102da61080e366004613744565b61254a565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806108a657507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff163381148061090f575073ffffffffffffffffffffffffffffffffffffffff8116600090815260046020908152604080832033845290915290205460ff165b61097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f415050524f564544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60608167ffffffffffffffff811115610a1657610a16613c28565b604051908082528060200260200182016040528015610a4957816020015b6060815260200190600190039081610a345790505b50905060005b82811015610b665760008030868685818110610a6d57610a6d613bf9565b9050602002810190610a7f919061390b565b604051610a8d929190613803565b600060405180830381855af49150503d8060008114610ac8576040519150601f19603f3d011682016040523d82523d6000602084013e610acd565b606091505b509150915081610b3357604481511015610ae657600080fd5b60048101905080806020019051810190610b009190613659565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097191906138f8565b80848481518110610b4657610b46613bf9565b602002602001018190525050508080610b5e90613b91565b915050610a4f565b5092915050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1633811480610bc3575060008281526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b80610bfe575073ffffffffffffffffffffffffffffffffffffffff8116600090815260046020908152604080832033845290915290205460ff165b610c64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f415050524f56454400000000000000000000000000000000000000006044820152606401610971565b610c6f818484612bdd565b50505050565b60007f00000000000000000000000000000000000000000000000000000000000000004614610d9f5750604080518082018252600a81527f54726964656e744e46540000000000000000000000000000000000000000000060209182015281518083018352600181527f31000000000000000000000000000000000000000000000000000000000000009082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f790a7a9b65ea2ce0cf93ce97615ad3ceeb0a6082b5ad238c5227302f947047b0818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b610de060008383604051806020016040528060008152506121be565b505050565b6040517fa4063dbc0000000000000000000000000000000000000000000000000000000081523360048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a4063dbc9060240160206040518083038186803b158015610e6d57600080fd5b505afa158015610e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea59190613602565b610f0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f504f4f4c0000000000000000000000000000000000000000000000006044820152606401610971565b8161112157506040805160e0810182523381526fffffffffffffffffffffffffffffffff868116602080840191825260028b810b8587019081528b820b606087019081524263ffffffff9081166080890190815260a089018d815260c08a018d815260008054815260079098529a872099518a547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178a55965160018a018054955194519251919099167fffffffffffffffffffffffffff000000000000000000000000000000000000009095169490941770010000000000000000000000000000000093860b62ffffff90811694909402177fffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffff1673010000000000000000000000000000000000000091860b93909316027fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff16919091177601000000000000000000000000000000000000000000009290911691909102179093559051918301919091559151600390910155546110bb88612caf565b6040516fffffffffffffffffffffffffffffffff86168152819073ffffffffffffffffffffffffffffffffffffffff8a169033907fc8dd8ccfbeefd448504efbf8f0f1228f3874a3556303d43aec4cc814237755f49060200160405180910390a46113d7565b6fffffffffffffffffffffffffffffffff8516156113d7576000828152600760205260408120905483106111b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f494e56414c49445f504f534954494f4e000000000000000000000000000000006044820152606401610971565b6001810154600289810b700100000000000000000000000000000000909204810b900b14801561120457506001810154600288810b730100000000000000000000000000000000000000909204810b900b145b61126a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f52414e47455f4d49535f4d4154434800000000000000000000000000000000006044820152606401610971565b8481600201541480156112805750838160030154145b6112e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e434c41494d454400000000000000000000000000000000000000000000006044820152606401610971565b60018101805487919060009061130f9084906fffffffffffffffffffffffffffffffff16613a59565b82546101009290920a6fffffffffffffffffffffffffffffffff8181021990931691831602179091556001830180547fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000004263ffffffff1602179055604051908816815283915073ffffffffffffffffffffffffffffffffffffffff8b169033907fc8dd8ccfbeefd448504efbf8f0f1228f3874a3556303d43aec4cc814237755f49060200160405180910390a4505b979650505050505050565b4284101561144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610971565b60008581526002602052604081205473ffffffffffffffffffffffffffffffffffffffff169061147a610c75565b60008881526005602090815260409182902080546001810190915582517f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad8184015273ffffffffffffffffffffffffffffffffffffffff8d1681850152606081018c9052608081019190915260a08082018b90528351808303909101815260c08201909352825192909101919091207f190100000000000000000000000000000000000000000000000000000000000060e083015260e282019290925261010281019190915261012201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156115cd573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e415455524500000000000000006044820152606401610971565b8273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806116e1575073ffffffffffffffffffffffffffffffffffffffff80841660009081526004602090815260408083209385168352929052205460ff165b611747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610971565b505060008681526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b811691821790925591518993918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a450505050505050565b600083815260026020526040812054819073ffffffffffffffffffffffffffffffffffffffff16331461185d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f49445f4f574e455200000000000000000000000000000000000000006044820152606401610971565b600085815260076020526040808220805482517f67e4ac2c000000000000000000000000000000000000000000000000000000008152925191939273ffffffffffffffffffffffffffffffffffffffff909116916367e4ac2c916004808201928692909190829003018186803b1580156118d657600080fd5b505afa1580156118ea573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611930919081019061347f565b905060008160008151811061194757611947613bf9565b6020026020010151905060008260018151811061196657611966613bf9565b602002602001015190506119798961237a565b600388015560028701556040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301529298509096506000917f0000000000000000000000000000000000000000000000000000000000000000169063f7888aec9060440160206040518083038186803b158015611a1957600080fd5b505afa158015611a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5191906136e9565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301523060248301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063f7888aec9060440160206040518083038186803b158015611ae457600080fd5b505afa158015611af8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1c91906136e9565b905087821080611b2b57508681105b15611c6257855460018701546040517ffb39d6280000000000000000000000000000000000000000000000000000000081527001000000000000000000000000000000008204600290810b810b6004830152730100000000000000000000000000000000000000909204820b90910b602482015230604482015260006064820181905291829173ffffffffffffffffffffffffffffffffffffffff9091169063fb39d628906084016040805180830381600087803b158015611bec57600080fd5b505af1158015611c00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c249190613795565b90925090506000611c358584613a8d565b90506000611c438584613a8d565b9050818c1115611c5157819b505b808b1115611c5d57809a505b505050505b611c6f84308c8b8d612dd4565b611c7c83308c8a8d612dd4565b505050505050935093915050565b73ffffffffffffffffffffffffffffffffffffffff8216611d07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f494e56414c49445f4f50455241544f52000000000000000000000000000000006044820152606401610971565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff163314611e2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e455200000000000000000000000000000000000000000000006044820152606401610971565b611e36338383612bdd565b5050565b42841015611ea4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610971565b6000611eae610c75565b73ffffffffffffffffffffffffffffffffffffffff88811660008181526006602090815260409182902080546001810190915582517fdaab21af31ece73a508939fedd476a5ee5129a5ed4bb091f3236ffb45394df628184015280840194909452938b166060840152608083019390935260a08083018a90528151808403909101815260c0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000060e083015260e282019290925261010281019190915261012201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612004573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061207f57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806120bc575073ffffffffffffffffffffffffffffffffffffffff80891660009081526004602090815260408083209385168352929052205460ff165b612122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e415455524500000000000000006044820152606401610971565b505073ffffffffffffffffffffffffffffffffffffffff8681166000818152600460209081526040808320948a168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050505050565b6121ca60008484610b6d565b73ffffffffffffffffffffffffffffffffffffffff83163b15610c6f5760008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02336000868660405160240161221d949392919061382f565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161226b9190613813565b600060405180830381855afa9150503d80600081146122a6576040519150601f19603f3d011682016040523d82523d6000602084013e6122ab565b606091505b509150506000818060200190518101906122c5919061363c565b90507f150b7a02000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821614612372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4e4f545f4552433732315f5245434549564552000000000000000000000000006044820152606401610971565b505050505050565b6000818152600760209081526040808320815160e081018352815473ffffffffffffffffffffffffffffffffffffffff1680825260018301546fffffffffffffffffffffffffffffffff8116958301959095527001000000000000000000000000000000008504600290810b810b810b8386018190527301000000000000000000000000000000000000008704820b820b820b6060850181905276010000000000000000000000000000000000000000000090970463ffffffff1660808501528185015460a085015260039094015460c084015293517facfe88f800000000000000000000000000000000000000000000000000000000815292840b60048401529390920b602482015283928392839290919063acfe88f890604401604080518083038186803b1580156124ad57600080fd5b505afa1580156124c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e59190613795565b60a0830151919450925061252b906124fd9085613b4e565b82602001516fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000612f7f565b94506125408160c00151836124fd9190613b4e565b9350509193509193565b60008481526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1633146125d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f49445f4f574e455200000000000000000000000000000000000000006044820152606401610971565b6000848152600760205260408120600181015490916060918291906fffffffffffffffffffffffffffffffff908116908816101561288d57835460018501546040517f6289db820000000000000000000000000000000000000000000000000000000081527001000000000000000000000000000000008204600290810b810b6004830152730100000000000000000000000000000000000000909204820b90910b60248201526fffffffffffffffffffffffffffffffff891660448201523060648201526000608482015273ffffffffffffffffffffffffffffffffffffffff90911690636289db829060a401600060405180830381600087803b1580156126df57600080fd5b505af11580156126f3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526127399190810190613595565b865460018801546040517facfe88f80000000000000000000000000000000000000000000000000000000081527001000000000000000000000000000000008204600290810b810b6004830152730100000000000000000000000000000000000000909204820b90910b6024820152939650919450925073ffffffffffffffffffffffffffffffffffffffff169063acfe88f890604401604080518083038186803b1580156127e757600080fd5b505afa1580156127fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281f9190613795565b600386015560028501556001840180548891906000906128529084906fffffffffffffffffffffffffffffffff16613b1d565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550612a2f565b835460018501546040517f6289db820000000000000000000000000000000000000000000000000000000081527001000000000000000000000000000000008204600290810b810b60048301527301000000000000000000000000000000000000008304810b900b60248201526fffffffffffffffffffffffffffffffff90911660448201523060648201526000608482015273ffffffffffffffffffffffffffffffffffffffff90911690636289db829060a401600060405180830381600087803b15801561295c57600080fd5b505af1158015612970573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526129b69190810190613595565b60008b815260076020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001810180547fffffffffffff0000000000000000000000000000000000000000000000000000169055600281018290556003015591945092509050612a2f88613051565b600081886fffffffffffffffffffffffffffffffff1684600081518110612a5857612a58613bf9565b602002602001015160200151612a6e9190613ae0565b612a789190613aa5565b84600081518110612a8b57612a8b613bf9565b602002602001015160200151612aa19190613a8d565b9050600082896fffffffffffffffffffffffffffffffff1685600181518110612acc57612acc613bf9565b602002602001015160200151612ae29190613ae0565b612aec9190613aa5565b85600181518110612aff57612aff613bf9565b602002602001015160200151612b159190613a8d565b9050612b4285600081518110612b2d57612b2d613bf9565b602002602001015160000151308a858b612dd4565b612b6d85600181518110612b5857612b58613bf9565b602002602001015160000151308a848b612dd4565b85546040516fffffffffffffffffffffffffffffffff8b1681528b91339173ffffffffffffffffffffffffffffffffffffffff909116907fa246c3c6c374294b514c67820df22c91e7d4946b79d7e9fbcdc2a9ea99036ce09060200160405180910390a450505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020818152604080842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905594871680845285842080549093019092558583526003815284832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915560029091528483208054909116821790559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008054600181018255808252600260205260409091205473ffffffffffffffffffffffffffffffffffffffff1615612d44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401610971565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260016020818152604080842080549093019092558483526002905280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8015612ebf576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301528581166024830152848116604483015260006064830152608482018490527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b158015612e8057600080fd5b505af1158015612e94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb89190613795565b5050612f78565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015285811660248301528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401600060405180830381600087803b158015612f5f57600080fd5b505af1158015612f73573d6000803e3d6000fd5b505050505b5050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8587098587029250828110838203039150508060001415612fd75760008411612fcc57600080fd5b50829004905061304a565b808411612fe357600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16806130dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610971565b611e3681600084612bdd565b600082601f8301126130fa57600080fd5b8151602061310f61310a836139ef565b6139a0565b80838252828201915082860187848660061b890101111561312f57600080fd5b6000805b8681101561317a57604080848c03121561314b578283fd5b613153613977565b845161315e81613c57565b8152848801518882015286529486019490920191600101613133565b509198975050505050505050565b8035600281900b811461319a57600080fd5b919050565b80356fffffffffffffffffffffffffffffffff8116811461319a57600080fd5b803560ff8116811461319a57600080fd5b6000602082840312156131e257600080fd5b813561304a81613c57565b6000806040838503121561320057600080fd5b823561320b81613c57565b9150602083013561321b81613c57565b809150509250929050565b60008060006060848603121561323b57600080fd5b833561324681613c57565b9250602084013561325681613c57565b929592945050506040919091013590565b6000806000806080858703121561327d57600080fd5b843561328881613c57565b9350602085013561329881613c57565b925060408501359150606085013567ffffffffffffffff8111156132bb57600080fd5b8501601f810187136132cc57600080fd5b80356132da61310a82613a13565b8181528860208385010111156132ef57600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060008060008060c0878903121561332a57600080fd5b863561333581613c57565b9550602087013561334581613c57565b94506040870135935061335a606088016131bf565b92506080870135915060a087013590509295509295509295565b6000806040838503121561338757600080fd5b823561339281613c57565b9150602083013561321b81613c7c565b600080600080600080600060e0888a0312156133bd57600080fd5b87356133c881613c57565b96506133d660208901613188565b95506133e460408901613188565b94506133f26060890161319f565b9699959850939660808101359560a0820135955060c0909101359350915050565b6000806040838503121561342657600080fd5b823561343181613c57565b946020939093013593505050565b60008060008060008060c0878903121561345857600080fd5b863561346381613c57565b9550602087013594506040870135935061335a606088016131bf565b6000602080838503121561349257600080fd5b825167ffffffffffffffff8111156134a957600080fd5b8301601f810185136134ba57600080fd5b80516134c861310a826139ef565b80828252848201915084840188868560051b87010111156134e857600080fd5b600094505b8385101561351457805161350081613c57565b8352600194909401939185019185016134ed565b50979650505050505050565b6000806020838503121561353357600080fd5b823567ffffffffffffffff8082111561354b57600080fd5b818501915085601f83011261355f57600080fd5b81358181111561356e57600080fd5b8660208260051b850101111561358357600080fd5b60209290920196919550909350505050565b6000806000606084860312156135aa57600080fd5b835167ffffffffffffffff808211156135c257600080fd5b6135ce878388016130e9565b945060208601519150808211156135e457600080fd5b506135f1868287016130e9565b925050604084015190509250925092565b60006020828403121561361457600080fd5b815161304a81613c7c565b60006020828403121561363157600080fd5b813561304a81613c8a565b60006020828403121561364e57600080fd5b815161304a81613c8a565b60006020828403121561366b57600080fd5b815167ffffffffffffffff81111561368257600080fd5b8201601f8101841361369357600080fd5b80516136a161310a82613a13565b8181528560208385010111156136b657600080fd5b6136c7826020830160208601613b65565b95945050505050565b6000602082840312156136e257600080fd5b5035919050565b6000602082840312156136fb57600080fd5b5051919050565b60008060006060848603121561371757600080fd5b83359250602084013561372981613c57565b9150604084013561373981613c7c565b809150509250925092565b6000806000806080858703121561375a57600080fd5b8435935061376a6020860161319f565b9250604085013561377a81613c57565b9150606085013561378a81613c7c565b939692955090935050565b600080604083850312156137a857600080fd5b505080516020909101519092909150565b600081518084526137d1816020860160208601613b65565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8183823760009101908152919050565b60008251613825818460208701613b65565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261386e60808301846137b9565b9695505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156138eb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526138d98583516137b9565b9450928501929085019060010161389f565b5092979650505050505050565b60208152600061304a60208301846137b9565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261394057600080fd5b83018035915067ffffffffffffffff82111561395b57600080fd5b60200191503681900382131561397057600080fd5b9250929050565b6040805190810167ffffffffffffffff8111828210171561399a5761399a613c28565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156139e7576139e7613c28565b604052919050565b600067ffffffffffffffff821115613a0957613a09613c28565b5060051b60200190565b600067ffffffffffffffff821115613a2d57613a2d613c28565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006fffffffffffffffffffffffffffffffff808316818516808303821115613a8457613a84613bca565b01949350505050565b60008219821115613aa057613aa0613bca565b500190565b600082613adb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b1857613b18613bca565b500290565b60006fffffffffffffffffffffffffffffffff83811690831681811015613b4657613b46613bca565b039392505050565b600082821015613b6057613b60613bca565b500390565b60005b83811015613b80578181015183820152602001613b68565b83811115610c6f5750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613bc357613bc3613bca565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114613c7957600080fd5b50565b8015158114613c7957600080fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081168114613c7957600080fdfea26469706673582212200286348d96fdf39162628e3fb3070007216cd69a53a416862c0e3003a4ba83a764736f6c63430008070033",
              "opcodes": "PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x4072 CODESIZE SUB DUP1 PUSH3 0x4072 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x2EF JUMP JUMPDEST CHAINID PUSH1 0x80 MSTORE PUSH3 0x10E PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xA DUP2 MSTORE PUSH10 0x151C9A59195B9D139195 PUSH1 0xB2 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0x790A7A9B65EA2CE0CF93CE97615AD3CEEB0A6082B5AD238C5227302F947047B0 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0xA0 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x4DA31827 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x4DA31827 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x17D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1A3 SWAP2 SWAP1 PUSH3 0x2EF JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAEE4D1B2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x1F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 SWAP1 SHL AND PUSH1 0xC0 MSTORE POP PUSH3 0x218 PUSH1 0x0 PUSH3 0x220 JUMP JUMPDEST POP POP PUSH3 0x321 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE DUP1 DUP3 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH3 0x284 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x1053149150511657D35253951151 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 ADD SWAP1 SWAP3 SSTORE DUP5 DUP4 MSTORE PUSH1 0x2 SWAP1 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND DUP5 OR SWAP1 SSTORE MLOAD DUP4 SWAP3 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x31A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x3CEE PUSH3 0x384 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x756 ADD MSTORE PUSH2 0xE16 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x3E8 ADD MSTORE DUP2 DUP2 PUSH2 0x19D7 ADD MSTORE DUP2 DUP2 PUSH2 0x1AA2 ADD MSTORE DUP2 DUP2 PUSH2 0x2E3D ADD MSTORE PUSH2 0x2F1B ADD MSTORE PUSH1 0x0 PUSH2 0xDA2 ADD MSTORE PUSH1 0x0 PUSH2 0xC79 ADD MSTORE PUSH2 0x3CEE PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xCF58879A GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x744 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x778 JUMPI DUP1 PUSH4 0xED7BBA9A EQ PUSH2 0x7B3 JUMPI DUP1 PUSH4 0xF745F815 EQ PUSH2 0x7F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x6B0 JUMPI DUP1 PUSH4 0xABA07847 EQ PUSH2 0x6D0 JUMPI DUP1 PUSH4 0xB4E13C8D EQ PUSH2 0x6F0 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x724 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x904DFB8E GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x904DFB8E EQ PUSH2 0x4EF JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x51C JUMPI DUP1 PUSH4 0x99FBAB88 EQ PUSH2 0x565 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x46D JUMPI DUP1 PUSH4 0x7AC2FF7B EQ PUSH2 0x49A JUMPI DUP1 PUSH4 0x8C6AB013 EQ PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x164 JUMPI DUP1 PUSH4 0x42842E0E GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x3D6 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0x6D59EBE1 EQ PUSH2 0x44D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x3A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0x141A468C EQ PUSH2 0x2DC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0x1E897AFB EQ PUSH2 0x32D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x252 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E7 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x361F JUMP JUMPDEST PUSH2 0x813 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x245 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x54726964656E744E465400000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F3 SWAP2 SWAP1 PUSH2 0x38F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH2 0x26D CALLDATASIZE PUSH1 0x4 PUSH2 0x36D0 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x2D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3413 JUMP JUMPDEST PUSH2 0x8AC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x309 PUSH2 0x2F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x36D0 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x309 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x340 PUSH2 0x33B CALLDATASIZE PUSH1 0x4 PUSH2 0x3520 JUMP JUMPDEST PUSH2 0x9FB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F3 SWAP2 SWAP1 PUSH2 0x3878 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x359 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x368 CALLDATASIZE PUSH1 0x4 PUSH2 0x3226 JUMP JUMPDEST PUSH2 0xB6D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x309 PUSH32 0x49ECF333E5B8C95C40FDAFC95C1AD136E8914A8FB55E9DC8BB01EAA83A2DF9AD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x309 PUSH2 0xC75 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x3D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3226 JUMP JUMPDEST PUSH2 0xDC4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x416 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH2 0x425 CALLDATASIZE PUSH1 0x4 PUSH2 0x36D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x309 PUSH2 0x468 CALLDATASIZE PUSH1 0x4 PUSH2 0x33A2 JUMP JUMPDEST PUSH2 0xDE5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x309 PUSH2 0x488 CALLDATASIZE PUSH1 0x4 PUSH2 0x31D0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x4B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x343F JUMP JUMPDEST PUSH2 0x13E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4DA PUSH2 0x4D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3702 JUMP JUMPDEST PUSH2 0x17CE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x1F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x309 PUSH2 0x50A CALLDATASIZE PUSH1 0x4 PUSH2 0x31D0 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x245 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x744E465400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x625 PUSH2 0x580 CALLDATASIZE PUSH1 0x4 PUSH2 0x36D0 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP1 DUP5 ADD SLOAD PUSH1 0x3 SWAP1 SWAP5 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP4 PUSH17 0x100000000000000000000000000000000 DUP5 DIV DUP4 SIGNEXTEND SWAP4 PUSH20 0x100000000000000000000000000000000000000 DUP2 DIV SWAP1 SWAP4 SIGNEXTEND SWAP3 PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP2 SWAP1 DUP8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP9 AND DUP9 MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP7 AND PUSH1 0x20 DUP9 ADD MSTORE PUSH1 0x2 SWAP5 DUP6 SIGNEXTEND SWAP6 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP2 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x60 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 ADD PUSH2 0x1F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x6AB CALLDATASIZE PUSH1 0x4 PUSH2 0x3374 JUMP JUMPDEST PUSH2 0x1C8A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x6CB CALLDATASIZE PUSH1 0x4 PUSH2 0x3413 JUMP JUMPDEST PUSH2 0x1D9E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x6EB CALLDATASIZE PUSH1 0x4 PUSH2 0x3311 JUMP JUMPDEST PUSH2 0x1E3A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x309 PUSH32 0xDAAB21AF31ECE73A508939FEDD476A5EE5129A5ED4BB091F3236FFB45394DF62 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x730 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x73F CALLDATASIZE PUSH1 0x4 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x21BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x750 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x784 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E7 PUSH2 0x793 CALLDATASIZE PUSH1 0x4 PUSH2 0x31ED JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D3 PUSH2 0x7CE CALLDATASIZE PUSH1 0x4 PUSH2 0x36D0 JUMP JUMPDEST PUSH2 0x237A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH2 0x1F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x80E CALLDATASIZE PUSH1 0x4 PUSH2 0x3744 JUMP JUMPDEST PUSH2 0x254A JUMP JUMPDEST PUSH1 0x0 PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ DUP1 PUSH2 0x8A6 JUMPI POP PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0x90F JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x97A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F415050524F5645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP6 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA16 JUMPI PUSH2 0xA16 PUSH2 0x3C28 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA49 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA34 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xB66 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0xA6D JUMPI PUSH2 0xA6D PUSH2 0x3BF9 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xA7F SWAP2 SWAP1 PUSH2 0x390B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA8D SWAP3 SWAP2 SWAP1 PUSH2 0x3803 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xAC8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xACD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xB33 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0xAE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xB00 SWAP2 SWAP1 PUSH2 0x3659 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x971 SWAP2 SWAP1 PUSH2 0x38F8 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xB46 JUMPI PUSH2 0xB46 PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP DUP1 DUP1 PUSH2 0xB5E SWAP1 PUSH2 0x3B91 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xA4F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0xBC3 JUMPI POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ JUMPDEST DUP1 PUSH2 0xBFE JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xC64 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F415050524F5645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH2 0xC6F DUP2 DUP5 DUP5 PUSH2 0x2BDD JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0xD9F JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xA DUP2 MSTORE PUSH32 0x54726964656E744E465400000000000000000000000000000000000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0x790A7A9B65EA2CE0CF93CE97615AD3CEEB0A6082B5AD238C5227302F947047B0 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xDE0 PUSH1 0x0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x21BE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA4063DBC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xA4063DBC SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE81 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xEA5 SWAP2 SWAP1 PUSH2 0x3602 JUMP JUMPDEST PUSH2 0xF0B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F504F4F4C000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST DUP2 PUSH2 0x1121 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 DUP3 MSTORE PUSH1 0x2 DUP12 DUP2 SIGNEXTEND DUP6 DUP8 ADD SWAP1 DUP2 MSTORE DUP12 DUP3 SIGNEXTEND PUSH1 0x60 DUP8 ADD SWAP1 DUP2 MSTORE TIMESTAMP PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x80 DUP10 ADD SWAP1 DUP2 MSTORE PUSH1 0xA0 DUP10 ADD DUP14 DUP2 MSTORE PUSH1 0xC0 DUP11 ADD DUP14 DUP2 MSTORE PUSH1 0x0 DUP1 SLOAD DUP2 MSTORE PUSH1 0x7 SWAP1 SWAP9 MSTORE SWAP11 DUP8 KECCAK256 SWAP10 MLOAD DUP11 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND OR DUP11 SSTORE SWAP7 MLOAD PUSH1 0x1 DUP11 ADD DUP1 SLOAD SWAP6 MLOAD SWAP5 MLOAD SWAP3 MLOAD SWAP2 SWAP1 SWAP10 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR PUSH17 0x100000000000000000000000000000000 SWAP4 DUP7 SIGNEXTEND PUSH3 0xFFFFFF SWAP1 DUP2 AND SWAP5 SWAP1 SWAP5 MUL OR PUSH32 0xFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0x100000000000000000000000000000000000000 SWAP2 DUP7 SIGNEXTEND SWAP4 SWAP1 SWAP4 AND MUL PUSH32 0xFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 SWAP1 SWAP2 OR PUSH23 0x100000000000000000000000000000000000000000000 SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SWAP4 SSTORE SWAP1 MLOAD SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP2 MLOAD PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE SLOAD PUSH2 0x10BB DUP9 PUSH2 0x2CAF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP2 MSTORE DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP1 CALLER SWAP1 PUSH32 0xC8DD8CCFBEEFD448504EFBF8F0F1228F3874A3556303D43AEC4CC814237755F4 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x13D7 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND ISZERO PUSH2 0x13D7 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 SLOAD DUP4 LT PUSH2 0x11B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F504F534954494F4E00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x2 DUP10 DUP2 SIGNEXTEND PUSH17 0x100000000000000000000000000000000 SWAP1 SWAP3 DIV DUP2 SIGNEXTEND SWAP1 SIGNEXTEND EQ DUP1 ISZERO PUSH2 0x1204 JUMPI POP PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x2 DUP9 DUP2 SIGNEXTEND PUSH20 0x100000000000000000000000000000000000000 SWAP1 SWAP3 DIV DUP2 SIGNEXTEND SWAP1 SIGNEXTEND EQ JUMPDEST PUSH2 0x126A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x52414E47455F4D49535F4D415443480000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST DUP5 DUP2 PUSH1 0x2 ADD SLOAD EQ DUP1 ISZERO PUSH2 0x1280 JUMPI POP DUP4 DUP2 PUSH1 0x3 ADD SLOAD EQ JUMPDEST PUSH2 0x12E6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x554E434C41494D45440000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SLOAD DUP8 SWAP2 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x130F SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3A59 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x100 SWAP3 SWAP1 SWAP3 EXP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 MUL NOT SWAP1 SWAP4 AND SWAP2 DUP4 AND MUL OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH23 0x100000000000000000000000000000000000000000000 TIMESTAMP PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP9 AND DUP2 MSTORE DUP4 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP1 CALLER SWAP1 PUSH32 0xC8DD8CCFBEEFD448504EFBF8F0F1228F3874A3556303D43AEC4CC814237755F4 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x144C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x147A PUSH2 0xC75 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD PUSH32 0x49ECF333E5B8C95C40FDAFC95C1AD136E8914A8FB55E9DC8BB01EAA83A2DF9AD DUP2 DUP5 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND DUP2 DUP6 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP1 DUP3 ADD DUP12 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP3 ADD SWAP1 SWAP4 MSTORE DUP3 MLOAD SWAP3 SWAP1 SWAP2 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0xE2 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0x102 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x122 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP10 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP7 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1675 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x16E1 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1747 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5349474E4552000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST POP POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP10 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 LOG4 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x185D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F49445F4F574E45520000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP3 MLOAD PUSH32 0x67E4AC2C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x67E4AC2C SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 DUP7 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1930 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x347F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1947 JUMPI PUSH2 0x1947 PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1966 JUMPI PUSH2 0x1966 PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1979 DUP10 PUSH2 0x237A JUMP JUMPDEST PUSH1 0x3 DUP9 ADD SSTORE PUSH1 0x2 DUP8 ADD SSTORE PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP3 SWAP9 POP SWAP1 SWAP7 POP PUSH1 0x0 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A51 SWAP2 SWAP1 PUSH2 0x36E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AF8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B1C SWAP2 SWAP1 PUSH2 0x36E9 JUMP JUMPDEST SWAP1 POP DUP8 DUP3 LT DUP1 PUSH2 0x1B2B JUMPI POP DUP7 DUP2 LT JUMPDEST ISZERO PUSH2 0x1C62 JUMPI DUP6 SLOAD PUSH1 0x1 DUP8 ADD SLOAD PUSH1 0x40 MLOAD PUSH32 0xFB39D62800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH17 0x100000000000000000000000000000000 DUP3 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x4 DUP4 ADD MSTORE PUSH20 0x100000000000000000000000000000000000000 SWAP1 SWAP3 DIV DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xFB39D628 SWAP1 PUSH1 0x84 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C00 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C24 SWAP2 SWAP1 PUSH2 0x3795 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x1C35 DUP6 DUP5 PUSH2 0x3A8D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1C43 DUP6 DUP5 PUSH2 0x3A8D JUMP JUMPDEST SWAP1 POP DUP2 DUP13 GT ISZERO PUSH2 0x1C51 JUMPI DUP2 SWAP12 POP JUMPDEST DUP1 DUP12 GT ISZERO PUSH2 0x1C5D JUMPI DUP1 SWAP11 POP JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x1C6F DUP5 ADDRESS DUP13 DUP12 DUP14 PUSH2 0x2DD4 JUMP JUMPDEST PUSH2 0x1C7C DUP4 ADDRESS DUP13 DUP11 DUP14 PUSH2 0x2DD4 JUMP JUMPDEST POP POP POP POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x1D07 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F50455241544F5200000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1E2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4F574E45520000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH2 0x1E36 CALLER DUP4 DUP4 PUSH2 0x2BDD JUMP JUMPDEST POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1EA4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EAE PUSH2 0xC75 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD PUSH32 0xDAAB21AF31ECE73A508939FEDD476A5EE5129A5ED4BB091F3236FFB45394DF62 DUP2 DUP5 ADD MSTORE DUP1 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP4 DUP12 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xA0 DUP1 DUP4 ADD DUP11 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP4 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0xE2 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0x102 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x122 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2004 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x207F JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST DUP1 PUSH2 0x20BC JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x2122 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP11 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x21CA PUSH1 0x0 DUP5 DUP5 PUSH2 0xB6D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND EXTCODESIZE ISZERO PUSH2 0xC6F JUMPI PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x150B7A02 CALLER PUSH1 0x0 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x221D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x382F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x226B SWAP2 SWAP1 PUSH2 0x3813 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x22A6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x22AB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x22C5 SWAP2 SWAP1 PUSH2 0x363C JUMP JUMPDEST SWAP1 POP PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND EQ PUSH2 0x2372 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4552433732315F524543454956455200000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0xE0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP6 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH17 0x100000000000000000000000000000000 DUP6 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP4 DUP7 ADD DUP2 SWAP1 MSTORE PUSH20 0x100000000000000000000000000000000000000 DUP8 DIV DUP3 SIGNEXTEND DUP3 SIGNEXTEND DUP3 SIGNEXTEND PUSH1 0x60 DUP6 ADD DUP2 SWAP1 MSTORE PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 SWAP8 DIV PUSH4 0xFFFFFFFF AND PUSH1 0x80 DUP6 ADD MSTORE DUP2 DUP6 ADD SLOAD PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0x3 SWAP1 SWAP5 ADD SLOAD PUSH1 0xC0 DUP5 ADD MSTORE SWAP4 MLOAD PUSH32 0xACFE88F800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 DUP5 SIGNEXTEND PUSH1 0x4 DUP5 ADD MSTORE SWAP4 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x24 DUP3 ADD MSTORE DUP4 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP1 SWAP2 SWAP1 PUSH4 0xACFE88F8 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x24C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x24E5 SWAP2 SWAP1 PUSH2 0x3795 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x252B SWAP1 PUSH2 0x24FD SWAP1 DUP6 PUSH2 0x3B4E JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH17 0x100000000000000000000000000000000 PUSH2 0x2F7F JUMP JUMPDEST SWAP5 POP PUSH2 0x2540 DUP2 PUSH1 0xC0 ADD MLOAD DUP4 PUSH2 0x24FD SWAP2 SWAP1 PUSH2 0x3B4E JUMP JUMPDEST SWAP4 POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x25D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F49445F4F574E45520000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SWAP2 PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP9 AND LT ISZERO PUSH2 0x288D JUMPI DUP4 SLOAD PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH32 0x6289DB8200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH17 0x100000000000000000000000000000000 DUP3 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x4 DUP4 ADD MSTORE PUSH20 0x100000000000000000000000000000000000000 SWAP1 SWAP3 DIV DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x44 DUP3 ADD MSTORE ADDRESS PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6289DB82 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2739 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3595 JUMP JUMPDEST DUP7 SLOAD PUSH1 0x1 DUP9 ADD SLOAD PUSH1 0x40 MLOAD PUSH32 0xACFE88F800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH17 0x100000000000000000000000000000000 DUP3 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x4 DUP4 ADD MSTORE PUSH20 0x100000000000000000000000000000000000000 SWAP1 SWAP3 DIV DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND PUSH1 0x24 DUP3 ADD MSTORE SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xACFE88F8 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x281F SWAP2 SWAP1 PUSH2 0x3795 JUMP JUMPDEST PUSH1 0x3 DUP7 ADD SSTORE PUSH1 0x2 DUP6 ADD SSTORE PUSH1 0x1 DUP5 ADD DUP1 SLOAD DUP9 SWAP2 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x2852 SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3B1D JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2A2F JUMP JUMPDEST DUP4 SLOAD PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH32 0x6289DB8200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH17 0x100000000000000000000000000000000 DUP3 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x4 DUP4 ADD MSTORE PUSH20 0x100000000000000000000000000000000000000 DUP4 DIV DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x44 DUP3 ADD MSTORE ADDRESS PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6289DB82 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x295C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2970 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x29B6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3595 JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 AND SWAP1 SSTORE PUSH1 0x2 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 ADD SSTORE SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH2 0x2A2F DUP9 PUSH2 0x3051 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP9 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2A58 JUMPI PUSH2 0x2A58 PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0x2A6E SWAP2 SWAP1 PUSH2 0x3AE0 JUMP JUMPDEST PUSH2 0x2A78 SWAP2 SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2A8B JUMPI PUSH2 0x2A8B PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0x2AA1 SWAP2 SWAP1 PUSH2 0x3A8D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP10 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x2ACC JUMPI PUSH2 0x2ACC PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0x2AE2 SWAP2 SWAP1 PUSH2 0x3AE0 JUMP JUMPDEST PUSH2 0x2AEC SWAP2 SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST DUP6 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x2AFF JUMPI PUSH2 0x2AFF PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0x2B15 SWAP2 SWAP1 PUSH2 0x3A8D JUMP JUMPDEST SWAP1 POP PUSH2 0x2B42 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2B2D JUMPI PUSH2 0x2B2D PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD ADDRESS DUP11 DUP6 DUP12 PUSH2 0x2DD4 JUMP JUMPDEST PUSH2 0x2B6D DUP6 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x2B58 JUMPI PUSH2 0x2B58 PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD ADDRESS DUP11 DUP5 DUP12 PUSH2 0x2DD4 JUMP JUMPDEST DUP6 SLOAD PUSH1 0x40 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND DUP2 MSTORE DUP12 SWAP2 CALLER SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0xA246C3C6C374294B514C67820DF22C91E7D4946B79D7E9FBCDC2A9EA99036CE0 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SSTORE SWAP5 DUP8 AND DUP1 DUP5 MSTORE DUP6 DUP5 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 ADD SWAP1 SWAP3 SSTORE DUP6 DUP4 MSTORE PUSH1 0x3 DUP2 MSTORE DUP5 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE DUP5 DUP4 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 AND DUP3 OR SWAP1 SSTORE SWAP3 MLOAD DUP5 SWAP4 SWAP3 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE DUP1 DUP3 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x2D44 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x414C52454144595F4D494E544544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 ADD SWAP1 SWAP3 SSTORE DUP5 DUP4 MSTORE PUSH1 0x2 SWAP1 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP5 OR SWAP1 SSTORE MLOAD DUP4 SWAP3 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2EBF JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E94 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EB8 SWAP2 SWAP1 PUSH2 0x3795 JUMP JUMPDEST POP POP PUSH2 0x2F78 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F73 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP8 MULMOD DUP6 DUP8 MUL SWAP3 POP DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH1 0x0 EQ ISZERO PUSH2 0x2FD7 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x2FCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x304A JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x2FE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x30DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4D494E54454400000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH2 0x1E36 DUP2 PUSH1 0x0 DUP5 PUSH2 0x2BDD JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x30FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0x310F PUSH2 0x310A DUP4 PUSH2 0x39EF JUMP JUMPDEST PUSH2 0x39A0 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP8 DUP5 DUP7 PUSH1 0x6 SHL DUP10 ADD ADD GT ISZERO PUSH2 0x312F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x317A JUMPI PUSH1 0x40 DUP1 DUP5 DUP13 SUB SLT ISZERO PUSH2 0x314B JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3153 PUSH2 0x3977 JUMP JUMPDEST DUP5 MLOAD PUSH2 0x315E DUP2 PUSH2 0x3C57 JUMP JUMPDEST DUP2 MSTORE DUP5 DUP9 ADD MLOAD DUP9 DUP3 ADD MSTORE DUP7 MSTORE SWAP5 DUP7 ADD SWAP5 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3133 JUMP JUMPDEST POP SWAP2 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x319A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x319A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x319A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x31E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x304A DUP2 PUSH2 0x3C57 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x320B DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x321B DUP2 PUSH2 0x3C57 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x323B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3246 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3256 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x327D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3288 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3298 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x32BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x32CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x32DA PUSH2 0x310A DUP3 PUSH2 0x3A13 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP9 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x32EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x332A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3335 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x3345 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x335A PUSH1 0x60 DUP9 ADD PUSH2 0x31BF JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3392 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x321B DUP2 PUSH2 0x3C7C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x33BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x33C8 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP7 POP PUSH2 0x33D6 PUSH1 0x20 DUP10 ADD PUSH2 0x3188 JUMP JUMPDEST SWAP6 POP PUSH2 0x33E4 PUSH1 0x40 DUP10 ADD PUSH2 0x3188 JUMP JUMPDEST SWAP5 POP PUSH2 0x33F2 PUSH1 0x60 DUP10 ADD PUSH2 0x319F JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 PUSH1 0xA0 DUP3 ADD CALLDATALOAD SWAP6 POP PUSH1 0xC0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3431 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3463 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x335A PUSH1 0x60 DUP9 ADD PUSH2 0x31BF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3492 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x34A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x34BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x34C8 PUSH2 0x310A DUP3 PUSH2 0x39EF JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE DUP5 DUP3 ADD SWAP2 POP DUP5 DUP5 ADD DUP9 DUP7 DUP6 PUSH1 0x5 SHL DUP8 ADD ADD GT ISZERO PUSH2 0x34E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x3514 JUMPI DUP1 MLOAD PUSH2 0x3500 DUP2 PUSH2 0x3C57 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x34ED JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3533 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x354B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x355F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x356E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x3583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x35AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x35C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x35CE DUP8 DUP4 DUP9 ADD PUSH2 0x30E9 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x35E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35F1 DUP7 DUP3 DUP8 ADD PUSH2 0x30E9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3614 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x304A DUP2 PUSH2 0x3C7C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x304A DUP2 PUSH2 0x3C8A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x364E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x304A DUP2 PUSH2 0x3C8A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x366B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3682 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x3693 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x36A1 PUSH2 0x310A DUP3 PUSH2 0x3A13 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x36B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36C7 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3B65 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x36E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x36FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3717 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3729 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x3739 DUP2 PUSH2 0x3C7C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x375A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH2 0x376A PUSH1 0x20 DUP7 ADD PUSH2 0x319F JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x377A DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x378A DUP2 PUSH2 0x3C7C JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x37A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x37D1 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3B65 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3825 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3B65 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x386E PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x37B9 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x38EB JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x38D9 DUP6 DUP4 MLOAD PUSH2 0x37B9 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x389F JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x304A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x37B9 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x3940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x395B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x3970 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x399A JUMPI PUSH2 0x399A PUSH2 0x3C28 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x39E7 JUMPI PUSH2 0x39E7 PUSH2 0x3C28 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3A09 JUMPI PUSH2 0x3A09 PUSH2 0x3C28 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3A2D JUMPI PUSH2 0x3A2D PUSH2 0x3C28 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x3A84 JUMPI PUSH2 0x3A84 PUSH2 0x3BCA JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3AA0 JUMPI PUSH2 0x3AA0 PUSH2 0x3BCA JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3ADB JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3B18 JUMPI PUSH2 0x3B18 PUSH2 0x3BCA JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x3B46 JUMPI PUSH2 0x3B46 PUSH2 0x3BCA JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3B60 JUMPI PUSH2 0x3B60 PUSH2 0x3BCA JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3B80 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3B68 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xC6F JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x3BC3 JUMPI PUSH2 0x3BC3 PUSH2 0x3BCA JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3C79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3C79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x3C79 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MUL DUP7 CALLVALUE DUP14 SWAP7 REVERT RETURN SWAP2 PUSH3 0x628E3F 0xB3 SMOD STOP SMOD 0x21 PUSH13 0xD69A53A416862C0E3003A4BA83 0xA7 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "726:6810:49:-:0;;;1259:283;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2425:13:51;2397:41;;2468:27;2801:4;;;;;;;;;;;-1:-1:-1;;;2801:4:51;;;;;2835:10;;;;;;;;;;-1:-1:-1;;;2835:10:51;;;;2644:278;;2672:95;2644:278;;;568:25:64;2785:22:51;609:18:64;;;602:34;2825:21:51;652:18:64;;;645:34;2864:13:51;695:18:64;;;688:34;2903:4:51;738:19:64;;;;731:61;;;;2644:278:51;;;;;;;;;;540:19:64;;;;2644:278:51;;;2621:311;;;;;;2508:431;2468:27;2448:47;;-1:-1:-1;;;;;;1306:49:49;;;;;;;1408:40;;;-1:-1:-1;;;1408:40:49;;;;1365:23;;-1:-1:-1;;;;;1306:49:49;;;1408:38;;:40;;;;;;;;;;;;;;;1306:49;1408:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1365:84;;1459:6;-1:-1:-1;;;;;1459:23:49;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;1494:14:49;;;;;;;-1:-1:-1;1518:17:49;1532:1;1518:5;:17::i;:::-;1296:246;1259:283;726:6810;;10261:500:51;10505:15;10523:13;;;;;;;10558:16;;;:7;:16;;;;;;;-1:-1:-1;;;;;10558:16:51;:30;10550:57;;;;-1:-1:-1;;;10550:57:51;;1005:2:64;10550:57:51;;;987:21:64;1044:2;1024:18;;;1017:30;-1:-1:-1;;;1063:18:64;;;1056:44;1117:18;;10550:57:51;;;;;;;;-1:-1:-1;;;;;10621:20:51;;;;;;:9;:20;;;;;;;;:22;;;;;;;;10657:16;;;:7;:16;;;;;:28;;-1:-1:-1;;;;;;10657:28:51;;;;;10704:40;10665:7;;10621:20;;10704:40;;10621:20;;10704:40;10481:274;10261:500;:::o;14:290:64:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:64;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:64:o;803:338::-;726:6810:49;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@DOMAIN_SEPARATOR_16606": {
                  "entryPoint": 3189,
                  "id": 16606,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@PERMIT_ALL_TYPEHASH_16523": {
                  "entryPoint": null,
                  "id": 16523,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@PERMIT_TYPEHASH_16517": {
                  "entryPoint": null,
                  "id": 16517,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_burn_17127": {
                  "entryPoint": 12369,
                  "id": 17127,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_calculateDomainSeparator_16588": {
                  "entryPoint": null,
                  "id": 16588,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_mint_17096": {
                  "entryPoint": 11439,
                  "id": 17096,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_transfer_15576": {
                  "entryPoint": 11732,
                  "id": 15576,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@_transfer_17165": {
                  "entryPoint": 11229,
                  "id": 17165,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@approve_16667": {
                  "entryPoint": 2220,
                  "id": 16667,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@balanceOf_16494": {
                  "entryPoint": null,
                  "id": 16494,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@batch_24149": {
                  "entryPoint": 2555,
                  "id": 24149,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@bento_14923": {
                  "entryPoint": null,
                  "id": 14923,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@collect_15478": {
                  "entryPoint": 6094,
                  "id": 15478,
                  "parameterSlots": 3,
                  "returnSlots": 2
                },
                "@decreaseLiquidity_15314": {
                  "entryPoint": 9546,
                  "id": 15314,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@getApproved_16504": {
                  "entryPoint": null,
                  "id": 16504,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@isApprovedForAll_16511": {
                  "entryPoint": null,
                  "id": 16511,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@masterDeployer_14926": {
                  "entryPoint": null,
                  "id": 14926,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@mulDiv_3545": {
                  "entryPoint": 12159,
                  "id": 3545,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@name_16483": {
                  "entryPoint": null,
                  "id": 16483,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@noncesForAll_16539": {
                  "entryPoint": null,
                  "id": 16539,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@nonces_16534": {
                  "entryPoint": null,
                  "id": 16534,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@ownerOf_16499": {
                  "entryPoint": null,
                  "id": 16499,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@permitAll_17052": {
                  "entryPoint": 7738,
                  "id": 17052,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@permit_16958": {
                  "entryPoint": 5090,
                  "id": 16958,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@positionFees_15539": {
                  "entryPoint": 9082,
                  "id": 15539,
                  "parameterSlots": 1,
                  "returnSlots": 4
                },
                "@positionMintCallback_15113": {
                  "entryPoint": 3557,
                  "id": 15113,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "@positions_14931": {
                  "entryPoint": null,
                  "id": 14931,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@safeTransferFrom_16794": {
                  "entryPoint": 3524,
                  "id": 16794,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@safeTransferFrom_16858": {
                  "entryPoint": 8638,
                  "id": 16858,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@setApprovalForAll_16702": {
                  "entryPoint": 7306,
                  "id": 16702,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@supportsInterface_16625": {
                  "entryPoint": 2067,
                  "id": 16625,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@symbol_16486": {
                  "entryPoint": null,
                  "id": 16486,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@totalSupply_16489": {
                  "entryPoint": null,
                  "id": 16489,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@transferFrom_16773": {
                  "entryPoint": 2925,
                  "id": 16773,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@transfer_16728": {
                  "entryPoint": 7582,
                  "id": 16728,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_decode_array_struct_TokenAmount_dyn_fromMemory": {
                  "entryPoint": 12521,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_int24": {
                  "entryPoint": 12680,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 12752,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 12781,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 12838,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr": {
                  "entryPoint": 12903,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint8t_bytes32t_bytes32": {
                  "entryPoint": 13073,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 13172,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_int24t_int24t_uint128t_uint256t_uint256t_uint256": {
                  "entryPoint": 13218,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 7
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 13331,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32": {
                  "entryPoint": 13375,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptr_fromMemory": {
                  "entryPoint": 13439,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 13600,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptrt_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptrt_uint256_fromMemory": {
                  "entryPoint": 13717,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_bool_fromMemory": {
                  "entryPoint": 13826,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4": {
                  "entryPoint": 13855,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes4_fromMemory": {
                  "entryPoint": 13884,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_string_memory_ptr_fromMemory": {
                  "entryPoint": 13913,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": 14032,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 14057,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_addresst_bool": {
                  "entryPoint": 14082,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_uint256t_uint128t_addresst_bool": {
                  "entryPoint": 14148,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_uint256t_uint256_fromMemory": {
                  "entryPoint": 14229,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_uint128": {
                  "entryPoint": 12703,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_uint8": {
                  "entryPoint": 12735,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_bytes": {
                  "entryPoint": 14265,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 14339,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 14355,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14383,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14456,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IConcentratedLiquidityPool_$2753_t_uint128_t_int24_t_int24_t_uint32_t_uint256_t_uint256__to_t_address_t_uint128_t_int24_t_int24_t_uint32_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 8,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_int24_t_int24__to_t_int24_t_int24__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_int24_t_int24_t_address_t_bool__to_t_int24_t_int24_t_address_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_int24_t_int24_t_uint128_t_address_t_bool__to_t_int24_t_int24_t_uint128_t_address_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14584,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_2ba0a472d889b88ae8a055d178e3d84efcf5a713d16aa7a9879db3c5b3701a97__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_3913df11fc3ef68f58caac321c143116ca9eca562aa90d85e5408b7f67e66fc2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4192981dee7e8bfb48280ce8c787f48b721f216d4db7f6a4070c234e0356cb15__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5036b6b1196e0e260c3f6c86c35b3544b8ac944b03f4f4c94ebef3efe3125047__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5f394f9c228ccba9127c56502b41d7c2b5ccd3e02de4b5a7321f8499ea750e52__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5f5e0bde2fff1c9840ee5b42dd85e8f0d5b9b295bcee54dd3d6381f17c21c473__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_9c8054bffc0758b4ef58b6bf591b4f1d69207559757d350a1dbc6e95379c7a18__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ba2319f5fa9f0c8e55f0d6899910b7354e6f643d1d349de47190066d85e68a1c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c04b5fb25a69354210ab22b09345d0b9caace9678d659f670b0674d722abad2d__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_e3f56786f4dc15ea567a5bcea1aa6e11424106cac78b0acf41b1b7deccad9f1b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_e904b298bc24890ae0c043938d840f08b90773c1635904efe1336d6f851f98ca__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint128__to_t_uint128__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "access_calldata_tail_t_bytes_calldata_ptr": {
                  "entryPoint": 14603,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "allocate_memory": {
                  "entryPoint": 14752,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_memory_3987": {
                  "entryPoint": 14711,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "array_allocation_size_array_address_dyn": {
                  "entryPoint": 14831,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_allocation_size_bytes": {
                  "entryPoint": 14867,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint128": {
                  "entryPoint": 14937,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 14989,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 15013,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 15072,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint128": {
                  "entryPoint": 15133,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 15182,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 15205,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "increment_t_uint256": {
                  "entryPoint": 15249,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 15306,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 15353,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 15400,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 15447,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bool": {
                  "entryPoint": 15484,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bytes4": {
                  "entryPoint": 15498,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:31469:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "100:922:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "149:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "158:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "161:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "151:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "151:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "151:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "128:6:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "136:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "124:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "124:17:64"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:3:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "120:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "120:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "113:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "113:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "110:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "174:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "190:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "184:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "184:13:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "178:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "206:14:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "216:4:64",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "210:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "229:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "296:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_address_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "256:39:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "256:43:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "240:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "240:60:64"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "233:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "309:16:64",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "322:3:64"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "313:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "341:3:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "346:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "334:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "334:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "334:15:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "358:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "369:3:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "374:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "365:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "365:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "358:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "386:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "401:6:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "409:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "397:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "397:15:64"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "390:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "466:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "475:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "478:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "468:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "468:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "468:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "435:6:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "447:1:64",
                                                "type": "",
                                                "value": "6"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "450:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "443:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "443:10:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "431:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "431:23:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "456:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "427:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "427:32:64"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "461:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "424:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "424:41:64"
                              },
                              "nodeType": "YulIf",
                              "src": "421:61:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "491:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "500:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "495:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "510:12:64",
                              "value": {
                                "name": "i",
                                "nodeType": "YulIdentifier",
                                "src": "521:1:64"
                              },
                              "variables": [
                                {
                                  "name": "i_1",
                                  "nodeType": "YulTypedName",
                                  "src": "514:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "582:411:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "596:14:64",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "606:4:64",
                                      "type": "",
                                      "value": "0x40"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "600:2:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "649:16:64",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "i",
                                                "nodeType": "YulIdentifier",
                                                "src": "658:1:64"
                                              },
                                              {
                                                "name": "i",
                                                "nodeType": "YulIdentifier",
                                                "src": "661:1:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "651:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "651:12:64"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "651:12:64"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "end",
                                              "nodeType": "YulIdentifier",
                                              "src": "634:3:64"
                                            },
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "639:3:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "630:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "630:13:64"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "645:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "slt",
                                        "nodeType": "YulIdentifier",
                                        "src": "626:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "626:22:64"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "623:42:64"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "678:35:64",
                                    "value": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "allocate_memory_3987",
                                        "nodeType": "YulIdentifier",
                                        "src": "691:20:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "691:22:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "682:5:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "726:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "747:3:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "741:5:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "741:10:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulTypedName",
                                        "src": "730:7:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "789:7:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "validator_revert_address",
                                        "nodeType": "YulIdentifier",
                                        "src": "764:24:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "764:33:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "764:33:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "817:5:64"
                                        },
                                        {
                                          "name": "value_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "824:7:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "810:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "810:22:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "810:22:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "856:5:64"
                                            },
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "863:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "852:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "852:14:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "878:3:64"
                                                },
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "883:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "874:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "874:12:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "868:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "868:19:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "845:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "845:43:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "845:43:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "908:3:64"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "913:5:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "901:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "901:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "901:18:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "932:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "943:3:64"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "948:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "939:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "939:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "932:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "964:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "975:3:64"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "980:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "971:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "971:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "964:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "542:3:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "547:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "539:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "539:11:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "551:22:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "553:18:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "564:3:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "569:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "560:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "560:11:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "553:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "535:3:64",
                                "statements": []
                              },
                              "src": "531:462:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1002:14:64",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "1011:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1002:5:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_struct_TokenAmount_dyn_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "74:6:64",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "82:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "90:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:1008:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1074:113:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1084:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1106:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1093:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1093:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "1084:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1165:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1174:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1177:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1167:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1167:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1167:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1135:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1153:1:64",
                                            "type": "",
                                            "value": "2"
                                          },
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1156:5:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "signextend",
                                          "nodeType": "YulIdentifier",
                                          "src": "1142:10:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1142:20:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1132:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1132:31:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1125:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1125:39:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1122:59:64"
                            }
                          ]
                        },
                        "name": "abi_decode_int24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1053:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1064:5:64",
                            "type": ""
                          }
                        ],
                        "src": "1027:160:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1241:139:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1251:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1273:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1260:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1260:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "1251:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1358:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1367:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1370:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1360:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1360:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1360:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1302:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1313:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1320:34:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1309:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1309:46:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1299:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1299:57:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1292:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1292:65:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1289:85:64"
                            }
                          ]
                        },
                        "name": "abi_decode_uint128",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1220:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1231:5:64",
                            "type": ""
                          }
                        ],
                        "src": "1192:188:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1432:109:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1442:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1464:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1451:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1451:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "1442:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1519:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1528:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1531:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1521:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1521:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1521:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1493:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1504:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1511:4:64",
                                            "type": "",
                                            "value": "0xff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1500:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1500:16:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1490:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1490:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1483:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1483:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1480:55:64"
                            }
                          ]
                        },
                        "name": "abi_decode_uint8",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1411:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1422:5:64",
                            "type": ""
                          }
                        ],
                        "src": "1385:156:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1616:177:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1662:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1671:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1674:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1664:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1664:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1664:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1637:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1646:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1633:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1633:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1658:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1629:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1629:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1626:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1687:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1713:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1700:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1700:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1691:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1757:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1732:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1732:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1732:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1772:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1782:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1772:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1582:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1593:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1605:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1546:247:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1885:301:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1931:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1940:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1943:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1933:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1933:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1933:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1906:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1915:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1902:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1902:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1927:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1898:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1898:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1895:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1956:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1982:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1969:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1969:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1960:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2026:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2001:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2001:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2001:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2041:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2051:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2041:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2065:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2097:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2108:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2093:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2093:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2080:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2080:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2069:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2146:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2121:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2121:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2121:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2163:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "2173:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2163:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1843:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1854:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1866:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1874:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1798:388:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2295:352:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2341:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2350:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2353:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2343:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2343:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2343:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2316:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2325:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2312:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2312:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2337:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2308:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2308:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2305:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2366:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2392:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2379:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2379:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2370:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2436:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2411:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2411:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2411:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2451:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2461:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2451:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2475:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2507:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2518:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2503:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2503:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2490:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2490:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2479:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2556:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2531:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2531:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2531:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2573:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "2583:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2573:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2599:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2626:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2637:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2622:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2622:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2609:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2609:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2599:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2245:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2256:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2268:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2276:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2284:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2191:456:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2782:886:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2829:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2838:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2841:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2831:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2831:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2831:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2803:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2812:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2799:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2799:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2824:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2795:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2795:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2792:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2854:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2880:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2867:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2867:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2858:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2924:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2899:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2899:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2899:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2939:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2949:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2939:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2963:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2995:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3006:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2991:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2991:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2978:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2978:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2967:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3044:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3019:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3019:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3019:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3061:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3071:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3061:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3087:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3114:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3125:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3110:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3110:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3097:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3097:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3087:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3138:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3169:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3180:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3165:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3165:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3152:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3152:32:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3142:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3227:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3236:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3239:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3229:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3229:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3229:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3199:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3207:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3196:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3196:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3193:50:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3252:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3266:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3277:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3262:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3262:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3256:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3332:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3341:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3344:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3334:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3334:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3334:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "3311:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3315:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3307:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3307:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3322:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3303:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3303:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3296:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3296:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3293:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3357:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3380:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3367:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3367:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "3361:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3392:61:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3449:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "3421:27:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3421:31:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3405:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3405:48:64"
                              },
                              "variables": [
                                {
                                  "name": "array",
                                  "nodeType": "YulTypedName",
                                  "src": "3396:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "3469:5:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3476:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3462:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3462:17:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3462:17:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3525:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3534:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3537:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3527:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3527:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3527:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "3502:2:64"
                                          },
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "3506:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3498:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3498:11:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3511:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3494:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3494:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3516:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3491:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3491:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3488:53:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "3567:5:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3574:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3563:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3563:14:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3583:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3587:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3579:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3579:11:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3592:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "3550:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3550:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3550:45:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array",
                                            "nodeType": "YulIdentifier",
                                            "src": "3619:5:64"
                                          },
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "3626:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3615:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3615:14:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3631:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3611:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3611:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3636:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3604:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3604:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3604:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3647:15:64",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "3657:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3647:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2724:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2735:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2747:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2755:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2763:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2771:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2652:1016:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3826:512:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3873:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3882:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3885:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3875:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3875:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3875:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3847:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3856:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3843:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3843:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3868:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3839:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3839:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3836:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3898:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3924:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3911:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3911:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3902:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3968:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3943:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3943:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3943:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3983:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3993:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3983:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4007:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4039:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4050:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4035:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4035:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4022:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4022:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4011:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4088:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4063:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4063:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4063:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4105:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4115:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4105:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4131:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4158:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4169:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4154:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4154:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4141:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4141:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4131:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4182:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4213:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4224:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4209:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4209:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint8",
                                  "nodeType": "YulIdentifier",
                                  "src": "4192:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4192:36:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4182:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4237:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4264:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4275:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4260:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4260:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4247:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4247:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "4237:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4289:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4316:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4327:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4312:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4312:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4299:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4299:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "4289:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint8t_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3752:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3763:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3775:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3783:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3791:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3799:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3807:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "3815:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3673:665:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4427:298:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4473:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4482:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4485:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4475:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4475:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4475:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4448:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4457:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4444:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4444:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4469:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4440:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4440:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4437:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4498:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4524:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4511:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4511:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4502:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4568:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4543:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4543:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4543:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4583:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4593:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4583:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4607:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4639:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4650:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4635:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4635:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4622:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4622:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4611:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4685:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "4663:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4663:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4663:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4702:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4712:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4702:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4385:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4396:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4408:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4416:6:64",
                            "type": ""
                          }
                        ],
                        "src": "4343:382:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4898:501:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4945:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4954:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4957:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4947:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4947:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4947:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4919:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4928:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4915:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4915:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4940:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4911:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4911:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4908:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4970:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4996:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4983:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4983:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4974:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5040:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5015:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5015:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5015:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5055:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5065:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5055:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5079:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5110:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5121:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5106:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5106:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "5089:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5089:36:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5079:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5134:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5165:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5176:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5161:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5161:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "5144:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5144:36:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5134:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5189:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5222:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5233:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5218:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5218:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint128",
                                  "nodeType": "YulIdentifier",
                                  "src": "5199:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5199:38:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "5189:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5246:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5273:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5284:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5269:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5269:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5256:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5256:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "5246:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5298:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5325:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5336:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5321:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5321:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5308:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5308:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "5298:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5350:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5377:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5388:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5373:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5373:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5360:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5360:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "5350:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_int24t_int24t_uint128t_uint256t_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4816:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4827:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4839:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4847:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4855:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4863:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "4871:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "4879:6:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "4887:6:64",
                            "type": ""
                          }
                        ],
                        "src": "4730:669:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5491:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5537:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5546:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5549:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5539:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5539:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5539:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5512:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5521:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5508:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5508:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5533:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5504:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5504:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5501:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5562:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5588:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5575:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5575:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5566:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5632:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5607:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5607:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5607:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5647:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5657:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5647:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5671:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5698:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5709:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5694:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5694:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5681:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5681:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5671:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5449:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5460:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5472:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5480:6:64",
                            "type": ""
                          }
                        ],
                        "src": "5404:315:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5877:439:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5924:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5933:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5936:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5926:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5926:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5926:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5898:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5907:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5894:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5894:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5919:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5890:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5890:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5887:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5949:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5975:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5962:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5962:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5953:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6019:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5994:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5994:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5994:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6034:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6044:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6034:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6058:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6085:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6096:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6081:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6081:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6068:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6068:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6058:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6109:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6136:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6147:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6132:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6132:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6119:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6119:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "6109:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6160:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6191:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6202:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6187:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6187:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint8",
                                  "nodeType": "YulIdentifier",
                                  "src": "6170:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6170:36:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "6160:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6215:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6242:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6253:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6238:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6238:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6225:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6225:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "6215:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6267:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6294:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6305:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6290:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6290:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6277:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6277:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "6267:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5803:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5814:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5826:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5834:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5842:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5850:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "5858:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "5866:6:64",
                            "type": ""
                          }
                        ],
                        "src": "5724:592:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6427:861:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6437:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6447:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6441:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6494:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6503:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6506:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6496:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6496:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6496:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6469:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6478:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6465:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6465:23:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6490:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6461:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6461:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6458:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6519:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6539:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6533:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6533:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6523:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6592:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6601:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6604:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6594:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6594:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6594:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6564:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6572:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6561:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6561:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6558:50:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6617:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6631:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6642:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6627:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6627:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "6621:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6697:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6706:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6709:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6699:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6699:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6699:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "6676:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6680:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6672:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6672:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6687:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "6668:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6668:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6661:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6661:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6658:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6722:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6738:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6732:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6732:9:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "6726:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6750:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "6817:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_address_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "6777:39:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6777:43:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "6761:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6761:60:64"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "6754:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6830:16:64",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "6843:3:64"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6834:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "6862:3:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "6867:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6855:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6855:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6855:15:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6879:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "6890:3:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6895:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6886:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6886:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "6879:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6907:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6922:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6926:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6918:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6918:11:64"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "6911:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6983:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6992:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6995:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6985:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6985:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6985:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "6952:2:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6960:1:64",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "6963:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "6956:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6956:10:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6948:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6948:19:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6969:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6944:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6944:28:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6974:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6941:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6941:41:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6938:61:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7008:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7017:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "7012:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7072:186:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "7086:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "7105:3:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "7099:5:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7099:10:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "7090:5:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "7147:5:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "validator_revert_address",
                                        "nodeType": "YulIdentifier",
                                        "src": "7122:24:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7122:31:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7122:31:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "7173:3:64"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "7178:5:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7166:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7166:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7166:18:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7197:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "7208:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7213:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7204:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7204:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "7197:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7229:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "7240:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7245:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7236:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7236:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "7229:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7038:1:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7041:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7035:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7035:9:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "7045:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7047:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "7056:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7059:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7052:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7052:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "7047:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "7031:3:64",
                                "statements": []
                              },
                              "src": "7027:231:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7267:15:64",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "7277:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7267:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6393:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6404:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6416:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6321:967:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7409:510:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7455:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7464:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7467:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7457:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7457:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7457:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7430:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7439:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7426:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7426:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7451:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7422:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7422:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7419:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7480:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7507:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7494:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7494:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "7484:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7526:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7536:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7530:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7581:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7590:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7593:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7583:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7583:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7583:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7569:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7577:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7566:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7566:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7563:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7606:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7620:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7631:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7616:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7616:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "7610:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7686:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7695:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7698:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7688:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7688:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7688:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7665:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7669:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7661:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7661:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7676:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7657:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7657:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7650:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7650:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7647:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7711:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7738:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7725:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7725:16:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "7715:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7768:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7777:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7780:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7770:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7770:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7770:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7756:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7764:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7753:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7753:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7750:34:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7842:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7851:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7854:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7844:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7844:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7844:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7807:2:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7815:1:64",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "7818:6:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "7811:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7811:14:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7803:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7803:23:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7828:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7799:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7799:32:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7833:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7796:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7796:45:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7793:65:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7867:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7881:2:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7885:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7877:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7877:11:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7867:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7897:16:64",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "7907:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7897:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7367:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7378:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7390:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7398:6:64",
                            "type": ""
                          }
                        ],
                        "src": "7293:626:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8147:532:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8193:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8202:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8205:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8195:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8195:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8195:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8168:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8177:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8164:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8164:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8189:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8160:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8160:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "8157:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8218:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8238:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8232:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8232:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "8222:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8257:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8267:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8261:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8312:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8321:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8324:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8314:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8314:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8314:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8300:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8308:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8297:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8297:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "8294:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8337:93:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8402:9:64"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "8413:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8398:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8398:22:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8422:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_TokenAmount_dyn_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "8347:50:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8347:83:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8337:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8439:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8465:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8476:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8461:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8461:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8455:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8455:25:64"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8443:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8509:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8518:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8521:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8511:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8511:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8511:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8495:8:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8505:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8492:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8492:16:64"
                              },
                              "nodeType": "YulIf",
                              "src": "8489:36:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8534:95:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8599:9:64"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8610:8:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8595:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8595:24:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8621:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_TokenAmount_dyn_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "8544:50:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8544:85:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8534:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8638:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8658:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8669:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8654:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8654:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8648:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8648:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "8638:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptrt_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptrt_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8097:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8108:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8120:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8128:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8136:6:64",
                            "type": ""
                          }
                        ],
                        "src": "7924:755:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8762:167:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8808:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8817:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8820:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8810:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8810:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8810:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8783:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8792:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8779:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8779:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8804:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8775:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8775:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "8772:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8833:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8852:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8846:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8846:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8837:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8893:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "8871:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8871:28:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8871:28:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8908:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8918:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8908:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8728:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8739:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8751:6:64",
                            "type": ""
                          }
                        ],
                        "src": "8684:245:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9003:176:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9049:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9058:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9061:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9051:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9051:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9051:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9024:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9033:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9020:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9020:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9045:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9016:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9016:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "9013:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9074:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9100:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9087:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9087:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9078:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9143:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "9119:23:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9119:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9119:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9158:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9168:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9158:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8969:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8980:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8992:6:64",
                            "type": ""
                          }
                        ],
                        "src": "8934:245:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9264:169:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9310:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9319:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9322:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9312:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9312:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9312:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9285:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9294:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9281:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9281:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9306:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9277:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9277:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "9274:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9335:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9354:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9348:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9348:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9339:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9397:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "9373:23:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9373:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9373:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9412:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9422:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9412:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9230:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9241:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9253:6:64",
                            "type": ""
                          }
                        ],
                        "src": "9184:249:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9529:544:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9575:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9584:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9587:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9577:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9577:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9577:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9550:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9559:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9546:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9546:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9571:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9542:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9542:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "9539:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9600:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9620:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9614:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9614:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9604:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9673:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9682:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9685:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9675:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9675:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9675:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9645:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9653:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9642:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9642:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "9639:50:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9698:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9712:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9723:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9708:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9708:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9702:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9778:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9787:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9790:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9780:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9780:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9780:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "9757:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9761:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9753:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9753:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9768:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "9749:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9749:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "9742:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9742:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "9739:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9803:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9819:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9813:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9813:9:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "9807:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9831:61:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "9888:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "9860:27:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9860:31:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "9844:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9844:48:64"
                              },
                              "variables": [
                                {
                                  "name": "array",
                                  "nodeType": "YulTypedName",
                                  "src": "9835:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "9908:5:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "9915:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9901:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9901:17:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9901:17:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9964:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9973:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9976:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9966:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9966:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9966:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "9941:2:64"
                                          },
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "9945:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9937:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9937:11:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9950:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9933:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9933:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9955:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9930:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9930:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "9927:53:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10015:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10019:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10011:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10011:11:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "10028:5:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10035:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10024:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10024:14:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "10040:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "9989:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9989:54:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9989:54:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10052:15:64",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "10062:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10052:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9495:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9506:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9518:6:64",
                            "type": ""
                          }
                        ],
                        "src": "9438:635:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10148:110:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10194:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10203:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10206:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10196:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10196:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10196:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10169:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10178:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10165:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10165:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10190:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10161:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10161:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "10158:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10219:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10242:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10229:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10229:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10219:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10114:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10125:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10137:6:64",
                            "type": ""
                          }
                        ],
                        "src": "10078:180:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10344:103:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10390:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10399:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10402:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10392:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10392:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10392:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10365:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10374:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10361:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10361:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10386:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10357:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10357:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "10354:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10415:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10431:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10425:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10425:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10415:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10310:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10321:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10333:6:64",
                            "type": ""
                          }
                        ],
                        "src": "10263:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10553:349:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10599:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10608:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10611:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10601:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10601:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10601:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10574:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10583:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10570:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10570:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10595:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10566:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10566:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "10563:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10624:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10647:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10634:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10634:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10624:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10666:45:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10696:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10707:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10692:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10692:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10679:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10679:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10670:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10745:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10720:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10720:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10720:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10760:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10770:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "10760:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10784:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10816:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10827:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10812:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10812:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10799:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10799:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10788:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10862:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "10840:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10840:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10840:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10879:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "10889:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "10879:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10503:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10514:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10526:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10534:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10542:6:64",
                            "type": ""
                          }
                        ],
                        "src": "10452:450:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11025:407:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11072:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11081:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11084:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11074:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11074:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11074:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11046:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11055:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11042:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11042:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11067:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11038:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11038:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "11035:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11097:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11120:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11107:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11107:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11097:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11139:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11172:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11183:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11168:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11168:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint128",
                                  "nodeType": "YulIdentifier",
                                  "src": "11149:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11149:38:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11139:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11196:45:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11226:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11237:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11222:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11222:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11209:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11209:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "11200:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11275:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11250:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11250:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11250:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11290:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "11300:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "11290:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11314:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11346:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11357:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11342:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11342:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11329:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11329:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11318:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11392:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "11370:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11370:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11370:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11409:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "11419:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "11409:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint128t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10967:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10978:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10990:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10998:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "11006:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "11014:6:64",
                            "type": ""
                          }
                        ],
                        "src": "10907:525:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11535:147:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11581:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11590:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11593:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11583:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11583:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11583:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11556:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11565:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11552:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11552:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11577:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11548:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11548:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "11545:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11606:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11622:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11616:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11616:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11606:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11641:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11661:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11672:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11657:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11657:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11651:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11651:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11641:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11493:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11504:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11516:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11524:6:64",
                            "type": ""
                          }
                        ],
                        "src": "11437:245:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11736:267:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11746:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11766:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11760:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11760:12:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "11750:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "11788:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11793:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11781:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11781:19:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11781:19:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "11835:5:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11842:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11831:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11831:16:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "11853:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11858:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11849:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11849:14:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11865:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "11809:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11809:63:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11809:63:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11881:116:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "11896:3:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "11909:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "11917:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "11905:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "11905:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "11922:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "11901:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11901:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11892:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11892:98:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11992:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11888:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11888:109:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "11881:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "11713:5:64",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "11720:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "11728:3:64",
                            "type": ""
                          }
                        ],
                        "src": "11687:316:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12155:124:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12178:3:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12183:6:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12191:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "12165:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12165:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12165:33:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12207:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12221:3:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12226:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12217:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12217:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12211:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12249:2:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12253:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12242:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12242:13:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12242:13:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12264:9:64",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "12271:2:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "12264:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "12123:3:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12128:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12136:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "12147:3:64",
                            "type": ""
                          }
                        ],
                        "src": "12008:271:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12421:137:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12431:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12451:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12445:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12445:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "12435:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "12493:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12501:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12489:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12489:17:64"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12508:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12513:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "12467:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12467:53:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12467:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12529:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12540:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12545:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12536:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12536:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "12529:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "12397:3:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12402:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "12413:3:64",
                            "type": ""
                          }
                        ],
                        "src": "12284:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12811:196:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12828:3:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12833:66:64",
                                    "type": "",
                                    "value": "0x1901000000000000000000000000000000000000000000000000000000000000"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12821:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12821:79:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12821:79:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12920:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12925:1:64",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12916:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12916:11:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12929:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12909:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12909:27:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12909:27:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12956:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12961:2:64",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12952:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12952:12:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12966:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12945:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12945:28:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12945:28:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12982:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12993:3:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12998:2:64",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12989:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12989:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "12982:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "12779:3:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12784:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12792:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "12803:3:64",
                            "type": ""
                          }
                        ],
                        "src": "12563:444:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13113:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13123:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13135:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13146:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13131:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13131:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13123:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13165:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "13180:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13188:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13176:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13176:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13158:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13158:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13158:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13082:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13093:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13104:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13012:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13372:198:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13382:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13394:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13405:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13390:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13390:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13382:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13417:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13427:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13421:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13485:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "13500:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13508:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13496:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13496:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13478:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13478:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13478:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13532:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13543:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13528:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13528:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13552:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13560:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13548:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13548:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13521:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13521:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13521:43:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13333:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13344:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13352:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13363:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13243:327:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13796:338:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13806:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13818:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13829:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13814:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13814:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13806:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13842:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13852:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13846:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13910:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "13925:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13933:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13921:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13921:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13903:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13903:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13903:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13957:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13968:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13953:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13953:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13977:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13985:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13973:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13973:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13946:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13946:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13946:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14009:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14020:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14005:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14005:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "14029:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14037:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14025:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14025:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13998:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13998:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13998:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14061:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14072:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14057:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14057:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "14077:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14050:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14050:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14050:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14104:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14115:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14100:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14100:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "14121:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14093:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14093:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14093:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13733:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "13744:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "13752:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "13760:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13768:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13776:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13787:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13575:559:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14324:294:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14334:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14346:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14357:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14342:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14342:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14334:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14370:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14380:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14374:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14438:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "14453:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14461:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14449:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14449:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14431:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14431:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14431:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14485:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14496:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14481:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14481:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14505:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14513:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14501:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14501:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14474:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14474:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14474:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14537:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14548:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14533:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14533:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "14557:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14565:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14553:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14553:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14526:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14526:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14526:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14589:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14600:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14585:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14585:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "14605:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14578:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14578:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14578:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14269:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "14280:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14288:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14296:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14304:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14315:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14139:479:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14826:308:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14836:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14846:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14840:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14904:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "14919:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14927:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14915:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14915:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14897:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14897:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14897:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14951:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14962:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14947:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14947:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14971:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14979:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14967:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14967:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14940:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14940:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14940:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15003:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15014:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14999:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14999:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "15019:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14992:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14992:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14992:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15046:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15057:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15042:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15042:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15062:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15035:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15035:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15035:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15075:53:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "15100:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15112:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15123:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15108:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15108:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "15083:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15083:45:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15075:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14771:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "14782:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14790:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14798:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14806:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14817:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14623:511:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15308:690:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15318:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15328:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15322:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15339:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15357:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15368:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15353:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15353:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15343:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15387:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15398:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15380:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15380:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15380:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15410:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "15421:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "15414:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15436:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "15456:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15450:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15450:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "15440:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15479:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "15487:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15472:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15472:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15472:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15503:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15514:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15525:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15510:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15510:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "15503:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15537:53:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15559:9:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "15574:1:64",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "15577:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "15570:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "15570:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15555:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15555:30:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15587:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15551:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15551:39:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "15541:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15599:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "15617:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15625:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15613:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15613:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "15603:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15637:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15646:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "15641:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15705:264:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "15726:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "tail_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15739:6:64"
                                                },
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15747:9:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "15735:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "15735:22:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "15759:66:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "15731:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15731:95:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "15719:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15719:108:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15719:108:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "15840:49:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "15873:6:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "15867:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15867:13:64"
                                        },
                                        {
                                          "name": "tail_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "15882:6:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_bytes",
                                        "nodeType": "YulIdentifier",
                                        "src": "15850:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15850:39:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "15840:6:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "15902:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "15916:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "15924:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "15912:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15912:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "15902:6:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "15940:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "15951:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "15956:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "15947:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15947:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "15940:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "15667:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "15670:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15664:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15664:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "15678:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "15680:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "15689:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15692:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "15685:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15685:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "15680:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "15660:3:64",
                                "statements": []
                              },
                              "src": "15656:313:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15978:14:64",
                              "value": {
                                "name": "tail_2",
                                "nodeType": "YulIdentifier",
                                "src": "15986:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15978:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15277:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15288:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15299:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15139:859:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16098:92:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16108:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16120:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16131:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16116:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16116:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16108:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16150:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "16175:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "16168:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16168:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "16161:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16161:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16143:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16143:41:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16143:41:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16067:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16078:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16089:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16003:187:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16296:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16306:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16318:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16329:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16314:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16314:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16306:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16348:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16359:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16341:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16341:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16341:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16265:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16276:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16287:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16195:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16590:329:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16600:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16612:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16623:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16608:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16608:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16600:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16643:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16654:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16636:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16636:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16636:25:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16670:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16680:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16674:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16742:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16753:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16738:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16738:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16762:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16770:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16758:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16758:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16731:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16731:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16731:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16794:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16805:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16790:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16790:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "16814:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16822:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16810:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16810:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16783:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16783:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16783:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16846:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16857:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16842:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16842:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "16862:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16835:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16835:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16835:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16889:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16900:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16885:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16885:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "16906:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16878:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16878:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16878:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16527:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "16538:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "16546:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "16554:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16562:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16570:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16581:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16377:542:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17137:299:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17147:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17159:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17170:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17155:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17155:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17147:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17190:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "17201:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17183:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17183:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17183:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17228:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17239:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17224:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17224:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17248:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17256:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17244:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17244:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17217:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17217:83:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17217:83:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17320:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17331:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17316:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17316:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "17336:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17309:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17309:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17309:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17363:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17374:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17359:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17359:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "17379:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17352:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17352:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17352:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17406:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17417:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17402:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17402:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "17423:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17395:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17395:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17395:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17074:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "17085:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "17093:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17101:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17109:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17117:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17128:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16924:512:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17654:299:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17664:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17676:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17687:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17672:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17672:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17664:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17707:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "17718:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17700:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17700:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17700:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17745:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17756:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17741:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17741:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17761:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17734:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17734:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17734:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17788:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17799:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17784:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17784:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "17804:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17777:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17777:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17777:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17831:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17842:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17827:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17827:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "17847:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17820:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17820:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17820:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17874:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17885:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17870:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17870:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "17895:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17903:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17891:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17891:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17863:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17863:84:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17863:84:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17591:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "17602:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "17610:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17618:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17626:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17634:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17645:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17441:512:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18139:217:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18149:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18161:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18172:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18157:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18157:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18149:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18192:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18203:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18185:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18185:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18185:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18230:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18241:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18226:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18226:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18250:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18258:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18246:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18246:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18219:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18219:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18219:45:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18284:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18295:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18280:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18280:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "18300:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18273:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18273:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18273:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18327:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18338:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18323:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18323:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "18343:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18316:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18316:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18316:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18084:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "18095:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "18103:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18111:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18119:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18130:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17958:398:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18487:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18497:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18509:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18520:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18505:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18505:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18497:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18539:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "18554:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18562:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18550:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18550:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18532:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18532:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18532:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18456:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18467:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18478:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18361:251:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18911:475:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18921:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18933:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18944:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18929:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18929:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18921:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18964:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "18979:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18987:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18975:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18975:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18957:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18957:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18957:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19051:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19062:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19047:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19047:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19071:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19079:34:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19067:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19067:47:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19040:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19040:75:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19040:75:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19135:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19146:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19131:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19131:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19162:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "19165:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "19151:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19151:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19124:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19124:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19124:49:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19193:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19204:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19189:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19189:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19220:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "19223:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "19209:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19209:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19182:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19182:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19182:49:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19251:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19262:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19247:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19247:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "19272:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19280:10:64",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19268:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19268:23:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19240:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19240:52:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19240:52:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19312:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19323:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19308:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19308:19:64"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "19329:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19301:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19301:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19301:35:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19356:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19367:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19352:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19352:19:64"
                                  },
                                  {
                                    "name": "value6",
                                    "nodeType": "YulIdentifier",
                                    "src": "19373:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19345:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19345:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19345:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IConcentratedLiquidityPool_$2753_t_uint128_t_int24_t_int24_t_uint32_t_uint256_t_uint256__to_t_address_t_uint128_t_int24_t_int24_t_uint32_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18832:9:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "18843:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "18851:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "18859:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "18867:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "18875:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18883:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18891:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18902:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18617:769:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19516:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19526:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19538:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19549:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19534:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19534:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19526:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19568:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19583:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19591:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19579:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19579:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19561:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19561:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19561:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19485:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19496:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19507:4:64",
                            "type": ""
                          }
                        ],
                        "src": "19391:250:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19767:149:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19777:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19789:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19800:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19785:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19785:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19777:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19819:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19841:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19844:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "19830:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19830:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19812:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19812:40:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19812:40:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19872:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19883:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19868:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19868:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19899:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19902:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "19888:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19888:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19861:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19861:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19861:49:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_int24_t_int24__to_t_int24_t_int24__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19728:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19739:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19747:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19758:4:64",
                            "type": ""
                          }
                        ],
                        "src": "19646:270:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20092:301:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "20102:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20114:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20125:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20110:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20110:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20102:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20145:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20167:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "20170:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "20156:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20156:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20138:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20138:40:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20138:40:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20198:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20209:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20194:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20194:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20225:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20228:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "20214:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20214:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20187:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20187:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20187:49:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20256:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20267:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20252:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20252:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "20276:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20284:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20272:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20272:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20245:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20245:83:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20245:83:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20348:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20359:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20344:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20344:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value3",
                                            "nodeType": "YulIdentifier",
                                            "src": "20378:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "20371:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20371:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "20364:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20364:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20337:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20337:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20337:50:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_int24_t_int24_t_address_t_bool__to_t_int24_t_int24_t_address_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20037:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "20048:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "20056:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "20064:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20072:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20083:4:64",
                            "type": ""
                          }
                        ],
                        "src": "19921:472:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20597:386:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "20607:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20619:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20630:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20615:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20615:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20607:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20650:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20672:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "20675:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "20661:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20661:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20643:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20643:40:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20643:40:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20703:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20714:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20699:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20699:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20730:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20733:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "20719:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20719:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20692:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20692:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20692:49:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20761:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20772:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20757:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20757:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "20781:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20789:34:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20777:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20777:47:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20750:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20750:75:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20750:75:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20845:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20856:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20841:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20841:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "20865:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20873:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20861:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20861:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20834:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20834:83:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20834:83:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20937:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20948:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20933:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20933:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value4",
                                            "nodeType": "YulIdentifier",
                                            "src": "20968:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "20961:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20961:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "20954:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20954:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20926:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20926:51:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20926:51:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_int24_t_int24_t_uint128_t_address_t_bool__to_t_int24_t_int24_t_uint128_t_address_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20534:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "20545:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "20553:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "20561:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "20569:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20577:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20588:4:64",
                            "type": ""
                          }
                        ],
                        "src": "20398:585:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21109:98:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21126:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21137:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21119:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21119:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21119:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21149:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "21174:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21186:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21197:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21182:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21182:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "21157:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21157:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21149:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21078:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21089:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21100:4:64",
                            "type": ""
                          }
                        ],
                        "src": "20988:219:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21386:165:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21403:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21414:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21396:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21396:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21396:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21437:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21448:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21433:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21433:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21453:2:64",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21426:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21426:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21426:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21476:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21487:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21472:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21472:18:64"
                                  },
                                  {
                                    "hexValue": "52414e47455f4d49535f4d41544348",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21492:17:64",
                                    "type": "",
                                    "value": "RANGE_MIS_MATCH"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21465:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21465:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21465:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21519:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21531:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21542:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21527:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21527:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21519:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_2ba0a472d889b88ae8a055d178e3d84efcf5a713d16aa7a9879db3c5b3701a97__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21363:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21377:4:64",
                            "type": ""
                          }
                        ],
                        "src": "21212:339:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21730:174:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21747:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21758:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21740:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21740:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21740:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21781:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21792:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21777:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21777:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21797:2:64",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21770:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21770:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21770:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21820:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21831:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21816:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21816:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f5045524d49545f5349474e4154555245",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21836:26:64",
                                    "type": "",
                                    "value": "INVALID_PERMIT_SIGNATURE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21809:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21809:54:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21809:54:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21872:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21884:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21895:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21880:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21880:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21872:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21707:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21721:4:64",
                            "type": ""
                          }
                        ],
                        "src": "21556:348:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22083:158:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22100:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22111:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22093:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22093:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22093:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22134:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22145:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22130:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22130:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22150:1:64",
                                    "type": "",
                                    "value": "9"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22123:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22123:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22123:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22172:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22183:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22168:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22168:18:64"
                                  },
                                  {
                                    "hexValue": "554e434c41494d4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22188:11:64",
                                    "type": "",
                                    "value": "UNCLAIMED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22161:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22161:39:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22161:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22209:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22221:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22232:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22217:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22217:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22209:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_3913df11fc3ef68f58caac321c143116ca9eca562aa90d85e5408b7f67e66fc2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22060:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22074:4:64",
                            "type": ""
                          }
                        ],
                        "src": "21909:332:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22420:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22437:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22448:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22430:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22430:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22430:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22471:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22482:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22467:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22467:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22487:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22460:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22460:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22460:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22510:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22521:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22506:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22506:18:64"
                                  },
                                  {
                                    "hexValue": "4e4f545f49445f4f574e4552",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22526:14:64",
                                    "type": "",
                                    "value": "NOT_ID_OWNER"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22499:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22499:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22499:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22550:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22562:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22573:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22558:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22558:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22550:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4192981dee7e8bfb48280ce8c787f48b721f216d4db7f6a4070c234e0356cb15__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22397:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22411:4:64",
                            "type": ""
                          }
                        ],
                        "src": "22246:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22761:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22778:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22789:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22771:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22771:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22771:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22812:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22823:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22808:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22808:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22828:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22801:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22801:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22801:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22851:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22862:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22847:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22847:18:64"
                                  },
                                  {
                                    "hexValue": "4e4f545f415050524f564544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22867:14:64",
                                    "type": "",
                                    "value": "NOT_APPROVED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22840:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22840:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22840:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22891:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22903:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22914:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22899:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22899:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22891:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5036b6b1196e0e260c3f6c86c35b3544b8ac944b03f4f4c94ebef3efe3125047__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22738:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22752:4:64",
                            "type": ""
                          }
                        ],
                        "src": "22587:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23102:166:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23119:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23130:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23112:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23112:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23112:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23153:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23164:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23149:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23149:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23169:2:64",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23142:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23142:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23142:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23192:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23203:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23188:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23188:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f504f534954494f4e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23208:18:64",
                                    "type": "",
                                    "value": "INVALID_POSITION"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23181:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23181:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23181:46:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23236:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23248:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23259:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23244:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23244:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23236:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5f394f9c228ccba9127c56502b41d7c2b5ccd3e02de4b5a7321f8499ea750e52__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23079:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23093:4:64",
                            "type": ""
                          }
                        ],
                        "src": "22928:340:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23447:166:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23464:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23475:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23457:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23457:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23457:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23498:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23509:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23494:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23494:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23514:2:64",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23487:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23487:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23487:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23537:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23548:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23533:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23533:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f4f50455241544f52",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23553:18:64",
                                    "type": "",
                                    "value": "INVALID_OPERATOR"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23526:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23526:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23526:46:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23581:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23593:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23604:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23589:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23589:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23581:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5f5e0bde2fff1c9840ee5b42dd85e8f0d5b9b295bcee54dd3d6381f17c21c473__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23424:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23438:4:64",
                            "type": ""
                          }
                        ],
                        "src": "23273:340:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23792:157:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23809:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23820:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23802:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23802:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23802:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23843:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23854:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23839:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23839:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23859:1:64",
                                    "type": "",
                                    "value": "8"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23832:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23832:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23832:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23881:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23892:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23877:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23877:18:64"
                                  },
                                  {
                                    "hexValue": "4e4f545f504f4f4c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23897:10:64",
                                    "type": "",
                                    "value": "NOT_POOL"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23870:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23870:38:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23870:38:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23917:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23929:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23940:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23925:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23925:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23917:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9c8054bffc0758b4ef58b6bf591b4f1d69207559757d350a1dbc6e95379c7a18__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23769:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23783:4:64",
                            "type": ""
                          }
                        ],
                        "src": "23618:331:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24128:164:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24145:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24156:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24138:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24138:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24138:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24179:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24190:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24175:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24175:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24195:2:64",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24168:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24168:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24168:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24218:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24229:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24214:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24214:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f5349474e4552",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24234:16:64",
                                    "type": "",
                                    "value": "INVALID_SIGNER"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24207:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24207:44:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24207:44:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24260:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24272:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24283:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24268:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24268:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24260:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ba2319f5fa9f0c8e55f0d6899910b7354e6f643d1d349de47190066d85e68a1c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24105:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24119:4:64",
                            "type": ""
                          }
                        ],
                        "src": "23954:338:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24471:169:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24488:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24499:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24481:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24481:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24481:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24522:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24533:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24518:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24518:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24538:2:64",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24511:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24511:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24511:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24561:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24572:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24557:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24557:18:64"
                                  },
                                  {
                                    "hexValue": "4e4f545f4552433732315f5245434549564552",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24577:21:64",
                                    "type": "",
                                    "value": "NOT_ERC721_RECEIVER"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24550:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24550:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24550:49:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24608:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24620:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24631:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24616:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24616:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24608:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c04b5fb25a69354210ab22b09345d0b9caace9678d659f670b0674d722abad2d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24448:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24462:4:64",
                            "type": ""
                          }
                        ],
                        "src": "24297:343:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24819:158:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24836:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24847:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24829:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24829:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24829:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24870:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24881:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24866:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24866:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24886:1:64",
                                    "type": "",
                                    "value": "9"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24859:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24859:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24859:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24908:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24919:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24904:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24904:18:64"
                                  },
                                  {
                                    "hexValue": "4e4f545f4f574e4552",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24924:11:64",
                                    "type": "",
                                    "value": "NOT_OWNER"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24897:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24897:39:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24897:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24945:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24957:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24968:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24953:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24953:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24945:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24796:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24810:4:64",
                            "type": ""
                          }
                        ],
                        "src": "24645:332:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25156:173:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25173:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25184:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25166:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25166:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25166:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25207:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25218:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25203:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25203:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25223:2:64",
                                    "type": "",
                                    "value": "23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25196:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25196:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25196:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25246:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25257:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25242:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25242:18:64"
                                  },
                                  {
                                    "hexValue": "5045524d49545f444541444c494e455f45585049524544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25262:25:64",
                                    "type": "",
                                    "value": "PERMIT_DEADLINE_EXPIRED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25235:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25235:53:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25235:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25297:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25309:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25320:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25305:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25305:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25297:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25133:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25147:4:64",
                            "type": ""
                          }
                        ],
                        "src": "24982:347:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25508:164:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25525:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25536:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25518:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25518:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25518:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25559:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25570:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25555:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25555:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25575:2:64",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25548:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25548:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25548:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25598:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25609:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25594:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25594:18:64"
                                  },
                                  {
                                    "hexValue": "414c52454144595f4d494e544544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25614:16:64",
                                    "type": "",
                                    "value": "ALREADY_MINTED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25587:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25587:44:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25587:44:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25640:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25652:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25663:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25648:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25648:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25640:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e3f56786f4dc15ea567a5bcea1aa6e11424106cac78b0acf41b1b7deccad9f1b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25485:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25499:4:64",
                            "type": ""
                          }
                        ],
                        "src": "25334:338:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25851:160:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25868:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25879:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25861:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25861:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25861:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25902:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25913:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25898:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25898:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25918:2:64",
                                    "type": "",
                                    "value": "10"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25891:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25891:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25891:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25941:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25952:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25937:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25937:18:64"
                                  },
                                  {
                                    "hexValue": "4e4f545f4d494e544544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25957:12:64",
                                    "type": "",
                                    "value": "NOT_MINTED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25930:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25930:40:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25930:40:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25979:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25991:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26002:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25987:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25987:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25979:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e904b298bc24890ae0c043938d840f08b90773c1635904efe1336d6f851f98ca__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25828:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25842:4:64",
                            "type": ""
                          }
                        ],
                        "src": "25677:334:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26117:117:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "26127:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26139:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26150:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26135:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26135:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26127:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26169:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "26184:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26192:34:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "26180:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26180:47:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26162:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26162:66:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26162:66:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint128__to_t_uint128__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26086:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "26097:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26108:4:64",
                            "type": ""
                          }
                        ],
                        "src": "26016:218:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26340:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "26350:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26362:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26373:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26358:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26358:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26350:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26392:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "26403:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26385:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26385:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26385:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26309:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "26320:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26331:4:64",
                            "type": ""
                          }
                        ],
                        "src": "26239:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26550:119:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "26560:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26572:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26583:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26568:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26568:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26560:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26602:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "26613:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26595:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26595:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26595:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26640:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26651:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26636:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26636:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26656:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26629:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26629:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26629:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26511:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "26522:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "26530:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26541:4:64",
                            "type": ""
                          }
                        ],
                        "src": "26421:248:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26859:206:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "26869:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26881:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26892:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26877:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26877:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26869:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26912:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "26923:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26905:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26905:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26905:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26950:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26961:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26946:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26946:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26966:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26939:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26939:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26939:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26993:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27004:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26989:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26989:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "27009:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26982:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26982:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26982:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27036:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27047:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27032:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27032:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "27052:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27025:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27025:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27025:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26804:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "26815:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "26823:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "26831:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "26839:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26850:4:64",
                            "type": ""
                          }
                        ],
                        "src": "26674:391:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27164:486:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "27174:51:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "27213:11:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "27200:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27200:25:64"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "27178:18:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "27373:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27382:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27385:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "27375:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27375:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27375:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "27248:18:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "27276:12:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "27276:14:64"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "27292:8:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "27272:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "27272:29:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "27303:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "27268:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "27268:102:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "27244:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27244:127:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "27237:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27237:135:64"
                              },
                              "nodeType": "YulIf",
                              "src": "27234:155:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "27398:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "27416:8:64"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "27426:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27412:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27412:33:64"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "27402:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27454:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27477:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "27464:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27464:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "27454:6:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "27527:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27536:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27539:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "27529:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27529:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27529:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "27499:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27507:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "27496:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27496:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "27493:50:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27552:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "27564:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27572:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27560:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27560:17:64"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "27552:4:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "27628:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27637:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27640:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "27630:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27630:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27630:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "27593:4:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "27603:12:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "27603:14:64"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "27619:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "27599:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27599:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "27589:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27589:38:64"
                              },
                              "nodeType": "YulIf",
                              "src": "27586:58:64"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "27121:8:64",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "27131:11:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "27147:4:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "27153:6:64",
                            "type": ""
                          }
                        ],
                        "src": "27070:580:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27701:211:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "27711:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27727:4:64",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "27721:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27721:11:64"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "27711:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "27741:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "27763:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27771:4:64",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27759:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27759:17:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "27745:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "27851:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "27853:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27853:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27853:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "27794:10:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27806:18:64",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "27791:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27791:34:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "27830:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "27842:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "27827:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27827:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "27788:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27788:62:64"
                              },
                              "nodeType": "YulIf",
                              "src": "27785:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27889:4:64",
                                    "type": "",
                                    "value": "0x40"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "27895:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27882:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27882:24:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27882:24:64"
                            }
                          ]
                        },
                        "name": "allocate_memory_3987",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "27690:6:64",
                            "type": ""
                          }
                        ],
                        "src": "27655:257:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27962:289:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "27972:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27988:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "27982:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27982:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "27972:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "28000:117:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "28022:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "28038:4:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "28044:2:64",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "28034:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "28034:13:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28049:66:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "28030:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28030:86:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28018:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28018:99:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "28004:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28192:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "28194:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28194:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28194:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "28135:10:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28147:18:64",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "28132:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28132:34:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "28171:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "28183:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "28168:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28168:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "28129:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28129:62:64"
                              },
                              "nodeType": "YulIf",
                              "src": "28126:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28230:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "28234:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28223:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28223:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28223:22:64"
                            }
                          ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "27942:4:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "27951:6:64",
                            "type": ""
                          }
                        ],
                        "src": "27917:334:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28325:114:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28369:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "28371:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28371:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28371:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "28341:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28349:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "28338:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28338:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "28335:56:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28400:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28416:1:64",
                                        "type": "",
                                        "value": "5"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "28419:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "28412:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28412:14:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28428:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28408:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28408:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "28400:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_array_address_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "28305:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "28316:4:64",
                            "type": ""
                          }
                        ],
                        "src": "28256:183:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28501:188:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28545:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "28547:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28547:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28547:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "28517:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28525:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "28514:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28514:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "28511:56:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28576:107:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "28596:6:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "28604:2:64",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "28592:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "28592:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28609:66:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "28588:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28588:88:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28678:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28584:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28584:99:64"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "28576:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "28481:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "28492:4:64",
                            "type": ""
                          }
                        ],
                        "src": "28444:245:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28742:205:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "28752:44:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "28762:34:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "28756:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "28805:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "28820:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "28823:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "28816:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28816:10:64"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "28809:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "28835:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "28850:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "28853:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "28846:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28846:10:64"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "28839:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28890:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "28892:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28892:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28892:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "28871:3:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "28880:2:64"
                                      },
                                      {
                                        "name": "y_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "28884:3:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "28876:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28876:12:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "28868:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28868:21:64"
                              },
                              "nodeType": "YulIf",
                              "src": "28865:47:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28921:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "28932:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "28937:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28928:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28928:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "28921:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint128",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "28725:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "28728:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "28734:3:64",
                            "type": ""
                          }
                        ],
                        "src": "28694:253:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29000:80:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29027:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "29029:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29029:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29029:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "29016:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "29023:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "29019:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29019:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "29013:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29013:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "29010:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29058:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "29069:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "29072:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29065:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29065:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "29058:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "28983:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "28986:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "28992:3:64",
                            "type": ""
                          }
                        ],
                        "src": "28952:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29131:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29162:168:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29183:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29186:77:64",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "29176:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29176:88:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29176:88:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29284:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29287:4:64",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "29277:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29277:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29277:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29312:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29315:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "29305:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29305:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29305:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "29151:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "29144:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29144:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "29141:189:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29339:14:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "29348:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "29351:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "29344:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29344:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "29339:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "29116:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "29119:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "29125:1:64",
                            "type": ""
                          }
                        ],
                        "src": "29085:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29416:176:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29535:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "29537:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29537:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29537:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "29447:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "29440:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29440:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "29433:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29433:17:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "29455:1:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "29462:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "29530:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "29458:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29458:74:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "29452:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29452:81:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "29429:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29429:105:64"
                              },
                              "nodeType": "YulIf",
                              "src": "29426:131:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29566:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "29581:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "29584:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "29577:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29577:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "29566:7:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "29395:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "29398:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "29404:7:64",
                            "type": ""
                          }
                        ],
                        "src": "29364:228:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29646:197:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29656:44:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "29666:34:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "29660:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29709:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "29724:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "29727:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "29720:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29720:10:64"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "29713:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29739:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "29754:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "29757:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "29750:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29750:10:64"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "29743:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29785:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "29787:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29787:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29787:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "29775:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "29780:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "29772:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29772:12:64"
                              },
                              "nodeType": "YulIf",
                              "src": "29769:38:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29816:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "29828:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "29833:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "29824:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29824:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "29816:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint128",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "29628:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "29631:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "29637:4:64",
                            "type": ""
                          }
                        ],
                        "src": "29597:246:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29897:76:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29919:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "29921:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29921:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29921:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "29913:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "29916:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "29910:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29910:8:64"
                              },
                              "nodeType": "YulIf",
                              "src": "29907:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29950:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "29962:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "29965:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "29958:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29958:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "29950:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "29879:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "29882:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "29888:4:64",
                            "type": ""
                          }
                        ],
                        "src": "29848:125:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30031:205:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "30041:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "30050:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "30045:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30110:63:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "30135:3:64"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "30140:1:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "30131:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "30131:11:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "30154:3:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "30159:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "30150:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "30150:11:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "30144:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "30144:18:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "30124:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30124:39:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30124:39:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "30071:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "30074:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "30068:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30068:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "30082:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "30084:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "30093:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30096:2:64",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "30089:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30089:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "30084:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "30064:3:64",
                                "statements": []
                              },
                              "src": "30060:113:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30199:31:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "30212:3:64"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "30217:6:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "30208:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "30208:16:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30226:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "30201:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30201:27:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30201:27:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "30188:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "30191:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "30185:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30185:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "30182:48:64"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "30009:3:64",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "30014:3:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "30019:6:64",
                            "type": ""
                          }
                        ],
                        "src": "29978:258:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30288:148:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30379:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "30381:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30381:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30381:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "30304:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30311:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "30301:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30301:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "30298:103:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30410:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "30421:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30428:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30417:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30417:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "30410:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "30270:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "30280:3:64",
                            "type": ""
                          }
                        ],
                        "src": "30241:195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30473:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30490:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30493:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30483:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30483:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30483:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30587:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30590:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30580:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30580:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30580:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30611:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30614:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "30604:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30604:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30604:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "30441:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30662:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30679:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30682:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30672:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30672:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30672:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30776:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30779:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30769:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30769:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30769:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30800:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30803:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "30793:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30793:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30793:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "30630:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30851:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30868:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30871:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30861:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30861:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30861:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30965:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30968:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30958:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30958:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30958:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30989:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30992:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "30982:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30982:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30982:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "30819:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31053:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31140:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31149:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31152:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31142:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31142:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31142:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "31076:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "31087:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "31094:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "31083:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31083:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "31073:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31073:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "31066:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31066:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "31063:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "31042:5:64",
                            "type": ""
                          }
                        ],
                        "src": "31008:154:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31209:76:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31263:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31272:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31275:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31265:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31265:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31265:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "31232:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "31253:5:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "31246:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "31246:13:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "31239:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31239:21:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "31229:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31229:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "31222:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31222:40:64"
                              },
                              "nodeType": "YulIf",
                              "src": "31219:60:64"
                            }
                          ]
                        },
                        "name": "validator_revert_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "31198:5:64",
                            "type": ""
                          }
                        ],
                        "src": "31167:118:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31334:133:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31445:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31454:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31457:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31447:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31447:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31447:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "31357:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "31368:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "31375:66:64",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "31364:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31364:78:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "31354:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31354:89:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "31347:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31347:97:64"
                              },
                              "nodeType": "YulIf",
                              "src": "31344:117:64"
                            }
                          ]
                        },
                        "name": "validator_revert_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "31323:5:64",
                            "type": ""
                          }
                        ],
                        "src": "31290:177:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_array_struct_TokenAmount_dyn_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_address_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let src := add(offset, _2)\n        if gt(add(add(offset, shl(6, _1)), _2), end) { revert(0, 0) }\n        let i := 0\n        let i_1 := i\n        for { } lt(i_1, _1) { i_1 := add(i_1, 1) }\n        {\n            let _3 := 0x40\n            if slt(sub(end, src), _3) { revert(i, i) }\n            let value := allocate_memory_3987()\n            let value_1 := mload(src)\n            validator_revert_address(value_1)\n            mstore(value, value_1)\n            mstore(add(value, _2), mload(add(src, _2)))\n            mstore(dst, value)\n            dst := add(dst, _2)\n            src := add(src, _3)\n        }\n        array := dst_1\n    }\n    function abi_decode_int24(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, signextend(2, value))) { revert(0, 0) }\n    }\n    function abi_decode_uint128(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_uint8(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let _2 := calldataload(_1)\n        let array := allocate_memory(array_allocation_size_bytes(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(array, 32), add(_1, 32), _2)\n        mstore(add(add(array, _2), 32), 0)\n        value3 := array\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := abi_decode_uint8(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_bool(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_int24t_int24t_uint128t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := abi_decode_int24(add(headStart, 32))\n        value2 := abi_decode_int24(add(headStart, 64))\n        value3 := abi_decode_uint128(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n        value6 := calldataload(add(headStart, 192))\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := abi_decode_uint8(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        let _1 := 32\n        if slt(sub(dataEnd, headStart), _1) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        let dst := allocate_memory(array_allocation_size_array_address_dyn(_3))\n        let dst_1 := dst\n        mstore(dst, _3)\n        dst := add(dst, _1)\n        let src := add(_2, _1)\n        if gt(add(add(_2, shl(5, _3)), _1), dataEnd) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _3) { i := add(i, 1) }\n        {\n            let value := mload(src)\n            validator_revert_address(value)\n            mstore(dst, value)\n            dst := add(dst, _1)\n            src := add(src, _1)\n        }\n        value0 := dst_1\n    }\n    function abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptrt_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptrt_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_array_struct_TokenAmount_dyn_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_array_struct_TokenAmount_dyn_fromMemory(add(headStart, offset_1), dataEnd)\n        value2 := mload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        let _1 := add(headStart, offset)\n        if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n        let _2 := mload(_1)\n        let array := allocate_memory(array_allocation_size_bytes(_2))\n        mstore(array, _2)\n        if gt(add(add(_1, _2), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_1, 32), add(array, 32), _2)\n        value0 := array\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_addresst_bool(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_address(value)\n        value1 := value\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_bool(value_1)\n        value2 := value_1\n    }\n    function abi_decode_tuple_t_uint256t_uint128t_addresst_bool(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_uint128(add(headStart, 32))\n        let value := calldataload(add(headStart, 64))\n        validator_revert_address(value)\n        value2 := value\n        let value_1 := calldataload(add(headStart, 96))\n        validator_revert_bool(value_1)\n        value3 := value_1\n    }\n    function abi_decode_tuple_t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, 0x1901000000000000000000000000000000000000000000000000000000000000)\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_bytes(value3, add(headStart, 128))\n    }\n    function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, shl(5, length)), 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0))\n            tail_2 := abi_encode_bytes(mload(srcPtr), tail_2)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_contract$_IConcentratedLiquidityPool_$2753_t_uint128_t_int24_t_int24_t_uint32_t_uint256_t_uint256__to_t_address_t_uint128_t_int24_t_int24_t_uint32_t_uint256_t_uint256__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 224)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 64), signextend(2, value2))\n        mstore(add(headStart, 96), signextend(2, value3))\n        mstore(add(headStart, 128), and(value4, 0xffffffff))\n        mstore(add(headStart, 160), value5)\n        mstore(add(headStart, 192), value6)\n    }\n    function abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_int24_t_int24__to_t_int24_t_int24__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, signextend(2, value0))\n        mstore(add(headStart, 32), signextend(2, value1))\n    }\n    function abi_encode_tuple_t_int24_t_int24_t_address_t_bool__to_t_int24_t_int24_t_address_t_bool__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, signextend(2, value0))\n        mstore(add(headStart, 32), signextend(2, value1))\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 96), iszero(iszero(value3)))\n    }\n    function abi_encode_tuple_t_int24_t_int24_t_uint128_t_address_t_bool__to_t_int24_t_int24_t_uint128_t_address_t_bool__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, signextend(2, value0))\n        mstore(add(headStart, 32), signextend(2, value1))\n        mstore(add(headStart, 64), and(value2, 0xffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 96), and(value3, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 128), iszero(iszero(value4)))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_2ba0a472d889b88ae8a055d178e3d84efcf5a713d16aa7a9879db3c5b3701a97__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"RANGE_MIS_MATCH\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"INVALID_PERMIT_SIGNATURE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_3913df11fc3ef68f58caac321c143116ca9eca562aa90d85e5408b7f67e66fc2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 9)\n        mstore(add(headStart, 64), \"UNCLAIMED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_4192981dee7e8bfb48280ce8c787f48b721f216d4db7f6a4070c234e0356cb15__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"NOT_ID_OWNER\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_5036b6b1196e0e260c3f6c86c35b3544b8ac944b03f4f4c94ebef3efe3125047__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"NOT_APPROVED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_5f394f9c228ccba9127c56502b41d7c2b5ccd3e02de4b5a7321f8499ea750e52__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"INVALID_POSITION\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_5f5e0bde2fff1c9840ee5b42dd85e8f0d5b9b295bcee54dd3d6381f17c21c473__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"INVALID_OPERATOR\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9c8054bffc0758b4ef58b6bf591b4f1d69207559757d350a1dbc6e95379c7a18__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 8)\n        mstore(add(headStart, 64), \"NOT_POOL\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ba2319f5fa9f0c8e55f0d6899910b7354e6f643d1d349de47190066d85e68a1c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"INVALID_SIGNER\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_c04b5fb25a69354210ab22b09345d0b9caace9678d659f670b0674d722abad2d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"NOT_ERC721_RECEIVER\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 9)\n        mstore(add(headStart, 64), \"NOT_OWNER\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"PERMIT_DEADLINE_EXPIRED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_e3f56786f4dc15ea567a5bcea1aa6e11424106cac78b0acf41b1b7deccad9f1b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"ALREADY_MINTED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_e904b298bc24890ae0c043938d840f08b90773c1635904efe1336d6f851f98ca__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 10)\n        mstore(add(headStart, 64), \"NOT_MINTED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint128__to_t_uint128__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function allocate_memory_3987() -> memPtr\n    {\n        memPtr := mload(0x40)\n        let newFreePtr := add(memPtr, 0x40)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(0x40, newFreePtr)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_array_address_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function array_allocation_size_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20)\n    }\n    function checked_add_t_uint128(x, y) -> sum\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_sub_t_uint128(x, y) -> diff\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if lt(x_1, y_1) { panic_error_0x11() }\n        diff := sub(x_1, y_1)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "14923": [
                  {
                    "length": 32,
                    "start": 1000
                  },
                  {
                    "length": 32,
                    "start": 6615
                  },
                  {
                    "length": 32,
                    "start": 6818
                  },
                  {
                    "length": 32,
                    "start": 11837
                  },
                  {
                    "length": 32,
                    "start": 12059
                  }
                ],
                "14926": [
                  {
                    "length": 32,
                    "start": 1878
                  },
                  {
                    "length": 32,
                    "start": 3606
                  }
                ],
                "16526": [
                  {
                    "length": 32,
                    "start": 3193
                  }
                ],
                "16529": [
                  {
                    "length": 32,
                    "start": 3490
                  }
                ]
              },
              "linkReferences": {},
              "object": "6080604052600436106101c25760003560e01c806370a08231116100f7578063a9059cbb11610095578063cf58879a11610064578063cf58879a14610744578063e985e9c514610778578063ed7bba9a146107b3578063f745f815146107f357600080fd5b8063a9059cbb146106b0578063aba07847146106d0578063b4e13c8d146106f0578063b88d4fde1461072457600080fd5b8063904dfb8e116100d1578063904dfb8e146104ef57806395d89b411461051c57806399fbab8814610565578063a22cb4651461069057600080fd5b806370a082311461046d5780637ac2ff7b1461049a5780638c6ab013146104ba57600080fd5b806323b872dd1161016457806342842e0e1161013e57806342842e0e146103b65780634da31827146103d65780636352211e1461040a5780636d59ebe11461044d57600080fd5b806323b872dd1461034d57806330adf81f1461036d5780633644e515146103a157600080fd5b8063095ea7b3116101a0578063095ea7b3146102ba578063141a468c146102dc57806318160ddd146103175780631e897afb1461032d57600080fd5b806301ffc9a7146101c757806306fdde03146101fc578063081812fc14610252575b600080fd5b3480156101d357600080fd5b506101e76101e236600461361f565b610813565b60405190151581526020015b60405180910390f35b34801561020857600080fd5b506102456040518060400160405280600a81526020017f54726964656e744e46540000000000000000000000000000000000000000000081525081565b6040516101f391906138f8565b34801561025e57600080fd5b5061029561026d3660046136d0565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f3565b3480156102c657600080fd5b506102da6102d5366004613413565b6108ac565b005b3480156102e857600080fd5b506103096102f73660046136d0565b60056020526000908152604090205481565b6040519081526020016101f3565b34801561032357600080fd5b5061030960005481565b61034061033b366004613520565b6109fb565b6040516101f39190613878565b34801561035957600080fd5b506102da610368366004613226565b610b6d565b34801561037957600080fd5b506103097f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad81565b3480156103ad57600080fd5b50610309610c75565b3480156103c257600080fd5b506102da6103d1366004613226565b610dc4565b3480156103e257600080fd5b506102957f000000000000000000000000000000000000000000000000000000000000000081565b34801561041657600080fd5b506102956104253660046136d0565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b34801561045957600080fd5b506103096104683660046133a2565b610de5565b34801561047957600080fd5b506103096104883660046131d0565b60016020526000908152604090205481565b3480156104a657600080fd5b506102da6104b536600461343f565b6113e2565b3480156104c657600080fd5b506104da6104d5366004613702565b6117ce565b604080519283526020830191909152016101f3565b3480156104fb57600080fd5b5061030961050a3660046131d0565b60066020526000908152604090205481565b34801561052857600080fd5b506102456040518060400160405280600481526020017f744e46540000000000000000000000000000000000000000000000000000000081525081565b34801561057157600080fd5b506106256105803660046136d0565b60076020526000908152604090208054600182015460028084015460039094015473ffffffffffffffffffffffffffffffffffffffff909316936fffffffffffffffffffffffffffffffff8316937001000000000000000000000000000000008404830b93730100000000000000000000000000000000000000810490930b92760100000000000000000000000000000000000000000000900463ffffffff16919087565b6040805173ffffffffffffffffffffffffffffffffffffffff90981688526fffffffffffffffffffffffffffffffff9096166020880152600294850b958701959095529190920b606085015263ffffffff909116608084015260a083015260c082015260e0016101f3565b34801561069c57600080fd5b506102da6106ab366004613374565b611c8a565b3480156106bc57600080fd5b506102da6106cb366004613413565b611d9e565b3480156106dc57600080fd5b506102da6106eb366004613311565b611e3a565b3480156106fc57600080fd5b506103097fdaab21af31ece73a508939fedd476a5ee5129a5ed4bb091f3236ffb45394df6281565b34801561073057600080fd5b506102da61073f366004613267565b6121be565b34801561075057600080fd5b506102957f000000000000000000000000000000000000000000000000000000000000000081565b34801561078457600080fd5b506101e76107933660046131ed565b600460209081526000928352604080842090915290825290205460ff1681565b3480156107bf57600080fd5b506107d36107ce3660046136d0565b61237a565b6040805194855260208501939093529183015260608201526080016101f3565b3480156107ff57600080fd5b506102da61080e366004613744565b61254a565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806108a657507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff163381148061090f575073ffffffffffffffffffffffffffffffffffffffff8116600090815260046020908152604080832033845290915290205460ff165b61097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f415050524f564544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60608167ffffffffffffffff811115610a1657610a16613c28565b604051908082528060200260200182016040528015610a4957816020015b6060815260200190600190039081610a345790505b50905060005b82811015610b665760008030868685818110610a6d57610a6d613bf9565b9050602002810190610a7f919061390b565b604051610a8d929190613803565b600060405180830381855af49150503d8060008114610ac8576040519150601f19603f3d011682016040523d82523d6000602084013e610acd565b606091505b509150915081610b3357604481511015610ae657600080fd5b60048101905080806020019051810190610b009190613659565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097191906138f8565b80848481518110610b4657610b46613bf9565b602002602001018190525050508080610b5e90613b91565b915050610a4f565b5092915050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1633811480610bc3575060008281526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b80610bfe575073ffffffffffffffffffffffffffffffffffffffff8116600090815260046020908152604080832033845290915290205460ff165b610c64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f415050524f56454400000000000000000000000000000000000000006044820152606401610971565b610c6f818484612bdd565b50505050565b60007f00000000000000000000000000000000000000000000000000000000000000004614610d9f5750604080518082018252600a81527f54726964656e744e46540000000000000000000000000000000000000000000060209182015281518083018352600181527f31000000000000000000000000000000000000000000000000000000000000009082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f790a7a9b65ea2ce0cf93ce97615ad3ceeb0a6082b5ad238c5227302f947047b0818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c0909101909252815191012090565b507f000000000000000000000000000000000000000000000000000000000000000090565b610de060008383604051806020016040528060008152506121be565b505050565b6040517fa4063dbc0000000000000000000000000000000000000000000000000000000081523360048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063a4063dbc9060240160206040518083038186803b158015610e6d57600080fd5b505afa158015610e81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea59190613602565b610f0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f504f4f4c0000000000000000000000000000000000000000000000006044820152606401610971565b8161112157506040805160e0810182523381526fffffffffffffffffffffffffffffffff868116602080840191825260028b810b8587019081528b820b606087019081524263ffffffff9081166080890190815260a089018d815260c08a018d815260008054815260079098529a872099518a547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178a55965160018a018054955194519251919099167fffffffffffffffffffffffffff000000000000000000000000000000000000009095169490941770010000000000000000000000000000000093860b62ffffff90811694909402177fffffffffffff00000000000000ffffffffffffffffffffffffffffffffffffff1673010000000000000000000000000000000000000091860b93909316027fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff16919091177601000000000000000000000000000000000000000000009290911691909102179093559051918301919091559151600390910155546110bb88612caf565b6040516fffffffffffffffffffffffffffffffff86168152819073ffffffffffffffffffffffffffffffffffffffff8a169033907fc8dd8ccfbeefd448504efbf8f0f1228f3874a3556303d43aec4cc814237755f49060200160405180910390a46113d7565b6fffffffffffffffffffffffffffffffff8516156113d7576000828152600760205260408120905483106111b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f494e56414c49445f504f534954494f4e000000000000000000000000000000006044820152606401610971565b6001810154600289810b700100000000000000000000000000000000909204810b900b14801561120457506001810154600288810b730100000000000000000000000000000000000000909204810b900b145b61126a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f52414e47455f4d49535f4d4154434800000000000000000000000000000000006044820152606401610971565b8481600201541480156112805750838160030154145b6112e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e434c41494d454400000000000000000000000000000000000000000000006044820152606401610971565b60018101805487919060009061130f9084906fffffffffffffffffffffffffffffffff16613a59565b82546101009290920a6fffffffffffffffffffffffffffffffff8181021990931691831602179091556001830180547fffffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000004263ffffffff1602179055604051908816815283915073ffffffffffffffffffffffffffffffffffffffff8b169033907fc8dd8ccfbeefd448504efbf8f0f1228f3874a3556303d43aec4cc814237755f49060200160405180910390a4505b979650505050505050565b4284101561144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610971565b60008581526002602052604081205473ffffffffffffffffffffffffffffffffffffffff169061147a610c75565b60008881526005602090815260409182902080546001810190915582517f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad8184015273ffffffffffffffffffffffffffffffffffffffff8d1681850152606081018c9052608081019190915260a08082018b90528351808303909101815260c08201909352825192909101919091207f190100000000000000000000000000000000000000000000000000000000000060e083015260e282019290925261010281019190915261012201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156115cd573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e415455524500000000000000006044820152606401610971565b8273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614806116e1575073ffffffffffffffffffffffffffffffffffffffff80841660009081526004602090815260408083209385168352929052205460ff165b611747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610971565b505060008681526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b811691821790925591518993918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a450505050505050565b600083815260026020526040812054819073ffffffffffffffffffffffffffffffffffffffff16331461185d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f49445f4f574e455200000000000000000000000000000000000000006044820152606401610971565b600085815260076020526040808220805482517f67e4ac2c000000000000000000000000000000000000000000000000000000008152925191939273ffffffffffffffffffffffffffffffffffffffff909116916367e4ac2c916004808201928692909190829003018186803b1580156118d657600080fd5b505afa1580156118ea573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611930919081019061347f565b905060008160008151811061194757611947613bf9565b6020026020010151905060008260018151811061196657611966613bf9565b602002602001015190506119798961237a565b600388015560028701556040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301523060248301529298509096506000917f0000000000000000000000000000000000000000000000000000000000000000169063f7888aec9060440160206040518083038186803b158015611a1957600080fd5b505afa158015611a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a5191906136e9565b6040517ff7888aec00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301523060248301529192506000917f0000000000000000000000000000000000000000000000000000000000000000169063f7888aec9060440160206040518083038186803b158015611ae457600080fd5b505afa158015611af8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1c91906136e9565b905087821080611b2b57508681105b15611c6257855460018701546040517ffb39d6280000000000000000000000000000000000000000000000000000000081527001000000000000000000000000000000008204600290810b810b6004830152730100000000000000000000000000000000000000909204820b90910b602482015230604482015260006064820181905291829173ffffffffffffffffffffffffffffffffffffffff9091169063fb39d628906084016040805180830381600087803b158015611bec57600080fd5b505af1158015611c00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c249190613795565b90925090506000611c358584613a8d565b90506000611c438584613a8d565b9050818c1115611c5157819b505b808b1115611c5d57809a505b505050505b611c6f84308c8b8d612dd4565b611c7c83308c8a8d612dd4565b505050505050935093915050565b73ffffffffffffffffffffffffffffffffffffffff8216611d07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f494e56414c49445f4f50455241544f52000000000000000000000000000000006044820152606401610971565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff163314611e2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e455200000000000000000000000000000000000000000000006044820152606401610971565b611e36338383612bdd565b5050565b42841015611ea4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610971565b6000611eae610c75565b73ffffffffffffffffffffffffffffffffffffffff88811660008181526006602090815260409182902080546001810190915582517fdaab21af31ece73a508939fedd476a5ee5129a5ed4bb091f3236ffb45394df628184015280840194909452938b166060840152608083019390935260a08083018a90528151808403909101815260c0830190915280519201919091207f190100000000000000000000000000000000000000000000000000000000000060e083015260e282019290925261010281019190915261012201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612004573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061207f57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806120bc575073ffffffffffffffffffffffffffffffffffffffff80891660009081526004602090815260408083209385168352929052205460ff165b612122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e415455524500000000000000006044820152606401610971565b505073ffffffffffffffffffffffffffffffffffffffff8681166000818152600460209081526040808320948a168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050505050565b6121ca60008484610b6d565b73ffffffffffffffffffffffffffffffffffffffff83163b15610c6f5760008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02336000868660405160240161221d949392919061382f565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161226b9190613813565b600060405180830381855afa9150503d80600081146122a6576040519150601f19603f3d011682016040523d82523d6000602084013e6122ab565b606091505b509150506000818060200190518101906122c5919061363c565b90507f150b7a02000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821614612372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4e4f545f4552433732315f5245434549564552000000000000000000000000006044820152606401610971565b505050505050565b6000818152600760209081526040808320815160e081018352815473ffffffffffffffffffffffffffffffffffffffff1680825260018301546fffffffffffffffffffffffffffffffff8116958301959095527001000000000000000000000000000000008504600290810b810b810b8386018190527301000000000000000000000000000000000000008704820b820b820b6060850181905276010000000000000000000000000000000000000000000090970463ffffffff1660808501528185015460a085015260039094015460c084015293517facfe88f800000000000000000000000000000000000000000000000000000000815292840b60048401529390920b602482015283928392839290919063acfe88f890604401604080518083038186803b1580156124ad57600080fd5b505afa1580156124c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e59190613795565b60a0830151919450925061252b906124fd9085613b4e565b82602001516fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000612f7f565b94506125408160c00151836124fd9190613b4e565b9350509193509193565b60008481526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1633146125d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f49445f4f574e455200000000000000000000000000000000000000006044820152606401610971565b6000848152600760205260408120600181015490916060918291906fffffffffffffffffffffffffffffffff908116908816101561288d57835460018501546040517f6289db820000000000000000000000000000000000000000000000000000000081527001000000000000000000000000000000008204600290810b810b6004830152730100000000000000000000000000000000000000909204820b90910b60248201526fffffffffffffffffffffffffffffffff891660448201523060648201526000608482015273ffffffffffffffffffffffffffffffffffffffff90911690636289db829060a401600060405180830381600087803b1580156126df57600080fd5b505af11580156126f3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526127399190810190613595565b865460018801546040517facfe88f80000000000000000000000000000000000000000000000000000000081527001000000000000000000000000000000008204600290810b810b6004830152730100000000000000000000000000000000000000909204820b90910b6024820152939650919450925073ffffffffffffffffffffffffffffffffffffffff169063acfe88f890604401604080518083038186803b1580156127e757600080fd5b505afa1580156127fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061281f9190613795565b600386015560028501556001840180548891906000906128529084906fffffffffffffffffffffffffffffffff16613b1d565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550612a2f565b835460018501546040517f6289db820000000000000000000000000000000000000000000000000000000081527001000000000000000000000000000000008204600290810b810b60048301527301000000000000000000000000000000000000008304810b900b60248201526fffffffffffffffffffffffffffffffff90911660448201523060648201526000608482015273ffffffffffffffffffffffffffffffffffffffff90911690636289db829060a401600060405180830381600087803b15801561295c57600080fd5b505af1158015612970573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526129b69190810190613595565b60008b815260076020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681556001810180547fffffffffffff0000000000000000000000000000000000000000000000000000169055600281018290556003015591945092509050612a2f88613051565b600081886fffffffffffffffffffffffffffffffff1684600081518110612a5857612a58613bf9565b602002602001015160200151612a6e9190613ae0565b612a789190613aa5565b84600081518110612a8b57612a8b613bf9565b602002602001015160200151612aa19190613a8d565b9050600082896fffffffffffffffffffffffffffffffff1685600181518110612acc57612acc613bf9565b602002602001015160200151612ae29190613ae0565b612aec9190613aa5565b85600181518110612aff57612aff613bf9565b602002602001015160200151612b159190613a8d565b9050612b4285600081518110612b2d57612b2d613bf9565b602002602001015160000151308a858b612dd4565b612b6d85600181518110612b5857612b58613bf9565b602002602001015160000151308a848b612dd4565b85546040516fffffffffffffffffffffffffffffffff8b1681528b91339173ffffffffffffffffffffffffffffffffffffffff909116907fa246c3c6c374294b514c67820df22c91e7d4946b79d7e9fbcdc2a9ea99036ce09060200160405180910390a450505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020818152604080842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01905594871680845285842080549093019092558583526003815284832080547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915560029091528483208054909116821790559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b60008054600181018255808252600260205260409091205473ffffffffffffffffffffffffffffffffffffffff1615612d44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401610971565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260016020818152604080842080549093019092558483526002905280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8015612ebf576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301528581166024830152848116604483015260006064830152608482018490527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b158015612e8057600080fd5b505af1158015612e94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb89190613795565b5050612f78565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015285811660248301528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401600060405180830381600087803b158015612f5f57600080fd5b505af1158015612f73573d6000803e3d6000fd5b505050505b5050505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8587098587029250828110838203039150508060001415612fd75760008411612fcc57600080fd5b50829004905061304a565b808411612fe357600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16806130dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610971565b611e3681600084612bdd565b600082601f8301126130fa57600080fd5b8151602061310f61310a836139ef565b6139a0565b80838252828201915082860187848660061b890101111561312f57600080fd5b6000805b8681101561317a57604080848c03121561314b578283fd5b613153613977565b845161315e81613c57565b8152848801518882015286529486019490920191600101613133565b509198975050505050505050565b8035600281900b811461319a57600080fd5b919050565b80356fffffffffffffffffffffffffffffffff8116811461319a57600080fd5b803560ff8116811461319a57600080fd5b6000602082840312156131e257600080fd5b813561304a81613c57565b6000806040838503121561320057600080fd5b823561320b81613c57565b9150602083013561321b81613c57565b809150509250929050565b60008060006060848603121561323b57600080fd5b833561324681613c57565b9250602084013561325681613c57565b929592945050506040919091013590565b6000806000806080858703121561327d57600080fd5b843561328881613c57565b9350602085013561329881613c57565b925060408501359150606085013567ffffffffffffffff8111156132bb57600080fd5b8501601f810187136132cc57600080fd5b80356132da61310a82613a13565b8181528860208385010111156132ef57600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060008060008060c0878903121561332a57600080fd5b863561333581613c57565b9550602087013561334581613c57565b94506040870135935061335a606088016131bf565b92506080870135915060a087013590509295509295509295565b6000806040838503121561338757600080fd5b823561339281613c57565b9150602083013561321b81613c7c565b600080600080600080600060e0888a0312156133bd57600080fd5b87356133c881613c57565b96506133d660208901613188565b95506133e460408901613188565b94506133f26060890161319f565b9699959850939660808101359560a0820135955060c0909101359350915050565b6000806040838503121561342657600080fd5b823561343181613c57565b946020939093013593505050565b60008060008060008060c0878903121561345857600080fd5b863561346381613c57565b9550602087013594506040870135935061335a606088016131bf565b6000602080838503121561349257600080fd5b825167ffffffffffffffff8111156134a957600080fd5b8301601f810185136134ba57600080fd5b80516134c861310a826139ef565b80828252848201915084840188868560051b87010111156134e857600080fd5b600094505b8385101561351457805161350081613c57565b8352600194909401939185019185016134ed565b50979650505050505050565b6000806020838503121561353357600080fd5b823567ffffffffffffffff8082111561354b57600080fd5b818501915085601f83011261355f57600080fd5b81358181111561356e57600080fd5b8660208260051b850101111561358357600080fd5b60209290920196919550909350505050565b6000806000606084860312156135aa57600080fd5b835167ffffffffffffffff808211156135c257600080fd5b6135ce878388016130e9565b945060208601519150808211156135e457600080fd5b506135f1868287016130e9565b925050604084015190509250925092565b60006020828403121561361457600080fd5b815161304a81613c7c565b60006020828403121561363157600080fd5b813561304a81613c8a565b60006020828403121561364e57600080fd5b815161304a81613c8a565b60006020828403121561366b57600080fd5b815167ffffffffffffffff81111561368257600080fd5b8201601f8101841361369357600080fd5b80516136a161310a82613a13565b8181528560208385010111156136b657600080fd5b6136c7826020830160208601613b65565b95945050505050565b6000602082840312156136e257600080fd5b5035919050565b6000602082840312156136fb57600080fd5b5051919050565b60008060006060848603121561371757600080fd5b83359250602084013561372981613c57565b9150604084013561373981613c7c565b809150509250925092565b6000806000806080858703121561375a57600080fd5b8435935061376a6020860161319f565b9250604085013561377a81613c57565b9150606085013561378a81613c7c565b939692955090935050565b600080604083850312156137a857600080fd5b505080516020909101519092909150565b600081518084526137d1816020860160208601613b65565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8183823760009101908152919050565b60008251613825818460208701613b65565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261386e60808301846137b9565b9695505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156138eb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526138d98583516137b9565b9450928501929085019060010161389f565b5092979650505050505050565b60208152600061304a60208301846137b9565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261394057600080fd5b83018035915067ffffffffffffffff82111561395b57600080fd5b60200191503681900382131561397057600080fd5b9250929050565b6040805190810167ffffffffffffffff8111828210171561399a5761399a613c28565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156139e7576139e7613c28565b604052919050565b600067ffffffffffffffff821115613a0957613a09613c28565b5060051b60200190565b600067ffffffffffffffff821115613a2d57613a2d613c28565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006fffffffffffffffffffffffffffffffff808316818516808303821115613a8457613a84613bca565b01949350505050565b60008219821115613aa057613aa0613bca565b500190565b600082613adb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b1857613b18613bca565b500290565b60006fffffffffffffffffffffffffffffffff83811690831681811015613b4657613b46613bca565b039392505050565b600082821015613b6057613b60613bca565b500390565b60005b83811015613b80578181015183820152602001613b68565b83811115610c6f5750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613bc357613bc3613bca565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114613c7957600080fd5b50565b8015158114613c7957600080fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081168114613c7957600080fdfea26469706673582212200286348d96fdf39162628e3fb3070007216cd69a53a416862c0e3003a4ba83a764736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xCF58879A GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x744 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x778 JUMPI DUP1 PUSH4 0xED7BBA9A EQ PUSH2 0x7B3 JUMPI DUP1 PUSH4 0xF745F815 EQ PUSH2 0x7F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x6B0 JUMPI DUP1 PUSH4 0xABA07847 EQ PUSH2 0x6D0 JUMPI DUP1 PUSH4 0xB4E13C8D EQ PUSH2 0x6F0 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x724 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x904DFB8E GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x904DFB8E EQ PUSH2 0x4EF JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x51C JUMPI DUP1 PUSH4 0x99FBAB88 EQ PUSH2 0x565 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x690 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x46D JUMPI DUP1 PUSH4 0x7AC2FF7B EQ PUSH2 0x49A JUMPI DUP1 PUSH4 0x8C6AB013 EQ PUSH2 0x4BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x164 JUMPI DUP1 PUSH4 0x42842E0E GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x3D6 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0x6D59EBE1 EQ PUSH2 0x44D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x34D JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x36D JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x3A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0x141A468C EQ PUSH2 0x2DC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x317 JUMPI DUP1 PUSH4 0x1E897AFB EQ PUSH2 0x32D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1FC JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x252 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E7 PUSH2 0x1E2 CALLDATASIZE PUSH1 0x4 PUSH2 0x361F JUMP JUMPDEST PUSH2 0x813 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x208 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x245 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x54726964656E744E465400000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F3 SWAP2 SWAP1 PUSH2 0x38F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH2 0x26D CALLDATASIZE PUSH1 0x4 PUSH2 0x36D0 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x2D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3413 JUMP JUMPDEST PUSH2 0x8AC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x309 PUSH2 0x2F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x36D0 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x309 PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x340 PUSH2 0x33B CALLDATASIZE PUSH1 0x4 PUSH2 0x3520 JUMP JUMPDEST PUSH2 0x9FB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F3 SWAP2 SWAP1 PUSH2 0x3878 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x359 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x368 CALLDATASIZE PUSH1 0x4 PUSH2 0x3226 JUMP JUMPDEST PUSH2 0xB6D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x309 PUSH32 0x49ECF333E5B8C95C40FDAFC95C1AD136E8914A8FB55E9DC8BB01EAA83A2DF9AD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x309 PUSH2 0xC75 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x3D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3226 JUMP JUMPDEST PUSH2 0xDC4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x416 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH2 0x425 CALLDATASIZE PUSH1 0x4 PUSH2 0x36D0 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x309 PUSH2 0x468 CALLDATASIZE PUSH1 0x4 PUSH2 0x33A2 JUMP JUMPDEST PUSH2 0xDE5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x479 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x309 PUSH2 0x488 CALLDATASIZE PUSH1 0x4 PUSH2 0x31D0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x4B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x343F JUMP JUMPDEST PUSH2 0x13E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4DA PUSH2 0x4D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3702 JUMP JUMPDEST PUSH2 0x17CE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x1F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x309 PUSH2 0x50A CALLDATASIZE PUSH1 0x4 PUSH2 0x31D0 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x245 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x744E465400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x625 PUSH2 0x580 CALLDATASIZE PUSH1 0x4 PUSH2 0x36D0 JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP1 DUP5 ADD SLOAD PUSH1 0x3 SWAP1 SWAP5 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND SWAP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP4 PUSH17 0x100000000000000000000000000000000 DUP5 DIV DUP4 SIGNEXTEND SWAP4 PUSH20 0x100000000000000000000000000000000000000 DUP2 DIV SWAP1 SWAP4 SIGNEXTEND SWAP3 PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP2 SWAP1 DUP8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP9 AND DUP9 MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP7 AND PUSH1 0x20 DUP9 ADD MSTORE PUSH1 0x2 SWAP5 DUP6 SIGNEXTEND SWAP6 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP2 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x60 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 ADD PUSH2 0x1F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x69C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x6AB CALLDATASIZE PUSH1 0x4 PUSH2 0x3374 JUMP JUMPDEST PUSH2 0x1C8A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x6CB CALLDATASIZE PUSH1 0x4 PUSH2 0x3413 JUMP JUMPDEST PUSH2 0x1D9E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x6EB CALLDATASIZE PUSH1 0x4 PUSH2 0x3311 JUMP JUMPDEST PUSH2 0x1E3A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x309 PUSH32 0xDAAB21AF31ECE73A508939FEDD476A5EE5129A5ED4BB091F3236FFB45394DF62 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x730 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x73F CALLDATASIZE PUSH1 0x4 PUSH2 0x3267 JUMP JUMPDEST PUSH2 0x21BE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x750 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x295 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x784 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E7 PUSH2 0x793 CALLDATASIZE PUSH1 0x4 PUSH2 0x31ED JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D3 PUSH2 0x7CE CALLDATASIZE PUSH1 0x4 PUSH2 0x36D0 JUMP JUMPDEST PUSH2 0x237A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP2 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH2 0x1F3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DA PUSH2 0x80E CALLDATASIZE PUSH1 0x4 PUSH2 0x3744 JUMP JUMPDEST PUSH2 0x254A JUMP JUMPDEST PUSH1 0x0 PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ DUP1 PUSH2 0x8A6 JUMPI POP PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0x90F JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x97A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F415050524F5645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP6 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xA16 JUMPI PUSH2 0xA16 PUSH2 0x3C28 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA49 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xA34 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xB66 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0xA6D JUMPI PUSH2 0xA6D PUSH2 0x3BF9 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xA7F SWAP2 SWAP1 PUSH2 0x390B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA8D SWAP3 SWAP2 SWAP1 PUSH2 0x3803 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xAC8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xACD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xB33 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0xAE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xB00 SWAP2 SWAP1 PUSH2 0x3659 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x971 SWAP2 SWAP1 PUSH2 0x38F8 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xB46 JUMPI PUSH2 0xB46 PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP DUP1 DUP1 PUSH2 0xB5E SWAP1 PUSH2 0x3B91 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xA4F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER DUP2 EQ DUP1 PUSH2 0xBC3 JUMPI POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ JUMPDEST DUP1 PUSH2 0xBFE JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0xC64 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F415050524F5645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH2 0xC6F DUP2 DUP5 DUP5 PUSH2 0x2BDD JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0xD9F JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xA DUP2 MSTORE PUSH32 0x54726964656E744E465400000000000000000000000000000000000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0x790A7A9B65EA2CE0CF93CE97615AD3CEEB0A6082B5AD238C5227302F947047B0 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0xDE0 PUSH1 0x0 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x21BE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xA4063DBC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xA4063DBC SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE81 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xEA5 SWAP2 SWAP1 PUSH2 0x3602 JUMP JUMPDEST PUSH2 0xF0B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F504F4F4C000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST DUP2 PUSH2 0x1121 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 DUP3 MSTORE PUSH1 0x2 DUP12 DUP2 SIGNEXTEND DUP6 DUP8 ADD SWAP1 DUP2 MSTORE DUP12 DUP3 SIGNEXTEND PUSH1 0x60 DUP8 ADD SWAP1 DUP2 MSTORE TIMESTAMP PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x80 DUP10 ADD SWAP1 DUP2 MSTORE PUSH1 0xA0 DUP10 ADD DUP14 DUP2 MSTORE PUSH1 0xC0 DUP11 ADD DUP14 DUP2 MSTORE PUSH1 0x0 DUP1 SLOAD DUP2 MSTORE PUSH1 0x7 SWAP1 SWAP9 MSTORE SWAP11 DUP8 KECCAK256 SWAP10 MLOAD DUP11 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND OR DUP11 SSTORE SWAP7 MLOAD PUSH1 0x1 DUP11 ADD DUP1 SLOAD SWAP6 MLOAD SWAP5 MLOAD SWAP3 MLOAD SWAP2 SWAP1 SWAP10 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR PUSH17 0x100000000000000000000000000000000 SWAP4 DUP7 SIGNEXTEND PUSH3 0xFFFFFF SWAP1 DUP2 AND SWAP5 SWAP1 SWAP5 MUL OR PUSH32 0xFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0x100000000000000000000000000000000000000 SWAP2 DUP7 SIGNEXTEND SWAP4 SWAP1 SWAP4 AND MUL PUSH32 0xFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 SWAP1 SWAP2 OR PUSH23 0x100000000000000000000000000000000000000000000 SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SWAP4 SSTORE SWAP1 MLOAD SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP2 MLOAD PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE SLOAD PUSH2 0x10BB DUP9 PUSH2 0x2CAF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND DUP2 MSTORE DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND SWAP1 CALLER SWAP1 PUSH32 0xC8DD8CCFBEEFD448504EFBF8F0F1228F3874A3556303D43AEC4CC814237755F4 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x13D7 JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND ISZERO PUSH2 0x13D7 JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP1 SLOAD DUP4 LT PUSH2 0x11B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F504F534954494F4E00000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x2 DUP10 DUP2 SIGNEXTEND PUSH17 0x100000000000000000000000000000000 SWAP1 SWAP3 DIV DUP2 SIGNEXTEND SWAP1 SIGNEXTEND EQ DUP1 ISZERO PUSH2 0x1204 JUMPI POP PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x2 DUP9 DUP2 SIGNEXTEND PUSH20 0x100000000000000000000000000000000000000 SWAP1 SWAP3 DIV DUP2 SIGNEXTEND SWAP1 SIGNEXTEND EQ JUMPDEST PUSH2 0x126A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x52414E47455F4D49535F4D415443480000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST DUP5 DUP2 PUSH1 0x2 ADD SLOAD EQ DUP1 ISZERO PUSH2 0x1280 JUMPI POP DUP4 DUP2 PUSH1 0x3 ADD SLOAD EQ JUMPDEST PUSH2 0x12E6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x554E434C41494D45440000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SLOAD DUP8 SWAP2 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x130F SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3A59 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x100 SWAP3 SWAP1 SWAP3 EXP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 MUL NOT SWAP1 SWAP4 AND SWAP2 DUP4 AND MUL OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP4 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH23 0x100000000000000000000000000000000000000000000 TIMESTAMP PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP9 AND DUP2 MSTORE DUP4 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP1 CALLER SWAP1 PUSH32 0xC8DD8CCFBEEFD448504EFBF8F0F1228F3874A3556303D43AEC4CC814237755F4 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x144C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x147A PUSH2 0xC75 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD PUSH32 0x49ECF333E5B8C95C40FDAFC95C1AD136E8914A8FB55E9DC8BB01EAA83A2DF9AD DUP2 DUP5 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND DUP2 DUP6 ADD MSTORE PUSH1 0x60 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP1 DUP3 ADD DUP12 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP3 ADD SWAP1 SWAP4 MSTORE DUP3 MLOAD SWAP3 SWAP1 SWAP2 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0xE2 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0x102 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x122 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP10 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP7 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x15CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x1675 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ DUP1 PUSH2 0x16E1 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1747 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5349474E4552000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST POP POP PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP10 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 LOG4 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x185D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F49445F4F574E45520000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP3 MLOAD PUSH32 0x67E4AC2C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 MLOAD SWAP2 SWAP4 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x67E4AC2C SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 DUP7 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x1930 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x347F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1947 JUMPI PUSH2 0x1947 PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1966 JUMPI PUSH2 0x1966 PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x1979 DUP10 PUSH2 0x237A JUMP JUMPDEST PUSH1 0x3 DUP9 ADD SSTORE PUSH1 0x2 DUP8 ADD SSTORE PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP3 SWAP9 POP SWAP1 SWAP7 POP PUSH1 0x0 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A19 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A2D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A51 SWAP2 SWAP1 PUSH2 0x36E9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE ADDRESS PUSH1 0x24 DUP4 ADD MSTORE SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH32 0x0 AND SWAP1 PUSH4 0xF7888AEC SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AE4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AF8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B1C SWAP2 SWAP1 PUSH2 0x36E9 JUMP JUMPDEST SWAP1 POP DUP8 DUP3 LT DUP1 PUSH2 0x1B2B JUMPI POP DUP7 DUP2 LT JUMPDEST ISZERO PUSH2 0x1C62 JUMPI DUP6 SLOAD PUSH1 0x1 DUP8 ADD SLOAD PUSH1 0x40 MLOAD PUSH32 0xFB39D62800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH17 0x100000000000000000000000000000000 DUP3 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x4 DUP4 ADD MSTORE PUSH20 0x100000000000000000000000000000000000000 SWAP1 SWAP3 DIV DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0xFB39D628 SWAP1 PUSH1 0x84 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C00 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C24 SWAP2 SWAP1 PUSH2 0x3795 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x1C35 DUP6 DUP5 PUSH2 0x3A8D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1C43 DUP6 DUP5 PUSH2 0x3A8D JUMP JUMPDEST SWAP1 POP DUP2 DUP13 GT ISZERO PUSH2 0x1C51 JUMPI DUP2 SWAP12 POP JUMPDEST DUP1 DUP12 GT ISZERO PUSH2 0x1C5D JUMPI DUP1 SWAP11 POP JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x1C6F DUP5 ADDRESS DUP13 DUP12 DUP14 PUSH2 0x2DD4 JUMP JUMPDEST PUSH2 0x1C7C DUP4 ADDRESS DUP13 DUP11 DUP14 PUSH2 0x2DD4 JUMP JUMPDEST POP POP POP POP POP POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x1D07 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F50455241544F5200000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD SWAP1 DUP2 MSTORE SWAP2 SWAP3 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1E2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4F574E45520000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH2 0x1E36 CALLER DUP4 DUP4 PUSH2 0x2BDD JUMP JUMPDEST POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1EA4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1EAE PUSH2 0xC75 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD PUSH32 0xDAAB21AF31ECE73A508939FEDD476A5EE5129A5ED4BB091F3236FFB45394DF62 DUP2 DUP5 ADD MSTORE DUP1 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP4 DUP12 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0xA0 DUP1 DUP4 ADD DUP11 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 DUP4 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP3 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0xE2 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0x102 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH2 0x122 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2004 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x207F JUMPI POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST DUP1 PUSH2 0x20BC JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP6 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x2122 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP11 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x21CA PUSH1 0x0 DUP5 DUP5 PUSH2 0xB6D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND EXTCODESIZE ISZERO PUSH2 0xC6F JUMPI PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x150B7A02 CALLER PUSH1 0x0 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x221D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x382F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x226B SWAP2 SWAP1 PUSH2 0x3813 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x22A6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x22AB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x22C5 SWAP2 SWAP1 PUSH2 0x363C JUMP JUMPDEST SWAP1 POP PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND EQ PUSH2 0x2372 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4552433732315F524543454956455200000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0xE0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP6 DUP4 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH17 0x100000000000000000000000000000000 DUP6 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP4 DUP7 ADD DUP2 SWAP1 MSTORE PUSH20 0x100000000000000000000000000000000000000 DUP8 DIV DUP3 SIGNEXTEND DUP3 SIGNEXTEND DUP3 SIGNEXTEND PUSH1 0x60 DUP6 ADD DUP2 SWAP1 MSTORE PUSH23 0x100000000000000000000000000000000000000000000 SWAP1 SWAP8 DIV PUSH4 0xFFFFFFFF AND PUSH1 0x80 DUP6 ADD MSTORE DUP2 DUP6 ADD SLOAD PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0x3 SWAP1 SWAP5 ADD SLOAD PUSH1 0xC0 DUP5 ADD MSTORE SWAP4 MLOAD PUSH32 0xACFE88F800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP3 DUP5 SIGNEXTEND PUSH1 0x4 DUP5 ADD MSTORE SWAP4 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x24 DUP3 ADD MSTORE DUP4 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP1 SWAP2 SWAP1 PUSH4 0xACFE88F8 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x24C1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x24E5 SWAP2 SWAP1 PUSH2 0x3795 JUMP JUMPDEST PUSH1 0xA0 DUP4 ADD MLOAD SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x252B SWAP1 PUSH2 0x24FD SWAP1 DUP6 PUSH2 0x3B4E JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH17 0x100000000000000000000000000000000 PUSH2 0x2F7F JUMP JUMPDEST SWAP5 POP PUSH2 0x2540 DUP2 PUSH1 0xC0 ADD MLOAD DUP4 PUSH2 0x24FD SWAP2 SWAP1 PUSH2 0x3B4E JUMP JUMPDEST SWAP4 POP POP SWAP2 SWAP4 POP SWAP2 SWAP4 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x25D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F49445F4F574E45520000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP1 SWAP2 PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP1 DUP9 AND LT ISZERO PUSH2 0x288D JUMPI DUP4 SLOAD PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH32 0x6289DB8200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH17 0x100000000000000000000000000000000 DUP3 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x4 DUP4 ADD MSTORE PUSH20 0x100000000000000000000000000000000000000 SWAP1 SWAP3 DIV DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x44 DUP3 ADD MSTORE ADDRESS PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6289DB82 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x26DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2739 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3595 JUMP JUMPDEST DUP7 SLOAD PUSH1 0x1 DUP9 ADD SLOAD PUSH1 0x40 MLOAD PUSH32 0xACFE88F800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH17 0x100000000000000000000000000000000 DUP3 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x4 DUP4 ADD MSTORE PUSH20 0x100000000000000000000000000000000000000 SWAP1 SWAP3 DIV DUP3 SIGNEXTEND SWAP1 SWAP2 SIGNEXTEND PUSH1 0x24 DUP3 ADD MSTORE SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xACFE88F8 SWAP1 PUSH1 0x44 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x27FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x281F SWAP2 SWAP1 PUSH2 0x3795 JUMP JUMPDEST PUSH1 0x3 DUP7 ADD SSTORE PUSH1 0x2 DUP6 ADD SSTORE PUSH1 0x1 DUP5 ADD DUP1 SLOAD DUP9 SWAP2 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x2852 SWAP1 DUP5 SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x3B1D JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x2A2F JUMP JUMPDEST DUP4 SLOAD PUSH1 0x1 DUP6 ADD SLOAD PUSH1 0x40 MLOAD PUSH32 0x6289DB8200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH17 0x100000000000000000000000000000000 DUP3 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x4 DUP4 ADD MSTORE PUSH20 0x100000000000000000000000000000000000000 DUP4 DIV DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x44 DUP3 ADD MSTORE ADDRESS PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP3 ADD MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x6289DB82 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x295C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2970 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x29B6 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3595 JUMP JUMPDEST PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000 AND SWAP1 SSTORE PUSH1 0x2 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 ADD SSTORE SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH2 0x2A2F DUP9 PUSH2 0x3051 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP9 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2A58 JUMPI PUSH2 0x2A58 PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0x2A6E SWAP2 SWAP1 PUSH2 0x3AE0 JUMP JUMPDEST PUSH2 0x2A78 SWAP2 SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2A8B JUMPI PUSH2 0x2A8B PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0x2AA1 SWAP2 SWAP1 PUSH2 0x3A8D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP10 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x2ACC JUMPI PUSH2 0x2ACC PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0x2AE2 SWAP2 SWAP1 PUSH2 0x3AE0 JUMP JUMPDEST PUSH2 0x2AEC SWAP2 SWAP1 PUSH2 0x3AA5 JUMP JUMPDEST DUP6 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x2AFF JUMPI PUSH2 0x2AFF PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH2 0x2B15 SWAP2 SWAP1 PUSH2 0x3A8D JUMP JUMPDEST SWAP1 POP PUSH2 0x2B42 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2B2D JUMPI PUSH2 0x2B2D PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD ADDRESS DUP11 DUP6 DUP12 PUSH2 0x2DD4 JUMP JUMPDEST PUSH2 0x2B6D DUP6 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x2B58 JUMPI PUSH2 0x2B58 PUSH2 0x3BF9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD ADDRESS DUP11 DUP5 DUP12 PUSH2 0x2DD4 JUMP JUMPDEST DUP6 SLOAD PUSH1 0x40 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND DUP2 MSTORE DUP12 SWAP2 CALLER SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH32 0xA246C3C6C374294B514C67820DF22C91E7D4946B79D7E9FBCDC2A9EA99036CE0 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SSTORE SWAP5 DUP8 AND DUP1 DUP5 MSTORE DUP6 DUP5 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 ADD SWAP1 SWAP3 SSTORE DUP6 DUP4 MSTORE PUSH1 0x3 DUP2 MSTORE DUP5 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x2 SWAP1 SWAP2 MSTORE DUP5 DUP4 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 AND DUP3 OR SWAP1 SSTORE SWAP3 MLOAD DUP5 SWAP4 SWAP3 SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE DUP1 DUP3 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x2D44 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x414C52454144595F4D494E544544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP1 SLOAD SWAP1 SWAP4 ADD SWAP1 SWAP3 SSTORE DUP5 DUP4 MSTORE PUSH1 0x2 SWAP1 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND DUP5 OR SWAP1 SSTORE MLOAD DUP4 SWAP3 SWAP2 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 DUP3 SWAP1 LOG4 POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2EBF JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E94 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2EB8 SWAP2 SWAP1 PUSH2 0x3795 JUMP JUMPDEST POP POP PUSH2 0x2F78 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F73 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP8 MULMOD DUP6 DUP8 MUL SWAP3 POP DUP3 DUP2 LT DUP4 DUP3 SUB SUB SWAP2 POP POP DUP1 PUSH1 0x0 EQ ISZERO PUSH2 0x2FD7 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x2FCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x304A JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x2FE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x30DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4D494E54454400000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x971 JUMP JUMPDEST PUSH2 0x1E36 DUP2 PUSH1 0x0 DUP5 PUSH2 0x2BDD JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x30FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0x310F PUSH2 0x310A DUP4 PUSH2 0x39EF JUMP JUMPDEST PUSH2 0x39A0 JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP8 DUP5 DUP7 PUSH1 0x6 SHL DUP10 ADD ADD GT ISZERO PUSH2 0x312F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x317A JUMPI PUSH1 0x40 DUP1 DUP5 DUP13 SUB SLT ISZERO PUSH2 0x314B JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3153 PUSH2 0x3977 JUMP JUMPDEST DUP5 MLOAD PUSH2 0x315E DUP2 PUSH2 0x3C57 JUMP JUMPDEST DUP2 MSTORE DUP5 DUP9 ADD MLOAD DUP9 DUP3 ADD MSTORE DUP7 MSTORE SWAP5 DUP7 ADD SWAP5 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3133 JUMP JUMPDEST POP SWAP2 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x319A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x319A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x319A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x31E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x304A DUP2 PUSH2 0x3C57 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3200 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x320B DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x321B DUP2 PUSH2 0x3C57 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x323B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x3246 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3256 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x327D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x3288 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x3298 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x32BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 ADD PUSH1 0x1F DUP2 ADD DUP8 SGT PUSH2 0x32CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x32DA PUSH2 0x310A DUP3 PUSH2 0x3A13 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP9 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x32EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP4 DUP4 ADD ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x332A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3335 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x3345 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x335A PUSH1 0x60 DUP9 ADD PUSH2 0x31BF JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3387 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3392 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x321B DUP2 PUSH2 0x3C7C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x33BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x33C8 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP7 POP PUSH2 0x33D6 PUSH1 0x20 DUP10 ADD PUSH2 0x3188 JUMP JUMPDEST SWAP6 POP PUSH2 0x33E4 PUSH1 0x40 DUP10 ADD PUSH2 0x3188 JUMP JUMPDEST SWAP5 POP PUSH2 0x33F2 PUSH1 0x60 DUP10 ADD PUSH2 0x319F JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 PUSH1 0xA0 DUP3 ADD CALLDATALOAD SWAP6 POP PUSH1 0xC0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3426 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3431 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3458 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3463 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x335A PUSH1 0x60 DUP9 ADD PUSH2 0x31BF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3492 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x34A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH2 0x34BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x34C8 PUSH2 0x310A DUP3 PUSH2 0x39EF JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE DUP5 DUP3 ADD SWAP2 POP DUP5 DUP5 ADD DUP9 DUP7 DUP6 PUSH1 0x5 SHL DUP8 ADD ADD GT ISZERO PUSH2 0x34E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP5 POP JUMPDEST DUP4 DUP6 LT ISZERO PUSH2 0x3514 JUMPI DUP1 MLOAD PUSH2 0x3500 DUP2 PUSH2 0x3C57 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP5 SWAP1 SWAP5 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 DUP6 ADD PUSH2 0x34ED JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3533 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x354B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x355F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x356E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x3583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x35AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x35C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x35CE DUP8 DUP4 DUP9 ADD PUSH2 0x30E9 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x35E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35F1 DUP7 DUP3 DUP8 ADD PUSH2 0x30E9 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3614 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x304A DUP2 PUSH2 0x3C7C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x304A DUP2 PUSH2 0x3C8A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x364E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x304A DUP2 PUSH2 0x3C8A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x366B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3682 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x3693 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x36A1 PUSH2 0x310A DUP3 PUSH2 0x3A13 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x36B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36C7 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3B65 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x36E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x36FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3717 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x3729 DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x3739 DUP2 PUSH2 0x3C7C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x375A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH2 0x376A PUSH1 0x20 DUP7 ADD PUSH2 0x319F JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x377A DUP2 PUSH2 0x3C57 JUMP JUMPDEST SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0x378A DUP2 PUSH2 0x3C7C JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x37A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x37D1 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3B65 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3825 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3B65 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x386E PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x37B9 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x38EB JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x38D9 DUP6 DUP4 MLOAD PUSH2 0x37B9 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x389F JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x304A PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x37B9 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x3940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x395B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x3970 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x399A JUMPI PUSH2 0x399A PUSH2 0x3C28 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x39E7 JUMPI PUSH2 0x39E7 PUSH2 0x3C28 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3A09 JUMPI PUSH2 0x3A09 PUSH2 0x3C28 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3A2D JUMPI PUSH2 0x3A2D PUSH2 0x3C28 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x3A84 JUMPI PUSH2 0x3A84 PUSH2 0x3BCA JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3AA0 JUMPI PUSH2 0x3AA0 PUSH2 0x3BCA JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3ADB JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3B18 JUMPI PUSH2 0x3B18 PUSH2 0x3BCA JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x3B46 JUMPI PUSH2 0x3B46 PUSH2 0x3BCA JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3B60 JUMPI PUSH2 0x3B60 PUSH2 0x3BCA JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3B80 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3B68 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xC6F JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x3BC3 JUMPI PUSH2 0x3BC3 PUSH2 0x3BCA JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3C79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3C79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x3C79 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MUL DUP7 CALLVALUE DUP14 SWAP7 REVERT RETURN SWAP2 PUSH3 0x628E3F 0xB3 SMOD STOP SMOD 0x21 PUSH13 0xD69A53A416862C0E3003A4BA83 0xA7 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "726:6810:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3491:169:51;;;;;;;;;;-1:-1:-1;3491:169:51;;;;;:::i;:::-;;:::i;:::-;;;16168:14:64;;16161:22;16143:41;;16131:2;16116:18;3491:169:51;;;;;;;;823:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1239:46::-;;;;;;;;;;-1:-1:-1;1239:46:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13188:42:64;13176:55;;;13158:74;;13146:2;13131:18;1239:46:51;13012:226:64;3915:290:51;;;;;;;;;;-1:-1:-1;3915:290:51;;;;;:::i;:::-;;:::i;:::-;;2182:41;;;;;;;;;;-1:-1:-1;2182:41:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;16341:25:64;;;16329:2;16314:18;2182:41:51;16195:177:64;971:26:51;;;;;;;;;;;;;;;;714:643:60;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5368:330:51:-;;;;;;;;;;-1:-1:-1;5368:330:51;;;;;:::i;:::-;;:::i;1504:125::-;;;;;;;;;;;;1546:83;1504:125;;3006:201;;;;;;;;;;;;;:::i;6003:179::-;;;;;;;;;;-1:-1:-1;6003:179:51;;;;;:::i;:::-;;:::i;1108:39:49:-;;;;;;;;;;;;;;;1143:42:51;;;;;;;;;;-1:-1:-1;1143:42:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;1548:1594:49;;;;;;;;;;-1:-1:-1;1548:1594:49;;;;;:::i;:::-;;:::i;1047:44:51:-;;;;;;;;;;-1:-1:-1;1047:44:51;;;;;:::i;:::-;;;;;;;;;;;;;;7495:1122;;;;;;;;;;-1:-1:-1;7495:1122:51;;;;;:::i;:::-;;:::i;4879:1434:49:-;;;;;;;;;;-1:-1:-1;4879:1434:49;;;;;:::i;:::-;;:::i;:::-;;;;26595:25:64;;;26651:2;26636:18;;26629:34;;;;26568:18;4879:1434:49;26421:248:64;2319:47:51;;;;;;;;;;-1:-1:-1;2319:47:51;;;;;:::i;:::-;;;;;;;;;;;;;;871:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1207:45:49;;;;;;;;;;-1:-1:-1;1207:45:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18987:42:64;18975:55;;;18957:74;;19079:34;19067:47;;;19062:2;19047:18;;19040:75;19162:1;19151:21;;;19131:18;;;19124:49;;;;19209:21;;;;19204:2;19189:18;;19182:49;19280:10;19268:23;;;19262:3;19247:19;;19240:52;19323:3;19308:19;;19301:35;19367:3;19352:19;;19345:35;18944:3;18929:19;1207:45:49;18617:769:64;4517:257:51;;;;;;;;;;-1:-1:-1;4517:257:51;;;;;:::i;:::-;;:::i;4967:183::-;;;;;;;;;;-1:-1:-1;4967:183:51;;;;;:::i;:::-;;:::i;9141:1114::-;;;;;;;;;;-1:-1:-1;9141:1114:51;;;;;:::i;:::-;;:::i;1732:127::-;;;;;;;;;;;;1778:81;1732:127;;6484:584;;;;;;;;;;-1:-1:-1;6484:584:51;;;;;:::i;:::-;;:::i;1153:47:49:-;;;;;;;;;;;;;;;1345:68:51;;;;;;;;;;-1:-1:-1;1345:68:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;6415:794:49;;;;;;;;;;-1:-1:-1;6415:794:49;;;;;:::i;:::-;;:::i;:::-;;;;26905:25:64;;;26961:2;26946:18;;26939:34;;;;26989:18;;;26982:34;27047:2;27032:18;;27025:34;26892:3;26877:19;6415:794:49;26674:391:64;3148:1725:49;;;;;;;;;;-1:-1:-1;3148:1725:49;;;;;:::i;:::-;;:::i;3491:169:51:-;3561:14;3599:25;;;;;;:54;;-1:-1:-1;3628:25:51;;;;;3599:54;3587:66;3491:169;-1:-1:-1;;3491:169:51:o;3915:290::-;3985:13;4001:16;;;:7;:16;;;;;;;;4035:10;:19;;;:58;;-1:-1:-1;4058:23:51;;;;;;;:16;:23;;;;;;;;4082:10;4058:35;;;;;;;;;;4035:58;4027:83;;;;;;;22789:2:64;4027:83:51;;;22771:21:64;22828:2;22808:18;;;22801:30;22867:14;22847:18;;;22840:42;22899:18;;4027:83:51;;;;;;;;;4120:20;;;;:11;:20;;;;;;:30;;;;;;;;;;;;;;4165:33;;4120:20;;4165:33;;;;;;;3975:230;3915:290;;:::o;714:643:60:-;778:22;834:4;822:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;812:34;;862:9;857:494;877:15;;;857:494;;;914:12;;959:4;978;;983:1;978:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;951:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;913:73;;;;1006:7;1001:306;;1133:2;1117:6;:13;:18;1113:32;;;1137:8;;;1113:32;1216:4;1208:6;1204:17;1194:27;;1274:6;1263:28;;;;;;;;;;;;:::i;:::-;1256:36;;;;;;;;;;;:::i;1001:306::-;1334:6;1321:7;1329:1;1321:10;;;;;;;;:::i;:::-;;;;;;:19;;;;899:452;;894:3;;;;;:::i;:::-;;;;857:494;;;;714:643;;;;:::o;5368:330:51:-;5482:13;5498:16;;;:7;:16;;;;;;;;5532:10;:19;;;:57;;-1:-1:-1;5569:20:51;;;;:11;:20;;;;;;;;5555:10;:34;5532:57;:96;;;-1:-1:-1;5593:23:51;;;;;;;:16;:23;;;;;;;;5617:10;5593:35;;;;;;;;;;5532:96;5524:121;;;;;;;22789:2:64;5524:121:51;;;22771:21:64;22828:2;22808:18;;;22801:30;22867:14;22847:18;;;22840:42;22899:18;;5524:121:51;22587:336:64;5524:121:51;5655:36;5665:5;5672:9;5683:7;5655:9;:36::i;:::-;5472:226;5368:330;;;:::o;3006:201::-;3055:23;3125:25;3108:13;:42;:92;;-1:-1:-1;2801:4:51;;;;;;;;;;;;;;;;;2835:10;;;;;;;;;;;;;;;2644:278;;2672:95;2644:278;;;17700:25:64;2785:22:51;17741:18:64;;;17734:34;2825:21:51;17784:18:64;;;17777:34;2864:13:51;17827:18:64;;;17820:34;2903:4:51;17870:19:64;;;;17863:84;;;;2644:278:51;;;;;;;;;;17672:19:64;;;;2644:278:51;;;2621:311;;;;;;3006:201::o;3108:92::-;-1:-1:-1;3153:17:51;;3006:201::o;6003:179::-;6123:52;6148:1;6152:9;6163:7;6123:52;;;;;;;;;;;;:16;:52::i;:::-;6003:179;;;:::o;1548:1594:49:-;1839:49;;;;;1877:10;1839:49;;;13158:74:64;1801:18:49;;1855:14;1839:37;;;;;13131:18:64;;1839:49:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1831:70;;;;;;;23820:2:64;1831:70:49;;;23802:21:64;23859:1;23839:18;;;23832:29;23897:10;23877:18;;;23870:38;23925:18;;1831:70:49;23618:331:64;1831:70:49;1916:16;1912:1224;;-1:-1:-1;2007:342:49;;;;;;;;2067:10;2007:342;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2214:15;2007:342;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1992:11:49;;1982:22;;:9;:22;;;;;;:367;;;;;;2007:342;1982:367;;;;;;;;-1:-1:-1;1982:367:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2376:11;2401:16;2407:9;2401:5;:16::i;:::-;2436:60;;26192:34:64;26180:47;;26162:66;;2477:10:49;;2436:60;;;;2454:10;;2436:60;;26150:2:64;26135:18;2436:60:49;;;;;;;1912:1224;;;2517:10;;;;2513:623;;2601:25;2629:22;;;:9;:22;;;;;2687:11;;2673:25;;2665:54;;;;;;;23130:2:64;2665:54:49;;;23112:21:64;23169:2;23149:18;;;23142:30;23208:18;23188;;;23181:46;23244:18;;2665:54:49;22928:340:64;2665:54:49;2741:14;;;;:23;;;;:14;;;;;;:23;;;:50;;;;-1:-1:-1;2768:14:49;;;;:23;;;;:14;;;;;;:23;;;2741:50;2733:78;;;;;;;21414:2:64;2733:78:49;;;21396:21:64;21453:2;21433:18;;;21426:30;21492:17;21472:18;;;21465:45;21527:18;;2733:78:49;21212:339:64;2733:78:49;2862:16;2833:8;:25;;;:45;:94;;;;;2911:16;2882:8;:25;;;:45;2833:94;2825:116;;;;;;;22111:2:64;2825:116:49;;;22093:21:64;22150:1;22130:18;;;22123:29;22188:11;22168:18;;;22161:39;22217:18;;2825:116:49;21909:332:64;2825:116:49;2955:18;;;:28;;2977:6;;2955:18;;;:28;;2977:6;;2955:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2997:23:49;;:49;;;;;3030:15;2997:49;;;;;;3065:60;;26180:47:64;;;26162:66;;3106:10:49;;-1:-1:-1;3065:60:49;;;;3083:10;;3065:60;;26150:2:64;26135:18;3065:60:49;;;;;;;2529:607;2513:623;1548:1594;;;;;;;;;:::o;7495:1122:51:-;7687:15;7675:8;:27;;7667:63;;;;;;;25184:2:64;7667:63:51;;;25166:21:64;25223:2;25203:18;;;25196:30;25262:25;25242:18;;;25235:53;25305:18;;7667:63:51;24982:347:64;7667:63:51;7740:13;7756:16;;;:7;:16;;;;;;;;;8096:18;:16;:18::i;:::-;8192:15;;;;:6;:15;;;;;;;;;:17;;;;;;;;8146:74;;1546:83;8146:74;;;17183:25:64;17256:42;17244:55;;17224:18;;;17217:83;17316:18;;;17309:34;;;17359:18;;;17352:34;;;;17402:19;;;;17395:35;;;8146:74:51;;;;;;;;;;17155:19:64;;;8146:74:51;;;8136:85;;;;;;;;;;12833:66:64;8026:213:51;;;12821:79:64;12916:11;;;12909:27;;;;12952:12;;;12945:28;;;;12989:12;;8026:213:51;;;;;;;;;;;;;7999:254;;8026:213;7999:254;;;;8267:24;8294:26;;;;;;;;;18185:25:64;;;18258:4;18246:17;;18226:18;;;18219:45;;;;18280:18;;;18273:34;;;18323:18;;;18316:34;;;7999:254:51;;-1:-1:-1;8267:24:51;8294:26;;18157:19:64;;8294:26:51;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8294:26:51;;;;;;-1:-1:-1;;8342:30:51;;;8334:67;;;;;;;21758:2:64;8334:67:51;;;21740:21:64;21797:2;21777:18;;;21770:30;21836:26;21816:18;;;21809:54;21880:18;;8334:67:51;21556:348:64;8334:67:51;8443:5;8423:25;;:16;:25;;;:70;;;-1:-1:-1;8452:23:51;;;;;;;;:16;:23;;;;;;;;:41;;;;;;;;;;;;8423:70;8415:97;;;;;;;24156:2:64;8415:97:51;;;24138:21:64;24195:2;24175:18;;;24168:30;24234:16;24214:18;;;24207:44;24268:18;;8415:97:51;23954:338:64;8415:97:51;-1:-1:-1;;8532:20:51;;;;:11;:20;;;;;;:30;;;;;;;;;;;;;;8577:33;;8532:20;;8577:33;;;;;;;7657:960;7495:1122;;;;;;:::o;4879:1434:49:-;4996:20;5072:16;;;:7;:16;;;;;;4996:20;;5072:16;;5058:10;:30;5050:55;;;;;;;22448:2:64;5050:55:49;;;22430:21:64;22487:2;22467:18;;;22460:30;22526:14;22506:18;;;22499:42;22558:18;;5050:55:49;22246:336:64;5050:55:49;5115:25;5143:18;;;:9;:18;;;;;;5198:13;;:25;;;;;;;5143:18;;5115:25;5198:13;;;;;:23;;:25;;;;;5115;;5198;;;;;;;;:13;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5172:51;;5233:14;5250:6;5257:1;5250:9;;;;;;;;:::i;:::-;;;;;;;5233:26;;5269:14;5286:6;5293:1;5286:9;;;;;;;;:::i;:::-;;;;;;;5269:26;;5391:21;5404:7;5391:12;:21::i;:::-;5362:25;;;5306:106;5335:25;;;5306:106;5442:38;;;;;:15;13496::64;;;5442:38:49;;;13478:34:64;5474:4:49;13528:18:64;;;13521:43;5306:106:49;;-1:-1:-1;5306:106:49;;-1:-1:-1;;;5442:5:49;:15;;;;13390:18:64;;5442:38:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5509;;;;;:15;13496::64;;;5509:38:49;;;13478:34:64;5541:4:49;13528:18:64;;;13521:43;5423:57:49;;-1:-1:-1;5490:16:49;;5509:5;:15;;;;13390:18:64;;5509:38:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5490:57;;5573:12;5562:8;:23;:50;;;;5600:12;5589:8;:23;5562:50;5558:588;;;5673:13;;;5695:14;;;5673:75;;;;;5695:14;;;;;;;20156:21:64;;5673:75:49;;;20138:40:64;5711:14:49;;;;;;20214:21:64;;;20194:18;;;20187:49;5735:4:49;20252:18:64;;;20245:83;5629:19:49;20344:18:64;;;20337:50;;;5629:19:49;;;5673:13;;;;;:21;;20110:19:64;;5673:75:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5628:120;;-1:-1:-1;5628:120:49;-1:-1:-1;5763:19:49;5785:22;5799:8;5628:120;5785:22;:::i;:::-;5763:44;-1:-1:-1;5821:19:49;5843:22;5857:8;5843:11;:22;:::i;:::-;5821:44;;6024:11;6009:12;:26;6005:58;;;6052:11;6037:26;;6005:58;6096:11;6081:12;:26;6077:58;;;6124:11;6109:26;;6077:58;5614:532;;;;5558:588;6156:70;6166:6;6182:4;6189:9;6200:12;6214:11;6156:9;:70::i;:::-;6236;6246:6;6262:4;6269:9;6280:12;6294:11;6236:9;:70::i;:::-;5040:1273;;;;;;4879:1434;;;;;;:::o;4517:257:51:-;4604:22;;;4596:51;;;;;;;23475:2:64;4596:51:51;;;23457:21:64;23514:2;23494:18;;;23487:30;23553:18;23533;;;23526:46;23589:18;;4596:51:51;23273:340:64;4596:51:51;4674:10;4657:28;;;;:16;:28;;;;;;;;;:38;;;;;;;;;;;;:49;;;;;;;;;;;;;4721:46;;16143:41:64;;;4657:38:51;;4674:10;4721:46;;16116:18:64;4721:46:51;;;;;;;4517:257;;:::o;4967:183::-;5062:16;;;;:7;:16;;;;;;;;5048:10;:30;5040:52;;;;;;;24847:2:64;5040:52:51;;;24829:21:64;24886:1;24866:18;;;24859:29;24924:11;24904:18;;;24897:39;24953:18;;5040:52:51;24645:332:64;5040:52:51;5102:41;5112:10;5124:9;5135:7;5102:9;:41::i;:::-;4967:183;;:::o;9141:1114::-;9335:15;9323:8;:27;;9315:63;;;;;;;25184:2:64;9315:63:51;;;25166:21:64;25223:2;25203:18;;;25196:30;25262:25;25242:18;;;25235:53;25305:18;;9315:63:51;24982:347:64;9315:63:51;9588:14;9702:18;:16;:18::i;:::-;9801:19;;;;;;;;:12;:19;;;;;;;;;:21;;;;;;;;9752:81;;1778;9752;;;16636:25:64;16738:18;;;16731:43;;;;16810:15;;;16790:18;;;16783:43;16842:18;;;16835:34;;;;16885:19;;;;16878:35;;;9752:81:51;;;;;;;;;;16608:19:64;;;9752:81:51;;;9742:92;;;;;;;;12833:66:64;9632:220:51;;;12821:79:64;12916:11;;;12909:27;;;;12952:12;;;12945:28;;;;12989:12;;9632:220:51;;;;;;;;;;;;;9605:261;;9632:220;9605:261;;;;9880:24;9907:26;;;;;;;;;18185:25:64;;;18258:4;18246:17;;18226:18;;;18219:45;;;;18280:18;;;18273:34;;;18323:18;;;18316:34;;;9605:261:51;;-1:-1:-1;9880:24:51;9907:26;;18157:19:64;;9907:26:51;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9907:26:51;;;;;;-1:-1:-1;;9973:30:51;;;;;;;:59;;;10027:5;10007:25;;:16;:25;;;9973:59;9972:106;;;-1:-1:-1;10037:23:51;;;;;;;;:16;:23;;;;;;;;:41;;;;;;;;;;;;9972:106;9947:189;;;;;;;21758:2:64;9947:189:51;;;21740:21:64;21797:2;21777:18;;;21770:30;21836:26;21816:18;;;21809:54;21880:18;;9947:189:51;21556:348:64;9947:189:51;-1:-1:-1;;10156:23:51;;;;;;;;:16;:23;;;;;;;;:33;;;;;;;;;;;;;:40;;;;10192:4;10156:40;;;;;;10211:37;;16143:41:64;;;10211:37:51;;16116:18:64;10211:37:51;;;;;;;9141:1114;;;;;;:::o;6484:584::-;6629:44;6650:1;6654:9;6665:7;6629:12;:44::i;:::-;6687:21;;;;:26;6683:379;;6801:21;6826:9;:20;;6870:10;6882;6902:1;6906:7;6915:4;6847:73;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6826:95;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6798:123;;;6935:15;6964:8;6953:30;;;;;;;;;;;;:::i;:::-;6935:48;-1:-1:-1;7005:22:51;;;;;6997:54;;;;;;;24499:2:64;6997:54:51;;;24481:21:64;24538:2;24518:18;;;24511:30;24577:21;24557:18;;;24550:49;24616:18;;6997:54:51;24297:343:64;6997:54:51;6715:347;;6484:584;;;;:::o;6415:794:49:-;6512:20;6694:18;;;:9;:18;;;;;;;;6667:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6762:60;;;;;19830:21:64;;;6762:60:49;;;19812:40:64;19888:21;;;;19868:18;;;19861:49;6512:20:49;;;;;;6667:45;;;6762:28;;19785:18:64;;6762:60:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6896:25;;;;6723:99;;-1:-1:-1;6723:99:49;-1:-1:-1;6848:164:49;;6877:44;;6723:99;6877:44;:::i;:::-;6935:8;:18;;;6848:164;;6967:35;6848:15;:164::i;:::-;6833:179;;7038:164;7086:8;:25;;;7067:16;:44;;;;:::i;7038:164::-;7023:179;;6657:552;6415:794;;;;;:::o;3148:1725::-;3324:16;;;;:7;:16;;;;;;;;3310:10;:30;3302:55;;;;;;;22448:2:64;3302:55:49;;;22430:21:64;22487:2;22467:18;;;22460:30;22526:14;22506:18;;;22499:42;22558:18;;3302:55:49;22246:336:64;3302:55:49;3367:25;3395:18;;;:9;:18;;;;;3567;;;;3395;;3424:42;;;;3367:25;3567:18;;;;3558:27;;;;3554:811;;;3647:13;;;3696:14;;;3647:187;;;;;3696:14;;;;;;;20661:21:64;;3647:187:49;;;20643:40:64;3728:14:49;;;;;;20719:21:64;;;20699:18;;;20692:49;20789:34;20777:47;;20757:18;;;20750:75;3792:4:49;20841:18:64;;;20834:83;3647:13:49;20933:19:64;;;20926:51;3647:13:49;;;;;:31;;20615:19:64;;3647:187:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3906:13;;;3935:14;;;3906:60;;;;;3935:14;;;;;;;19830:21:64;;3906:60:49;;;19812:40:64;3951:14:49;;;;;;19888:21:64;;;19868:18;;;19861:49;3601:233:49;;-1:-1:-1;3601:233:49;;-1:-1:-1;3601:233:49;-1:-1:-1;3906:13:49;;;:28;;19785:18:64;;3906:60:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3877:25;;;3849:117;3850:25;;;3849:117;-1:-1:-1;3981:18:49;;:28;;4003:6;;3981:18;3850:25;;3981:28;;4003:6;;3981:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3554:811;;;4086:13;;;4135:14;;;4086:199;;;;;4135:14;;;;;;;20661:21:64;;4086:199:49;;;20643:40:64;4167:14:49;;;;;20719:21:64;;20699:18;;;20692:49;4199:18:49;;;;20757::64;;;20750:75;4243:4:49;20841:18:64;;;20834:83;4086:13:49;20933:19:64;;;20926:51;4086:13:49;;;;;:31;;20615:19:64;;4086:199:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4307:18;;;;:9;:18;;;;;4300:25;;;;;;;;;;;;;;;;;;;;;;;;4040:245;;-1:-1:-1;4040:245:49;-1:-1:-1;4040:245:49;-1:-1:-1;4340:14:49;4317:7;4340:5;:14::i;:::-;4375:20;4461:12;4451:6;4428:29;;:10;4439:1;4428:13;;;;;;;;:::i;:::-;;;;;;;:20;;;:29;;;;:::i;:::-;4427:46;;;;:::i;:::-;4398:15;4414:1;4398:18;;;;;;;;:::i;:::-;;;;;;;:25;;;:76;;;;:::i;:::-;4375:99;;4484:20;4570:12;4560:6;4537:29;;:10;4548:1;4537:13;;;;;;;;:::i;:::-;;;;;;;:20;;;:29;;;;:::i;:::-;4536:46;;;;:::i;:::-;4507:15;4523:1;4507:18;;;;;;;;:::i;:::-;;;;;;;:25;;;:76;;;;:::i;:::-;4484:99;;4594:88;4604:15;4620:1;4604:18;;;;;;;;:::i;:::-;;;;;;;:24;;;4638:4;4645:9;4656:12;4670:11;4594:9;:88::i;:::-;4692;4702:15;4718:1;4702:18;;;;;;;;:::i;:::-;;;;;;;:24;;;4736:4;4743:9;4754:12;4768:11;4692:9;:88::i;:::-;4822:13;;4796:70;;26192:34:64;26180:47;;26162:66;;4850:7:49;;4838:10;;4796:70;4822:13;;;;4796:70;;26150:2:64;26135:18;4796:70:49;;;;;;;3292:1581;;;;;;3148:1725;;;;:::o;11060:508:51:-;11395:15;;;;;;;;:9;:15;;;;;;;;:17;;;;;;11426:13;;;;;;;;;:15;;;;;;;;11468:20;;;:11;:20;;;;;11461:27;;;;;;;;;11498:7;:16;;;;;;:21;;;;;;;;;11534:27;;11480:7;;11426:13;11395:15;11534:27;;;11060:508;;;:::o;10261:500::-;10505:15;10523:13;;;;;;;10558:16;;;:7;:16;;;;;;;:30;:16;:30;10550:57;;;;;;;25536:2:64;10550:57:51;;;25518:21:64;25575:2;25555:18;;;25548:30;25614:16;25594:18;;;25587:44;25648:18;;10550:57:51;25334:338:64;10550:57:51;10621:20;;;;;;;:9;:20;;;;;;;;:22;;;;;;;;10657:16;;;:7;:16;;;;;:28;;;;;;;;10704:40;10665:7;;10621:20;;10704:40;;10621:20;;10704:40;10481:274;10261:500;:::o;7215:319:49:-;7378:11;7374:154;;;7405:42;;;;;:14;13921:15:64;;;7405:42:49;;;13903:34:64;13973:15;;;13953:18;;;13946:43;14025:15;;;14005:18;;;13998:43;7437:1:49;14057:18:64;;;14050:34;14100:19;;;14093:35;;;7405:5:49;:14;;;;13814:19:64;;7405:42:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;7374:154;;;7478:39;;;;;:14;14449:15:64;;;7478:39:49;;;14431:34:64;14501:15;;;14481:18;;;14474:43;14553:15;;;14533:18;;;14526:43;14585:18;;;14578:34;;;7478:5:49;:14;;;;14342:19:64;;7478:39:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7374:154;7215:319;;;;;:::o;841:4151:26:-;953:14;;;1524:6;1521:1;1518;1511:20;1564:1;1561;1557:9;1548:18;;1619:5;1615:2;1612:13;1604:5;1600:2;1596:14;1592:34;1583:43;;;1720:5;1729:1;1720:10;1716:203;;;1772:1;1758:11;:15;1750:24;;;;;;-1:-1:-1;1833:23:26;;;;-1:-1:-1;1891:13:26;;1716:203;2059:5;2045:11;:19;2037:28;;;;;;2367:17;2451:11;2448:1;2445;2438:25;2846:12;2869:20;;;2861:43;;3011:22;;;;;3882:1;3863;:15;;3862:21;;4125:17;;;4121:21;;4114:28;4188:17;;;4184:21;;4177:28;4252:17;;;4248:21;;4241:28;4316:17;;;4312:21;;4305:28;4380:17;;;4376:21;;4369:28;4445:17;;;4441:21;;;4434:28;3425:12;;;;3421:23;;;3446:1;3417:31;2597:20;;;2586:32;;;3484:12;;;;2644:21;;;;3155:16;;;;3475:21;;;;4937:11;;;;;-1:-1:-1;;841:4151:26;;;;;;:::o;10767:287:51:-;10916:13;10932:16;;;:7;:16;;;;;;;;10966:19;10958:42;;;;;;;25879:2:64;10958:42:51;;;25861:21:64;25918:2;25898:18;;;25891:30;25957:12;25937:18;;;25930:40;25987:18;;10958:42:51;25677:334:64;10958:42:51;11010:37;11020:5;11035:1;11039:7;11010:9;:37::i;14:1008:64:-;90:5;143:3;136:4;128:6;124:17;120:27;110:55;;161:1;158;151:12;110:55;190:6;184:13;216:4;240:60;256:43;296:2;256:43;:::i;:::-;240:60;:::i;:::-;322:3;346:2;341:3;334:15;374:2;369:3;365:12;358:19;;409:2;401:6;397:15;461:3;456:2;450;447:1;443:10;435:6;431:23;427:32;424:41;421:61;;;478:1;475;468:12;421:61;500:1;521;531:462;547:2;542:3;539:11;531:462;;;606:4;645:2;639:3;634;630:13;626:22;623:42;;;661:1;658;651:12;623:42;691:22;;:::i;:::-;747:3;741:10;764:33;789:7;764:33;:::i;:::-;810:22;;874:12;;;868:19;852:14;;;845:43;901:18;;939:12;;;;971;;;;569:1;560:11;531:462;;;-1:-1:-1;1011:5:64;;14:1008;-1:-1:-1;;;;;;;;14:1008:64:o;1027:160::-;1093:20;;1153:1;1142:20;;;1132:31;;1122:59;;1177:1;1174;1167:12;1122:59;1027:160;;;:::o;1192:188::-;1260:20;;1320:34;1309:46;;1299:57;;1289:85;;1370:1;1367;1360:12;1385:156;1451:20;;1511:4;1500:16;;1490:27;;1480:55;;1531:1;1528;1521:12;1546:247;1605:6;1658:2;1646:9;1637:7;1633:23;1629:32;1626:52;;;1674:1;1671;1664:12;1626:52;1713:9;1700:23;1732:31;1757:5;1732:31;:::i;1798:388::-;1866:6;1874;1927:2;1915:9;1906:7;1902:23;1898:32;1895:52;;;1943:1;1940;1933:12;1895:52;1982:9;1969:23;2001:31;2026:5;2001:31;:::i;:::-;2051:5;-1:-1:-1;2108:2:64;2093:18;;2080:32;2121:33;2080:32;2121:33;:::i;:::-;2173:7;2163:17;;;1798:388;;;;;:::o;2191:456::-;2268:6;2276;2284;2337:2;2325:9;2316:7;2312:23;2308:32;2305:52;;;2353:1;2350;2343:12;2305:52;2392:9;2379:23;2411:31;2436:5;2411:31;:::i;:::-;2461:5;-1:-1:-1;2518:2:64;2503:18;;2490:32;2531:33;2490:32;2531:33;:::i;:::-;2191:456;;2583:7;;-1:-1:-1;;;2637:2:64;2622:18;;;;2609:32;;2191:456::o;2652:1016::-;2747:6;2755;2763;2771;2824:3;2812:9;2803:7;2799:23;2795:33;2792:53;;;2841:1;2838;2831:12;2792:53;2880:9;2867:23;2899:31;2924:5;2899:31;:::i;:::-;2949:5;-1:-1:-1;3006:2:64;2991:18;;2978:32;3019:33;2978:32;3019:33;:::i;:::-;3071:7;-1:-1:-1;3125:2:64;3110:18;;3097:32;;-1:-1:-1;3180:2:64;3165:18;;3152:32;3207:18;3196:30;;3193:50;;;3239:1;3236;3229:12;3193:50;3262:22;;3315:4;3307:13;;3303:27;-1:-1:-1;3293:55:64;;3344:1;3341;3334:12;3293:55;3380:2;3367:16;3405:48;3421:31;3449:2;3421:31;:::i;3405:48::-;3476:2;3469:5;3462:17;3516:7;3511:2;3506;3502;3498:11;3494:20;3491:33;3488:53;;;3537:1;3534;3527:12;3488:53;3592:2;3587;3583;3579:11;3574:2;3567:5;3563:14;3550:45;3636:1;3631:2;3626;3619:5;3615:14;3611:23;3604:34;3657:5;3647:15;;;;;2652:1016;;;;;;;:::o;3673:665::-;3775:6;3783;3791;3799;3807;3815;3868:3;3856:9;3847:7;3843:23;3839:33;3836:53;;;3885:1;3882;3875:12;3836:53;3924:9;3911:23;3943:31;3968:5;3943:31;:::i;:::-;3993:5;-1:-1:-1;4050:2:64;4035:18;;4022:32;4063:33;4022:32;4063:33;:::i;:::-;4115:7;-1:-1:-1;4169:2:64;4154:18;;4141:32;;-1:-1:-1;4192:36:64;4224:2;4209:18;;4192:36;:::i;:::-;4182:46;;4275:3;4264:9;4260:19;4247:33;4237:43;;4327:3;4316:9;4312:19;4299:33;4289:43;;3673:665;;;;;;;;:::o;4343:382::-;4408:6;4416;4469:2;4457:9;4448:7;4444:23;4440:32;4437:52;;;4485:1;4482;4475:12;4437:52;4524:9;4511:23;4543:31;4568:5;4543:31;:::i;:::-;4593:5;-1:-1:-1;4650:2:64;4635:18;;4622:32;4663:30;4622:32;4663:30;:::i;4730:669::-;4839:6;4847;4855;4863;4871;4879;4887;4940:3;4928:9;4919:7;4915:23;4911:33;4908:53;;;4957:1;4954;4947:12;4908:53;4996:9;4983:23;5015:31;5040:5;5015:31;:::i;:::-;5065:5;-1:-1:-1;5089:36:64;5121:2;5106:18;;5089:36;:::i;:::-;5079:46;;5144:36;5176:2;5165:9;5161:18;5144:36;:::i;:::-;5134:46;;5199:38;5233:2;5222:9;5218:18;5199:38;:::i;:::-;4730:669;;;;-1:-1:-1;4730:669:64;;5284:3;5269:19;;5256:33;;5336:3;5321:19;;5308:33;;-1:-1:-1;5388:3:64;5373:19;;;5360:33;;-1:-1:-1;4730:669:64;-1:-1:-1;;4730:669:64:o;5404:315::-;5472:6;5480;5533:2;5521:9;5512:7;5508:23;5504:32;5501:52;;;5549:1;5546;5539:12;5501:52;5588:9;5575:23;5607:31;5632:5;5607:31;:::i;:::-;5657:5;5709:2;5694:18;;;;5681:32;;-1:-1:-1;;;5404:315:64:o;5724:592::-;5826:6;5834;5842;5850;5858;5866;5919:3;5907:9;5898:7;5894:23;5890:33;5887:53;;;5936:1;5933;5926:12;5887:53;5975:9;5962:23;5994:31;6019:5;5994:31;:::i;:::-;6044:5;-1:-1:-1;6096:2:64;6081:18;;6068:32;;-1:-1:-1;6147:2:64;6132:18;;6119:32;;-1:-1:-1;6170:36:64;6202:2;6187:18;;6170:36;:::i;6321:967::-;6416:6;6447:2;6490;6478:9;6469:7;6465:23;6461:32;6458:52;;;6506:1;6503;6496:12;6458:52;6539:9;6533:16;6572:18;6564:6;6561:30;6558:50;;;6604:1;6601;6594:12;6558:50;6627:22;;6680:4;6672:13;;6668:27;-1:-1:-1;6658:55:64;;6709:1;6706;6699:12;6658:55;6738:2;6732:9;6761:60;6777:43;6817:2;6777:43;:::i;6761:60::-;6843:3;6867:2;6862:3;6855:15;6895:2;6890:3;6886:12;6879:19;;6926:2;6922;6918:11;6974:7;6969:2;6963;6960:1;6956:10;6952:2;6948:19;6944:28;6941:41;6938:61;;;6995:1;6992;6985:12;6938:61;7017:1;7008:10;;7027:231;7041:2;7038:1;7035:9;7027:231;;;7105:3;7099:10;7122:31;7147:5;7122:31;:::i;:::-;7166:18;;7059:1;7052:9;;;;;7204:12;;;;7236;;7027:231;;;-1:-1:-1;7277:5:64;6321:967;-1:-1:-1;;;;;;;6321:967:64:o;7293:626::-;7390:6;7398;7451:2;7439:9;7430:7;7426:23;7422:32;7419:52;;;7467:1;7464;7457:12;7419:52;7507:9;7494:23;7536:18;7577:2;7569:6;7566:14;7563:34;;;7593:1;7590;7583:12;7563:34;7631:6;7620:9;7616:22;7606:32;;7676:7;7669:4;7665:2;7661:13;7657:27;7647:55;;7698:1;7695;7688:12;7647:55;7738:2;7725:16;7764:2;7756:6;7753:14;7750:34;;;7780:1;7777;7770:12;7750:34;7833:7;7828:2;7818:6;7815:1;7811:14;7807:2;7803:23;7799:32;7796:45;7793:65;;;7854:1;7851;7844:12;7793:65;7885:2;7877:11;;;;;7907:6;;-1:-1:-1;7293:626:64;;-1:-1:-1;;;;7293:626:64:o;7924:755::-;8120:6;8128;8136;8189:2;8177:9;8168:7;8164:23;8160:32;8157:52;;;8205:1;8202;8195:12;8157:52;8238:9;8232:16;8267:18;8308:2;8300:6;8297:14;8294:34;;;8324:1;8321;8314:12;8294:34;8347:83;8422:7;8413:6;8402:9;8398:22;8347:83;:::i;:::-;8337:93;;8476:2;8465:9;8461:18;8455:25;8439:41;;8505:2;8495:8;8492:16;8489:36;;;8521:1;8518;8511:12;8489:36;;8544:85;8621:7;8610:8;8599:9;8595:24;8544:85;:::i;:::-;8534:95;;;8669:2;8658:9;8654:18;8648:25;8638:35;;7924:755;;;;;:::o;8684:245::-;8751:6;8804:2;8792:9;8783:7;8779:23;8775:32;8772:52;;;8820:1;8817;8810:12;8772:52;8852:9;8846:16;8871:28;8893:5;8871:28;:::i;8934:245::-;8992:6;9045:2;9033:9;9024:7;9020:23;9016:32;9013:52;;;9061:1;9058;9051:12;9013:52;9100:9;9087:23;9119:30;9143:5;9119:30;:::i;9184:249::-;9253:6;9306:2;9294:9;9285:7;9281:23;9277:32;9274:52;;;9322:1;9319;9312:12;9274:52;9354:9;9348:16;9373:30;9397:5;9373:30;:::i;9438:635::-;9518:6;9571:2;9559:9;9550:7;9546:23;9542:32;9539:52;;;9587:1;9584;9577:12;9539:52;9620:9;9614:16;9653:18;9645:6;9642:30;9639:50;;;9685:1;9682;9675:12;9639:50;9708:22;;9761:4;9753:13;;9749:27;-1:-1:-1;9739:55:64;;9790:1;9787;9780:12;9739:55;9819:2;9813:9;9844:48;9860:31;9888:2;9860:31;:::i;9844:48::-;9915:2;9908:5;9901:17;9955:7;9950:2;9945;9941;9937:11;9933:20;9930:33;9927:53;;;9976:1;9973;9966:12;9927:53;9989:54;10040:2;10035;10028:5;10024:14;10019:2;10015;10011:11;9989:54;:::i;:::-;10062:5;9438:635;-1:-1:-1;;;;;9438:635:64:o;10078:180::-;10137:6;10190:2;10178:9;10169:7;10165:23;10161:32;10158:52;;;10206:1;10203;10196:12;10158:52;-1:-1:-1;10229:23:64;;10078:180;-1:-1:-1;10078:180:64:o;10263:184::-;10333:6;10386:2;10374:9;10365:7;10361:23;10357:32;10354:52;;;10402:1;10399;10392:12;10354:52;-1:-1:-1;10425:16:64;;10263:184;-1:-1:-1;10263:184:64:o;10452:450::-;10526:6;10534;10542;10595:2;10583:9;10574:7;10570:23;10566:32;10563:52;;;10611:1;10608;10601:12;10563:52;10647:9;10634:23;10624:33;;10707:2;10696:9;10692:18;10679:32;10720:31;10745:5;10720:31;:::i;:::-;10770:5;-1:-1:-1;10827:2:64;10812:18;;10799:32;10840:30;10799:32;10840:30;:::i;:::-;10889:7;10879:17;;;10452:450;;;;;:::o;10907:525::-;10990:6;10998;11006;11014;11067:3;11055:9;11046:7;11042:23;11038:33;11035:53;;;11084:1;11081;11074:12;11035:53;11120:9;11107:23;11097:33;;11149:38;11183:2;11172:9;11168:18;11149:38;:::i;:::-;11139:48;;11237:2;11226:9;11222:18;11209:32;11250:31;11275:5;11250:31;:::i;:::-;11300:5;-1:-1:-1;11357:2:64;11342:18;;11329:32;11370:30;11329:32;11370:30;:::i;:::-;10907:525;;;;-1:-1:-1;10907:525:64;;-1:-1:-1;;10907:525:64:o;11437:245::-;11516:6;11524;11577:2;11565:9;11556:7;11552:23;11548:32;11545:52;;;11593:1;11590;11583:12;11545:52;-1:-1:-1;;11616:16:64;;11672:2;11657:18;;;11651:25;11616:16;;11651:25;;-1:-1:-1;11437:245:64:o;11687:316::-;11728:3;11766:5;11760:12;11793:6;11788:3;11781:19;11809:63;11865:6;11858:4;11853:3;11849:14;11842:4;11835:5;11831:16;11809:63;:::i;:::-;11917:2;11905:15;11922:66;11901:88;11892:98;;;;11992:4;11888:109;;11687:316;-1:-1:-1;;11687:316:64:o;12008:271::-;12191:6;12183;12178:3;12165:33;12147:3;12217:16;;12242:13;;;12217:16;12008:271;-1:-1:-1;12008:271:64:o;12284:274::-;12413:3;12451:6;12445:13;12467:53;12513:6;12508:3;12501:4;12493:6;12489:17;12467:53;:::i;:::-;12536:16;;;;;12284:274;-1:-1:-1;;12284:274:64:o;14623:511::-;14817:4;14846:42;14927:2;14919:6;14915:15;14904:9;14897:34;14979:2;14971:6;14967:15;14962:2;14951:9;14947:18;14940:43;;15019:6;15014:2;15003:9;14999:18;14992:34;15062:3;15057:2;15046:9;15042:18;15035:31;15083:45;15123:3;15112:9;15108:19;15100:6;15083:45;:::i;:::-;15075:53;14623:511;-1:-1:-1;;;;;;14623:511:64:o;15139:859::-;15299:4;15328:2;15368;15357:9;15353:18;15398:2;15387:9;15380:21;15421:6;15456;15450:13;15487:6;15479;15472:22;15525:2;15514:9;15510:18;15503:25;;15587:2;15577:6;15574:1;15570:14;15559:9;15555:30;15551:39;15537:53;;15625:2;15617:6;15613:15;15646:1;15656:313;15670:6;15667:1;15664:13;15656:313;;;15759:66;15747:9;15739:6;15735:22;15731:95;15726:3;15719:108;15850:39;15882:6;15873;15867:13;15850:39;:::i;:::-;15840:49;-1:-1:-1;15947:12:64;;;;15912:15;;;;15692:1;15685:9;15656:313;;;-1:-1:-1;15986:6:64;;15139:859;-1:-1:-1;;;;;;;15139:859:64:o;20988:219::-;21137:2;21126:9;21119:21;21100:4;21157:44;21197:2;21186:9;21182:18;21174:6;21157:44;:::i;27070:580::-;27147:4;27153:6;27213:11;27200:25;27303:66;27292:8;27276:14;27272:29;27268:102;27248:18;27244:127;27234:155;;27385:1;27382;27375:12;27234:155;27412:33;;27464:20;;;-1:-1:-1;27507:18:64;27496:30;;27493:50;;;27539:1;27536;27529:12;27493:50;27572:4;27560:17;;-1:-1:-1;27603:14:64;27599:27;;;27589:38;;27586:58;;;27640:1;27637;27630:12;27586:58;27070:580;;;;;:::o;27655:257::-;27727:4;27721:11;;;27759:17;;27806:18;27791:34;;27827:22;;;27788:62;27785:88;;;27853:18;;:::i;:::-;27889:4;27882:24;27655:257;:::o;27917:334::-;27988:2;27982:9;28044:2;28034:13;;28049:66;28030:86;28018:99;;28147:18;28132:34;;28168:22;;;28129:62;28126:88;;;28194:18;;:::i;:::-;28230:2;28223:22;27917:334;;-1:-1:-1;27917:334:64:o;28256:183::-;28316:4;28349:18;28341:6;28338:30;28335:56;;;28371:18;;:::i;:::-;-1:-1:-1;28416:1:64;28412:14;28428:4;28408:25;;28256:183::o;28444:245::-;28492:4;28525:18;28517:6;28514:30;28511:56;;;28547:18;;:::i;:::-;-1:-1:-1;28604:2:64;28592:15;28609:66;28588:88;28678:4;28584:99;;28444:245::o;28694:253::-;28734:3;28762:34;28823:2;28820:1;28816:10;28853:2;28850:1;28846:10;28884:3;28880:2;28876:12;28871:3;28868:21;28865:47;;;28892:18;;:::i;:::-;28928:13;;28694:253;-1:-1:-1;;;;28694:253:64:o;28952:128::-;28992:3;29023:1;29019:6;29016:1;29013:13;29010:39;;;29029:18;;:::i;:::-;-1:-1:-1;29065:9:64;;28952:128::o;29085:274::-;29125:1;29151;29141:189;;29186:77;29183:1;29176:88;29287:4;29284:1;29277:15;29315:4;29312:1;29305:15;29141:189;-1:-1:-1;29344:9:64;;29085:274::o;29364:228::-;29404:7;29530:1;29462:66;29458:74;29455:1;29452:81;29447:1;29440:9;29433:17;29429:105;29426:131;;;29537:18;;:::i;:::-;-1:-1:-1;29577:9:64;;29364:228::o;29597:246::-;29637:4;29666:34;29750:10;;;;29720;;29772:12;;;29769:38;;;29787:18;;:::i;:::-;29824:13;;29597:246;-1:-1:-1;;;29597:246:64:o;29848:125::-;29888:4;29916:1;29913;29910:8;29907:34;;;29921:18;;:::i;:::-;-1:-1:-1;29958:9:64;;29848:125::o;29978:258::-;30050:1;30060:113;30074:6;30071:1;30068:13;30060:113;;;30150:11;;;30144:18;30131:11;;;30124:39;30096:2;30089:10;30060:113;;;30191:6;30188:1;30185:13;30182:48;;;-1:-1:-1;;30226:1:64;30208:16;;30201:27;29978:258::o;30241:195::-;30280:3;30311:66;30304:5;30301:77;30298:103;;;30381:18;;:::i;:::-;-1:-1:-1;30428:1:64;30417:13;;30241:195::o;30441:184::-;30493:77;30490:1;30483:88;30590:4;30587:1;30580:15;30614:4;30611:1;30604:15;30630:184;30682:77;30679:1;30672:88;30779:4;30776:1;30769:15;30803:4;30800:1;30793:15;30819:184;30871:77;30868:1;30861:88;30968:4;30965:1;30958:15;30992:4;30989:1;30982:15;31008:154;31094:42;31087:5;31083:54;31076:5;31073:65;31063:93;;31152:1;31149;31142:12;31063:93;31008:154;:::o;31167:118::-;31253:5;31246:13;31239:21;31232:5;31229:32;31219:60;;31275:1;31272;31265:12;31290:177;31375:66;31368:5;31364:78;31357:5;31354:89;31344:117;;31457:1;31454;31447:12"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "3119600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "DOMAIN_SEPARATOR()": "infinite",
                "PERMIT_ALL_TYPEHASH()": "284",
                "PERMIT_TYPEHASH()": "263",
                "approve(address,uint256)": "31041",
                "balanceOf(address)": "2547",
                "batch(bytes[])": "infinite",
                "bento()": "infinite",
                "collect(uint256,address,bool)": "infinite",
                "decreaseLiquidity(uint256,uint128,address,bool)": "infinite",
                "getApproved(uint256)": "2544",
                "isApprovedForAll(address,address)": "infinite",
                "masterDeployer()": "infinite",
                "name()": "infinite",
                "nonces(uint256)": "2506",
                "noncesForAll(address)": "2546",
                "ownerOf(uint256)": "2542",
                "permit(address,uint256,uint256,uint8,bytes32,bytes32)": "infinite",
                "permitAll(address,address,uint256,uint8,bytes32,bytes32)": "infinite",
                "positionFees(uint256)": "infinite",
                "positionMintCallback(address,int24,int24,uint128,uint256,uint256,uint256)": "infinite",
                "positions(uint256)": "9123",
                "safeTransferFrom(address,address,uint256)": "infinite",
                "safeTransferFrom(address,address,uint256,bytes)": "infinite",
                "setApprovalForAll(address,bool)": "infinite",
                "supportsInterface(bytes4)": "445",
                "symbol()": "infinite",
                "totalSupply()": "2385",
                "transfer(address,uint256)": "101639",
                "transferFrom(address,address,uint256)": "infinite"
              },
              "internal": {
                "_transfer(address,address,address,uint256,bool)": "infinite"
              }
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "PERMIT_ALL_TYPEHASH()": "b4e13c8d",
              "PERMIT_TYPEHASH()": "30adf81f",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "batch(bytes[])": "1e897afb",
              "bento()": "4da31827",
              "collect(uint256,address,bool)": "8c6ab013",
              "decreaseLiquidity(uint256,uint128,address,bool)": "f745f815",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "masterDeployer()": "cf58879a",
              "name()": "06fdde03",
              "nonces(uint256)": "141a468c",
              "noncesForAll(address)": "904dfb8e",
              "ownerOf(uint256)": "6352211e",
              "permit(address,uint256,uint256,uint8,bytes32,bytes32)": "7ac2ff7b",
              "permitAll(address,address,uint256,uint8,bytes32,bytes32)": "aba07847",
              "positionFees(uint256)": "ed7bba9a",
              "positionMintCallback(address,int24,int24,uint128,uint256,uint256,uint256)": "6d59ebe1",
              "positions(uint256)": "99fbab88",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_masterDeployer\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"name\":\"DecreaseLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"name\":\"IncreaseLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"domainSeperator\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_ALL_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"batch\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bento\",\"outputs\":[{\"internalType\":\"contract IBentoBoxMinimal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"unwrapBento\",\"type\":\"bool\"}],\"name\":\"collect\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"token0amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"token1amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"unwrapBento\",\"type\":\"bool\"}],\"name\":\"decreaseLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterDeployer\",\"outputs\":[{\"internalType\":\"contract IMasterDeployer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"noncesForAll\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permitAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"positionFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"token0amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"token1amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_positionId\",\"type\":\"uint256\"}],\"name\":\"positionMintCallback\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"positions\",\"outputs\":[{\"internalType\":\"contract IConcentratedLiquidityPool\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"},{\"internalType\":\"uint32\",\"name\":\"latestAddition\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"supported\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"params\":{\"spender\":\"Address of the party that can pull `tokenId` from 'owner''s account.\",\"tokenId\":\"The Id to approve for `spender`.\"}},\"batch(bytes[])\":{\"details\":\"The `msg.value` should not be trusted for any method callable from this function.\",\"params\":{\"data\":\"ABI-encoded params for each of the calls to make to this contract.\"},\"returns\":{\"results\":\"The results from each of the calls passed in via `data`.\"}},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"deadline\":\"The time at which to expire the signature.\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"spender\":\"The address to be approved.\",\"tokenId\":\"The Id that is approved for `spender`.\",\"v\":\"The recovery byte of the signature.\"}},\"permitAll(address,address,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"deadline\":\"The time at which to expire the signature.\",\"operator\":\"Address of the party that can pull `tokenId`s from 'owner''s account or approve others to do same.\",\"owner\":\"The address to be approved.\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"v\":\"The recovery byte of the signature.\"}},\"safeTransferFrom(address,address,uint256)\":{\"params\":{\"recipient\":\"The address to move `tokenId` to.\",\"tokenId\":\"The Id to move.\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"params\":{\"recipient\":\"The address to move `tokenId` to.\",\"tokenId\":\"The Id to move.\"}},\"setApprovalForAll(address,bool)\":{\"params\":{\"approved\":\"The approval status of `operator`.\",\"operator\":\"Address of the party that can pull `tokenId`s from 'owner''s account or approve others to do same.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"interfaceId\":\"XOR of all function selectors in the reference interface.\"},\"returns\":{\"supported\":\"Returns 'true' if `interfaceId` is flagged as implemented.\"}},\"transfer(address,uint256)\":{\"params\":{\"recipient\":\"The address to move `tokenId` to.\",\"tokenId\":\"The Id to move.\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"recipient\":\"The address to move `tokenId` to.\",\"tokenId\":\"The Id to move.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"EIP-712 typehash for this contract's domain.\"},\"PERMIT_ALL_TYPEHASH()\":{\"notice\":\"EIP-712 typehash for this contract's {permitAll} struct for {setApprovalForAll}.\"},\"PERMIT_TYPEHASH()\":{\"notice\":\"EIP-712 typehash for this contract's {permit} struct for {approve}.\"},\"approve(address,uint256)\":{\"notice\":\"Approves `tokenId` from `msg.sender` 'owner' or 'operator' to be spent by `spender`.\"},\"balanceOf(address)\":{\"notice\":\"'owner' -> balance mapping.\"},\"batch(bytes[])\":{\"notice\":\"Provides batch function calls for this contract and returns the data from all of them if they all succeed. Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\"},\"getApproved(uint256)\":{\"notice\":\"`tokenId` -> 'spender' mapping.\"},\"isApprovedForAll(address,address)\":{\"notice\":\"'owner' -> 'operator' status mapping.\"},\"nonces(uint256)\":{\"notice\":\"'tokenId' -> `nonce` mapping used in {permit} for {approve}.\"},\"noncesForAll(address)\":{\"notice\":\"'owner' -> `tokenId` mapping used in {permitAll} for {setApprovalForAll}.\"},\"ownerOf(uint256)\":{\"notice\":\"`tokenId` -> 'owner' mapping.\"},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Triggers an approval from 'owner' to `spender` for a given `tokenId`.\"},\"permitAll(address,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Triggers an approval from 'owner' to `operator` that can spend or {approve} spends of 'owner''s `tokenId`s.\"},\"positionFees(uint256)\":{\"notice\":\"Returns the claimable fees and the fee growth accumulators of a given position.\"},\"safeTransferFrom(address,address,uint256)\":{\"notice\":\"Transfers `tokenId` from 'owner' to `recipient` with no data. Caller needs ownership or approval from 'owner', and `recipient` must have compatible {onERC721Received} function.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Transfers `tokenId` from 'owner' to `recipient` with data. Caller needs ownership or approval from 'owner', and `recipient` must have compatible {onERC721Received} function.\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Approves an 'operator' for `msg.sender` 'owner' that can spend or {approve} spends of 'owner''s `tokenId`s.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Provides ERC-165-compatible confirmation for ERC-721 interfaces supported by this contract.\"},\"totalSupply()\":{\"notice\":\"Tracks total liquidity range positions.\"},\"transfer(address,uint256)\":{\"notice\":\"Transfers `tokenId` from 'owner' to `recipient`. Caller needs ownership.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfers `tokenId` from 'owner' to `recipient`. Caller needs ownership or approval from 'owner'.\"}},\"notice\":\"Trident Concentrated Liquidity Pool periphery contract that combines non-fungible position management and staking.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol\":\"ConcentratedLiquidityPoolManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentNFT.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident NFT interface.\\ninterface ITridentNFT {\\n    function ownerOf(uint256) external view returns (address);\\n}\\n\",\"keccak256\":\"0x201d5d09d03fc77feab8fceddd2d4fe9c619ccf048e89dd121b880764e31dd8b\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentRouter.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool router interface.\\ninterface ITridentRouter {\\n    struct Path {\\n        address pool;\\n        bytes data;\\n    }\\n\\n    struct ExactInputSingleParams {\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n        address pool;\\n        address tokenIn;\\n        bytes data;\\n    }\\n\\n    struct ExactInputParams {\\n        address tokenIn;\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n        Path[] path;\\n    }\\n\\n    struct TokenInput {\\n        address token;\\n        bool native;\\n        uint256 amount;\\n    }\\n\\n    struct InitialPath {\\n        address tokenIn;\\n        address pool;\\n        bool native;\\n        uint256 amount;\\n        bytes data;\\n    }\\n\\n    struct PercentagePath {\\n        address tokenIn;\\n        address pool;\\n        uint64 balancePercentage; // Multiplied by 10^6. 100% = 100_000_000\\n        bytes data;\\n    }\\n\\n    struct Output {\\n        address token;\\n        address to;\\n        bool unwrapBento;\\n        uint256 minAmount;\\n    }\\n\\n    struct ComplexPathParams {\\n        InitialPath[] initialPath;\\n        PercentagePath[] percentagePath;\\n        Output[] output;\\n    }\\n}\\n\",\"keccak256\":\"0x40f1af6b213ff8827d515460f9057eb87ddc35d8020501f727d229ea239cbf24\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/concentratedPool/IConcentratedLiquidityPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./../IPool.sol\\\";\\nimport \\\"./../IBentoBoxMinimal.sol\\\";\\nimport \\\"./../IMasterDeployer.sol\\\";\\nimport \\\"../../libraries/concentratedPool/Ticks.sol\\\";\\n\\n/// @notice Trident Concentrated Liquidity Pool interface.\\ninterface IConcentratedLiquidityPool is IPool {\\n    function price() external view returns (uint160);\\n\\n    function token0() external view returns (address);\\n\\n    function token1() external view returns (address);\\n\\n    function ticks(int24 _tick) external view returns (Ticks.Tick memory tick);\\n\\n    function feeGrowthGlobal0() external view returns (uint256);\\n\\n    function feeGrowthGlobal1() external view returns (uint256);\\n\\n    function rangeFeeGrowth(int24 lowerTick, int24 upperTick) external view returns (uint256 feeGrowthInside0, uint256 feeGrowthInside1);\\n\\n    function collect(\\n        int24,\\n        int24,\\n        address,\\n        bool\\n    ) external returns (uint256 amount0fees, uint256 amount1fees);\\n\\n    function decreaseLiquidity(\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        address recipient,\\n        bool unwrapBento\\n    )\\n        external\\n        returns (\\n            TokenAmount[] memory withdrawnAmounts,\\n            TokenAmount[] memory feesWithdrawn,\\n            uint256 oldLiquidity\\n        );\\n\\n    function getImmutables()\\n        external\\n        view\\n        returns (\\n            uint128 _MAX_TICK_LIQUIDITY,\\n            uint24 _tickSpacing,\\n            uint24 _swapFee,\\n            address _barFeeTo,\\n            IBentoBoxMinimal _bento,\\n            IMasterDeployer _masterDeployer,\\n            address _token0,\\n            address _token1\\n        );\\n\\n    function getPriceAndNearestTicks() external view returns (uint160 _price, int24 _nearestTick);\\n\\n    function getTokenProtocolFees() external view returns (uint128 _token0ProtocolFee, uint128 _token1ProtocolFee);\\n\\n    function getReserves() external view returns (uint128 _reserve0, uint128 _reserve1);\\n\\n    function getSecondsGrowthAndLastObservation() external view returns (uint160 _secondGrowthGlobal, uint32 _lastObservation);\\n}\\n\",\"keccak256\":\"0xf36fa12652a134eb2b8bfe1cde732ff493fd8b4afa3c290ccd12bb77f04af277\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/concentratedPool/IConcentratedLiquidityPoolManager.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./IConcentratedLiquidityPool.sol\\\";\\nimport \\\"./../ITridentNFT.sol\\\";\\n\\n/// @notice Trident concentrated liquidity manager contract Struct.\\n/// @dev Split out struct and function declarations due to solidity quirks.\\ninterface IConcentratedLiquidityPoolManagerStruct {\\n    struct Position {\\n        IConcentratedLiquidityPool pool;\\n        uint128 liquidity;\\n        int24 lower;\\n        int24 upper;\\n        uint32 latestAddition;\\n        uint256 feeGrowthInside0; /// @dev Per unit of liquidity.\\n        uint256 feeGrowthInside1;\\n    }\\n}\\n\\n/// @notice Trident concentrated liquidity manager contract interface.\\ninterface IConcentratedLiquidityPoolManager is IConcentratedLiquidityPoolManagerStruct, ITridentNFT {\\n    function positions(uint256) external view returns (Position memory);\\n\\n    function bento() external view returns (IBentoBoxMinimal);\\n}\\n\",\"keccak256\":\"0xaa99eb9fa16344737dbeff84b91e7020823c48a3816ff3fa807806a25af7c67e\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/concentratedPool/IPositionManager.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident concentrated Liquidity pool mint callback receiver.\\ninterface IPositionManager {\\n    function positionMintCallback(\\n        address recipient,\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        uint256 feeGrowthInside0,\\n        uint256 feeGrowthInside1,\\n        uint256 positionId\\n    ) external returns (uint256 _positionId);\\n}\\n\",\"keccak256\":\"0x859ec714a21d5aeae280167b4e03ab84ec33767dca2e7cf8ab89a2c2418f0ec2\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/concentratedPool/DyDxMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./FullMath.sol\\\";\\nimport \\\"./UnsafeMath.sol\\\";\\n\\n/// @notice Math library that facilitates ranged liquidity calculations.\\nlibrary DyDxMath {\\n    function getDy(\\n        uint256 liquidity,\\n        uint256 priceLower,\\n        uint256 priceUpper,\\n        bool roundUp\\n    ) internal pure returns (uint256 dy) {\\n        unchecked {\\n            if (roundUp) {\\n                dy = FullMath.mulDivRoundingUp(liquidity, priceUpper - priceLower, 0x1000000000000000000000000);\\n            } else {\\n                dy = FullMath.mulDiv(liquidity, priceUpper - priceLower, 0x1000000000000000000000000);\\n            }\\n        }\\n    }\\n\\n    function getDx(\\n        uint256 liquidity,\\n        uint256 priceLower,\\n        uint256 priceUpper,\\n        bool roundUp\\n    ) internal pure returns (uint256 dx) {\\n        unchecked {\\n            if (roundUp) {\\n                dx = UnsafeMath.divRoundingUp(FullMath.mulDivRoundingUp(liquidity << 96, priceUpper - priceLower, priceUpper), priceLower);\\n            } else {\\n                dx = FullMath.mulDiv(liquidity << 96, priceUpper - priceLower, priceUpper) / priceLower;\\n            }\\n        }\\n    }\\n\\n    function getLiquidityForAmounts(\\n        uint256 priceLower,\\n        uint256 priceUpper,\\n        uint256 currentPrice,\\n        uint256 dy,\\n        uint256 dx\\n    ) public pure returns (uint256 liquidity) {\\n        unchecked {\\n            if (priceUpper <= currentPrice) {\\n                liquidity = FullMath.mulDiv(dy, 0x1000000000000000000000000, priceUpper - priceLower);\\n            } else if (currentPrice <= priceLower) {\\n                liquidity = FullMath.mulDiv(\\n                    dx,\\n                    FullMath.mulDiv(priceLower, priceUpper, 0x1000000000000000000000000),\\n                    priceUpper - priceLower\\n                );\\n            } else {\\n                uint256 liquidity0 = FullMath.mulDiv(\\n                    dx,\\n                    FullMath.mulDiv(priceUpper, currentPrice, 0x1000000000000000000000000),\\n                    priceUpper - currentPrice\\n                );\\n                uint256 liquidity1 = FullMath.mulDiv(dy, 0x1000000000000000000000000, currentPrice - priceLower);\\n                liquidity = liquidity0 < liquidity1 ? liquidity0 : liquidity1;\\n            }\\n        }\\n    }\\n\\n    function getAmountsForLiquidity(\\n        uint256 priceLower,\\n        uint256 priceUpper,\\n        uint256 currentPrice,\\n        uint256 liquidityAmount,\\n        bool roundUp\\n    ) internal pure returns (uint128 token0amount, uint128 token1amount) {\\n        if (priceUpper <= currentPrice) {\\n            // Only supply `token1` (`token1` is Y).\\n            token1amount = uint128(DyDxMath.getDy(liquidityAmount, priceLower, priceUpper, roundUp));\\n        } else if (currentPrice <= priceLower) {\\n            // Only supply `token0` (`token0` is X).\\n            token0amount = uint128(DyDxMath.getDx(liquidityAmount, priceLower, priceUpper, roundUp));\\n        } else {\\n            // Supply both tokens.\\n            token0amount = uint128(DyDxMath.getDx(liquidityAmount, currentPrice, priceUpper, roundUp));\\n            token1amount = uint128(DyDxMath.getDy(liquidityAmount, priceLower, currentPrice, roundUp));\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xbf29a7f41190849b413935c0f3db4566383f6db68ee771cb13ec85082e583b38\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/concentratedPool/FullMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Math library that facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/FullMath.sol.\\n/// @dev Handles \\\"phantom overflow\\\", i.e., allows multiplication and division where an intermediate value overflows 256 bits.\\nlibrary FullMath {\\n    /// @notice Calculates floor(a\\u00d7b\\u00f7denominator) with full precision - throws if result overflows an uint256 or denominator == 0.\\n    /// @param a The multiplicand.\\n    /// @param b The multiplier.\\n    /// @param denominator The divisor.\\n    /// @return result The 256-bit result.\\n    /// @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv.\\n    function mulDiv(\\n        uint256 a,\\n        uint256 b,\\n        uint256 denominator\\n    ) internal pure returns (uint256 result) {\\n        unchecked {\\n            // 512-bit multiply [prod1 prod0] = a * b.\\n            // Compute the product mod 2**256 and mod 2**256 - 1,\\n            // then use the Chinese Remainder Theorem to reconstruct\\n            // the 512 bit result. The result is stored in two 256\\n            // variables such that product = prod1 * 2**256 + prod0.\\n            uint256 prod0; // Least significant 256 bits of the product.\\n            uint256 prod1; // Most significant 256 bits of the product.\\n            assembly {\\n                let mm := mulmod(a, b, not(0))\\n                prod0 := mul(a, b)\\n                prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n            }\\n            // Handle non-overflow cases, 256 by 256 division.\\n            if (prod1 == 0) {\\n                require(denominator > 0);\\n                assembly {\\n                    result := div(prod0, denominator)\\n                }\\n                return result;\\n            }\\n            // Make sure the result is less than 2**256 -\\n            // also prevents denominator == 0.\\n            require(denominator > prod1);\\n            ///////////////////////////////////////////////\\n            // 512 by 256 division.\\n            ///////////////////////////////////////////////\\n            // Make division exact by subtracting the remainder from [prod1 prod0] -\\n            // compute remainder using mulmod.\\n            uint256 remainder;\\n            assembly {\\n                remainder := mulmod(a, b, denominator)\\n            }\\n            // Subtract 256 bit number from 512 bit number.\\n            assembly {\\n                prod1 := sub(prod1, gt(remainder, prod0))\\n                prod0 := sub(prod0, remainder)\\n            }\\n            // Factor powers of two out of denominator -\\n            // compute largest power of two divisor of denominator\\n            // (always >= 1).\\n            uint256 twos = uint256(-int256(denominator)) & denominator;\\n            // Divide denominator by power of two.\\n            assembly {\\n                denominator := div(denominator, twos)\\n            }\\n            // Divide [prod1 prod0] by the factors of two.\\n            assembly {\\n                prod0 := div(prod0, twos)\\n            }\\n            // Shift in bits from prod1 into prod0. For this we need\\n            // to flip `twos` such that it is 2**256 / twos -\\n            // if twos is zero, then it becomes one.\\n            assembly {\\n                twos := add(div(sub(0, twos), twos), 1)\\n            }\\n            prod0 |= prod1 * twos;\\n            // Invert denominator mod 2**256 -\\n            // now that denominator is an odd number, it has an inverse\\n            // modulo 2**256 such that denominator * inv = 1 mod 2**256.\\n            // Compute the inverse by starting with a seed that is correct\\n            // for four bits. That is, denominator * inv = 1 mod 2**4.\\n            uint256 inv = (3 * denominator) ^ 2;\\n            // Now use Newton-Raphson iteration to improve the precision.\\n            // Thanks to Hensel's lifting lemma, this also works in modular\\n            // arithmetic, doubling the correct bits in each step.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**8.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**16.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**32.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**64.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**128.\\n            inv *= 2 - denominator * inv; // Inverse mod 2**256.\\n            // Because the division is now exact we can divide by multiplying\\n            // with the modular inverse of denominator. This will give us the\\n            // correct result modulo 2**256. Since the precoditions guarantee\\n            // that the outcome is less than 2**256, this is the final result.\\n            // We don't need to compute the high bits of the result and prod1\\n            // is no longer required.\\n            result = prod0 * inv;\\n            return result;\\n        }\\n    }\\n\\n    /// @notice Calculates ceil(a\\u00d7b\\u00f7denominator) with full precision - throws if result overflows an uint256 or denominator == 0.\\n    /// @param a The multiplicand.\\n    /// @param b The multiplier.\\n    /// @param denominator The divisor.\\n    /// @return result The 256-bit result.\\n    function mulDivRoundingUp(\\n        uint256 a,\\n        uint256 b,\\n        uint256 denominator\\n    ) internal pure returns (uint256 result) {\\n        result = mulDiv(a, b, denominator);\\n        unchecked {\\n            if (mulmod(a, b, denominator) != 0) {\\n                require(result < type(uint256).max);\\n                result++;\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x8211b004be6ff6be30b81fe484544d00c7bb467a4fd2a0d6c60114353e2300cf\",\"license\":\"MIT\"},\"contracts/libraries/concentratedPool/TickMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Math library for computing sqrt price for ticks of size 1.0001, i.e., sqrt(1.0001^tick) as fixed point Q64.96 numbers - supports\\n/// prices between 2**-128 and 2**128 - 1.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/TickMath.sol.\\nlibrary TickMath {\\n    /// @dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128.\\n    int24 internal constant MIN_TICK = -887272;\\n    /// @dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128 - 1.\\n    int24 internal constant MAX_TICK = -MIN_TICK;\\n    /// @dev The minimum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MIN_TICK).\\n    uint160 internal constant MIN_SQRT_RATIO = 4295128739;\\n    /// @dev The maximum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MAX_TICK).\\n    uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;\\n\\n    error TickOutOfBounds();\\n    error PriceOutOfBounds();\\n\\n    /// @notice Calculates sqrt(1.0001^tick) * 2^96.\\n    /// @dev Throws if |tick| > max tick.\\n    /// @param tick The input tick for the above formula.\\n    /// @return sqrtPriceX96 Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\\n    /// at the given tick.\\n    function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {\\n        uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));\\n        if (absTick > uint256(uint24(MAX_TICK))) revert TickOutOfBounds();\\n        unchecked {\\n            uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;\\n            if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;\\n            if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;\\n            if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;\\n            if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;\\n            if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;\\n            if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;\\n            if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;\\n            if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;\\n            if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;\\n            if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;\\n            if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;\\n            if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;\\n            if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;\\n            if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;\\n            if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;\\n            if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;\\n            if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;\\n            if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;\\n            if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;\\n\\n            if (tick > 0) ratio = type(uint256).max / ratio;\\n            // This divides by 1<<32 rounding up to go from a Q128.128 to a Q128.96.\\n            // We then downcast because we know the result always fits within 160 bits due to our tick input constraint.\\n            // We round up in the division so getTickAtSqrtRatio of the output price is always consistent.\\n            sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));\\n        }\\n    }\\n\\n    /// @notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio.\\n    /// @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\\n    /// ever return.\\n    /// @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96.\\n    /// @return tick The greatest tick for which the ratio is less than or equal to the input ratio.\\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {\\n        // Second inequality must be < because the price can never reach the price at the max tick.\\n        if (sqrtPriceX96 < MIN_SQRT_RATIO || sqrtPriceX96 >= MAX_SQRT_RATIO) revert PriceOutOfBounds();\\n        uint256 ratio = uint256(sqrtPriceX96) << 32;\\n\\n        uint256 r = ratio;\\n        uint256 msb;\\n\\n        assembly {\\n            let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(5, gt(r, 0xFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(4, gt(r, 0xFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(3, gt(r, 0xFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(2, gt(r, 0xF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(1, gt(r, 0x3))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := gt(r, 0x1)\\n            msb := or(msb, f)\\n        }\\n        unchecked {\\n            if (msb >= 128) r = ratio >> (msb - 127);\\n            else r = ratio << (127 - msb);\\n\\n            int256 log_2 = (int256(msb) - 128) << 64;\\n\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(63, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(62, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(61, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(60, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(59, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(58, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(57, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(56, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(55, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(54, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(53, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(52, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(51, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(50, f))\\n            }\\n\\n            int256 log_sqrt10001 = log_2 * 255738958999603826347141; // 128.128 number.\\n\\n            int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);\\n            int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);\\n\\n            tick = tickLow == tickHi ? tickLow : getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x78121358a23f8c7f267cc4622b3cd0d94970018c637c61a9f2e99a0fa40b7bda\",\"license\":\"GPL-2.0-or-later\"},\"contracts/libraries/concentratedPool/Ticks.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./TickMath.sol\\\";\\nimport \\\"hardhat/console.sol\\\";\\n\\n/// @notice Tick management library for ranged liquidity.\\nlibrary Ticks {\\n    struct Tick {\\n        int24 previousTick;\\n        int24 nextTick;\\n        uint128 liquidity;\\n        uint256 feeGrowthOutside0; // Per unit of liquidity.\\n        uint256 feeGrowthOutside1;\\n        uint160 secondsGrowthOutside;\\n    }\\n\\n    function getMaxLiquidity(uint24 _tickSpacing) public pure returns (uint128) {\\n        return type(uint128).max / uint128(uint24(TickMath.MAX_TICK) / (2 * uint24(_tickSpacing)));\\n    }\\n\\n    function cross(\\n        mapping(int24 => Tick) storage ticks,\\n        int24 nextTickToCross,\\n        uint160 secondsGrowthGlobal,\\n        uint256 currentLiquidity,\\n        uint256 feeGrowthGlobalA,\\n        uint256 feeGrowthGlobalB,\\n        bool zeroForOne,\\n        uint24 tickSpacing\\n    ) internal returns (uint256, int24) {\\n        ticks[nextTickToCross].secondsGrowthOutside = secondsGrowthGlobal - ticks[nextTickToCross].secondsGrowthOutside;\\n\\n        if (zeroForOne) {\\n            // Moving forward through the linked list.\\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\\n                currentLiquidity -= ticks[nextTickToCross].liquidity; // todo wrap in unchecked {}\\n            } else {\\n                currentLiquidity += ticks[nextTickToCross].liquidity;\\n            }\\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside0;\\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside1;\\n            nextTickToCross = ticks[nextTickToCross].previousTick;\\n        } else {\\n            // Moving backwards through the linked list.\\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\\n                currentLiquidity += ticks[nextTickToCross].liquidity;\\n            } else {\\n                currentLiquidity -= ticks[nextTickToCross].liquidity;\\n            }\\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside1;\\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside0;\\n            nextTickToCross = ticks[nextTickToCross].nextTick;\\n        }\\n        return (currentLiquidity, nextTickToCross);\\n    }\\n\\n    function insert(\\n        mapping(int24 => Tick) storage ticks,\\n        uint256 feeGrowthGlobal0,\\n        uint256 feeGrowthGlobal1,\\n        uint160 secondsGrowthGlobal,\\n        int24 lowerOld,\\n        int24 lower,\\n        int24 upperOld,\\n        int24 upper,\\n        uint128 amount,\\n        int24 nearestTick,\\n        uint160 currentPrice\\n    ) public returns (int24) {\\n        require(lower < upper, \\\"WRONG_ORDER\\\");\\n        require(TickMath.MIN_TICK <= lower, \\\"LOWER_RANGE\\\");\\n        require(upper <= TickMath.MAX_TICK, \\\"UPPER_RANGE\\\");\\n\\n        {\\n            // Stack overflow.\\n            uint128 currentLowerLiquidity = ticks[lower].liquidity;\\n            if (currentLowerLiquidity != 0 || lower == TickMath.MIN_TICK) {\\n                // We are adding liquidity to an existing tick.\\n                ticks[lower].liquidity = currentLowerLiquidity + amount;\\n            } else {\\n                // We are inserting a new tick.\\n                Ticks.Tick storage old = ticks[lowerOld];\\n                int24 oldNextTick = old.nextTick;\\n\\n                require((old.liquidity != 0 || lowerOld == TickMath.MIN_TICK) && lowerOld < lower && lower < oldNextTick, \\\"LOWER_ORDER\\\");\\n\\n                if (lower <= nearestTick) {\\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\\n                } else {\\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, 0, 0, 0);\\n                }\\n\\n                old.nextTick = lower;\\n                ticks[oldNextTick].previousTick = lower;\\n            }\\n        }\\n\\n        uint128 currentUpperLiquidity = ticks[upper].liquidity;\\n        if (currentUpperLiquidity != 0 || upper == TickMath.MAX_TICK) {\\n            // We are adding liquidity to an existing tick.\\n            ticks[upper].liquidity = currentUpperLiquidity + amount;\\n        } else {\\n            // Inserting a new tick.\\n            Ticks.Tick storage old = ticks[upperOld];\\n            int24 oldNextTick = old.nextTick;\\n\\n            require(old.liquidity != 0 && oldNextTick > upper && upperOld < upper, \\\"UPPER_ORDER\\\");\\n\\n            if (upper <= nearestTick) {\\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\\n            } else {\\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, 0, 0, 0);\\n            }\\n            old.nextTick = upper;\\n            ticks[oldNextTick].previousTick = upper;\\n        }\\n\\n        int24 actualNearestTick = TickMath.getTickAtSqrtRatio(currentPrice);\\n\\n        if (nearestTick < upper && upper <= actualNearestTick) {\\n            nearestTick = upper;\\n        } else if (nearestTick < lower && lower <= actualNearestTick) {\\n            nearestTick = lower;\\n        }\\n\\n        return nearestTick;\\n    }\\n\\n    function remove(\\n        mapping(int24 => Tick) storage ticks,\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        int24 nearestTick\\n    ) public returns (int24) {\\n        Ticks.Tick storage current = ticks[lower];\\n\\n        if (lower != TickMath.MIN_TICK && current.liquidity == amount) {\\n            // Delete lower tick.\\n            Ticks.Tick storage previous = ticks[current.previousTick];\\n            Ticks.Tick storage next = ticks[current.nextTick];\\n\\n            previous.nextTick = current.nextTick;\\n            next.previousTick = current.previousTick;\\n\\n            if (nearestTick == lower) nearestTick = current.previousTick;\\n\\n            delete ticks[lower];\\n        } else {\\n            unchecked {\\n                current.liquidity -= amount;\\n            }\\n        }\\n\\n        current = ticks[upper];\\n\\n        if (upper != TickMath.MAX_TICK && current.liquidity == amount) {\\n            // Delete upper tick.\\n            Ticks.Tick storage previous = ticks[current.previousTick];\\n            Ticks.Tick storage next = ticks[current.nextTick];\\n\\n            previous.nextTick = current.nextTick;\\n            next.previousTick = current.previousTick;\\n\\n            if (nearestTick == upper) nearestTick = current.previousTick;\\n\\n            delete ticks[upper];\\n        } else {\\n            unchecked {\\n                current.liquidity -= amount;\\n            }\\n        }\\n\\n        return nearestTick;\\n    }\\n}\\n\",\"keccak256\":\"0x3c5bb30d7769f72aad064ab482c1237a794fd1e16fc85c444255227cf93b65d2\",\"license\":\"GPL-2.0-or-later\"},\"contracts/libraries/concentratedPool/UnsafeMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.5.0;\\n\\n/// @notice Math library that contains methods that perform common math functions but do not do any overflow or underflow checks.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/UnsafeMath.sol.\\nlibrary UnsafeMath {\\n    /// @notice Returns ceil(x / y).\\n    /// @dev Division by 0 has unspecified behavior, and must be checked externally.\\n    /// @param x The dividend.\\n    /// @param y The divisor.\\n    /// @return z The quotient, ceil(x / y).\\n    function divRoundingUp(uint256 x, uint256 y) internal pure returns (uint256 z) {\\n        assembly {\\n            z := add(div(x, y), gt(mod(x, y), 0))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x7441e71bffbdeb978784685e2a88618190942f1c9b5452574326256d5d0b7039\",\"license\":\"GPL-2.0-or-later\"},\"contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../../interfaces/concentratedPool/IConcentratedLiquidityPoolManager.sol\\\";\\nimport \\\"../../interfaces/concentratedPool/IPositionManager.sol\\\";\\nimport \\\"../../interfaces/IMasterDeployer.sol\\\";\\nimport \\\"../../interfaces/IBentoBoxMinimal.sol\\\";\\nimport \\\"../../interfaces/ITridentRouter.sol\\\";\\nimport \\\"../../libraries/concentratedPool/FullMath.sol\\\";\\nimport \\\"../../libraries/concentratedPool/TickMath.sol\\\";\\nimport \\\"../../libraries/concentratedPool/DyDxMath.sol\\\";\\nimport \\\"../../utils/TridentBatchable.sol\\\";\\nimport \\\"./TridentNFT.sol\\\";\\n\\n/// @notice Trident Concentrated Liquidity Pool periphery contract that combines non-fungible position management and staking.\\ncontract ConcentratedLiquidityPoolManager is IPositionManager, IConcentratedLiquidityPoolManagerStruct, TridentNFT, TridentBatchable {\\n    event IncreaseLiquidity(address indexed pool, address indexed owner, uint256 indexed positionId, uint128 liquidity);\\n    event DecreaseLiquidity(address indexed pool, address indexed owner, uint256 indexed positionId, uint128 liquidity);\\n\\n    IBentoBoxMinimal public immutable bento;\\n    IMasterDeployer public immutable masterDeployer;\\n\\n    mapping(uint256 => Position) public positions;\\n\\n    constructor(address _masterDeployer) {\\n        masterDeployer = IMasterDeployer(_masterDeployer);\\n        IBentoBoxMinimal _bento = IBentoBoxMinimal(IMasterDeployer(_masterDeployer).bento());\\n        _bento.registerProtocol();\\n        bento = _bento;\\n        _mint(address(0));\\n    }\\n\\n    function positionMintCallback(\\n        address recipient,\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        uint256 feeGrowthInside0,\\n        uint256 feeGrowthInside1,\\n        uint256 _positionId\\n    ) external override returns (uint256 positionId) {\\n        require(IMasterDeployer(masterDeployer).pools(msg.sender), \\\"NOT_POOL\\\");\\n\\n        if (_positionId == 0) {\\n            // We mint a new NFT.\\n            positions[totalSupply] = Position({\\n                pool: IConcentratedLiquidityPool(msg.sender),\\n                liquidity: amount,\\n                lower: lower,\\n                upper: upper,\\n                latestAddition: uint32(block.timestamp),\\n                feeGrowthInside0: feeGrowthInside0,\\n                feeGrowthInside1: feeGrowthInside1\\n            });\\n            positionId = totalSupply;\\n            _mint(recipient);\\n            emit IncreaseLiquidity(msg.sender, recipient, positionId, amount);\\n        } else if (amount > 0) {\\n            // We increase liquidity for an existing NFT.\\n            Position storage position = positions[_positionId];\\n            require(_positionId < totalSupply, \\\"INVALID_POSITION\\\");\\n            require(position.lower == lower && position.upper == upper, \\\"RANGE_MIS_MATCH\\\");\\n            require(position.feeGrowthInside0 == feeGrowthInside0 && position.feeGrowthInside1 == feeGrowthInside1, \\\"UNCLAIMED\\\");\\n            position.liquidity += amount;\\n            position.latestAddition = uint32(block.timestamp);\\n            emit IncreaseLiquidity(msg.sender, recipient, positionId, amount);\\n        }\\n    }\\n\\n    function decreaseLiquidity(\\n        uint256 tokenId,\\n        uint128 amount,\\n        address recipient,\\n        bool unwrapBento\\n    ) external {\\n        require(msg.sender == ownerOf[tokenId], \\\"NOT_ID_OWNER\\\");\\n        Position storage position = positions[tokenId];\\n\\n        IPool.TokenAmount[] memory withdrawAmounts;\\n        IPool.TokenAmount[] memory feeAmounts;\\n        uint256 oldLiquidity;\\n\\n        if (amount < position.liquidity) {\\n            (withdrawAmounts, feeAmounts, oldLiquidity) = position.pool.decreaseLiquidity(\\n                position.lower,\\n                position.upper,\\n                amount,\\n                address(this),\\n                false\\n            );\\n\\n            (position.feeGrowthInside0, position.feeGrowthInside1) = position.pool.rangeFeeGrowth(position.lower, position.upper);\\n\\n            position.liquidity -= amount;\\n        } else {\\n            (withdrawAmounts, feeAmounts, oldLiquidity) = position.pool.decreaseLiquidity(\\n                position.lower,\\n                position.upper,\\n                position.liquidity,\\n                address(this),\\n                false\\n            );\\n\\n            delete positions[tokenId];\\n\\n            _burn(tokenId);\\n        }\\n\\n        uint256 token0Amount = withdrawAmounts[0].amount + ((feeAmounts[0].amount * amount) / oldLiquidity);\\n        uint256 token1Amount = withdrawAmounts[1].amount + ((feeAmounts[1].amount * amount) / oldLiquidity);\\n\\n        _transfer(withdrawAmounts[0].token, address(this), recipient, token0Amount, unwrapBento);\\n        _transfer(withdrawAmounts[1].token, address(this), recipient, token1Amount, unwrapBento);\\n\\n        emit DecreaseLiquidity(address(position.pool), msg.sender, tokenId, amount);\\n    }\\n\\n    function collect(\\n        uint256 tokenId,\\n        address recipient,\\n        bool unwrapBento\\n    ) public returns (uint256 token0amount, uint256 token1amount) {\\n        require(msg.sender == ownerOf[tokenId], \\\"NOT_ID_OWNER\\\");\\n        Position storage position = positions[tokenId];\\n\\n        address[] memory tokens = position.pool.getAssets();\\n        address token0 = tokens[0];\\n        address token1 = tokens[1];\\n\\n        (token0amount, token1amount, position.feeGrowthInside0, position.feeGrowthInside1) = positionFees(tokenId);\\n\\n        uint256 balance0 = bento.balanceOf(token0, address(this));\\n        uint256 balance1 = bento.balanceOf(token1, address(this));\\n\\n        if (balance0 < token0amount || balance1 < token1amount) {\\n            (uint256 amount0fees, uint256 amount1fees) = position.pool.collect(position.lower, position.upper, address(this), false);\\n\\n            uint256 newBalance0 = amount0fees + balance0;\\n            uint256 newBalance1 = amount1fees + balance1;\\n\\n            /// @dev Rounding errors due to frequent claiming of other users in the same position may cost us some wei units\\n            if (token0amount > newBalance0) token0amount = newBalance0;\\n            if (token1amount > newBalance1) token1amount = newBalance1;\\n        }\\n\\n        _transfer(token0, address(this), recipient, token0amount, unwrapBento);\\n        _transfer(token1, address(this), recipient, token1amount, unwrapBento);\\n    }\\n\\n    /// @notice Returns the claimable fees and the fee growth accumulators of a given position.\\n    function positionFees(uint256 tokenId)\\n        public\\n        view\\n        returns (\\n            uint256 token0amount,\\n            uint256 token1amount,\\n            uint256 feeGrowthInside0,\\n            uint256 feeGrowthInside1\\n        )\\n    {\\n        Position memory position = positions[tokenId];\\n\\n        (feeGrowthInside0, feeGrowthInside1) = position.pool.rangeFeeGrowth(position.lower, position.upper);\\n\\n        token0amount = FullMath.mulDiv(\\n            feeGrowthInside0 - position.feeGrowthInside0,\\n            position.liquidity,\\n            0x100000000000000000000000000000000\\n        );\\n\\n        token1amount = FullMath.mulDiv(\\n            feeGrowthInside1 - position.feeGrowthInside1,\\n            position.liquidity,\\n            0x100000000000000000000000000000000\\n        );\\n    }\\n\\n    function _transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 shares,\\n        bool unwrapBento\\n    ) internal {\\n        if (unwrapBento) {\\n            bento.withdraw(token, from, to, 0, shares);\\n        } else {\\n            bento.transfer(token, from, to, shares);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x846a533110ed6a8d597c5a0e3e11db02a4c6e56b8a67afc82b4d46f385ccf9dd\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/concentrated/TridentNFT.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident Concentrated Liquidity Pool ERC-721 implementation with ERC-20/EIP-2612-like extensions,\\n// as well as partially, MetaData and Enumerable extensions.\\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc721/ERC721.sol,\\n// License-Identifier: AGPL-3.0-only, and Shoyu, https://github.com/sushiswap/shoyu/blob/master/contracts/base/BaseNFT721.sol,\\n// License-Identifier: MIT.\\nabstract contract TridentNFT {\\n    event Transfer(address indexed sender, address indexed recipient, uint256 indexed tokenId);\\n    event Approval(address indexed owner, address indexed spender, uint256 indexed tokenId);\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    string public constant name = \\\"TridentNFT\\\";\\n    string public constant symbol = \\\"tNFT\\\";\\n    /// @notice Tracks total liquidity range positions.\\n    uint256 public totalSupply;\\n    /// @notice 'owner' -> balance mapping.\\n    mapping(address => uint256) public balanceOf;\\n    /// @notice `tokenId` -> 'owner' mapping.\\n    mapping(uint256 => address) public ownerOf;\\n    /// @notice `tokenId` -> 'spender' mapping.\\n    mapping(uint256 => address) public getApproved;\\n    /// @notice 'owner' -> 'operator' status mapping.\\n    mapping(address => mapping(address => bool)) public isApprovedForAll;\\n\\n    /// @notice EIP-712 typehash for this contract's {permit} struct for {approve}.\\n    bytes32 public constant PERMIT_TYPEHASH = keccak256(\\\"Permit(address spender,uint256 tokenId,uint256 nonce,uint256 deadline)\\\");\\n    /// @notice EIP-712 typehash for this contract's {permitAll} struct for {setApprovalForAll}.\\n    bytes32 public constant PERMIT_ALL_TYPEHASH = keccak256(\\\"Permit(address owner,address spender,uint256 nonce,uint256 deadline)\\\");\\n\\n    /// @notice Chain Id at this contract's deployment.\\n    uint256 internal immutable DOMAIN_SEPARATOR_CHAIN_ID;\\n    /// @notice EIP-712 typehash for this contract's domain at deployment.\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n    /// @notice 'tokenId' -> `nonce` mapping used in {permit} for {approve}.\\n    mapping(uint256 => uint256) public nonces;\\n    /// @notice 'owner' -> `tokenId` mapping used in {permitAll} for {setApprovalForAll}.\\n    mapping(address => uint256) public noncesForAll;\\n\\n    constructor() {\\n        DOMAIN_SEPARATOR_CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _calculateDomainSeparator();\\n    }\\n\\n    function _calculateDomainSeparator() internal view returns (bytes32 domainSeperator) {\\n        domainSeperator = keccak256(\\n            abi.encode(\\n                keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"),\\n                keccak256(bytes(name)),\\n                keccak256(bytes(\\\"1\\\")),\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    /// @notice EIP-712 typehash for this contract's domain.\\n    function DOMAIN_SEPARATOR() public view returns (bytes32 domainSeperator) {\\n        domainSeperator = block.chainid == DOMAIN_SEPARATOR_CHAIN_ID ? _DOMAIN_SEPARATOR : _calculateDomainSeparator();\\n    }\\n\\n    /// @notice Provides ERC-165-compatible confirmation for ERC-721 interfaces supported by this contract.\\n    /// @param interfaceId XOR of all function selectors in the reference interface.\\n    /// @return supported Returns 'true' if `interfaceId` is flagged as implemented.\\n    function supportsInterface(bytes4 interfaceId) external pure returns (bool supported) {\\n        supported = interfaceId == 0x80ac58cd || interfaceId == 0x5b5e139f;\\n    }\\n\\n    /// @notice Approves `tokenId` from `msg.sender` 'owner' or 'operator' to be spent by `spender`.\\n    /// @param spender Address of the party that can pull `tokenId` from 'owner''s account.\\n    /// @param tokenId The Id to approve for `spender`.\\n    function approve(address spender, uint256 tokenId) external {\\n        address owner = ownerOf[tokenId];\\n        require(msg.sender == owner || isApprovedForAll[owner][msg.sender], \\\"NOT_APPROVED\\\");\\n        getApproved[tokenId] = spender;\\n        emit Approval(owner, spender, tokenId);\\n    }\\n\\n    /// @notice Approves an 'operator' for `msg.sender` 'owner' that can spend or {approve} spends of 'owner''s `tokenId`s.\\n    /// @param operator Address of the party that can pull `tokenId`s from 'owner''s account or approve others to do same.\\n    /// @param approved The approval status of `operator`.\\n    function setApprovalForAll(address operator, bool approved) external {\\n        require(operator != address(0), \\\"INVALID_OPERATOR\\\");\\n        isApprovedForAll[msg.sender][operator] = approved;\\n        emit ApprovalForAll(msg.sender, operator, approved);\\n    }\\n\\n    /// @notice Transfers `tokenId` from 'owner' to `recipient`. Caller needs ownership.\\n    /// @param recipient The address to move `tokenId` to.\\n    /// @param tokenId The Id to move.\\n    function transfer(address recipient, uint256 tokenId) external {\\n        require(msg.sender == ownerOf[tokenId], \\\"NOT_OWNER\\\");\\n        _transfer(msg.sender, recipient, tokenId);\\n    }\\n\\n    /// @notice Transfers `tokenId` from 'owner' to `recipient`. Caller needs ownership or approval from 'owner'.\\n    /// @param recipient The address to move `tokenId` to.\\n    /// @param tokenId The Id to move.\\n    function transferFrom(\\n        address,\\n        address recipient,\\n        uint256 tokenId\\n    ) public {\\n        address owner = ownerOf[tokenId];\\n        require(msg.sender == owner || msg.sender == getApproved[tokenId] || isApprovedForAll[owner][msg.sender], \\\"NOT_APPROVED\\\");\\n        _transfer(owner, recipient, tokenId);\\n    }\\n\\n    /// @notice Transfers `tokenId` from 'owner' to `recipient` with no data. Caller needs ownership or approval from 'owner',\\n    /// and `recipient` must have compatible {onERC721Received} function.\\n    /// @param recipient The address to move `tokenId` to.\\n    /// @param tokenId The Id to move.\\n    function safeTransferFrom(\\n        address,\\n        address recipient,\\n        uint256 tokenId\\n    ) external {\\n        safeTransferFrom(address(0), recipient, tokenId, \\\"\\\");\\n    }\\n\\n    /// @notice Transfers `tokenId` from 'owner' to `recipient` with data. Caller needs ownership or approval from 'owner',\\n    /// and `recipient` must have compatible {onERC721Received} function.\\n    /// @param recipient The address to move `tokenId` to.\\n    /// @param tokenId The Id to move.\\n    function safeTransferFrom(\\n        address,\\n        address recipient,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) public {\\n        transferFrom(address(0), recipient, tokenId);\\n        if (recipient.code.length != 0) {\\n            /// @dev `onERC721Received(address,address,uint,bytes)`.\\n            (, bytes memory returned) = recipient.staticcall(abi.encodeWithSelector(0x150b7a02, msg.sender, address(0), tokenId, data));\\n            bytes4 selector = abi.decode(returned, (bytes4));\\n            require(selector == 0x150b7a02, \\\"NOT_ERC721_RECEIVER\\\");\\n        }\\n    }\\n\\n    /// @notice Triggers an approval from 'owner' to `spender` for a given `tokenId`.\\n    /// @param spender The address to be approved.\\n    /// @param tokenId The Id that is approved for `spender`.\\n    /// @param deadline The time at which to expire the signature.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permit(\\n        address spender,\\n        uint256 tokenId,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        require(deadline >= block.timestamp, \\\"PERMIT_DEADLINE_EXPIRED\\\");\\n        address owner = ownerOf[tokenId];\\n        /// @dev This is reasonably safe from overflow - incrementing `nonces` beyond\\n        // 'type(uint256).max' is exceedingly unlikely compared to optimization benefits.\\n        unchecked {\\n            bytes32 digest = keccak256(\\n                abi.encodePacked(\\n                    \\\"\\\\x19\\\\x01\\\",\\n                    DOMAIN_SEPARATOR(),\\n                    keccak256(abi.encode(PERMIT_TYPEHASH, spender, tokenId, nonces[tokenId]++, deadline))\\n                )\\n            );\\n            address recoveredAddress = ecrecover(digest, v, r, s);\\n            require(recoveredAddress != address(0), \\\"INVALID_PERMIT_SIGNATURE\\\");\\n            require(recoveredAddress == owner || isApprovedForAll[owner][recoveredAddress], \\\"INVALID_SIGNER\\\");\\n        }\\n        getApproved[tokenId] = spender;\\n        emit Approval(owner, spender, tokenId);\\n    }\\n\\n    /// @notice Triggers an approval from 'owner' to `operator` that can spend or {approve} spends of 'owner''s `tokenId`s.\\n    /// @param owner The address to be approved.\\n    /// @param operator Address of the party that can pull `tokenId`s from 'owner''s account or approve others to do same.\\n    /// @param deadline The time at which to expire the signature.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitAll(\\n        address owner,\\n        address operator,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        require(deadline >= block.timestamp, \\\"PERMIT_DEADLINE_EXPIRED\\\");\\n        /// @dev This is reasonably safe from overflow - incrementing `nonces` beyond\\n        // 'type(uint256).max' is exceedingly unlikely compared to optimization benefits.\\n        unchecked {\\n            bytes32 digest = keccak256(\\n                abi.encodePacked(\\n                    \\\"\\\\x19\\\\x01\\\",\\n                    DOMAIN_SEPARATOR(),\\n                    keccak256(abi.encode(PERMIT_ALL_TYPEHASH, owner, operator, noncesForAll[owner]++, deadline))\\n                )\\n            );\\n            address recoveredAddress = ecrecover(digest, v, r, s);\\n            require(\\n                (recoveredAddress != address(0) && recoveredAddress == owner) || isApprovedForAll[owner][recoveredAddress],\\n                \\\"INVALID_PERMIT_SIGNATURE\\\"\\n            );\\n        }\\n        isApprovedForAll[owner][operator] = true;\\n        emit ApprovalForAll(owner, operator, true);\\n    }\\n\\n    function _mint(address recipient) internal {\\n        /// @dev This is reasonably safe from overflow - incrementing beyond\\n        // 'type(uint256).max' is exceedingly unlikely compared to optimization benefits.\\n        unchecked {\\n            uint256 tokenId = totalSupply++;\\n            require(ownerOf[tokenId] == address(0), \\\"ALREADY_MINTED\\\");\\n            balanceOf[recipient]++;\\n            ownerOf[tokenId] = recipient;\\n            emit Transfer(address(0), recipient, tokenId);\\n        }\\n    }\\n\\n    function _burn(uint256 tokenId) internal {\\n        // @dev We tranfer the NFT to address(0) rather than burning to keep Total Supply static.\\n        address owner = ownerOf[tokenId];\\n        require(owner != address(0), \\\"NOT_MINTED\\\");\\n        _transfer(owner, address(0), tokenId);\\n    }\\n\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal {\\n        /// @dev This is safe from under/overflow -\\n        // ownership is checked against decrement,\\n        // and sum of all user balances can't reasonably exceed type(uint256).max (see {_mint}).\\n        unchecked {\\n            balanceOf[from]--;\\n            balanceOf[to]++;\\n        }\\n        delete getApproved[tokenId];\\n        ownerOf[tokenId] = to;\\n        emit Transfer(from, to, tokenId);\\n    }\\n}\\n\",\"keccak256\":\"0xa469c58923116c8ab8ba88f0e76f8de22c7d665fdb23a7a234c3762b3311b4ae\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/TridentBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Generic contract exposing the batch call functionality.\\nabstract contract TridentBatchable {\\n    /// @notice Provides batch function calls for this contract and returns the data from all of them if they all succeed.\\n    /// Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\\n    /// @dev The `msg.value` should not be trusted for any method callable from this function.\\n    /// @param data ABI-encoded params for each of the calls to make to this contract.\\n    /// @return results The results from each of the calls passed in via `data`.\\n    function batch(bytes[] calldata data) external payable returns (bytes[] memory results) {\\n        results = new bytes[](data.length);\\n\\n        for (uint256 i = 0; i < data.length; i++) {\\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\\n\\n            if (!success) {\\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577\\n                if (result.length < 68) revert();\\n                assembly {\\n                    result := add(result, 0x04)\\n                }\\n                revert(abi.decode(result, (string)));\\n            }\\n\\n            results[i] = result;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xba62b6a107dfc9673c0fa801b84ef151459cd62169ca88949a597d910d549659\",\"license\":\"GPL-3.0-or-later\"},\"hardhat/console.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >= 0.4.22 <0.9.0;\\n\\nlibrary console {\\n\\taddress constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);\\n\\n\\tfunction _sendLogPayload(bytes memory payload) private view {\\n\\t\\tuint256 payloadLength = payload.length;\\n\\t\\taddress consoleAddress = CONSOLE_ADDRESS;\\n\\t\\tassembly {\\n\\t\\t\\tlet payloadStart := add(payload, 32)\\n\\t\\t\\tlet r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)\\n\\t\\t}\\n\\t}\\n\\n\\tfunction log() internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log()\\\"));\\n\\t}\\n\\n\\tfunction logInt(int p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(int)\\\", p0));\\n\\t}\\n\\n\\tfunction logUint(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction logString(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction logBool(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction logAddress(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes(bytes memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes1(bytes1 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes1)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes2(bytes2 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes2)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes3(bytes3 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes3)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes4(bytes4 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes4)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes5(bytes5 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes5)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes6(bytes6 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes6)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes7(bytes7 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes7)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes8(bytes8 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes8)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes9(bytes9 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes9)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes10(bytes10 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes10)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes11(bytes11 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes11)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes12(bytes12 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes12)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes13(bytes13 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes13)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes14(bytes14 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes14)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes15(bytes15 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes15)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes16(bytes16 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes16)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes17(bytes17 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes17)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes18(bytes18 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes18)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes19(bytes19 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes19)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes20(bytes20 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes20)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes21(bytes21 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes21)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes22(bytes22 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes22)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes23(bytes23 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes23)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes24(bytes24 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes24)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes25(bytes25 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes25)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes26(bytes26 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes26)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes27(bytes27 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes27)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes28(bytes28 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes28)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes29(bytes29 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes29)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes30(bytes30 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes30)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes31(bytes31 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes31)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes32(bytes32 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes32)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction log(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction log(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction log(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n}\\n\",\"keccak256\":\"0x72b6a1d297cd3b033d7c2e4a7e7864934bb767db6453623f1c3082c6534547f4\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 16489,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol:ConcentratedLiquidityPoolManager",
                "label": "totalSupply",
                "offset": 0,
                "slot": "0",
                "type": "t_uint256"
              },
              {
                "astId": 16494,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol:ConcentratedLiquidityPoolManager",
                "label": "balanceOf",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 16499,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol:ConcentratedLiquidityPoolManager",
                "label": "ownerOf",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 16504,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol:ConcentratedLiquidityPoolManager",
                "label": "getApproved",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 16511,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol:ConcentratedLiquidityPoolManager",
                "label": "isApprovedForAll",
                "offset": 0,
                "slot": "4",
                "type": "t_mapping(t_address,t_mapping(t_address,t_bool))"
              },
              {
                "astId": 16534,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol:ConcentratedLiquidityPoolManager",
                "label": "nonces",
                "offset": 0,
                "slot": "5",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 16539,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol:ConcentratedLiquidityPoolManager",
                "label": "noncesForAll",
                "offset": 0,
                "slot": "6",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 14931,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol:ConcentratedLiquidityPoolManager",
                "label": "positions",
                "offset": 0,
                "slot": "7",
                "type": "t_mapping(t_uint256,t_struct(Position)2775_storage)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_contract(IConcentratedLiquidityPool)2753": {
                "encoding": "inplace",
                "label": "contract IConcentratedLiquidityPool",
                "numberOfBytes": "20"
              },
              "t_int24": {
                "encoding": "inplace",
                "label": "int24",
                "numberOfBytes": "3"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_mapping(t_address,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_mapping(t_uint256,t_address)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              },
              "t_mapping(t_uint256,t_struct(Position)2775_storage)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => struct IConcentratedLiquidityPoolManagerStruct.Position)",
                "numberOfBytes": "32",
                "value": "t_struct(Position)2775_storage"
              },
              "t_mapping(t_uint256,t_uint256)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_struct(Position)2775_storage": {
                "encoding": "inplace",
                "label": "struct IConcentratedLiquidityPoolManagerStruct.Position",
                "members": [
                  {
                    "astId": 2761,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol:ConcentratedLiquidityPoolManager",
                    "label": "pool",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_contract(IConcentratedLiquidityPool)2753"
                  },
                  {
                    "astId": 2763,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol:ConcentratedLiquidityPoolManager",
                    "label": "liquidity",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_uint128"
                  },
                  {
                    "astId": 2765,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol:ConcentratedLiquidityPoolManager",
                    "label": "lower",
                    "offset": 16,
                    "slot": "1",
                    "type": "t_int24"
                  },
                  {
                    "astId": 2767,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol:ConcentratedLiquidityPoolManager",
                    "label": "upper",
                    "offset": 19,
                    "slot": "1",
                    "type": "t_int24"
                  },
                  {
                    "astId": 2769,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol:ConcentratedLiquidityPoolManager",
                    "label": "latestAddition",
                    "offset": 22,
                    "slot": "1",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 2771,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol:ConcentratedLiquidityPoolManager",
                    "label": "feeGrowthInside0",
                    "offset": 0,
                    "slot": "2",
                    "type": "t_uint256"
                  },
                  {
                    "astId": 2774,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol:ConcentratedLiquidityPoolManager",
                    "label": "feeGrowthInside1",
                    "offset": 0,
                    "slot": "3",
                    "type": "t_uint256"
                  }
                ],
                "numberOfBytes": "128"
              },
              "t_uint128": {
                "encoding": "inplace",
                "label": "uint128",
                "numberOfBytes": "16"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint32": {
                "encoding": "inplace",
                "label": "uint32",
                "numberOfBytes": "4"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "DOMAIN_SEPARATOR()": {
                "notice": "EIP-712 typehash for this contract's domain."
              },
              "PERMIT_ALL_TYPEHASH()": {
                "notice": "EIP-712 typehash for this contract's {permitAll} struct for {setApprovalForAll}."
              },
              "PERMIT_TYPEHASH()": {
                "notice": "EIP-712 typehash for this contract's {permit} struct for {approve}."
              },
              "approve(address,uint256)": {
                "notice": "Approves `tokenId` from `msg.sender` 'owner' or 'operator' to be spent by `spender`."
              },
              "balanceOf(address)": {
                "notice": "'owner' -> balance mapping."
              },
              "batch(bytes[])": {
                "notice": "Provides batch function calls for this contract and returns the data from all of them if they all succeed. Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later."
              },
              "getApproved(uint256)": {
                "notice": "`tokenId` -> 'spender' mapping."
              },
              "isApprovedForAll(address,address)": {
                "notice": "'owner' -> 'operator' status mapping."
              },
              "nonces(uint256)": {
                "notice": "'tokenId' -> `nonce` mapping used in {permit} for {approve}."
              },
              "noncesForAll(address)": {
                "notice": "'owner' -> `tokenId` mapping used in {permitAll} for {setApprovalForAll}."
              },
              "ownerOf(uint256)": {
                "notice": "`tokenId` -> 'owner' mapping."
              },
              "permit(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Triggers an approval from 'owner' to `spender` for a given `tokenId`."
              },
              "permitAll(address,address,uint256,uint8,bytes32,bytes32)": {
                "notice": "Triggers an approval from 'owner' to `operator` that can spend or {approve} spends of 'owner''s `tokenId`s."
              },
              "positionFees(uint256)": {
                "notice": "Returns the claimable fees and the fee growth accumulators of a given position."
              },
              "safeTransferFrom(address,address,uint256)": {
                "notice": "Transfers `tokenId` from 'owner' to `recipient` with no data. Caller needs ownership or approval from 'owner', and `recipient` must have compatible {onERC721Received} function."
              },
              "safeTransferFrom(address,address,uint256,bytes)": {
                "notice": "Transfers `tokenId` from 'owner' to `recipient` with data. Caller needs ownership or approval from 'owner', and `recipient` must have compatible {onERC721Received} function."
              },
              "setApprovalForAll(address,bool)": {
                "notice": "Approves an 'operator' for `msg.sender` 'owner' that can spend or {approve} spends of 'owner''s `tokenId`s."
              },
              "supportsInterface(bytes4)": {
                "notice": "Provides ERC-165-compatible confirmation for ERC-721 interfaces supported by this contract."
              },
              "totalSupply()": {
                "notice": "Tracks total liquidity range positions."
              },
              "transfer(address,uint256)": {
                "notice": "Transfers `tokenId` from 'owner' to `recipient`. Caller needs ownership."
              },
              "transferFrom(address,address,uint256)": {
                "notice": "Transfers `tokenId` from 'owner' to `recipient`. Caller needs ownership or approval from 'owner'."
              }
            },
            "notice": "Trident Concentrated Liquidity Pool periphery contract that combines non-fungible position management and staking.",
            "version": 1
          }
        }
      },
      "contracts/pool/concentrated/ConcentratedLiquidityPoolStaker.sol": {
        "ConcentratedLiquidityPoolStaker": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IConcentratedLiquidityPoolManager",
                  "name": "_poolManager",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "contract IConcentratedLiquidityPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "incentiveId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "rewardToken",
                  "type": "address"
                }
              ],
              "name": "AddIncentive",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "positionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "incentiveId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint96",
                  "name": "amount",
                  "type": "uint96"
                }
              ],
              "name": "ClaimReward",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "contract IConcentratedLiquidityPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "incentiveId",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "ReclaimIncentive",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "positionId",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "incentiveId",
                  "type": "uint256"
                }
              ],
              "name": "Subscribe",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IConcentratedLiquidityPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "owner",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint32",
                      "name": "startTime",
                      "type": "uint32"
                    },
                    {
                      "internalType": "uint32",
                      "name": "endTime",
                      "type": "uint32"
                    },
                    {
                      "internalType": "uint32",
                      "name": "expiry",
                      "type": "uint32"
                    },
                    {
                      "internalType": "uint160",
                      "name": "secondsClaimed",
                      "type": "uint160"
                    },
                    {
                      "internalType": "uint96",
                      "name": "rewardsUnclaimed",
                      "type": "uint96"
                    }
                  ],
                  "internalType": "struct ConcentratedLiquidityPoolStaker.Incentive",
                  "name": "incentive",
                  "type": "tuple"
                }
              ],
              "name": "addIncentive",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "positionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256[]",
                  "name": "incentiveIds",
                  "type": "uint256[]"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "unwrapBento",
                  "type": "bool"
                }
              ],
              "name": "claimRewards",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "positionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "incentiveId",
                  "type": "uint256"
                }
              ],
              "name": "getReward",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "rewards",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "secondsInside",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IConcentratedLiquidityPool",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "incentiveCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IConcentratedLiquidityPool",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "incentives",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "startTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "endTime",
                  "type": "uint32"
                },
                {
                  "internalType": "uint32",
                  "name": "expiry",
                  "type": "uint32"
                },
                {
                  "internalType": "uint160",
                  "name": "secondsClaimed",
                  "type": "uint160"
                },
                {
                  "internalType": "uint96",
                  "name": "rewardsUnclaimed",
                  "type": "uint96"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolManager",
              "outputs": [
                {
                  "internalType": "contract IConcentratedLiquidityPoolManager",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IConcentratedLiquidityPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "int24",
                  "name": "lowerTick",
                  "type": "int24"
                },
                {
                  "internalType": "int24",
                  "name": "upperTick",
                  "type": "int24"
                }
              ],
              "name": "rangeSecondsInside",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "secondsInside",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "contract IConcentratedLiquidityPool",
                  "name": "pool",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "incentiveId",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "receiver",
                  "type": "address"
                },
                {
                  "internalType": "uint96",
                  "name": "amount",
                  "type": "uint96"
                },
                {
                  "internalType": "bool",
                  "name": "unwrapBento",
                  "type": "bool"
                }
              ],
              "name": "reclaimIncentive",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "stakes",
              "outputs": [
                {
                  "internalType": "uint160",
                  "name": "secondsGrowthInsideLast",
                  "type": "uint160"
                },
                {
                  "internalType": "uint32",
                  "name": "timestamp",
                  "type": "uint32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "positionId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256[]",
                  "name": "incentiveId",
                  "type": "uint256[]"
                }
              ],
              "name": "subscribe",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "rangeSecondsInside(address,int24,int24)": {
                "details": "Calculates the \"seconds per liquidity\" accumulator for a range."
              },
              "reclaimIncentive(address,uint256,address,uint96,bool)": {
                "details": "Withdraws any unclaimed incentive rewards."
              },
              "subscribe(uint256,uint256[])": {
                "details": "Subscribes a non-fungible position token to an incentive."
              }
            },
            "stateVariables": {
              "stakes": {
                "details": "When subscribing to an incentive we take a snapshot of the position secondsGrowth accumulator.positionId to incentiveId to position's secondsGrowth snapshot mapping."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_15695": {
                  "entryPoint": null,
                  "id": 15695,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_contract$_IBentoBoxMinimal_$2253_fromMemory": {
                  "entryPoint": 305,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_contract$_IConcentratedLiquidityPoolManager_$2796_fromMemory": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "validator_revert_contract_IBentoBoxMinimal": {
                  "entryPoint": 344,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:780:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "120:188:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "166:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "175:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "178:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "168:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "168:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "168:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "141:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "150:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "137:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "137:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "162:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "133:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "133:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "130:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "191:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "210:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "204:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "204:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "195:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "272:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_IBentoBoxMinimal",
                                  "nodeType": "YulIdentifier",
                                  "src": "229:42:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "229:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "229:49:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "287:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "297:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "287:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_IBentoBoxMinimal_$2253_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "86:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "97:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "109:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:294:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "436:188:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "482:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "491:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "494:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "484:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "484:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "484:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "457:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "466:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "453:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "453:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "478:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "449:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "449:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "446:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "507:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "526:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "520:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "520:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "511:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "588:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_contract_IBentoBoxMinimal",
                                  "nodeType": "YulIdentifier",
                                  "src": "545:42:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "545:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "545:49:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "603:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "613:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "603:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_IConcentratedLiquidityPoolManager_$2796_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "402:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "413:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "425:6:64",
                            "type": ""
                          }
                        ],
                        "src": "313:311:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "692:86:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "756:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "765:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "768:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "758:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "758:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "758:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "715:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "726:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "741:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "746:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "737:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "737:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "750:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "733:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "733:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "722:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "722:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "712:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "712:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "705:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "705:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "702:70:64"
                            }
                          ]
                        },
                        "name": "validator_revert_contract_IBentoBoxMinimal",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "681:5:64",
                            "type": ""
                          }
                        ],
                        "src": "629:149:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_contract$_IBentoBoxMinimal_$2253_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_contract_IBentoBoxMinimal(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_contract$_IConcentratedLiquidityPoolManager_$2796_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_contract_IBentoBoxMinimal(value)\n        value0 := value\n    }\n    function validator_revert_contract_IBentoBoxMinimal(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60a06040523480156200001157600080fd5b506040516200289f3803806200289f833981016040819052620000349162000131565b600080546001600160a01b0319166001600160a01b038316908117825560408051634da3182760e01b81529051634da3182791600480820192602092909190829003018186803b1580156200008857600080fd5b505afa1580156200009d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c3919062000131565b9050806001600160a01b031663aee4d1b26040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200010157600080fd5b505af115801562000116573d6000803e3d6000fd5b5050505060601b6001600160601b0319166080525062000171565b6000602082840312156200014457600080fd5b8151620001518162000158565b9392505050565b6001600160a01b03811681146200016e57600080fd5b50565b60805160601c6127016200019e6000396000818161020901528181611d440152611e2201526127016000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80638dde6dba11610081578063cc6fa8c91161005b578063cc6fa8c914610373578063dc4c90d314610386578063df674218146103a657600080fd5b80638dde6dba146102a6578063b221e5fd146102b9578063b90bc5191461034b57600080fd5b806355a93140116100b257806355a931401461025057806371fa6b4d14610265578063897217bc1461029357600080fd5b806332e2e213146100ce5780634da3182714610204575b600080fd5b61019a6100dc36600461205b565b6002602081815260009384526040808520909152918352912080546001820154919092015473ffffffffffffffffffffffffffffffffffffffff928316928281169263ffffffff74010000000000000000000000000000000000000000808304821694780100000000000000000000000000000000000000000000000084048316947c0100000000000000000000000000000000000000000000000000000000909404909216928216916bffffffffffffffffffffffff9190041687565b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152968816602088015263ffffffff95861690870152928416606086015292166080840152921660a08201526bffffffffffffffffffffffff90911660c082015260e0015b60405180910390f35b61022b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fb565b61026361025e366004612087565b6103b9565b005b610285610273366004611f11565b60016020526000908152604090205481565b6040519081526020016101fb565b6102636102a1366004612295565b610682565b6102636102b4366004611f79565b610c86565b61031a6102c73660046123ee565b600360209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900463ffffffff1682565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835263ffffffff9091166020830152016101fb565b61035e6103593660046123ee565b6110b3565b604080519283526020830191909152016101fb565b610263610381366004612314565b611374565b60005461022b9073ffffffffffffffffffffffffffffffffffffffff1681565b6102856103b4366004611f2e565b61199e565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260026020908152604080832088845290915290208054909116331461045c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e4552000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001810154427c010000000000000000000000000000000000000000000000000000000090910463ffffffff16106104f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f45585049524544000000000000000000000000000000000000000000000000006044820152606401610453565b60028101546bffffffffffffffffffffffff80851674010000000000000000000000000000000000000000909204161015610587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f414c52454144595f434c41494d454400000000000000000000000000000000006044820152606401610453565b828160020160148282829054906101000a90046bffffffffffffffffffffffff166105b29190612592565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061061f8160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163086866bffffffffffffffffffffffff1686611cdb565b6040516bffffffffffffffffffffffff84168152859073ffffffffffffffffffffffffffffffffffffffff8816907f63156f3c47a8140de33d9354ed09cc696a65d2aae70b3600874fd35b6f082c469060200160405180910390a3505050505050565b6000546040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101859052339173ffffffffffffffffffffffffffffffffffffffff1690636352211e9060240160206040518083038186803b1580156106ec57600080fd5b505afa158015610700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107249190611eed565b73ffffffffffffffffffffffffffffffffffffffff16146107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e455200000000000000000000000000000000000000000000006044820152606401610453565b600080546040517f99fbab880000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff909116906399fbab889060240160e06040518083038186803b15801561080c57600080fd5b505afa158015610820573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084491906120e9565b80516020820151919250906fffffffffffffffffffffffffffffffff166108c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f494e4143544956450000000000000000000000000000000000000000000000006044820152606401610453565b600060405180604001604052806108e7848660400151876060015161199e565b73ffffffffffffffffffffffffffffffffffffffff1681526020014263ffffffff16815250905060005b84811015610c7d5773ffffffffffffffffffffffffffffffffffffffff831660009081526002602052604081208188888581811061095157610951612627565b602090810292909201358352508181019290925260409081016000908120825160e081018452815473ffffffffffffffffffffffffffffffffffffffff908116825260018301548082168388015263ffffffff7401000000000000000000000000000000000000000080830482168589015278010000000000000000000000000000000000000000000000008304821660608601527c010000000000000000000000000000000000000000000000000000000090920416608084015260029093015490811660a08301526bffffffffffffffffffffffff9290049190911660c08201528b825260039093529081209192509081898986818110610a5657610a56612627565b60209081029290920135835250810191909152604001600020805490915073ffffffffffffffffffffffffffffffffffffffff1615610af1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f53554253435249424544000000000000000000000000000000000000000000006044820152606401610453565b816040015163ffffffff164210158015610b145750816060015163ffffffff1642105b610b7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e4143544956455f494e43454e5449564500000000000000000000000000006044820152606401610453565b600089815260036020526040812085918a8a87818110610b9c57610b9c612627565b602090810292909201358352508181019290925260400160002082518154939092015163ffffffff1674010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090931673ffffffffffffffffffffffffffffffffffffffff90921691909117919091179055878784818110610c3457610c34612627565b90506020020135897ff290eae22dead4b3e51c14d97c3ea66eb5c91286a496309828b9c28589d9021560405160405180910390a350508080610c75906125bf565b915050610911565b50505050505050565b6000429050816040015163ffffffff168163ffffffff161115610d05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f414c52454144595f5354415254454400000000000000000000000000000000006044820152606401610453565b816060015163ffffffff16826040015163ffffffff1610610d82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f53544152545f504153545f454e440000000000000000000000000000000000006044820152606401610453565b816080015163ffffffff1682606001516276a700610da091906124e4565b63ffffffff1610610e0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f454e445f504153545f42554646455200000000000000000000000000000000006044820152606401610453565b60c08201516bffffffffffffffffffffffff16610e86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f5f52455741524453000000000000000000000000000000000000000000006044820152606401610453565b600060a0830181905273ffffffffffffffffffffffffffffffffffffffff8416815260026020908152604080832060019092528220805485939182610eca836125bf565b90915550815260208082019290925260409081016000908120845181547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9182161782558585015160018301805495880151606089015160808a01519385167fffffffffffffffff000000000000000000000000000000000000000000000000909816979097177401000000000000000000000000000000000000000063ffffffff92831681029190911777ffffffffffffffffffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000988316989098027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16979097177c0100000000000000000000000000000000000000000000000000000000919093160291909117905560a086015160c09687015191166bffffffffffffffffffffffff9182169094029390931760029091015591850151928501516110539392339230921690611cdb565b60208083015173ffffffffffffffffffffffffffffffffffffffff858116600081815260019094526040808520549051929093169390917f700cf11d666684f2ebcf80048c6e6cb9e51e2a759375dc0f9d3290c6b957a72d9190a4505050565b600080546040517f99fbab88000000000000000000000000000000000000000000000000000000008152600481018590528291829173ffffffffffffffffffffffffffffffffffffffff909116906399fbab889060240160e06040518083038186803b15801561112257600080fd5b505afa158015611136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115a91906120e9565b805173ffffffffffffffffffffffffffffffffffffffff80821660009081526002602081815260408084208c85528252808420815160e0810183528154871681526001820154808816828601527401000000000000000000000000000000000000000080820463ffffffff9081168487015278010000000000000000000000000000000000000000000000008304811660608501527c010000000000000000000000000000000000000000000000000000000090920482166080840152929095015480881660a08301528290046bffffffffffffffffffffffff1660c08201528d8652600384528286208d87528452948290208251808401909352549586168252909404909116908301819052939450919215611369576000816000015173ffffffffffffffffffffffffffffffffffffffff166112a1858760400151886060015161199e565b6112ab919061257b565b905084602001516fffffffffffffffffffffffffffffffff16816112cf919061253e565b95506000836060015163ffffffff1642106112ea57426112f6565b836060015163ffffffff165b905060008460a0015173ffffffffffffffffffffffffffffffffffffffff166080866040015163ffffffff168461132d919061257b565b61133892911b61257b565b905080888660c001516bffffffffffffffffffffffff16611359919061253e565b6113639190612503565b98505050505b505050509250929050565b6000546040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101869052339173ffffffffffffffffffffffffffffffffffffffff1690636352211e9060240160206040518083038186803b1580156113de57600080fd5b505afa1580156113f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114169190611eed565b73ffffffffffffffffffffffffffffffffffffffff1614611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e455200000000000000000000000000000000000000000000006044820152606401610453565b600080546040517f99fbab880000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff909116906399fbab889060240160e06040518083038186803b1580156114fe57600080fd5b505afa158015611512573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153691906120e9565b90506000816000015190506000611556828460400151856060015161199e565b905060005b86518110156119945773ffffffffffffffffffffffffffffffffffffffff83166000908152600260205260408120885182908a908590811061159f5761159f612627565b6020026020010151815260200190815260200160002090506000600360008b815260200190815260200160002060008a85815181106115e0576115e0612627565b602002602001015181526020019081526020016000209050856080015163ffffffff168160000160149054906101000a900463ffffffff1663ffffffff161015611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4d5553545f5245535542534352494245000000000000000000000000000000006044820152606401610453565b8054600090819081906116af9073ffffffffffffffffffffffffffffffffffffffff168861257b565b60018601549091506000907801000000000000000000000000000000000000000000000000900463ffffffff1642106116e85742611710565b60018601547801000000000000000000000000000000000000000000000000900463ffffffff165b6002870154600188015491925060009173ffffffffffffffffffffffffffffffffffffffff909116906080906117649074010000000000000000000000000000000000000000900463ffffffff168561257b565b61176f92911b61257b565b90508a602001516fffffffffffffffffffffffffffffffff1683611793919061253e565b600288015490945081906117ce9086907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1661253e565b6117d89190612503565b86547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b8116919091178855600289018054929750869550935060009250611838918591166124ac565b92506101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818460020160148282829054906101000a90046bffffffffffffffffffffffff166118a19190612592565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506119008460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308c858d611cdb565b8973ffffffffffffffffffffffffffffffffffffffff168b868151811061192957611929612627565b60200260200101518d7f65c447d181b93a7ecbcfb0582911789929f2eaf3dd655041ced82e3f361e34378560405161197591906bffffffffffffffffffffffff91909116815260200190565b60405180910390a450505050808061198c906125bf565b91505061155b565b5050505050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff16638c347f9b6040518163ffffffff1660e01b8152600401604080518083038186803b1580156119e657600080fd5b505afa1580156119fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1e919061222c565b6040517ff30dba93000000000000000000000000000000000000000000000000000000008152600287900b60048201529092506000915073ffffffffffffffffffffffffffffffffffffffff87169063f30dba939060240160c06040518083038186803b158015611a8e57600080fd5b505afa158015611aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac69190612195565b6040517ff30dba93000000000000000000000000000000000000000000000000000000008152600286900b600482015290915060009073ffffffffffffffffffffffffffffffffffffffff88169063f30dba939060240160c06040518083038186803b158015611b3557600080fd5b505afa158015611b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6d9190612195565b905060008773ffffffffffffffffffffffffffffffffffffffff16636d59d8026040518163ffffffff1660e01b8152600401604080518083038186803b158015611bb657600080fd5b505afa158015611bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bee9190612266565b5073ffffffffffffffffffffffffffffffffffffffff1690506000808560020b8960020b13611c39578460a0015173ffffffffffffffffffffffffffffffffffffffff169150611c61565b60a0850151611c5e9073ffffffffffffffffffffffffffffffffffffffff168461257b565b91505b8760020b8660020b1215611c90575060a083015173ffffffffffffffffffffffffffffffffffffffff16611cb8565b60a0840151611cb59073ffffffffffffffffffffffffffffffffffffffff168461257b565b90505b80611cc3838561257b565b611ccd919061257b565b9a9950505050505050505050565b8015611dc6576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301528581166024830152848116604483015260006064830152608482018490527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b158015611d8757600080fd5b505af1158015611d9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbf9190612410565b5050611e7f565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015285811660248301528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401600060405180830381600087803b158015611e6657600080fd5b505af1158015611e7a573d6000803e3d6000fd5b505050505b5050505050565b8035611e9181612685565b919050565b80358015158114611e9157600080fd5b80516fffffffffffffffffffffffffffffffff81168114611e9157600080fd5b8035611e91816126b9565b80356bffffffffffffffffffffffff81168114611e9157600080fd5b600060208284031215611eff57600080fd5b8151611f0a81612685565b9392505050565b600060208284031215611f2357600080fd5b8135611f0a81612685565b600080600060608486031215611f4357600080fd5b8335611f4e81612685565b92506020840135611f5e816126aa565b91506040840135611f6e816126aa565b809150509250925092565b600080828403610100811215611f8e57600080fd5b8335611f9981612685565b925060e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215611fcb57600080fd5b50611fd4612434565b6020840135611fe281612685565b81526040840135611ff281612685565b60208201526060840135612005816126b9565b60408201526080840135612018816126b9565b606082015261202960a08501611ec6565b608082015261203a60c08501611e86565b60a082015261204b60e08501611ed1565b60c0820152809150509250929050565b6000806040838503121561206e57600080fd5b823561207981612685565b946020939093013593505050565b600080600080600060a0868803121561209f57600080fd5b85356120aa81612685565b94506020860135935060408601356120c181612685565b92506120cf60608701611ed1565b91506120dd60808701611e96565b90509295509295909350565b600060e082840312156120fb57600080fd5b60405160e0810181811067ffffffffffffffff8211171561211e5761211e612656565b604052825161212c81612685565b815261213a60208401611ea6565b6020820152604083015161214d816126aa565b60408201526060830151612160816126aa565b60608201526080830151612173816126b9565b608082015260a0838101519082015260c0928301519281019290925250919050565b600060c082840312156121a757600080fd5b60405160c0810181811067ffffffffffffffff821117156121ca576121ca612656565b60405282516121d8816126aa565b815260208301516121e8816126aa565b60208201526121f960408401611ea6565b6040820152606083015160608201526080830151608082015260a083015161222081612685565b60a08201529392505050565b6000806040838503121561223f57600080fd5b825161224a81612685565b602084015190925061225b816126aa565b809150509250929050565b6000806040838503121561227957600080fd5b825161228481612685565b602084015190925061225b816126b9565b6000806000604084860312156122aa57600080fd5b83359250602084013567ffffffffffffffff808211156122c957600080fd5b818601915086601f8301126122dd57600080fd5b8135818111156122ec57600080fd5b8760208260051b850101111561230157600080fd5b6020830194508093505050509250925092565b6000806000806080858703121561232a57600080fd5b8435935060208086013567ffffffffffffffff8082111561234a57600080fd5b818801915088601f83011261235e57600080fd5b81358181111561237057612370612656565b8060051b915061238184830161245d565b8181528481019084860184860187018d101561239c57600080fd5b600095505b838610156123bf5780358352600195909501949186019186016123a1565b508098505050505050506123d560408601611e86565b91506123e360608601611e96565b905092959194509250565b6000806040838503121561240157600080fd5b50508035926020909101359150565b6000806040838503121561242357600080fd5b505080516020909101519092909150565b60405160e0810167ffffffffffffffff8111828210171561245757612457612656565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156124a4576124a4612656565b604052919050565b600073ffffffffffffffffffffffffffffffffffffffff8083168185168083038211156124db576124db6125f8565b01949350505050565b600063ffffffff8083168185168083038211156124db576124db6125f8565b600082612539577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612576576125766125f8565b500290565b60008282101561258d5761258d6125f8565b500390565b60006bffffffffffffffffffffffff838116908316818110156125b7576125b76125f8565b039392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156125f1576125f16125f8565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146126a757600080fd5b50565b8060020b81146126a757600080fd5b63ffffffff811681146126a757600080fdfea26469706673582212203d0b55a201ae4207febb672e778592e8cf0cb0bc95e317e31e26e1a491e9e2fd64736f6c63430008070033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x289F CODESIZE SUB DUP1 PUSH3 0x289F DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x131 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x4DA31827 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH4 0x4DA31827 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x9D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0xC3 SWAP2 SWAP1 PUSH3 0x131 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAEE4D1B2 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x101 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x116 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE POP PUSH3 0x171 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x144 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x151 DUP2 PUSH3 0x158 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x16E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0x2701 PUSH3 0x19E PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x209 ADD MSTORE DUP2 DUP2 PUSH2 0x1D44 ADD MSTORE PUSH2 0x1E22 ADD MSTORE PUSH2 0x2701 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DDE6DBA GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xCC6FA8C9 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xCC6FA8C9 EQ PUSH2 0x373 JUMPI DUP1 PUSH4 0xDC4C90D3 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0xDF674218 EQ PUSH2 0x3A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8DDE6DBA EQ PUSH2 0x2A6 JUMPI DUP1 PUSH4 0xB221E5FD EQ PUSH2 0x2B9 JUMPI DUP1 PUSH4 0xB90BC519 EQ PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x55A93140 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x55A93140 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0x71FA6B4D EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0x897217BC EQ PUSH2 0x293 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x32E2E213 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x204 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0x205B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 SWAP1 SWAP2 MSTORE SWAP2 DUP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD SWAP2 SWAP1 SWAP3 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP3 DUP3 DUP2 AND SWAP3 PUSH4 0xFFFFFFFF PUSH21 0x10000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND SWAP5 PUSH25 0x1000000000000000000000000000000000000000000000000 DUP5 DIV DUP4 AND SWAP5 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP5 DIV SWAP1 SWAP3 AND SWAP3 DUP3 AND SWAP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 DIV AND DUP8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP9 DUP10 AND DUP2 MSTORE SWAP7 DUP9 AND PUSH1 0x20 DUP9 ADD MSTORE PUSH4 0xFFFFFFFF SWAP6 DUP7 AND SWAP1 DUP8 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x60 DUP7 ADD MSTORE SWAP3 AND PUSH1 0x80 DUP5 ADD MSTORE SWAP3 AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x22B PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FB JUMP JUMPDEST PUSH2 0x263 PUSH2 0x25E CALLDATASIZE PUSH1 0x4 PUSH2 0x2087 JUMP JUMPDEST PUSH2 0x3B9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x285 PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F11 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FB JUMP JUMPDEST PUSH2 0x263 PUSH2 0x2A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2295 JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST PUSH2 0x263 PUSH2 0x2B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F79 JUMP JUMPDEST PUSH2 0xC86 JUMP JUMPDEST PUSH2 0x31A PUSH2 0x2C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x23EE JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1FB JUMP JUMPDEST PUSH2 0x35E PUSH2 0x359 CALLDATASIZE PUSH1 0x4 PUSH2 0x23EE JUMP JUMPDEST PUSH2 0x10B3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x1FB JUMP JUMPDEST PUSH2 0x263 PUSH2 0x381 CALLDATASIZE PUSH1 0x4 PUSH2 0x2314 JUMP JUMPDEST PUSH2 0x1374 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x22B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x285 PUSH2 0x3B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F2E JUMP JUMPDEST PUSH2 0x199E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 AND CALLER EQ PUSH2 0x45C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4F574E45520000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD TIMESTAMP PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND LT PUSH2 0x4F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4558504952454400000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV AND LT ISZERO PUSH2 0x587 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x414C52454144595F434C41494D45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST DUP3 DUP2 PUSH1 0x2 ADD PUSH1 0x14 DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5B2 SWAP2 SWAP1 PUSH2 0x2592 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x61F DUP2 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS DUP7 DUP7 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH2 0x1CDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE DUP6 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH32 0x63156F3C47A8140DE33D9354ED09CC696A65D2AAE70B3600874FD35B6F082C46 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x6352211E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE CALLER SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x700 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x724 SWAP2 SWAP1 PUSH2 0x1EED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4F574E45520000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x99FBAB8800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x99FBAB88 SWAP1 PUSH1 0x24 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x80C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x820 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x844 SWAP2 SWAP1 PUSH2 0x20E9 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD SWAP2 SWAP3 POP SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8C7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E414354495645000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x8E7 DUP5 DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x199E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xC7D JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x951 JUMPI PUSH2 0x951 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP3 SWAP1 SWAP3 ADD CALLDATALOAD DUP4 MSTORE POP DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP3 MLOAD PUSH1 0xE0 DUP2 ADD DUP5 MSTORE DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD DUP1 DUP3 AND DUP4 DUP9 ADD MSTORE PUSH4 0xFFFFFFFF PUSH21 0x10000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND DUP6 DUP10 ADD MSTORE PUSH25 0x1000000000000000000000000000000000000000000000000 DUP4 DIV DUP3 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 DIV AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x2 SWAP1 SWAP4 ADD SLOAD SWAP1 DUP2 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 DIV SWAP2 SWAP1 SWAP2 AND PUSH1 0xC0 DUP3 ADD MSTORE DUP12 DUP3 MSTORE PUSH1 0x3 SWAP1 SWAP4 MSTORE SWAP1 DUP2 KECCAK256 SWAP2 SWAP3 POP SWAP1 DUP2 DUP10 DUP10 DUP7 DUP2 DUP2 LT PUSH2 0xA56 JUMPI PUSH2 0xA56 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP3 SWAP1 SWAP3 ADD CALLDATALOAD DUP4 MSTORE POP DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0xAF1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5355425343524942454400000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST DUP2 PUSH1 0x40 ADD MLOAD PUSH4 0xFFFFFFFF AND TIMESTAMP LT ISZERO DUP1 ISZERO PUSH2 0xB14 JUMPI POP DUP2 PUSH1 0x60 ADD MLOAD PUSH4 0xFFFFFFFF AND TIMESTAMP LT JUMPDEST PUSH2 0xB7A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E4143544956455F494E43454E544956450000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP6 SWAP2 DUP11 DUP11 DUP8 DUP2 DUP2 LT PUSH2 0xB9C JUMPI PUSH2 0xB9C PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP3 SWAP1 SWAP3 ADD CALLDATALOAD DUP4 MSTORE POP DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 SWAP1 SWAP3 ADD MLOAD PUSH4 0xFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0xC34 JUMPI PUSH2 0xC34 PUSH2 0x2627 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP10 PUSH32 0xF290EAE22DEAD4B3E51C14D97C3EA66EB5C91286A496309828B9C28589D90215 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP DUP1 DUP1 PUSH2 0xC75 SWAP1 PUSH2 0x25BF JUMP JUMPDEST SWAP2 POP POP PUSH2 0x911 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 TIMESTAMP SWAP1 POP DUP2 PUSH1 0x40 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0xD05 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x414C52454144595F535441525445440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST DUP2 PUSH1 0x60 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x40 ADD MLOAD PUSH4 0xFFFFFFFF AND LT PUSH2 0xD82 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53544152545F504153545F454E44000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST DUP2 PUSH1 0x80 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x60 ADD MLOAD PUSH3 0x76A700 PUSH2 0xDA0 SWAP2 SWAP1 PUSH2 0x24E4 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND LT PUSH2 0xE0D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x454E445F504153545F4255464645520000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xE86 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F5F5245574152445300000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP4 SWAP2 DUP3 PUSH2 0xECA DUP4 PUSH2 0x25BF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP5 MLOAD DUP2 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND OR DUP3 SSTORE DUP6 DUP6 ADD MLOAD PUSH1 0x1 DUP4 ADD DUP1 SLOAD SWAP6 DUP9 ADD MLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x80 DUP11 ADD MLOAD SWAP4 DUP6 AND PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 SWAP1 SWAP9 AND SWAP8 SWAP1 SWAP8 OR PUSH21 0x10000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH25 0x1000000000000000000000000000000000000000000000000 SWAP9 DUP4 AND SWAP9 SWAP1 SWAP9 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP8 SWAP1 SWAP8 OR PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP2 SWAP1 SWAP4 AND MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 SWAP7 DUP8 ADD MLOAD SWAP2 AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE SWAP2 DUP6 ADD MLOAD SWAP3 DUP6 ADD MLOAD PUSH2 0x1053 SWAP4 SWAP3 CALLER SWAP3 ADDRESS SWAP3 AND SWAP1 PUSH2 0x1CDB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 SLOAD SWAP1 MLOAD SWAP3 SWAP1 SWAP4 AND SWAP4 SWAP1 SWAP2 PUSH32 0x700CF11D666684F2EBCF80048C6E6CB9E51E2A759375DC0F9D3290C6B957A72D SWAP2 SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x99FBAB8800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE DUP3 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x99FBAB88 SWAP1 PUSH1 0x24 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1136 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x115A SWAP2 SWAP1 PUSH2 0x20E9 JUMP JUMPDEST DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP13 DUP6 MSTORE DUP3 MSTORE DUP1 DUP5 KECCAK256 DUP2 MLOAD PUSH1 0xE0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP8 AND DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD DUP1 DUP9 AND DUP3 DUP7 ADD MSTORE PUSH21 0x10000000000000000000000000000000000000000 DUP1 DUP3 DIV PUSH4 0xFFFFFFFF SWAP1 DUP2 AND DUP5 DUP8 ADD MSTORE PUSH25 0x1000000000000000000000000000000000000000000000000 DUP4 DIV DUP2 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 DIV DUP3 AND PUSH1 0x80 DUP5 ADD MSTORE SWAP3 SWAP1 SWAP6 ADD SLOAD DUP1 DUP9 AND PUSH1 0xA0 DUP4 ADD MSTORE DUP3 SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xC0 DUP3 ADD MSTORE DUP14 DUP7 MSTORE PUSH1 0x3 DUP5 MSTORE DUP3 DUP7 KECCAK256 DUP14 DUP8 MSTORE DUP5 MSTORE SWAP5 DUP3 SWAP1 KECCAK256 DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE SLOAD SWAP6 DUP7 AND DUP3 MSTORE SWAP1 SWAP5 DIV SWAP1 SWAP2 AND SWAP1 DUP4 ADD DUP2 SWAP1 MSTORE SWAP4 SWAP5 POP SWAP2 SWAP3 ISZERO PUSH2 0x1369 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x12A1 DUP6 DUP8 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD PUSH2 0x199E JUMP JUMPDEST PUSH2 0x12AB SWAP2 SWAP1 PUSH2 0x257B JUMP JUMPDEST SWAP1 POP DUP5 PUSH1 0x20 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH2 0x12CF SWAP2 SWAP1 PUSH2 0x253E JUMP JUMPDEST SWAP6 POP PUSH1 0x0 DUP4 PUSH1 0x60 ADD MLOAD PUSH4 0xFFFFFFFF AND TIMESTAMP LT PUSH2 0x12EA JUMPI TIMESTAMP PUSH2 0x12F6 JUMP JUMPDEST DUP4 PUSH1 0x60 ADD MLOAD PUSH4 0xFFFFFFFF AND JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0xA0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP7 PUSH1 0x40 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP5 PUSH2 0x132D SWAP2 SWAP1 PUSH2 0x257B JUMP JUMPDEST PUSH2 0x1338 SWAP3 SWAP2 SHL PUSH2 0x257B JUMP JUMPDEST SWAP1 POP DUP1 DUP9 DUP7 PUSH1 0xC0 ADD MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1359 SWAP2 SWAP1 PUSH2 0x253E JUMP JUMPDEST PUSH2 0x1363 SWAP2 SWAP1 PUSH2 0x2503 JUMP JUMPDEST SWAP9 POP POP POP POP JUMPDEST POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x6352211E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE CALLER SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13F2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1416 SWAP2 SWAP1 PUSH2 0x1EED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1493 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4F574E45520000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x99FBAB8800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x99FBAB88 SWAP1 PUSH1 0x24 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1512 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1536 SWAP2 SWAP1 PUSH2 0x20E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1556 DUP3 DUP5 PUSH1 0x40 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD PUSH2 0x199E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x1994 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP9 MLOAD DUP3 SWAP1 DUP11 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x159F JUMPI PUSH2 0x159F PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x15E0 JUMPI PUSH2 0x15E0 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP6 PUSH1 0x80 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP2 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF AND LT ISZERO PUSH2 0x1686 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D5553545F524553554253435249424500000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 SWAP1 PUSH2 0x16AF SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH2 0x257B JUMP JUMPDEST PUSH1 0x1 DUP7 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH25 0x1000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND TIMESTAMP LT PUSH2 0x16E8 JUMPI TIMESTAMP PUSH2 0x1710 JUMP JUMPDEST PUSH1 0x1 DUP7 ADD SLOAD PUSH25 0x1000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND JUMPDEST PUSH1 0x2 DUP8 ADD SLOAD PUSH1 0x1 DUP9 ADD SLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 SWAP1 PUSH2 0x1764 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP6 PUSH2 0x257B JUMP JUMPDEST PUSH2 0x176F SWAP3 SWAP2 SHL PUSH2 0x257B JUMP JUMPDEST SWAP1 POP DUP11 PUSH1 0x20 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH2 0x1793 SWAP2 SWAP1 PUSH2 0x253E JUMP JUMPDEST PUSH1 0x2 DUP9 ADD SLOAD SWAP1 SWAP5 POP DUP2 SWAP1 PUSH2 0x17CE SWAP1 DUP7 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x253E JUMP JUMPDEST PUSH2 0x17D8 SWAP2 SWAP1 PUSH2 0x2503 JUMP JUMPDEST DUP7 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND SWAP2 SWAP1 SWAP2 OR DUP9 SSTORE PUSH1 0x2 DUP10 ADD DUP1 SLOAD SWAP3 SWAP8 POP DUP7 SWAP6 POP SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x1838 SWAP2 DUP6 SWAP2 AND PUSH2 0x24AC JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 DUP5 PUSH1 0x2 ADD PUSH1 0x14 DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x18A1 SWAP2 SWAP1 PUSH2 0x2592 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1900 DUP5 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS DUP13 DUP6 DUP14 PUSH2 0x1CDB JUMP JUMPDEST DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x1929 JUMPI PUSH2 0x1929 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP14 PUSH32 0x65C447D181B93A7ECBCFB0582911789929F2EAF3DD655041CED82E3F361E3437 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1975 SWAP2 SWAP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP DUP1 DUP1 PUSH2 0x198C SWAP1 PUSH2 0x25BF JUMP JUMPDEST SWAP2 POP POP PUSH2 0x155B JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8C347F9B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A1E SWAP2 SWAP1 PUSH2 0x222C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF30DBA9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP8 SWAP1 SIGNEXTEND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 PUSH4 0xF30DBA93 SWAP1 PUSH1 0x24 ADD PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AC6 SWAP2 SWAP1 PUSH2 0x2195 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF30DBA9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP7 SWAP1 SIGNEXTEND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0xF30DBA93 SWAP1 PUSH1 0x24 ADD PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B6D SWAP2 SWAP1 PUSH2 0x2195 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6D59D802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BCA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BEE SWAP2 SWAP1 PUSH2 0x2266 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP1 DUP6 PUSH1 0x2 SIGNEXTEND DUP10 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x1C39 JUMPI DUP5 PUSH1 0xA0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH2 0x1C61 JUMP JUMPDEST PUSH1 0xA0 DUP6 ADD MLOAD PUSH2 0x1C5E SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH2 0x257B JUMP JUMPDEST SWAP2 POP JUMPDEST DUP8 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x1C90 JUMPI POP PUSH1 0xA0 DUP4 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1CB8 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD MLOAD PUSH2 0x1CB5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH2 0x257B JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH2 0x1CC3 DUP4 DUP6 PUSH2 0x257B JUMP JUMPDEST PUSH2 0x1CCD SWAP2 SWAP1 PUSH2 0x257B JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1DC6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D9B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1DBF SWAP2 SWAP1 PUSH2 0x2410 JUMP JUMPDEST POP POP PUSH2 0x1E7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1E91 DUP2 PUSH2 0x2685 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1E91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1E91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1E91 DUP2 PUSH2 0x26B9 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1E91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1F0A DUP2 PUSH2 0x2685 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1F0A DUP2 PUSH2 0x2685 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1F4E DUP2 PUSH2 0x2685 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1F5E DUP2 PUSH2 0x26AA JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1F6E DUP2 PUSH2 0x26AA JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH2 0x100 DUP2 SLT ISZERO PUSH2 0x1F8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1F99 DUP2 PUSH2 0x2685 JUMP JUMPDEST SWAP3 POP PUSH1 0xE0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 ADD SLT ISZERO PUSH2 0x1FCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD4 PUSH2 0x2434 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1FE2 DUP2 PUSH2 0x2685 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1FF2 DUP2 PUSH2 0x2685 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0x2005 DUP2 PUSH2 0x26B9 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP5 ADD CALLDATALOAD PUSH2 0x2018 DUP2 PUSH2 0x26B9 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x2029 PUSH1 0xA0 DUP6 ADD PUSH2 0x1EC6 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x203A PUSH1 0xC0 DUP6 ADD PUSH2 0x1E86 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x204B PUSH1 0xE0 DUP6 ADD PUSH2 0x1ED1 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x206E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2079 DUP2 PUSH2 0x2685 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x209F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x20AA DUP2 PUSH2 0x2685 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x20C1 DUP2 PUSH2 0x2685 JUMP JUMPDEST SWAP3 POP PUSH2 0x20CF PUSH1 0x60 DUP8 ADD PUSH2 0x1ED1 JUMP JUMPDEST SWAP2 POP PUSH2 0x20DD PUSH1 0x80 DUP8 ADD PUSH2 0x1E96 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x211E JUMPI PUSH2 0x211E PUSH2 0x2656 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x212C DUP2 PUSH2 0x2685 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x213A PUSH1 0x20 DUP5 ADD PUSH2 0x1EA6 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x214D DUP2 PUSH2 0x26AA JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x2160 DUP2 PUSH2 0x26AA JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x2173 DUP2 PUSH2 0x26B9 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xC0 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x21CA JUMPI PUSH2 0x21CA PUSH2 0x2656 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x21D8 DUP2 PUSH2 0x26AA JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x21E8 DUP2 PUSH2 0x26AA JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x21F9 PUSH1 0x40 DUP5 ADD PUSH2 0x1EA6 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0x2220 DUP2 PUSH2 0x2685 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x223F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x224A DUP2 PUSH2 0x2685 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x225B DUP2 PUSH2 0x26AA JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x2284 DUP2 PUSH2 0x2685 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x225B DUP2 PUSH2 0x26B9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x22AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x22C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x22DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x22EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x232A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP1 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x234A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x235E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2370 JUMPI PUSH2 0x2370 PUSH2 0x2656 JUMP JUMPDEST DUP1 PUSH1 0x5 SHL SWAP2 POP PUSH2 0x2381 DUP5 DUP4 ADD PUSH2 0x245D JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD DUP5 DUP7 ADD DUP8 ADD DUP14 LT ISZERO PUSH2 0x239C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP6 POP JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x23BF JUMPI DUP1 CALLDATALOAD DUP4 MSTORE PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH2 0x23A1 JUMP JUMPDEST POP DUP1 SWAP9 POP POP POP POP POP POP POP PUSH2 0x23D5 PUSH1 0x40 DUP7 ADD PUSH2 0x1E86 JUMP JUMPDEST SWAP2 POP PUSH2 0x23E3 PUSH1 0x60 DUP7 ADD PUSH2 0x1E96 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2457 JUMPI PUSH2 0x2457 PUSH2 0x2656 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x24A4 JUMPI PUSH2 0x24A4 PUSH2 0x2656 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x24DB JUMPI PUSH2 0x24DB PUSH2 0x25F8 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x24DB JUMPI PUSH2 0x24DB PUSH2 0x25F8 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2539 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x2576 JUMPI PUSH2 0x2576 PUSH2 0x25F8 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x258D JUMPI PUSH2 0x258D PUSH2 0x25F8 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x25B7 JUMPI PUSH2 0x25B7 PUSH2 0x25F8 JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x25F1 JUMPI PUSH2 0x25F1 PUSH2 0x25F8 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x26A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x26A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x26A7 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATASIZE SIGNEXTEND SSTORE LOG2 ADD 0xAE TIMESTAMP SMOD INVALID 0xBB PUSH8 0x2E778592E8CF0CB0 0xBC SWAP6 0xE3 OR 0xE3 0x1E 0x26 0xE1 LOG4 SWAP2 0xE9 0xE2 REVERT PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "515:8179:50:-:0;;;1843:215;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1892:11;:26;;-1:-1:-1;;;;;;1892:26:50;-1:-1:-1;;;;;1892:26:50;;;;;;;1971:20;;;-1:-1:-1;;;1971:20:50;;;;:18;;:20;;;;;;;;;;;;;;;1892:26;1971:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1928:64;;2002:6;-1:-1:-1;;;;;2002:23:50;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2037:14:50;;-1:-1:-1;;;;;;2037:14:50;;;-1:-1:-1;515:8179:50;;14:294:64;109:6;162:2;150:9;141:7;137:23;133:32;130:52;;;178:1;175;168:12;130:52;210:9;204:16;229:49;272:5;229:49;:::i;:::-;297:5;14:294;-1:-1:-1;;;14:294:64:o;629:149::-;-1:-1:-1;;;;;722:31:64;;712:42;;702:70;;768:1;765;758:12;702:70;629:149;:::o;:::-;515:8179:50;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_transfer_16452": {
                  "entryPoint": 7387,
                  "id": 16452,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@addIncentive_15789": {
                  "entryPoint": 3206,
                  "id": 15789,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@bento_15642": {
                  "entryPoint": null,
                  "id": 15642,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@claimRewards_16210": {
                  "entryPoint": 4980,
                  "id": 16210,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@getReward_16319": {
                  "entryPoint": 4275,
                  "id": 16319,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@incentiveCount_15650": {
                  "entryPoint": null,
                  "id": 15650,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@incentives_15658": {
                  "entryPoint": null,
                  "id": 15658,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@poolManager_15645": {
                  "entryPoint": null,
                  "id": 15645,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@rangeSecondsInside_16415": {
                  "entryPoint": 6558,
                  "id": 16415,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@reclaimIncentive_15867": {
                  "entryPoint": 953,
                  "id": 15867,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@stakes_15666": {
                  "entryPoint": null,
                  "id": 15666,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@subscribe_16007": {
                  "entryPoint": 1666,
                  "id": 16007,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "abi_decode_address": {
                  "entryPoint": 7814,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_bool": {
                  "entryPoint": 7830,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 7917,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_contract$_IConcentratedLiquidityPool_$2753": {
                  "entryPoint": 7953,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_contract$_IConcentratedLiquidityPool_$2753t_int24t_int24": {
                  "entryPoint": 7982,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_contract$_IConcentratedLiquidityPool_$2753t_struct$_Incentive_$15634_memory_ptr": {
                  "entryPoint": 8057,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_contract$_IConcentratedLiquidityPool_$2753t_uint256": {
                  "entryPoint": 8283,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_contract$_IConcentratedLiquidityPool_$2753t_uint256t_addresst_uint96t_bool": {
                  "entryPoint": 8327,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_struct$_Position_$2775_memory_ptr_fromMemory": {
                  "entryPoint": 8425,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_Tick_$4235_memory_ptr_fromMemory": {
                  "entryPoint": 8597,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint160t_int24_fromMemory": {
                  "entryPoint": 8748,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint160t_uint32_fromMemory": {
                  "entryPoint": 8806,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_calldata_ptr": {
                  "entryPoint": 8853,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_memory_ptrt_addresst_bool": {
                  "entryPoint": 8980,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_uint256t_uint256": {
                  "entryPoint": 9198,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256t_uint256_fromMemory": {
                  "entryPoint": 9232,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_uint128_fromMemory": {
                  "entryPoint": 7846,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_uint32": {
                  "entryPoint": 7878,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_uint96": {
                  "entryPoint": 7889,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint32_t_uint32_t_uint32_t_uint160_t_uint96__to_t_address_t_address_t_uint32_t_uint32_t_uint32_t_uint160_t_uint96__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 8,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IConcentratedLiquidityPoolManager_$2796__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_int24__to_t_int24__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_0e71c910d536b61fcef69518c42a88c159e7af67bb3870c8551c6d0c8616ea97__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_236deface2a03101838156d5ccd245101656bb61b7c02b358c9d5b10c7c6d4bd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ab0fdba2fca8284866a3134aeb0c4fadcca0955bd6b23b868986ab51970d31c4__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_bef79342ff5beb9be70ce1261196de6c0c107d0391ce9a239f19bb0d16391251__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_cb08e19888fb6866cabe4cfca6b2fc10e6b2f64c2d301614e286b434a55023ad__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_dcd44d1be4a080a39dedf638ab6fc06e5bda24b9361a1312339045cc5bc524f5__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ea6ed4625640eb1dff8225844a4e5f7792382b166e25557d7f33dc0f8b3e70c5__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f7b418992ebaaccd3e55c9e3733f16e2ff7ae544a45c007051e0c530639f99d1__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_fc7a4f08369e04191e5d601ef52230a181560bfbd7431497090a8eabc5119861__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint160_t_uint32__to_t_uint160_t_uint32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint96__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint96__to_t_uint96__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 9309,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_memory_2745": {
                  "entryPoint": 9268,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "checked_add_t_uint160": {
                  "entryPoint": 9388,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint32": {
                  "entryPoint": 9444,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 9475,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 9534,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 9595,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint96": {
                  "entryPoint": 9618,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 9663,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 9720,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 9767,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 9814,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 9861,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_int24": {
                  "entryPoint": 9898,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_uint32": {
                  "entryPoint": 9913,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:20114:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "63:85:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "73:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "95:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "82:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "82:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "73:5:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "136:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "111:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "111:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "111:31:64"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "42:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "53:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:134:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "199:114:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "209:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "231:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "218:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "218:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "209:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "291:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "300:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "303:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "293:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "293:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "293:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "281:5:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "274:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "274:13:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "267:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "267:21:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "257:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "257:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "250:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "250:40:64"
                              },
                              "nodeType": "YulIf",
                              "src": "247:60:64"
                            }
                          ]
                        },
                        "name": "abi_decode_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "178:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "189:5:64",
                            "type": ""
                          }
                        ],
                        "src": "153:160:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "378:132:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "388:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "403:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "397:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "397:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "388:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "488:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "497:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "500:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "490:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "490:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "490:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "432:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "443:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "450:34:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "439:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "439:46:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "429:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "429:57:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "422:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "422:65:64"
                              },
                              "nodeType": "YulIf",
                              "src": "419:85:64"
                            }
                          ]
                        },
                        "name": "abi_decode_uint128_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "357:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "368:5:64",
                            "type": ""
                          }
                        ],
                        "src": "318:192:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "563:84:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "573:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "595:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "582:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "582:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "573:5:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "635:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "611:23:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "611:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "611:30:64"
                            }
                          ]
                        },
                        "name": "abi_decode_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "542:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "553:5:64",
                            "type": ""
                          }
                        ],
                        "src": "515:132:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "700:131:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "710:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "732:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "719:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "719:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "710:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "809:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "818:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "821:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "811:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "811:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "811:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "761:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "772:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "779:26:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "768:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "768:38:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "758:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "758:49:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "751:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "751:57:64"
                              },
                              "nodeType": "YulIf",
                              "src": "748:77:64"
                            }
                          ]
                        },
                        "name": "abi_decode_uint96",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "679:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "690:5:64",
                            "type": ""
                          }
                        ],
                        "src": "652:179:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "917:170:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "963:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "972:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "975:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "965:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "965:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "965:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "938:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "947:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "934:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "934:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "959:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "930:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "930:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "927:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "988:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1007:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1001:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1001:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "992:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1051:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1026:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1026:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1026:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1066:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1076:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1066:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "883:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "894:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "906:6:64",
                            "type": ""
                          }
                        ],
                        "src": "836:251:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1197:177:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1243:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1252:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1255:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1245:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1245:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1245:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1218:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1227:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1214:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1214:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1239:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1210:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1210:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1207:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1268:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1294:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1281:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1281:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1272:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1338:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1313:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1313:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1313:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1353:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1363:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1353:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_IConcentratedLiquidityPool_$2753",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1163:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1174:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1186:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1092:282:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1514:421:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1560:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1569:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1572:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1562:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1562:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1562:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1535:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1544:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1531:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1531:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1556:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1527:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1527:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1524:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1585:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1611:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1598:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1598:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1589:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1655:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1630:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1630:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1630:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1670:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1680:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1670:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1694:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1726:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1737:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1722:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1722:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1709:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1709:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1698:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1773:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "1750:22:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1750:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1750:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1790:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1800:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1790:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1816:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1848:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1859:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1844:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1844:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1831:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1831:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1820:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1895:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "1872:22:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1872:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1872:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1912:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "1922:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1912:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_IConcentratedLiquidityPool_$2753t_int24t_int24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1464:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1475:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1487:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1495:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1503:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1379:556:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2090:1160:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2100:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2114:7:64"
                                  },
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2123:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "2110:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2110:23:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2104:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2158:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2167:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2170:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2160:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2160:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2160:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2149:2:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2153:3:64",
                                    "type": "",
                                    "value": "256"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2145:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2145:12:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2142:32:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2183:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2209:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2196:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2196:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2187:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2253:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2228:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2228:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2228:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2268:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2278:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2268:6:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2382:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2391:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2394:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2384:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2384:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2384:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2303:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2307:66:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2299:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2299:75:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2376:4:64",
                                    "type": "",
                                    "value": "0xe0"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2295:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2295:86:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2292:106:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2407:37:64",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "allocate_memory_2745",
                                  "nodeType": "YulIdentifier",
                                  "src": "2422:20:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2422:22:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2411:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2453:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2485:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2496:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2481:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2481:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2468:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2468:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2457:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2534:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2509:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2509:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2509:33:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2558:7:64"
                                  },
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2567:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2551:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2551:24:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2551:24:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2584:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2616:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2627:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2612:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2612:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2599:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2599:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2588:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2665:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2640:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2640:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2640:33:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2693:7:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2702:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2689:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2689:16:64"
                                  },
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2707:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2682:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2682:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2682:33:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2724:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2756:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2767:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2752:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2752:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2739:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2739:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_4",
                                  "nodeType": "YulTypedName",
                                  "src": "2728:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "2804:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "2780:23:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2780:32:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2780:32:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2832:7:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2841:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2828:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2828:16:64"
                                  },
                                  {
                                    "name": "value_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "2846:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2821:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2821:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2821:33:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2863:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2895:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2906:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2891:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2891:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2878:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2878:33:64"
                              },
                              "variables": [
                                {
                                  "name": "value_5",
                                  "nodeType": "YulTypedName",
                                  "src": "2867:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_5",
                                    "nodeType": "YulIdentifier",
                                    "src": "2944:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "2920:23:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2920:32:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2920:32:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2972:7:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2981:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2968:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2968:16:64"
                                  },
                                  {
                                    "name": "value_5",
                                    "nodeType": "YulIdentifier",
                                    "src": "2986:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2961:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2961:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2961:33:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3014:7:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3023:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3010:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3010:17:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "3051:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3062:3:64",
                                            "type": "",
                                            "value": "160"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3047:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3047:19:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint32",
                                      "nodeType": "YulIdentifier",
                                      "src": "3029:17:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3029:38:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3003:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3003:65:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3003:65:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3088:7:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3097:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3084:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3084:17:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "3126:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3137:3:64",
                                            "type": "",
                                            "value": "192"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3122:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3122:19:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_address",
                                      "nodeType": "YulIdentifier",
                                      "src": "3103:18:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3103:39:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3077:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3077:66:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3077:66:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3163:7:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3172:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3159:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3159:17:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "3200:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3211:4:64",
                                            "type": "",
                                            "value": "0xe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3196:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3196:20:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint96",
                                      "nodeType": "YulIdentifier",
                                      "src": "3178:17:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3178:39:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3152:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3152:66:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3152:66:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3227:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3237:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3227:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_IConcentratedLiquidityPool_$2753t_struct$_Incentive_$15634_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2048:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2059:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2071:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2079:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1940:1310:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3377:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3423:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3432:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3435:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3425:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3425:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3425:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3398:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3407:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3394:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3394:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3419:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3390:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3390:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3387:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3448:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3474:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3461:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3461:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3452:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3518:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3493:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3493:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3493:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3533:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3543:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3533:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3557:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3584:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3595:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3580:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3580:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3567:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3567:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3557:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_IConcentratedLiquidityPool_$2753t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3335:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3346:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3358:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3366:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3255:350:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3779:464:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3826:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3835:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3838:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3828:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3828:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3828:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3800:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3809:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3796:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3796:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3821:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3792:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3792:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3789:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3851:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3877:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3864:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3864:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3855:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3921:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3896:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3896:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3896:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3936:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3946:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3936:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3960:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3987:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3998:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3983:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3983:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3970:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3970:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3960:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4011:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4043:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4054:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4039:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4039:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4026:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4026:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4015:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4092:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4067:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4067:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4067:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4109:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4119:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4109:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4135:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4167:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4178:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4163:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4163:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint96",
                                  "nodeType": "YulIdentifier",
                                  "src": "4145:17:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4145:37:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4135:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4191:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4221:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4232:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4217:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4217:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "4201:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4201:36:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "4191:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_IConcentratedLiquidityPool_$2753t_uint256t_addresst_uint96t_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3713:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3724:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3736:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3744:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3752:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3760:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3768:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3610:633:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4355:1003:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4402:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4411:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4414:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4404:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4404:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4404:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4376:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4385:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4372:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4372:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4397:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4368:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4368:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4365:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4427:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4447:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4441:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4441:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4431:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4459:34:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4481:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4489:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4477:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4477:16:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4463:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4568:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "4570:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4570:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4570:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4511:10:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4523:18:64",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4508:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4508:34:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4547:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4559:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4544:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4544:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "4505:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4505:62:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4502:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4606:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4610:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4599:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4599:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4599:22:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4630:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4649:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4643:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4643:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4634:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4693:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4668:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4668:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4668:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4715:6:64"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4723:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4708:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4708:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4708:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4749:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4757:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4745:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4745:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "4796:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4807:2:64",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4792:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4792:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint128_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "4762:29:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4762:49:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4738:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4738:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4738:74:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4821:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4846:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4857:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4842:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4842:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4836:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4836:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4825:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4893:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "4870:22:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4870:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4870:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4921:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4929:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4917:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4917:15:64"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4934:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4910:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4910:32:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4910:32:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4951:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4976:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4987:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4972:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4972:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4966:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4966:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4955:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5023:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "5000:22:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5000:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5000:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5051:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5059:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5047:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5047:15:64"
                                  },
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5064:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5040:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5040:32:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5040:32:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5081:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5106:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5117:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5102:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5102:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5096:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5096:26:64"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "5085:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "5155:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "5131:23:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5131:32:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5131:32:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5183:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5191:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5179:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5179:16:64"
                                  },
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "5197:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5172:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5172:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5172:33:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5225:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5233:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5221:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5221:16:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "5249:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5260:3:64",
                                            "type": "",
                                            "value": "160"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5245:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5245:19:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "5239:5:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5239:26:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5214:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5214:52:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5214:52:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5286:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5294:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5282:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5282:16:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "5310:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5321:3:64",
                                            "type": "",
                                            "value": "192"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5306:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5306:19:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "5300:5:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5300:26:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5275:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5275:52:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5275:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5336:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "5346:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5336:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_Position_$2775_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4321:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4332:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4344:6:64",
                            "type": ""
                          }
                        ],
                        "src": "4248:1110:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5466:870:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5513:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5522:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5525:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5515:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5515:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5515:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5487:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5496:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5483:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5483:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5508:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5479:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5479:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5476:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5538:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5558:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5552:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5552:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "5542:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5570:34:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "5592:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5600:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5588:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5588:16:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "5574:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5679:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "5681:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5681:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5681:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5622:10:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5634:18:64",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5619:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5619:34:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5658:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5670:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5655:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5655:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "5616:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5616:62:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5613:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5717:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "5721:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5710:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5710:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5710:22:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5741:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5760:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5754:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5754:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5745:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5802:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "5779:22:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5779:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5779:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "5824:6:64"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5832:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5817:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5817:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5817:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5847:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5872:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5883:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5868:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5868:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5862:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5862:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5851:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5919:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "5896:22:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5896:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5896:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5947:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5955:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5943:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5943:15:64"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5960:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5936:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5936:32:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5936:32:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5988:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5996:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5984:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5984:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "6035:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6046:2:64",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6031:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6031:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint128_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "6001:29:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6001:49:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5977:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5977:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5977:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6071:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6079:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6067:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6067:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "6094:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6105:2:64",
                                            "type": "",
                                            "value": "96"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6090:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6090:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "6084:5:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6084:25:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6060:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6060:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6060:50:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6130:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6138:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6126:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6126:16:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "6154:9:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6165:3:64",
                                            "type": "",
                                            "value": "128"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6150:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6150:19:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "6144:5:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6144:26:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6119:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6119:52:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6119:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6180:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6205:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6216:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6201:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6201:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6195:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6195:26:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "6184:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6255:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6230:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6230:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6230:33:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6283:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6291:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6279:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6279:16:64"
                                  },
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6297:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6272:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6272:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6272:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6314:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "6324:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6314:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_Tick_$4235_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5432:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5443:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5455:6:64",
                            "type": ""
                          }
                        ],
                        "src": "5363:973:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6437:285:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6483:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6492:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6495:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6485:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6485:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6485:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6458:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6467:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6454:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6454:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6479:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6450:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6450:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6447:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6508:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6527:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6521:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6521:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6512:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6571:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6546:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6546:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6546:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6586:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6596:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6586:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6610:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6635:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6646:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6631:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6631:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6625:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6625:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6614:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6682:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_int24",
                                  "nodeType": "YulIdentifier",
                                  "src": "6659:22:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6659:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6659:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6699:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "6709:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6699:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint160t_int24_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6395:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6406:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6418:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6426:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6341:381:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6824:286:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6870:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6879:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6882:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6872:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6872:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6872:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6845:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6854:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6841:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6841:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6866:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6837:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6837:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6834:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6895:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6914:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6908:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6908:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6899:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6958:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6933:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6933:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6933:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6973:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6983:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6973:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6997:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7022:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7033:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7018:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7018:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7012:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7012:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7001:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7070:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_uint32",
                                  "nodeType": "YulIdentifier",
                                  "src": "7046:23:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7046:32:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7046:32:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7087:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "7097:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7087:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint160t_uint32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6782:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6793:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6805:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6813:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6727:383:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7237:561:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7283:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7292:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7295:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7285:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7285:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7285:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7258:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7267:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7254:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7254:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7279:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7250:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7250:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7247:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7308:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7331:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7318:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7318:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7308:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7350:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7381:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7392:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7377:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7377:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7364:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7364:32:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "7354:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7405:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7415:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7409:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7460:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7469:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7472:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7462:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7462:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7462:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7448:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7456:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7445:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7445:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7442:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7485:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7499:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7510:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7495:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7495:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "7489:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7565:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7574:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7577:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7567:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7567:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7567:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7544:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7548:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7540:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7540:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7555:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7536:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7536:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7529:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7529:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7526:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7590:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7617:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7604:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7604:16:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "7594:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7647:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7656:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7659:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7649:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7649:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7649:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7635:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7643:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7632:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7632:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7629:34:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7721:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7730:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7733:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7723:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7723:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7723:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7686:2:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7694:1:64",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "7697:6:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "7690:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7690:14:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7682:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7682:23:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7707:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7678:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7678:32:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7712:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7675:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7675:45:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7672:65:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7746:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7760:2:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7764:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7756:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7756:11:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7746:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7776:16:64",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "7786:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "7776:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7187:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7198:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7210:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7218:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7226:6:64",
                            "type": ""
                          }
                        ],
                        "src": "7115:683:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7946:1025:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7993:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8002:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8005:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7995:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7995:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7995:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7967:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7976:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7963:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7963:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7988:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7959:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7959:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7956:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8018:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8041:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8028:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8028:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8018:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8060:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8070:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8064:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8081:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8112:9:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8123:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8108:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8108:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8095:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8095:32:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "8085:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8136:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8146:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "8140:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8191:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8200:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8203:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8193:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8193:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8193:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8179:6:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "8187:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8176:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8176:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "8173:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8216:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8230:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8241:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8226:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8226:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "8220:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8296:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8305:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8308:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8298:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8298:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8298:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "8275:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8279:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8271:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8271:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8286:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "8267:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8267:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "8260:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8260:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "8257:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8321:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "8344:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8331:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8331:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "8325:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8370:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "8372:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8372:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8372:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "8362:2:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "8366:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8359:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8359:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "8356:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8401:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8415:1:64",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "8418:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "8411:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8411:10:64"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "8405:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8430:39:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "8461:2:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8465:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8457:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8457:11:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "8441:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8441:28:64"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "8434:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8478:16:64",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "8491:3:64"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8482:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "8510:3:64"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "8515:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8503:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8503:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8503:15:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8527:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "8538:3:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8543:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8534:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8534:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "8527:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8555:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "8570:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8574:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8566:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8566:11:64"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "8559:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8623:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8632:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8635:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8625:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8625:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8625:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "8600:2:64"
                                          },
                                          {
                                            "name": "_5",
                                            "nodeType": "YulIdentifier",
                                            "src": "8604:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8596:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8596:11:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8609:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8592:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8592:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8614:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8589:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8589:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "8586:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8648:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8657:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "8652:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8712:118:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "8733:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "8751:3:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "8738:12:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "8738:17:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "8726:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8726:30:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8726:30:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8769:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "8780:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "8785:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "8776:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8776:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "8769:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8801:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "8812:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "8817:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "8808:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8808:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "8801:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "8678:1:64"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "8681:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8675:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8675:9:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "8685:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8687:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "8696:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8699:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "8692:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8692:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "8687:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "8671:3:64",
                                "statements": []
                              },
                              "src": "8667:163:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8839:15:64",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "8849:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8839:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8863:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8896:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8907:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8892:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8892:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8873:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8873:38:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "8863:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8920:45:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8950:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8961:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8946:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8946:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "8930:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8930:35:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "8920:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_memory_ptrt_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7888:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7899:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7911:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7919:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7927:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7935:6:64",
                            "type": ""
                          }
                        ],
                        "src": "7803:1168:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9063:161:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9109:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9118:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9121:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9111:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9111:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9111:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9084:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9093:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9080:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9080:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9105:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9076:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9076:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "9073:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9134:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9157:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9144:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9144:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9134:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9176:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9203:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9214:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9199:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9199:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9186:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9186:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9176:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9021:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9032:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9044:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9052:6:64",
                            "type": ""
                          }
                        ],
                        "src": "8976:248:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9327:147:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9373:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9382:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9385:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9375:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9375:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9375:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9348:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9357:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9344:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9344:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9369:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9340:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9340:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "9337:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9398:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9414:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9408:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9408:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9398:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9433:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9453:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9464:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9449:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9449:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9443:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9443:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9433:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9285:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9296:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9308:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9316:6:64",
                            "type": ""
                          }
                        ],
                        "src": "9229:245:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9700:338:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9710:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9722:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9733:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9718:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9718:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9710:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9746:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9756:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9750:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9814:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "9829:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9837:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9825:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9825:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9807:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9807:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9807:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9861:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9872:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9857:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9857:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9881:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9889:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9877:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9877:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9850:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9850:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9850:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9913:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9924:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9909:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9909:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "9933:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9941:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9929:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9929:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9902:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9902:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9902:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9965:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9976:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9961:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9961:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "9981:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9954:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9954:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9954:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10008:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10019:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10004:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10004:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "10025:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9997:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9997:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9997:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9637:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "9648:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9656:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9664:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9672:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9680:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9691:4:64",
                            "type": ""
                          }
                        ],
                        "src": "9479:559:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10228:294:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10238:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10250:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10261:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10246:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10246:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10238:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10274:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10284:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10278:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10342:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "10357:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10365:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10353:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10353:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10335:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10335:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10335:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10389:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10400:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10385:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10385:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10409:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10417:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10405:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10405:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10378:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10378:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10378:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10441:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10452:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10437:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10437:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "10461:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10469:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10457:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10457:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10430:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10430:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10430:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10493:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10504:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10489:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10489:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "10509:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10482:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10482:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10482:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10173:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "10184:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10192:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10200:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10208:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10219:4:64",
                            "type": ""
                          }
                        ],
                        "src": "10043:479:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10788:515:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10798:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10810:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10821:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10806:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10806:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10798:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10834:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10844:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10838:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10902:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "10917:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10925:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10913:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10913:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10895:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10895:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10895:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10949:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10960:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10945:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10945:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10969:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10977:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10965:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10965:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10938:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10938:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10938:43:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10990:20:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11000:10:64",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "10994:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11030:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11041:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11026:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11026:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "11050:6:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "11058:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11046:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11046:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11019:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11019:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11019:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11082:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11093:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11078:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11078:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "11102:6:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "11110:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11098:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11098:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11071:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11071:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11071:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11134:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11145:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11130:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11130:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "11155:6:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "11163:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11151:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11151:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11123:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11123:44:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11123:44:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11187:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11198:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11183:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11183:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "11208:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11216:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11204:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11204:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11176:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11176:44:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11176:44:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11240:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11251:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11236:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11236:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value6",
                                        "nodeType": "YulIdentifier",
                                        "src": "11261:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11269:26:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11257:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11257:39:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11229:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11229:68:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11229:68:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint32_t_uint32_t_uint32_t_uint160_t_uint96__to_t_address_t_address_t_uint32_t_uint32_t_uint32_t_uint160_t_uint96__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10709:9:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "10720:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "10728:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "10736:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "10744:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10752:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10760:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10768:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10779:4:64",
                            "type": ""
                          }
                        ],
                        "src": "10527:776:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11434:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11444:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11456:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11467:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11452:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11452:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11444:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11486:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "11501:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11509:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11497:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11497:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11479:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11479:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11479:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11403:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11414:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11425:4:64",
                            "type": ""
                          }
                        ],
                        "src": "11308:251:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11707:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11717:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11729:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11740:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11725:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11725:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11717:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11759:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "11774:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11782:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11770:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11770:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11752:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11752:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11752:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IConcentratedLiquidityPoolManager_$2796__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11676:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11687:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11698:4:64",
                            "type": ""
                          }
                        ],
                        "src": "11564:268:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11934:91:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11944:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11956:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11967:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11952:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11952:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11944:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11986:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12008:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "12011:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "11997:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11997:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11979:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11979:40:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11979:40:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_int24__to_t_int24__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11903:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11914:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11925:4:64",
                            "type": ""
                          }
                        ],
                        "src": "11837:188:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12204:157:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12221:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12232:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12214:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12214:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12214:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12255:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12266:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12251:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12251:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12271:1:64",
                                    "type": "",
                                    "value": "8"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12244:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12244:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12244:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12293:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12304:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12289:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12289:18:64"
                                  },
                                  {
                                    "hexValue": "494e414354495645",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12309:10:64",
                                    "type": "",
                                    "value": "INACTIVE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12282:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12282:38:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12282:38:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12329:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12341:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12352:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12337:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12337:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12329:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0e71c910d536b61fcef69518c42a88c159e7af67bb3870c8551c6d0c8616ea97__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12181:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12195:4:64",
                            "type": ""
                          }
                        ],
                        "src": "12030:331:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12540:166:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12557:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12568:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12550:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12550:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12550:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12591:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12602:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12587:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12587:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12607:2:64",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12580:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12580:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12580:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12630:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12641:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12626:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12626:18:64"
                                  },
                                  {
                                    "hexValue": "4d5553545f5245535542534352494245",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12646:18:64",
                                    "type": "",
                                    "value": "MUST_RESUBSCRIBE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12619:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12619:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12619:46:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12674:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12686:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12697:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12682:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12682:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12674:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_236deface2a03101838156d5ccd245101656bb61b7c02b358c9d5b10c7c6d4bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12517:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12531:4:64",
                            "type": ""
                          }
                        ],
                        "src": "12366:340:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12885:160:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12902:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12913:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12895:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12895:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12895:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12936:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12947:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12932:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12932:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12952:2:64",
                                    "type": "",
                                    "value": "10"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12925:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12925:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12925:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12975:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12986:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12971:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12971:18:64"
                                  },
                                  {
                                    "hexValue": "4e4f5f52455741524453",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12991:12:64",
                                    "type": "",
                                    "value": "NO_REWARDS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12964:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12964:40:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12964:40:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13013:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13025:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13036:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13021:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13021:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13013:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ab0fdba2fca8284866a3134aeb0c4fadcca0955bd6b23b868986ab51970d31c4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12862:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12876:4:64",
                            "type": ""
                          }
                        ],
                        "src": "12711:334:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13224:156:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13241:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13252:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13234:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13234:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13234:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13275:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13286:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13271:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13271:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13291:1:64",
                                    "type": "",
                                    "value": "7"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13264:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13264:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13264:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13313:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13324:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13309:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13309:18:64"
                                  },
                                  {
                                    "hexValue": "45585049524544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13329:9:64",
                                    "type": "",
                                    "value": "EXPIRED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13302:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13302:37:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13302:37:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13348:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13360:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13371:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13356:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13356:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13348:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13201:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13215:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13050:330:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13559:160:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13576:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13587:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13569:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13569:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13569:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13610:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13621:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13606:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13606:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13626:2:64",
                                    "type": "",
                                    "value": "10"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13599:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13599:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13599:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13649:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13660:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13645:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13645:18:64"
                                  },
                                  {
                                    "hexValue": "53554253435249424544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13665:12:64",
                                    "type": "",
                                    "value": "SUBSCRIBED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13638:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13638:40:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13638:40:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13687:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13699:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13710:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13695:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13695:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13687:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_bef79342ff5beb9be70ce1261196de6c0c107d0391ce9a239f19bb0d16391251__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13536:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13550:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13385:334:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13898:164:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13915:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13926:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13908:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13908:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13908:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13949:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13960:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13945:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13945:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13965:2:64",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13938:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13938:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13938:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13988:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13999:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13984:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13984:18:64"
                                  },
                                  {
                                    "hexValue": "53544152545f504153545f454e44",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14004:16:64",
                                    "type": "",
                                    "value": "START_PAST_END"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13977:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13977:44:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13977:44:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14030:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14042:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14053:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14038:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14038:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14030:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_cb08e19888fb6866cabe4cfca6b2fc10e6b2f64c2d301614e286b434a55023ad__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13875:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13889:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13724:338:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14241:158:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14258:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14269:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14251:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14251:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14251:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14292:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14303:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14288:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14288:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14308:1:64",
                                    "type": "",
                                    "value": "9"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14281:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14281:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14281:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14330:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14341:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14326:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14326:18:64"
                                  },
                                  {
                                    "hexValue": "4e4f545f4f574e4552",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14346:11:64",
                                    "type": "",
                                    "value": "NOT_OWNER"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14319:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14319:39:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14319:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14367:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14379:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14390:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14375:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14375:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14367:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14218:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14232:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14067:332:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14578:165:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14595:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14606:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14588:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14588:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14588:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14629:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14640:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14625:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14625:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14645:2:64",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14618:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14618:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14618:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14668:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14679:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14664:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14664:18:64"
                                  },
                                  {
                                    "hexValue": "454e445f504153545f425546464552",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14684:17:64",
                                    "type": "",
                                    "value": "END_PAST_BUFFER"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14657:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14657:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14657:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14711:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14723:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14734:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14719:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14719:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14711:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dcd44d1be4a080a39dedf638ab6fc06e5bda24b9361a1312339045cc5bc524f5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14555:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14569:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14404:339:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14922:165:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14939:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14950:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14932:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14932:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14932:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14973:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14984:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14969:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14969:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14989:2:64",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14962:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14962:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14962:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15012:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15023:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15008:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15008:18:64"
                                  },
                                  {
                                    "hexValue": "414c52454144595f53544152544544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15028:17:64",
                                    "type": "",
                                    "value": "ALREADY_STARTED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15001:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15001:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15001:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15055:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15067:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15078:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15063:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15063:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15055:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ea6ed4625640eb1dff8225844a4e5f7792382b166e25557d7f33dc0f8b3e70c5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14899:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14913:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14748:339:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15266:168:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15283:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15294:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15276:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15276:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15276:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15317:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15328:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15313:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15313:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15333:2:64",
                                    "type": "",
                                    "value": "18"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15306:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15306:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15306:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15356:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15367:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15352:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15352:18:64"
                                  },
                                  {
                                    "hexValue": "494e4143544956455f494e43454e54495645",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15372:20:64",
                                    "type": "",
                                    "value": "INACTIVE_INCENTIVE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15345:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15345:48:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15345:48:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15402:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15414:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15425:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15410:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15410:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15402:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f7b418992ebaaccd3e55c9e3733f16e2ff7ae544a45c007051e0c530639f99d1__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15243:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15257:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15092:342:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15613:165:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15630:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15641:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15623:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15623:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15623:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15664:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15675:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15660:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15660:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15680:2:64",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15653:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15653:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15653:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15703:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15714:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15699:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15699:18:64"
                                  },
                                  {
                                    "hexValue": "414c52454144595f434c41494d4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15719:17:64",
                                    "type": "",
                                    "value": "ALREADY_CLAIMED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15692:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15692:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15692:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15746:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15758:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15769:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15754:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15754:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15746:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_fc7a4f08369e04191e5d601ef52230a181560bfbd7431497090a8eabc5119861__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15590:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15604:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15439:339:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15910:185:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15920:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15932:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15943:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15928:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15928:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15920:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15962:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "15977:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15985:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15973:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15973:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15955:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15955:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15955:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16049:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16060:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16045:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16045:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16069:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16077:10:64",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16065:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16065:23:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16038:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16038:51:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16038:51:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint160_t_uint32__to_t_uint160_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15871:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15882:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15890:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15901:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15783:312:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16201:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16211:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16223:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16234:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16219:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16219:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16211:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16253:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16264:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16246:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16246:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16246:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16170:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16181:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16192:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16100:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16411:119:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16421:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16433:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16444:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16429:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16429:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16421:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16463:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16474:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16456:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16456:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16456:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16501:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16512:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16497:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16497:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16517:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16490:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16490:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16490:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16372:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16383:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16391:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16402:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16282:248:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16635:109:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16645:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16657:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16668:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16653:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16653:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16645:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16687:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "16702:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16710:26:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16698:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16698:39:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16680:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16680:58:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16680:58:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint96__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16604:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16615:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16626:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16535:209:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16848:109:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16858:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16870:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16881:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16866:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16866:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16858:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16900:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "16915:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16923:26:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16911:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16911:39:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16893:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16893:58:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16893:58:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint96__to_t_uint96__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16817:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16828:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16839:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16749:208:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17008:207:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17018:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17034:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "17028:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17028:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "17018:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17046:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "17068:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17076:4:64",
                                    "type": "",
                                    "value": "0xe0"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17064:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17064:17:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "17050:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17156:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "17158:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17158:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17158:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "17099:10:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17111:18:64",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "17096:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17096:34:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "17135:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "17147:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "17132:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17132:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "17093:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17093:62:64"
                              },
                              "nodeType": "YulIf",
                              "src": "17090:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17194:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "17198:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17187:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17187:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17187:22:64"
                            }
                          ]
                        },
                        "name": "allocate_memory_2745",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "16997:6:64",
                            "type": ""
                          }
                        ],
                        "src": "16962:253:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17265:289:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17275:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17291:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "17285:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17285:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "17275:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17303:117:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "17325:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "17341:4:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "17347:2:64",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "17337:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17337:13:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17352:66:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17333:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17333:86:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17321:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17321:99:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "17307:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17495:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "17497:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17497:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17497:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "17438:10:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17450:18:64",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "17435:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17435:34:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "17474:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "17486:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "17471:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17471:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "17432:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17432:62:64"
                              },
                              "nodeType": "YulIf",
                              "src": "17429:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17533:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "17537:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17526:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17526:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17526:22:64"
                            }
                          ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "17245:4:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "17254:6:64",
                            "type": ""
                          }
                        ],
                        "src": "17220:334:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17607:213:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17617:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "17627:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17621:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17678:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17693:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17696:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "17689:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17689:10:64"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17682:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17708:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17723:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17726:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "17719:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17719:10:64"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17712:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17763:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "17765:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17765:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17765:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17744:3:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17753:2:64"
                                      },
                                      {
                                        "name": "y_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17757:3:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "17749:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17749:12:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17741:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17741:21:64"
                              },
                              "nodeType": "YulIf",
                              "src": "17738:47:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17794:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17805:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17810:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17801:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17801:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "17794:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint160",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "17590:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "17593:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "17599:3:64",
                            "type": ""
                          }
                        ],
                        "src": "17559:261:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17872:181:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17882:20:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "17892:10:64",
                                "type": "",
                                "value": "0xffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17886:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17911:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17926:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17929:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "17922:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17922:10:64"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17915:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17941:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17956:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17959:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "17952:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17952:10:64"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17945:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17996:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "17998:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17998:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17998:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17977:3:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17986:2:64"
                                      },
                                      {
                                        "name": "y_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17990:3:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "17982:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17982:12:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17974:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17974:21:64"
                              },
                              "nodeType": "YulIf",
                              "src": "17971:47:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18027:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18038:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18043:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18034:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18034:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "18027:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "17855:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "17858:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "17864:3:64",
                            "type": ""
                          }
                        ],
                        "src": "17825:228:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18104:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18135:168:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18156:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18159:77:64",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "18149:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18149:88:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18149:88:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18257:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18260:4:64",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "18250:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18250:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18250:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18285:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18288:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "18278:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18278:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18278:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18124:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "18117:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18117:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "18114:189:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18312:14:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18321:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18324:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "18317:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18317:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "18312:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "18089:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "18092:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "18098:1:64",
                            "type": ""
                          }
                        ],
                        "src": "18058:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18389:176:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18508:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "18510:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18510:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18510:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "18420:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "18413:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18413:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "18406:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18406:17:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "18428:1:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "18435:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "18503:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "18431:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18431:74:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "18425:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18425:81:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "18402:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18402:105:64"
                              },
                              "nodeType": "YulIf",
                              "src": "18399:131:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18539:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18554:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18557:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "18550:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18550:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "18539:7:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "18368:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "18371:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "18377:7:64",
                            "type": ""
                          }
                        ],
                        "src": "18337:228:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18619:76:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18641:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "18643:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18643:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18643:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18635:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18638:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "18632:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18632:8:64"
                              },
                              "nodeType": "YulIf",
                              "src": "18629:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18672:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18684:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18687:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "18680:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18680:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "18672:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "18601:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "18604:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "18610:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18570:125:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18748:189:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18758:36:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "18768:26:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18762:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18803:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18818:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18821:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "18814:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18814:10:64"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18807:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18833:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18848:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18851:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "18844:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18844:10:64"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18837:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18879:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "18881:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18881:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18881:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18869:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18874:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "18866:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18866:12:64"
                              },
                              "nodeType": "YulIf",
                              "src": "18863:38:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18910:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18922:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18927:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "18918:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18918:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "18910:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint96",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "18730:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "18733:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "18739:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18700:237:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18989:148:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19080:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "19082:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19082:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19082:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "19005:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19012:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "19002:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19002:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "18999:103:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19111:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "19122:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19129:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19118:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19118:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "19111:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "18971:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "18981:3:64",
                            "type": ""
                          }
                        ],
                        "src": "18942:195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19174:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19191:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19194:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19184:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19184:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19184:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19288:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19291:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19281:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19281:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19281:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19312:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19315:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "19305:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19305:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19305:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "19142:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19363:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19380:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19383:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19373:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19373:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19373:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19477:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19480:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19470:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19470:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19470:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19501:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19504:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "19494:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19494:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19494:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "19331:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19552:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19569:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19572:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19562:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19562:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19562:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19666:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19669:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19659:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19659:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19659:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19690:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19693:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "19683:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19683:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19683:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "19520:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19754:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19841:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19850:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19853:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "19843:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19843:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19843:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "19777:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "19788:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "19795:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "19784:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19784:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "19774:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19774:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "19767:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19767:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "19764:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "19743:5:64",
                            "type": ""
                          }
                        ],
                        "src": "19709:154:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19911:75:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19964:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19973:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19976:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "19966:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19966:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19966:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "19934:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "19952:1:64",
                                            "type": "",
                                            "value": "2"
                                          },
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "19955:5:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "signextend",
                                          "nodeType": "YulIdentifier",
                                          "src": "19941:10:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19941:20:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "19931:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19931:31:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "19924:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19924:39:64"
                              },
                              "nodeType": "YulIf",
                              "src": "19921:59:64"
                            }
                          ]
                        },
                        "name": "validator_revert_int24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "19900:5:64",
                            "type": ""
                          }
                        ],
                        "src": "19868:118:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20035:77:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20090:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20099:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20102:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "20092:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20092:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20092:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "20058:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "20069:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "20076:10:64",
                                            "type": "",
                                            "value": "0xffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "20065:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20065:22:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "20055:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20055:33:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "20048:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20048:41:64"
                              },
                              "nodeType": "YulIf",
                              "src": "20045:61:64"
                            }
                          ]
                        },
                        "name": "validator_revert_uint32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "20024:5:64",
                            "type": ""
                          }
                        ],
                        "src": "19991:121:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_address(value)\n    }\n    function abi_decode_bool(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_uint128_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_uint32(value)\n    }\n    function abi_decode_uint96(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_contract$_IConcentratedLiquidityPool_$2753(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_contract$_IConcentratedLiquidityPool_$2753t_int24t_int24(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_int24(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_int24(value_2)\n        value2 := value_2\n    }\n    function abi_decode_tuple_t_contract$_IConcentratedLiquidityPool_$2753t_struct$_Incentive_$15634_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        let _1 := sub(dataEnd, headStart)\n        if slt(_1, 256) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        if slt(add(_1, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0xe0) { revert(0, 0) }\n        let value_1 := allocate_memory_2745()\n        let value_2 := calldataload(add(headStart, 32))\n        validator_revert_address(value_2)\n        mstore(value_1, value_2)\n        let value_3 := calldataload(add(headStart, 64))\n        validator_revert_address(value_3)\n        mstore(add(value_1, 32), value_3)\n        let value_4 := calldataload(add(headStart, 96))\n        validator_revert_uint32(value_4)\n        mstore(add(value_1, 64), value_4)\n        let value_5 := calldataload(add(headStart, 128))\n        validator_revert_uint32(value_5)\n        mstore(add(value_1, 96), value_5)\n        mstore(add(value_1, 128), abi_decode_uint32(add(headStart, 160)))\n        mstore(add(value_1, 160), abi_decode_address(add(headStart, 192)))\n        mstore(add(value_1, 192), abi_decode_uint96(add(headStart, 0xe0)))\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_contract$_IConcentratedLiquidityPool_$2753t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_contract$_IConcentratedLiquidityPool_$2753t_uint256t_addresst_uint96t_bool(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let value_1 := calldataload(add(headStart, 64))\n        validator_revert_address(value_1)\n        value2 := value_1\n        value3 := abi_decode_uint96(add(headStart, 96))\n        value4 := abi_decode_bool(add(headStart, 128))\n    }\n    function abi_decode_tuple_t_struct$_Position_$2775_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 224)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        let value := mload(headStart)\n        validator_revert_address(value)\n        mstore(memPtr, value)\n        mstore(add(memPtr, 32), abi_decode_uint128_fromMemory(add(headStart, 32)))\n        let value_1 := mload(add(headStart, 64))\n        validator_revert_int24(value_1)\n        mstore(add(memPtr, 64), value_1)\n        let value_2 := mload(add(headStart, 96))\n        validator_revert_int24(value_2)\n        mstore(add(memPtr, 96), value_2)\n        let value_3 := mload(add(headStart, 128))\n        validator_revert_uint32(value_3)\n        mstore(add(memPtr, 128), value_3)\n        mstore(add(memPtr, 160), mload(add(headStart, 160)))\n        mstore(add(memPtr, 192), mload(add(headStart, 192)))\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_struct$_Tick_$4235_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 192)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        let value := mload(headStart)\n        validator_revert_int24(value)\n        mstore(memPtr, value)\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_int24(value_1)\n        mstore(add(memPtr, 32), value_1)\n        mstore(add(memPtr, 64), abi_decode_uint128_fromMemory(add(headStart, 64)))\n        mstore(add(memPtr, 96), mload(add(headStart, 96)))\n        mstore(add(memPtr, 128), mload(add(headStart, 128)))\n        let value_2 := mload(add(headStart, 160))\n        validator_revert_address(value_2)\n        mstore(add(memPtr, 160), value_2)\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_uint160t_int24_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_int24(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_uint160t_uint32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_uint32(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n        value1 := add(_2, 32)\n        value2 := length\n    }\n    function abi_decode_tuple_t_uint256t_array$_t_uint256_$dyn_memory_ptrt_addresst_bool(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let _1 := 32\n        let offset := calldataload(add(headStart, _1))\n        let _2 := 0xffffffffffffffff\n        if gt(offset, _2) { revert(0, 0) }\n        let _3 := add(headStart, offset)\n        if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(0, 0) }\n        let _4 := calldataload(_3)\n        if gt(_4, _2) { panic_error_0x41() }\n        let _5 := shl(5, _4)\n        let dst := allocate_memory(add(_5, _1))\n        let dst_1 := dst\n        mstore(dst, _4)\n        dst := add(dst, _1)\n        let src := add(_3, _1)\n        if gt(add(add(_3, _5), _1), dataEnd) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _4) { i := add(i, 1) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _1)\n            src := add(src, _1)\n        }\n        value1 := dst_1\n        value2 := abi_decode_address(add(headStart, 64))\n        value3 := abi_decode_bool(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256t_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint32_t_uint32_t_uint32_t_uint160_t_uint96__to_t_address_t_address_t_uint32_t_uint32_t_uint32_t_uint160_t_uint96__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 224)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        let _2 := 0xffffffff\n        mstore(add(headStart, 64), and(value2, _2))\n        mstore(add(headStart, 96), and(value3, _2))\n        mstore(add(headStart, 128), and(value4, _2))\n        mstore(add(headStart, 160), and(value5, _1))\n        mstore(add(headStart, 192), and(value6, 0xffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_contract$_IConcentratedLiquidityPoolManager_$2796__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_int24__to_t_int24__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, signextend(2, value0))\n    }\n    function abi_encode_tuple_t_stringliteral_0e71c910d536b61fcef69518c42a88c159e7af67bb3870c8551c6d0c8616ea97__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 8)\n        mstore(add(headStart, 64), \"INACTIVE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_236deface2a03101838156d5ccd245101656bb61b7c02b358c9d5b10c7c6d4bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"MUST_RESUBSCRIBE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ab0fdba2fca8284866a3134aeb0c4fadcca0955bd6b23b868986ab51970d31c4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 10)\n        mstore(add(headStart, 64), \"NO_REWARDS\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 7)\n        mstore(add(headStart, 64), \"EXPIRED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_bef79342ff5beb9be70ce1261196de6c0c107d0391ce9a239f19bb0d16391251__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 10)\n        mstore(add(headStart, 64), \"SUBSCRIBED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_cb08e19888fb6866cabe4cfca6b2fc10e6b2f64c2d301614e286b434a55023ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"START_PAST_END\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 9)\n        mstore(add(headStart, 64), \"NOT_OWNER\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_dcd44d1be4a080a39dedf638ab6fc06e5bda24b9361a1312339045cc5bc524f5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"END_PAST_BUFFER\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ea6ed4625640eb1dff8225844a4e5f7792382b166e25557d7f33dc0f8b3e70c5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"ALREADY_STARTED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f7b418992ebaaccd3e55c9e3733f16e2ff7ae544a45c007051e0c530639f99d1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 18)\n        mstore(add(headStart, 64), \"INACTIVE_INCENTIVE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_fc7a4f08369e04191e5d601ef52230a181560bfbd7431497090a8eabc5119861__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"ALREADY_CLAIMED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint160_t_uint32__to_t_uint160_t_uint32__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffff))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_uint96__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint96__to_t_uint96__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffff))\n    }\n    function allocate_memory_2745() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0xe0)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function checked_add_t_uint160(x, y) -> sum\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function checked_add_t_uint32(x, y) -> sum\n    {\n        let _1 := 0xffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function checked_sub_t_uint96(x, y) -> diff\n    {\n        let _1 := 0xffffffffffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if lt(x_1, y_1) { panic_error_0x11() }\n        diff := sub(x_1, y_1)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function validator_revert_int24(value)\n    {\n        if iszero(eq(value, signextend(2, value))) { revert(0, 0) }\n    }\n    function validator_revert_uint32(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "15642": [
                  {
                    "length": 32,
                    "start": 521
                  },
                  {
                    "length": 32,
                    "start": 7492
                  },
                  {
                    "length": 32,
                    "start": 7714
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100c95760003560e01c80638dde6dba11610081578063cc6fa8c91161005b578063cc6fa8c914610373578063dc4c90d314610386578063df674218146103a657600080fd5b80638dde6dba146102a6578063b221e5fd146102b9578063b90bc5191461034b57600080fd5b806355a93140116100b257806355a931401461025057806371fa6b4d14610265578063897217bc1461029357600080fd5b806332e2e213146100ce5780634da3182714610204575b600080fd5b61019a6100dc36600461205b565b6002602081815260009384526040808520909152918352912080546001820154919092015473ffffffffffffffffffffffffffffffffffffffff928316928281169263ffffffff74010000000000000000000000000000000000000000808304821694780100000000000000000000000000000000000000000000000084048316947c0100000000000000000000000000000000000000000000000000000000909404909216928216916bffffffffffffffffffffffff9190041687565b6040805173ffffffffffffffffffffffffffffffffffffffff9889168152968816602088015263ffffffff95861690870152928416606086015292166080840152921660a08201526bffffffffffffffffffffffff90911660c082015260e0015b60405180910390f35b61022b7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101fb565b61026361025e366004612087565b6103b9565b005b610285610273366004611f11565b60016020526000908152604090205481565b6040519081526020016101fb565b6102636102a1366004612295565b610682565b6102636102b4366004611f79565b610c86565b61031a6102c73660046123ee565b600360209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900463ffffffff1682565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835263ffffffff9091166020830152016101fb565b61035e6103593660046123ee565b6110b3565b604080519283526020830191909152016101fb565b610263610381366004612314565b611374565b60005461022b9073ffffffffffffffffffffffffffffffffffffffff1681565b6102856103b4366004611f2e565b61199e565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260026020908152604080832088845290915290208054909116331461045c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e4552000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6001810154427c010000000000000000000000000000000000000000000000000000000090910463ffffffff16106104f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f45585049524544000000000000000000000000000000000000000000000000006044820152606401610453565b60028101546bffffffffffffffffffffffff80851674010000000000000000000000000000000000000000909204161015610587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f414c52454144595f434c41494d454400000000000000000000000000000000006044820152606401610453565b828160020160148282829054906101000a90046bffffffffffffffffffffffff166105b29190612592565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555061061f8160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163086866bffffffffffffffffffffffff1686611cdb565b6040516bffffffffffffffffffffffff84168152859073ffffffffffffffffffffffffffffffffffffffff8816907f63156f3c47a8140de33d9354ed09cc696a65d2aae70b3600874fd35b6f082c469060200160405180910390a3505050505050565b6000546040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101859052339173ffffffffffffffffffffffffffffffffffffffff1690636352211e9060240160206040518083038186803b1580156106ec57600080fd5b505afa158015610700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107249190611eed565b73ffffffffffffffffffffffffffffffffffffffff16146107a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e455200000000000000000000000000000000000000000000006044820152606401610453565b600080546040517f99fbab880000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff909116906399fbab889060240160e06040518083038186803b15801561080c57600080fd5b505afa158015610820573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084491906120e9565b80516020820151919250906fffffffffffffffffffffffffffffffff166108c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f494e4143544956450000000000000000000000000000000000000000000000006044820152606401610453565b600060405180604001604052806108e7848660400151876060015161199e565b73ffffffffffffffffffffffffffffffffffffffff1681526020014263ffffffff16815250905060005b84811015610c7d5773ffffffffffffffffffffffffffffffffffffffff831660009081526002602052604081208188888581811061095157610951612627565b602090810292909201358352508181019290925260409081016000908120825160e081018452815473ffffffffffffffffffffffffffffffffffffffff908116825260018301548082168388015263ffffffff7401000000000000000000000000000000000000000080830482168589015278010000000000000000000000000000000000000000000000008304821660608601527c010000000000000000000000000000000000000000000000000000000090920416608084015260029093015490811660a08301526bffffffffffffffffffffffff9290049190911660c08201528b825260039093529081209192509081898986818110610a5657610a56612627565b60209081029290920135835250810191909152604001600020805490915073ffffffffffffffffffffffffffffffffffffffff1615610af1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f53554253435249424544000000000000000000000000000000000000000000006044820152606401610453565b816040015163ffffffff164210158015610b145750816060015163ffffffff1642105b610b7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e4143544956455f494e43454e5449564500000000000000000000000000006044820152606401610453565b600089815260036020526040812085918a8a87818110610b9c57610b9c612627565b602090810292909201358352508181019290925260400160002082518154939092015163ffffffff1674010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090931673ffffffffffffffffffffffffffffffffffffffff90921691909117919091179055878784818110610c3457610c34612627565b90506020020135897ff290eae22dead4b3e51c14d97c3ea66eb5c91286a496309828b9c28589d9021560405160405180910390a350508080610c75906125bf565b915050610911565b50505050505050565b6000429050816040015163ffffffff168163ffffffff161115610d05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f414c52454144595f5354415254454400000000000000000000000000000000006044820152606401610453565b816060015163ffffffff16826040015163ffffffff1610610d82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f53544152545f504153545f454e440000000000000000000000000000000000006044820152606401610453565b816080015163ffffffff1682606001516276a700610da091906124e4565b63ffffffff1610610e0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f454e445f504153545f42554646455200000000000000000000000000000000006044820152606401610453565b60c08201516bffffffffffffffffffffffff16610e86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f5f52455741524453000000000000000000000000000000000000000000006044820152606401610453565b600060a0830181905273ffffffffffffffffffffffffffffffffffffffff8416815260026020908152604080832060019092528220805485939182610eca836125bf565b90915550815260208082019290925260409081016000908120845181547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9182161782558585015160018301805495880151606089015160808a01519385167fffffffffffffffff000000000000000000000000000000000000000000000000909816979097177401000000000000000000000000000000000000000063ffffffff92831681029190911777ffffffffffffffffffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000988316989098027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16979097177c0100000000000000000000000000000000000000000000000000000000919093160291909117905560a086015160c09687015191166bffffffffffffffffffffffff9182169094029390931760029091015591850151928501516110539392339230921690611cdb565b60208083015173ffffffffffffffffffffffffffffffffffffffff858116600081815260019094526040808520549051929093169390917f700cf11d666684f2ebcf80048c6e6cb9e51e2a759375dc0f9d3290c6b957a72d9190a4505050565b600080546040517f99fbab88000000000000000000000000000000000000000000000000000000008152600481018590528291829173ffffffffffffffffffffffffffffffffffffffff909116906399fbab889060240160e06040518083038186803b15801561112257600080fd5b505afa158015611136573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115a91906120e9565b805173ffffffffffffffffffffffffffffffffffffffff80821660009081526002602081815260408084208c85528252808420815160e0810183528154871681526001820154808816828601527401000000000000000000000000000000000000000080820463ffffffff9081168487015278010000000000000000000000000000000000000000000000008304811660608501527c010000000000000000000000000000000000000000000000000000000090920482166080840152929095015480881660a08301528290046bffffffffffffffffffffffff1660c08201528d8652600384528286208d87528452948290208251808401909352549586168252909404909116908301819052939450919215611369576000816000015173ffffffffffffffffffffffffffffffffffffffff166112a1858760400151886060015161199e565b6112ab919061257b565b905084602001516fffffffffffffffffffffffffffffffff16816112cf919061253e565b95506000836060015163ffffffff1642106112ea57426112f6565b836060015163ffffffff165b905060008460a0015173ffffffffffffffffffffffffffffffffffffffff166080866040015163ffffffff168461132d919061257b565b61133892911b61257b565b905080888660c001516bffffffffffffffffffffffff16611359919061253e565b6113639190612503565b98505050505b505050509250929050565b6000546040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101869052339173ffffffffffffffffffffffffffffffffffffffff1690636352211e9060240160206040518083038186803b1580156113de57600080fd5b505afa1580156113f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114169190611eed565b73ffffffffffffffffffffffffffffffffffffffff1614611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e455200000000000000000000000000000000000000000000006044820152606401610453565b600080546040517f99fbab880000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff909116906399fbab889060240160e06040518083038186803b1580156114fe57600080fd5b505afa158015611512573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153691906120e9565b90506000816000015190506000611556828460400151856060015161199e565b905060005b86518110156119945773ffffffffffffffffffffffffffffffffffffffff83166000908152600260205260408120885182908a908590811061159f5761159f612627565b6020026020010151815260200190815260200160002090506000600360008b815260200190815260200160002060008a85815181106115e0576115e0612627565b602002602001015181526020019081526020016000209050856080015163ffffffff168160000160149054906101000a900463ffffffff1663ffffffff161015611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4d5553545f5245535542534352494245000000000000000000000000000000006044820152606401610453565b8054600090819081906116af9073ffffffffffffffffffffffffffffffffffffffff168861257b565b60018601549091506000907801000000000000000000000000000000000000000000000000900463ffffffff1642106116e85742611710565b60018601547801000000000000000000000000000000000000000000000000900463ffffffff165b6002870154600188015491925060009173ffffffffffffffffffffffffffffffffffffffff909116906080906117649074010000000000000000000000000000000000000000900463ffffffff168561257b565b61176f92911b61257b565b90508a602001516fffffffffffffffffffffffffffffffff1683611793919061253e565b600288015490945081906117ce9086907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1661253e565b6117d89190612503565b86547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b8116919091178855600289018054929750869550935060009250611838918591166124ac565b92506101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818460020160148282829054906101000a90046bffffffffffffffffffffffff166118a19190612592565b92506101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506119008460010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308c858d611cdb565b8973ffffffffffffffffffffffffffffffffffffffff168b868151811061192957611929612627565b60200260200101518d7f65c447d181b93a7ecbcfb0582911789929f2eaf3dd655041ced82e3f361e34378560405161197591906bffffffffffffffffffffffff91909116815260200190565b60405180910390a450505050808061198c906125bf565b91505061155b565b5050505050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff16638c347f9b6040518163ffffffff1660e01b8152600401604080518083038186803b1580156119e657600080fd5b505afa1580156119fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1e919061222c565b6040517ff30dba93000000000000000000000000000000000000000000000000000000008152600287900b60048201529092506000915073ffffffffffffffffffffffffffffffffffffffff87169063f30dba939060240160c06040518083038186803b158015611a8e57600080fd5b505afa158015611aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac69190612195565b6040517ff30dba93000000000000000000000000000000000000000000000000000000008152600286900b600482015290915060009073ffffffffffffffffffffffffffffffffffffffff88169063f30dba939060240160c06040518083038186803b158015611b3557600080fd5b505afa158015611b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b6d9190612195565b905060008773ffffffffffffffffffffffffffffffffffffffff16636d59d8026040518163ffffffff1660e01b8152600401604080518083038186803b158015611bb657600080fd5b505afa158015611bca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bee9190612266565b5073ffffffffffffffffffffffffffffffffffffffff1690506000808560020b8960020b13611c39578460a0015173ffffffffffffffffffffffffffffffffffffffff169150611c61565b60a0850151611c5e9073ffffffffffffffffffffffffffffffffffffffff168461257b565b91505b8760020b8660020b1215611c90575060a083015173ffffffffffffffffffffffffffffffffffffffff16611cb8565b60a0840151611cb59073ffffffffffffffffffffffffffffffffffffffff168461257b565b90505b80611cc3838561257b565b611ccd919061257b565b9a9950505050505050505050565b8015611dc6576040517f97da6d3000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301528581166024830152848116604483015260006064830152608482018490527f000000000000000000000000000000000000000000000000000000000000000016906397da6d309060a4016040805180830381600087803b158015611d8757600080fd5b505af1158015611d9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbf9190612410565b5050611e7f565b6040517ff18d03cc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015285811660248301528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc90608401600060405180830381600087803b158015611e6657600080fd5b505af1158015611e7a573d6000803e3d6000fd5b505050505b5050505050565b8035611e9181612685565b919050565b80358015158114611e9157600080fd5b80516fffffffffffffffffffffffffffffffff81168114611e9157600080fd5b8035611e91816126b9565b80356bffffffffffffffffffffffff81168114611e9157600080fd5b600060208284031215611eff57600080fd5b8151611f0a81612685565b9392505050565b600060208284031215611f2357600080fd5b8135611f0a81612685565b600080600060608486031215611f4357600080fd5b8335611f4e81612685565b92506020840135611f5e816126aa565b91506040840135611f6e816126aa565b809150509250925092565b600080828403610100811215611f8e57600080fd5b8335611f9981612685565b925060e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215611fcb57600080fd5b50611fd4612434565b6020840135611fe281612685565b81526040840135611ff281612685565b60208201526060840135612005816126b9565b60408201526080840135612018816126b9565b606082015261202960a08501611ec6565b608082015261203a60c08501611e86565b60a082015261204b60e08501611ed1565b60c0820152809150509250929050565b6000806040838503121561206e57600080fd5b823561207981612685565b946020939093013593505050565b600080600080600060a0868803121561209f57600080fd5b85356120aa81612685565b94506020860135935060408601356120c181612685565b92506120cf60608701611ed1565b91506120dd60808701611e96565b90509295509295909350565b600060e082840312156120fb57600080fd5b60405160e0810181811067ffffffffffffffff8211171561211e5761211e612656565b604052825161212c81612685565b815261213a60208401611ea6565b6020820152604083015161214d816126aa565b60408201526060830151612160816126aa565b60608201526080830151612173816126b9565b608082015260a0838101519082015260c0928301519281019290925250919050565b600060c082840312156121a757600080fd5b60405160c0810181811067ffffffffffffffff821117156121ca576121ca612656565b60405282516121d8816126aa565b815260208301516121e8816126aa565b60208201526121f960408401611ea6565b6040820152606083015160608201526080830151608082015260a083015161222081612685565b60a08201529392505050565b6000806040838503121561223f57600080fd5b825161224a81612685565b602084015190925061225b816126aa565b809150509250929050565b6000806040838503121561227957600080fd5b825161228481612685565b602084015190925061225b816126b9565b6000806000604084860312156122aa57600080fd5b83359250602084013567ffffffffffffffff808211156122c957600080fd5b818601915086601f8301126122dd57600080fd5b8135818111156122ec57600080fd5b8760208260051b850101111561230157600080fd5b6020830194508093505050509250925092565b6000806000806080858703121561232a57600080fd5b8435935060208086013567ffffffffffffffff8082111561234a57600080fd5b818801915088601f83011261235e57600080fd5b81358181111561237057612370612656565b8060051b915061238184830161245d565b8181528481019084860184860187018d101561239c57600080fd5b600095505b838610156123bf5780358352600195909501949186019186016123a1565b508098505050505050506123d560408601611e86565b91506123e360608601611e96565b905092959194509250565b6000806040838503121561240157600080fd5b50508035926020909101359150565b6000806040838503121561242357600080fd5b505080516020909101519092909150565b60405160e0810167ffffffffffffffff8111828210171561245757612457612656565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156124a4576124a4612656565b604052919050565b600073ffffffffffffffffffffffffffffffffffffffff8083168185168083038211156124db576124db6125f8565b01949350505050565b600063ffffffff8083168185168083038211156124db576124db6125f8565b600082612539577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612576576125766125f8565b500290565b60008282101561258d5761258d6125f8565b500390565b60006bffffffffffffffffffffffff838116908316818110156125b7576125b76125f8565b039392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156125f1576125f16125f8565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff811681146126a757600080fd5b50565b8060020b81146126a757600080fd5b63ffffffff811681146126a757600080fdfea26469706673582212203d0b55a201ae4207febb672e778592e8cf0cb0bc95e317e31e26e1a491e9e2fd64736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xC9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DDE6DBA GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xCC6FA8C9 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xCC6FA8C9 EQ PUSH2 0x373 JUMPI DUP1 PUSH4 0xDC4C90D3 EQ PUSH2 0x386 JUMPI DUP1 PUSH4 0xDF674218 EQ PUSH2 0x3A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x8DDE6DBA EQ PUSH2 0x2A6 JUMPI DUP1 PUSH4 0xB221E5FD EQ PUSH2 0x2B9 JUMPI DUP1 PUSH4 0xB90BC519 EQ PUSH2 0x34B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x55A93140 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x55A93140 EQ PUSH2 0x250 JUMPI DUP1 PUSH4 0x71FA6B4D EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0x897217BC EQ PUSH2 0x293 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x32E2E213 EQ PUSH2 0xCE JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x204 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19A PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0x205B JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 SWAP1 SWAP2 MSTORE SWAP2 DUP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD SWAP2 SWAP1 SWAP3 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND SWAP3 DUP3 DUP2 AND SWAP3 PUSH4 0xFFFFFFFF PUSH21 0x10000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND SWAP5 PUSH25 0x1000000000000000000000000000000000000000000000000 DUP5 DIV DUP4 AND SWAP5 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP5 DIV SWAP1 SWAP3 AND SWAP3 DUP3 AND SWAP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 DIV AND DUP8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP9 DUP10 AND DUP2 MSTORE SWAP7 DUP9 AND PUSH1 0x20 DUP9 ADD MSTORE PUSH4 0xFFFFFFFF SWAP6 DUP7 AND SWAP1 DUP8 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x60 DUP7 ADD MSTORE SWAP3 AND PUSH1 0x80 DUP5 ADD MSTORE SWAP3 AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x22B PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FB JUMP JUMPDEST PUSH2 0x263 PUSH2 0x25E CALLDATASIZE PUSH1 0x4 PUSH2 0x2087 JUMP JUMPDEST PUSH2 0x3B9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x285 PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F11 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1FB JUMP JUMPDEST PUSH2 0x263 PUSH2 0x2A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2295 JUMP JUMPDEST PUSH2 0x682 JUMP JUMPDEST PUSH2 0x263 PUSH2 0x2B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F79 JUMP JUMPDEST PUSH2 0xC86 JUMP JUMPDEST PUSH2 0x31A PUSH2 0x2C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x23EE JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x1FB JUMP JUMPDEST PUSH2 0x35E PUSH2 0x359 CALLDATASIZE PUSH1 0x4 PUSH2 0x23EE JUMP JUMPDEST PUSH2 0x10B3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x1FB JUMP JUMPDEST PUSH2 0x263 PUSH2 0x381 CALLDATASIZE PUSH1 0x4 PUSH2 0x2314 JUMP JUMPDEST PUSH2 0x1374 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x22B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x285 PUSH2 0x3B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F2E JUMP JUMPDEST PUSH2 0x199E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 AND CALLER EQ PUSH2 0x45C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4F574E45520000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD TIMESTAMP PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF AND LT PUSH2 0x4F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4558504952454400000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP3 DIV AND LT ISZERO PUSH2 0x587 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x414C52454144595F434C41494D45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST DUP3 DUP2 PUSH1 0x2 ADD PUSH1 0x14 DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5B2 SWAP2 SWAP1 PUSH2 0x2592 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x61F DUP2 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS DUP7 DUP7 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH2 0x1CDB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE DUP6 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH32 0x63156F3C47A8140DE33D9354ED09CC696A65D2AAE70B3600874FD35B6F082C46 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x6352211E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE CALLER SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x700 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x724 SWAP2 SWAP1 PUSH2 0x1EED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x7A1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4F574E45520000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x99FBAB8800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x99FBAB88 SWAP1 PUSH1 0x24 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x80C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x820 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x844 SWAP2 SWAP1 PUSH2 0x20E9 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD SWAP2 SWAP3 POP SWAP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8C7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E414354495645000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x8E7 DUP5 DUP7 PUSH1 0x40 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x199E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0xC7D JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP2 DUP9 DUP9 DUP6 DUP2 DUP2 LT PUSH2 0x951 JUMPI PUSH2 0x951 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP3 SWAP1 SWAP3 ADD CALLDATALOAD DUP4 MSTORE POP DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP3 MLOAD PUSH1 0xE0 DUP2 ADD DUP5 MSTORE DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP4 ADD SLOAD DUP1 DUP3 AND DUP4 DUP9 ADD MSTORE PUSH4 0xFFFFFFFF PUSH21 0x10000000000000000000000000000000000000000 DUP1 DUP4 DIV DUP3 AND DUP6 DUP10 ADD MSTORE PUSH25 0x1000000000000000000000000000000000000000000000000 DUP4 DIV DUP3 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 DIV AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0x2 SWAP1 SWAP4 ADD SLOAD SWAP1 DUP2 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 DIV SWAP2 SWAP1 SWAP2 AND PUSH1 0xC0 DUP3 ADD MSTORE DUP12 DUP3 MSTORE PUSH1 0x3 SWAP1 SWAP4 MSTORE SWAP1 DUP2 KECCAK256 SWAP2 SWAP3 POP SWAP1 DUP2 DUP10 DUP10 DUP7 DUP2 DUP2 LT PUSH2 0xA56 JUMPI PUSH2 0xA56 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP3 SWAP1 SWAP3 ADD CALLDATALOAD DUP4 MSTORE POP DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0xAF1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5355425343524942454400000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST DUP2 PUSH1 0x40 ADD MLOAD PUSH4 0xFFFFFFFF AND TIMESTAMP LT ISZERO DUP1 ISZERO PUSH2 0xB14 JUMPI POP DUP2 PUSH1 0x60 ADD MLOAD PUSH4 0xFFFFFFFF AND TIMESTAMP LT JUMPDEST PUSH2 0xB7A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E4143544956455F494E43454E544956450000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP6 SWAP2 DUP11 DUP11 DUP8 DUP2 DUP2 LT PUSH2 0xB9C JUMPI PUSH2 0xB9C PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP3 SWAP1 SWAP3 ADD CALLDATALOAD DUP4 MSTORE POP DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP3 MLOAD DUP2 SLOAD SWAP4 SWAP1 SWAP3 ADD MLOAD PUSH4 0xFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 MUL PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 SWAP1 SWAP4 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0xC34 JUMPI PUSH2 0xC34 PUSH2 0x2627 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP10 PUSH32 0xF290EAE22DEAD4B3E51C14D97C3EA66EB5C91286A496309828B9C28589D90215 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP DUP1 DUP1 PUSH2 0xC75 SWAP1 PUSH2 0x25BF JUMP JUMPDEST SWAP2 POP POP PUSH2 0x911 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 TIMESTAMP SWAP1 POP DUP2 PUSH1 0x40 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0xD05 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x414C52454144595F535441525445440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST DUP2 PUSH1 0x60 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x40 ADD MLOAD PUSH4 0xFFFFFFFF AND LT PUSH2 0xD82 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x53544152545F504153545F454E44000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST DUP2 PUSH1 0x80 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x60 ADD MLOAD PUSH3 0x76A700 PUSH2 0xDA0 SWAP2 SWAP1 PUSH2 0x24E4 JUMP JUMPDEST PUSH4 0xFFFFFFFF AND LT PUSH2 0xE0D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x454E445F504153545F4255464645520000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0xE86 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xA PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F5F5245574152445300000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP4 ADD DUP2 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP4 SWAP2 DUP3 PUSH2 0xECA DUP4 PUSH2 0x25BF JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP5 MLOAD DUP2 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND OR DUP3 SSTORE DUP6 DUP6 ADD MLOAD PUSH1 0x1 DUP4 ADD DUP1 SLOAD SWAP6 DUP9 ADD MLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH1 0x80 DUP11 ADD MLOAD SWAP4 DUP6 AND PUSH32 0xFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 SWAP1 SWAP9 AND SWAP8 SWAP1 SWAP8 OR PUSH21 0x10000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH25 0x1000000000000000000000000000000000000000000000000 SWAP9 DUP4 AND SWAP9 SWAP1 SWAP9 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP8 SWAP1 SWAP8 OR PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP2 SWAP1 SWAP4 AND MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0xC0 SWAP7 DUP8 ADD MLOAD SWAP2 AND PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP1 SWAP5 MUL SWAP4 SWAP1 SWAP4 OR PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE SWAP2 DUP6 ADD MLOAD SWAP3 DUP6 ADD MLOAD PUSH2 0x1053 SWAP4 SWAP3 CALLER SWAP3 ADDRESS SWAP3 AND SWAP1 PUSH2 0x1CDB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 SLOAD SWAP1 MLOAD SWAP3 SWAP1 SWAP4 AND SWAP4 SWAP1 SWAP2 PUSH32 0x700CF11D666684F2EBCF80048C6E6CB9E51E2A759375DC0F9D3290C6B957A72D SWAP2 SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x99FBAB8800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE DUP3 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x99FBAB88 SWAP1 PUSH1 0x24 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1122 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1136 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x115A SWAP2 SWAP1 PUSH2 0x20E9 JUMP JUMPDEST DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP13 DUP6 MSTORE DUP3 MSTORE DUP1 DUP5 KECCAK256 DUP2 MLOAD PUSH1 0xE0 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP8 AND DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD DUP1 DUP9 AND DUP3 DUP7 ADD MSTORE PUSH21 0x10000000000000000000000000000000000000000 DUP1 DUP3 DIV PUSH4 0xFFFFFFFF SWAP1 DUP2 AND DUP5 DUP8 ADD MSTORE PUSH25 0x1000000000000000000000000000000000000000000000000 DUP4 DIV DUP2 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 DIV DUP3 AND PUSH1 0x80 DUP5 ADD MSTORE SWAP3 SWAP1 SWAP6 ADD SLOAD DUP1 DUP9 AND PUSH1 0xA0 DUP4 ADD MSTORE DUP3 SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0xC0 DUP3 ADD MSTORE DUP14 DUP7 MSTORE PUSH1 0x3 DUP5 MSTORE DUP3 DUP7 KECCAK256 DUP14 DUP8 MSTORE DUP5 MSTORE SWAP5 DUP3 SWAP1 KECCAK256 DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE SLOAD SWAP6 DUP7 AND DUP3 MSTORE SWAP1 SWAP5 DIV SWAP1 SWAP2 AND SWAP1 DUP4 ADD DUP2 SWAP1 MSTORE SWAP4 SWAP5 POP SWAP2 SWAP3 ISZERO PUSH2 0x1369 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x12A1 DUP6 DUP8 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD PUSH2 0x199E JUMP JUMPDEST PUSH2 0x12AB SWAP2 SWAP1 PUSH2 0x257B JUMP JUMPDEST SWAP1 POP DUP5 PUSH1 0x20 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH2 0x12CF SWAP2 SWAP1 PUSH2 0x253E JUMP JUMPDEST SWAP6 POP PUSH1 0x0 DUP4 PUSH1 0x60 ADD MLOAD PUSH4 0xFFFFFFFF AND TIMESTAMP LT PUSH2 0x12EA JUMPI TIMESTAMP PUSH2 0x12F6 JUMP JUMPDEST DUP4 PUSH1 0x60 ADD MLOAD PUSH4 0xFFFFFFFF AND JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0xA0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x80 DUP7 PUSH1 0x40 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP5 PUSH2 0x132D SWAP2 SWAP1 PUSH2 0x257B JUMP JUMPDEST PUSH2 0x1338 SWAP3 SWAP2 SHL PUSH2 0x257B JUMP JUMPDEST SWAP1 POP DUP1 DUP9 DUP7 PUSH1 0xC0 ADD MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1359 SWAP2 SWAP1 PUSH2 0x253E JUMP JUMPDEST PUSH2 0x1363 SWAP2 SWAP1 PUSH2 0x2503 JUMP JUMPDEST SWAP9 POP POP POP POP JUMPDEST POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH32 0x6352211E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE CALLER SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x13DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13F2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1416 SWAP2 SWAP1 PUSH2 0x1EED JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1493 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4F574E45520000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH32 0x99FBAB8800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x99FBAB88 SWAP1 PUSH1 0x24 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x14FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1512 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1536 SWAP2 SWAP1 PUSH2 0x20E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1556 DUP3 DUP5 PUSH1 0x40 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD PUSH2 0x199E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH2 0x1994 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP9 MLOAD DUP3 SWAP1 DUP11 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x159F JUMPI PUSH2 0x159F PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP11 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x15E0 JUMPI PUSH2 0x15E0 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP6 PUSH1 0x80 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP2 PUSH1 0x0 ADD PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH4 0xFFFFFFFF AND LT ISZERO PUSH2 0x1686 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D5553545F524553554253435249424500000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x453 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 SWAP1 PUSH2 0x16AF SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH2 0x257B JUMP JUMPDEST PUSH1 0x1 DUP7 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH25 0x1000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND TIMESTAMP LT PUSH2 0x16E8 JUMPI TIMESTAMP PUSH2 0x1710 JUMP JUMPDEST PUSH1 0x1 DUP7 ADD SLOAD PUSH25 0x1000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND JUMPDEST PUSH1 0x2 DUP8 ADD SLOAD PUSH1 0x1 DUP9 ADD SLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 SWAP1 PUSH2 0x1764 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP6 PUSH2 0x257B JUMP JUMPDEST PUSH2 0x176F SWAP3 SWAP2 SHL PUSH2 0x257B JUMP JUMPDEST SWAP1 POP DUP11 PUSH1 0x20 ADD MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH2 0x1793 SWAP2 SWAP1 PUSH2 0x253E JUMP JUMPDEST PUSH1 0x2 DUP9 ADD SLOAD SWAP1 SWAP5 POP DUP2 SWAP1 PUSH2 0x17CE SWAP1 DUP7 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x253E JUMP JUMPDEST PUSH2 0x17D8 SWAP2 SWAP1 PUSH2 0x2503 JUMP JUMPDEST DUP7 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND SWAP2 SWAP1 SWAP2 OR DUP9 SSTORE PUSH1 0x2 DUP10 ADD DUP1 SLOAD SWAP3 SWAP8 POP DUP7 SWAP6 POP SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH2 0x1838 SWAP2 DUP6 SWAP2 AND PUSH2 0x24AC JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP DUP2 DUP5 PUSH1 0x2 ADD PUSH1 0x14 DUP3 DUP3 DUP3 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x18A1 SWAP2 SWAP1 PUSH2 0x2592 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x1900 DUP5 PUSH1 0x1 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS DUP13 DUP6 DUP14 PUSH2 0x1CDB JUMP JUMPDEST DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x1929 JUMPI PUSH2 0x1929 PUSH2 0x2627 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP14 PUSH32 0x65C447D181B93A7ECBCFB0582911789929F2EAF3DD655041CED82E3F361E3437 DUP6 PUSH1 0x40 MLOAD PUSH2 0x1975 SWAP2 SWAP1 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP DUP1 DUP1 PUSH2 0x198C SWAP1 PUSH2 0x25BF JUMP JUMPDEST SWAP2 POP POP PUSH2 0x155B JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8C347F9B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x19FA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A1E SWAP2 SWAP1 PUSH2 0x222C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF30DBA9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP8 SWAP1 SIGNEXTEND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP1 PUSH4 0xF30DBA93 SWAP1 PUSH1 0x24 ADD PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AA2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AC6 SWAP2 SWAP1 PUSH2 0x2195 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF30DBA9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP7 SWAP1 SIGNEXTEND PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0xF30DBA93 SWAP1 PUSH1 0x24 ADD PUSH1 0xC0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B49 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B6D SWAP2 SWAP1 PUSH2 0x2195 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6D59D802 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1BCA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1BEE SWAP2 SWAP1 PUSH2 0x2266 JUMP JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP1 DUP6 PUSH1 0x2 SIGNEXTEND DUP10 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x1C39 JUMPI DUP5 PUSH1 0xA0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH2 0x1C61 JUMP JUMPDEST PUSH1 0xA0 DUP6 ADD MLOAD PUSH2 0x1C5E SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH2 0x257B JUMP JUMPDEST SWAP2 POP JUMPDEST DUP8 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x1C90 JUMPI POP PUSH1 0xA0 DUP4 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1CB8 JUMP JUMPDEST PUSH1 0xA0 DUP5 ADD MLOAD PUSH2 0x1CB5 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH2 0x257B JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH2 0x1CC3 DUP4 DUP6 PUSH2 0x257B JUMP JUMPDEST PUSH2 0x1CCD SWAP2 SWAP1 PUSH2 0x257B JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1DC6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0x97DA6D30 SWAP1 PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D9B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1DBF SWAP2 SWAP1 PUSH2 0x2410 JUMP JUMPDEST POP POP PUSH2 0x1E7F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP3 ADD DUP5 SWAP1 MSTORE PUSH32 0x0 AND SWAP1 PUSH4 0xF18D03CC SWAP1 PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1E91 DUP2 PUSH2 0x2685 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1E91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1E91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1E91 DUP2 PUSH2 0x26B9 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x1E91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1EFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1F0A DUP2 PUSH2 0x2685 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1F0A DUP2 PUSH2 0x2685 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1F4E DUP2 PUSH2 0x2685 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1F5E DUP2 PUSH2 0x26AA JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1F6E DUP2 PUSH2 0x26AA JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH2 0x100 DUP2 SLT ISZERO PUSH2 0x1F8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1F99 DUP2 PUSH2 0x2685 JUMP JUMPDEST SWAP3 POP PUSH1 0xE0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 ADD SLT ISZERO PUSH2 0x1FCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1FD4 PUSH2 0x2434 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x1FE2 DUP2 PUSH2 0x2685 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x1FF2 DUP2 PUSH2 0x2685 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH2 0x2005 DUP2 PUSH2 0x26B9 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x80 DUP5 ADD CALLDATALOAD PUSH2 0x2018 DUP2 PUSH2 0x26B9 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x2029 PUSH1 0xA0 DUP6 ADD PUSH2 0x1EC6 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x203A PUSH1 0xC0 DUP6 ADD PUSH2 0x1E86 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x204B PUSH1 0xE0 DUP6 ADD PUSH2 0x1ED1 JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x206E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2079 DUP2 PUSH2 0x2685 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x209F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x20AA DUP2 PUSH2 0x2685 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x20C1 DUP2 PUSH2 0x2685 JUMP JUMPDEST SWAP3 POP PUSH2 0x20CF PUSH1 0x60 DUP8 ADD PUSH2 0x1ED1 JUMP JUMPDEST SWAP2 POP PUSH2 0x20DD PUSH1 0x80 DUP8 ADD PUSH2 0x1E96 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x20FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x211E JUMPI PUSH2 0x211E PUSH2 0x2656 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x212C DUP2 PUSH2 0x2685 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x213A PUSH1 0x20 DUP5 ADD PUSH2 0x1EA6 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH2 0x214D DUP2 PUSH2 0x26AA JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH2 0x2160 DUP2 PUSH2 0x26AA JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x2173 DUP2 PUSH2 0x26B9 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 DUP2 ADD MLOAD SWAP1 DUP3 ADD MSTORE PUSH1 0xC0 SWAP3 DUP4 ADD MLOAD SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x21A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x21CA JUMPI PUSH2 0x21CA PUSH2 0x2656 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD PUSH2 0x21D8 DUP2 PUSH2 0x26AA JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0x21E8 DUP2 PUSH2 0x26AA JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x21F9 PUSH1 0x40 DUP5 ADD PUSH2 0x1EA6 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH2 0x2220 DUP2 PUSH2 0x2685 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x223F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x224A DUP2 PUSH2 0x2685 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x225B DUP2 PUSH2 0x26AA JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x2284 DUP2 PUSH2 0x2685 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x225B DUP2 PUSH2 0x26B9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x22AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x22C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x22DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x22EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x2301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x232A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP1 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x234A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x235E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2370 JUMPI PUSH2 0x2370 PUSH2 0x2656 JUMP JUMPDEST DUP1 PUSH1 0x5 SHL SWAP2 POP PUSH2 0x2381 DUP5 DUP4 ADD PUSH2 0x245D JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 DUP2 ADD SWAP1 DUP5 DUP7 ADD DUP5 DUP7 ADD DUP8 ADD DUP14 LT ISZERO PUSH2 0x239C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP6 POP JUMPDEST DUP4 DUP7 LT ISZERO PUSH2 0x23BF JUMPI DUP1 CALLDATALOAD DUP4 MSTORE PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP2 DUP7 ADD SWAP2 DUP7 ADD PUSH2 0x23A1 JUMP JUMPDEST POP DUP1 SWAP9 POP POP POP POP POP POP POP PUSH2 0x23D5 PUSH1 0x40 DUP7 ADD PUSH2 0x1E86 JUMP JUMPDEST SWAP2 POP PUSH2 0x23E3 PUSH1 0x60 DUP7 ADD PUSH2 0x1E96 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2423 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2457 JUMPI PUSH2 0x2457 PUSH2 0x2656 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x24A4 JUMPI PUSH2 0x24A4 PUSH2 0x2656 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x24DB JUMPI PUSH2 0x24DB PUSH2 0x25F8 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x24DB JUMPI PUSH2 0x24DB PUSH2 0x25F8 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x2539 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x2576 JUMPI PUSH2 0x2576 PUSH2 0x25F8 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x258D JUMPI PUSH2 0x258D PUSH2 0x25F8 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND SWAP1 DUP4 AND DUP2 DUP2 LT ISZERO PUSH2 0x25B7 JUMPI PUSH2 0x25B7 PUSH2 0x25F8 JUMP JUMPDEST SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x25F1 JUMPI PUSH2 0x25F1 PUSH2 0x25F8 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x26A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x26A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x26A7 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATASIZE SIGNEXTEND SSTORE LOG2 ADD 0xAE TIMESTAMP SMOD INVALID 0xBB PUSH8 0x2E778592E8CF0CB0 0xBC SWAP6 0xE3 OR 0xE3 0x1E 0x26 0xE1 LOG4 SWAP2 0xE9 0xE2 REVERT PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "515:8179:50:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1492:86;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10844:42:64;10913:15;;;10895:34;;10965:15;;;10960:2;10945:18;;10938:43;11000:10;11046:15;;;11026:18;;;11019:43;11098:15;;;11093:2;11078:18;;11071:43;11151:15;;11145:3;11130:19;;11123:44;11204:15;;11198:3;11183:19;;11176:44;11269:26;11257:39;;;11251:3;11236:19;;11229:68;10821:3;10806:19;1492:86:50;;;;;;;;1335:39;;;;;;;;11509:42:64;11497:55;;;11479:74;;11467:2;11452:18;1335:39:50;11308:251:64;2835:653:50;;;;;;:::i;:::-;;:::i;:::-;;1418:68;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;16246:25:64;;;16234:2;16219:18;1418:68:50;16100:177:64;3565:1009:50;;;;;;:::i;:::-;;:::i;2064:709::-;;;;;;:::i;:::-;;:::i;1777:59::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15985:42:64;15973:55;;;15955:74;;16077:10;16065:23;;;16060:2;16045:18;;16038:51;15928:18;1777:59:50;15783:312:64;6376:932:50;;;;;;:::i;:::-;;:::i;:::-;;;;16456:25:64;;;16512:2;16497:18;;16490:34;;;;16429:18;6376:932:50;16282:248:64;4580:1790:50;;;;;;:::i;:::-;;:::i;1380:31::-;;;;;;;;;7391:976;;;;;;:::i;:::-;;:::i;2835:653::-;3059:16;;;;3029:27;3059:16;;;:10;:16;;;;;;;;:29;;;;;;;;3106:15;;3059:29;;3106:15;3125:10;3106:29;3098:51;;;;;;;14269:2:64;3098:51:50;;;14251:21:64;14308:1;14288:18;;;14281:29;14346:11;14326:18;;;14319:39;14375:18;;3098:51:50;;;;;;;;;3167:16;;;;3186:15;3167:16;;;;;;:34;3159:54;;;;;;;13252:2:64;3159:54:50;;;13234:21:64;13291:1;13271:18;;;13264:29;13329:9;13309:18;;;13302:37;13356:18;;3159:54:50;13050:330:64;3159:54:50;3231:26;;;;:36;;;;:26;;;;;:36;;3223:64;;;;;;;15641:2:64;3223:64:50;;;15623:21:64;15680:2;15660:18;;;15653:30;15719:17;15699:18;;;15692:45;15754:18;;3223:64:50;15439:339:64;3223:64:50;3334:6;3297:9;:26;;;:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3351:72;3361:9;:15;;;;;;;;;;;;3386:4;3393:8;3403:6;3351:72;;3411:11;3351:9;:72::i;:::-;3438:43;;16710:26:64;16698:39;;16680:58;;3461:11:50;;3438:43;;;;;;16668:2:64;16653:18;3438:43:50;;;;;;;3019:469;2835:653;;;;;:::o;3565:1009::-;3663:11;;:31;;;;;;;;16246:25:64;;;3698:10:50;;3663:45;:11;;:19;;16219:18:64;;3663:31:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;;3655:67;;;;;;;14269:2:64;3655:67:50;;;14251:21:64;14308:1;14288:18;;;14281:29;14346:11;14326:18;;;14319:39;14375:18;;3655:67:50;14067:332:64;3655:67:50;3732:37;3772:11;;:33;;;;;;;;16246:25:64;;;3772:11:50;;;;;:21;;16219:18:64;;3772:33:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3849:13;;3880:18;;;;3732:73;;-1:-1:-1;3849:13:50;3880:23;;3872:44;;;;;;;12232:2:64;3872:44:50;;;12214:21:64;12271:1;12251:18;;;12244:29;12309:10;12289:18;;;12282:38;12337:18;;3872:44:50;12030:331:64;3872:44:50;3926:22;3951:97;;;;;;;;3965:56;3984:4;3990:8;:14;;;4006:8;:14;;;3965:18;:56::i;:::-;3951:97;;;;;;4031:15;3951:97;;;;;3926:122;;4063:9;4058:510;4074:22;;;4058:510;;;4146:16;;;4117:26;4146:16;;;:10;:16;;;;;4117:26;4163:11;;4175:1;4163:14;;;;;;;:::i;:::-;;;;;;;;;;4146:32;;-1:-1:-1;4146:32:50;;;;;;;;;;;-1:-1:-1;4146:32:50;;;4117:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4214:18;;;:6;:18;;;;;;4117:61;;-1:-1:-1;;;4233:11:50;;4245:1;4233:14;;;;;;;:::i;:::-;;;;;;;;;;4214:34;;-1:-1:-1;4214:34:50;;;;;;;;-1:-1:-1;4214:34:50;4270:29;;4214:34;;-1:-1:-1;4270:29:50;;:34;4262:57;;;;;;;13587:2:64;4262:57:50;;;13569:21:64;13626:2;13606:18;;;13599:30;13665:12;13645:18;;;13638:40;13695:18;;4262:57:50;13385:334:64;4262:57:50;4360:9;:19;;;4341:38;;:15;:38;;:77;;;;;4401:9;:17;;;4383:35;;:15;:35;4341:77;4333:108;;;;;;;15294:2:64;4333:108:50;;;15276:21:64;15333:2;15313:18;;;15306:30;15372:20;15352:18;;;15345:48;15410:18;;4333:108:50;15092:342:64;4333:108:50;4455:18;;;;:6;:18;;;;;4492:9;;4474:11;;4486:1;4474:14;;;;;;;:::i;:::-;;;;;;;;;;4455:34;;-1:-1:-1;4455:34:50;;;;;;;;;-1:-1:-1;4455:34:50;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4542:11;;4554:1;4542:14;;;;;;;:::i;:::-;;;;;;;4530:10;4520:37;;;;;;;;;;4103:465;;4098:3;;;;;:::i;:::-;;;;4058:510;;;;3645:929;;;3565:1009;;;:::o;2064:709::-;2164:14;2188:15;2164:40;;2233:9;:19;;;2222:30;;:7;:30;;;;2214:58;;;;;;;14950:2:64;2214:58:50;;;14932:21:64;14989:2;14969:18;;;14962:30;15028:17;15008:18;;;15001:45;15063:18;;2214:58:50;14748:339:64;2214:58:50;2312:9;:17;;;2290:39;;:9;:19;;;:39;;;2282:66;;;;;;;13926:2:64;2282:66:50;;;13908:21:64;13965:2;13945:18;;;13938:30;14004:16;13984:18;;;13977:44;14038:18;;2282:66:50;13724:338:64;2282:66:50;2396:9;:16;;;2366:46;;:9;:17;;;2386:7;2366:27;;;;:::i;:::-;:46;;;2358:74;;;;;;;14606:2:64;2358:74:50;;;14588:21:64;14645:2;14625:18;;;14618:30;14684:17;14664:18;;;14657:45;14719:18;;2358:74:50;14404:339:64;2358:74:50;2450:26;;;;:31;;2442:54;;;;;;;12913:2:64;2442:54:50;;;12895:21:64;12952:2;12932:18;;;12925:30;12991:12;12971:18;;;12964:40;13021:18;;2442:54:50;12711:334:64;2442:54:50;2533:1;2506:24;;;:28;;;;2544:16;;;;:10;:16;;;;;;;;2561:14;:20;;;;;:22;;2506:9;;2533:1;;2561:22;;;:::i;:::-;;;;-1:-1:-1;2544:40:50;;;;;;;;;;;;;;-1:-1:-1;2544:40:50;;;:52;;;;;;;;;;;;;;;;;-1:-1:-1;2544:52:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2616:15;;;;2660:26;;;;2606:88;;2616:15;2633:10;;2653:4;;2606:88;;:9;:88::i;:::-;2750:15;;;;;2709:57;2728:20;;;;;;;:14;:20;;;;;;;;2709:57;;;;;;;2728:20;;2709:57;;2728:20;2709:57;2154:619;2064:709;;:::o;6376:932::-;6457:15;6547:11;;:33;;;;;;;;16246:25:64;;;6457:15:50;;;;6547:11;;;;;:21;;16219:18:64;;6547:33:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6624:13;;6676:16;;;;6590:31;6676:16;;;:10;:16;;;;;;;;:28;;;;;;;;6647:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6735:18;;;:6;:18;;;;;:31;;;;;;;;;6714:52;;;;;;;;;;;;;;;;;;;;;;;;;;6624:13;;-1:-1:-1;6624:13:50;;6780:19;6776:526;;6815:21;6898:5;:29;;;6839:88;;:56;6858:4;6864:8;:14;;;6880:8;:14;;;6839:18;:56::i;:::-;:88;;;;:::i;:::-;6815:112;;6973:8;:18;;;6957:34;;:13;:34;;;;:::i;:::-;6941:50;;7005:15;7041:9;:17;;;7023:35;;:15;:35;:73;;7081:15;7023:73;;;7061:9;:17;;;7023:73;;;7005:91;;7110:24;7180:9;:24;;;7137:67;;7173:3;7149:9;:19;;;7139:29;;:7;:29;;;;:::i;:::-;7137:67;;;7138:38;7137:67;:::i;:::-;7110:94;;7275:16;7258:13;7229:9;:26;;;:42;;;;;;:::i;:::-;7228:63;;;;:::i;:::-;7218:73;;6801:501;;;6776:526;6497:811;;;;6376:932;;;;;:::o;4580:1790::-;4753:11;;:31;;;;;;;;16246:25:64;;;4788:10:50;;4753:45;:11;;:19;;16219:18:64;;4753:31:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;;4745:67;;;;;;;14269:2:64;4745:67:50;;;14251:21:64;14308:1;14288:18;;;14281:29;14346:11;14326:18;;;14319:39;14375:18;;4745:67:50;14067:332:64;4745:67:50;4823:37;4863:11;;:33;;;;;;;;16246:25:64;;;4863:11:50;;;;;:21;;16219:18:64;;4863:33:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4823:73;;4906:31;4940:8;:13;;;4906:47;;4964:28;4995:56;5014:4;5020:8;:14;;;5036:8;:14;;;4995:18;:56::i;:::-;4964:87;;5067:9;5062:1302;5086:12;:19;5082:1;:23;5062:1302;;;5156:16;;;5126:27;5156:16;;;:10;:16;;;;;5173:15;;5126:27;;5173:12;;5186:1;;5173:15;;;;;;:::i;:::-;;;;;;;5156:33;;;;;;;;;;;5126:63;;5203:19;5225:6;:18;5232:10;5225:18;;;;;;;;;;;:35;5244:12;5257:1;5244:15;;;;;;;;:::i;:::-;;;;;;;5225:35;;;;;;;;;;;5203:57;;5302:8;:23;;;5283:42;;:5;:15;;;;;;;;;;;;:42;;;;5275:71;;;;;;;12568:2:64;5275:71:50;;;12550:21:64;12607:2;12587:18;;;12580:30;12646:18;12626;;;12619:46;12682:18;;5275:71:50;12366:340:64;5275:71:50;5491:29;;5361:15;;;;;;5468:52;;5491:29;;5468:20;:52;:::i;:::-;5574:17;;;;5444:76;;-1:-1:-1;5538:15:50;;5574:17;;;;;5556:15;:35;:73;;5614:15;5556:73;;;5594:17;;;;;;;;;5556:73;5717:24;;;;;5686:19;;;5538:91;;-1:-1:-1;5647:24:50;;5717;;;;;5710:3;;5676:29;;5686:19;;;;;5538:91;5676:29;:::i;:::-;5674:67;;;5675:38;5674:67;:::i;:::-;5647:94;;5791:8;:18;;;5775:34;;:13;:34;;;;:::i;:::-;5879:26;;;;5759:50;;-1:-1:-1;5925:16:50;;5879:42;;5759:50;;5879:26;;;;;:42;:::i;:::-;5878:63;;;;:::i;:::-;5992:61;;;;;;;;;;;;;;6067:24;;;:50;;5868:73;;-1:-1:-1;6103:13:50;;-1:-1:-1;6067:24:50;-1:-1:-1;;;;6067:50:50;;6103:13;;6067:50;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6168:7;6131:9;:26;;;:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6191:74;6201:9;:15;;;;;;;;;;;;6226:4;6233:9;6244:7;6253:11;6191:9;:74::i;:::-;6326:9;6285:68;;6309:12;6322:1;6309:15;;;;;;;;:::i;:::-;;;;;;;6297:10;6285:68;6344:7;6285:68;;;;;16710:26:64;16698:39;;;;16680:58;;16668:2;16653:18;;16535:209;6285:68:50;;;;;;;;5112:1252;;;;5107:3;;;;;:::i;:::-;;;;5062:1302;;;;4735:1635;;;4580:1790;;;;:::o;7391:976::-;7537:21;7573:17;7594:4;:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7661:21;;;;;12008:1:64;11997:21;;;7661::50;;;11979:40:64;7570:54:50;;-1:-1:-1;7635:23:50;;-1:-1:-1;7661:10:50;;;;;;11952:18:64;;7661:21:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7718;;;;;12008:1:64;11997:21;;;7718::50;;;11979:40:64;7635:47:50;;-1:-1:-1;7692:23:50;;7718:10;;;;;;11952:18:64;;7718:21:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7692:47;;7751:27;7784:4;:39;;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7750:75;;;;;7835:20;7865;7913:11;7900:24;;:9;:24;;;7896:190;;7955:5;:26;;;7940:41;;;;7896:190;;;8049:26;;;;8027:48;;;;:19;:48;:::i;:::-;8012:63;;7896:190;8114:9;8100:23;;:11;:23;;;8096:189;;;-1:-1:-1;8154:26:50;;;;8139:41;;8096:189;;;8248:26;;;;8226:48;;;;:19;:48;:::i;:::-;8211:63;;8096:189;8348:12;8311:34;8333:12;8311:19;:34;:::i;:::-;:49;;;;:::i;:::-;8295:65;7391:976;-1:-1:-1;;;;;;;;;;7391:976:50:o;8373:319::-;8536:11;8532:154;;;8563:42;;;;;:14;9825:15:64;;;8563:42:50;;;9807:34:64;9877:15;;;9857:18;;;9850:43;9929:15;;;9909:18;;;9902:43;8595:1:50;9961:18:64;;;9954:34;10004:19;;;9997:35;;;8563:5:50;:14;;;;9718:19:64;;8563:42:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;8532:154;;;8636:39;;;;;:14;10353:15:64;;;8636:39:50;;;10335:34:64;10405:15;;;10385:18;;;10378:43;10457:15;;;10437:18;;;10430:43;10489:18;;;10482:34;;;8636:5:50;:14;;;;10246:19:64;;8636:39:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8532:154;8373:319;;;;;:::o;14:134:64:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:160::-;218:20;;274:13;;267:21;257:32;;247:60;;303:1;300;293:12;318:192;397:13;;450:34;439:46;;429:57;;419:85;;500:1;497;490:12;515:132;582:20;;611:30;582:20;611:30;:::i;652:179::-;719:20;;779:26;768:38;;758:49;;748:77;;821:1;818;811:12;836:251;906:6;959:2;947:9;938:7;934:23;930:32;927:52;;;975:1;972;965:12;927:52;1007:9;1001:16;1026:31;1051:5;1026:31;:::i;:::-;1076:5;836:251;-1:-1:-1;;;836:251:64:o;1092:282::-;1186:6;1239:2;1227:9;1218:7;1214:23;1210:32;1207:52;;;1255:1;1252;1245:12;1207:52;1294:9;1281:23;1313:31;1338:5;1313:31;:::i;1379:556::-;1487:6;1495;1503;1556:2;1544:9;1535:7;1531:23;1527:32;1524:52;;;1572:1;1569;1562:12;1524:52;1611:9;1598:23;1630:31;1655:5;1630:31;:::i;:::-;1680:5;-1:-1:-1;1737:2:64;1722:18;;1709:32;1750:31;1709:32;1750:31;:::i;:::-;1800:7;-1:-1:-1;1859:2:64;1844:18;;1831:32;1872:31;1831:32;1872:31;:::i;:::-;1922:7;1912:17;;;1379:556;;;;;:::o;1940:1310::-;2071:6;2079;2123:9;2114:7;2110:23;2153:3;2149:2;2145:12;2142:32;;;2170:1;2167;2160:12;2142:32;2209:9;2196:23;2228:31;2253:5;2228:31;:::i;:::-;2278:5;-1:-1:-1;2376:4:64;2307:66;2299:75;;2295:86;2292:106;;;2394:1;2391;2384:12;2292:106;;2422:22;;:::i;:::-;2496:2;2485:9;2481:18;2468:32;2509:33;2534:7;2509:33;:::i;:::-;2551:24;;2627:2;2612:18;;2599:32;2640:33;2599:32;2640:33;:::i;:::-;2702:2;2689:16;;2682:33;2767:2;2752:18;;2739:32;2780;2739;2780;:::i;:::-;2841:2;2828:16;;2821:33;2906:3;2891:19;;2878:33;2920:32;2878:33;2920:32;:::i;:::-;2981:2;2968:16;;2961:33;3029:38;3062:3;3047:19;;3029:38;:::i;:::-;3023:3;3014:7;3010:17;3003:65;3103:39;3137:3;3126:9;3122:19;3103:39;:::i;:::-;3097:3;3088:7;3084:17;3077:66;3178:39;3211:4;3200:9;3196:20;3178:39;:::i;:::-;3172:3;3163:7;3159:17;3152:66;3237:7;3227:17;;;1940:1310;;;;;:::o;3255:350::-;3358:6;3366;3419:2;3407:9;3398:7;3394:23;3390:32;3387:52;;;3435:1;3432;3425:12;3387:52;3474:9;3461:23;3493:31;3518:5;3493:31;:::i;:::-;3543:5;3595:2;3580:18;;;;3567:32;;-1:-1:-1;;;3255:350:64:o;3610:633::-;3736:6;3744;3752;3760;3768;3821:3;3809:9;3800:7;3796:23;3792:33;3789:53;;;3838:1;3835;3828:12;3789:53;3877:9;3864:23;3896:31;3921:5;3896:31;:::i;:::-;3946:5;-1:-1:-1;3998:2:64;3983:18;;3970:32;;-1:-1:-1;4054:2:64;4039:18;;4026:32;4067:33;4026:32;4067:33;:::i;:::-;4119:7;-1:-1:-1;4145:37:64;4178:2;4163:18;;4145:37;:::i;:::-;4135:47;;4201:36;4232:3;4221:9;4217:19;4201:36;:::i;:::-;4191:46;;3610:633;;;;;;;;:::o;4248:1110::-;4344:6;4397:3;4385:9;4376:7;4372:23;4368:33;4365:53;;;4414:1;4411;4404:12;4365:53;4447:2;4441:9;4489:3;4481:6;4477:16;4559:6;4547:10;4544:22;4523:18;4511:10;4508:34;4505:62;4502:88;;;4570:18;;:::i;:::-;4606:2;4599:22;4643:16;;4668:31;4643:16;4668:31;:::i;:::-;4708:21;;4762:49;4807:2;4792:18;;4762:49;:::i;:::-;4757:2;4749:6;4745:15;4738:74;4857:2;4846:9;4842:18;4836:25;4870:31;4893:7;4870:31;:::i;:::-;4929:2;4917:15;;4910:32;4987:2;4972:18;;4966:25;5000:31;4966:25;5000:31;:::i;:::-;5059:2;5047:15;;5040:32;5117:3;5102:19;;5096:26;5131:32;5096:26;5131:32;:::i;:::-;5191:3;5179:16;;5172:33;5260:3;5245:19;;;5239:26;5221:16;;;5214:52;5321:3;5306:19;;;5300:26;5282:16;;;5275:52;;;;-1:-1:-1;5183:6:64;4248:1110;-1:-1:-1;4248:1110:64:o;5363:973::-;5455:6;5508:3;5496:9;5487:7;5483:23;5479:33;5476:53;;;5525:1;5522;5515:12;5476:53;5558:2;5552:9;5600:3;5592:6;5588:16;5670:6;5658:10;5655:22;5634:18;5622:10;5619:34;5616:62;5613:88;;;5681:18;;:::i;:::-;5717:2;5710:22;5754:16;;5779:29;5754:16;5779:29;:::i;:::-;5817:21;;5883:2;5868:18;;5862:25;5896:31;5862:25;5896:31;:::i;:::-;5955:2;5943:15;;5936:32;6001:49;6046:2;6031:18;;6001:49;:::i;:::-;5996:2;5988:6;5984:15;5977:74;6105:2;6094:9;6090:18;6084:25;6079:2;6071:6;6067:15;6060:50;6165:3;6154:9;6150:19;6144:26;6138:3;6130:6;6126:16;6119:52;6216:3;6205:9;6201:19;6195:26;6230:33;6255:7;6230:33;:::i;:::-;6291:3;6279:16;;6272:33;6283:6;5363:973;-1:-1:-1;;;5363:973:64:o;6341:381::-;6418:6;6426;6479:2;6467:9;6458:7;6454:23;6450:32;6447:52;;;6495:1;6492;6485:12;6447:52;6527:9;6521:16;6546:31;6571:5;6546:31;:::i;:::-;6646:2;6631:18;;6625:25;6596:5;;-1:-1:-1;6659:31:64;6625:25;6659:31;:::i;:::-;6709:7;6699:17;;;6341:381;;;;;:::o;6727:383::-;6805:6;6813;6866:2;6854:9;6845:7;6841:23;6837:32;6834:52;;;6882:1;6879;6872:12;6834:52;6914:9;6908:16;6933:31;6958:5;6933:31;:::i;:::-;7033:2;7018:18;;7012:25;6983:5;;-1:-1:-1;7046:32:64;7012:25;7046:32;:::i;7115:683::-;7210:6;7218;7226;7279:2;7267:9;7258:7;7254:23;7250:32;7247:52;;;7295:1;7292;7285:12;7247:52;7331:9;7318:23;7308:33;;7392:2;7381:9;7377:18;7364:32;7415:18;7456:2;7448:6;7445:14;7442:34;;;7472:1;7469;7462:12;7442:34;7510:6;7499:9;7495:22;7485:32;;7555:7;7548:4;7544:2;7540:13;7536:27;7526:55;;7577:1;7574;7567:12;7526:55;7617:2;7604:16;7643:2;7635:6;7632:14;7629:34;;;7659:1;7656;7649:12;7629:34;7712:7;7707:2;7697:6;7694:1;7690:14;7686:2;7682:23;7678:32;7675:45;7672:65;;;7733:1;7730;7723:12;7672:65;7764:2;7760;7756:11;7746:21;;7786:6;7776:16;;;;;7115:683;;;;;:::o;7803:1168::-;7911:6;7919;7927;7935;7988:3;7976:9;7967:7;7963:23;7959:33;7956:53;;;8005:1;8002;7995:12;7956:53;8041:9;8028:23;8018:33;;8070:2;8123;8112:9;8108:18;8095:32;8146:18;8187:2;8179:6;8176:14;8173:34;;;8203:1;8200;8193:12;8173:34;8241:6;8230:9;8226:22;8216:32;;8286:7;8279:4;8275:2;8271:13;8267:27;8257:55;;8308:1;8305;8298:12;8257:55;8344:2;8331:16;8366:2;8362;8359:10;8356:36;;;8372:18;;:::i;:::-;8418:2;8415:1;8411:10;8401:20;;8441:28;8465:2;8461;8457:11;8441:28;:::i;:::-;8503:15;;;8534:12;;;;8566:11;;;8596;;;8592:20;;8589:33;-1:-1:-1;8586:53:64;;;8635:1;8632;8625:12;8586:53;8657:1;8648:10;;8667:163;8681:2;8678:1;8675:9;8667:163;;;8738:17;;8726:30;;8699:1;8692:9;;;;;8776:12;;;;8808;;8667:163;;;8671:3;8849:5;8839:15;;;;;;;;8873:38;8907:2;8896:9;8892:18;8873:38;:::i;:::-;8863:48;;8930:35;8961:2;8950:9;8946:18;8930:35;:::i;:::-;8920:45;;7803:1168;;;;;;;:::o;8976:248::-;9044:6;9052;9105:2;9093:9;9084:7;9080:23;9076:32;9073:52;;;9121:1;9118;9111:12;9073:52;-1:-1:-1;;9144:23:64;;;9214:2;9199:18;;;9186:32;;-1:-1:-1;8976:248:64:o;9229:245::-;9308:6;9316;9369:2;9357:9;9348:7;9344:23;9340:32;9337:52;;;9385:1;9382;9375:12;9337:52;-1:-1:-1;;9408:16:64;;9464:2;9449:18;;;9443:25;9408:16;;9443:25;;-1:-1:-1;9229:245:64:o;16962:253::-;17034:2;17028:9;17076:4;17064:17;;17111:18;17096:34;;17132:22;;;17093:62;17090:88;;;17158:18;;:::i;:::-;17194:2;17187:22;16962:253;:::o;17220:334::-;17291:2;17285:9;17347:2;17337:13;;17352:66;17333:86;17321:99;;17450:18;17435:34;;17471:22;;;17432:62;17429:88;;;17497:18;;:::i;:::-;17533:2;17526:22;17220:334;;-1:-1:-1;17220:334:64:o;17559:261::-;17599:3;17627:42;17696:2;17693:1;17689:10;17726:2;17723:1;17719:10;17757:3;17753:2;17749:12;17744:3;17741:21;17738:47;;;17765:18;;:::i;:::-;17801:13;;17559:261;-1:-1:-1;;;;17559:261:64:o;17825:228::-;17864:3;17892:10;17929:2;17926:1;17922:10;17959:2;17956:1;17952:10;17990:3;17986:2;17982:12;17977:3;17974:21;17971:47;;;17998:18;;:::i;18058:274::-;18098:1;18124;18114:189;;18159:77;18156:1;18149:88;18260:4;18257:1;18250:15;18288:4;18285:1;18278:15;18114:189;-1:-1:-1;18317:9:64;;18058:274::o;18337:228::-;18377:7;18503:1;18435:66;18431:74;18428:1;18425:81;18420:1;18413:9;18406:17;18402:105;18399:131;;;18510:18;;:::i;:::-;-1:-1:-1;18550:9:64;;18337:228::o;18570:125::-;18610:4;18638:1;18635;18632:8;18629:34;;;18643:18;;:::i;:::-;-1:-1:-1;18680:9:64;;18570:125::o;18700:237::-;18739:4;18768:26;18844:10;;;;18814;;18866:12;;;18863:38;;;18881:18;;:::i;:::-;18918:13;;18700:237;-1:-1:-1;;;18700:237:64:o;18942:195::-;18981:3;19012:66;19005:5;19002:77;18999:103;;;19082:18;;:::i;:::-;-1:-1:-1;19129:1:64;19118:13;;18942:195::o;19142:184::-;19194:77;19191:1;19184:88;19291:4;19288:1;19281:15;19315:4;19312:1;19305:15;19331:184;19383:77;19380:1;19373:88;19480:4;19477:1;19470:15;19504:4;19501:1;19494:15;19520:184;19572:77;19569:1;19562:88;19669:4;19666:1;19659:15;19693:4;19690:1;19683:15;19709:154;19795:42;19788:5;19784:54;19777:5;19774:65;19764:93;;19853:1;19850;19843:12;19764:93;19709:154;:::o;19868:118::-;19955:5;19952:1;19941:20;19934:5;19931:31;19921:59;;19976:1;19973;19966:12;19991:121;20076:10;20069:5;20065:22;20058:5;20055:33;20045:61;;20102:1;20099;20092:12"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "1997000",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "addIncentive(address,(address,address,uint32,uint32,uint32,uint160,uint96))": "infinite",
                "bento()": "infinite",
                "claimRewards(uint256,uint256[],address,bool)": "infinite",
                "getReward(uint256,uint256)": "infinite",
                "incentiveCount(address)": "2546",
                "incentives(address,uint256)": "7112",
                "poolManager()": "2357",
                "rangeSecondsInside(address,int24,int24)": "infinite",
                "reclaimIncentive(address,uint256,address,uint96,bool)": "infinite",
                "stakes(uint256,uint256)": "2643",
                "subscribe(uint256,uint256[])": "infinite"
              },
              "internal": {
                "_transfer(address,address,address,uint256,bool)": "infinite"
              }
            },
            "methodIdentifiers": {
              "addIncentive(address,(address,address,uint32,uint32,uint32,uint160,uint96))": "8dde6dba",
              "bento()": "4da31827",
              "claimRewards(uint256,uint256[],address,bool)": "cc6fa8c9",
              "getReward(uint256,uint256)": "b90bc519",
              "incentiveCount(address)": "71fa6b4d",
              "incentives(address,uint256)": "32e2e213",
              "poolManager()": "dc4c90d3",
              "rangeSecondsInside(address,int24,int24)": "df674218",
              "reclaimIncentive(address,uint256,address,uint96,bool)": "55a93140",
              "stakes(uint256,uint256)": "b221e5fd",
              "subscribe(uint256,uint256[])": "897217bc"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IConcentratedLiquidityPoolManager\",\"name\":\"_poolManager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConcentratedLiquidityPool\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"incentiveId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"rewardToken\",\"type\":\"address\"}],\"name\":\"AddIncentive\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"incentiveId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"}],\"name\":\"ClaimReward\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contract IConcentratedLiquidityPool\",\"name\":\"pool\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"incentiveId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ReclaimIncentive\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"incentiveId\",\"type\":\"uint256\"}],\"name\":\"Subscribe\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IConcentratedLiquidityPool\",\"name\":\"pool\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"startTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"endTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expiry\",\"type\":\"uint32\"},{\"internalType\":\"uint160\",\"name\":\"secondsClaimed\",\"type\":\"uint160\"},{\"internalType\":\"uint96\",\"name\":\"rewardsUnclaimed\",\"type\":\"uint96\"}],\"internalType\":\"struct ConcentratedLiquidityPoolStaker.Incentive\",\"name\":\"incentive\",\"type\":\"tuple\"}],\"name\":\"addIncentive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bento\",\"outputs\":[{\"internalType\":\"contract IBentoBoxMinimal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"incentiveIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"unwrapBento\",\"type\":\"bool\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"incentiveId\",\"type\":\"uint256\"}],\"name\":\"getReward\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"secondsInside\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConcentratedLiquidityPool\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"incentiveCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConcentratedLiquidityPool\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"incentives\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"startTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"endTime\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expiry\",\"type\":\"uint32\"},{\"internalType\":\"uint160\",\"name\":\"secondsClaimed\",\"type\":\"uint160\"},{\"internalType\":\"uint96\",\"name\":\"rewardsUnclaimed\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolManager\",\"outputs\":[{\"internalType\":\"contract IConcentratedLiquidityPoolManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConcentratedLiquidityPool\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"lowerTick\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upperTick\",\"type\":\"int24\"}],\"name\":\"rangeSecondsInside\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"secondsInside\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IConcentratedLiquidityPool\",\"name\":\"pool\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"incentiveId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"amount\",\"type\":\"uint96\"},{\"internalType\":\"bool\",\"name\":\"unwrapBento\",\"type\":\"bool\"}],\"name\":\"reclaimIncentive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"stakes\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"secondsGrowthInsideLast\",\"type\":\"uint160\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"positionId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"incentiveId\",\"type\":\"uint256[]\"}],\"name\":\"subscribe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"rangeSecondsInside(address,int24,int24)\":{\"details\":\"Calculates the \\\"seconds per liquidity\\\" accumulator for a range.\"},\"reclaimIncentive(address,uint256,address,uint96,bool)\":{\"details\":\"Withdraws any unclaimed incentive rewards.\"},\"subscribe(uint256,uint256[])\":{\"details\":\"Subscribes a non-fungible position token to an incentive.\"}},\"stateVariables\":{\"stakes\":{\"details\":\"When subscribing to an incentive we take a snapshot of the position secondsGrowth accumulator.positionId to incentiveId to position's secondsGrowth snapshot mapping.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Trident Concentrated Liquidity Pool periphery contract that combines non-fungible position management and staking.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/concentrated/ConcentratedLiquidityPoolStaker.sol\":\"ConcentratedLiquidityPoolStaker\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentNFT.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident NFT interface.\\ninterface ITridentNFT {\\n    function ownerOf(uint256) external view returns (address);\\n}\\n\",\"keccak256\":\"0x201d5d09d03fc77feab8fceddd2d4fe9c619ccf048e89dd121b880764e31dd8b\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/concentratedPool/IConcentratedLiquidityPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./../IPool.sol\\\";\\nimport \\\"./../IBentoBoxMinimal.sol\\\";\\nimport \\\"./../IMasterDeployer.sol\\\";\\nimport \\\"../../libraries/concentratedPool/Ticks.sol\\\";\\n\\n/// @notice Trident Concentrated Liquidity Pool interface.\\ninterface IConcentratedLiquidityPool is IPool {\\n    function price() external view returns (uint160);\\n\\n    function token0() external view returns (address);\\n\\n    function token1() external view returns (address);\\n\\n    function ticks(int24 _tick) external view returns (Ticks.Tick memory tick);\\n\\n    function feeGrowthGlobal0() external view returns (uint256);\\n\\n    function feeGrowthGlobal1() external view returns (uint256);\\n\\n    function rangeFeeGrowth(int24 lowerTick, int24 upperTick) external view returns (uint256 feeGrowthInside0, uint256 feeGrowthInside1);\\n\\n    function collect(\\n        int24,\\n        int24,\\n        address,\\n        bool\\n    ) external returns (uint256 amount0fees, uint256 amount1fees);\\n\\n    function decreaseLiquidity(\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        address recipient,\\n        bool unwrapBento\\n    )\\n        external\\n        returns (\\n            TokenAmount[] memory withdrawnAmounts,\\n            TokenAmount[] memory feesWithdrawn,\\n            uint256 oldLiquidity\\n        );\\n\\n    function getImmutables()\\n        external\\n        view\\n        returns (\\n            uint128 _MAX_TICK_LIQUIDITY,\\n            uint24 _tickSpacing,\\n            uint24 _swapFee,\\n            address _barFeeTo,\\n            IBentoBoxMinimal _bento,\\n            IMasterDeployer _masterDeployer,\\n            address _token0,\\n            address _token1\\n        );\\n\\n    function getPriceAndNearestTicks() external view returns (uint160 _price, int24 _nearestTick);\\n\\n    function getTokenProtocolFees() external view returns (uint128 _token0ProtocolFee, uint128 _token1ProtocolFee);\\n\\n    function getReserves() external view returns (uint128 _reserve0, uint128 _reserve1);\\n\\n    function getSecondsGrowthAndLastObservation() external view returns (uint160 _secondGrowthGlobal, uint32 _lastObservation);\\n}\\n\",\"keccak256\":\"0xf36fa12652a134eb2b8bfe1cde732ff493fd8b4afa3c290ccd12bb77f04af277\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/concentratedPool/IConcentratedLiquidityPoolManager.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./IConcentratedLiquidityPool.sol\\\";\\nimport \\\"./../ITridentNFT.sol\\\";\\n\\n/// @notice Trident concentrated liquidity manager contract Struct.\\n/// @dev Split out struct and function declarations due to solidity quirks.\\ninterface IConcentratedLiquidityPoolManagerStruct {\\n    struct Position {\\n        IConcentratedLiquidityPool pool;\\n        uint128 liquidity;\\n        int24 lower;\\n        int24 upper;\\n        uint32 latestAddition;\\n        uint256 feeGrowthInside0; /// @dev Per unit of liquidity.\\n        uint256 feeGrowthInside1;\\n    }\\n}\\n\\n/// @notice Trident concentrated liquidity manager contract interface.\\ninterface IConcentratedLiquidityPoolManager is IConcentratedLiquidityPoolManagerStruct, ITridentNFT {\\n    function positions(uint256) external view returns (Position memory);\\n\\n    function bento() external view returns (IBentoBoxMinimal);\\n}\\n\",\"keccak256\":\"0xaa99eb9fa16344737dbeff84b91e7020823c48a3816ff3fa807806a25af7c67e\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/concentratedPool/TickMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Math library for computing sqrt price for ticks of size 1.0001, i.e., sqrt(1.0001^tick) as fixed point Q64.96 numbers - supports\\n/// prices between 2**-128 and 2**128 - 1.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/TickMath.sol.\\nlibrary TickMath {\\n    /// @dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128.\\n    int24 internal constant MIN_TICK = -887272;\\n    /// @dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128 - 1.\\n    int24 internal constant MAX_TICK = -MIN_TICK;\\n    /// @dev The minimum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MIN_TICK).\\n    uint160 internal constant MIN_SQRT_RATIO = 4295128739;\\n    /// @dev The maximum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MAX_TICK).\\n    uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;\\n\\n    error TickOutOfBounds();\\n    error PriceOutOfBounds();\\n\\n    /// @notice Calculates sqrt(1.0001^tick) * 2^96.\\n    /// @dev Throws if |tick| > max tick.\\n    /// @param tick The input tick for the above formula.\\n    /// @return sqrtPriceX96 Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\\n    /// at the given tick.\\n    function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {\\n        uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));\\n        if (absTick > uint256(uint24(MAX_TICK))) revert TickOutOfBounds();\\n        unchecked {\\n            uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;\\n            if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;\\n            if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;\\n            if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;\\n            if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;\\n            if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;\\n            if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;\\n            if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;\\n            if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;\\n            if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;\\n            if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;\\n            if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;\\n            if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;\\n            if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;\\n            if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;\\n            if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;\\n            if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;\\n            if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;\\n            if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;\\n            if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;\\n\\n            if (tick > 0) ratio = type(uint256).max / ratio;\\n            // This divides by 1<<32 rounding up to go from a Q128.128 to a Q128.96.\\n            // We then downcast because we know the result always fits within 160 bits due to our tick input constraint.\\n            // We round up in the division so getTickAtSqrtRatio of the output price is always consistent.\\n            sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));\\n        }\\n    }\\n\\n    /// @notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio.\\n    /// @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\\n    /// ever return.\\n    /// @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96.\\n    /// @return tick The greatest tick for which the ratio is less than or equal to the input ratio.\\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {\\n        // Second inequality must be < because the price can never reach the price at the max tick.\\n        if (sqrtPriceX96 < MIN_SQRT_RATIO || sqrtPriceX96 >= MAX_SQRT_RATIO) revert PriceOutOfBounds();\\n        uint256 ratio = uint256(sqrtPriceX96) << 32;\\n\\n        uint256 r = ratio;\\n        uint256 msb;\\n\\n        assembly {\\n            let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(5, gt(r, 0xFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(4, gt(r, 0xFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(3, gt(r, 0xFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(2, gt(r, 0xF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(1, gt(r, 0x3))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := gt(r, 0x1)\\n            msb := or(msb, f)\\n        }\\n        unchecked {\\n            if (msb >= 128) r = ratio >> (msb - 127);\\n            else r = ratio << (127 - msb);\\n\\n            int256 log_2 = (int256(msb) - 128) << 64;\\n\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(63, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(62, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(61, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(60, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(59, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(58, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(57, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(56, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(55, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(54, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(53, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(52, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(51, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(50, f))\\n            }\\n\\n            int256 log_sqrt10001 = log_2 * 255738958999603826347141; // 128.128 number.\\n\\n            int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);\\n            int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);\\n\\n            tick = tickLow == tickHi ? tickLow : getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x78121358a23f8c7f267cc4622b3cd0d94970018c637c61a9f2e99a0fa40b7bda\",\"license\":\"GPL-2.0-or-later\"},\"contracts/libraries/concentratedPool/Ticks.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./TickMath.sol\\\";\\nimport \\\"hardhat/console.sol\\\";\\n\\n/// @notice Tick management library for ranged liquidity.\\nlibrary Ticks {\\n    struct Tick {\\n        int24 previousTick;\\n        int24 nextTick;\\n        uint128 liquidity;\\n        uint256 feeGrowthOutside0; // Per unit of liquidity.\\n        uint256 feeGrowthOutside1;\\n        uint160 secondsGrowthOutside;\\n    }\\n\\n    function getMaxLiquidity(uint24 _tickSpacing) public pure returns (uint128) {\\n        return type(uint128).max / uint128(uint24(TickMath.MAX_TICK) / (2 * uint24(_tickSpacing)));\\n    }\\n\\n    function cross(\\n        mapping(int24 => Tick) storage ticks,\\n        int24 nextTickToCross,\\n        uint160 secondsGrowthGlobal,\\n        uint256 currentLiquidity,\\n        uint256 feeGrowthGlobalA,\\n        uint256 feeGrowthGlobalB,\\n        bool zeroForOne,\\n        uint24 tickSpacing\\n    ) internal returns (uint256, int24) {\\n        ticks[nextTickToCross].secondsGrowthOutside = secondsGrowthGlobal - ticks[nextTickToCross].secondsGrowthOutside;\\n\\n        if (zeroForOne) {\\n            // Moving forward through the linked list.\\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\\n                currentLiquidity -= ticks[nextTickToCross].liquidity; // todo wrap in unchecked {}\\n            } else {\\n                currentLiquidity += ticks[nextTickToCross].liquidity;\\n            }\\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside0;\\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside1;\\n            nextTickToCross = ticks[nextTickToCross].previousTick;\\n        } else {\\n            // Moving backwards through the linked list.\\n            if ((nextTickToCross / int24(tickSpacing)) % 2 == 0) {\\n                currentLiquidity += ticks[nextTickToCross].liquidity;\\n            } else {\\n                currentLiquidity -= ticks[nextTickToCross].liquidity;\\n            }\\n            ticks[nextTickToCross].feeGrowthOutside1 = feeGrowthGlobalB - ticks[nextTickToCross].feeGrowthOutside1;\\n            ticks[nextTickToCross].feeGrowthOutside0 = feeGrowthGlobalA - ticks[nextTickToCross].feeGrowthOutside0;\\n            nextTickToCross = ticks[nextTickToCross].nextTick;\\n        }\\n        return (currentLiquidity, nextTickToCross);\\n    }\\n\\n    function insert(\\n        mapping(int24 => Tick) storage ticks,\\n        uint256 feeGrowthGlobal0,\\n        uint256 feeGrowthGlobal1,\\n        uint160 secondsGrowthGlobal,\\n        int24 lowerOld,\\n        int24 lower,\\n        int24 upperOld,\\n        int24 upper,\\n        uint128 amount,\\n        int24 nearestTick,\\n        uint160 currentPrice\\n    ) public returns (int24) {\\n        require(lower < upper, \\\"WRONG_ORDER\\\");\\n        require(TickMath.MIN_TICK <= lower, \\\"LOWER_RANGE\\\");\\n        require(upper <= TickMath.MAX_TICK, \\\"UPPER_RANGE\\\");\\n\\n        {\\n            // Stack overflow.\\n            uint128 currentLowerLiquidity = ticks[lower].liquidity;\\n            if (currentLowerLiquidity != 0 || lower == TickMath.MIN_TICK) {\\n                // We are adding liquidity to an existing tick.\\n                ticks[lower].liquidity = currentLowerLiquidity + amount;\\n            } else {\\n                // We are inserting a new tick.\\n                Ticks.Tick storage old = ticks[lowerOld];\\n                int24 oldNextTick = old.nextTick;\\n\\n                require((old.liquidity != 0 || lowerOld == TickMath.MIN_TICK) && lowerOld < lower && lower < oldNextTick, \\\"LOWER_ORDER\\\");\\n\\n                if (lower <= nearestTick) {\\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\\n                } else {\\n                    ticks[lower] = Ticks.Tick(lowerOld, oldNextTick, amount, 0, 0, 0);\\n                }\\n\\n                old.nextTick = lower;\\n                ticks[oldNextTick].previousTick = lower;\\n            }\\n        }\\n\\n        uint128 currentUpperLiquidity = ticks[upper].liquidity;\\n        if (currentUpperLiquidity != 0 || upper == TickMath.MAX_TICK) {\\n            // We are adding liquidity to an existing tick.\\n            ticks[upper].liquidity = currentUpperLiquidity + amount;\\n        } else {\\n            // Inserting a new tick.\\n            Ticks.Tick storage old = ticks[upperOld];\\n            int24 oldNextTick = old.nextTick;\\n\\n            require(old.liquidity != 0 && oldNextTick > upper && upperOld < upper, \\\"UPPER_ORDER\\\");\\n\\n            if (upper <= nearestTick) {\\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, feeGrowthGlobal0, feeGrowthGlobal1, secondsGrowthGlobal);\\n            } else {\\n                ticks[upper] = Ticks.Tick(upperOld, oldNextTick, amount, 0, 0, 0);\\n            }\\n            old.nextTick = upper;\\n            ticks[oldNextTick].previousTick = upper;\\n        }\\n\\n        int24 actualNearestTick = TickMath.getTickAtSqrtRatio(currentPrice);\\n\\n        if (nearestTick < upper && upper <= actualNearestTick) {\\n            nearestTick = upper;\\n        } else if (nearestTick < lower && lower <= actualNearestTick) {\\n            nearestTick = lower;\\n        }\\n\\n        return nearestTick;\\n    }\\n\\n    function remove(\\n        mapping(int24 => Tick) storage ticks,\\n        int24 lower,\\n        int24 upper,\\n        uint128 amount,\\n        int24 nearestTick\\n    ) public returns (int24) {\\n        Ticks.Tick storage current = ticks[lower];\\n\\n        if (lower != TickMath.MIN_TICK && current.liquidity == amount) {\\n            // Delete lower tick.\\n            Ticks.Tick storage previous = ticks[current.previousTick];\\n            Ticks.Tick storage next = ticks[current.nextTick];\\n\\n            previous.nextTick = current.nextTick;\\n            next.previousTick = current.previousTick;\\n\\n            if (nearestTick == lower) nearestTick = current.previousTick;\\n\\n            delete ticks[lower];\\n        } else {\\n            unchecked {\\n                current.liquidity -= amount;\\n            }\\n        }\\n\\n        current = ticks[upper];\\n\\n        if (upper != TickMath.MAX_TICK && current.liquidity == amount) {\\n            // Delete upper tick.\\n            Ticks.Tick storage previous = ticks[current.previousTick];\\n            Ticks.Tick storage next = ticks[current.nextTick];\\n\\n            previous.nextTick = current.nextTick;\\n            next.previousTick = current.previousTick;\\n\\n            if (nearestTick == upper) nearestTick = current.previousTick;\\n\\n            delete ticks[upper];\\n        } else {\\n            unchecked {\\n                current.liquidity -= amount;\\n            }\\n        }\\n\\n        return nearestTick;\\n    }\\n}\\n\",\"keccak256\":\"0x3c5bb30d7769f72aad064ab482c1237a794fd1e16fc85c444255227cf93b65d2\",\"license\":\"GPL-2.0-or-later\"},\"contracts/pool/concentrated/ConcentratedLiquidityPoolStaker.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../../interfaces/concentratedPool/IConcentratedLiquidityPool.sol\\\";\\nimport \\\"../../libraries/concentratedPool/Ticks.sol\\\";\\nimport \\\"../../interfaces/IBentoBoxMinimal.sol\\\";\\nimport {IConcentratedLiquidityPoolManager as IPoolManager} from \\\"../../interfaces/concentratedPool/IConcentratedLiquidityPoolManager.sol\\\";\\n\\n/// @notice Trident Concentrated Liquidity Pool periphery contract that combines non-fungible position management and staking.\\ncontract ConcentratedLiquidityPoolStaker {\\n    event AddIncentive(IConcentratedLiquidityPool indexed pool, uint256 indexed incentiveId, address indexed rewardToken);\\n    event Subscribe(uint256 indexed positionId, uint256 indexed incentiveId);\\n    event ClaimReward(uint256 indexed positionId, uint256 indexed incentiveId, address indexed recipient, uint96 amount);\\n    event ReclaimIncentive(IConcentratedLiquidityPool indexed pool, uint256 indexed incentiveId, uint256 amount);\\n\\n    struct Incentive {\\n        address owner;\\n        address token;\\n        uint32 startTime;\\n        uint32 endTime;\\n        uint32 expiry;\\n        uint160 secondsClaimed; // @dev x128.\\n        uint96 rewardsUnclaimed;\\n    }\\n\\n    struct Stake {\\n        uint160 secondsGrowthInsideLast; // @dev x128.\\n        uint32 timestamp;\\n    }\\n\\n    IBentoBoxMinimal public immutable bento;\\n    IPoolManager public poolManager;\\n\\n    mapping(IConcentratedLiquidityPool => uint256) public incentiveCount;\\n    mapping(IConcentratedLiquidityPool => mapping(uint256 => Incentive)) public incentives;\\n    /// @dev When subscribing to an incentive we take a snapshot of the position secondsGrowth accumulator.\\n    /// @dev positionId to incentiveId to position's secondsGrowth snapshot mapping.\\n    mapping(uint256 => mapping(uint256 => Stake)) public stakes;\\n\\n    constructor(IPoolManager _poolManager) {\\n        poolManager = _poolManager;\\n        IBentoBoxMinimal _bento = IBentoBoxMinimal(_poolManager.bento());\\n        _bento.registerProtocol();\\n        bento = _bento;\\n    }\\n\\n    function addIncentive(IConcentratedLiquidityPool pool, Incentive memory incentive) public {\\n        uint32 current = uint32(block.timestamp);\\n        require(current <= incentive.startTime, \\\"ALREADY_STARTED\\\");\\n        require(incentive.startTime < incentive.endTime, \\\"START_PAST_END\\\");\\n        require(incentive.endTime + 90 days < incentive.expiry, \\\"END_PAST_BUFFER\\\");\\n        require(incentive.rewardsUnclaimed != 0, \\\"NO_REWARDS\\\");\\n        incentive.secondsClaimed = 0;\\n        incentives[pool][incentiveCount[pool]++] = incentive;\\n        _transfer(incentive.token, msg.sender, address(this), incentive.rewardsUnclaimed, false);\\n        emit AddIncentive(pool, incentiveCount[pool], incentive.token);\\n    }\\n\\n    /// @dev Withdraws any unclaimed incentive rewards.\\n    function reclaimIncentive(\\n        IConcentratedLiquidityPool pool,\\n        uint256 incentiveId,\\n        address receiver,\\n        uint96 amount,\\n        bool unwrapBento\\n    ) public {\\n        Incentive storage incentive = incentives[pool][incentiveId];\\n        require(incentive.owner == msg.sender, \\\"NOT_OWNER\\\");\\n        require(incentive.expiry < block.timestamp, \\\"EXPIRED\\\");\\n        require(incentive.rewardsUnclaimed >= amount, \\\"ALREADY_CLAIMED\\\");\\n        incentive.rewardsUnclaimed -= uint96(amount);\\n        _transfer(incentive.token, address(this), receiver, amount, unwrapBento);\\n        emit ReclaimIncentive(pool, incentiveId, amount);\\n    }\\n\\n    /// @dev Subscribes a non-fungible position token to an incentive.\\n    function subscribe(uint256 positionId, uint256[] calldata incentiveId) external {\\n        require(poolManager.ownerOf(positionId) == msg.sender, \\\"NOT_OWNER\\\");\\n        IPoolManager.Position memory position = poolManager.positions(positionId);\\n        IConcentratedLiquidityPool pool = position.pool;\\n        require(position.liquidity != 0, \\\"INACTIVE\\\");\\n        Stake memory stakeData = Stake(uint160(rangeSecondsInside(pool, position.lower, position.upper)), uint32(block.timestamp));\\n        for (uint256 i; i < incentiveId.length; i++) {\\n            Incentive memory incentive = incentives[pool][incentiveId[i]];\\n            Stake storage stake = stakes[positionId][incentiveId[i]];\\n            require(stake.secondsGrowthInsideLast == 0, \\\"SUBSCRIBED\\\");\\n            require(block.timestamp >= incentive.startTime && block.timestamp < incentive.endTime, \\\"INACTIVE_INCENTIVE\\\");\\n            stakes[positionId][incentiveId[i]] = stakeData;\\n            emit Subscribe(positionId, incentiveId[i]);\\n        }\\n    }\\n\\n    function claimRewards(\\n        uint256 positionId,\\n        uint256[] memory incentiveIds,\\n        address recipient,\\n        bool unwrapBento\\n    ) public {\\n        require(poolManager.ownerOf(positionId) == msg.sender, \\\"NOT_OWNER\\\");\\n\\n        IPoolManager.Position memory position = poolManager.positions(positionId);\\n        IConcentratedLiquidityPool pool = position.pool;\\n\\n        uint256 currentSecondsGrowth = rangeSecondsInside(pool, position.lower, position.upper);\\n\\n        for (uint256 i = 0; i < incentiveIds.length; i++) {\\n            Incentive storage incentive = incentives[pool][incentiveIds[i]];\\n            Stake storage stake = stakes[positionId][incentiveIds[i]];\\n\\n            require(stake.timestamp >= position.latestAddition, \\\"MUST_RESUBSCRIBE\\\");\\n\\n            uint256 rewards;\\n            uint256 secondsInside;\\n\\n            {\\n                uint256 secondsGrowth = currentSecondsGrowth - stake.secondsGrowthInsideLast;\\n                uint256 maxTime = block.timestamp < incentive.endTime ? incentive.endTime : block.timestamp;\\n                uint256 secondsUnclaimed = ((maxTime - incentive.startTime) << 128) - incentive.secondsClaimed;\\n                secondsInside = secondsGrowth * position.liquidity; // secondsGrowth is multiplied by 2**128\\n                rewards = (incentive.rewardsUnclaimed * secondsInside) / secondsUnclaimed; // 2**128 cancels out\\n            }\\n\\n            stake.secondsGrowthInsideLast = uint160(currentSecondsGrowth);\\n            incentive.secondsClaimed += uint160(secondsInside);\\n            incentive.rewardsUnclaimed -= uint96(rewards);\\n\\n            _transfer(incentive.token, address(this), recipient, rewards, unwrapBento);\\n\\n            emit ClaimReward(positionId, incentiveIds[i], recipient, uint96(rewards));\\n        }\\n    }\\n\\n    function getReward(uint256 positionId, uint256 incentiveId) public view returns (uint256 rewards, uint256 secondsInside) {\\n        IPoolManager.Position memory position = poolManager.positions(positionId);\\n        IConcentratedLiquidityPool pool = position.pool;\\n        Incentive memory incentive = incentives[pool][positionId];\\n        Stake memory stake = stakes[positionId][incentiveId];\\n        if (stake.timestamp > 0) {\\n            uint256 secondsGrowth = rangeSecondsInside(pool, position.lower, position.upper) - stake.secondsGrowthInsideLast;\\n            secondsInside = secondsGrowth * position.liquidity;\\n            uint256 maxTime = block.timestamp < incentive.endTime ? incentive.endTime : block.timestamp;\\n            uint256 secondsUnclaimed = ((maxTime - incentive.startTime) << 128) - incentive.secondsClaimed;\\n            rewards = (incentive.rewardsUnclaimed * secondsInside) / secondsUnclaimed;\\n        }\\n    }\\n\\n    /// @dev Calculates the \\\"seconds per liquidity\\\" accumulator for a range.\\n    function rangeSecondsInside(\\n        IConcentratedLiquidityPool pool,\\n        int24 lowerTick,\\n        int24 upperTick\\n    ) public view returns (uint256 secondsInside) {\\n        (, int24 currentTick) = pool.getPriceAndNearestTicks();\\n\\n        Ticks.Tick memory lower = pool.ticks(lowerTick);\\n        Ticks.Tick memory upper = pool.ticks(upperTick);\\n\\n        (uint256 secondsGrowthGlobal, ) = pool.getSecondsGrowthAndLastObservation();\\n        uint256 secondsBelow;\\n        uint256 secondsAbove;\\n\\n        if (lowerTick <= currentTick) {\\n            secondsBelow = lower.secondsGrowthOutside;\\n        } else {\\n            secondsBelow = secondsGrowthGlobal - lower.secondsGrowthOutside;\\n        }\\n\\n        if (currentTick < upperTick) {\\n            secondsAbove = upper.secondsGrowthOutside;\\n        } else {\\n            secondsAbove = secondsGrowthGlobal - upper.secondsGrowthOutside;\\n        }\\n\\n        secondsInside = secondsGrowthGlobal - secondsBelow - secondsAbove;\\n    }\\n\\n    function _transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 shares,\\n        bool unwrapBento\\n    ) internal {\\n        if (unwrapBento) {\\n            bento.withdraw(token, from, to, 0, shares);\\n        } else {\\n            bento.transfer(token, from, to, shares);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xc5feaf03f76b49d007db16977244e2bc8bf7abf8d16146f3f17ba1a94a96bbe5\",\"license\":\"GPL-3.0-or-later\"},\"hardhat/console.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >= 0.4.22 <0.9.0;\\n\\nlibrary console {\\n\\taddress constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);\\n\\n\\tfunction _sendLogPayload(bytes memory payload) private view {\\n\\t\\tuint256 payloadLength = payload.length;\\n\\t\\taddress consoleAddress = CONSOLE_ADDRESS;\\n\\t\\tassembly {\\n\\t\\t\\tlet payloadStart := add(payload, 32)\\n\\t\\t\\tlet r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)\\n\\t\\t}\\n\\t}\\n\\n\\tfunction log() internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log()\\\"));\\n\\t}\\n\\n\\tfunction logInt(int p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(int)\\\", p0));\\n\\t}\\n\\n\\tfunction logUint(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction logString(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction logBool(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction logAddress(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes(bytes memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes1(bytes1 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes1)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes2(bytes2 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes2)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes3(bytes3 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes3)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes4(bytes4 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes4)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes5(bytes5 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes5)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes6(bytes6 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes6)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes7(bytes7 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes7)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes8(bytes8 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes8)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes9(bytes9 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes9)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes10(bytes10 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes10)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes11(bytes11 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes11)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes12(bytes12 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes12)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes13(bytes13 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes13)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes14(bytes14 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes14)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes15(bytes15 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes15)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes16(bytes16 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes16)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes17(bytes17 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes17)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes18(bytes18 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes18)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes19(bytes19 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes19)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes20(bytes20 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes20)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes21(bytes21 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes21)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes22(bytes22 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes22)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes23(bytes23 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes23)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes24(bytes24 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes24)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes25(bytes25 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes25)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes26(bytes26 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes26)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes27(bytes27 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes27)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes28(bytes28 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes28)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes29(bytes29 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes29)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes30(bytes30 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes30)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes31(bytes31 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes31)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes32(bytes32 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes32)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction log(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction log(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction log(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n}\\n\",\"keccak256\":\"0x72b6a1d297cd3b033d7c2e4a7e7864934bb767db6453623f1c3082c6534547f4\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 15645,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolStaker.sol:ConcentratedLiquidityPoolStaker",
                "label": "poolManager",
                "offset": 0,
                "slot": "0",
                "type": "t_contract(IConcentratedLiquidityPoolManager)2796"
              },
              {
                "astId": 15650,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolStaker.sol:ConcentratedLiquidityPoolStaker",
                "label": "incentiveCount",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_contract(IConcentratedLiquidityPool)2753,t_uint256)"
              },
              {
                "astId": 15658,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolStaker.sol:ConcentratedLiquidityPoolStaker",
                "label": "incentives",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_contract(IConcentratedLiquidityPool)2753,t_mapping(t_uint256,t_struct(Incentive)15634_storage))"
              },
              {
                "astId": 15666,
                "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolStaker.sol:ConcentratedLiquidityPoolStaker",
                "label": "stakes",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_uint256,t_mapping(t_uint256,t_struct(Stake)15639_storage))"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_contract(IConcentratedLiquidityPool)2753": {
                "encoding": "inplace",
                "label": "contract IConcentratedLiquidityPool",
                "numberOfBytes": "20"
              },
              "t_contract(IConcentratedLiquidityPoolManager)2796": {
                "encoding": "inplace",
                "label": "contract IConcentratedLiquidityPoolManager",
                "numberOfBytes": "20"
              },
              "t_mapping(t_contract(IConcentratedLiquidityPool)2753,t_mapping(t_uint256,t_struct(Incentive)15634_storage))": {
                "encoding": "mapping",
                "key": "t_contract(IConcentratedLiquidityPool)2753",
                "label": "mapping(contract IConcentratedLiquidityPool => mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Incentive))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_uint256,t_struct(Incentive)15634_storage)"
              },
              "t_mapping(t_contract(IConcentratedLiquidityPool)2753,t_uint256)": {
                "encoding": "mapping",
                "key": "t_contract(IConcentratedLiquidityPool)2753",
                "label": "mapping(contract IConcentratedLiquidityPool => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_mapping(t_uint256,t_mapping(t_uint256,t_struct(Stake)15639_storage))": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Stake))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_uint256,t_struct(Stake)15639_storage)"
              },
              "t_mapping(t_uint256,t_struct(Incentive)15634_storage)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Incentive)",
                "numberOfBytes": "32",
                "value": "t_struct(Incentive)15634_storage"
              },
              "t_mapping(t_uint256,t_struct(Stake)15639_storage)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Stake)",
                "numberOfBytes": "32",
                "value": "t_struct(Stake)15639_storage"
              },
              "t_struct(Incentive)15634_storage": {
                "encoding": "inplace",
                "label": "struct ConcentratedLiquidityPoolStaker.Incentive",
                "members": [
                  {
                    "astId": 15621,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolStaker.sol:ConcentratedLiquidityPoolStaker",
                    "label": "owner",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_address"
                  },
                  {
                    "astId": 15623,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolStaker.sol:ConcentratedLiquidityPoolStaker",
                    "label": "token",
                    "offset": 0,
                    "slot": "1",
                    "type": "t_address"
                  },
                  {
                    "astId": 15625,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolStaker.sol:ConcentratedLiquidityPoolStaker",
                    "label": "startTime",
                    "offset": 20,
                    "slot": "1",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 15627,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolStaker.sol:ConcentratedLiquidityPoolStaker",
                    "label": "endTime",
                    "offset": 24,
                    "slot": "1",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 15629,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolStaker.sol:ConcentratedLiquidityPoolStaker",
                    "label": "expiry",
                    "offset": 28,
                    "slot": "1",
                    "type": "t_uint32"
                  },
                  {
                    "astId": 15631,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolStaker.sol:ConcentratedLiquidityPoolStaker",
                    "label": "secondsClaimed",
                    "offset": 0,
                    "slot": "2",
                    "type": "t_uint160"
                  },
                  {
                    "astId": 15633,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolStaker.sol:ConcentratedLiquidityPoolStaker",
                    "label": "rewardsUnclaimed",
                    "offset": 20,
                    "slot": "2",
                    "type": "t_uint96"
                  }
                ],
                "numberOfBytes": "96"
              },
              "t_struct(Stake)15639_storage": {
                "encoding": "inplace",
                "label": "struct ConcentratedLiquidityPoolStaker.Stake",
                "members": [
                  {
                    "astId": 15636,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolStaker.sol:ConcentratedLiquidityPoolStaker",
                    "label": "secondsGrowthInsideLast",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint160"
                  },
                  {
                    "astId": 15638,
                    "contract": "contracts/pool/concentrated/ConcentratedLiquidityPoolStaker.sol:ConcentratedLiquidityPoolStaker",
                    "label": "timestamp",
                    "offset": 20,
                    "slot": "0",
                    "type": "t_uint32"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_uint160": {
                "encoding": "inplace",
                "label": "uint160",
                "numberOfBytes": "20"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint32": {
                "encoding": "inplace",
                "label": "uint32",
                "numberOfBytes": "4"
              },
              "t_uint96": {
                "encoding": "inplace",
                "label": "uint96",
                "numberOfBytes": "12"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Trident Concentrated Liquidity Pool periphery contract that combines non-fungible position management and staking.",
            "version": 1
          }
        }
      },
      "contracts/pool/concentrated/TridentNFT.sol": {
        "TridentNFT": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "domainSeperator",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_ALL_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "getApproved",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "noncesForAll",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "supported",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "tokenId",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc721/ERC721.sol,",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "params": {
                  "spender": "Address of the party that can pull `tokenId` from 'owner''s account.",
                  "tokenId": "The Id to approve for `spender`."
                }
              },
              "permit(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "deadline": "The time at which to expire the signature.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "spender": "The address to be approved.",
                  "tokenId": "The Id that is approved for `spender`.",
                  "v": "The recovery byte of the signature."
                }
              },
              "permitAll(address,address,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "deadline": "The time at which to expire the signature.",
                  "operator": "Address of the party that can pull `tokenId`s from 'owner''s account or approve others to do same.",
                  "owner": "The address to be approved.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "v": "The recovery byte of the signature."
                }
              },
              "safeTransferFrom(address,address,uint256)": {
                "params": {
                  "recipient": "The address to move `tokenId` to.",
                  "tokenId": "The Id to move."
                }
              },
              "safeTransferFrom(address,address,uint256,bytes)": {
                "params": {
                  "recipient": "The address to move `tokenId` to.",
                  "tokenId": "The Id to move."
                }
              },
              "setApprovalForAll(address,bool)": {
                "params": {
                  "approved": "The approval status of `operator`.",
                  "operator": "Address of the party that can pull `tokenId`s from 'owner''s account or approve others to do same."
                }
              },
              "supportsInterface(bytes4)": {
                "params": {
                  "interfaceId": "XOR of all function selectors in the reference interface."
                },
                "returns": {
                  "supported": "Returns 'true' if `interfaceId` is flagged as implemented."
                }
              },
              "transfer(address,uint256)": {
                "params": {
                  "recipient": "The address to move `tokenId` to.",
                  "tokenId": "The Id to move."
                }
              },
              "transferFrom(address,address,uint256)": {
                "params": {
                  "recipient": "The address to move `tokenId` to.",
                  "tokenId": "The Id to move."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "PERMIT_ALL_TYPEHASH()": "b4e13c8d",
              "PERMIT_TYPEHASH()": "30adf81f",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "getApproved(uint256)": "081812fc",
              "isApprovedForAll(address,address)": "e985e9c5",
              "name()": "06fdde03",
              "nonces(uint256)": "141a468c",
              "noncesForAll(address)": "904dfb8e",
              "ownerOf(uint256)": "6352211e",
              "permit(address,uint256,uint256,uint8,bytes32,bytes32)": "7ac2ff7b",
              "permitAll(address,address,uint256,uint8,bytes32,bytes32)": "aba07847",
              "safeTransferFrom(address,address,uint256)": "42842e0e",
              "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"domainSeperator\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_ALL_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"noncesForAll\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permitAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"supported\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc721/ERC721.sol,\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"params\":{\"spender\":\"Address of the party that can pull `tokenId` from 'owner''s account.\",\"tokenId\":\"The Id to approve for `spender`.\"}},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"deadline\":\"The time at which to expire the signature.\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"spender\":\"The address to be approved.\",\"tokenId\":\"The Id that is approved for `spender`.\",\"v\":\"The recovery byte of the signature.\"}},\"permitAll(address,address,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"deadline\":\"The time at which to expire the signature.\",\"operator\":\"Address of the party that can pull `tokenId`s from 'owner''s account or approve others to do same.\",\"owner\":\"The address to be approved.\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"v\":\"The recovery byte of the signature.\"}},\"safeTransferFrom(address,address,uint256)\":{\"params\":{\"recipient\":\"The address to move `tokenId` to.\",\"tokenId\":\"The Id to move.\"}},\"safeTransferFrom(address,address,uint256,bytes)\":{\"params\":{\"recipient\":\"The address to move `tokenId` to.\",\"tokenId\":\"The Id to move.\"}},\"setApprovalForAll(address,bool)\":{\"params\":{\"approved\":\"The approval status of `operator`.\",\"operator\":\"Address of the party that can pull `tokenId`s from 'owner''s account or approve others to do same.\"}},\"supportsInterface(bytes4)\":{\"params\":{\"interfaceId\":\"XOR of all function selectors in the reference interface.\"},\"returns\":{\"supported\":\"Returns 'true' if `interfaceId` is flagged as implemented.\"}},\"transfer(address,uint256)\":{\"params\":{\"recipient\":\"The address to move `tokenId` to.\",\"tokenId\":\"The Id to move.\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"recipient\":\"The address to move `tokenId` to.\",\"tokenId\":\"The Id to move.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"EIP-712 typehash for this contract's domain.\"},\"PERMIT_ALL_TYPEHASH()\":{\"notice\":\"EIP-712 typehash for this contract's {permitAll} struct for {setApprovalForAll}.\"},\"PERMIT_TYPEHASH()\":{\"notice\":\"EIP-712 typehash for this contract's {permit} struct for {approve}.\"},\"approve(address,uint256)\":{\"notice\":\"Approves `tokenId` from `msg.sender` 'owner' or 'operator' to be spent by `spender`.\"},\"balanceOf(address)\":{\"notice\":\"'owner' -> balance mapping.\"},\"getApproved(uint256)\":{\"notice\":\"`tokenId` -> 'spender' mapping.\"},\"isApprovedForAll(address,address)\":{\"notice\":\"'owner' -> 'operator' status mapping.\"},\"nonces(uint256)\":{\"notice\":\"'tokenId' -> `nonce` mapping used in {permit} for {approve}.\"},\"noncesForAll(address)\":{\"notice\":\"'owner' -> `tokenId` mapping used in {permitAll} for {setApprovalForAll}.\"},\"ownerOf(uint256)\":{\"notice\":\"`tokenId` -> 'owner' mapping.\"},\"permit(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Triggers an approval from 'owner' to `spender` for a given `tokenId`.\"},\"permitAll(address,address,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Triggers an approval from 'owner' to `operator` that can spend or {approve} spends of 'owner''s `tokenId`s.\"},\"safeTransferFrom(address,address,uint256)\":{\"notice\":\"Transfers `tokenId` from 'owner' to `recipient` with no data. Caller needs ownership or approval from 'owner', and `recipient` must have compatible {onERC721Received} function.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"notice\":\"Transfers `tokenId` from 'owner' to `recipient` with data. Caller needs ownership or approval from 'owner', and `recipient` must have compatible {onERC721Received} function.\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Approves an 'operator' for `msg.sender` 'owner' that can spend or {approve} spends of 'owner''s `tokenId`s.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Provides ERC-165-compatible confirmation for ERC-721 interfaces supported by this contract.\"},\"totalSupply()\":{\"notice\":\"Tracks total liquidity range positions.\"},\"transfer(address,uint256)\":{\"notice\":\"Transfers `tokenId` from 'owner' to `recipient`. Caller needs ownership.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfers `tokenId` from 'owner' to `recipient`. Caller needs ownership or approval from 'owner'.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/concentrated/TridentNFT.sol\":\"TridentNFT\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/pool/concentrated/TridentNFT.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident Concentrated Liquidity Pool ERC-721 implementation with ERC-20/EIP-2612-like extensions,\\n// as well as partially, MetaData and Enumerable extensions.\\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc721/ERC721.sol,\\n// License-Identifier: AGPL-3.0-only, and Shoyu, https://github.com/sushiswap/shoyu/blob/master/contracts/base/BaseNFT721.sol,\\n// License-Identifier: MIT.\\nabstract contract TridentNFT {\\n    event Transfer(address indexed sender, address indexed recipient, uint256 indexed tokenId);\\n    event Approval(address indexed owner, address indexed spender, uint256 indexed tokenId);\\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n    string public constant name = \\\"TridentNFT\\\";\\n    string public constant symbol = \\\"tNFT\\\";\\n    /// @notice Tracks total liquidity range positions.\\n    uint256 public totalSupply;\\n    /// @notice 'owner' -> balance mapping.\\n    mapping(address => uint256) public balanceOf;\\n    /// @notice `tokenId` -> 'owner' mapping.\\n    mapping(uint256 => address) public ownerOf;\\n    /// @notice `tokenId` -> 'spender' mapping.\\n    mapping(uint256 => address) public getApproved;\\n    /// @notice 'owner' -> 'operator' status mapping.\\n    mapping(address => mapping(address => bool)) public isApprovedForAll;\\n\\n    /// @notice EIP-712 typehash for this contract's {permit} struct for {approve}.\\n    bytes32 public constant PERMIT_TYPEHASH = keccak256(\\\"Permit(address spender,uint256 tokenId,uint256 nonce,uint256 deadline)\\\");\\n    /// @notice EIP-712 typehash for this contract's {permitAll} struct for {setApprovalForAll}.\\n    bytes32 public constant PERMIT_ALL_TYPEHASH = keccak256(\\\"Permit(address owner,address spender,uint256 nonce,uint256 deadline)\\\");\\n\\n    /// @notice Chain Id at this contract's deployment.\\n    uint256 internal immutable DOMAIN_SEPARATOR_CHAIN_ID;\\n    /// @notice EIP-712 typehash for this contract's domain at deployment.\\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\\n    /// @notice 'tokenId' -> `nonce` mapping used in {permit} for {approve}.\\n    mapping(uint256 => uint256) public nonces;\\n    /// @notice 'owner' -> `tokenId` mapping used in {permitAll} for {setApprovalForAll}.\\n    mapping(address => uint256) public noncesForAll;\\n\\n    constructor() {\\n        DOMAIN_SEPARATOR_CHAIN_ID = block.chainid;\\n        _DOMAIN_SEPARATOR = _calculateDomainSeparator();\\n    }\\n\\n    function _calculateDomainSeparator() internal view returns (bytes32 domainSeperator) {\\n        domainSeperator = keccak256(\\n            abi.encode(\\n                keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"),\\n                keccak256(bytes(name)),\\n                keccak256(bytes(\\\"1\\\")),\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    /// @notice EIP-712 typehash for this contract's domain.\\n    function DOMAIN_SEPARATOR() public view returns (bytes32 domainSeperator) {\\n        domainSeperator = block.chainid == DOMAIN_SEPARATOR_CHAIN_ID ? _DOMAIN_SEPARATOR : _calculateDomainSeparator();\\n    }\\n\\n    /// @notice Provides ERC-165-compatible confirmation for ERC-721 interfaces supported by this contract.\\n    /// @param interfaceId XOR of all function selectors in the reference interface.\\n    /// @return supported Returns 'true' if `interfaceId` is flagged as implemented.\\n    function supportsInterface(bytes4 interfaceId) external pure returns (bool supported) {\\n        supported = interfaceId == 0x80ac58cd || interfaceId == 0x5b5e139f;\\n    }\\n\\n    /// @notice Approves `tokenId` from `msg.sender` 'owner' or 'operator' to be spent by `spender`.\\n    /// @param spender Address of the party that can pull `tokenId` from 'owner''s account.\\n    /// @param tokenId The Id to approve for `spender`.\\n    function approve(address spender, uint256 tokenId) external {\\n        address owner = ownerOf[tokenId];\\n        require(msg.sender == owner || isApprovedForAll[owner][msg.sender], \\\"NOT_APPROVED\\\");\\n        getApproved[tokenId] = spender;\\n        emit Approval(owner, spender, tokenId);\\n    }\\n\\n    /// @notice Approves an 'operator' for `msg.sender` 'owner' that can spend or {approve} spends of 'owner''s `tokenId`s.\\n    /// @param operator Address of the party that can pull `tokenId`s from 'owner''s account or approve others to do same.\\n    /// @param approved The approval status of `operator`.\\n    function setApprovalForAll(address operator, bool approved) external {\\n        require(operator != address(0), \\\"INVALID_OPERATOR\\\");\\n        isApprovedForAll[msg.sender][operator] = approved;\\n        emit ApprovalForAll(msg.sender, operator, approved);\\n    }\\n\\n    /// @notice Transfers `tokenId` from 'owner' to `recipient`. Caller needs ownership.\\n    /// @param recipient The address to move `tokenId` to.\\n    /// @param tokenId The Id to move.\\n    function transfer(address recipient, uint256 tokenId) external {\\n        require(msg.sender == ownerOf[tokenId], \\\"NOT_OWNER\\\");\\n        _transfer(msg.sender, recipient, tokenId);\\n    }\\n\\n    /// @notice Transfers `tokenId` from 'owner' to `recipient`. Caller needs ownership or approval from 'owner'.\\n    /// @param recipient The address to move `tokenId` to.\\n    /// @param tokenId The Id to move.\\n    function transferFrom(\\n        address,\\n        address recipient,\\n        uint256 tokenId\\n    ) public {\\n        address owner = ownerOf[tokenId];\\n        require(msg.sender == owner || msg.sender == getApproved[tokenId] || isApprovedForAll[owner][msg.sender], \\\"NOT_APPROVED\\\");\\n        _transfer(owner, recipient, tokenId);\\n    }\\n\\n    /// @notice Transfers `tokenId` from 'owner' to `recipient` with no data. Caller needs ownership or approval from 'owner',\\n    /// and `recipient` must have compatible {onERC721Received} function.\\n    /// @param recipient The address to move `tokenId` to.\\n    /// @param tokenId The Id to move.\\n    function safeTransferFrom(\\n        address,\\n        address recipient,\\n        uint256 tokenId\\n    ) external {\\n        safeTransferFrom(address(0), recipient, tokenId, \\\"\\\");\\n    }\\n\\n    /// @notice Transfers `tokenId` from 'owner' to `recipient` with data. Caller needs ownership or approval from 'owner',\\n    /// and `recipient` must have compatible {onERC721Received} function.\\n    /// @param recipient The address to move `tokenId` to.\\n    /// @param tokenId The Id to move.\\n    function safeTransferFrom(\\n        address,\\n        address recipient,\\n        uint256 tokenId,\\n        bytes memory data\\n    ) public {\\n        transferFrom(address(0), recipient, tokenId);\\n        if (recipient.code.length != 0) {\\n            /// @dev `onERC721Received(address,address,uint,bytes)`.\\n            (, bytes memory returned) = recipient.staticcall(abi.encodeWithSelector(0x150b7a02, msg.sender, address(0), tokenId, data));\\n            bytes4 selector = abi.decode(returned, (bytes4));\\n            require(selector == 0x150b7a02, \\\"NOT_ERC721_RECEIVER\\\");\\n        }\\n    }\\n\\n    /// @notice Triggers an approval from 'owner' to `spender` for a given `tokenId`.\\n    /// @param spender The address to be approved.\\n    /// @param tokenId The Id that is approved for `spender`.\\n    /// @param deadline The time at which to expire the signature.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permit(\\n        address spender,\\n        uint256 tokenId,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        require(deadline >= block.timestamp, \\\"PERMIT_DEADLINE_EXPIRED\\\");\\n        address owner = ownerOf[tokenId];\\n        /// @dev This is reasonably safe from overflow - incrementing `nonces` beyond\\n        // 'type(uint256).max' is exceedingly unlikely compared to optimization benefits.\\n        unchecked {\\n            bytes32 digest = keccak256(\\n                abi.encodePacked(\\n                    \\\"\\\\x19\\\\x01\\\",\\n                    DOMAIN_SEPARATOR(),\\n                    keccak256(abi.encode(PERMIT_TYPEHASH, spender, tokenId, nonces[tokenId]++, deadline))\\n                )\\n            );\\n            address recoveredAddress = ecrecover(digest, v, r, s);\\n            require(recoveredAddress != address(0), \\\"INVALID_PERMIT_SIGNATURE\\\");\\n            require(recoveredAddress == owner || isApprovedForAll[owner][recoveredAddress], \\\"INVALID_SIGNER\\\");\\n        }\\n        getApproved[tokenId] = spender;\\n        emit Approval(owner, spender, tokenId);\\n    }\\n\\n    /// @notice Triggers an approval from 'owner' to `operator` that can spend or {approve} spends of 'owner''s `tokenId`s.\\n    /// @param owner The address to be approved.\\n    /// @param operator Address of the party that can pull `tokenId`s from 'owner''s account or approve others to do same.\\n    /// @param deadline The time at which to expire the signature.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitAll(\\n        address owner,\\n        address operator,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        require(deadline >= block.timestamp, \\\"PERMIT_DEADLINE_EXPIRED\\\");\\n        /// @dev This is reasonably safe from overflow - incrementing `nonces` beyond\\n        // 'type(uint256).max' is exceedingly unlikely compared to optimization benefits.\\n        unchecked {\\n            bytes32 digest = keccak256(\\n                abi.encodePacked(\\n                    \\\"\\\\x19\\\\x01\\\",\\n                    DOMAIN_SEPARATOR(),\\n                    keccak256(abi.encode(PERMIT_ALL_TYPEHASH, owner, operator, noncesForAll[owner]++, deadline))\\n                )\\n            );\\n            address recoveredAddress = ecrecover(digest, v, r, s);\\n            require(\\n                (recoveredAddress != address(0) && recoveredAddress == owner) || isApprovedForAll[owner][recoveredAddress],\\n                \\\"INVALID_PERMIT_SIGNATURE\\\"\\n            );\\n        }\\n        isApprovedForAll[owner][operator] = true;\\n        emit ApprovalForAll(owner, operator, true);\\n    }\\n\\n    function _mint(address recipient) internal {\\n        /// @dev This is reasonably safe from overflow - incrementing beyond\\n        // 'type(uint256).max' is exceedingly unlikely compared to optimization benefits.\\n        unchecked {\\n            uint256 tokenId = totalSupply++;\\n            require(ownerOf[tokenId] == address(0), \\\"ALREADY_MINTED\\\");\\n            balanceOf[recipient]++;\\n            ownerOf[tokenId] = recipient;\\n            emit Transfer(address(0), recipient, tokenId);\\n        }\\n    }\\n\\n    function _burn(uint256 tokenId) internal {\\n        // @dev We tranfer the NFT to address(0) rather than burning to keep Total Supply static.\\n        address owner = ownerOf[tokenId];\\n        require(owner != address(0), \\\"NOT_MINTED\\\");\\n        _transfer(owner, address(0), tokenId);\\n    }\\n\\n    function _transfer(\\n        address from,\\n        address to,\\n        uint256 tokenId\\n    ) internal {\\n        /// @dev This is safe from under/overflow -\\n        // ownership is checked against decrement,\\n        // and sum of all user balances can't reasonably exceed type(uint256).max (see {_mint}).\\n        unchecked {\\n            balanceOf[from]--;\\n            balanceOf[to]++;\\n        }\\n        delete getApproved[tokenId];\\n        ownerOf[tokenId] = to;\\n        emit Transfer(from, to, tokenId);\\n    }\\n}\\n\",\"keccak256\":\"0xa469c58923116c8ab8ba88f0e76f8de22c7d665fdb23a7a234c3762b3311b4ae\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 16489,
                "contract": "contracts/pool/concentrated/TridentNFT.sol:TridentNFT",
                "label": "totalSupply",
                "offset": 0,
                "slot": "0",
                "type": "t_uint256"
              },
              {
                "astId": 16494,
                "contract": "contracts/pool/concentrated/TridentNFT.sol:TridentNFT",
                "label": "balanceOf",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 16499,
                "contract": "contracts/pool/concentrated/TridentNFT.sol:TridentNFT",
                "label": "ownerOf",
                "offset": 0,
                "slot": "2",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 16504,
                "contract": "contracts/pool/concentrated/TridentNFT.sol:TridentNFT",
                "label": "getApproved",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_uint256,t_address)"
              },
              {
                "astId": 16511,
                "contract": "contracts/pool/concentrated/TridentNFT.sol:TridentNFT",
                "label": "isApprovedForAll",
                "offset": 0,
                "slot": "4",
                "type": "t_mapping(t_address,t_mapping(t_address,t_bool))"
              },
              {
                "astId": 16534,
                "contract": "contracts/pool/concentrated/TridentNFT.sol:TridentNFT",
                "label": "nonces",
                "offset": 0,
                "slot": "5",
                "type": "t_mapping(t_uint256,t_uint256)"
              },
              {
                "astId": 16539,
                "contract": "contracts/pool/concentrated/TridentNFT.sol:TridentNFT",
                "label": "noncesForAll",
                "offset": 0,
                "slot": "6",
                "type": "t_mapping(t_address,t_uint256)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_mapping(t_address,t_bool)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => bool)",
                "numberOfBytes": "32",
                "value": "t_bool"
              },
              "t_mapping(t_address,t_mapping(t_address,t_bool))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => bool))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_bool)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_mapping(t_uint256,t_address)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              },
              "t_mapping(t_uint256,t_uint256)": {
                "encoding": "mapping",
                "key": "t_uint256",
                "label": "mapping(uint256 => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "DOMAIN_SEPARATOR()": {
                "notice": "EIP-712 typehash for this contract's domain."
              },
              "PERMIT_ALL_TYPEHASH()": {
                "notice": "EIP-712 typehash for this contract's {permitAll} struct for {setApprovalForAll}."
              },
              "PERMIT_TYPEHASH()": {
                "notice": "EIP-712 typehash for this contract's {permit} struct for {approve}."
              },
              "approve(address,uint256)": {
                "notice": "Approves `tokenId` from `msg.sender` 'owner' or 'operator' to be spent by `spender`."
              },
              "balanceOf(address)": {
                "notice": "'owner' -> balance mapping."
              },
              "getApproved(uint256)": {
                "notice": "`tokenId` -> 'spender' mapping."
              },
              "isApprovedForAll(address,address)": {
                "notice": "'owner' -> 'operator' status mapping."
              },
              "nonces(uint256)": {
                "notice": "'tokenId' -> `nonce` mapping used in {permit} for {approve}."
              },
              "noncesForAll(address)": {
                "notice": "'owner' -> `tokenId` mapping used in {permitAll} for {setApprovalForAll}."
              },
              "ownerOf(uint256)": {
                "notice": "`tokenId` -> 'owner' mapping."
              },
              "permit(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Triggers an approval from 'owner' to `spender` for a given `tokenId`."
              },
              "permitAll(address,address,uint256,uint8,bytes32,bytes32)": {
                "notice": "Triggers an approval from 'owner' to `operator` that can spend or {approve} spends of 'owner''s `tokenId`s."
              },
              "safeTransferFrom(address,address,uint256)": {
                "notice": "Transfers `tokenId` from 'owner' to `recipient` with no data. Caller needs ownership or approval from 'owner', and `recipient` must have compatible {onERC721Received} function."
              },
              "safeTransferFrom(address,address,uint256,bytes)": {
                "notice": "Transfers `tokenId` from 'owner' to `recipient` with data. Caller needs ownership or approval from 'owner', and `recipient` must have compatible {onERC721Received} function."
              },
              "setApprovalForAll(address,bool)": {
                "notice": "Approves an 'operator' for `msg.sender` 'owner' that can spend or {approve} spends of 'owner''s `tokenId`s."
              },
              "supportsInterface(bytes4)": {
                "notice": "Provides ERC-165-compatible confirmation for ERC-721 interfaces supported by this contract."
              },
              "totalSupply()": {
                "notice": "Tracks total liquidity range positions."
              },
              "transfer(address,uint256)": {
                "notice": "Transfers `tokenId` from 'owner' to `recipient`. Caller needs ownership."
              },
              "transferFrom(address,address,uint256)": {
                "notice": "Transfers `tokenId` from 'owner' to `recipient`. Caller needs ownership or approval from 'owner'."
              }
            },
            "version": 1
          }
        }
      },
      "contracts/pool/franchised/FranchisedConstantProductPool.sol": {
        "FranchisedConstantProductPool": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount0",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount1",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount0",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount1",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "name": "Mint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenIn",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOut",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "name": "Swap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "reserve0",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "reserve1",
                  "type": "uint256"
                }
              ],
              "name": "Sync",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFeeTo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPool.TokenAmount[]",
                  "name": "withdrawnAmounts",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burnSingle",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "flashSwap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "getAmountIn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "getAmountOut",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "finalAmountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAssets",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getReserves",
              "outputs": [
                {
                  "internalType": "uint112",
                  "name": "_reserve0",
                  "type": "uint112"
                },
                {
                  "internalType": "uint112",
                  "name": "_reserve1",
                  "type": "uint112"
                },
                {
                  "internalType": "uint32",
                  "name": "_blockTimestampLast",
                  "type": "uint32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "kLast",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "level2",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "operator",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolIdentifier",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price0CumulativeLast",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "price1CumulativeLast",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "swap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "swapFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token0",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token1",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "updateBarFee",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "whiteListManager",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "The reserves are stored as bento shares.      The curve is applied to shares as well. This pool does not care about the underlying amounts.",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "params": {
                  "amount": "The maximum collective `amount` that `spender` can pull.",
                  "spender": "Address of the party that can pull tokens from `msg.sender`'s account."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "burn(bytes)": {
                "details": "Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens."
              },
              "burnSingle(bytes)": {
                "details": "Burns LP tokens sent to this contract and swaps one of the output tokens for another - i.e., the user gets a single token out by burning LP tokens."
              },
              "flashSwap(bytes)": {
                "details": "Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage."
              },
              "getAmountOut(bytes)": {
                "details": "The pool does not need to include a trade simulator directly in itself - it can use a library.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "finalAmountOut": "The amount of output tokens that will be sent to the user if the trade is executed."
                }
              },
              "getAssets()": {
                "returns": {
                  "assets": "An array of tokens supported by the pool."
                }
              },
              "mint(bytes)": {
                "details": "Mints LP tokens - should be called via the router after transferring `bento` tokens. The router must ensure that sufficient LP tokens are minted by using the return value."
              },
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "amount": "The number of tokens that are approved (2^256-1 means infinite).",
                  "deadline": "The time at which to expire the signature.",
                  "owner": "The address to approve from.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "spender": "The address to be approved.",
                  "v": "The recovery byte of the signature."
                }
              },
              "swap(bytes)": {
                "details": "Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage."
              },
              "transfer(address,uint256)": {
                "params": {
                  "amount": "The token `amount` to move.",
                  "recipient": "The address to move tokens to."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "transferFrom(address,address,uint256)": {
                "params": {
                  "amount": "The token `amount` to move.",
                  "recipient": "The address to move tokens to.",
                  "sender": "Address to pull tokens `from`."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "updateBarFee()": {
                "details": "Updates `barFee` for Trident protocol."
              }
            },
            "stateVariables": {
              "poolIdentifier": {
                "return": "A unique identifier for the pool type.",
                "returns": {
                  "_0": "A unique identifier for the pool type."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_17475": {
                  "entryPoint": null,
                  "id": 17475,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_23291": {
                  "entryPoint": null,
                  "id": 23291,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@initialize_23316": {
                  "entryPoint": 1397,
                  "id": 23316,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "abi_decode_address_fromMemory": {
                  "entryPoint": 1477,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_bool_fromMemory": {
                  "entryPoint": 1495,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payable_fromMemory": {
                  "entryPoint": 1512,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_uint256t_boolt_address_payablet_address_payablet_bool_fromMemory": {
                  "entryPoint": 1551,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 7
                },
                "abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory": {
                  "entryPoint": 1702,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 1907,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1933,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_436b5627177a9781148596ddddd93f72d53dd82575a018216d5aaf2a8219ec9e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 1963,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 2014,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 2036,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:5350:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "74:78:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "84:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "99:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "93:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "93:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "84:5:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "140:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "115:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "115:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "115:31:64"
                            }
                          ]
                        },
                        "name": "abi_decode_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "53:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "64:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:138:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "214:107:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "224:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "239:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "233:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "233:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "224:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "299:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "308:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "311:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "301:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "301:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "301:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "268:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "289:5:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "282:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "282:13:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "275:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "275:21:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "265:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "265:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "258:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "258:40:64"
                              },
                              "nodeType": "YulIf",
                              "src": "255:60:64"
                            }
                          ]
                        },
                        "name": "abi_decode_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "193:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "204:5:64",
                            "type": ""
                          }
                        ],
                        "src": "157:164:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "415:170:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "461:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "470:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "473:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "463:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "463:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "463:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "436:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "445:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "432:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "432:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "457:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "428:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "428:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "425:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "486:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "505:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "499:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "499:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "490:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "549:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "524:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "524:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "524:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "564:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "574:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "564:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payable_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "381:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "392:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "404:6:64",
                            "type": ""
                          }
                        ],
                        "src": "326:259:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "799:699:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "846:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "855:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "858:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "848:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "848:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "848:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "820:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "829:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "816:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "816:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "841:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "812:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "812:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "809:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "871:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "890:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "884:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "884:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "875:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "934:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "909:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "909:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "909:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "949:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "959:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "949:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "973:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "998:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1009:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "994:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "994:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "988:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "988:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "977:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1047:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1022:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1022:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1022:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1064:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1074:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1064:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1090:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1110:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1121:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1106:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1106:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1100:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1100:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1090:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1134:56:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1175:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1186:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1171:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1171:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bool_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1144:26:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1144:46:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1134:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1199:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1224:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1235:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1220:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1220:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1214:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1214:26:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1203:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1274:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1249:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1249:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1249:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1291:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "1301:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "1291:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1317:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1342:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1353:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1338:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1338:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1332:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1332:26:64"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1321:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1392:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1367:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1367:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1367:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1409:17:64",
                              "value": {
                                "name": "value_3",
                                "nodeType": "YulIdentifier",
                                "src": "1419:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "1409:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1435:57:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1476:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1487:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1472:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1472:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bool_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1445:26:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1445:47:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1435:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_uint256t_boolt_address_payablet_address_payablet_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "717:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "728:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "740:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "748:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "756:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "764:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "772:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "780:6:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "788:6:64",
                            "type": ""
                          }
                        ],
                        "src": "590:908:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1610:869:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1656:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1665:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1668:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1658:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1658:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1658:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1631:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1640:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1627:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1627:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1652:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1623:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1623:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1620:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1681:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1701:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1695:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1695:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1685:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1720:28:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1738:2:64",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1742:1:64",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1734:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1734:10:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1746:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1730:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1730:18:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1724:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1775:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1784:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1787:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1777:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1777:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1777:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1763:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1771:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1760:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1760:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1757:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1800:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1814:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1825:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1810:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1810:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1804:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1880:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1889:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1892:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1882:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1882:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1882:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1859:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1863:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1855:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1855:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1870:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1851:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1851:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1844:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1844:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1841:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1905:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1921:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1915:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1915:9:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1909:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1947:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1949:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1949:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1949:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1939:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1943:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1936:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1936:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1933:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1978:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1992:2:64",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "1988:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1988:7:64"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "1982:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2004:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2024:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2018:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2018:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2008:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2036:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2058:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2082:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2086:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2078:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2078:13:64"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "2093:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "2074:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2074:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2098:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2070:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2070:31:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "2103:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2066:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2066:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2054:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2054:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2040:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2166:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2168:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2168:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2168:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2125:10:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2137:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2122:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2122:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2145:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2157:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2142:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2142:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2119:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2119:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2116:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2204:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2208:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2197:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2197:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2197:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2235:6:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2243:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2228:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2228:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2228:18:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2294:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2303:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2306:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2296:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2296:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2296:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2269:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2273:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2265:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2265:11:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2278:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2261:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2261:22:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2285:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2258:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2258:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2255:55:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2345:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2349:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2341:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2341:13:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2360:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2368:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2356:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2356:17:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2375:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2319:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2319:59:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2319:59:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2387:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "2397:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2387:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2412:61:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2456:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2467:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2452:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2452:20:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2422:29:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2422:51:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2412:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1568:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1579:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1591:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1599:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1503:976:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2565:103:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2611:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2620:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2623:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2613:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2613:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2613:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2586:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2595:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2582:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2582:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2607:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2578:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2578:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2575:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2636:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2652:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2646:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2646:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2636:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2531:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2542:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2554:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2484:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2810:137:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2820:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2840:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2834:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2834:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2824:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2882:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2890:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2878:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2878:17:64"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2897:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2902:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2856:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2856:53:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2856:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2918:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2929:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2934:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2925:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2925:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "2918:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2786:3:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2791:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2802:3:64",
                            "type": ""
                          }
                        ],
                        "src": "2673:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3165:276:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3175:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3187:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3198:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3183:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3183:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3175:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3218:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3229:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3211:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3211:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3211:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3256:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3267:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3252:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3252:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3272:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3245:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3245:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3245:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3299:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3310:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3295:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3295:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3315:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3288:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3288:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3288:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3342:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3353:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3338:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3338:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3358:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3331:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3331:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3331:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3385:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3396:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3381:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3381:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "3406:6:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3422:3:64",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3427:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "3418:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3418:11:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3431:1:64",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "3414:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3414:19:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3402:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3402:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3374:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3374:61:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3374:61:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3102:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3113:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3121:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3129:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3137:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3145:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3156:4:64",
                            "type": ""
                          }
                        ],
                        "src": "2952:489:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3620:163:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3637:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3648:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3630:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3630:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3630:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3671:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3682:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3667:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3667:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3687:2:64",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3660:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3660:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3660:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3710:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3721:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3706:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3706:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f544f4b454e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3726:15:64",
                                    "type": "",
                                    "value": "INVALID_TOKEN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3699:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3699:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3699:43:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3751:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3763:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3774:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3759:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3759:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3751:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_436b5627177a9781148596ddddd93f72d53dd82575a018216d5aaf2a8219ec9e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3597:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3611:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3446:337:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3962:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3979:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3990:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3972:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3972:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3972:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4013:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4024:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4009:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4009:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4029:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4002:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4002:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4002:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4052:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4063:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4048:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4048:18:64"
                                  },
                                  {
                                    "hexValue": "5a45524f5f41444452455353",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4068:14:64",
                                    "type": "",
                                    "value": "ZERO_ADDRESS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4041:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4041:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4041:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4092:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4104:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4115:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4100:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4100:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4092:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3939:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3953:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3788:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4303:169:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4320:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4331:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4313:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4313:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4313:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4354:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4365:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4350:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4350:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4370:2:64",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4343:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4343:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4343:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4393:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4404:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4389:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4389:18:64"
                                  },
                                  {
                                    "hexValue": "4944454e544943414c5f414444524553534553",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4409:21:64",
                                    "type": "",
                                    "value": "IDENTICAL_ADDRESSES"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4382:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4382:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4382:49:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4440:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4452:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4463:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4448:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4448:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4440:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4280:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4294:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4129:343:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4651:166:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4668:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4679:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4661:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4661:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4661:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4702:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4713:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4698:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4698:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4718:2:64",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4691:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4691:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4691:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4741:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4752:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4737:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4737:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f535741505f464545",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4757:18:64",
                                    "type": "",
                                    "value": "INVALID_SWAP_FEE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4730:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4730:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4730:46:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4785:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4797:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4808:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4793:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4793:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4785:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4628:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4642:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4477:340:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4875:205:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4885:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4894:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "4889:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4954:63:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "4979:3:64"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "4984:1:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "4975:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4975:11:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4998:3:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5003:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "4994:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "4994:11:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "4988:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4988:18:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4968:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4968:39:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4968:39:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4915:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4918:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4912:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4912:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4926:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4928:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "4937:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4940:2:64",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4933:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4933:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "4928:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4908:3:64",
                                "statements": []
                              },
                              "src": "4904:113:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5043:31:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "5056:3:64"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "5061:6:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "5052:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5052:16:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5070:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5045:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5045:27:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5045:27:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "5032:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5035:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5029:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5029:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5026:48:64"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "4853:3:64",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "4858:3:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "4863:6:64",
                            "type": ""
                          }
                        ],
                        "src": "4822:258:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5117:95:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5134:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5141:3:64",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5146:10:64",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "5137:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5137:20:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5127:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5127:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5127:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5174:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5177:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5167:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5167:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5167:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5198:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5201:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "5191:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5191:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5191:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "5085:127:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5262:86:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5326:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5335:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5338:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5328:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5328:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5328:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "5285:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "5296:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "5311:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "5316:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5307:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5307:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5320:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "5303:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5303:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "5292:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5292:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "5282:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5282:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5275:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5275:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5272:70:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "5251:5:64",
                            "type": ""
                          }
                        ],
                        "src": "5217:131:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        validator_revert_address(value)\n    }\n    function abi_decode_bool_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address_payable_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_uint256t_boolt_address_payablet_address_payablet_bool_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := mload(add(headStart, 64))\n        value3 := abi_decode_bool_fromMemory(add(headStart, 96))\n        let value_2 := mload(add(headStart, 128))\n        validator_revert_address(value_2)\n        value4 := value_2\n        let value_3 := mload(add(headStart, 160))\n        validator_revert_address(value_3)\n        value5 := value_3\n        value6 := abi_decode_bool_fromMemory(add(headStart, 192))\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 0x20), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_2, 0x20), add(memPtr, 0x20), _3)\n        value0 := memPtr\n        value1 := abi_decode_address_fromMemory(add(headStart, 0x20))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_436b5627177a9781148596ddddd93f72d53dd82575a018216d5aaf2a8219ec9e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"INVALID_TOKEN\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"ZERO_ADDRESS\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"IDENTICAL_ADDRESSES\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"INVALID_SWAP_FEE\")\n        tail := add(headStart, 96)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101806040523480156200001257600080fd5b50604051620044e5380380620044e58339810160408190526200003591620006a6565b604080518082018252601981527f5375736869204672616e636869736564204c5020546f6b656e000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f49bb029ad7c8a58c6232657178b278e20c3bd1f3b0084072e3a97b185e1aac5f918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120608081815250506000806000806000806000888060200190518101906200014291906200060f565b965096509650965096509650965060006001600160a01b0316876001600160a01b03161415620001a85760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064015b60405180910390fd5b856001600160a01b0316876001600160a01b031614156200020c5760405162461bcd60e51b815260206004820152601360248201527f4944454e544943414c5f4144445245535345530000000000000000000000000060448201526064016200019f565b6001600160a01b038716301415620002575760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b60448201526064016200019f565b6001600160a01b038616301415620002a25760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b60448201526064016200019f565b612710851115620002e95760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f535741505f46454560801b60448201526064016200019f565b620003018383836200057560201b6200259b1760201c565b60408051600481526024810182526020810180516001600160e01b03166360a56c0160e11b17905290516000916001600160a01b038b16916200034591906200078d565b600060405180830381855afa9150503d806000811462000382576040519150601f19603f3d011682016040523d82523d6000602084013e62000387565b606091505b5060408051600481526024810182526020810180516001600160e01b0316630605066960e11b1790529051919350600092506001600160a01b038c1691620003d091906200078d565b600060405180830381855afa9150503d80600081146200040d576040519150601f19603f3d011682016040523d82523d6000602084013e62000412565b606091505b5060408051600481526024810182526020810180516001600160e01b0316634da3182760e01b1790529051919350600092506001600160a01b038d16916200045b91906200078d565b600060405180830381855afa9150503d806000811462000498576040519150601f19603f3d011682016040523d82523d6000602084013e6200049d565b606091505b506001600160601b031960608d811b8216610140528c901b166101605260a08a90526127108a900360c0528451909250620004e391508401602090810190850162000773565b6006558151620004fd9083016020908101908401620005e8565b60601b6001600160601b03191660e0528051620005249060209083018101908301620005e8565b6001600160601b0319606091821b811661010052908c901b16610120526001600b5586156200056357600a80546001600160e01b0316600160e01b1790555b5050505050505050505050506200080d565b600080546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790558015620005c0576001805460ff60a01b1916600160a01b1790555b505050565b8051620005d281620007f4565b919050565b80518015158114620005d257600080fd5b600060208284031215620005fb57600080fd5b81516200060881620007f4565b9392505050565b600080600080600080600060e0888a0312156200062b57600080fd5b87516200063881620007f4565b60208901519097506200064b81620007f4565b604089015190965094506200066360608901620005d7565b935060808801516200067581620007f4565b60a08901519093506200068881620007f4565b91506200069860c08901620005d7565b905092959891949750929550565b60008060408385031215620006ba57600080fd5b82516001600160401b0380821115620006d257600080fd5b818501915085601f830112620006e757600080fd5b815181811115620006fc57620006fc620007de565b604051601f8201601f19908116603f01168101908382118183101715620007275762000727620007de565b816040528281528860208487010111156200074157600080fd5b62000754836020830160208801620007ab565b80965050505050506200076a60208401620005c5565b90509250929050565b6000602082840312156200078657600080fd5b5051919050565b60008251620007a1818460208701620007ab565b9190910192915050565b60005b83811015620007c8578181015183820152602001620007ae565b83811115620007d8576000848401525b50505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146200080a57600080fd5b50565b60805160a05160c05160e05160601c6101005160601c6101205160601c6101405160601c6101605160601c613b7c620009696000396000818161069701528181610893015281816109c201528181610a70015281816111310152818161123901528181611493015281816115020152818161174401528181611cc001528181611fc50152818161204c0152612c3801526000818161039a0152818161080f01528181610b5501528181610c8401528181611105015281816111d00152818161143f015281816115e3015281816116d601528181611c3a01528181612085015281816121700152612b390152600081816106700152611b3a015260008181610498015281816128a101528181612a1701528181612afd0152612ce101526000818161034e01526130ef015260006127a30152600081816104bf0152818161338701526133f201526000818161045e01526122c60152613b7c6000f3fe608060405234801561001057600080fd5b50600436106102775760003560e01c80635a3d549311610160578063a69840a8116100d8578063c14ad8021161008c578063d21220a711610071578063d21220a714610692578063d505accf146106b9578063dd62ed3e146106cc57600080fd5b8063c14ad80214610662578063cf58879a1461066b57600080fd5b8063a9059cbb116100bd578063a9059cbb14610617578063af8c09bf1461062a578063bc3377d91461063d57600080fd5b8063a69840a8146105dd578063a8f1f52e1461060457600080fd5b80637464fc3d1161012f5780637ecebe00116101145780637ecebe001461057757806392bc32191461059757806395d89b41146105a157600080fd5b80637464fc3d1461055b5780637ba0e2e71461056457600080fd5b80635a3d54931461050a578063627dd56a1461051357806367e4ac2c1461052657806370a082311461053b57600080fd5b80632a07b6c7116101f3578063499a3c50116101c257806354cf2aeb116101a757806354cf2aeb146104ba578063570ca735146104e15780635909c0d51461050157600080fd5b8063499a3c50146104805780634da318271461049357600080fd5b80632a07b6c7146103f857806330adf81f14610418578063313ce5671461043f5780633644e5151461045957600080fd5b80630c0a0cd21161024a57806318160ddd1161022f57806318160ddd146103bc57806323b872dd146103c557806325a93264146103d857600080fd5b80630c0a0cd2146103495780630dfe16811461039557600080fd5b8063053da1c81461027c57806306fdde03146102a25780630902f1ac146102eb578063095ea7b314610326575b600080fd5b61028f61028a366004613788565b6106f7565b6040519081526020015b60405180910390f35b6102de6040518060400160405280601981526020017f5375736869204672616e636869736564204c5020546f6b656e0000000000000081525081565b6040516102999190613938565b6102f3610d40565b604080516dffffffffffffffffffffffffffff948516815293909216602084015263ffffffff1690820152606001610299565b610339610334366004613659565b610da9565b6040519015158152602001610299565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610299565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b61028f60025481565b6103396103d33660046136b3565b610e22565b6000546103709073ffffffffffffffffffffffffffffffffffffffff1681565b61040b610406366004613788565b610f9d565b60405161029991906138d3565b61028f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610447601281565b60405160ff9091168152602001610299565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b61028f61048e366004613788565b611309565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b6001546103709073ffffffffffffffffffffffffffffffffffffffff1681565b61028f60075481565b61028f60085481565b61028f610521366004613788565b611310565b61052e6116b4565b6040516102999190613879565b61028f6105493660046134a0565b60036020526000908152604090205481565b61028f60095481565b61028f610572366004613788565b6117b3565b61028f6105853660046134a0565b60056020526000908152604090205481565b61059f611ac8565b005b6102de6040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b61028f7f54726964656e743a4672616e636869736564435000000000000000000000000081565b61028f610612366004613788565b611bc3565b610339610625366004613659565b611dab565b61028f610638366004613788565b611e5d565b6001546103399074010000000000000000000000000000000000000000900460ff1681565b61028f60065481565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b61059f6106c73660046136f4565b612233565b61028f6106da366004613685565b600460209081526000928352604080842090915290825290205481565b6000600b5460011461076a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6002600b556000808080806107818789018961350f565b94509450945094509450600160149054906101000a900460ff16156107a9576107a98461263b565b6000806000610807600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610a6e5761088c85846dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff1661279b565b98506108ba7f00000000000000000000000000000000000000000000000000000000000000008a89896127fe565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b1906108f6908790600401613938565b600060405180830381600087803b15801561091057600080fd5b505af1158015610924573d6000803e3d6000fd5b50505050600080610933612af6565b9150915086856dffffffffffffffffffffffffffff16830310156109b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e000000000000000000006044820152606401610761565b6109c08282878787612d6e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610a5f929190918252602082015260400190565b60405180910390a45050610d2c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610b23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e000000000000000000000000006044820152606401610761565b610b4e85836dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff1661279b565b9850610b7c7f00000000000000000000000000000000000000000000000000000000000000008a89896127fe565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b190610bb8908790600401613938565b600060405180830381600087803b158015610bd257600080fd5b505af1158015610be6573d6000803e3d6000fd5b50505050600080610bf5612af6565b9150915086846dffffffffffffffffffffffffffff1682031015610c75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e000000000000000000006044820152606401610761565b610c828282878787612d6e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610d21929190918252602082015260400190565b60405180910390a450505b50506001600b555094979650505050505050565b6000806000610d9e600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250909192565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e119086815260200190565b60405180910390a350600192915050565b60015460009074010000000000000000000000000000000000000000900460ff1615610e5157610e518361263b565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610eee5773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915281208054849290610ee89084906139db565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526003602052604081208054849290610f239084906139db565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260036020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f8b9086815260200190565b60405180910390a35060019392505050565b6060600b5460011461100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b5560008061101f84860186613620565b9150915061102c8261263b565b600080600061108a600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b92509250925060008061109b612af6565b60025430600090815260036020526040902054929450909250906110c087878461306f565b909101906000826110d1868461399e565b6110db9190613963565b90506000836110ea868561399e565b6110f49190613963565b9050611100308461311e565b61112c7f0000000000000000000000000000000000000000000000000000000000000000838d8d6127fe565b6111587f0000000000000000000000000000000000000000000000000000000000000000828d8d6127fe565b8186039550808503945061116f86868b8b8b612d6e565b61118161117c868861399e565b6131b4565b6009556040805160028082526060820190925290816020015b604080518082019091526000808252602082015281526020019060019003908161119a579050509b5060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001838152508c60008151811061122157611221613ab5565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001828152508c60018151811061128a5761128a613ab5565b60209081029190910181019190915260408051848152918201839052810184905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a350506001600b5550979a9950505050505050505050565b6000806000fd5b6000600b5460011461137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b5560008080611393858701876134c4565b600154929550909350915074010000000000000000000000000000000000000000900460ff16156113c7576113c78261263b565b6000806000611425600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250600080611436612af6565b915091506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415611500577f00000000000000000000000000000000000000000000000000000000000000009050866dffffffffffffffffffffffffffff16840391506114f482886dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff1661279b565b9a508a8303925061161c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16146115b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e000000000000000000000000006044820152606401610761565b5050600a546dffffffffffffffffffffffffffff6e01000000000000000000000000000090910481168203907f000000000000000000000000000000000000000000000000000000000000000090611614908390888116908a1661279b565b9a508a840393505b611628818c8b8b6127fe565b6116358484898989612d6e565b8073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062858f604051610d21929190918252602082015260400190565b60408051600280825260608083018452926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061170857611708613ab5565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061177657611776613ab5565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b6000600b54600114611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b556000611834838501856134a0565b905061183f8161263b565b600080600061189d600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092506000806118ae612af6565b60025491935091506118c186868361306f565b0160006118de6dffffffffffffffffffffffffffff8816856139db565b905060006118fc6dffffffffffffffffffffffffffff8816856139db565b905060008061192d84848c6dffffffffffffffffffffffffffff168c6dffffffffffffffffffffffffffff1661332c565b9092509050600061195561194183896139db565b61194b858b6139db565b61117c919061399e565b90508561197c5761196960006103e861342f565b6119756103e8826139db565b9c506119c4565b600061199e61117c6dffffffffffffffffffffffffffff808e16908f1661399e565b905080876119ac82856139db565b6119b6919061399e565b6119c09190613963565b9d50505b8c611a2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e5445440000006044820152606401610761565b611a358c8e61342f565b611a4288888d8d8d612d6e565b611a4f61117c888a61399e565b60095560408051868152602081018690529081018e90528d9073ffffffffffffffffffffffffffffffffffffffff8e169033907ff9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e9060600160405180910390a350506001600b5550999c9b505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc14ad80200000000000000000000000000000000000000000000000000000000179052905160009173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691611b65919061385d565b600060405180830381855afa9150503d8060008114611ba0576040519150601f19603f3d011682016040523d82523d6000602084013e611ba5565b606091505b5091505080806020019051810190611bbd91906137fa565b60065550565b60008080611bd384860186613659565b91509150600080611c33600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b50915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611cbe57611cb783836dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff1661279b565b9450611da1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611d73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e000000000000000000000000006044820152606401610761565b611d9e83826dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff1661279b565b94505b5050505092915050565b60015460009074010000000000000000000000000000000000000000900460ff1615611dda57611dda8361263b565b3360009081526003602052604081208054849290611df99084906139db565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e119086815260200190565b6000600b54600114611ecb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b5560008080611ee0858701876134c4565b925092509250611eef8261263b565b6000806000611f4d600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250600080611f5e612af6565b6002543060009081526003602052604090205492945090925090611f8387878461306f565b90910190600082611f94868461399e565b611f9e9190613963565b9050600083611fad868561399e565b611fb79190613963565b9050611fc3308461311e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614156120835761204682838b6dffffffffffffffffffffffffffff1603838b6dffffffffffffffffffffffffffff160361279b565b016120737f0000000000000000000000000000000000000000000000000000000000000000828d8d6127fe565b9b5050918a90039160008b6121a3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614612138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e0000000000000000000000006044820152606401610761565b61216781828a6dffffffffffffffffffffffffffff1603848c6dffffffffffffffffffffffffffff160361279b565b820191506121977f0000000000000000000000000000000000000000000000000000000000000000838d8d6127fe565b509a50928a9003928a60005b6121b086868b8b8b612d6e565b6121bd61117c868861399e565b600955604080518381526020810183905290810184905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a350506001600b5550989b9a5050505050505050505050565b4284101561229d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610761565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080547f0000000000000000000000000000000000000000000000000000000000000000917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b918761231883613a1e565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016123b99291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612442573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906124bd57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e415455524500000000000000006044820152606401610761565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526004602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556001805492851692909116919091179055801561263657600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790555b505050565b600080546001546040805173ffffffffffffffffffffffffffffffffffffffff928316602482015285831660448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1472c27100000000000000000000000000000000000000000000000000000000179052905191909216916126d89161385d565b600060405180830381855afa9150503d8060008114612713576040519150601f19603f3d011682016040523d82523d6000602084013e612718565b606091505b50915050600081806020019051810190612732919061376b565b905080612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f545f57484954454c495354454400000000000000000000000000000000006044820152606401610761565b6000806127c87f00000000000000000000000000000000000000000000000000000000000000008661399e565b9050806127d76127108661399e565b6127e1919061394b565b6127eb848361399e565b6127f59190613963565b95945050505050565b8015612980576040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260006084830181905260a48084018890528451808503909101815260c490930184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f97da6d300000000000000000000000000000000000000000000000000000000017905292517f0000000000000000000000000000000000000000000000000000000000000000909116916128cd9161385d565b6000604051808303816000865af19150503d806000811461290a576040519150601f19603f3d011682016040523d82523d6000602084013e61290f565b606091505b505090508061297a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f57495448445241575f4641494c454400000000000000000000000000000000006044820152606401610761565b50612af0565b6040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260848083018790528351808403909101815260a490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff18d03cc0000000000000000000000000000000000000000000000000000000017905291516000927f00000000000000000000000000000000000000000000000000000000000000001691612a419161385d565b6000604051808303816000865af19150503d8060008114612a7e576040519150601f19603f3d011682016040523d82523d6000602084013e612a83565b606091505b5050905080612aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610761565b505b50505050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f7888aec7f000000000000000000000000000000000000000000000000000000000000000030604051602401612b8c92919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612bda919061385d565b600060405180830381855afa9150503d8060008114612c15576040519150601f19603f3d011682016040523d82523d6000602084013e612c1a565b606091505b5091505080806020019051810190612c3291906137fa565b604080517f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff90811660248301523060448084019190915283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff7888aec0000000000000000000000000000000000000000000000000000000017905291519295506000927f000000000000000000000000000000000000000000000000000000000000000090921691612d0e919061385d565b600060405180830381855afa9150503d8060008114612d49576040519150601f19603f3d011682016040523d82523d6000602084013e612d4e565b606091505b5091505080806020019051810190612d6691906137fa565b925050509091565b6dffffffffffffffffffffffffffff8511801590612d9a57506dffffffffffffffffffffffffffff8411155b612e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4f564552464c4f570000000000000000000000000000000000000000000000006044820152606401610761565b600a547c0100000000000000000000000000000000000000000000000000000000900463ffffffff16612e8457600a80546dffffffffffffffffffffffffffff8681166e010000000000000000000000000000027fffffffff000000000000000000000000000000000000000000000000000000009092169088161717905561302f565b4263ffffffff80821690831614801590612ead57506dffffffffffffffffffffffffffff841615155b8015612ec857506dffffffffffffffffffffffffffff831615155b15612f8d5781810360006dffffffffffffffffffffffffffff86167bffffffffffffffffffffffffffff0000000000000000000000000000607087901b1681612f1357612f13613a86565b600780549290910463ffffffff851681029092019055905060006dffffffffffffffffffffffffffff8616607088901b7bffffffffffffffffffffffffffff00000000000000000000000000001681612f6e57612f6e613a86565b0490508263ffffffff1681026008600082825401925050819055505050505b600a805463ffffffff9092167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8881166e010000000000000000000000000000027fffffffff00000000000000000000000000000000000000000000000000000000909516908a161793909317929092169190911790555b60408051868152602081018690527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a15050505050565b600954600090801561311657600061309d61117c6dffffffffffffffffffffffffffff80881690891661399e565b905081811115613114576127108160065484846130ba91906139db565b6130c4908861399e565b6130ce919061399e565b6130d89190613963565b6130e29190613963565b92508215613114576131147f00000000000000000000000000000000000000000000000000000000000000008461342f565b505b509392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080548392906131539084906139db565b909155505060028054829003905560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6000816131c357506000919050565b81600170010000000000000000000000000000000082106131e95760809190911c9060401b5b6801000000000000000082106132045760409190911c9060201b5b640100000000821061321b5760209190911c9060101b5b6201000082106132305760109190911c9060081b5b61010082106132445760089190911c9060041b5b601082106132575760049190911c9060021b5b600882106132635760011b5b600181858161327457613274613a86565b048201901c9050600181858161328c5761328c613a86565b048201901c905060018185816132a4576132a4613a86565b048201901c905060018185816132bc576132bc613a86565b048201901c905060018185816132d4576132d4613a86565b048201901c905060018185816132ec576132ec613a86565b048201901c9050600181858161330457613304613a86565b048201901c9050600081858161331c5761331c613a86565b04905080821061311657806127f5565b60008083158061333a575082155b1561334a57506000905080613426565b600084613357858961399e565b6133619190613963565b90508581116133bc57613377612710600261399e565b61338182886139db565b6133ab907f000000000000000000000000000000000000000000000000000000000000000061399e565b6133b59190613963565b9150613424565b6000846133c9878961399e565b6133d39190613963565b90506133e2612710600261399e565b6133ec828a6139db565b613416907f000000000000000000000000000000000000000000000000000000000000000061399e565b6134209190613963565b9350505b505b94509492505050565b8060026000828254613441919061394b565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016131a8565b6000602082840312156134b257600080fd5b81356134bd81613b13565b9392505050565b6000806000606084860312156134d957600080fd5b83356134e481613b13565b925060208401356134f481613b13565b9150604084013561350481613b38565b809150509250925092565b600080600080600060a0868803121561352757600080fd5b853561353281613b13565b9450602086013561354281613b13565b9350604086013561355281613b38565b925060608601359150608086013567ffffffffffffffff8082111561357657600080fd5b818801915088601f83011261358a57600080fd5b81358181111561359c5761359c613ae4565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156135e2576135e2613ae4565b816040528281528b60208487010111156135fb57600080fd5b8260208601602083013760006020848301015280955050505050509295509295909350565b6000806040838503121561363357600080fd5b823561363e81613b13565b9150602083013561364e81613b38565b809150509250929050565b6000806040838503121561366c57600080fd5b823561367781613b13565b946020939093013593505050565b6000806040838503121561369857600080fd5b82356136a381613b13565b9150602083013561364e81613b13565b6000806000606084860312156136c857600080fd5b83356136d381613b13565b925060208401356136e381613b13565b929592945050506040919091013590565b600080600080600080600060e0888a03121561370f57600080fd5b873561371a81613b13565b9650602088013561372a81613b13565b95506040880135945060608801359350608088013560ff8116811461374e57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60006020828403121561377d57600080fd5b81516134bd81613b38565b6000806020838503121561379b57600080fd5b823567ffffffffffffffff808211156137b357600080fd5b818501915085601f8301126137c757600080fd5b8135818111156137d657600080fd5b8660208285010111156137e857600080fd5b60209290920196919550909350505050565b60006020828403121561380c57600080fd5b5051919050565b6000815180845261382b8160208601602086016139f2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161386f8184602087016139f2565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b818110156138c757835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613895565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561392b578151805173ffffffffffffffffffffffffffffffffffffffff1685528601518685015292840192908501906001016138f0565b5091979650505050505050565b6020815260006134bd6020830184613813565b6000821982111561395e5761395e613a57565b500190565b600082613999577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139d6576139d6613a57565b500290565b6000828210156139ed576139ed613a57565b500390565b60005b83811015613a0d5781810151838201526020016139f5565b83811115612af05750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613a5057613a50613a57565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114613b3557600080fd5b50565b8015158114613b3557600080fdfea26469706673582212209f642184248699c158c18322f8dca2de6fe2cc065d00eb82ed365836d516447c64736f6c63430008070033",
              "opcodes": "PUSH2 0x180 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x44E5 CODESIZE SUB DUP1 PUSH3 0x44E5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x6A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x5375736869204672616E636869736564204C5020546F6B656E00000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x49BB029AD7C8A58C6232657178B278E20C3BD1F3B0084072E3A97B185E1AAC5F SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x80 DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP9 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x142 SWAP2 SWAP1 PUSH3 0x60F JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A45524F5F41444452455353 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x20C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4944454E544943414C5F41444452455353455300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND ADDRESS EQ ISZERO PUSH3 0x257 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FAA27A5A2A7 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ADDRESS EQ ISZERO PUSH3 0x2A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FAA27A5A2A7 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST PUSH2 0x2710 DUP6 GT ISZERO PUSH3 0x2E9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x494E56414C49445F535741505F464545 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST PUSH3 0x301 DUP4 DUP4 DUP4 PUSH3 0x575 PUSH1 0x20 SHL PUSH3 0x259B OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x60A56C01 PUSH1 0xE1 SHL OR SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH3 0x345 SWAP2 SWAP1 PUSH3 0x78D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x382 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x387 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6050669 PUSH1 0xE1 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP2 PUSH3 0x3D0 SWAP2 SWAP1 PUSH3 0x78D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x40D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x412 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x4DA31827 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP2 PUSH3 0x45B SWAP2 SWAP1 PUSH3 0x78D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x498 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x49D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP14 DUP2 SHL DUP3 AND PUSH2 0x140 MSTORE DUP13 SWAP1 SHL AND PUSH2 0x160 MSTORE PUSH1 0xA0 DUP11 SWAP1 MSTORE PUSH2 0x2710 DUP11 SWAP1 SUB PUSH1 0xC0 MSTORE DUP5 MLOAD SWAP1 SWAP3 POP PUSH3 0x4E3 SWAP2 POP DUP5 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP6 ADD PUSH3 0x773 JUMP JUMPDEST PUSH1 0x6 SSTORE DUP2 MLOAD PUSH3 0x4FD SWAP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP5 ADD PUSH3 0x5E8 JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xE0 MSTORE DUP1 MLOAD PUSH3 0x524 SWAP1 PUSH1 0x20 SWAP1 DUP4 ADD DUP2 ADD SWAP1 DUP4 ADD PUSH3 0x5E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH2 0x100 MSTORE SWAP1 DUP13 SWAP1 SHL AND PUSH2 0x120 MSTORE PUSH1 0x1 PUSH1 0xB SSTORE DUP7 ISZERO PUSH3 0x563 JUMPI PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0xE0 SHL OR SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP PUSH3 0x80D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH3 0x5C0 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x5D2 DUP2 PUSH3 0x7F4 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x5D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x608 DUP2 PUSH3 0x7F4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x62B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 MLOAD PUSH3 0x638 DUP2 PUSH3 0x7F4 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH3 0x64B DUP2 PUSH3 0x7F4 JUMP JUMPDEST PUSH1 0x40 DUP10 ADD MLOAD SWAP1 SWAP7 POP SWAP5 POP PUSH3 0x663 PUSH1 0x60 DUP10 ADD PUSH3 0x5D7 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD MLOAD PUSH3 0x675 DUP2 PUSH3 0x7F4 JUMP JUMPDEST PUSH1 0xA0 DUP10 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x688 DUP2 PUSH3 0x7F4 JUMP JUMPDEST SWAP2 POP PUSH3 0x698 PUSH1 0xC0 DUP10 ADD PUSH3 0x5D7 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x6BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x6D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x6FC JUMPI PUSH3 0x6FC PUSH3 0x7DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x727 JUMPI PUSH3 0x727 PUSH3 0x7DE JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x741 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x754 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH3 0x7AB JUMP JUMPDEST DUP1 SWAP7 POP POP POP POP POP POP PUSH3 0x76A PUSH1 0x20 DUP5 ADD PUSH3 0x5C5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x786 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x7A1 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x7AB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x7C8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x7AE JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x7D8 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x80A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x160 MLOAD PUSH1 0x60 SHR PUSH2 0x3B7C PUSH3 0x969 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x697 ADD MSTORE DUP2 DUP2 PUSH2 0x893 ADD MSTORE DUP2 DUP2 PUSH2 0x9C2 ADD MSTORE DUP2 DUP2 PUSH2 0xA70 ADD MSTORE DUP2 DUP2 PUSH2 0x1131 ADD MSTORE DUP2 DUP2 PUSH2 0x1239 ADD MSTORE DUP2 DUP2 PUSH2 0x1493 ADD MSTORE DUP2 DUP2 PUSH2 0x1502 ADD MSTORE DUP2 DUP2 PUSH2 0x1744 ADD MSTORE DUP2 DUP2 PUSH2 0x1CC0 ADD MSTORE DUP2 DUP2 PUSH2 0x1FC5 ADD MSTORE DUP2 DUP2 PUSH2 0x204C ADD MSTORE PUSH2 0x2C38 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x39A ADD MSTORE DUP2 DUP2 PUSH2 0x80F ADD MSTORE DUP2 DUP2 PUSH2 0xB55 ADD MSTORE DUP2 DUP2 PUSH2 0xC84 ADD MSTORE DUP2 DUP2 PUSH2 0x1105 ADD MSTORE DUP2 DUP2 PUSH2 0x11D0 ADD MSTORE DUP2 DUP2 PUSH2 0x143F ADD MSTORE DUP2 DUP2 PUSH2 0x15E3 ADD MSTORE DUP2 DUP2 PUSH2 0x16D6 ADD MSTORE DUP2 DUP2 PUSH2 0x1C3A ADD MSTORE DUP2 DUP2 PUSH2 0x2085 ADD MSTORE DUP2 DUP2 PUSH2 0x2170 ADD MSTORE PUSH2 0x2B39 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x670 ADD MSTORE PUSH2 0x1B3A ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x498 ADD MSTORE DUP2 DUP2 PUSH2 0x28A1 ADD MSTORE DUP2 DUP2 PUSH2 0x2A17 ADD MSTORE DUP2 DUP2 PUSH2 0x2AFD ADD MSTORE PUSH2 0x2CE1 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x34E ADD MSTORE PUSH2 0x30EF ADD MSTORE PUSH1 0x0 PUSH2 0x27A3 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x4BF ADD MSTORE DUP2 DUP2 PUSH2 0x3387 ADD MSTORE PUSH2 0x33F2 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x45E ADD MSTORE PUSH2 0x22C6 ADD MSTORE PUSH2 0x3B7C PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x277 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5A3D5493 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0xA69840A8 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xC14AD802 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x692 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x662 JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x66B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA9059CBB GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x617 JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x62A JUMPI DUP1 PUSH4 0xBC3377D9 EQ PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x5DD JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7464FC3D GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x577 JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x597 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x55B JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x564 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x627DD56A EQ PUSH2 0x513 JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x526 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x53B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x54CF2AEB GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x570CA735 EQ PUSH2 0x4E1 JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x493 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x3F8 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x418 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x43F JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x24A JUMPI DUP1 PUSH4 0x18160DDD GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3BC JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3C5 JUMPI DUP1 PUSH4 0x25A93264 EQ PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x326 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x28F PUSH2 0x28A CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x6F7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204672616E636869736564204C5020546F6B656E00000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x3938 JUMP JUMPDEST PUSH2 0x2F3 PUSH2 0xD40 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x339 PUSH2 0x334 CALLDATASIZE PUSH1 0x4 PUSH2 0x3659 JUMP JUMPDEST PUSH2 0xDA9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x339 PUSH2 0x3D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x36B3 JUMP JUMPDEST PUSH2 0xE22 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x370 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x40B PUSH2 0x406 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0xF9D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x38D3 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x48E CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x370 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x521 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x1310 JUMP JUMPDEST PUSH2 0x52E PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x3879 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x549 CALLDATASIZE PUSH1 0x4 PUSH2 0x34A0 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x572 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x17B3 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x585 CALLDATASIZE PUSH1 0x4 PUSH2 0x34A0 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x59F PUSH2 0x1AC8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x54726964656E743A4672616E6368697365644350000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x612 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x1BC3 JUMP JUMPDEST PUSH2 0x339 PUSH2 0x625 CALLDATASIZE PUSH1 0x4 PUSH2 0x3659 JUMP JUMPDEST PUSH2 0x1DAB JUMP JUMPDEST PUSH2 0x28F PUSH2 0x638 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x1E5D JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x339 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x59F PUSH2 0x6C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x36F4 JUMP JUMPDEST PUSH2 0x2233 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x6DA CALLDATASIZE PUSH1 0x4 PUSH2 0x3685 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x76A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x781 DUP8 DUP10 ADD DUP10 PUSH2 0x350F JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x7A9 JUMPI PUSH2 0x7A9 DUP5 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x807 PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xA6E JUMPI PUSH2 0x88C DUP6 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP9 POP PUSH2 0x8BA PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x27FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x8F6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3938 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x924 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 PUSH2 0x933 PUSH2 0x2AF6 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 SUB LT ISZERO PUSH2 0x9B3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0x9C0 DUP3 DUP3 DUP8 DUP8 DUP8 PUSH2 0x2D6E JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP11 DUP16 PUSH1 0x40 MLOAD PUSH2 0xA5F SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH2 0xD2C JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB23 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0xB4E DUP6 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP9 POP PUSH2 0xB7C PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x27FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0xBB8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3938 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBE6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 PUSH2 0xBF5 PUSH2 0x2AF6 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 SUB LT ISZERO PUSH2 0xC75 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0xC82 DUP3 DUP3 DUP8 DUP8 DUP8 PUSH2 0x2D6E JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP11 DUP16 PUSH1 0x40 MLOAD PUSH2 0xD21 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMPDEST POP POP PUSH1 0x1 PUSH1 0xB SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xD9E PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xE11 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xE51 JUMPI PUSH2 0xE51 DUP4 PUSH2 0x263B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xEEE JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xEE8 SWAP1 DUP5 SWAP1 PUSH2 0x39DB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xF23 SWAP1 DUP5 SWAP1 PUSH2 0x39DB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xF8B SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x100B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 DUP1 PUSH2 0x101F DUP5 DUP7 ADD DUP7 PUSH2 0x3620 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x102C DUP3 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x108A PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x109B PUSH2 0x2AF6 JUMP JUMPDEST PUSH1 0x2 SLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH2 0x10C0 DUP8 DUP8 DUP5 PUSH2 0x306F JUMP JUMPDEST SWAP1 SWAP2 ADD SWAP1 PUSH1 0x0 DUP3 PUSH2 0x10D1 DUP7 DUP5 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x10DB SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0x10EA DUP7 DUP6 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x10F4 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH2 0x1100 ADDRESS DUP5 PUSH2 0x311E JUMP JUMPDEST PUSH2 0x112C PUSH32 0x0 DUP4 DUP14 DUP14 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0x1158 PUSH32 0x0 DUP3 DUP14 DUP14 PUSH2 0x27FE JUMP JUMPDEST DUP2 DUP7 SUB SWAP6 POP DUP1 DUP6 SUB SWAP5 POP PUSH2 0x116F DUP7 DUP7 DUP12 DUP12 DUP12 PUSH2 0x2D6E JUMP JUMPDEST PUSH2 0x1181 PUSH2 0x117C DUP7 DUP9 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x31B4 JUMP JUMPDEST PUSH1 0x9 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x119A JUMPI SWAP1 POP POP SWAP12 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP13 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1221 JUMPI PUSH2 0x1221 PUSH2 0x3AB5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP13 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x128A JUMPI PUSH2 0x128A PUSH2 0x3AB5 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP2 DUP3 ADD DUP4 SWAP1 MSTORE DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xB SSTORE POP SWAP8 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x137E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x1393 DUP6 DUP8 ADD DUP8 PUSH2 0x34C4 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x13C7 JUMPI PUSH2 0x13C7 DUP3 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1425 PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x1436 PUSH2 0x2AF6 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1500 JUMPI PUSH32 0x0 SWAP1 POP DUP7 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 SUB SWAP2 POP PUSH2 0x14F4 DUP3 DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP11 POP DUP11 DUP4 SUB SWAP3 POP PUSH2 0x161C JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x15B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST POP POP PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH15 0x10000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 AND DUP3 SUB SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x1614 SWAP1 DUP4 SWAP1 DUP9 DUP2 AND SWAP1 DUP11 AND PUSH2 0x279B JUMP JUMPDEST SWAP11 POP DUP11 DUP5 SUB SWAP4 POP JUMPDEST PUSH2 0x1628 DUP2 DUP13 DUP12 DUP12 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0x1635 DUP5 DUP5 DUP10 DUP10 DUP10 PUSH2 0x2D6E JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP6 DUP16 PUSH1 0x40 MLOAD PUSH2 0xD21 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1708 JUMPI PUSH2 0x1708 PUSH2 0x3AB5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1776 JUMPI PUSH2 0x1776 PUSH2 0x3AB5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x1821 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 PUSH2 0x1834 DUP4 DUP6 ADD DUP6 PUSH2 0x34A0 JUMP JUMPDEST SWAP1 POP PUSH2 0x183F DUP2 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x189D PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x18AE PUSH2 0x2AF6 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x18C1 DUP7 DUP7 DUP4 PUSH2 0x306F JUMP JUMPDEST ADD PUSH1 0x0 PUSH2 0x18DE PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x39DB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x18FC PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x39DB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x192D DUP5 DUP5 DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x332C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x1955 PUSH2 0x1941 DUP4 DUP10 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x194B DUP6 DUP12 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x117C SWAP2 SWAP1 PUSH2 0x399E JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x197C JUMPI PUSH2 0x1969 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x342F JUMP JUMPDEST PUSH2 0x1975 PUSH2 0x3E8 DUP3 PUSH2 0x39DB JUMP JUMPDEST SWAP13 POP PUSH2 0x19C4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x199E PUSH2 0x117C PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP15 AND SWAP1 DUP16 AND PUSH2 0x399E JUMP JUMPDEST SWAP1 POP DUP1 DUP8 PUSH2 0x19AC DUP3 DUP6 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x19B6 SWAP2 SWAP1 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x19C0 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP14 POP POP JUMPDEST DUP13 PUSH2 0x1A2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F4C49515549444954595F4D494E544544000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0x1A35 DUP13 DUP15 PUSH2 0x342F JUMP JUMPDEST PUSH2 0x1A42 DUP9 DUP9 DUP14 DUP14 DUP14 PUSH2 0x2D6E JUMP JUMPDEST PUSH2 0x1A4F PUSH2 0x117C DUP9 DUP11 PUSH2 0x399E JUMP JUMPDEST PUSH1 0x9 SSTORE PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 DUP2 ADD DUP15 SWAP1 MSTORE DUP14 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP1 CALLER SWAP1 PUSH32 0xF9C32FBC56FF04F32A233EBC26E388564223745E28ABD8D0781DD906537F563E SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xB SSTORE POP SWAP10 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC14AD80200000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH2 0x1B65 SWAP2 SWAP1 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1BA0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1BA5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1BBD SWAP2 SWAP1 PUSH2 0x37FA JUMP JUMPDEST PUSH1 0x6 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x1BD3 DUP5 DUP7 ADD DUP7 PUSH2 0x3659 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1C33 PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1CBE JUMPI PUSH2 0x1CB7 DUP4 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP5 POP PUSH2 0x1DA1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1D73 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0x1D9E DUP4 DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP5 POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1DDA JUMPI PUSH2 0x1DDA DUP4 PUSH2 0x263B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x1DF9 SWAP1 DUP5 SWAP1 PUSH2 0x39DB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xE11 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x1ECB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x1EE0 DUP6 DUP8 ADD DUP8 PUSH2 0x34C4 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x1EEF DUP3 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1F4D PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x1F5E PUSH2 0x2AF6 JUMP JUMPDEST PUSH1 0x2 SLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH2 0x1F83 DUP8 DUP8 DUP5 PUSH2 0x306F JUMP JUMPDEST SWAP1 SWAP2 ADD SWAP1 PUSH1 0x0 DUP3 PUSH2 0x1F94 DUP7 DUP5 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x1F9E SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0x1FAD DUP7 DUP6 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x1FB7 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH2 0x1FC3 ADDRESS DUP5 PUSH2 0x311E JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2083 JUMPI PUSH2 0x2046 DUP3 DUP4 DUP12 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 DUP12 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x279B JUMP JUMPDEST ADD PUSH2 0x2073 PUSH32 0x0 DUP3 DUP14 DUP14 PUSH2 0x27FE JUMP JUMPDEST SWAP12 POP POP SWAP2 DUP11 SWAP1 SUB SWAP2 PUSH1 0x0 DUP12 PUSH2 0x21A3 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2138 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0x2167 DUP2 DUP3 DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP5 DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x279B JUMP JUMPDEST DUP3 ADD SWAP2 POP PUSH2 0x2197 PUSH32 0x0 DUP4 DUP14 DUP14 PUSH2 0x27FE JUMP JUMPDEST POP SWAP11 POP SWAP3 DUP11 SWAP1 SUB SWAP3 DUP11 PUSH1 0x0 JUMPDEST PUSH2 0x21B0 DUP7 DUP7 DUP12 DUP12 DUP12 PUSH2 0x2D6E JUMP JUMPDEST PUSH2 0x21BD PUSH2 0x117C DUP7 DUP9 PUSH2 0x399E JUMP JUMPDEST PUSH1 0x9 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xB SSTORE POP SWAP9 SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x229D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x0 SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP8 PUSH2 0x2318 DUP4 PUSH2 0x3A1E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x23B9 SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2442 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x24BD JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2523 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x2636 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE DUP6 DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1472C27100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH2 0x26D8 SWAP2 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2713 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2718 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2732 SWAP2 SWAP1 PUSH2 0x376B JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2636 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F57484954454C49535445440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x27C8 PUSH32 0x0 DUP7 PUSH2 0x399E JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x27D7 PUSH2 0x2710 DUP7 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x27E1 SWAP2 SWAP1 PUSH2 0x394B JUMP JUMPDEST PUSH2 0x27EB DUP5 DUP4 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x27F5 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2980 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xA4 DUP1 DUP5 ADD DUP9 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC4 SWAP1 SWAP4 ADD DUP5 MSTORE PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP3 MLOAD PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH2 0x28CD SWAP2 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x290A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x290F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x297A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57495448445241575F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST POP PUSH2 0x2AF0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP1 DUP4 ADD DUP8 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xA4 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 PUSH32 0x0 AND SWAP2 PUSH2 0x2A41 SWAP2 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2A7E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2A83 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2AEE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF7888AEC PUSH32 0x0 ADDRESS PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2B8C SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x2BDA SWAP2 SWAP1 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2C15 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2C1A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2C32 SWAP2 SWAP1 PUSH2 0x37FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP6 POP PUSH1 0x0 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH2 0x2D0E SWAP2 SWAP1 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2D49 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2D4E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2D66 SWAP2 SWAP1 PUSH2 0x37FA JUMP JUMPDEST SWAP3 POP POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 GT DUP1 ISZERO SWAP1 PUSH2 0x2D9A JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT ISZERO JUMPDEST PUSH2 0x2E00 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564552464C4F57000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH2 0x2E84 JUMPI PUSH1 0xA DUP1 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH15 0x10000000000000000000000000000 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP1 DUP9 AND OR OR SWAP1 SSTORE PUSH2 0x302F JUMP JUMPDEST TIMESTAMP PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP1 DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2EAD JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x2EC8 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2F8D JUMPI DUP2 DUP2 SUB PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 PUSH1 0x70 DUP8 SWAP1 SHL AND DUP2 PUSH2 0x2F13 JUMPI PUSH2 0x2F13 PUSH2 0x3A86 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF DUP6 AND DUP2 MUL SWAP1 SWAP3 ADD SWAP1 SSTORE SWAP1 POP PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x70 DUP9 SWAP1 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND DUP2 PUSH2 0x2F6E JUMPI PUSH2 0x2F6E PUSH2 0x3A86 JUMP JUMPDEST DIV SWAP1 POP DUP3 PUSH4 0xFFFFFFFF AND DUP2 MUL PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH15 0x10000000000000000000000000000 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP1 DUP11 AND OR SWAP4 SWAP1 SWAP4 OR SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH32 0xCF2AA50876CDFBB541206F89AF0EE78D44A2ABF8D328E37FA4917F982149848A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x0 SWAP1 DUP1 ISZERO PUSH2 0x3116 JUMPI PUSH1 0x0 PUSH2 0x309D PUSH2 0x117C PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND SWAP1 DUP10 AND PUSH2 0x399E JUMP JUMPDEST SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x3114 JUMPI PUSH2 0x2710 DUP2 PUSH1 0x6 SLOAD DUP5 DUP5 PUSH2 0x30BA SWAP2 SWAP1 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x30C4 SWAP1 DUP9 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x30CE SWAP2 SWAP1 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x30D8 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST PUSH2 0x30E2 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP3 POP DUP3 ISZERO PUSH2 0x3114 JUMPI PUSH2 0x3114 PUSH32 0x0 DUP5 PUSH2 0x342F JUMP JUMPDEST POP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x3153 SWAP1 DUP5 SWAP1 PUSH2 0x39DB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x31C3 JUMPI POP PUSH1 0x0 SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x31E9 JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x3204 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x321B JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x3230 JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x3244 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x3257 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0x3263 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3274 JUMPI PUSH2 0x3274 PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x328C JUMPI PUSH2 0x328C PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x32A4 JUMPI PUSH2 0x32A4 PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x32BC JUMPI PUSH2 0x32BC PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x32D4 JUMPI PUSH2 0x32D4 PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x32EC JUMPI PUSH2 0x32EC PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3304 JUMPI PUSH2 0x3304 PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x331C JUMPI PUSH2 0x331C PUSH2 0x3A86 JUMP JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x3116 JUMPI DUP1 PUSH2 0x27F5 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 ISZERO DUP1 PUSH2 0x333A JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x334A JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x3426 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x3357 DUP6 DUP10 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x3361 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 GT PUSH2 0x33BC JUMPI PUSH2 0x3377 PUSH2 0x2710 PUSH1 0x2 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x3381 DUP3 DUP9 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x33AB SWAP1 PUSH32 0x0 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x33B5 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP2 POP PUSH2 0x3424 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x33C9 DUP8 DUP10 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x33D3 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH2 0x33E2 PUSH2 0x2710 PUSH1 0x2 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x33EC DUP3 DUP11 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x3416 SWAP1 PUSH32 0x0 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x3420 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP4 POP POP JUMPDEST POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3441 SWAP2 SWAP1 PUSH2 0x394B JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x31A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x34B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x34BD DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x34D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x34E4 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x34F4 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x3504 DUP2 PUSH2 0x3B38 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3527 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3532 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3542 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x3552 DUP2 PUSH2 0x3B38 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x358A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x359C JUMPI PUSH2 0x359C PUSH2 0x3AE4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x35E2 JUMPI PUSH2 0x35E2 PUSH2 0x3AE4 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP12 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x35FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x363E DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x364E DUP2 PUSH2 0x3B38 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x366C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3677 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3698 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x36A3 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x364E DUP2 PUSH2 0x3B13 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x36C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x36D3 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x36E3 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x370F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x371A DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x372A DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x374E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x377D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x34BD DUP2 PUSH2 0x3B38 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x379B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x37B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x37C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x37D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x37E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x380C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x382B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x39F2 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x386F DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x39F2 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x38C7 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3895 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x392B JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x38F0 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x34BD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3813 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x395E JUMPI PUSH2 0x395E PUSH2 0x3A57 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3999 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x39D6 JUMPI PUSH2 0x39D6 PUSH2 0x3A57 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x39ED JUMPI PUSH2 0x39ED PUSH2 0x3A57 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3A0D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x39F5 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2AF0 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x3A50 JUMPI PUSH2 0x3A50 PUSH2 0x3A57 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3B35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3B35 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP16 PUSH5 0x2184248699 0xC1 PC 0xC1 DUP4 0x22 0xF8 0xDC LOG2 0xDE PUSH16 0xE2CC065D00EB82ED365836D516447C64 PUSH20 0x6F6C634300080700330000000000000000000000 ",
              "sourceMap": "612:17413:52:-:0;;;2021:1722;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1711:4:57;;;;;;;;;;;;;;;;;1745:10;;;;;;;;;;-1:-1:-1;;;1745:10:57;;;;1554:278;;1582:95;1554:278;;;3211:25:64;;;;1695:22:57;3252:18:64;;;3245:34;;;;1735:21:57;3295:18:64;;;3288:34;1774:13:57;3338:18:64;;;3331:34;1813:4:57;3381:19:64;;;3374:61;3183:19;;1554:278:57;;;;;;;;;;;;1531:311;;;;;;1512:330;;;;;;2108:15:52;2137;2166:16;2196:17;2227:25;2266:17;2297:12;2333:11;2322:82;;;;;;;;;;;;:::i;:::-;2094:310;;-1:-1:-1;2094:310:52;;-1:-1:-1;2094:310:52;;-1:-1:-1;2094:310:52;-1:-1:-1;2094:310:52;-1:-1:-1;2094:310:52;-1:-1:-1;2094:310:52;-1:-1:-1;;2483:21:52;;2475:46;;;;-1:-1:-1;2475:46:52;;3990:2:64;2475:46:52;;;3972:21:64;4029:2;4009:18;;;4002:30;-1:-1:-1;4048:18:64;;;4041:42;4100:18;;2475:46:52;;;;;;;;;-1:-1:-1;2539:18:52;;;;;;;;2531:50;;;;-1:-1:-1;2531:50:52;;4331:2:64;2531:50:52;;;4313:21:64;4370:2;4350:18;;;4343:30;4409:21;4389:18;;;4382:49;4448:18;;2531:50:52;4129:343:64;2531:50:52;2618:4;-1:-1:-1;2599:24:52;;;;2591:50;;;;-1:-1:-1;2591:50:52;;3648:2:64;2591:50:52;;;3630:21:64;3687:2;3667:18;;;3660:30;-1:-1:-1;3706:18:64;;;3699:43;3759:18;;2591:50:52;3446:337:64;2591:50:52;2678:4;-1:-1:-1;2659:24:52;;;;2651:50;;;;-1:-1:-1;2651:50:52;;3648:2:64;2651:50:52;;;3630:21:64;3687:2;3667:18;;;3660:30;-1:-1:-1;3706:18:64;;;3699:43;3759:18;;2651:50:52;3446:337:64;2651:50:52;1121:5;2719:8;:19;;2711:48;;;;-1:-1:-1;2711:48:52;;4679:2:64;2711:48:52;;;4661:21:64;4718:2;4698:18;;;4691:30;-1:-1:-1;4737:18:64;;;4730:46;4793:18;;2711:48:52;4477:340:64;2711:48:52;2770:72;2804:17;2823:9;2834:7;2770:33;;;;;:72;;:::i;:::-;2907:55;;;;;;;;;;;;;;;;-1:-1:-1;2907:55:52;-1:-1:-1;2907:55:52;;;2880:83;;-1:-1:-1;;;2880:26:52;;;:83;;2907:55;2880:83;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3029:57:52;;;;;;;;;;;;;;;;-1:-1:-1;3029:57:52;-1:-1:-1;3029:57:52;;;3002:85;;2853:110;;-1:-1:-1;;;;;3002:26:52;;;:85;;3029:57;3002:85;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3150:54:52;;;;;;;;;;;;;;;;-1:-1:-1;3150:54:52;-1:-1:-1;3150:54:52;;;3123:82;;2973:114;;-1:-1:-1;;;;;3123:26:52;;;:82;;3150:54;3123:82;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3216:16:52;;;;;;;3242;;;;;;3268:18;;;;1121:5;3445:18;;;-1:-1:-1;3420:43:52;3492:30;;3097:108;;-1:-1:-1;3492:30:52;;-1:-1:-1;3492:30:52;;;;;;;;;;:::i;:::-;3483:6;:39;3543:32;;;;;;;;;;;;;;:::i;:::-;3532:43;;-1:-1:-1;3532:43:52;;;3593:29;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;3585:37:52;;;;;;;3632:32;;;;;;;-1:-1:-1;3674:8:52;:12;3696:40;;;;3714:18;:22;;-1:-1:-1;3714:22:52;-1:-1:-1;3714:22:52;;;3696:40;2084:1659;;;;;;;;;;2021:1722;;612:17413;;1910:238:57;2039:16;:36;;-1:-1:-1;2039:36:57;;;-1:-1:-1;2039:36:57;;;;;;;-1:-1:-1;2085:20:57;;;;;;;;;;;;;;;2115:26;;;;2137:4;2128:13;;-1:-1:-1;2128:13:57;-1:-1:-1;2128:13:57;;;2115:26;1910:238;;;:::o;14:138:64:-;93:13;;115:31;93:13;115:31;:::i;:::-;14:138;;;:::o;157:164::-;233:13;;282;;275:21;265:32;;255:60;;311:1;308;301:12;326:259;404:6;457:2;445:9;436:7;432:23;428:32;425:52;;;473:1;470;463:12;425:52;505:9;499:16;524:31;549:5;524:31;:::i;:::-;574:5;326:259;-1:-1:-1;;;326:259:64:o;590:908::-;740:6;748;756;764;772;780;788;841:3;829:9;820:7;816:23;812:33;809:53;;;858:1;855;848:12;809:53;890:9;884:16;909:31;934:5;909:31;:::i;:::-;1009:2;994:18;;988:25;959:5;;-1:-1:-1;1022:33:64;988:25;1022:33;:::i;:::-;1121:2;1106:18;;1100:25;1074:7;;-1:-1:-1;1100:25:64;-1:-1:-1;1144:46:64;1186:2;1171:18;;1144:46;:::i;:::-;1134:56;;1235:3;1224:9;1220:19;1214:26;1249:33;1274:7;1249:33;:::i;:::-;1353:3;1338:19;;1332:26;1301:7;;-1:-1:-1;1367:33:64;1332:26;1367:33;:::i;:::-;1419:7;-1:-1:-1;1445:47:64;1487:3;1472:19;;1445:47;:::i;:::-;1435:57;;590:908;;;;;;;;;;:::o;1503:976::-;1591:6;1599;1652:2;1640:9;1631:7;1627:23;1623:32;1620:52;;;1668:1;1665;1658:12;1620:52;1695:16;;-1:-1:-1;1760:14:64;;;1757:34;;;1787:1;1784;1777:12;1757:34;1825:6;1814:9;1810:22;1800:32;;1870:7;1863:4;1859:2;1855:13;1851:27;1841:55;;1892:1;1889;1882:12;1841:55;1921:2;1915:9;1943:2;1939;1936:10;1933:36;;;1949:18;;:::i;:::-;2024:2;2018:9;1992:2;2078:13;;-1:-1:-1;;2074:22:64;;;2098:2;2070:31;2066:40;2054:53;;;2122:18;;;2142:22;;;2119:46;2116:72;;;2168:18;;:::i;:::-;2208:10;2204:2;2197:22;2243:2;2235:6;2228:18;2285:7;2278:4;2273:2;2269;2265:11;2261:22;2258:35;2255:55;;;2306:1;2303;2296:12;2255:55;2319:59;2375:2;2368:4;2360:6;2356:17;2349:4;2345:2;2341:13;2319:59;:::i;:::-;2397:6;2387:16;;;;;;;2422:51;2467:4;2456:9;2452:20;2422:51;:::i;:::-;2412:61;;1503:976;;;;;:::o;2484:184::-;2554:6;2607:2;2595:9;2586:7;2582:23;2578:32;2575:52;;;2623:1;2620;2613:12;2575:52;-1:-1:-1;2646:16:64;;2484:184;-1:-1:-1;2484:184:64:o;2673:274::-;2802:3;2840:6;2834:13;2856:53;2902:6;2897:3;2890:4;2882:6;2878:17;2856:53;:::i;:::-;2925:16;;;;;2673:274;-1:-1:-1;;2673:274:64:o;4822:258::-;4894:1;4904:113;4918:6;4915:1;4912:13;4904:113;;;4994:11;;;4988:18;4975:11;;;4968:39;4940:2;4933:10;4904:113;;;5035:6;5032:1;5029:13;5026:48;;;5070:1;5061:6;5056:3;5052:16;5045:27;5026:48;;4822:258;;;:::o;5085:127::-;5146:10;5141:3;5137:20;5134:1;5127:31;5177:4;5174:1;5167:15;5201:4;5198:1;5191:15;5217:131;-1:-1:-1;5292:31:64;;5282:42;;5272:70;;5338:1;5335;5328:12;5272:70;5217:131;:::o;:::-;612:17413:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@DOMAIN_SEPARATOR_23253": {
                  "entryPoint": null,
                  "id": 23253,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@PERMIT_TYPEHASH_23250": {
                  "entryPoint": null,
                  "id": 23250,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_balance_18455": {
                  "entryPoint": 10998,
                  "id": 18455,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@_burn_23592": {
                  "entryPoint": 12574,
                  "id": 23592,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_checkWhiteList_23628": {
                  "entryPoint": 9787,
                  "id": 23628,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_getAmountOut_18691": {
                  "entryPoint": 10139,
                  "id": 18691,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@_getReserves_18397": {
                  "entryPoint": null,
                  "id": 18397,
                  "parameterSlots": 0,
                  "returnSlots": 3
                },
                "@_mintFee_18659": {
                  "entryPoint": 12399,
                  "id": 18659,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@_mint_23564": {
                  "entryPoint": 13359,
                  "id": 23564,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_nonOptimalMintFee_18839": {
                  "entryPoint": 13100,
                  "id": 18839,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "@_transfer_18756": {
                  "entryPoint": 10238,
                  "id": 18756,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_update_18595": {
                  "entryPoint": 11630,
                  "id": 18595,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@allowance_23244": {
                  "entryPoint": null,
                  "id": 23244,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@approve_23345": {
                  "entryPoint": 3497,
                  "id": 23345,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@balanceOf_23237": {
                  "entryPoint": null,
                  "id": 23237,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@barFeeTo_17235": {
                  "entryPoint": null,
                  "id": 17235,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@barFee_17245": {
                  "entryPoint": null,
                  "id": 17245,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@bento_17237": {
                  "entryPoint": null,
                  "id": 17237,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@burnSingle_18032": {
                  "entryPoint": 7773,
                  "id": 18032,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@burn_17832": {
                  "entryPoint": 3997,
                  "id": 17832,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@decimals_23224": {
                  "entryPoint": null,
                  "id": 23224,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@flashSwap_18348": {
                  "entryPoint": 1783,
                  "id": 18348,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAmountIn_18938": {
                  "entryPoint": 4873,
                  "id": 18938,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAmountOut_18926": {
                  "entryPoint": 7107,
                  "id": 18926,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAssets_18867": {
                  "entryPoint": 5812,
                  "id": 18867,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@getReserves_18951": {
                  "entryPoint": 3392,
                  "id": 18951,
                  "parameterSlots": 0,
                  "returnSlots": 3
                },
                "@initialize_23316": {
                  "entryPoint": 9627,
                  "id": 23316,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@kLast_17251": {
                  "entryPoint": null,
                  "id": 17251,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@level2_23230": {
                  "entryPoint": null,
                  "id": 23230,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@masterDeployer_17239": {
                  "entryPoint": null,
                  "id": 17239,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@mint_17654": {
                  "entryPoint": 6067,
                  "id": 17654,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@name_23218": {
                  "entryPoint": null,
                  "id": 23218,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@nonces_23258": {
                  "entryPoint": null,
                  "id": 23258,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@operator_23228": {
                  "entryPoint": null,
                  "id": 23228,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@permit_23536": {
                  "entryPoint": 8755,
                  "id": 23536,
                  "parameterSlots": 7,
                  "returnSlots": 0
                },
                "@poolIdentifier_17261": {
                  "entryPoint": null,
                  "id": 17261,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@price0CumulativeLast_17247": {
                  "entryPoint": null,
                  "id": 17247,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@price1CumulativeLast_17249": {
                  "entryPoint": null,
                  "id": 17249,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@sqrt_3138": {
                  "entryPoint": 12724,
                  "id": 3138,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@swapFee_17231": {
                  "entryPoint": null,
                  "id": 17231,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@swap_18171": {
                  "entryPoint": 4880,
                  "id": 18171,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@symbol_23221": {
                  "entryPoint": null,
                  "id": 23221,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@token0_17241": {
                  "entryPoint": null,
                  "id": 17241,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@token1_17243": {
                  "entryPoint": null,
                  "id": 17243,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@totalSupply_23232": {
                  "entryPoint": null,
                  "id": 23232,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@transferFrom_23448": {
                  "entryPoint": 3618,
                  "id": 23448,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@transfer_23385": {
                  "entryPoint": 7595,
                  "id": 23385,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@updateBarFee_18375": {
                  "entryPoint": 6856,
                  "id": 18375,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@whiteListManager_23226": {
                  "entryPoint": null,
                  "id": 23226,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 13472,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payable": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_bool": {
                  "entryPoint": 13508,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_boolt_uint256t_bytes_memory_ptr": {
                  "entryPoint": 13583,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_address_payablet_bool": {
                  "entryPoint": 13856,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_address_payablet_uint256": {
                  "entryPoint": 13913,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 13957,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 14003,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32": {
                  "entryPoint": 14068,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 7
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bool_fromMemory": {
                  "entryPoint": 14187,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_calldata_ptr": {
                  "entryPoint": 14216,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 14330,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_bytes": {
                  "entryPoint": 14355,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 14429,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint8_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14457,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14547,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14648,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_763a38bd0e76a191b2607dcd1b2bd7d2e31ac1f3de7b2a0f756698e57f39c206__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f386d26920ad5c64e0ecdb024adf48b36625926cc342c9dfbbd1b4a7544d8539__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint112_t_uint112_t_uint32__to_t_uint112_t_uint112_t_uint32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 14667,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 14691,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 14750,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 14811,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 14834,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "increment_t_uint256": {
                  "entryPoint": 14878,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 14935,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": 14982,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 15029,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 15076,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 15123,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bool": {
                  "entryPoint": 15160,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:19805:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:177:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "130:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "139:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "142:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "132:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "132:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "132:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "105:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "114:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "101:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "101:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "126:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "94:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "155:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "181:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "168:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "168:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "159:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "225:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "200:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "200:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "200:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "240:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "250:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "240:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "61:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "73:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:247:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "344:177:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "390:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "399:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "402:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "392:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "392:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "392:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "365:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "374:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "361:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "361:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "386:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "357:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "357:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "354:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "415:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "441:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "428:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "428:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "419:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "485:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "460:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "460:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "460:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "500:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "510:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "500:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payable",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "310:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "321:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "333:6:64",
                            "type": ""
                          }
                        ],
                        "src": "266:255:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "643:422:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "689:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "698:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "701:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "691:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "691:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "691:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "664:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "673:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "660:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "660:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "685:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "656:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "656:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "653:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "714:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "740:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "727:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "727:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "718:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "784:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "759:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "759:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "759:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "799:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "809:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "799:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "823:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "855:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "866:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "851:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "851:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "838:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "838:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "827:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "904:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "879:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "879:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "879:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "921:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "931:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "921:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "947:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "979:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "990:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "975:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "975:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "962:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "962:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "951:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1025:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "1003:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1003:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1003:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1042:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "1052:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1042:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "593:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "604:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "616:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "624:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "632:6:64",
                            "type": ""
                          }
                        ],
                        "src": "526:539:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1230:1317:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1277:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1286:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1289:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1279:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1279:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1279:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1251:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1260:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1247:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1247:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1272:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1243:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1243:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1240:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1302:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1328:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1315:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1315:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1306:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1372:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1347:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1347:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1347:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1387:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1397:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1387:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1411:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1443:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1454:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1439:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1439:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1426:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1426:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1415:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1492:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1467:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1467:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1467:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1509:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1519:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1509:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1535:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1567:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1578:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1563:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1563:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1550:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1550:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1539:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1613:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "1591:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1591:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1591:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1630:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "1640:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1630:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1656:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1683:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1694:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1679:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1679:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1666:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1666:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1656:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1707:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1738:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1749:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1734:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1734:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1721:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1721:33:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1711:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1763:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1773:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1767:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1818:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1827:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1830:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1820:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1820:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1820:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1806:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1814:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1803:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1803:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1800:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1843:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1857:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1868:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1853:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1853:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1847:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1923:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1932:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1935:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1925:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1925:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1925:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1902:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1906:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1898:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1898:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1913:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1894:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1894:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1887:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1887:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1884:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1948:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1971:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1958:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1958:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1952:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1997:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1999:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1999:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1999:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1989:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1993:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1986:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1986:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1983:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2028:76:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2038:66:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "2032:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2113:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2133:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2127:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2127:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2117:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2145:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2167:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2191:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2195:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2187:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2187:13:64"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "2202:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "2183:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2183:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2207:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2179:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2179:31:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "2212:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2175:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2175:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2163:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2163:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2149:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2275:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2277:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2277:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2277:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2234:10:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2246:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2231:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2231:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2254:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2266:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2251:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2251:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2228:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2228:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2225:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2313:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2317:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2306:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2306:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2306:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2344:6:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2352:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2337:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2337:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2337:18:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2401:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2410:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2413:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2403:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2403:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2403:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2378:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2382:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2374:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2374:11:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2387:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2370:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2370:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2392:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2367:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2367:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2364:53:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2443:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2451:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2439:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2439:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2460:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2464:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2456:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2456:11:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2469:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "2426:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2426:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2426:46:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "2496:6:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2504:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2492:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2492:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2509:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2488:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2488:24:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2514:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2481:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2481:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2481:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2525:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "2535:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2525:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_boolt_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1164:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1175:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1187:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1195:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1203:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1211:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1219:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1070:1477:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2644:298:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2690:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2699:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2702:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2692:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2692:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2692:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2665:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2674:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2661:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2661:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2686:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2657:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2657:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2654:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2715:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2741:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2728:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2728:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2719:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2785:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2760:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2760:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2760:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2800:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2810:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2800:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2824:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2856:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2867:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2852:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2852:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2839:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2839:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2828:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2902:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "2880:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2880:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2880:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2919:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "2929:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2919:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2602:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2613:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2625:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2633:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2552:390:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3042:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3088:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3097:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3100:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3090:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3090:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3090:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3063:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3072:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3059:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3059:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3084:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3055:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3055:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3052:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3113:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3139:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3126:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3126:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3117:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3183:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3158:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3158:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3158:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3198:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3208:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3198:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3222:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3249:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3260:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3245:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3245:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3232:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3232:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3222:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3000:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3011:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3023:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3031:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2947:323:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3362:301:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3408:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3417:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3420:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3410:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3410:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3410:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3383:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3392:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3379:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3379:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3404:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3375:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3375:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3372:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3433:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3459:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3446:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3446:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3437:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3503:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3478:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3478:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3478:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3518:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3528:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3518:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3542:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3574:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3585:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3570:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3570:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3557:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3557:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3546:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3623:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3598:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3598:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3598:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3640:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3650:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3640:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3320:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3331:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3343:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3351:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3275:388:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3772:352:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3818:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3827:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3830:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3820:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3820:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3820:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3793:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3802:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3789:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3789:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3814:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3785:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3785:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3782:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3843:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3869:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3856:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3856:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3847:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3913:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3888:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3888:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3888:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3928:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3938:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3928:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3952:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3984:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3995:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3980:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3980:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3967:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3967:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3956:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4033:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4008:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4008:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4008:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4050:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4060:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4050:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4076:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4103:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4114:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4099:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4099:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4086:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4086:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4076:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3722:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3733:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3745:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3753:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3761:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3668:456:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4299:659:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4346:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4355:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4358:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4348:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4348:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4348:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4320:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4329:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4316:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4316:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4341:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4312:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4312:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4309:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4371:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4397:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4384:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4384:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4375:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4441:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4416:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4416:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4416:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4456:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4466:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4456:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4480:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4512:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4523:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4508:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4508:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4495:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4495:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4484:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4561:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4536:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4536:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4536:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4578:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4588:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4578:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4604:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4631:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4642:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4627:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4627:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4614:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4614:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4604:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4655:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4682:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4693:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4678:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4678:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4665:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4665:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4655:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4706:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4738:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4749:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4734:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4734:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4721:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4721:33:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4710:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4806:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4815:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4818:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4808:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4808:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4808:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4776:7:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "4789:7:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4798:4:64",
                                            "type": "",
                                            "value": "0xff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "4785:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4785:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "4773:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4773:31:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4766:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4766:39:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4763:59:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4831:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "4841:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "4831:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4857:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4884:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4895:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4880:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4880:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4867:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4867:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "4857:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4909:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4936:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4947:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4932:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4932:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4919:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4919:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4909:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4217:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4228:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4240:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4248:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4256:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4264:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "4272:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "4280:6:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "4288:6:64",
                            "type": ""
                          }
                        ],
                        "src": "4129:829:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5050:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5096:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5105:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5108:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5098:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5098:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5098:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5071:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5080:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5067:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5067:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5092:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5063:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5063:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5060:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5121:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5147:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5134:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5134:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5125:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5191:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5166:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5166:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5166:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5206:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5216:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5206:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5230:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5257:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5268:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5253:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5253:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5240:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5240:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5230:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5008:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5019:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5031:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5039:6:64",
                            "type": ""
                          }
                        ],
                        "src": "4963:315:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5361:167:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5407:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5416:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5419:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5409:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5409:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5409:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5382:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5391:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5378:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5378:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5403:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5374:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5374:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5371:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5432:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5451:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5445:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5445:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5436:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5492:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "5470:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5470:28:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5470:28:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5507:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5517:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5507:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5327:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5338:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5350:6:64",
                            "type": ""
                          }
                        ],
                        "src": "5283:245:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5622:502:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5668:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5677:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5680:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5670:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5670:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5670:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5643:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5652:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5639:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5639:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5664:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5635:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5635:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5632:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5693:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5720:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5707:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5707:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "5697:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5739:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5749:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5743:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5794:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5803:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5806:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5796:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5796:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5796:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5782:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5790:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5779:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5779:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5776:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5819:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5833:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5844:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5829:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5829:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5823:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5899:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5908:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5911:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5901:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5901:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5901:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "5878:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5882:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5874:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5874:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5889:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5870:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5870:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5863:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5863:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5860:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5924:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5951:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5938:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5938:16:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "5928:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5981:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5990:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5993:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5983:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5983:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5983:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5969:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5977:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5966:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5966:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5963:34:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6047:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6056:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6059:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6049:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6049:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6049:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "6020:2:64"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "6024:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6016:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6016:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6033:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6012:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6012:24:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6038:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6009:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6009:37:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6006:57:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6072:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6086:2:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6090:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6082:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6082:11:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6072:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6102:16:64",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "6112:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6102:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5580:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5591:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5603:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5611:6:64",
                            "type": ""
                          }
                        ],
                        "src": "5533:591:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6210:103:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6256:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6265:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6268:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6258:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6258:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6258:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6231:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6240:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6227:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6227:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6252:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6223:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6223:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6220:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6281:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6297:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6291:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6291:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6281:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6176:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6187:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6199:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6129:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6367:267:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6377:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6397:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6391:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6391:12:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6381:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6419:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6424:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6412:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6412:19:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6412:19:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6466:5:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6473:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6462:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6462:16:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6484:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6489:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6480:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6480:14:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6496:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "6440:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6440:63:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6440:63:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6512:116:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6527:3:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "6540:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6548:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "6536:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6536:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6553:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "6532:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6532:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6523:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6523:98:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6623:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6519:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6519:109:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6512:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6344:5:64",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6351:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6359:3:64",
                            "type": ""
                          }
                        ],
                        "src": "6318:316:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6776:137:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6786:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6806:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6800:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6800:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6790:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6848:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6856:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6844:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6844:17:64"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6863:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6868:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "6822:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6822:53:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6822:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6884:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6895:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6900:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6891:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6891:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6884:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6752:3:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6757:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6768:3:64",
                            "type": ""
                          }
                        ],
                        "src": "6639:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7166:196:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "7183:3:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7188:66:64",
                                    "type": "",
                                    "value": "0x1901000000000000000000000000000000000000000000000000000000000000"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7176:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7176:79:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7176:79:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7275:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7280:1:64",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7271:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7271:11:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7284:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7264:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7264:27:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7264:27:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7311:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7316:2:64",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7307:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7307:12:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7321:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7300:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7300:28:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7300:28:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7337:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "7348:3:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7353:2:64",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7344:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7344:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7337:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7134:3:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7139:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7147:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7158:3:64",
                            "type": ""
                          }
                        ],
                        "src": "6918:444:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7468:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7478:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7490:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7501:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7486:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7486:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7478:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7520:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "7535:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7543:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7531:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7531:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7513:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7513:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7513:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7437:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7448:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7459:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7367:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7727:198:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7737:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7749:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7760:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7745:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7745:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7737:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7772:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7782:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7776:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7840:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "7855:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7863:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7851:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7851:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7833:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7833:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7833:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7887:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7898:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7883:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7883:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7907:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7915:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7903:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7903:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7876:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7876:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7876:43:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7688:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7699:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7707:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7718:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7598:327:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8149:349:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8159:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8171:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8182:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8167:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8167:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8159:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8195:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8205:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8199:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8263:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8278:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8286:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8274:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8274:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8256:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8256:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8256:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8310:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8321:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8306:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8306:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8330:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8338:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8326:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8326:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8299:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8299:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8299:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8362:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8373:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8358:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8358:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8382:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8390:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8378:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8378:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8351:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8351:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8351:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8414:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8425:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8410:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8410:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "8434:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8442:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8430:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8430:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8403:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8403:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8403:45:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8468:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8479:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8464:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8464:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "8485:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8457:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8457:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8457:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint8_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8086:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "8097:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "8105:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8113:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8121:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8129:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8140:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7930:568:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8688:294:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8698:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8710:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8721:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8706:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8706:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8698:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8734:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8744:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8738:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8802:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8817:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8825:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8813:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8813:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8795:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8795:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8795:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8849:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8860:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8845:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8845:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8869:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8877:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8865:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8865:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8838:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8838:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8838:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8901:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8912:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8897:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8897:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8921:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8929:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8917:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8917:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8890:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8890:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8890:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8953:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8964:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8949:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8949:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "8969:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8942:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8942:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8942:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8633:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "8644:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8652:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8660:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8668:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8679:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8503:479:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9138:530:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9148:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9158:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9152:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9169:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9187:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9198:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9183:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9183:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9173:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9217:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9228:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9210:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9210:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9210:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9240:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "9251:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "9244:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9266:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9286:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9280:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9280:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "9270:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9309:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9317:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9302:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9302:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9302:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9333:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9344:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9355:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9340:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9340:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "9333:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9367:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9385:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9393:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9381:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9381:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "9371:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9405:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9414:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "9409:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9473:169:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "9494:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9509:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "9503:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "9503:13:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "9518:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "9499:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9499:62:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "9487:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9487:75:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9487:75:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9575:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "9586:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9591:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9582:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9582:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "9575:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9607:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "9621:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9629:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9617:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9617:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "9607:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "9435:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9438:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9432:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9432:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "9446:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9448:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "9457:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9460:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9453:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9453:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "9448:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "9428:3:64",
                                "statements": []
                              },
                              "src": "9424:218:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9651:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "9659:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9651:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9107:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9118:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9129:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8987:681:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9882:636:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9892:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9902:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9896:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9913:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9931:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9942:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9927:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9927:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9917:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9961:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9972:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9954:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9954:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9954:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9984:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "9995:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "9988:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10010:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10030:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10024:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10024:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "10014:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10053:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10061:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10046:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10046:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10046:22:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10077:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10087:2:64",
                                "type": "",
                                "value": "64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "10081:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10098:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10109:9:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "10120:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10105:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10105:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "10098:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10132:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10150:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10158:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10146:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10146:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "10136:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10170:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10179:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "10174:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10238:254:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "10252:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "10268:6:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "10262:5:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10262:13:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "10256:2:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "10295:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10310:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "10304:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "10304:9:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "10315:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "10300:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10300:58:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10288:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10288:71:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10288:71:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "10383:3:64"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "10388:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "10379:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10379:12:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10403:2:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10407:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "10399:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "10399:11:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "10393:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10393:18:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10372:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10372:40:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10372:40:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10425:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "10436:3:64"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "10441:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10432:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10432:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "10425:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10457:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "10471:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "10479:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10467:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10467:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10457:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "10200:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10203:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10197:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10197:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "10211:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10213:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "10222:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10225:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10218:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10218:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "10213:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "10193:3:64",
                                "statements": []
                              },
                              "src": "10189:303:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10501:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "10509:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10501:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9851:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9862:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9873:4:64",
                            "type": ""
                          }
                        ],
                        "src": "9673:845:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10618:92:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10628:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10640:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10651:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10636:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10636:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10628:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10670:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "10695:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "10688:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10688:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "10681:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10681:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10663:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10663:41:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10663:41:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10587:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10598:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10609:4:64",
                            "type": ""
                          }
                        ],
                        "src": "10523:187:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10816:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10826:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10838:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10849:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10834:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10834:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10826:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10868:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10879:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10861:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10861:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10861:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10785:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10796:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10807:4:64",
                            "type": ""
                          }
                        ],
                        "src": "10715:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11138:373:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11148:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11160:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11171:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11156:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11156:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11148:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11191:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11202:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11184:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11184:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11184:25:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11218:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11228:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11222:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11290:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11301:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11286:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11286:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11310:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11318:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11306:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11306:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11279:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11279:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11279:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11342:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11353:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11338:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11338:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "11362:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11370:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11358:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11358:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11331:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11331:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11331:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11394:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11405:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11390:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11390:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "11410:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11383:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11383:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11383:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11437:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11448:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11433:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11433:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "11454:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11426:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11426:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11426:35:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11481:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11492:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11477:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11477:19:64"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "11498:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11470:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11470:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11470:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11067:9:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "11078:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "11086:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "11094:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "11102:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11110:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11118:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11129:4:64",
                            "type": ""
                          }
                        ],
                        "src": "10897:614:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11697:217:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11707:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11719:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11730:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11715:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11715:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11707:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11750:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11761:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11743:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11743:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11743:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11788:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11799:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11784:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11784:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11808:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11816:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11804:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11804:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11777:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11777:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11777:45:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11842:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11853:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11838:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11838:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11858:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11831:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11831:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11831:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11885:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11896:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11881:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11881:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "11901:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11874:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11874:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11874:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11642:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "11653:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "11661:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11669:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11677:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11688:4:64",
                            "type": ""
                          }
                        ],
                        "src": "11516:398:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12038:98:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12055:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12066:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12048:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12048:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12048:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12078:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12103:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12115:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12126:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12111:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12111:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "12086:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12086:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12078:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12007:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12018:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12029:4:64",
                            "type": ""
                          }
                        ],
                        "src": "11919:217:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12262:98:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12279:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12290:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12272:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12272:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12272:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12302:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12327:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12339:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12350:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12335:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12335:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "12310:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12310:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12302:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12231:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12242:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12253:4:64",
                            "type": ""
                          }
                        ],
                        "src": "12141:219:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12539:174:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12556:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12567:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12549:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12549:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12549:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12590:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12601:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12586:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12586:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12606:2:64",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12579:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12579:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12579:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12629:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12640:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12625:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12625:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f5045524d49545f5349474e4154555245",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12645:26:64",
                                    "type": "",
                                    "value": "INVALID_PERMIT_SIGNATURE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12618:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12618:54:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12618:54:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12681:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12693:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12704:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12689:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12689:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12681:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12516:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12530:4:64",
                            "type": ""
                          }
                        ],
                        "src": "12365:348:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12892:172:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12909:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12920:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12902:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12902:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12902:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12943:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12954:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12939:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12939:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12959:2:64",
                                    "type": "",
                                    "value": "22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12932:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12932:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12932:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12982:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12993:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12978:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12978:18:64"
                                  },
                                  {
                                    "hexValue": "494e53554646494349454e545f414d4f554e545f494e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "12998:24:64",
                                    "type": "",
                                    "value": "INSUFFICIENT_AMOUNT_IN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12971:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12971:52:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12971:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13032:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13044:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13055:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13040:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13040:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13032:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12869:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12883:4:64",
                            "type": ""
                          }
                        ],
                        "src": "12718:346:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13243:169:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13260:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13271:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13253:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13253:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13253:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13294:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13305:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13290:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13290:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13310:2:64",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13283:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13283:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13283:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13333:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13344:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13329:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13329:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f494e5055545f544f4b454e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13349:21:64",
                                    "type": "",
                                    "value": "INVALID_INPUT_TOKEN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13322:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13322:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13322:49:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13380:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13392:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13403:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13388:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13388:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13380:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13220:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13234:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13069:343:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13591:170:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13608:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13619:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13601:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13601:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13601:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13642:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13653:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13638:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13638:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13658:2:64",
                                    "type": "",
                                    "value": "20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13631:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13631:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13631:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13681:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13692:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13677:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13677:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f4f55545055545f544f4b454e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13697:22:64",
                                    "type": "",
                                    "value": "INVALID_OUTPUT_TOKEN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13670:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13670:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13670:50:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13729:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13741:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13752:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13737:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13737:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13729:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13568:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13582:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13417:344:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13940:179:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13957:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13968:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13950:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13950:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13950:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13991:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14002:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13987:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13987:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14007:2:64",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13980:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13980:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13980:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14030:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14041:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14026:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14026:18:64"
                                  },
                                  {
                                    "hexValue": "494e53554646494349454e545f4c49515549444954595f4d494e544544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14046:31:64",
                                    "type": "",
                                    "value": "INSUFFICIENT_LIQUIDITY_MINTED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14019:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14019:59:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14019:59:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14087:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14099:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14110:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14095:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14095:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14087:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13917:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13931:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13766:353:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14298:165:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14315:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14326:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14308:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14308:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14308:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14349:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14360:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14345:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14345:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14365:2:64",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14338:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14338:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14338:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14388:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14399:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14384:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14384:18:64"
                                  },
                                  {
                                    "hexValue": "57495448445241575f4641494c4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14404:17:64",
                                    "type": "",
                                    "value": "WITHDRAW_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14377:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14377:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14377:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14431:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14443:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14454:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14439:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14439:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14431:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_763a38bd0e76a191b2607dcd1b2bd7d2e31ac1f3de7b2a0f756698e57f39c206__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14275:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14289:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14124:339:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14642:165:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14659:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14670:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14652:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14652:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14652:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14693:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14704:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14689:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14689:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14709:2:64",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14682:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14682:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14682:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14732:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14743:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14728:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14728:18:64"
                                  },
                                  {
                                    "hexValue": "5452414e534645525f4641494c4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14748:17:64",
                                    "type": "",
                                    "value": "TRANSFER_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14721:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14721:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14721:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14775:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14787:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14798:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14783:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14783:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14775:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14619:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14633:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14468:339:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14986:157:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15003:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15014:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14996:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14996:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14996:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15037:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15048:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15033:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15033:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15053:1:64",
                                    "type": "",
                                    "value": "8"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15026:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15026:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15026:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15075:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15086:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15071:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15071:18:64"
                                  },
                                  {
                                    "hexValue": "4f564552464c4f57",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15091:10:64",
                                    "type": "",
                                    "value": "OVERFLOW"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15064:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15064:38:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15064:38:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15111:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15123:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15134:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15119:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15119:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15111:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14963:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14977:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14812:331:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15322:173:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15339:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15350:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15332:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15332:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15332:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15373:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15384:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15369:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15369:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15389:2:64",
                                    "type": "",
                                    "value": "23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15362:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15362:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15362:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15412:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15423:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15408:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15408:18:64"
                                  },
                                  {
                                    "hexValue": "5045524d49545f444541444c494e455f45585049524544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15428:25:64",
                                    "type": "",
                                    "value": "PERMIT_DEADLINE_EXPIRED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15401:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15401:53:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15401:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15463:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15475:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15486:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15471:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15471:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15463:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15299:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15313:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15148:347:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15674:155:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15691:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15702:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15684:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15684:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15684:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15725:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15736:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15721:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15721:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15741:1:64",
                                    "type": "",
                                    "value": "6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15714:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15714:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15714:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15763:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15774:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15759:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15759:18:64"
                                  },
                                  {
                                    "hexValue": "4c4f434b4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15779:8:64",
                                    "type": "",
                                    "value": "LOCKED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15752:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15752:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15752:36:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15797:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15809:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15820:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15805:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15805:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15797:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15651:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15665:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15500:329:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16008:165:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16025:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16036:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16018:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16018:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16018:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16059:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16070:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16055:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16055:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16075:2:64",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16048:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16048:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16048:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16098:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16109:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16094:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16094:18:64"
                                  },
                                  {
                                    "hexValue": "4e4f545f57484954454c4953544544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16114:17:64",
                                    "type": "",
                                    "value": "NOT_WHITELISTED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16087:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16087:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16087:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16141:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16153:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16164:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16149:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16149:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16141:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f386d26920ad5c64e0ecdb024adf48b36625926cc342c9dfbbd1b4a7544d8539__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15985:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15999:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15834:339:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16333:246:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16343:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16355:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16366:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16351:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16351:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16343:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16378:40:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16388:30:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16382:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16434:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "16449:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16457:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16445:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16445:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16427:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16427:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16427:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16481:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16492:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16477:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16477:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16501:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16509:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16497:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16497:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16470:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16470:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16470:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16533:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16544:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16529:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16529:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "16553:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16561:10:64",
                                        "type": "",
                                        "value": "0xffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16549:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16549:23:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16522:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16522:51:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16522:51:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint112_t_uint112_t_uint32__to_t_uint112_t_uint112_t_uint32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16286:9:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "16297:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16305:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16313:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16324:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16178:401:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16685:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16695:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16707:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16718:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16703:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16703:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16695:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16737:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16748:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16730:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16730:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16730:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16654:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16665:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16676:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16584:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16895:119:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16905:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16917:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16928:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16913:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16913:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16905:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16947:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16958:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16940:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16940:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16940:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16985:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16996:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16981:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16981:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17001:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16974:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16974:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16974:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16856:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16867:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16875:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16886:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16766:248:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17176:162:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17186:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17198:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17209:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17194:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17194:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17186:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17228:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "17239:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17221:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17221:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17221:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17266:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17277:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17262:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17262:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17282:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17255:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17255:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17255:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17309:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17320:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17305:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17305:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "17325:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17298:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17298:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17298:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17129:9:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17140:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17148:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17156:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17167:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17019:319:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17440:87:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17450:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17462:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17473:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17458:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17458:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17450:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17492:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "17507:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17515:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17503:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17503:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17485:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17485:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17485:36:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17409:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17420:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17431:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17343:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17580:80:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17607:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "17609:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17609:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17609:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17596:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "17603:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "17599:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17599:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17593:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17593:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "17590:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17638:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17649:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17652:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17645:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17645:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "17638:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "17563:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "17566:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "17572:3:64",
                            "type": ""
                          }
                        ],
                        "src": "17532:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17711:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17742:168:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17763:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17766:77:64",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "17756:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17756:88:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17756:88:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17864:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17867:4:64",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "17857:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17857:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17857:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17892:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17895:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "17885:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17885:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17885:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17731:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "17724:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17724:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "17721:189:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17919:14:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17928:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17931:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "17924:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17924:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "17919:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "17696:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "17699:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "17705:1:64",
                            "type": ""
                          }
                        ],
                        "src": "17665:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17996:176:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18115:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "18117:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18117:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18117:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "18027:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "18020:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18020:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "18013:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18013:17:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "18035:1:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "18042:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "18110:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "18038:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18038:74:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "18032:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18032:81:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "18009:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18009:105:64"
                              },
                              "nodeType": "YulIf",
                              "src": "18006:131:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18146:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18161:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18164:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "18157:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18157:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "18146:7:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "17975:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "17978:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "17984:7:64",
                            "type": ""
                          }
                        ],
                        "src": "17944:228:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18226:76:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18248:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "18250:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18250:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18250:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18242:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18245:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "18239:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18239:8:64"
                              },
                              "nodeType": "YulIf",
                              "src": "18236:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18279:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18291:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18294:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "18287:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18287:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "18279:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "18208:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "18211:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "18217:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18177:125:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18360:205:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18370:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "18379:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "18374:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18439:63:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "18464:3:64"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "18469:1:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "18460:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "18460:11:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18483:3:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18488:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "18479:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "18479:11:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "18473:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "18473:18:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "18453:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18453:39:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18453:39:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "18400:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "18403:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "18397:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18397:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "18411:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "18413:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "18422:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18425:2:64",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "18418:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18418:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "18413:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "18393:3:64",
                                "statements": []
                              },
                              "src": "18389:113:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18528:31:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "18541:3:64"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "18546:6:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "18537:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "18537:16:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18555:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "18530:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18530:27:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18530:27:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "18517:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "18520:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "18514:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18514:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "18511:48:64"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "18338:3:64",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "18343:3:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "18348:6:64",
                            "type": ""
                          }
                        ],
                        "src": "18307:258:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18617:148:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18708:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "18710:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18710:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18710:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "18633:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18640:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "18630:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18630:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "18627:103:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18739:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "18750:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18757:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18746:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18746:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "18739:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "18599:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "18609:3:64",
                            "type": ""
                          }
                        ],
                        "src": "18570:195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18802:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18819:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18822:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18812:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18812:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18812:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18916:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18919:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18909:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18909:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18909:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18940:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18943:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "18933:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18933:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18933:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "18770:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18991:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19008:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19011:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19001:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19001:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19001:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19105:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19108:4:64",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19098:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19098:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19098:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19129:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19132:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "19122:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19122:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19122:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "18959:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19180:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19197:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19200:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19190:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19190:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19190:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19294:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19297:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19287:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19287:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19287:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19318:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19321:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "19311:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19311:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19311:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "19148:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19369:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19386:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19389:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19379:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19379:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19379:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19483:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19486:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19476:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19476:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19476:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19507:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19510:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "19500:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19500:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19500:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "19337:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19571:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19658:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19667:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19670:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "19660:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19660:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19660:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "19594:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "19605:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "19612:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "19601:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19601:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "19591:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19591:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "19584:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19584:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "19581:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "19560:5:64",
                            "type": ""
                          }
                        ],
                        "src": "19526:154:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19727:76:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19781:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19790:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19793:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "19783:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19783:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19783:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "19750:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "19771:5:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "19764:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "19764:13:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "19757:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19757:21:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "19747:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19747:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "19740:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19740:40:64"
                              },
                              "nodeType": "YulIf",
                              "src": "19737:60:64"
                            }
                          ]
                        },
                        "name": "validator_revert_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "19716:5:64",
                            "type": ""
                          }
                        ],
                        "src": "19685:118:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payable(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_bool(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_bool(value_2)\n        value2 := value_2\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_boolt_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_bool(value_2)\n        value2 := value_2\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value4 := memPtr\n    }\n    function abi_decode_tuple_t_address_payablet_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_bool(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_address_payablet_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let value_2 := calldataload(add(headStart, 128))\n        if iszero(eq(value_2, and(value_2, 0xff))) { revert(0, 0) }\n        value4 := value_2\n        value5 := calldataload(add(headStart, 160))\n        value6 := calldataload(add(headStart, 192))\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, 0x1901000000000000000000000000000000000000000000000000000000000000)\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint8_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), and(value3, 0xff))\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        let _2 := 64\n        pos := add(headStart, _2)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _3 := mload(srcPtr)\n            mstore(pos, and(mload(_3), 0xffffffffffffffffffffffffffffffffffffffff))\n            mstore(add(pos, _1), mload(add(_3, _1)))\n            pos := add(pos, _2)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, value0)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"INVALID_PERMIT_SIGNATURE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"INSUFFICIENT_AMOUNT_IN\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"INVALID_INPUT_TOKEN\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"INVALID_OUTPUT_TOKEN\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"INSUFFICIENT_LIQUIDITY_MINTED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_763a38bd0e76a191b2607dcd1b2bd7d2e31ac1f3de7b2a0f756698e57f39c206__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"WITHDRAW_FAILED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"TRANSFER_FAILED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 8)\n        mstore(add(headStart, 64), \"OVERFLOW\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"PERMIT_DEADLINE_EXPIRED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 6)\n        mstore(add(headStart, 64), \"LOCKED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f386d26920ad5c64e0ecdb024adf48b36625926cc342c9dfbbd1b4a7544d8539__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"NOT_WHITELISTED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint112_t_uint112_t_uint32__to_t_uint112_t_uint112_t_uint32__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, 0xffffffff))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "17231": [
                  {
                    "length": 32,
                    "start": 1215
                  },
                  {
                    "length": 32,
                    "start": 13191
                  },
                  {
                    "length": 32,
                    "start": 13298
                  }
                ],
                "17233": [
                  {
                    "length": 32,
                    "start": 10147
                  }
                ],
                "17235": [
                  {
                    "length": 32,
                    "start": 846
                  },
                  {
                    "length": 32,
                    "start": 12527
                  }
                ],
                "17237": [
                  {
                    "length": 32,
                    "start": 1176
                  },
                  {
                    "length": 32,
                    "start": 10401
                  },
                  {
                    "length": 32,
                    "start": 10775
                  },
                  {
                    "length": 32,
                    "start": 11005
                  },
                  {
                    "length": 32,
                    "start": 11489
                  }
                ],
                "17239": [
                  {
                    "length": 32,
                    "start": 1648
                  },
                  {
                    "length": 32,
                    "start": 6970
                  }
                ],
                "17241": [
                  {
                    "length": 32,
                    "start": 922
                  },
                  {
                    "length": 32,
                    "start": 2063
                  },
                  {
                    "length": 32,
                    "start": 2901
                  },
                  {
                    "length": 32,
                    "start": 3204
                  },
                  {
                    "length": 32,
                    "start": 4357
                  },
                  {
                    "length": 32,
                    "start": 4560
                  },
                  {
                    "length": 32,
                    "start": 5183
                  },
                  {
                    "length": 32,
                    "start": 5603
                  },
                  {
                    "length": 32,
                    "start": 5846
                  },
                  {
                    "length": 32,
                    "start": 7226
                  },
                  {
                    "length": 32,
                    "start": 8325
                  },
                  {
                    "length": 32,
                    "start": 8560
                  },
                  {
                    "length": 32,
                    "start": 11065
                  }
                ],
                "17243": [
                  {
                    "length": 32,
                    "start": 1687
                  },
                  {
                    "length": 32,
                    "start": 2195
                  },
                  {
                    "length": 32,
                    "start": 2498
                  },
                  {
                    "length": 32,
                    "start": 2672
                  },
                  {
                    "length": 32,
                    "start": 4401
                  },
                  {
                    "length": 32,
                    "start": 4665
                  },
                  {
                    "length": 32,
                    "start": 5267
                  },
                  {
                    "length": 32,
                    "start": 5378
                  },
                  {
                    "length": 32,
                    "start": 5956
                  },
                  {
                    "length": 32,
                    "start": 7360
                  },
                  {
                    "length": 32,
                    "start": 8133
                  },
                  {
                    "length": 32,
                    "start": 8268
                  },
                  {
                    "length": 32,
                    "start": 11320
                  }
                ],
                "23253": [
                  {
                    "length": 32,
                    "start": 1118
                  },
                  {
                    "length": 32,
                    "start": 8902
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106102775760003560e01c80635a3d549311610160578063a69840a8116100d8578063c14ad8021161008c578063d21220a711610071578063d21220a714610692578063d505accf146106b9578063dd62ed3e146106cc57600080fd5b8063c14ad80214610662578063cf58879a1461066b57600080fd5b8063a9059cbb116100bd578063a9059cbb14610617578063af8c09bf1461062a578063bc3377d91461063d57600080fd5b8063a69840a8146105dd578063a8f1f52e1461060457600080fd5b80637464fc3d1161012f5780637ecebe00116101145780637ecebe001461057757806392bc32191461059757806395d89b41146105a157600080fd5b80637464fc3d1461055b5780637ba0e2e71461056457600080fd5b80635a3d54931461050a578063627dd56a1461051357806367e4ac2c1461052657806370a082311461053b57600080fd5b80632a07b6c7116101f3578063499a3c50116101c257806354cf2aeb116101a757806354cf2aeb146104ba578063570ca735146104e15780635909c0d51461050157600080fd5b8063499a3c50146104805780634da318271461049357600080fd5b80632a07b6c7146103f857806330adf81f14610418578063313ce5671461043f5780633644e5151461045957600080fd5b80630c0a0cd21161024a57806318160ddd1161022f57806318160ddd146103bc57806323b872dd146103c557806325a93264146103d857600080fd5b80630c0a0cd2146103495780630dfe16811461039557600080fd5b8063053da1c81461027c57806306fdde03146102a25780630902f1ac146102eb578063095ea7b314610326575b600080fd5b61028f61028a366004613788565b6106f7565b6040519081526020015b60405180910390f35b6102de6040518060400160405280601981526020017f5375736869204672616e636869736564204c5020546f6b656e0000000000000081525081565b6040516102999190613938565b6102f3610d40565b604080516dffffffffffffffffffffffffffff948516815293909216602084015263ffffffff1690820152606001610299565b610339610334366004613659565b610da9565b6040519015158152602001610299565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610299565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b61028f60025481565b6103396103d33660046136b3565b610e22565b6000546103709073ffffffffffffffffffffffffffffffffffffffff1681565b61040b610406366004613788565b610f9d565b60405161029991906138d3565b61028f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610447601281565b60405160ff9091168152602001610299565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b61028f61048e366004613788565b611309565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b6001546103709073ffffffffffffffffffffffffffffffffffffffff1681565b61028f60075481565b61028f60085481565b61028f610521366004613788565b611310565b61052e6116b4565b6040516102999190613879565b61028f6105493660046134a0565b60036020526000908152604090205481565b61028f60095481565b61028f610572366004613788565b6117b3565b61028f6105853660046134a0565b60056020526000908152604090205481565b61059f611ac8565b005b6102de6040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b61028f7f54726964656e743a4672616e636869736564435000000000000000000000000081565b61028f610612366004613788565b611bc3565b610339610625366004613659565b611dab565b61028f610638366004613788565b611e5d565b6001546103399074010000000000000000000000000000000000000000900460ff1681565b61028f60065481565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b61059f6106c73660046136f4565b612233565b61028f6106da366004613685565b600460209081526000928352604080842090915290825290205481565b6000600b5460011461076a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6002600b556000808080806107818789018961350f565b94509450945094509450600160149054906101000a900460ff16156107a9576107a98461263b565b6000806000610807600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610a6e5761088c85846dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff1661279b565b98506108ba7f00000000000000000000000000000000000000000000000000000000000000008a89896127fe565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b1906108f6908790600401613938565b600060405180830381600087803b15801561091057600080fd5b505af1158015610924573d6000803e3d6000fd5b50505050600080610933612af6565b9150915086856dffffffffffffffffffffffffffff16830310156109b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e000000000000000000006044820152606401610761565b6109c08282878787612d6e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610a5f929190918252602082015260400190565b60405180910390a45050610d2c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610b23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e000000000000000000000000006044820152606401610761565b610b4e85836dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff1661279b565b9850610b7c7f00000000000000000000000000000000000000000000000000000000000000008a89896127fe565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b190610bb8908790600401613938565b600060405180830381600087803b158015610bd257600080fd5b505af1158015610be6573d6000803e3d6000fd5b50505050600080610bf5612af6565b9150915086846dffffffffffffffffffffffffffff1682031015610c75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e000000000000000000006044820152606401610761565b610c828282878787612d6e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610d21929190918252602082015260400190565b60405180910390a450505b50506001600b555094979650505050505050565b6000806000610d9e600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250909192565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e119086815260200190565b60405180910390a350600192915050565b60015460009074010000000000000000000000000000000000000000900460ff1615610e5157610e518361263b565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610eee5773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915281208054849290610ee89084906139db565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526003602052604081208054849290610f239084906139db565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260036020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f8b9086815260200190565b60405180910390a35060019392505050565b6060600b5460011461100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b5560008061101f84860186613620565b9150915061102c8261263b565b600080600061108a600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b92509250925060008061109b612af6565b60025430600090815260036020526040902054929450909250906110c087878461306f565b909101906000826110d1868461399e565b6110db9190613963565b90506000836110ea868561399e565b6110f49190613963565b9050611100308461311e565b61112c7f0000000000000000000000000000000000000000000000000000000000000000838d8d6127fe565b6111587f0000000000000000000000000000000000000000000000000000000000000000828d8d6127fe565b8186039550808503945061116f86868b8b8b612d6e565b61118161117c868861399e565b6131b4565b6009556040805160028082526060820190925290816020015b604080518082019091526000808252602082015281526020019060019003908161119a579050509b5060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001838152508c60008151811061122157611221613ab5565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001828152508c60018151811061128a5761128a613ab5565b60209081029190910181019190915260408051848152918201839052810184905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a350506001600b5550979a9950505050505050505050565b6000806000fd5b6000600b5460011461137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b5560008080611393858701876134c4565b600154929550909350915074010000000000000000000000000000000000000000900460ff16156113c7576113c78261263b565b6000806000611425600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250600080611436612af6565b915091506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415611500577f00000000000000000000000000000000000000000000000000000000000000009050866dffffffffffffffffffffffffffff16840391506114f482886dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff1661279b565b9a508a8303925061161c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16146115b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e000000000000000000000000006044820152606401610761565b5050600a546dffffffffffffffffffffffffffff6e01000000000000000000000000000090910481168203907f000000000000000000000000000000000000000000000000000000000000000090611614908390888116908a1661279b565b9a508a840393505b611628818c8b8b6127fe565b6116358484898989612d6e565b8073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062858f604051610d21929190918252602082015260400190565b60408051600280825260608083018452926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061170857611708613ab5565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061177657611776613ab5565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b6000600b54600114611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b556000611834838501856134a0565b905061183f8161263b565b600080600061189d600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092506000806118ae612af6565b60025491935091506118c186868361306f565b0160006118de6dffffffffffffffffffffffffffff8816856139db565b905060006118fc6dffffffffffffffffffffffffffff8816856139db565b905060008061192d84848c6dffffffffffffffffffffffffffff168c6dffffffffffffffffffffffffffff1661332c565b9092509050600061195561194183896139db565b61194b858b6139db565b61117c919061399e565b90508561197c5761196960006103e861342f565b6119756103e8826139db565b9c506119c4565b600061199e61117c6dffffffffffffffffffffffffffff808e16908f1661399e565b905080876119ac82856139db565b6119b6919061399e565b6119c09190613963565b9d50505b8c611a2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e5445440000006044820152606401610761565b611a358c8e61342f565b611a4288888d8d8d612d6e565b611a4f61117c888a61399e565b60095560408051868152602081018690529081018e90528d9073ffffffffffffffffffffffffffffffffffffffff8e169033907ff9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e9060600160405180910390a350506001600b5550999c9b505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc14ad80200000000000000000000000000000000000000000000000000000000179052905160009173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691611b65919061385d565b600060405180830381855afa9150503d8060008114611ba0576040519150601f19603f3d011682016040523d82523d6000602084013e611ba5565b606091505b5091505080806020019051810190611bbd91906137fa565b60065550565b60008080611bd384860186613659565b91509150600080611c33600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b50915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611cbe57611cb783836dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff1661279b565b9450611da1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611d73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e000000000000000000000000006044820152606401610761565b611d9e83826dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff1661279b565b94505b5050505092915050565b60015460009074010000000000000000000000000000000000000000900460ff1615611dda57611dda8361263b565b3360009081526003602052604081208054849290611df99084906139db565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e119086815260200190565b6000600b54600114611ecb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b5560008080611ee0858701876134c4565b925092509250611eef8261263b565b6000806000611f4d600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250600080611f5e612af6565b6002543060009081526003602052604090205492945090925090611f8387878461306f565b90910190600082611f94868461399e565b611f9e9190613963565b9050600083611fad868561399e565b611fb79190613963565b9050611fc3308461311e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614156120835761204682838b6dffffffffffffffffffffffffffff1603838b6dffffffffffffffffffffffffffff160361279b565b016120737f0000000000000000000000000000000000000000000000000000000000000000828d8d6127fe565b9b5050918a90039160008b6121a3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614612138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e0000000000000000000000006044820152606401610761565b61216781828a6dffffffffffffffffffffffffffff1603848c6dffffffffffffffffffffffffffff160361279b565b820191506121977f0000000000000000000000000000000000000000000000000000000000000000838d8d6127fe565b509a50928a9003928a60005b6121b086868b8b8b612d6e565b6121bd61117c868861399e565b600955604080518381526020810183905290810184905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a350506001600b5550989b9a5050505050505050505050565b4284101561229d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610761565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080547f0000000000000000000000000000000000000000000000000000000000000000917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b918761231883613a1e565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016123b99291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612442573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906124bd57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e415455524500000000000000006044820152606401610761565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526004602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556001805492851692909116919091179055801561263657600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790555b505050565b600080546001546040805173ffffffffffffffffffffffffffffffffffffffff928316602482015285831660448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1472c27100000000000000000000000000000000000000000000000000000000179052905191909216916126d89161385d565b600060405180830381855afa9150503d8060008114612713576040519150601f19603f3d011682016040523d82523d6000602084013e612718565b606091505b50915050600081806020019051810190612732919061376b565b905080612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f545f57484954454c495354454400000000000000000000000000000000006044820152606401610761565b6000806127c87f00000000000000000000000000000000000000000000000000000000000000008661399e565b9050806127d76127108661399e565b6127e1919061394b565b6127eb848361399e565b6127f59190613963565b95945050505050565b8015612980576040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260006084830181905260a48084018890528451808503909101815260c490930184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f97da6d300000000000000000000000000000000000000000000000000000000017905292517f0000000000000000000000000000000000000000000000000000000000000000909116916128cd9161385d565b6000604051808303816000865af19150503d806000811461290a576040519150601f19603f3d011682016040523d82523d6000602084013e61290f565b606091505b505090508061297a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f57495448445241575f4641494c454400000000000000000000000000000000006044820152606401610761565b50612af0565b6040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260848083018790528351808403909101815260a490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff18d03cc0000000000000000000000000000000000000000000000000000000017905291516000927f00000000000000000000000000000000000000000000000000000000000000001691612a419161385d565b6000604051808303816000865af19150503d8060008114612a7e576040519150601f19603f3d011682016040523d82523d6000602084013e612a83565b606091505b5050905080612aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610761565b505b50505050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f7888aec7f000000000000000000000000000000000000000000000000000000000000000030604051602401612b8c92919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612bda919061385d565b600060405180830381855afa9150503d8060008114612c15576040519150601f19603f3d011682016040523d82523d6000602084013e612c1a565b606091505b5091505080806020019051810190612c3291906137fa565b604080517f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff90811660248301523060448084019190915283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff7888aec0000000000000000000000000000000000000000000000000000000017905291519295506000927f000000000000000000000000000000000000000000000000000000000000000090921691612d0e919061385d565b600060405180830381855afa9150503d8060008114612d49576040519150601f19603f3d011682016040523d82523d6000602084013e612d4e565b606091505b5091505080806020019051810190612d6691906137fa565b925050509091565b6dffffffffffffffffffffffffffff8511801590612d9a57506dffffffffffffffffffffffffffff8411155b612e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4f564552464c4f570000000000000000000000000000000000000000000000006044820152606401610761565b600a547c0100000000000000000000000000000000000000000000000000000000900463ffffffff16612e8457600a80546dffffffffffffffffffffffffffff8681166e010000000000000000000000000000027fffffffff000000000000000000000000000000000000000000000000000000009092169088161717905561302f565b4263ffffffff80821690831614801590612ead57506dffffffffffffffffffffffffffff841615155b8015612ec857506dffffffffffffffffffffffffffff831615155b15612f8d5781810360006dffffffffffffffffffffffffffff86167bffffffffffffffffffffffffffff0000000000000000000000000000607087901b1681612f1357612f13613a86565b600780549290910463ffffffff851681029092019055905060006dffffffffffffffffffffffffffff8616607088901b7bffffffffffffffffffffffffffff00000000000000000000000000001681612f6e57612f6e613a86565b0490508263ffffffff1681026008600082825401925050819055505050505b600a805463ffffffff9092167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8881166e010000000000000000000000000000027fffffffff00000000000000000000000000000000000000000000000000000000909516908a161793909317929092169190911790555b60408051868152602081018690527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a15050505050565b600954600090801561311657600061309d61117c6dffffffffffffffffffffffffffff80881690891661399e565b905081811115613114576127108160065484846130ba91906139db565b6130c4908861399e565b6130ce919061399e565b6130d89190613963565b6130e29190613963565b92508215613114576131147f00000000000000000000000000000000000000000000000000000000000000008461342f565b505b509392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080548392906131539084906139db565b909155505060028054829003905560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6000816131c357506000919050565b81600170010000000000000000000000000000000082106131e95760809190911c9060401b5b6801000000000000000082106132045760409190911c9060201b5b640100000000821061321b5760209190911c9060101b5b6201000082106132305760109190911c9060081b5b61010082106132445760089190911c9060041b5b601082106132575760049190911c9060021b5b600882106132635760011b5b600181858161327457613274613a86565b048201901c9050600181858161328c5761328c613a86565b048201901c905060018185816132a4576132a4613a86565b048201901c905060018185816132bc576132bc613a86565b048201901c905060018185816132d4576132d4613a86565b048201901c905060018185816132ec576132ec613a86565b048201901c9050600181858161330457613304613a86565b048201901c9050600081858161331c5761331c613a86565b04905080821061311657806127f5565b60008083158061333a575082155b1561334a57506000905080613426565b600084613357858961399e565b6133619190613963565b90508581116133bc57613377612710600261399e565b61338182886139db565b6133ab907f000000000000000000000000000000000000000000000000000000000000000061399e565b6133b59190613963565b9150613424565b6000846133c9878961399e565b6133d39190613963565b90506133e2612710600261399e565b6133ec828a6139db565b613416907f000000000000000000000000000000000000000000000000000000000000000061399e565b6134209190613963565b9350505b505b94509492505050565b8060026000828254613441919061394b565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016131a8565b6000602082840312156134b257600080fd5b81356134bd81613b13565b9392505050565b6000806000606084860312156134d957600080fd5b83356134e481613b13565b925060208401356134f481613b13565b9150604084013561350481613b38565b809150509250925092565b600080600080600060a0868803121561352757600080fd5b853561353281613b13565b9450602086013561354281613b13565b9350604086013561355281613b38565b925060608601359150608086013567ffffffffffffffff8082111561357657600080fd5b818801915088601f83011261358a57600080fd5b81358181111561359c5761359c613ae4565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156135e2576135e2613ae4565b816040528281528b60208487010111156135fb57600080fd5b8260208601602083013760006020848301015280955050505050509295509295909350565b6000806040838503121561363357600080fd5b823561363e81613b13565b9150602083013561364e81613b38565b809150509250929050565b6000806040838503121561366c57600080fd5b823561367781613b13565b946020939093013593505050565b6000806040838503121561369857600080fd5b82356136a381613b13565b9150602083013561364e81613b13565b6000806000606084860312156136c857600080fd5b83356136d381613b13565b925060208401356136e381613b13565b929592945050506040919091013590565b600080600080600080600060e0888a03121561370f57600080fd5b873561371a81613b13565b9650602088013561372a81613b13565b95506040880135945060608801359350608088013560ff8116811461374e57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60006020828403121561377d57600080fd5b81516134bd81613b38565b6000806020838503121561379b57600080fd5b823567ffffffffffffffff808211156137b357600080fd5b818501915085601f8301126137c757600080fd5b8135818111156137d657600080fd5b8660208285010111156137e857600080fd5b60209290920196919550909350505050565b60006020828403121561380c57600080fd5b5051919050565b6000815180845261382b8160208601602086016139f2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161386f8184602087016139f2565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b818110156138c757835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613895565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561392b578151805173ffffffffffffffffffffffffffffffffffffffff1685528601518685015292840192908501906001016138f0565b5091979650505050505050565b6020815260006134bd6020830184613813565b6000821982111561395e5761395e613a57565b500190565b600082613999577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139d6576139d6613a57565b500290565b6000828210156139ed576139ed613a57565b500390565b60005b83811015613a0d5781810151838201526020016139f5565b83811115612af05750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613a5057613a50613a57565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114613b3557600080fd5b50565b8015158114613b3557600080fdfea26469706673582212209f642184248699c158c18322f8dca2de6fe2cc065d00eb82ed365836d516447c64736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x277 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5A3D5493 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0xA69840A8 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xC14AD802 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x692 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x662 JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x66B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA9059CBB GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x617 JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x62A JUMPI DUP1 PUSH4 0xBC3377D9 EQ PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x5DD JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7464FC3D GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x577 JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x597 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x55B JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x564 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x627DD56A EQ PUSH2 0x513 JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x526 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x53B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x54CF2AEB GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x570CA735 EQ PUSH2 0x4E1 JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x493 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x3F8 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x418 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x43F JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x24A JUMPI DUP1 PUSH4 0x18160DDD GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3BC JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3C5 JUMPI DUP1 PUSH4 0x25A93264 EQ PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x326 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x28F PUSH2 0x28A CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x6F7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204672616E636869736564204C5020546F6B656E00000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x3938 JUMP JUMPDEST PUSH2 0x2F3 PUSH2 0xD40 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x339 PUSH2 0x334 CALLDATASIZE PUSH1 0x4 PUSH2 0x3659 JUMP JUMPDEST PUSH2 0xDA9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x339 PUSH2 0x3D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x36B3 JUMP JUMPDEST PUSH2 0xE22 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x370 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x40B PUSH2 0x406 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0xF9D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x38D3 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x48E CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x370 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x521 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x1310 JUMP JUMPDEST PUSH2 0x52E PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x3879 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x549 CALLDATASIZE PUSH1 0x4 PUSH2 0x34A0 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x572 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x17B3 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x585 CALLDATASIZE PUSH1 0x4 PUSH2 0x34A0 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x59F PUSH2 0x1AC8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x54726964656E743A4672616E6368697365644350000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x612 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x1BC3 JUMP JUMPDEST PUSH2 0x339 PUSH2 0x625 CALLDATASIZE PUSH1 0x4 PUSH2 0x3659 JUMP JUMPDEST PUSH2 0x1DAB JUMP JUMPDEST PUSH2 0x28F PUSH2 0x638 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x1E5D JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x339 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x59F PUSH2 0x6C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x36F4 JUMP JUMPDEST PUSH2 0x2233 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x6DA CALLDATASIZE PUSH1 0x4 PUSH2 0x3685 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x76A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x781 DUP8 DUP10 ADD DUP10 PUSH2 0x350F JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x7A9 JUMPI PUSH2 0x7A9 DUP5 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x807 PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xA6E JUMPI PUSH2 0x88C DUP6 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP9 POP PUSH2 0x8BA PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x27FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x8F6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3938 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x924 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 PUSH2 0x933 PUSH2 0x2AF6 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 SUB LT ISZERO PUSH2 0x9B3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0x9C0 DUP3 DUP3 DUP8 DUP8 DUP8 PUSH2 0x2D6E JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP11 DUP16 PUSH1 0x40 MLOAD PUSH2 0xA5F SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH2 0xD2C JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB23 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0xB4E DUP6 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP9 POP PUSH2 0xB7C PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x27FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0xBB8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3938 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBE6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 PUSH2 0xBF5 PUSH2 0x2AF6 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 SUB LT ISZERO PUSH2 0xC75 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0xC82 DUP3 DUP3 DUP8 DUP8 DUP8 PUSH2 0x2D6E JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP11 DUP16 PUSH1 0x40 MLOAD PUSH2 0xD21 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMPDEST POP POP PUSH1 0x1 PUSH1 0xB SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xD9E PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xE11 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xE51 JUMPI PUSH2 0xE51 DUP4 PUSH2 0x263B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xEEE JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xEE8 SWAP1 DUP5 SWAP1 PUSH2 0x39DB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xF23 SWAP1 DUP5 SWAP1 PUSH2 0x39DB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xF8B SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x100B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 DUP1 PUSH2 0x101F DUP5 DUP7 ADD DUP7 PUSH2 0x3620 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x102C DUP3 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x108A PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x109B PUSH2 0x2AF6 JUMP JUMPDEST PUSH1 0x2 SLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH2 0x10C0 DUP8 DUP8 DUP5 PUSH2 0x306F JUMP JUMPDEST SWAP1 SWAP2 ADD SWAP1 PUSH1 0x0 DUP3 PUSH2 0x10D1 DUP7 DUP5 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x10DB SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0x10EA DUP7 DUP6 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x10F4 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH2 0x1100 ADDRESS DUP5 PUSH2 0x311E JUMP JUMPDEST PUSH2 0x112C PUSH32 0x0 DUP4 DUP14 DUP14 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0x1158 PUSH32 0x0 DUP3 DUP14 DUP14 PUSH2 0x27FE JUMP JUMPDEST DUP2 DUP7 SUB SWAP6 POP DUP1 DUP6 SUB SWAP5 POP PUSH2 0x116F DUP7 DUP7 DUP12 DUP12 DUP12 PUSH2 0x2D6E JUMP JUMPDEST PUSH2 0x1181 PUSH2 0x117C DUP7 DUP9 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x31B4 JUMP JUMPDEST PUSH1 0x9 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x119A JUMPI SWAP1 POP POP SWAP12 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP13 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1221 JUMPI PUSH2 0x1221 PUSH2 0x3AB5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP13 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x128A JUMPI PUSH2 0x128A PUSH2 0x3AB5 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP2 DUP3 ADD DUP4 SWAP1 MSTORE DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xB SSTORE POP SWAP8 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x137E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x1393 DUP6 DUP8 ADD DUP8 PUSH2 0x34C4 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x13C7 JUMPI PUSH2 0x13C7 DUP3 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1425 PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x1436 PUSH2 0x2AF6 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1500 JUMPI PUSH32 0x0 SWAP1 POP DUP7 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 SUB SWAP2 POP PUSH2 0x14F4 DUP3 DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP11 POP DUP11 DUP4 SUB SWAP3 POP PUSH2 0x161C JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x15B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST POP POP PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH15 0x10000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 AND DUP3 SUB SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x1614 SWAP1 DUP4 SWAP1 DUP9 DUP2 AND SWAP1 DUP11 AND PUSH2 0x279B JUMP JUMPDEST SWAP11 POP DUP11 DUP5 SUB SWAP4 POP JUMPDEST PUSH2 0x1628 DUP2 DUP13 DUP12 DUP12 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0x1635 DUP5 DUP5 DUP10 DUP10 DUP10 PUSH2 0x2D6E JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP6 DUP16 PUSH1 0x40 MLOAD PUSH2 0xD21 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1708 JUMPI PUSH2 0x1708 PUSH2 0x3AB5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1776 JUMPI PUSH2 0x1776 PUSH2 0x3AB5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x1821 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 PUSH2 0x1834 DUP4 DUP6 ADD DUP6 PUSH2 0x34A0 JUMP JUMPDEST SWAP1 POP PUSH2 0x183F DUP2 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x189D PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x18AE PUSH2 0x2AF6 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x18C1 DUP7 DUP7 DUP4 PUSH2 0x306F JUMP JUMPDEST ADD PUSH1 0x0 PUSH2 0x18DE PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x39DB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x18FC PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x39DB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x192D DUP5 DUP5 DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x332C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x1955 PUSH2 0x1941 DUP4 DUP10 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x194B DUP6 DUP12 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x117C SWAP2 SWAP1 PUSH2 0x399E JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x197C JUMPI PUSH2 0x1969 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x342F JUMP JUMPDEST PUSH2 0x1975 PUSH2 0x3E8 DUP3 PUSH2 0x39DB JUMP JUMPDEST SWAP13 POP PUSH2 0x19C4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x199E PUSH2 0x117C PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP15 AND SWAP1 DUP16 AND PUSH2 0x399E JUMP JUMPDEST SWAP1 POP DUP1 DUP8 PUSH2 0x19AC DUP3 DUP6 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x19B6 SWAP2 SWAP1 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x19C0 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP14 POP POP JUMPDEST DUP13 PUSH2 0x1A2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F4C49515549444954595F4D494E544544000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0x1A35 DUP13 DUP15 PUSH2 0x342F JUMP JUMPDEST PUSH2 0x1A42 DUP9 DUP9 DUP14 DUP14 DUP14 PUSH2 0x2D6E JUMP JUMPDEST PUSH2 0x1A4F PUSH2 0x117C DUP9 DUP11 PUSH2 0x399E JUMP JUMPDEST PUSH1 0x9 SSTORE PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 DUP2 ADD DUP15 SWAP1 MSTORE DUP14 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP1 CALLER SWAP1 PUSH32 0xF9C32FBC56FF04F32A233EBC26E388564223745E28ABD8D0781DD906537F563E SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xB SSTORE POP SWAP10 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC14AD80200000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH2 0x1B65 SWAP2 SWAP1 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1BA0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1BA5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1BBD SWAP2 SWAP1 PUSH2 0x37FA JUMP JUMPDEST PUSH1 0x6 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x1BD3 DUP5 DUP7 ADD DUP7 PUSH2 0x3659 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1C33 PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1CBE JUMPI PUSH2 0x1CB7 DUP4 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP5 POP PUSH2 0x1DA1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1D73 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0x1D9E DUP4 DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP5 POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1DDA JUMPI PUSH2 0x1DDA DUP4 PUSH2 0x263B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x1DF9 SWAP1 DUP5 SWAP1 PUSH2 0x39DB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xE11 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x1ECB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x1EE0 DUP6 DUP8 ADD DUP8 PUSH2 0x34C4 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x1EEF DUP3 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1F4D PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x1F5E PUSH2 0x2AF6 JUMP JUMPDEST PUSH1 0x2 SLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH2 0x1F83 DUP8 DUP8 DUP5 PUSH2 0x306F JUMP JUMPDEST SWAP1 SWAP2 ADD SWAP1 PUSH1 0x0 DUP3 PUSH2 0x1F94 DUP7 DUP5 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x1F9E SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0x1FAD DUP7 DUP6 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x1FB7 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH2 0x1FC3 ADDRESS DUP5 PUSH2 0x311E JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2083 JUMPI PUSH2 0x2046 DUP3 DUP4 DUP12 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 DUP12 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x279B JUMP JUMPDEST ADD PUSH2 0x2073 PUSH32 0x0 DUP3 DUP14 DUP14 PUSH2 0x27FE JUMP JUMPDEST SWAP12 POP POP SWAP2 DUP11 SWAP1 SUB SWAP2 PUSH1 0x0 DUP12 PUSH2 0x21A3 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2138 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0x2167 DUP2 DUP3 DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP5 DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x279B JUMP JUMPDEST DUP3 ADD SWAP2 POP PUSH2 0x2197 PUSH32 0x0 DUP4 DUP14 DUP14 PUSH2 0x27FE JUMP JUMPDEST POP SWAP11 POP SWAP3 DUP11 SWAP1 SUB SWAP3 DUP11 PUSH1 0x0 JUMPDEST PUSH2 0x21B0 DUP7 DUP7 DUP12 DUP12 DUP12 PUSH2 0x2D6E JUMP JUMPDEST PUSH2 0x21BD PUSH2 0x117C DUP7 DUP9 PUSH2 0x399E JUMP JUMPDEST PUSH1 0x9 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xB SSTORE POP SWAP9 SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x229D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x0 SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP8 PUSH2 0x2318 DUP4 PUSH2 0x3A1E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x23B9 SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2442 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x24BD JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2523 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x2636 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE DUP6 DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1472C27100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH2 0x26D8 SWAP2 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2713 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2718 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2732 SWAP2 SWAP1 PUSH2 0x376B JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2636 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F57484954454C49535445440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x27C8 PUSH32 0x0 DUP7 PUSH2 0x399E JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x27D7 PUSH2 0x2710 DUP7 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x27E1 SWAP2 SWAP1 PUSH2 0x394B JUMP JUMPDEST PUSH2 0x27EB DUP5 DUP4 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x27F5 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2980 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xA4 DUP1 DUP5 ADD DUP9 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC4 SWAP1 SWAP4 ADD DUP5 MSTORE PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP3 MLOAD PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH2 0x28CD SWAP2 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x290A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x290F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x297A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57495448445241575F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST POP PUSH2 0x2AF0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP1 DUP4 ADD DUP8 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xA4 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 PUSH32 0x0 AND SWAP2 PUSH2 0x2A41 SWAP2 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2A7E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2A83 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2AEE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF7888AEC PUSH32 0x0 ADDRESS PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2B8C SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x2BDA SWAP2 SWAP1 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2C15 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2C1A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2C32 SWAP2 SWAP1 PUSH2 0x37FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP6 POP PUSH1 0x0 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH2 0x2D0E SWAP2 SWAP1 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2D49 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2D4E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2D66 SWAP2 SWAP1 PUSH2 0x37FA JUMP JUMPDEST SWAP3 POP POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 GT DUP1 ISZERO SWAP1 PUSH2 0x2D9A JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT ISZERO JUMPDEST PUSH2 0x2E00 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564552464C4F57000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH2 0x2E84 JUMPI PUSH1 0xA DUP1 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH15 0x10000000000000000000000000000 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP1 DUP9 AND OR OR SWAP1 SSTORE PUSH2 0x302F JUMP JUMPDEST TIMESTAMP PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP1 DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2EAD JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x2EC8 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2F8D JUMPI DUP2 DUP2 SUB PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 PUSH1 0x70 DUP8 SWAP1 SHL AND DUP2 PUSH2 0x2F13 JUMPI PUSH2 0x2F13 PUSH2 0x3A86 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF DUP6 AND DUP2 MUL SWAP1 SWAP3 ADD SWAP1 SSTORE SWAP1 POP PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x70 DUP9 SWAP1 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND DUP2 PUSH2 0x2F6E JUMPI PUSH2 0x2F6E PUSH2 0x3A86 JUMP JUMPDEST DIV SWAP1 POP DUP3 PUSH4 0xFFFFFFFF AND DUP2 MUL PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH15 0x10000000000000000000000000000 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP1 DUP11 AND OR SWAP4 SWAP1 SWAP4 OR SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH32 0xCF2AA50876CDFBB541206F89AF0EE78D44A2ABF8D328E37FA4917F982149848A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x0 SWAP1 DUP1 ISZERO PUSH2 0x3116 JUMPI PUSH1 0x0 PUSH2 0x309D PUSH2 0x117C PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND SWAP1 DUP10 AND PUSH2 0x399E JUMP JUMPDEST SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x3114 JUMPI PUSH2 0x2710 DUP2 PUSH1 0x6 SLOAD DUP5 DUP5 PUSH2 0x30BA SWAP2 SWAP1 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x30C4 SWAP1 DUP9 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x30CE SWAP2 SWAP1 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x30D8 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST PUSH2 0x30E2 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP3 POP DUP3 ISZERO PUSH2 0x3114 JUMPI PUSH2 0x3114 PUSH32 0x0 DUP5 PUSH2 0x342F JUMP JUMPDEST POP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x3153 SWAP1 DUP5 SWAP1 PUSH2 0x39DB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x31C3 JUMPI POP PUSH1 0x0 SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x31E9 JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x3204 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x321B JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x3230 JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x3244 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x3257 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0x3263 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3274 JUMPI PUSH2 0x3274 PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x328C JUMPI PUSH2 0x328C PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x32A4 JUMPI PUSH2 0x32A4 PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x32BC JUMPI PUSH2 0x32BC PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x32D4 JUMPI PUSH2 0x32D4 PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x32EC JUMPI PUSH2 0x32EC PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3304 JUMPI PUSH2 0x3304 PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x331C JUMPI PUSH2 0x331C PUSH2 0x3A86 JUMP JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x3116 JUMPI DUP1 PUSH2 0x27F5 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 ISZERO DUP1 PUSH2 0x333A JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x334A JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x3426 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x3357 DUP6 DUP10 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x3361 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 GT PUSH2 0x33BC JUMPI PUSH2 0x3377 PUSH2 0x2710 PUSH1 0x2 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x3381 DUP3 DUP9 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x33AB SWAP1 PUSH32 0x0 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x33B5 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP2 POP PUSH2 0x3424 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x33C9 DUP8 DUP10 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x33D3 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH2 0x33E2 PUSH2 0x2710 PUSH1 0x2 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x33EC DUP3 DUP11 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x3416 SWAP1 PUSH32 0x0 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x3420 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP4 POP POP JUMPDEST POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3441 SWAP2 SWAP1 PUSH2 0x394B JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x31A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x34B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x34BD DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x34D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x34E4 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x34F4 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x3504 DUP2 PUSH2 0x3B38 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3527 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3532 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3542 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x3552 DUP2 PUSH2 0x3B38 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x358A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x359C JUMPI PUSH2 0x359C PUSH2 0x3AE4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x35E2 JUMPI PUSH2 0x35E2 PUSH2 0x3AE4 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP12 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x35FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x363E DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x364E DUP2 PUSH2 0x3B38 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x366C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3677 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3698 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x36A3 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x364E DUP2 PUSH2 0x3B13 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x36C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x36D3 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x36E3 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x370F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x371A DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x372A DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x374E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x377D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x34BD DUP2 PUSH2 0x3B38 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x379B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x37B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x37C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x37D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x37E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x380C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x382B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x39F2 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x386F DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x39F2 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x38C7 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3895 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x392B JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x38F0 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x34BD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3813 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x395E JUMPI PUSH2 0x395E PUSH2 0x3A57 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3999 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x39D6 JUMPI PUSH2 0x39D6 PUSH2 0x3A57 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x39ED JUMPI PUSH2 0x39ED PUSH2 0x3A57 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3A0D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x39F5 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2AF0 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x3A50 JUMPI PUSH2 0x3A50 PUSH2 0x3A57 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3B35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3B35 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP16 PUSH5 0x2184248699 0xC1 PC 0xC1 DUP4 0x22 0xF8 0xDC LOG2 0xDE PUSH16 0xE2CC065D00EB82ED365836D516447C64 PUSH20 0x6F6C634300080700330000000000000000000000 ",
              "sourceMap": "612:17413:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10575:1673;;;;;;:::i;:::-;;:::i;:::-;;;10861:25:64;;;10849:2;10834:18;10575:1673:52;;;;;;;;557:57:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17801:222:52:-;;;:::i;:::-;;;;16388:30:64;16445:15;;;16427:34;;16497:15;;;;16492:2;16477:18;;16470:43;16561:10;16549:23;16529:18;;;16522:51;16366:2;16351:18;17801:222:52;16178:401:64;2457:203:57;;;;;;:::i;:::-;;:::i;:::-;;;10688:14:64;;10681:22;10663:41;;10651:2;10636:18;2457:203:57;10523:187:64;1351:33:52;;;;;;;;7543:42:64;7531:55;;;7513:74;;7501:2;7486:18;1351:33:52;7367:226:64;1471:31:52;;;;;796:26:57;;;;;;3665:612;;;;;;:::i;:::-;;:::i;705:31::-;;;;;;;;;5497:1504:52;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1120:145:57:-;;1170:95;1120:145;;663:35;;696:2;663:35;;;;;17515:4:64;17503:17;;;17485:36;;17473:2;17458:18;663:35:57;17343:184:64;1336:41:57;;;;;17694:101:52;;;;;;:::i;:::-;;:::i;1390:30::-;;;;;1257:32;;;;;742:23:57;;;;;;;;;1573:35:52;;;;;;1614;;;;;;9216:1230;;;;;;:::i;:::-;;:::i;16978:174::-;;;:::i;:::-;;;;;;;:::i;870:44:57:-;;;;;;:::i;:::-;;;;;;;;;;;;;;1655:20:52;;;;;;3942:1429;;;;;;:::i;:::-;;:::i;1440:41:57:-;;;;;;:::i;:::-;;;;;;;;;;;;;;12306:206:52;;;:::i;:::-;;620:37:57;;;;;;;;;;;;;;;;;;;;;1785:72:52;;;;;17158:530;;;;;;:::i;:::-;;:::i;2900:441:57:-;;;;;;:::i;:::-;;:::i;7176:1912:52:-;;;;;;:::i;:::-;;:::i;771:18:57:-;;;;;;;;;;;;1546:21:52;;;;;;1426:39;;;;;1508:31;;;;;4757:794:57;;;;;;:::i;:::-;;:::i;975:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;10575:1673:52;10645:17;1929:8;;1941:1;1929:13;1921:32;;;;;;;15702:2:64;1921:32:52;;;15684:21:64;15741:1;15721:18;;;15714:29;15779:8;15759:18;;;15752:36;15805:18;;1921:32:52;;;;;;;;;1974:1;1963:8;:12;10675:15:::1;::::0;;;;10771:92:::1;::::0;;::::1;10795:4:::0;10771:92:::1;:::i;:::-;10674:189;;;;;;;;;;10877:6;;;;;;;;;;;10873:38;;;10885:26;10901:9;10885:15;:26::i;:::-;10922:17;10941::::0;10960:26:::1;10990:14;12727:8:::0;;;;;;;12757;;;;;;;12797:18;;;;;;;12518:304;10990:14:::1;10921:83;;;;;;11053:6;11042:17;;:7;:17;;;11038:1194;;;11091:45;11105:8;11115:9;11091:45;;11126:9;11091:45;;:13;:45::i;:::-;11079:57;;11154:52;11164:6;11172:9;11183;11194:11;11154:9;:52::i;:::-;11224:55;::::0;;;;11239:10:::1;::::0;11224:46:::1;::::0;:55:::1;::::0;11271:7;;11224:55:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11298:16;11316::::0;11336:10:::1;:8;:10::i;:::-;11297:49;;;;11396:8;11383:9;11372:20;;:8;:20;:32;;11364:67;;;::::0;::::1;::::0;;12920:2:64;11364:67:52::1;::::0;::::1;12902:21:64::0;12959:2;12939:18;;;12932:30;12998:24;12978:18;;;12971:52;13040:18;;11364:67:52::1;12718:346:64::0;11364:67:52::1;11449:70;11457:8;11467;11477:9;11488;11499:19;11449:7;:70::i;:::-;11567:6;11542:53;;11558:7;11542:53;;11547:9;11542:53;;;11575:8;11585:9;11542:53;;;;;;16940:25:64::0;;;16996:2;16981:18;;16974:34;16928:2;16913:18;;16766:248;11542:53:52::1;;;;;;;;11061:549;;11038:1194;;;11653:6;11642:17;;:7;:17;;;11634:49;;;::::0;::::1;::::0;;13271:2:64;11634:49:52::1;::::0;::::1;13253:21:64::0;13310:2;13290:18;;;13283:30;13349:21;13329:18;;;13322:49;13388:18;;11634:49:52::1;13069:343:64::0;11634:49:52::1;11713:45;11727:8;11737:9;11713:45;;11748:9;11713:45;;:13;:45::i;:::-;11701:57;;11776:52;11786:6;11794:9;11805;11816:11;11776:9;:52::i;:::-;11846:55;::::0;;;;11861:10:::1;::::0;11846:46:::1;::::0;:55:::1;::::0;11893:7;;11846:55:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11920:16;11938::::0;11958:10:::1;:8;:10::i;:::-;11919:49;;;;12018:8;12005:9;11994:20;;:8;:20;:32;;11986:67;;;::::0;::::1;::::0;;12920:2:64;11986:67:52::1;::::0;::::1;12902:21:64::0;12959:2;12939:18;;;12932:30;12998:24;12978:18;;;12971:52;13040:18;;11986:67:52::1;12718:346:64::0;11986:67:52::1;12071:70;12079:8;12089;12099:9;12110;12121:19;12071:7;:70::i;:::-;12189:6;12164:53;;12180:7;12164:53;;12169:9;12164:53;;;12197:8;12207:9;12164:53;;;;;;16940:25:64::0;;;16996:2;16981:18;;16974:34;16928:2;16913:18;;16766:248;12164:53:52::1;;;;;;;;11616:616;;11038:1194;-1:-1:-1::0;;2007:1:52;1996:8;:12;-1:-1:-1;10575:1673:52;;;-1:-1:-1;;;;;;;10575:1673:52:o;17801:222::-;17882:17;17913;17944:26;18002:14;12727:8;;;;;;;12757;;;;;;;12797:18;;;;;;;12518:304;18002:14;17995:21;;;;;;17801:222;;;:::o;2457:203:57:-;2551:10;2525:4;2541:21;;;:9;:21;;;;;;;;;:30;;;;;;;;;;:39;;;2595:37;2525:4;;2541:30;;2595:37;;;;2574:6;10861:25:64;;10849:2;10834:18;;10715:177;2595:37:57;;;;;;;;-1:-1:-1;2649:4:57;2457:203;;;;:::o;3665:612::-;3806:6;;3786:4;;3806:6;;;;;3802:38;;;3814:26;3830:9;3814:15;:26::i;:::-;3854:17;;;;;;;:9;:17;;;;;;;;3872:10;3854:29;;;;;;;;3887:17;3854:50;3850:120;;3920:17;;;;;;;:9;:17;;;;;;;;3938:10;3920:29;;;;;;;:39;;3953:6;;3920:17;:39;;3953:6;;3920:39;:::i;:::-;;;;-1:-1:-1;;3850:120:57;3979:17;;;;;;;:9;:17;;;;;:27;;4000:6;;3979:17;:27;;4000:6;;3979:27;:::i;:::-;;;;-1:-1:-1;;4159:20:57;;;;;;;;:9;:20;;;;;;;:30;;;;;;4214:35;4159:20;;4214:35;;;;;;;4183:6;10861:25:64;;10849:2;10834:18;;10715:177;4214:35:57;;;;;;;;-1:-1:-1;4266:4:57;3665:612;;;;;:::o;5497:1504:52:-;5562:43;1929:8;;1941:1;1929:13;1921:32;;;;;;;15702:2:64;1921:32:52;;;15684:21:64;15741:1;15721:18;;;15714:29;15779:8;15759:18;;;15752:36;15805:18;;1921:32:52;15500:329:64;1921:32:52;1974:1;1963:8;:12;5618:17:::1;::::0;5657:33:::1;::::0;;::::1;5668:4:::0;5657:33:::1;:::i;:::-;5617:73;;;;5700:26;5716:9;5700:15;:26::i;:::-;5737:17;5756::::0;5775:26:::1;5805:14;12727:8:::0;;;;;;;12757;;;;;;;12797:18;;;;;;;12518:304;5805:14:::1;5736:83;;;;;;5830:16;5848::::0;5868:10:::1;:8;:10::i;:::-;5911:11;::::0;5970:4:::1;5888:20;5952:24:::0;;;:9:::1;:24;::::0;;;;;5829:49;;-1:-1:-1;5829:49:52;;-1:-1:-1;5911:11:52;6027:44:::1;6036:9:::0;6047;5911:11;6027:8:::1;:44::i;:::-;6011:60:::0;;::::1;::::0;6092:15:::1;6011:60:::0;6111:20:::1;6123:8:::0;6111:9;:20:::1;:::i;:::-;6110:37;;;;:::i;:::-;6092:55:::0;-1:-1:-1;6157:15:52::1;6200:12:::0;6176:20:::1;6188:8:::0;6176:9;:20:::1;:::i;:::-;6175:37;;;;:::i;:::-;6157:55;;6223:31;6237:4;6244:9;6223:5;:31::i;:::-;6264:50;6274:6;6282:7;6291:9;6302:11;6264:9;:50::i;:::-;6324;6334:6;6342:7;6351:9;6362:11;6324:9;:50::i;:::-;6516:7;6504:19;;;;6549:7;6537:19;;;;6576:70;6584:8;6594;6604:9;6615;6626:19;6576:7;:70::i;:::-;6664:37;6681:19;6692:8:::0;6681;:19:::1;:::i;:::-;6664:16;:37::i;:::-;6656:5;:45:::0;6731:20:::1;::::0;;6749:1:::1;6731:20:::0;;;;;::::1;::::0;;;;::::1;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;6731:20:52::1;;;;;;;;;;;;;;;6712:39;;6783:54;;;;;;;;6811:6;6783:54;;;;;;6828:7;6783:54;;::::0;6761:16:::1;6778:1;6761:19;;;;;;;;:::i;:::-;;;;;;:76;;;;6869:54;;;;;;;;6897:6;6869:54;;;;;;6914:7;6869:54;;::::0;6847:16:::1;6864:1;6847:19;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;:76;;;;6938:56:::1;::::0;;17221:25:64;;;17262:18;;;17255:34;;;17305:18;;17298:34;;;6938:56:52::1;::::0;::::1;::::0;6943:10:::1;::::0;6938:56:::1;::::0;17209:2:64;17194:18;6938:56:52::1;;;;;;;-1:-1:-1::0;;2007:1:52;1996:8;:12;-1:-1:-1;5497:1504:52;;;-1:-1:-1;;;;;;;;;;5497:1504:52:o;17694:101::-;17761:7;17780:8;;;9216:1230;9281:17;1929:8;;1941:1;1929:13;1921:32;;;;;;;15702:2:64;1921:32:52;;;15684:21:64;15741:1;15721:18;;;15714:29;15779:8;15759:18;;;15752:36;15805:18;;1921:32:52;15500:329:64;1921:32:52;1974:1;1963:8;:12;9311:15:::1;::::0;;9367:42:::1;::::0;;::::1;9378:4:::0;9367:42:::1;:::i;:::-;9423:6;::::0;9310:99;;-1:-1:-1;9310:99:52;;-1:-1:-1;9310:99:52;-1:-1:-1;9423:6:52;;::::1;;;9419:38;;;9431:26;9447:9;9431:15;:26::i;:::-;9468:17;9487::::0;9506:26:::1;9536:14;12727:8:::0;;;;;;;12757;;;;;;;12797:18;;;;;;;12518:304;9536:14:::1;9467:83;;;;;;9561:16;9579::::0;9599:10:::1;:8;:10::i;:::-;9560:49;;;;9619:16;9645::::0;9710:6:::1;9699:17;;:7;:17;;;9695:521;;;9747:6;9736:17;;9793:9;9782:20;;:8;:20;9771:31;;9832:45;9846:8;9856:9;9832:45;;9867:9;9832:45;;:13;:45::i;:::-;9820:57;;9907:9;9895:21;;;;9695:521;;;9974:6;9963:17;;:7;:17;;;9955:49;;;::::0;::::1;::::0;;13271:2:64;9955:49:52::1;::::0;::::1;13253:21:64::0;13310:2;13290:18;;;13283:30;13349:21;13329:18;;;13322:49;13388:18;;9955:49:52::1;13069:343:64::0;9955:49:52::1;-1:-1:-1::0;;10079:8:52::1;::::0;::::1;::::0;;;::::1;::::0;::::1;10068:19:::0;::::1;::::0;10033:6:::1;::::0;10117:45:::1;::::0;10068:19;;10117:45;;::::1;::::0;;::::1;:13;:45::i;:::-;10105:57;;10192:9;10180:21;;;;9695:521;10235:54;10245:8;10255:9;10266;10277:11;10235:9;:54::i;:::-;10299:70;10307:8;10317;10327:9;10338;10349:19;10299:7;:70::i;:::-;10409:8;10384:55;;10400:7;10384:55;;10389:9;10384:55;;;10419:8;10429:9;10384:55;;;;;;16940:25:64::0;;;16996:2;16981:18;;16974:34;16928:2;16913:18;;16766:248;16978:174:52;17073:16;;;17087:1;17073:16;;;17029:23;17073:16;;;;;17029:23;17073:16;;;;;;;;;;-1:-1:-1;17073:16:52;17064:25;;17111:6;17099;17106:1;17099:9;;;;;;;;:::i;:::-;;;;;;:18;;;;;;;;;;;17139:6;17127;17134:1;17127:9;;;;;;;;:::i;:::-;;;;;;:18;;;;;;;;;;;16978:174;:::o;3942:1429::-;4007:17;1929:8;;1941:1;1929:13;1921:32;;;;;;;15702:2:64;1921:32:52;;;15684:21:64;15741:1;15721:18;;;15714:29;15779:8;15759:18;;;15752:36;15805:18;;1921:32:52;15500:329:64;1921:32:52;1974:1;1963:8;:12;4036:17:::1;4056:27;::::0;;::::1;4067:4:::0;4056:27:::1;:::i;:::-;4036:47;;4093:26;4109:9;4093:15;:26::i;:::-;4130:17;4149::::0;4168:26:::1;4198:14;12727:8:::0;;;;;;;12757;;;;;;;12797:18;;;;;;;12518:304;4198:14:::1;4129:83;;;;;;4223:16;4241::::0;4261:10:::1;:8;:10::i;:::-;4304:11;::::0;4222:49;;-1:-1:-1;4222:49:52;-1:-1:-1;4366:44:52::1;4375:9:::0;4386;4304:11;4366:8:::1;:44::i;:::-;4350:60;4431:15;4449:20;;::::0;::::1;:8:::0;:20:::1;:::i;:::-;4431:38:::0;-1:-1:-1;4479:15:52::1;4497:20;;::::0;::::1;:8:::0;:20:::1;:::i;:::-;4479:38;;4528:12;4542::::0;4558:58:::1;4577:7;4586;4595:9;4558:58;;4606:9;4558:58;;:18;:58::i;:::-;4527:89:::0;;-1:-1:-1;4527:89:52;-1:-1:-1;4626:16:52::1;4645:55;4683:15;4527:89:::0;4683:8;:15:::1;:::i;:::-;4663;4674:4:::0;4663:8;:15:::1;:::i;:::-;4662:37;;;;:::i;4645:55::-;4626:74:::0;-1:-1:-1;4715:17:52;4711:290:::1;;4748:36;4762:1;1029:4;4748:5;:36::i;:::-;4810:28;1029:4;4810:8:::0;:28:::1;:::i;:::-;4798:40;;4711:290;;;4869:9;4881:48;4898:30;;::::0;;::::1;::::0;:18;::::1;:30;:::i;4881:48::-;4869:60:::0;-1:-1:-1;4869:60:52;4973:12;4957::::1;4869:60:::0;4957:8;:12:::1;:::i;:::-;4956:29;;;;:::i;:::-;4955:35;;;;:::i;:::-;4943:47;;4855:146;4711:290;5018:14:::0;5010:56:::1;;;::::0;::::1;::::0;;13968:2:64;5010:56:52::1;::::0;::::1;13950:21:64::0;14007:2;13987:18;;;13980:30;14046:31;14026:18;;;14019:59;14095:18;;5010:56:52::1;13766:353:64::0;5010:56:52::1;5076:27;5082:9;5093;5076:5;:27::i;:::-;5113:70;5121:8;5131;5141:9;5152;5163:19;5113:7;:70::i;:::-;5201:37;5218:19;5229:8:::0;5218;:19:::1;:::i;5201:37::-;5193:5;:45:::0;5300:64:::1;::::0;;17221:25:64;;;17277:2;17262:18;;17255:34;;;17305:18;;;17298:34;;;5276:9:52;;5300:64:::1;::::0;::::1;::::0;5305:10:::1;::::0;5300:64:::1;::::0;17209:2:64;17194:18;5300:64:52::1;;;;;;;-1:-1:-1::0;;2007:1:52;1996:8;:12;-1:-1:-1;3942:1429:52;;;-1:-1:-1;;;;;;;;;;;;3942:1429:52:o;12306:206::-;12400:55;;;;;;;;;;;;;;;;;;12423:31;12400:55;;;12374:82;;12350:20;;12374:25;:14;:25;;:82;;12400:55;12374:82;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12347:109;;;12486:7;12475:30;;;;;;;;;;;;:::i;:::-;12466:6;:39;-1:-1:-1;12306:206:52:o;17158:530::-;17231:22;;;17303:36;;;;17314:4;17303:36;:::i;:::-;17265:74;;;;17350:17;17369;17392:14;12727:8;;;;;;;12757;;;;;;;12797:18;;;;;;;12518:304;17392:14;17349:57;;;;;17431:6;17420:17;;:7;:17;;;17416:266;;;17470:45;17484:8;17494:9;17470:45;;17505:9;17470:45;;:13;:45::i;:::-;17453:62;;17416:266;;;17565:6;17554:17;;:7;:17;;;17546:49;;;;;;;13271:2:64;17546:49:52;;;13253:21:64;13310:2;13290:18;;;13283:30;13349:21;13329:18;;;13322:49;13388:18;;17546:49:52;13069:343:64;17546:49:52;17626:45;17640:8;17650:9;17626:45;;17661:9;17626:45;;:13;:45::i;:::-;17609:62;;17416:266;17255:433;;;;17158:530;;;;:::o;2900:441:57:-;2991:6;;2971:4;;2991:6;;;;;2987:38;;;2999:26;3015:9;2999:15;:26::i;:::-;3045:10;3035:21;;;;:9;:21;;;;;:31;;3060:6;;3035:21;:31;;3060:6;;3035:31;:::i;:::-;;;;-1:-1:-1;;3219:20:57;;;;;;;:9;:20;;;;;;;:30;;;;;;3274:39;3283:10;;3274:39;;;;3243:6;10861:25:64;;10849:2;10834:18;;10715:177;7176:1912:52;7247:17;1929:8;;1941:1;1929:13;1921:32;;;;;;;15702:2:64;1921:32:52;;;15684:21:64;15741:1;15721:18;;;15714:29;15779:8;15759:18;;;15752:36;15805:18;;1921:32:52;15500:329:64;1921:32:52;1974:1;1963:8;:12;7277:16:::1;::::0;;7334:42:::1;::::0;;::::1;7345:4:::0;7334:42:::1;:::i;:::-;7276:100;;;;;;7386:26;7402:9;7386:15;:26::i;:::-;7423:17;7442::::0;7461:26:::1;7491:14;12727:8:::0;;;;;;;12757;;;;;;;12797:18;;;;;;;12518:304;7491:14:::1;7422:83;;;;;;7516:16;7534::::0;7554:10:::1;:8;:10::i;:::-;7597:11;::::0;7656:4:::1;7574:20;7638:24:::0;;;:9:::1;:24;::::0;;;;;7515:49;;-1:-1:-1;7515:49:52;;-1:-1:-1;7597:11:52;7713:44:::1;7722:9:::0;7733;7597:11;7713:8:::1;:44::i;:::-;7697:60:::0;;::::1;::::0;7778:15:::1;7697:60:::0;7797:20:::1;7809:8:::0;7797:9;:20:::1;:::i;:::-;7796:37;;;;:::i;:::-;7778:55:::0;-1:-1:-1;7843:15:52::1;7886:12:::0;7862:20:::1;7874:8:::0;7862:9;:20:::1;:::i;:::-;7861:37;;;;:::i;:::-;7843:55;;7909:31;7923:4;7930:9;7909:5;:31::i;:::-;7990:6;7978:18;;:8;:18;;;7974:892;;;8210:64;8224:7;8245;8233:9;:19;;;8266:7;8254:9;:19;;;8210:13;:64::i;:::-;8199:75;8292:50;8302:6;8199:75:::0;8319:9;8330:11;8292:9:::1;:50::i;:::-;8372:7:::0;-1:-1:-1;;8360:19:52;;;::::1;::::0;8444:1:::1;8372:7:::0;7974:892:::1;;;8556:6;8544:18;;:8;:18;;;8536:51;;;::::0;::::1;::::0;;13619:2:64;8536:51:52::1;::::0;::::1;13601:21:64::0;13658:2;13638:18;;;13631:30;13697:22;13677:18;;;13670:50;13737:18;;8536:51:52::1;13417:344:64::0;8536:51:52::1;8616:64;8630:7;8651;8639:9;:19;;;8672:7;8660:9;:19;;;8616:13;:64::i;:::-;8605:75;;;;8698:50;8708:6;8716:7;8725:9;8736:11;8698:9;:50::i;:::-;-1:-1:-1::0;8778:7:52;-1:-1:-1;8766:19:52;;;::::1;::::0;8778:7;8850:1:::1;7974:892;8885:70;8893:8;8903;8913:9;8924;8935:19;8885:7;:70::i;:::-;8973:37;8990:19;9001:8:::0;8990;:19:::1;:::i;8973:37::-;8965:5;:45:::0;9025:56:::1;::::0;;17221:25:64;;;17277:2;17262:18;;17255:34;;;17305:18;;;17298:34;;;9025:56:52::1;::::0;::::1;::::0;9030:10:::1;::::0;9025:56:::1;::::0;17209:2:64;17194:18;9025:56:52::1;;;;;;;-1:-1:-1::0;;2007:1:52;1996:8;:12;-1:-1:-1;7176:1912:52;;;-1:-1:-1;;;;;;;;;;;7176:1912:52:o;4757:794:57:-;4971:15;4959:8;:27;;4951:63;;;;;;;15350:2:64;4951:63:57;;;15332:21:64;15389:2;15369:18;;;15362:30;15428:25;15408:18;;;15401:53;15471:18;;4951:63:57;15148:347:64;4951:63:57;5222:13;;;5024:14;5222:13;;;:6;:13;;;;;:15;;5126:16;;1170:95;;5198:5;;5205:7;;5214:6;;5024:14;5222:15;;;:::i;:::-;;;;-1:-1:-1;5170:78:57;;;;;;11184:25:64;;;;11228:42;11306:15;;;11286:18;;;11279:43;11358:15;;;;11338:18;;;11331:43;11390:18;;;11383:34;11433:19;;;11426:35;11477:19;;;11470:35;;;11156:19;;5170:78:57;;;;;;;;;;;;5160:89;;;;;;5064:199;;;;;;;;7188:66:64;7176:79;;7280:1;7271:11;;7264:27;;;;7316:2;7307:12;;7300:28;7353:2;7344:12;;6918:444;5064:199:57;;;;;;;;;;;;;;5041:232;;5064:199;5041:232;;;;5283:24;5310:26;;;;;;;;;11743:25:64;;;11816:4;11804:17;;11784:18;;;11777:45;;;;11838:18;;;11831:34;;;11881:18;;;11874:34;;;5041:232:57;;-1:-1:-1;5283:24:57;5310:26;;11715:19:64;;5310:26:57;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5310:26:57;;;;;;-1:-1:-1;;5354:30:57;;;;;;;:59;;;5408:5;5388:25;;:16;:25;;;5354:59;5346:96;;;;;;;12567:2:64;5346:96:57;;;12549:21:64;12606:2;12586:18;;;12579:30;12645:26;12625:18;;;12618:54;12689:18;;5346:96:57;12365:348:64;5346:96:57;5452:27;;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:45;;;5512:32;10861:25:64;;;5452:36:57;;5512:32;;;;;10834:18:64;5512:32:57;;;;;;;4941:610;;4757:794;;;;;;;:::o;1910:238::-;2039:16;:36;;;;;;;;;;;;;;;2085:20;;;;;;;;;;;;;;;2115:26;;;;2137:4;2128:13;;;;;;;;2115:26;1910:238;;;:::o;6330:355::-;6399:25;6428:16;;;6540:8;6469:89;;;6428:16;6540:8;;;6469:89;;;7833:34:64;7903:15;;;7883:18;;;;7876:43;;;;6469:89:57;;;;;;;;;;7745:18:64;;;;6469:89:57;;;;;;;;;6492:46;6469:89;;;6428:140;;:16;;;;;:140;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6396:172;;;6578:16;6608:12;6597:32;;;;;;;;;;;;:::i;:::-;6578:51;;6647:11;6639:39;;;;;;;16036:2:64;6639:39:57;;;16018:21:64;16075:2;16055:18;;;16048:30;16114:17;16094:18;;;16087:45;16149:18;;6639:39:57;15834:339:64;15316:346:52;15461:17;;15516:33;15527:22;15516:8;:33;:::i;:::-;15490:59;-1:-1:-1;15490:59:52;15611:25;1121:5;15611:15;:25;:::i;:::-;:43;;;;:::i;:::-;15572:34;15590:16;15572:15;:34;:::i;:::-;15571:84;;;;:::i;:::-;15559:96;15316:346;-1:-1:-1;;;;;15316:346:52:o;15668:563::-;15809:11;15805:420;;;15866:95;;;15855:10;8274:15:64;;;15866:95:52;;;8256:34:64;15940:4:52;8306:18:64;;;8299:43;8378:15;;;8358:18;;;8351:43;-1:-1:-1;8410:18:64;;;8403:45;;;8464:19;;;;8457:35;;;15866:95:52;;;;;;;;;;8167:19:64;;;;15866:95:52;;;;;;;;;15889:34;15866:95;;;15855:107;;:5;:10;;;;:107;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15836:126;;;15984:7;15976:35;;;;;;;14326:2:64;15976:35:52;;;14308:21:64;14365:2;14345:18;;;14338:30;14404:17;14384:18;;;14377:45;14439:18;;15976:35:52;14124:339:64;15976:35:52;15822:200;15805:420;;;16072:92;;;16061:10;8813:15:64;;;16072:92:52;;;8795:34:64;16146:4:52;8845:18:64;;;8838:43;8917:15;;;8897:18;;;8890:43;8949:18;;;;8942:34;;;16072:92:52;;;;;;;;;;8706:19:64;;;;16072:92:52;;;;;;;;;16095:34;16072:92;;;16061:104;;-1:-1:-1;;16061:5:52;:10;;:104;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16042:123;;;16187:7;16179:35;;;;;;;14670:2:64;16179:35:52;;;14652:21:64;14709:2;14689:18;;;14682:30;14748:17;14728:18;;;14721:45;14783:18;;16179:35:52;14468:339:64;16179:35:52;16028:197;15805:420;15668:563;;;;:::o;12828:508::-;12871:16;12889;12964:22;12990:5;:16;;13030:10;13042:6;13058:4;13007:57;;;;;;;;7782:42:64;7851:15;;;7833:34;;7903:15;;7898:2;7883:18;;7876:43;7760:2;7745:18;;7598:327;13007:57:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12990:75;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12961:104;;;13097:9;13086:32;;;;;;;;;;;;:::i;:::-;13218:57;;;13253:6;13201:16;7851:15:64;;;13218:57:52;;;7833:34:64;13269:4:52;7883:18:64;;;;7876:43;;;;13218:57:52;;;;;;;;;;7745:18:64;;;;13218:57:52;;;;;;;;;;;;;13201:75;;13075:43;;-1:-1:-1;;;13201:5:52;:16;;;;:75;;13218:57;13201:75;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13172:104;;;13308:9;13297:32;;;;;;;;;;;;:::i;:::-;13286:43;;12907:429;;12828:508;;:::o;13342:1254::-;13546:17;13534:29;;;;;:62;;-1:-1:-1;13579:17:52;13567:29;;;13534:62;13526:83;;;;;;;15014:2:64;13526:83:52;;;14996:21:64;15053:1;15033:18;;;15026:29;15091:10;15071:18;;;15064:38;15119:18;;13526:83:52;14812:331:64;13526:83:52;13623:18;;;;;;;13619:932;;13727:8;:28;;;13769;;;;;;;;;13727;;;13769;;;;13619:932;;;13859:15;13893:37;;;;;;;;;;;:55;;-1:-1:-1;13934:14:52;;;;;13893:55;:73;;;;-1:-1:-1;13952:14:52;;;;;13893:73;13889:519;;;14039:36;;;14018:18;14114:45;;;14115:31;1076:3;14115:31;;;;14114:45;;;;;:::i;:::-;14181:20;:44;;14114:45;;;;14205:20;;;;;14181:44;;;;;14114:45;-1:-1:-1;;14264:45:52;;;1076:3;14265:31;;;;;14264:45;;;;;:::i;:::-;;14247:62;;14364:11;14355:20;;:6;:20;14331;;:44;;;;;;;;;;;13986:408;;;13889:519;14421:8;:28;;14505:35;;;;;;;14421:28;14463;;;;;;;;;14421;;;14463;;;;;14505:35;;;;;;;;;;13619:932;14565:24;;;16940:25:64;;;16996:2;16981:18;;16974:34;;;14565:24:52;;16913:18:64;14565:24:52;;;;;;;13342:1254;;;;;:::o;14602:708::-;14774:5;;14728:17;;14793:11;;14789:515;;14820:16;14839:48;14856:30;;;;;;:18;;:30;:::i;14839:48::-;14820:67;;14916:6;14905:8;:17;14901:393;;;1121:5;15157:8;15147:6;;15137;15126:8;:17;;;;:::i;:::-;15110:34;;:12;:34;:::i;:::-;:43;;;;:::i;:::-;15109:56;;;;:::i;:::-;:66;;;;:::i;:::-;15097:78;-1:-1:-1;15197:14:52;;15193:87;;15235:26;15241:8;15251:9;15235:5;:26::i;:::-;14806:498;14789:515;14747:563;14602:708;;;;;:::o;5907:332:57:-;5973:17;;;;;;;:9;:17;;;;;:27;;5994:6;;5973:17;:27;;5994:6;;5973:27;:::i;:::-;;;;-1:-1:-1;;6150:11:57;:21;;;;;;;6196:36;;10861:25:64;;;-1:-1:-1;;6196:36:57;;;;;;10849:2:64;10834:18;6196:36:57;;;;;;;;5907:332;;:::o;505:1431:24:-;553:14;607:6;603:1317;;-1:-1:-1;624:1:24;505:1431;;;:::o;603:1317::-;675:1;706;735:35;729:41;;725:128;;801:3;794:10;;;;;832:2;826:8;725:128;880:19;874:2;:25;870:111;;930:2;923:9;;;;;960:2;954:8;870:111;1008:11;1002:2;:17;998:103;;1050:2;1043:9;;;;;1080:2;1074:8;998:103;1128:7;1122:2;:13;1118:98;;1166:2;1159:9;;;;;1196:1;1190:7;1118:98;1243:5;1237:2;:11;1233:95;;1279:1;1272:8;;;;;1308:1;1302:7;1233:95;1355:4;1349:2;:10;1345:94;;1390:1;1383:8;;;;;1419:1;1413:7;1345:94;1466:3;1460:2;:9;1456:63;;1499:1;1493:7;1456:63;1555:1;1549;1545;:5;;;;;:::i;:::-;;1541:1;:9;1540:16;;1536:20;;1593:1;1587;1583;:5;;;;;:::i;:::-;;1579:1;:9;1578:16;;1574:20;;1631:1;1625;1621;:5;;;;;:::i;:::-;;1617:1;:9;1616:16;;1612:20;;1669:1;1663;1659;:5;;;;;:::i;:::-;;1655:1;:9;1654:16;;1650:20;;1707:1;1701;1697;:5;;;;;:::i;:::-;;1693:1;:9;1692:16;;1688:20;;1745:1;1739;1735;:5;;;;;:::i;:::-;;1731:1;:9;1730:16;;1726:20;;1783:1;1777;1773;:5;;;;;:::i;:::-;;1769:1;:9;1768:16;;1764:20;;1845:10;1862:1;1858;:5;;;;;:::i;:::-;;1845:18;;1894:2;1890:1;:6;:15;;1903:2;1890:15;;16330:642:52;16493:17;;16545:14;;;:32;;-1:-1:-1;16563:14:52;;16545:32;16541:51;;;-1:-1:-1;16587:1:52;;-1:-1:-1;16587:1:52;16579:13;;16541:51;16602:22;16652:9;16628:20;16639:9;16628:8;:20;:::i;:::-;16627:34;;;;:::i;:::-;16602:59;;16693:8;16675:14;:26;16671:295;;16772:11;1121:5;16772:1;:11;:::i;:::-;16741:25;16752:14;16741:8;:25;:::i;:::-;16730:37;;:7;:37;:::i;:::-;16729:55;;;;:::i;:::-;16717:67;;16671:295;;;16815:22;16865:9;16841:20;16852:9;16841:8;:20;:::i;:::-;16840:34;;;;:::i;:::-;16815:59;-1:-1:-1;16943:11:52;1121:5;16943:1;:11;:::i;:::-;16912:25;16923:14;16912:8;:25;:::i;:::-;16901:37;;:7;:37;:::i;:::-;16900:55;;;;:::i;:::-;16888:67;;16801:165;16671:295;16531:441;16330:642;;;;;;;;:::o;5557:344:57:-;5641:6;5626:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;5800:20:57;;;;;;;:9;:20;;;;;;;;:30;;;;;;5855:39;10861:25:64;;;5855:39:57;;10834:18:64;5855:39:57;10715:177:64;14:247;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;:::-;250:5;14:247;-1:-1:-1;;;14:247:64:o;526:539::-;616:6;624;632;685:2;673:9;664:7;660:23;656:32;653:52;;;701:1;698;691:12;653:52;740:9;727:23;759:31;784:5;759:31;:::i;:::-;809:5;-1:-1:-1;866:2:64;851:18;;838:32;879:33;838:32;879:33;:::i;:::-;931:7;-1:-1:-1;990:2:64;975:18;;962:32;1003:30;962:32;1003:30;:::i;:::-;1052:7;1042:17;;;526:539;;;;;:::o;1070:1477::-;1187:6;1195;1203;1211;1219;1272:3;1260:9;1251:7;1247:23;1243:33;1240:53;;;1289:1;1286;1279:12;1240:53;1328:9;1315:23;1347:31;1372:5;1347:31;:::i;:::-;1397:5;-1:-1:-1;1454:2:64;1439:18;;1426:32;1467:33;1426:32;1467:33;:::i;:::-;1519:7;-1:-1:-1;1578:2:64;1563:18;;1550:32;1591:30;1550:32;1591:30;:::i;:::-;1640:7;-1:-1:-1;1694:2:64;1679:18;;1666:32;;-1:-1:-1;1749:3:64;1734:19;;1721:33;1773:18;1803:14;;;1800:34;;;1830:1;1827;1820:12;1800:34;1868:6;1857:9;1853:22;1843:32;;1913:7;1906:4;1902:2;1898:13;1894:27;1884:55;;1935:1;1932;1925:12;1884:55;1971:2;1958:16;1993:2;1989;1986:10;1983:36;;;1999:18;;:::i;:::-;2133:2;2127:9;2195:4;2187:13;;2038:66;2183:22;;;2207:2;2179:31;2175:40;2163:53;;;2231:18;;;2251:22;;;2228:46;2225:72;;;2277:18;;:::i;:::-;2317:10;2313:2;2306:22;2352:2;2344:6;2337:18;2392:7;2387:2;2382;2378;2374:11;2370:20;2367:33;2364:53;;;2413:1;2410;2403:12;2364:53;2469:2;2464;2460;2456:11;2451:2;2443:6;2439:15;2426:46;2514:1;2509:2;2504;2496:6;2492:15;2488:24;2481:35;2535:6;2525:16;;;;;;;1070:1477;;;;;;;;:::o;2552:390::-;2625:6;2633;2686:2;2674:9;2665:7;2661:23;2657:32;2654:52;;;2702:1;2699;2692:12;2654:52;2741:9;2728:23;2760:31;2785:5;2760:31;:::i;:::-;2810:5;-1:-1:-1;2867:2:64;2852:18;;2839:32;2880:30;2839:32;2880:30;:::i;:::-;2929:7;2919:17;;;2552:390;;;;;:::o;2947:323::-;3023:6;3031;3084:2;3072:9;3063:7;3059:23;3055:32;3052:52;;;3100:1;3097;3090:12;3052:52;3139:9;3126:23;3158:31;3183:5;3158:31;:::i;:::-;3208:5;3260:2;3245:18;;;;3232:32;;-1:-1:-1;;;2947:323:64:o;3275:388::-;3343:6;3351;3404:2;3392:9;3383:7;3379:23;3375:32;3372:52;;;3420:1;3417;3410:12;3372:52;3459:9;3446:23;3478:31;3503:5;3478:31;:::i;:::-;3528:5;-1:-1:-1;3585:2:64;3570:18;;3557:32;3598:33;3557:32;3598:33;:::i;3668:456::-;3745:6;3753;3761;3814:2;3802:9;3793:7;3789:23;3785:32;3782:52;;;3830:1;3827;3820:12;3782:52;3869:9;3856:23;3888:31;3913:5;3888:31;:::i;:::-;3938:5;-1:-1:-1;3995:2:64;3980:18;;3967:32;4008:33;3967:32;4008:33;:::i;:::-;3668:456;;4060:7;;-1:-1:-1;;;4114:2:64;4099:18;;;;4086:32;;3668:456::o;4129:829::-;4240:6;4248;4256;4264;4272;4280;4288;4341:3;4329:9;4320:7;4316:23;4312:33;4309:53;;;4358:1;4355;4348:12;4309:53;4397:9;4384:23;4416:31;4441:5;4416:31;:::i;:::-;4466:5;-1:-1:-1;4523:2:64;4508:18;;4495:32;4536:33;4495:32;4536:33;:::i;:::-;4588:7;-1:-1:-1;4642:2:64;4627:18;;4614:32;;-1:-1:-1;4693:2:64;4678:18;;4665:32;;-1:-1:-1;4749:3:64;4734:19;;4721:33;4798:4;4785:18;;4773:31;;4763:59;;4818:1;4815;4808:12;4763:59;4129:829;;;;-1:-1:-1;4129:829:64;;;;4841:7;4895:3;4880:19;;4867:33;;-1:-1:-1;4947:3:64;4932:19;;;4919:33;;4129:829;-1:-1:-1;;4129:829:64:o;5283:245::-;5350:6;5403:2;5391:9;5382:7;5378:23;5374:32;5371:52;;;5419:1;5416;5409:12;5371:52;5451:9;5445:16;5470:28;5492:5;5470:28;:::i;5533:591::-;5603:6;5611;5664:2;5652:9;5643:7;5639:23;5635:32;5632:52;;;5680:1;5677;5670:12;5632:52;5720:9;5707:23;5749:18;5790:2;5782:6;5779:14;5776:34;;;5806:1;5803;5796:12;5776:34;5844:6;5833:9;5829:22;5819:32;;5889:7;5882:4;5878:2;5874:13;5870:27;5860:55;;5911:1;5908;5901:12;5860:55;5951:2;5938:16;5977:2;5969:6;5966:14;5963:34;;;5993:1;5990;5983:12;5963:34;6038:7;6033:2;6024:6;6020:2;6016:15;6012:24;6009:37;6006:57;;;6059:1;6056;6049:12;6006:57;6090:2;6082:11;;;;;6112:6;;-1:-1:-1;5533:591:64;;-1:-1:-1;;;;5533:591:64:o;6129:184::-;6199:6;6252:2;6240:9;6231:7;6227:23;6223:32;6220:52;;;6268:1;6265;6258:12;6220:52;-1:-1:-1;6291:16:64;;6129:184;-1:-1:-1;6129:184:64:o;6318:316::-;6359:3;6397:5;6391:12;6424:6;6419:3;6412:19;6440:63;6496:6;6489:4;6484:3;6480:14;6473:4;6466:5;6462:16;6440:63;:::i;:::-;6548:2;6536:15;6553:66;6532:88;6523:98;;;;6623:4;6519:109;;6318:316;-1:-1:-1;;6318:316:64:o;6639:274::-;6768:3;6806:6;6800:13;6822:53;6868:6;6863:3;6856:4;6848:6;6844:17;6822:53;:::i;:::-;6891:16;;;;;6639:274;-1:-1:-1;;6639:274:64:o;8987:681::-;9158:2;9210:21;;;9280:13;;9183:18;;;9302:22;;;9129:4;;9158:2;9381:15;;;;9355:2;9340:18;;;9129:4;9424:218;9438:6;9435:1;9432:13;9424:218;;;9503:13;;9518:42;9499:62;9487:75;;9617:15;;;;9582:12;;;;9460:1;9453:9;9424:218;;;-1:-1:-1;9659:3:64;;8987:681;-1:-1:-1;;;;;;8987:681:64:o;9673:845::-;9902:2;9954:21;;;10024:13;;9927:18;;;10046:22;;;9873:4;;9902:2;10087;;10105:18;;;;10146:15;;;9873:4;10189:303;10203:6;10200:1;10197:13;10189:303;;;10262:13;;10304:9;;10315:42;10300:58;10288:71;;10399:11;;10393:18;10379:12;;;10372:40;10432:12;;;;10467:15;;;;10225:1;10218:9;10189:303;;;-1:-1:-1;10509:3:64;;9673:845;-1:-1:-1;;;;;;;9673:845:64:o;11919:217::-;12066:2;12055:9;12048:21;12029:4;12086:44;12126:2;12115:9;12111:18;12103:6;12086:44;:::i;17532:128::-;17572:3;17603:1;17599:6;17596:1;17593:13;17590:39;;;17609:18;;:::i;:::-;-1:-1:-1;17645:9:64;;17532:128::o;17665:274::-;17705:1;17731;17721:189;;17766:77;17763:1;17756:88;17867:4;17864:1;17857:15;17895:4;17892:1;17885:15;17721:189;-1:-1:-1;17924:9:64;;17665:274::o;17944:228::-;17984:7;18110:1;18042:66;18038:74;18035:1;18032:81;18027:1;18020:9;18013:17;18009:105;18006:131;;;18117:18;;:::i;:::-;-1:-1:-1;18157:9:64;;17944:228::o;18177:125::-;18217:4;18245:1;18242;18239:8;18236:34;;;18250:18;;:::i;:::-;-1:-1:-1;18287:9:64;;18177:125::o;18307:258::-;18379:1;18389:113;18403:6;18400:1;18397:13;18389:113;;;18479:11;;;18473:18;18460:11;;;18453:39;18425:2;18418:10;18389:113;;;18520:6;18517:1;18514:13;18511:48;;;-1:-1:-1;;18555:1:64;18537:16;;18530:27;18307:258::o;18570:195::-;18609:3;18640:66;18633:5;18630:77;18627:103;;;18710:18;;:::i;:::-;-1:-1:-1;18757:1:64;18746:13;;18570:195::o;18770:184::-;18822:77;18819:1;18812:88;18919:4;18916:1;18909:15;18943:4;18940:1;18933:15;18959:184;19011:77;19008:1;19001:88;19108:4;19105:1;19098:15;19132:4;19129:1;19122:15;19148:184;19200:77;19197:1;19190:88;19297:4;19294:1;19287:15;19321:4;19318:1;19311:15;19337:184;19389:77;19386:1;19379:88;19486:4;19483:1;19476:15;19510:4;19507:1;19500:15;19526:154;19612:42;19605:5;19601:54;19594:5;19591:65;19581:93;;19670:1;19667;19660:12;19581:93;19526:154;:::o;19685:118::-;19771:5;19764:13;19757:21;19750:5;19747:32;19737:60;;19793:1;19790;19783:12"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "3045600",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "DOMAIN_SEPARATOR()": "infinite",
                "PERMIT_TYPEHASH()": "252",
                "allowance(address,address)": "infinite",
                "approve(address,uint256)": "24582",
                "balanceOf(address)": "2602",
                "barFee()": "2351",
                "barFeeTo()": "infinite",
                "bento()": "infinite",
                "burn(bytes)": "infinite",
                "burnSingle(bytes)": "infinite",
                "decimals()": "294",
                "flashSwap(bytes)": "infinite",
                "getAmountIn(bytes)": "467",
                "getAmountOut(bytes)": "infinite",
                "getAssets()": "infinite",
                "getReserves()": "2561",
                "kLast()": "2352",
                "level2()": "2432",
                "masterDeployer()": "infinite",
                "mint(bytes)": "infinite",
                "name()": "infinite",
                "nonces(address)": "2557",
                "operator()": "2402",
                "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "infinite",
                "poolIdentifier()": "252",
                "price0CumulativeLast()": "2395",
                "price1CumulativeLast()": "2330",
                "swap(bytes)": "infinite",
                "swapFee()": "infinite",
                "symbol()": "infinite",
                "token0()": "infinite",
                "token1()": "infinite",
                "totalSupply()": "2352",
                "transfer(address,uint256)": "infinite",
                "transferFrom(address,address,uint256)": "infinite",
                "updateBarFee()": "infinite",
                "whiteListManager()": "2425"
              },
              "internal": {
                "_balance()": "infinite",
                "_getAmountOut(uint256,uint256,uint256)": "infinite",
                "_getReserves()": "infinite",
                "_mintFee(uint112,uint112,uint256)": "infinite",
                "_nonOptimalMintFee(uint256,uint256,uint256,uint256)": "infinite",
                "_transfer(address,uint256,address,bool)": "infinite",
                "_update(uint256,uint256,uint112,uint112,uint32)": "infinite"
              }
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "PERMIT_TYPEHASH()": "30adf81f",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "barFee()": "c14ad802",
              "barFeeTo()": "0c0a0cd2",
              "bento()": "4da31827",
              "burn(bytes)": "2a07b6c7",
              "burnSingle(bytes)": "af8c09bf",
              "decimals()": "313ce567",
              "flashSwap(bytes)": "053da1c8",
              "getAmountIn(bytes)": "499a3c50",
              "getAmountOut(bytes)": "a8f1f52e",
              "getAssets()": "67e4ac2c",
              "getReserves()": "0902f1ac",
              "kLast()": "7464fc3d",
              "level2()": "bc3377d9",
              "masterDeployer()": "cf58879a",
              "mint(bytes)": "7ba0e2e7",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "operator()": "570ca735",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "poolIdentifier()": "a69840a8",
              "price0CumulativeLast()": "5909c0d5",
              "price1CumulativeLast()": "5a3d5493",
              "swap(bytes)": "627dd56a",
              "swapFee()": "54cf2aeb",
              "symbol()": "95d89b41",
              "token0()": "0dfe1681",
              "token1()": "d21220a7",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "updateBarFee()": "92bc3219",
              "whiteListManager()": "25a93264"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_deployData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_masterDeployer\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reserve0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reserve1\",\"type\":\"uint256\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"barFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"barFeeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bento\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burn\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPool.TokenAmount[]\",\"name\":\"withdrawnAmounts\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burnSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"finalAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAssets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"_reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"level2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterDeployer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolIdentifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateBarFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"whiteListManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The reserves are stored as bento shares.      The curve is applied to shares as well. This pool does not care about the underlying amounts.\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"params\":{\"amount\":\"The maximum collective `amount` that `spender` can pull.\",\"spender\":\"Address of the party that can pull tokens from `msg.sender`'s account.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"burn(bytes)\":{\"details\":\"Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\"},\"burnSingle(bytes)\":{\"details\":\"Burns LP tokens sent to this contract and swaps one of the output tokens for another - i.e., the user gets a single token out by burning LP tokens.\"},\"flashSwap(bytes)\":{\"details\":\"Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage.\"},\"getAmountOut(bytes)\":{\"details\":\"The pool does not need to include a trade simulator directly in itself - it can use a library.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"finalAmountOut\":\"The amount of output tokens that will be sent to the user if the trade is executed.\"}},\"getAssets()\":{\"returns\":{\"assets\":\"An array of tokens supported by the pool.\"}},\"mint(bytes)\":{\"details\":\"Mints LP tokens - should be called via the router after transferring `bento` tokens. The router must ensure that sufficient LP tokens are minted by using the return value.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"amount\":\"The number of tokens that are approved (2^256-1 means infinite).\",\"deadline\":\"The time at which to expire the signature.\",\"owner\":\"The address to approve from.\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"spender\":\"The address to be approved.\",\"v\":\"The recovery byte of the signature.\"}},\"swap(bytes)\":{\"details\":\"Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\"},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The token `amount` to move.\",\"recipient\":\"The address to move tokens to.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The token `amount` to move.\",\"recipient\":\"The address to move tokens to.\",\"sender\":\"Address to pull tokens `from`.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"updateBarFee()\":{\"details\":\"Updates `barFee` for Trident protocol.\"}},\"stateVariables\":{\"poolIdentifier\":{\"return\":\"A unique identifier for the pool type.\",\"returns\":{\"_0\":\"A unique identifier for the pool type.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"The EIP-712 typehash for this contract's domain.\"},\"PERMIT_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for this contract's {permit} struct.\"},\"allowance(address,address)\":{\"notice\":\"owner -> spender -> allowance mapping.\"},\"approve(address,uint256)\":{\"notice\":\"Approves `amount` from `msg.sender` to be spent by `spender`.\"},\"balanceOf(address)\":{\"notice\":\"owner -> balance mapping.\"},\"getAmountOut(bytes)\":{\"notice\":\"Simulates a trade and returns the expected output.\"},\"nonces(address)\":{\"notice\":\"owner -> nonce mapping used in {permit}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Triggers an approval from `owner` to `spender`.\"},\"transfer(address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `msg.sender` to `recipient`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\"}},\"notice\":\"Trident exchange franchised pool template with constant product formula for swapping between an ERC-20 token pair.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/franchised/FranchisedConstantProductPool.sol\":\"FranchisedConstantProductPool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentCallee.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool callback interface.\\ninterface ITridentCallee {\\n    function tridentSwapCallback(bytes calldata data) external;\\n\\n    function tridentMintCallback(bytes calldata data) external;\\n}\\n\",\"keccak256\":\"0x256e838362a3064201b37b3b7c08bc1421b173a6fea633176123f0b827b868c9\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IWhiteListManager.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident franchised pool whitelist manager interface.\\ninterface IWhiteListManager {\\n    function whitelistedAccounts(address operator, address account) external returns (bool);\\n}\\n\",\"keccak256\":\"0x8de295afb9c76132947e2fd4f120bc437ee2c6f41fda1db2bcf6074b977d6df8\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/TridentMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident sqrt helper library.\\nlibrary TridentMath {\\n    /// @notice Calculate sqrt (x) rounding down, where `x` is unsigned 256-bit integer number.\\n    /// @dev Adapted from https://github.com/abdk-consulting/abdk-libraries-solidity/blob/master/ABDKMath64x64.sol, \\n    /// \\u00a9 2019 ABDK Consulting, License-Identifier: BSD-4-Clause.\\n    /// @param x Unsigned 256-bit integer number.\\n    /// @return result Sqrt result.\\n    function sqrt(uint256 x) internal pure returns (uint256 result) {\\n        unchecked {\\n            if (x == 0) result = 0;\\n            else {\\n                uint256 xx = x;\\n                uint256 r = 1;\\n                if (xx >= 0x100000000000000000000000000000000) {\\n                    xx >>= 128;\\n                    r <<= 64;\\n                }\\n                if (xx >= 0x10000000000000000) {\\n                    xx >>= 64;\\n                    r <<= 32;\\n                }\\n                if (xx >= 0x100000000) {\\n                    xx >>= 32;\\n                    r <<= 16;\\n                }\\n                if (xx >= 0x10000) {\\n                    xx >>= 16;\\n                    r <<= 8;\\n                }\\n                if (xx >= 0x100) {\\n                    xx >>= 8;\\n                    r <<= 4;\\n                }\\n                if (xx >= 0x10) {\\n                    xx >>= 4;\\n                    r <<= 2;\\n                }\\n                if (xx >= 0x8) {\\n                    r <<= 1;\\n                }\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1; // @dev Seven iterations should be enough.\\n                uint256 r1 = x / r;\\n                result = r < r1 ? r : r1;\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xccbada517ace78149a4602ce782e6faf408404ee300569b8adf76e0eb7f0dd3b\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/franchised/FranchisedConstantProductPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../../interfaces/IBentoBoxMinimal.sol\\\";\\nimport \\\"../../interfaces/IMasterDeployer.sol\\\";\\nimport \\\"../../interfaces/IPool.sol\\\";\\nimport \\\"../../interfaces/ITridentCallee.sol\\\";\\nimport \\\"../../libraries/TridentMath.sol\\\";\\nimport \\\"./TridentFranchisedERC20.sol\\\";\\n\\n/// @notice Trident exchange franchised pool template with constant product formula for swapping between an ERC-20 token pair.\\n/// @dev The reserves are stored as bento shares.\\n///      The curve is applied to shares as well. This pool does not care about the underlying amounts.\\ncontract FranchisedConstantProductPool is IPool, TridentFranchisedERC20 {\\n    event Mint(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\\n    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\\n    event Sync(uint256 reserve0, uint256 reserve1);\\n\\n    uint256 internal constant MINIMUM_LIQUIDITY = 1000;\\n\\n    uint8 internal constant PRECISION = 112;\\n    uint256 internal constant MAX_FEE = 10000; // @dev 100%.\\n    uint256 internal constant MAX_FEE_SQUARE = 100000000;\\n    uint256 internal constant E18 = uint256(10)**18;\\n    uint256 public immutable swapFee;\\n    uint256 internal immutable MAX_FEE_MINUS_SWAP_FEE;\\n\\n    address public immutable barFeeTo;\\n    address public immutable bento;\\n    address public immutable masterDeployer;\\n    address public immutable token0;\\n    address public immutable token1;\\n\\n    uint256 public barFee;\\n    uint256 public price0CumulativeLast;\\n    uint256 public price1CumulativeLast;\\n    uint256 public kLast;\\n\\n    uint112 internal reserve0;\\n    uint112 internal reserve1;\\n    uint32 internal blockTimestampLast;\\n\\n    bytes32 public constant override poolIdentifier = \\\"Trident:FranchisedCP\\\";\\n\\n    uint256 internal unlocked;\\n    modifier lock() {\\n        require(unlocked == 1, \\\"LOCKED\\\");\\n        unlocked = 2;\\n        _;\\n        unlocked = 1;\\n    }\\n\\n    constructor(bytes memory _deployData, address _masterDeployer) {\\n        (\\n            address _token0,\\n            address _token1,\\n            uint256 _swapFee,\\n            bool _twapSupport,\\n            address _whiteListManager,\\n            address _operator,\\n            bool _level2\\n        ) = abi.decode(_deployData, (address, address, uint256, bool, address, address, bool));\\n\\n        // @dev Factory ensures that the tokens are sorted.\\n        require(_token0 != address(0), \\\"ZERO_ADDRESS\\\");\\n        require(_token0 != _token1, \\\"IDENTICAL_ADDRESSES\\\");\\n        require(_token0 != address(this), \\\"INVALID_TOKEN\\\");\\n        require(_token1 != address(this), \\\"INVALID_TOKEN\\\");\\n        require(_swapFee <= MAX_FEE, \\\"INVALID_SWAP_FEE\\\");\\n\\n        TridentFranchisedERC20.initialize(_whiteListManager, _operator, _level2);\\n\\n        (, bytes memory _barFee) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFee.selector));\\n        (, bytes memory _barFeeTo) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFeeTo.selector));\\n        (, bytes memory _bento) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.bento.selector));\\n\\n        token0 = _token0;\\n        token1 = _token1;\\n        swapFee = _swapFee;\\n        // @dev This is safe from underflow - `swapFee` cannot exceed `MAX_FEE` per previous check.\\n        unchecked {\\n            MAX_FEE_MINUS_SWAP_FEE = MAX_FEE - _swapFee;\\n        }\\n        barFee = abi.decode(_barFee, (uint256));\\n        barFeeTo = abi.decode(_barFeeTo, (address));\\n        bento = abi.decode(_bento, (address));\\n        masterDeployer = _masterDeployer;\\n        unlocked = 1;\\n        if (_twapSupport) blockTimestampLast = 1;\\n    }\\n\\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\\n    /// The router must ensure that sufficient LP tokens are minted by using the return value.\\n    function mint(bytes calldata data) public override lock returns (uint256 liquidity) {\\n        address recipient = abi.decode(data, (address));\\n        _checkWhiteList(recipient);\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 _totalSupply = totalSupply;\\n\\n        unchecked {\\n            _totalSupply += _mintFee(_reserve0, _reserve1, _totalSupply);\\n        }\\n\\n        uint256 amount0 = balance0 - _reserve0;\\n        uint256 amount1 = balance1 - _reserve1;\\n        (uint256 fee0, uint256 fee1) = _nonOptimalMintFee(amount0, amount1, _reserve0, _reserve1);\\n        uint256 computed = TridentMath.sqrt((balance0 - fee0) * (balance1 - fee1));\\n\\n        if (_totalSupply == 0) {\\n            _mint(address(0), MINIMUM_LIQUIDITY);\\n            liquidity = computed - MINIMUM_LIQUIDITY;\\n        } else {\\n            uint256 k = TridentMath.sqrt(uint256(_reserve0) * _reserve1);\\n            liquidity = ((computed - k) * _totalSupply) / k;\\n        }\\n        require(liquidity != 0, \\\"INSUFFICIENT_LIQUIDITY_MINTED\\\");\\n        _mint(recipient, liquidity);\\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n        kLast = TridentMath.sqrt(balance0 * balance1);\\n        uint256 liquidityForEvent = liquidity;\\n        emit Mint(msg.sender, amount0, amount1, recipient, liquidityForEvent);\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\\n    function burn(bytes calldata data) public override lock returns (IPool.TokenAmount[] memory withdrawnAmounts) {\\n        (address recipient, bool unwrapBento) = abi.decode(data, (address, bool));\\n        _checkWhiteList(recipient);\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 _totalSupply = totalSupply;\\n        uint256 liquidity = balanceOf[address(this)];\\n\\n        unchecked {\\n            _totalSupply += _mintFee(_reserve0, _reserve1, _totalSupply);\\n        }\\n\\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\\n\\n        _burn(address(this), liquidity);\\n        _transfer(token0, amount0, recipient, unwrapBento);\\n        _transfer(token1, amount1, recipient, unwrapBento);\\n        // @dev This is safe from underflow - amounts are lesser figures derived from balances.\\n        unchecked {\\n            balance0 -= amount0;\\n            balance1 -= amount1;\\n        }\\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n        kLast = TridentMath.sqrt(balance0 * balance1);\\n\\n        withdrawnAmounts = new TokenAmount[](2);\\n        withdrawnAmounts[0] = TokenAmount({token: address(token0), amount: amount0});\\n        withdrawnAmounts[1] = TokenAmount({token: address(token1), amount: amount1});\\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\\n    /// - i.e., the user gets a single token out by burning LP tokens.\\n    function burnSingle(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenOut, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\\n        _checkWhiteList(recipient);\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 _totalSupply = totalSupply;\\n        uint256 liquidity = balanceOf[address(this)];\\n\\n        unchecked {\\n            _totalSupply += _mintFee(_reserve0, _reserve1, _totalSupply);\\n        }\\n\\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\\n\\n        _burn(address(this), liquidity);\\n        unchecked {\\n            if (tokenOut == token1) {\\n                // @dev Swap `token0` for `token1`\\n                // - calculate `amountOut` as if the user first withdrew balanced liquidity and then swapped `token0` for `token1`.\\n                amount1 += _getAmountOut(amount0, _reserve0 - amount0, _reserve1 - amount1);\\n                _transfer(token1, amount1, recipient, unwrapBento);\\n                balance1 -= amount1;\\n                amountOut = amount1;\\n                amount0 = 0;\\n            } else {\\n                // @dev Swap `token1` for `token0`.\\n                require(tokenOut == token0, \\\"INVALID_OUTPUT_TOKEN\\\");\\n                amount0 += _getAmountOut(amount1, _reserve1 - amount1, _reserve0 - amount0);\\n                _transfer(token0, amount0, recipient, unwrapBento);\\n                balance0 -= amount0;\\n                amountOut = amount0;\\n                amount1 = 0;\\n            }\\n        }\\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n        kLast = TridentMath.sqrt(balance0 * balance1);\\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\\n    function swap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\\n        if (level2) _checkWhiteList(recipient);\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 amountIn;\\n        address tokenOut;\\n        unchecked {\\n            if (tokenIn == token0) {\\n                tokenOut = token1;\\n                amountIn = balance0 - _reserve0;\\n                amountOut = _getAmountOut(amountIn, _reserve0, _reserve1);\\n                balance1 -= amountOut;\\n            } else {\\n                require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n                tokenOut = token0;\\n                amountIn = balance1 - reserve1;\\n                amountOut = _getAmountOut(amountIn, _reserve1, _reserve0);\\n                balance0 -= amountOut;\\n            }\\n        }\\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage.\\n    function flashSwap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address recipient, bool unwrapBento, uint256 amountIn, bytes memory context) = abi.decode(\\n            data,\\n            (address, address, bool, uint256, bytes)\\n        );\\n        if (level2) _checkWhiteList(recipient);\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        unchecked {\\n            if (tokenIn == token0) {\\n                amountOut = _getAmountOut(amountIn, _reserve0, _reserve1);\\n                _transfer(token1, amountOut, recipient, unwrapBento);\\n                ITridentCallee(msg.sender).tridentSwapCallback(context);\\n                (uint256 balance0, uint256 balance1) = _balance();\\n                require(balance0 - _reserve0 >= amountIn, \\\"INSUFFICIENT_AMOUNT_IN\\\");\\n                _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n                emit Swap(recipient, tokenIn, token1, amountIn, amountOut);\\n            } else {\\n                require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n                amountOut = _getAmountOut(amountIn, _reserve1, _reserve0);\\n                _transfer(token0, amountOut, recipient, unwrapBento);\\n                ITridentCallee(msg.sender).tridentSwapCallback(context);\\n                (uint256 balance0, uint256 balance1) = _balance();\\n                require(balance1 - _reserve1 >= amountIn, \\\"INSUFFICIENT_AMOUNT_IN\\\");\\n                _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n                emit Swap(recipient, tokenIn, token0, amountIn, amountOut);\\n            }\\n        }\\n    }\\n\\n    /// @dev Updates `barFee` for Trident protocol.\\n    function updateBarFee() public {\\n        (, bytes memory _barFee) = masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFee.selector));\\n        barFee = abi.decode(_barFee, (uint256));\\n    }\\n\\n    function _getReserves()\\n        internal\\n        view\\n        returns (\\n            uint112 _reserve0,\\n            uint112 _reserve1,\\n            uint32 _blockTimestampLast\\n        )\\n    {\\n        _reserve0 = reserve0;\\n        _reserve1 = reserve1;\\n        _blockTimestampLast = blockTimestampLast;\\n    }\\n\\n    function _balance() internal view returns (uint256 balance0, uint256 balance1) {\\n        // @dev balanceOf(address,address).\\n        (, bytes memory _balance0) = bento.staticcall(abi.encodeWithSelector(0xf7888aec, token0, address(this)));\\n        balance0 = abi.decode(_balance0, (uint256));\\n        // @dev balanceOf(address,address).\\n        (, bytes memory _balance1) = bento.staticcall(abi.encodeWithSelector(0xf7888aec, token1, address(this)));\\n        balance1 = abi.decode(_balance1, (uint256));\\n    }\\n\\n    function _update(\\n        uint256 balance0,\\n        uint256 balance1,\\n        uint112 _reserve0,\\n        uint112 _reserve1,\\n        uint32 _blockTimestampLast\\n    ) internal {\\n        require(balance0 <= type(uint112).max && balance1 <= type(uint112).max, \\\"OVERFLOW\\\");\\n        if (blockTimestampLast == 0) {\\n            // @dev TWAP support is disabled for gas efficiency.\\n            reserve0 = uint112(balance0);\\n            reserve1 = uint112(balance1);\\n        } else {\\n            uint32 blockTimestamp = uint32(block.timestamp);\\n            if (blockTimestamp != _blockTimestampLast && _reserve0 != 0 && _reserve1 != 0) {\\n                unchecked {\\n                    uint32 timeElapsed = blockTimestamp - _blockTimestampLast;\\n                    uint256 price0 = (uint256(_reserve1) << PRECISION) / _reserve0;\\n                    price0CumulativeLast += price0 * timeElapsed;\\n                    uint256 price1 = (uint256(_reserve0) << PRECISION) / _reserve1;\\n                    price1CumulativeLast += price1 * timeElapsed;\\n                }\\n            }\\n            reserve0 = uint112(balance0);\\n            reserve1 = uint112(balance1);\\n            blockTimestampLast = blockTimestamp;\\n        }\\n        emit Sync(balance0, balance1);\\n    }\\n\\n    function _mintFee(\\n        uint112 _reserve0,\\n        uint112 _reserve1,\\n        uint256 _totalSupply\\n    ) internal returns (uint256 liquidity) {\\n        uint256 _kLast = kLast;\\n        if (_kLast != 0) {\\n            uint256 computed = TridentMath.sqrt(uint256(_reserve0) * _reserve1);\\n            if (computed > _kLast) {\\n                // @dev `barFee` % of increase in liquidity.\\n                // It's going to be slightly less than `barFee` % in reality due to the math.\\n                liquidity = (_totalSupply * (computed - _kLast) * barFee) / computed / MAX_FEE;\\n                if (liquidity != 0) {\\n                    _mint(barFeeTo, liquidity);\\n                }\\n            }\\n        }\\n    }\\n\\n    function _getAmountOut(\\n        uint256 amountIn,\\n        uint256 reserveAmountIn,\\n        uint256 reserveAmountOut\\n    ) internal view returns (uint256 amountOut) {\\n        uint256 amountInWithFee = amountIn * MAX_FEE_MINUS_SWAP_FEE;\\n        amountOut = (amountInWithFee * reserveAmountOut) / (reserveAmountIn * MAX_FEE + amountInWithFee);\\n    }\\n\\n    function _transfer(\\n        address token,\\n        uint256 shares,\\n        address to,\\n        bool unwrapBento\\n    ) internal {\\n        if (unwrapBento) {\\n            (bool success, ) = bento.call(abi.encodeWithSelector(IBentoBoxMinimal.withdraw.selector, token, address(this), to, 0, shares));\\n            require(success, \\\"WITHDRAW_FAILED\\\");\\n        } else {\\n            (bool success, ) = bento.call(abi.encodeWithSelector(IBentoBoxMinimal.transfer.selector, token, address(this), to, shares));\\n            require(success, \\\"TRANSFER_FAILED\\\");\\n        }\\n    }\\n\\n    /// @dev This fee is charged to cover for `swapFee` when users add unbalanced liquidity.\\n    function _nonOptimalMintFee(\\n        uint256 _amount0,\\n        uint256 _amount1,\\n        uint256 _reserve0,\\n        uint256 _reserve1\\n    ) internal view returns (uint256 token0Fee, uint256 token1Fee) {\\n        if (_reserve0 == 0 || _reserve1 == 0) return (0, 0);\\n        uint256 amount1Optimal = (_amount0 * _reserve1) / _reserve0;\\n        if (amount1Optimal <= _amount1) {\\n            token1Fee = (swapFee * (_amount1 - amount1Optimal)) / (2 * MAX_FEE);\\n        } else {\\n            uint256 amount0Optimal = (_amount1 * _reserve0) / _reserve1;\\n            token0Fee = (swapFee * (_amount0 - amount0Optimal)) / (2 * MAX_FEE);\\n        }\\n    }\\n\\n    function getAssets() public view override returns (address[] memory assets) {\\n        assets = new address[](2);\\n        assets[0] = token0;\\n        assets[1] = token1;\\n    }\\n\\n    function getAmountOut(bytes calldata data) public view override returns (uint256 finalAmountOut) {\\n        (address tokenIn, uint256 amountIn) = abi.decode(data, (address, uint256));\\n        (uint112 _reserve0, uint112 _reserve1, ) = _getReserves();\\n        if (tokenIn == token0) {\\n            finalAmountOut = _getAmountOut(amountIn, _reserve0, _reserve1);\\n        } else {\\n            require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n            finalAmountOut = _getAmountOut(amountIn, _reserve1, _reserve0);\\n        }\\n    }\\n\\n    function getAmountIn(bytes calldata) public pure override returns (uint256) {\\n        revert();\\n    }\\n\\n    function getReserves()\\n        public\\n        view\\n        returns (\\n            uint112 _reserve0,\\n            uint112 _reserve1,\\n            uint32 _blockTimestampLast\\n        )\\n    {\\n        return _getReserves();\\n    }\\n}\\n\",\"keccak256\":\"0x63846c8e4c0eeb6d17b3ee7540bb336369ecedc000f451364f1c7c1f3c0e7ce5\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/franchised/TridentFranchisedERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../../interfaces/IWhiteListManager.sol\\\";\\n\\n/// @notice Trident franchised pool ERC-20 with EIP-2612 extension.\\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol,\\n/// License-Identifier: AGPL-3.0-only.\\nabstract contract TridentFranchisedERC20 {\\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\\n    event Transfer(address indexed sender, address indexed recipient, uint256 amount);\\n\\n    string public constant name = \\\"Sushi Franchised LP Token\\\";\\n    string public constant symbol = \\\"SLP\\\";\\n    uint8 public constant decimals = 18;\\n\\n    address public whiteListManager;\\n    address public operator;\\n    bool public level2;\\n\\n    uint256 public totalSupply;\\n    /// @notice owner -> balance mapping.\\n    mapping(address => uint256) public balanceOf;\\n    /// @notice owner -> spender -> allowance mapping.\\n    mapping(address => mapping(address => uint256)) public allowance;\\n\\n    /// @notice The EIP-712 typehash for this contract's {permit} struct.\\n    bytes32 public constant PERMIT_TYPEHASH =\\n        keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n    /// @notice The EIP-712 typehash for this contract's domain.\\n    bytes32 public immutable DOMAIN_SEPARATOR;\\n    /// @notice owner -> nonce mapping used in {permit}.\\n    mapping(address => uint256) public nonces;\\n\\n    constructor() {\\n        DOMAIN_SEPARATOR = keccak256(\\n            abi.encode(\\n                keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"),\\n                keccak256(bytes(name)),\\n                keccak256(bytes(\\\"1\\\")),\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    /// @dev Initializes whitelist settings from pool.\\n    function initialize(\\n        address _whiteListManager,\\n        address _operator,\\n        bool _level2\\n    ) internal {\\n        whiteListManager = _whiteListManager;\\n        operator = _operator;\\n        if (_level2) level2 = true;\\n    }\\n\\n    /// @notice Approves `amount` from `msg.sender` to be spent by `spender`.\\n    /// @param spender Address of the party that can pull tokens from `msg.sender`'s account.\\n    /// @param amount The maximum collective `amount` that `spender` can pull.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function approve(address spender, uint256 amount) external returns (bool) {\\n        allowance[msg.sender][spender] = amount;\\n        emit Approval(msg.sender, spender, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `msg.sender` to `recipient`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transfer(address recipient, uint256 amount) external returns (bool) {\\n        if (level2) _checkWhiteList(recipient);\\n        balanceOf[msg.sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(msg.sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\\n    /// @param sender Address to pull tokens `from`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool) {\\n        if (level2) _checkWhiteList(recipient);\\n        if (allowance[sender][msg.sender] != type(uint256).max) {\\n            allowance[sender][msg.sender] -= amount;\\n        }\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Triggers an approval from `owner` to `spender`.\\n    /// @param owner The address to approve from.\\n    /// @param spender The address to be approved.\\n    /// @param amount The number of tokens that are approved (2^256-1 means infinite).\\n    /// @param deadline The time at which to expire the signature.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        require(deadline >= block.timestamp, \\\"PERMIT_DEADLINE_EXPIRED\\\");\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                \\\"\\\\x19\\\\x01\\\",\\n                DOMAIN_SEPARATOR,\\n                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))\\n            )\\n        );\\n        address recoveredAddress = ecrecover(digest, v, r, s);\\n        require(recoveredAddress != address(0) && recoveredAddress == owner, \\\"INVALID_PERMIT_SIGNATURE\\\");\\n        allowance[recoveredAddress][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    function _mint(address recipient, uint256 amount) internal {\\n        totalSupply += amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(address(0), recipient, amount);\\n    }\\n\\n    function _burn(address sender, uint256 amount) internal {\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from underflow - users won't ever\\n        // have a balance larger than `totalSupply`.\\n        unchecked {\\n            totalSupply -= amount;\\n        }\\n        emit Transfer(sender, address(0), amount);\\n    }\\n\\n    /// @dev Checks `whiteListManager` for pool `operator` and given user `account`.\\n    function _checkWhiteList(address account) internal view {\\n        (, bytes memory _whitelisted) = whiteListManager.staticcall(\\n            abi.encodeWithSelector(IWhiteListManager.whitelistedAccounts.selector, operator, account)\\n        );\\n        bool whitelisted = abi.decode(_whitelisted, (bool));\\n        require(whitelisted, \\\"NOT_WHITELISTED\\\");\\n    }\\n}\\n\",\"keccak256\":\"0x2d3db0ed7c3fb40367a4a3fa8fc5ba3dece956fb319b9963cfe5b63ea1ee3b06\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 23226,
                "contract": "contracts/pool/franchised/FranchisedConstantProductPool.sol:FranchisedConstantProductPool",
                "label": "whiteListManager",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 23228,
                "contract": "contracts/pool/franchised/FranchisedConstantProductPool.sol:FranchisedConstantProductPool",
                "label": "operator",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              },
              {
                "astId": 23230,
                "contract": "contracts/pool/franchised/FranchisedConstantProductPool.sol:FranchisedConstantProductPool",
                "label": "level2",
                "offset": 20,
                "slot": "1",
                "type": "t_bool"
              },
              {
                "astId": 23232,
                "contract": "contracts/pool/franchised/FranchisedConstantProductPool.sol:FranchisedConstantProductPool",
                "label": "totalSupply",
                "offset": 0,
                "slot": "2",
                "type": "t_uint256"
              },
              {
                "astId": 23237,
                "contract": "contracts/pool/franchised/FranchisedConstantProductPool.sol:FranchisedConstantProductPool",
                "label": "balanceOf",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 23244,
                "contract": "contracts/pool/franchised/FranchisedConstantProductPool.sol:FranchisedConstantProductPool",
                "label": "allowance",
                "offset": 0,
                "slot": "4",
                "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
              },
              {
                "astId": 23258,
                "contract": "contracts/pool/franchised/FranchisedConstantProductPool.sol:FranchisedConstantProductPool",
                "label": "nonces",
                "offset": 0,
                "slot": "5",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 17245,
                "contract": "contracts/pool/franchised/FranchisedConstantProductPool.sol:FranchisedConstantProductPool",
                "label": "barFee",
                "offset": 0,
                "slot": "6",
                "type": "t_uint256"
              },
              {
                "astId": 17247,
                "contract": "contracts/pool/franchised/FranchisedConstantProductPool.sol:FranchisedConstantProductPool",
                "label": "price0CumulativeLast",
                "offset": 0,
                "slot": "7",
                "type": "t_uint256"
              },
              {
                "astId": 17249,
                "contract": "contracts/pool/franchised/FranchisedConstantProductPool.sol:FranchisedConstantProductPool",
                "label": "price1CumulativeLast",
                "offset": 0,
                "slot": "8",
                "type": "t_uint256"
              },
              {
                "astId": 17251,
                "contract": "contracts/pool/franchised/FranchisedConstantProductPool.sol:FranchisedConstantProductPool",
                "label": "kLast",
                "offset": 0,
                "slot": "9",
                "type": "t_uint256"
              },
              {
                "astId": 17253,
                "contract": "contracts/pool/franchised/FranchisedConstantProductPool.sol:FranchisedConstantProductPool",
                "label": "reserve0",
                "offset": 0,
                "slot": "10",
                "type": "t_uint112"
              },
              {
                "astId": 17255,
                "contract": "contracts/pool/franchised/FranchisedConstantProductPool.sol:FranchisedConstantProductPool",
                "label": "reserve1",
                "offset": 14,
                "slot": "10",
                "type": "t_uint112"
              },
              {
                "astId": 17257,
                "contract": "contracts/pool/franchised/FranchisedConstantProductPool.sol:FranchisedConstantProductPool",
                "label": "blockTimestampLast",
                "offset": 28,
                "slot": "10",
                "type": "t_uint32"
              },
              {
                "astId": 17263,
                "contract": "contracts/pool/franchised/FranchisedConstantProductPool.sol:FranchisedConstantProductPool",
                "label": "unlocked",
                "offset": 0,
                "slot": "11",
                "type": "t_uint256"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_mapping(t_address,t_mapping(t_address,t_uint256))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_uint256)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_uint112": {
                "encoding": "inplace",
                "label": "uint112",
                "numberOfBytes": "14"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              },
              "t_uint32": {
                "encoding": "inplace",
                "label": "uint32",
                "numberOfBytes": "4"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "DOMAIN_SEPARATOR()": {
                "notice": "The EIP-712 typehash for this contract's domain."
              },
              "PERMIT_TYPEHASH()": {
                "notice": "The EIP-712 typehash for this contract's {permit} struct."
              },
              "allowance(address,address)": {
                "notice": "owner -> spender -> allowance mapping."
              },
              "approve(address,uint256)": {
                "notice": "Approves `amount` from `msg.sender` to be spent by `spender`."
              },
              "balanceOf(address)": {
                "notice": "owner -> balance mapping."
              },
              "getAmountOut(bytes)": {
                "notice": "Simulates a trade and returns the expected output."
              },
              "nonces(address)": {
                "notice": "owner -> nonce mapping used in {permit}."
              },
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Triggers an approval from `owner` to `spender`."
              },
              "transfer(address,uint256)": {
                "notice": "Transfers `amount` tokens from `msg.sender` to `recipient`."
              },
              "transferFrom(address,address,uint256)": {
                "notice": "Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`."
              }
            },
            "notice": "Trident exchange franchised pool template with constant product formula for swapping between an ERC-20 token pair.",
            "version": 1
          }
        }
      },
      "contracts/pool/franchised/FranchisedConstantProductPoolFactory.sol": {
        "FranchisedConstantProductPoolFactory": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "InvalidTokenOrder",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnauthorisedDeployer",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ZeroAddress",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "configAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "startIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "name": "getPools",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "pairPools",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                }
              ],
              "name": "poolsCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Mudit Gupta.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_11730": {
                  "entryPoint": null,
                  "id": 11730,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_18968": {
                  "entryPoint": null,
                  "id": 18968,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 109,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:306:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:290:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b5060405161530e38038061530e83398101604081905261002f9161006d565b806001600160a01b0381166100575760405163d92e233d60e01b815260040160405180910390fd5b60601b6001600160601b0319166080525061009d565b60006020828403121561007f57600080fd5b81516001600160a01b038116811461009657600080fd5b9392505050565b60805160601c6152456100c96000396000818161015a015281816103b1015261056901526152456000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c806371a25812116200005657806371a25812146200012e578063cf58879a1462000154578063f6ab6d99146200017c57600080fd5b8063169c4cef146200008057806327c3cae114620000c15780635bc93d6c14620000d8575b600080fd5b6200009762000091366004620009ac565b620001b5565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b62000097620000d236600462000a57565b62000208565b6200011f620000e93660046200096e565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526020818152604080832093909416825291909152205490565b604051908152602001620000b8565b620001456200013f366004620009f2565b62000428565b604051620000b8919062000b30565b620000977f000000000000000000000000000000000000000000000000000000000000000081565b620000976200018d36600462000a3d565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60006020528260005260406000206020528160005260406000208181548110620001de57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16925083915050565b600080600080600080600080888060200190518101906200022a9190620008d7565b96509650965096509650965096508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16111562000271579495945b6040805173ffffffffffffffffffffffffffffffffffffffff808a1660208301528089169282019290925260608101879052851515608082015281851660a082015290831660c082015281151560e082015261010001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181526002808452606084019092529a506000919081602001602082028036833701905050905087816000815181106200032d576200032d62000ca6565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505086816001815181106200037e576200037e62000ca6565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091018201528a51908b012060405181908c907f000000000000000000000000000000000000000000000000000000000000000090620003dc90620008b3565b620003e992919062000b8c565b8190604051809103906000f59050801580156200040a573d6000803e3d6000fd5b5099506200041a8a838362000551565b505050505050505050919050565b60608167ffffffffffffffff81111562000446576200044662000cd5565b60405190808252806020026020018201604052801562000470578160200160208202803683370190505b50905060005b82811015620005485773ffffffffffffffffffffffffffffffffffffffff808716600090815260208181526040808320938916835292905220620004bb828662000c20565b81548110620004ce57620004ce62000ca6565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168282815181106200050e576200050e62000ca6565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152806200053f8162000c3b565b91505062000476565b50949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614620005c1576040517f03781a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555b6001835103811015620008ad5782816001018151811062000633576200063362000ca6565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1683828151811062000666576200066662000ca6565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1610620006bc576040517f3f06bf8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015b8351811015620008a357600080858481518110620006e357620006e362000ca6565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008583815181106200073c576200073c62000ca6565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409091016000908120805460018101825590825291812090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915584518190869084908110620007cb57620007cb62000ca6565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085848151811062000824576200082462000ca6565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604090910160009081208054600180820183559183529290912090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915501620006c1565b506001016200060e565b50505050565b6144e58062000d2b83390190565b80518015158114620008d257600080fd5b919050565b600080600080600080600060e0888a031215620008f357600080fd5b8751620009008162000d04565b6020890151909750620009138162000d04565b604089015190965094506200092b60608901620008c1565b935060808801516200093d8162000d04565b60a0890151909350620009508162000d04565b91506200096060c08901620008c1565b905092959891949750929550565b600080604083850312156200098257600080fd5b82356200098f8162000d04565b91506020830135620009a18162000d04565b809150509250929050565b600080600060608486031215620009c257600080fd5b8335620009cf8162000d04565b92506020840135620009e18162000d04565b929592945050506040919091013590565b6000806000806080858703121562000a0957600080fd5b843562000a168162000d04565b9350602085013562000a288162000d04565b93969395505050506040820135916060013590565b60006020828403121562000a5057600080fd5b5035919050565b60006020828403121562000a6a57600080fd5b813567ffffffffffffffff8082111562000a8357600080fd5b818401915084601f83011262000a9857600080fd5b81358181111562000aad5762000aad62000cd5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171562000af65762000af662000cd5565b8160405282815287602084870101111562000b1057600080fd5b826020860160208301376000928101602001929092525095945050505050565b6020808252825182820181905260009190848201906040850190845b8181101562000b8057835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162000b4c565b50909695505050505050565b604081526000835180604084015260005b8181101562000bbc576020818701810151606086840101520162000b9d565b8181111562000bcf576000606083860101525b5073ffffffffffffffffffffffffffffffffffffffff93909316602083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b6000821982111562000c365762000c3662000c77565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000c705762000c7062000c77565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811462000d2757600080fd5b5056fe6101806040523480156200001257600080fd5b50604051620044e5380380620044e58339810160408190526200003591620006a6565b604080518082018252601981527f5375736869204672616e636869736564204c5020546f6b656e000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f49bb029ad7c8a58c6232657178b278e20c3bd1f3b0084072e3a97b185e1aac5f918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120608081815250506000806000806000806000888060200190518101906200014291906200060f565b965096509650965096509650965060006001600160a01b0316876001600160a01b03161415620001a85760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064015b60405180910390fd5b856001600160a01b0316876001600160a01b031614156200020c5760405162461bcd60e51b815260206004820152601360248201527f4944454e544943414c5f4144445245535345530000000000000000000000000060448201526064016200019f565b6001600160a01b038716301415620002575760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b60448201526064016200019f565b6001600160a01b038616301415620002a25760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b60448201526064016200019f565b612710851115620002e95760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f535741505f46454560801b60448201526064016200019f565b620003018383836200057560201b6200259b1760201c565b60408051600481526024810182526020810180516001600160e01b03166360a56c0160e11b17905290516000916001600160a01b038b16916200034591906200078d565b600060405180830381855afa9150503d806000811462000382576040519150601f19603f3d011682016040523d82523d6000602084013e62000387565b606091505b5060408051600481526024810182526020810180516001600160e01b0316630605066960e11b1790529051919350600092506001600160a01b038c1691620003d091906200078d565b600060405180830381855afa9150503d80600081146200040d576040519150601f19603f3d011682016040523d82523d6000602084013e62000412565b606091505b5060408051600481526024810182526020810180516001600160e01b0316634da3182760e01b1790529051919350600092506001600160a01b038d16916200045b91906200078d565b600060405180830381855afa9150503d806000811462000498576040519150601f19603f3d011682016040523d82523d6000602084013e6200049d565b606091505b506001600160601b031960608d811b8216610140528c901b166101605260a08a90526127108a900360c0528451909250620004e391508401602090810190850162000773565b6006558151620004fd9083016020908101908401620005e8565b60601b6001600160601b03191660e0528051620005249060209083018101908301620005e8565b6001600160601b0319606091821b811661010052908c901b16610120526001600b5586156200056357600a80546001600160e01b0316600160e01b1790555b5050505050505050505050506200080d565b600080546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790558015620005c0576001805460ff60a01b1916600160a01b1790555b505050565b8051620005d281620007f4565b919050565b80518015158114620005d257600080fd5b600060208284031215620005fb57600080fd5b81516200060881620007f4565b9392505050565b600080600080600080600060e0888a0312156200062b57600080fd5b87516200063881620007f4565b60208901519097506200064b81620007f4565b604089015190965094506200066360608901620005d7565b935060808801516200067581620007f4565b60a08901519093506200068881620007f4565b91506200069860c08901620005d7565b905092959891949750929550565b60008060408385031215620006ba57600080fd5b82516001600160401b0380821115620006d257600080fd5b818501915085601f830112620006e757600080fd5b815181811115620006fc57620006fc620007de565b604051601f8201601f19908116603f01168101908382118183101715620007275762000727620007de565b816040528281528860208487010111156200074157600080fd5b62000754836020830160208801620007ab565b80965050505050506200076a60208401620005c5565b90509250929050565b6000602082840312156200078657600080fd5b5051919050565b60008251620007a1818460208701620007ab565b9190910192915050565b60005b83811015620007c8578181015183820152602001620007ae565b83811115620007d8576000848401525b50505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146200080a57600080fd5b50565b60805160a05160c05160e05160601c6101005160601c6101205160601c6101405160601c6101605160601c613b7c620009696000396000818161069701528181610893015281816109c201528181610a70015281816111310152818161123901528181611493015281816115020152818161174401528181611cc001528181611fc50152818161204c0152612c3801526000818161039a0152818161080f01528181610b5501528181610c8401528181611105015281816111d00152818161143f015281816115e3015281816116d601528181611c3a01528181612085015281816121700152612b390152600081816106700152611b3a015260008181610498015281816128a101528181612a1701528181612afd0152612ce101526000818161034e01526130ef015260006127a30152600081816104bf0152818161338701526133f201526000818161045e01526122c60152613b7c6000f3fe608060405234801561001057600080fd5b50600436106102775760003560e01c80635a3d549311610160578063a69840a8116100d8578063c14ad8021161008c578063d21220a711610071578063d21220a714610692578063d505accf146106b9578063dd62ed3e146106cc57600080fd5b8063c14ad80214610662578063cf58879a1461066b57600080fd5b8063a9059cbb116100bd578063a9059cbb14610617578063af8c09bf1461062a578063bc3377d91461063d57600080fd5b8063a69840a8146105dd578063a8f1f52e1461060457600080fd5b80637464fc3d1161012f5780637ecebe00116101145780637ecebe001461057757806392bc32191461059757806395d89b41146105a157600080fd5b80637464fc3d1461055b5780637ba0e2e71461056457600080fd5b80635a3d54931461050a578063627dd56a1461051357806367e4ac2c1461052657806370a082311461053b57600080fd5b80632a07b6c7116101f3578063499a3c50116101c257806354cf2aeb116101a757806354cf2aeb146104ba578063570ca735146104e15780635909c0d51461050157600080fd5b8063499a3c50146104805780634da318271461049357600080fd5b80632a07b6c7146103f857806330adf81f14610418578063313ce5671461043f5780633644e5151461045957600080fd5b80630c0a0cd21161024a57806318160ddd1161022f57806318160ddd146103bc57806323b872dd146103c557806325a93264146103d857600080fd5b80630c0a0cd2146103495780630dfe16811461039557600080fd5b8063053da1c81461027c57806306fdde03146102a25780630902f1ac146102eb578063095ea7b314610326575b600080fd5b61028f61028a366004613788565b6106f7565b6040519081526020015b60405180910390f35b6102de6040518060400160405280601981526020017f5375736869204672616e636869736564204c5020546f6b656e0000000000000081525081565b6040516102999190613938565b6102f3610d40565b604080516dffffffffffffffffffffffffffff948516815293909216602084015263ffffffff1690820152606001610299565b610339610334366004613659565b610da9565b6040519015158152602001610299565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610299565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b61028f60025481565b6103396103d33660046136b3565b610e22565b6000546103709073ffffffffffffffffffffffffffffffffffffffff1681565b61040b610406366004613788565b610f9d565b60405161029991906138d3565b61028f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610447601281565b60405160ff9091168152602001610299565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b61028f61048e366004613788565b611309565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b6001546103709073ffffffffffffffffffffffffffffffffffffffff1681565b61028f60075481565b61028f60085481565b61028f610521366004613788565b611310565b61052e6116b4565b6040516102999190613879565b61028f6105493660046134a0565b60036020526000908152604090205481565b61028f60095481565b61028f610572366004613788565b6117b3565b61028f6105853660046134a0565b60056020526000908152604090205481565b61059f611ac8565b005b6102de6040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b61028f7f54726964656e743a4672616e636869736564435000000000000000000000000081565b61028f610612366004613788565b611bc3565b610339610625366004613659565b611dab565b61028f610638366004613788565b611e5d565b6001546103399074010000000000000000000000000000000000000000900460ff1681565b61028f60065481565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b61059f6106c73660046136f4565b612233565b61028f6106da366004613685565b600460209081526000928352604080842090915290825290205481565b6000600b5460011461076a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6002600b556000808080806107818789018961350f565b94509450945094509450600160149054906101000a900460ff16156107a9576107a98461263b565b6000806000610807600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610a6e5761088c85846dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff1661279b565b98506108ba7f00000000000000000000000000000000000000000000000000000000000000008a89896127fe565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b1906108f6908790600401613938565b600060405180830381600087803b15801561091057600080fd5b505af1158015610924573d6000803e3d6000fd5b50505050600080610933612af6565b9150915086856dffffffffffffffffffffffffffff16830310156109b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e000000000000000000006044820152606401610761565b6109c08282878787612d6e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610a5f929190918252602082015260400190565b60405180910390a45050610d2c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610b23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e000000000000000000000000006044820152606401610761565b610b4e85836dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff1661279b565b9850610b7c7f00000000000000000000000000000000000000000000000000000000000000008a89896127fe565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b190610bb8908790600401613938565b600060405180830381600087803b158015610bd257600080fd5b505af1158015610be6573d6000803e3d6000fd5b50505050600080610bf5612af6565b9150915086846dffffffffffffffffffffffffffff1682031015610c75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e000000000000000000006044820152606401610761565b610c828282878787612d6e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610d21929190918252602082015260400190565b60405180910390a450505b50506001600b555094979650505050505050565b6000806000610d9e600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250909192565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e119086815260200190565b60405180910390a350600192915050565b60015460009074010000000000000000000000000000000000000000900460ff1615610e5157610e518361263b565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610eee5773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915281208054849290610ee89084906139db565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526003602052604081208054849290610f239084906139db565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260036020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f8b9086815260200190565b60405180910390a35060019392505050565b6060600b5460011461100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b5560008061101f84860186613620565b9150915061102c8261263b565b600080600061108a600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b92509250925060008061109b612af6565b60025430600090815260036020526040902054929450909250906110c087878461306f565b909101906000826110d1868461399e565b6110db9190613963565b90506000836110ea868561399e565b6110f49190613963565b9050611100308461311e565b61112c7f0000000000000000000000000000000000000000000000000000000000000000838d8d6127fe565b6111587f0000000000000000000000000000000000000000000000000000000000000000828d8d6127fe565b8186039550808503945061116f86868b8b8b612d6e565b61118161117c868861399e565b6131b4565b6009556040805160028082526060820190925290816020015b604080518082019091526000808252602082015281526020019060019003908161119a579050509b5060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001838152508c60008151811061122157611221613ab5565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001828152508c60018151811061128a5761128a613ab5565b60209081029190910181019190915260408051848152918201839052810184905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a350506001600b5550979a9950505050505050505050565b6000806000fd5b6000600b5460011461137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b5560008080611393858701876134c4565b600154929550909350915074010000000000000000000000000000000000000000900460ff16156113c7576113c78261263b565b6000806000611425600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250600080611436612af6565b915091506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415611500577f00000000000000000000000000000000000000000000000000000000000000009050866dffffffffffffffffffffffffffff16840391506114f482886dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff1661279b565b9a508a8303925061161c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16146115b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e000000000000000000000000006044820152606401610761565b5050600a546dffffffffffffffffffffffffffff6e01000000000000000000000000000090910481168203907f000000000000000000000000000000000000000000000000000000000000000090611614908390888116908a1661279b565b9a508a840393505b611628818c8b8b6127fe565b6116358484898989612d6e565b8073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062858f604051610d21929190918252602082015260400190565b60408051600280825260608083018452926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061170857611708613ab5565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061177657611776613ab5565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b6000600b54600114611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b556000611834838501856134a0565b905061183f8161263b565b600080600061189d600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092506000806118ae612af6565b60025491935091506118c186868361306f565b0160006118de6dffffffffffffffffffffffffffff8816856139db565b905060006118fc6dffffffffffffffffffffffffffff8816856139db565b905060008061192d84848c6dffffffffffffffffffffffffffff168c6dffffffffffffffffffffffffffff1661332c565b9092509050600061195561194183896139db565b61194b858b6139db565b61117c919061399e565b90508561197c5761196960006103e861342f565b6119756103e8826139db565b9c506119c4565b600061199e61117c6dffffffffffffffffffffffffffff808e16908f1661399e565b905080876119ac82856139db565b6119b6919061399e565b6119c09190613963565b9d50505b8c611a2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e5445440000006044820152606401610761565b611a358c8e61342f565b611a4288888d8d8d612d6e565b611a4f61117c888a61399e565b60095560408051868152602081018690529081018e90528d9073ffffffffffffffffffffffffffffffffffffffff8e169033907ff9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e9060600160405180910390a350506001600b5550999c9b505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc14ad80200000000000000000000000000000000000000000000000000000000179052905160009173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691611b65919061385d565b600060405180830381855afa9150503d8060008114611ba0576040519150601f19603f3d011682016040523d82523d6000602084013e611ba5565b606091505b5091505080806020019051810190611bbd91906137fa565b60065550565b60008080611bd384860186613659565b91509150600080611c33600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b50915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611cbe57611cb783836dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff1661279b565b9450611da1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611d73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e000000000000000000000000006044820152606401610761565b611d9e83826dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff1661279b565b94505b5050505092915050565b60015460009074010000000000000000000000000000000000000000900460ff1615611dda57611dda8361263b565b3360009081526003602052604081208054849290611df99084906139db565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e119086815260200190565b6000600b54600114611ecb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b5560008080611ee0858701876134c4565b925092509250611eef8261263b565b6000806000611f4d600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250600080611f5e612af6565b6002543060009081526003602052604090205492945090925090611f8387878461306f565b90910190600082611f94868461399e565b611f9e9190613963565b9050600083611fad868561399e565b611fb79190613963565b9050611fc3308461311e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614156120835761204682838b6dffffffffffffffffffffffffffff1603838b6dffffffffffffffffffffffffffff160361279b565b016120737f0000000000000000000000000000000000000000000000000000000000000000828d8d6127fe565b9b5050918a90039160008b6121a3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614612138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e0000000000000000000000006044820152606401610761565b61216781828a6dffffffffffffffffffffffffffff1603848c6dffffffffffffffffffffffffffff160361279b565b820191506121977f0000000000000000000000000000000000000000000000000000000000000000838d8d6127fe565b509a50928a9003928a60005b6121b086868b8b8b612d6e565b6121bd61117c868861399e565b600955604080518381526020810183905290810184905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a350506001600b5550989b9a5050505050505050505050565b4284101561229d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610761565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080547f0000000000000000000000000000000000000000000000000000000000000000917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b918761231883613a1e565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016123b99291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612442573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906124bd57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e415455524500000000000000006044820152606401610761565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526004602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556001805492851692909116919091179055801561263657600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790555b505050565b600080546001546040805173ffffffffffffffffffffffffffffffffffffffff928316602482015285831660448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1472c27100000000000000000000000000000000000000000000000000000000179052905191909216916126d89161385d565b600060405180830381855afa9150503d8060008114612713576040519150601f19603f3d011682016040523d82523d6000602084013e612718565b606091505b50915050600081806020019051810190612732919061376b565b905080612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f545f57484954454c495354454400000000000000000000000000000000006044820152606401610761565b6000806127c87f00000000000000000000000000000000000000000000000000000000000000008661399e565b9050806127d76127108661399e565b6127e1919061394b565b6127eb848361399e565b6127f59190613963565b95945050505050565b8015612980576040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260006084830181905260a48084018890528451808503909101815260c490930184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f97da6d300000000000000000000000000000000000000000000000000000000017905292517f0000000000000000000000000000000000000000000000000000000000000000909116916128cd9161385d565b6000604051808303816000865af19150503d806000811461290a576040519150601f19603f3d011682016040523d82523d6000602084013e61290f565b606091505b505090508061297a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f57495448445241575f4641494c454400000000000000000000000000000000006044820152606401610761565b50612af0565b6040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260848083018790528351808403909101815260a490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff18d03cc0000000000000000000000000000000000000000000000000000000017905291516000927f00000000000000000000000000000000000000000000000000000000000000001691612a419161385d565b6000604051808303816000865af19150503d8060008114612a7e576040519150601f19603f3d011682016040523d82523d6000602084013e612a83565b606091505b5050905080612aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610761565b505b50505050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f7888aec7f000000000000000000000000000000000000000000000000000000000000000030604051602401612b8c92919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612bda919061385d565b600060405180830381855afa9150503d8060008114612c15576040519150601f19603f3d011682016040523d82523d6000602084013e612c1a565b606091505b5091505080806020019051810190612c3291906137fa565b604080517f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff90811660248301523060448084019190915283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff7888aec0000000000000000000000000000000000000000000000000000000017905291519295506000927f000000000000000000000000000000000000000000000000000000000000000090921691612d0e919061385d565b600060405180830381855afa9150503d8060008114612d49576040519150601f19603f3d011682016040523d82523d6000602084013e612d4e565b606091505b5091505080806020019051810190612d6691906137fa565b925050509091565b6dffffffffffffffffffffffffffff8511801590612d9a57506dffffffffffffffffffffffffffff8411155b612e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4f564552464c4f570000000000000000000000000000000000000000000000006044820152606401610761565b600a547c0100000000000000000000000000000000000000000000000000000000900463ffffffff16612e8457600a80546dffffffffffffffffffffffffffff8681166e010000000000000000000000000000027fffffffff000000000000000000000000000000000000000000000000000000009092169088161717905561302f565b4263ffffffff80821690831614801590612ead57506dffffffffffffffffffffffffffff841615155b8015612ec857506dffffffffffffffffffffffffffff831615155b15612f8d5781810360006dffffffffffffffffffffffffffff86167bffffffffffffffffffffffffffff0000000000000000000000000000607087901b1681612f1357612f13613a86565b600780549290910463ffffffff851681029092019055905060006dffffffffffffffffffffffffffff8616607088901b7bffffffffffffffffffffffffffff00000000000000000000000000001681612f6e57612f6e613a86565b0490508263ffffffff1681026008600082825401925050819055505050505b600a805463ffffffff9092167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8881166e010000000000000000000000000000027fffffffff00000000000000000000000000000000000000000000000000000000909516908a161793909317929092169190911790555b60408051868152602081018690527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a15050505050565b600954600090801561311657600061309d61117c6dffffffffffffffffffffffffffff80881690891661399e565b905081811115613114576127108160065484846130ba91906139db565b6130c4908861399e565b6130ce919061399e565b6130d89190613963565b6130e29190613963565b92508215613114576131147f00000000000000000000000000000000000000000000000000000000000000008461342f565b505b509392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080548392906131539084906139db565b909155505060028054829003905560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6000816131c357506000919050565b81600170010000000000000000000000000000000082106131e95760809190911c9060401b5b6801000000000000000082106132045760409190911c9060201b5b640100000000821061321b5760209190911c9060101b5b6201000082106132305760109190911c9060081b5b61010082106132445760089190911c9060041b5b601082106132575760049190911c9060021b5b600882106132635760011b5b600181858161327457613274613a86565b048201901c9050600181858161328c5761328c613a86565b048201901c905060018185816132a4576132a4613a86565b048201901c905060018185816132bc576132bc613a86565b048201901c905060018185816132d4576132d4613a86565b048201901c905060018185816132ec576132ec613a86565b048201901c9050600181858161330457613304613a86565b048201901c9050600081858161331c5761331c613a86565b04905080821061311657806127f5565b60008083158061333a575082155b1561334a57506000905080613426565b600084613357858961399e565b6133619190613963565b90508581116133bc57613377612710600261399e565b61338182886139db565b6133ab907f000000000000000000000000000000000000000000000000000000000000000061399e565b6133b59190613963565b9150613424565b6000846133c9878961399e565b6133d39190613963565b90506133e2612710600261399e565b6133ec828a6139db565b613416907f000000000000000000000000000000000000000000000000000000000000000061399e565b6134209190613963565b9350505b505b94509492505050565b8060026000828254613441919061394b565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016131a8565b6000602082840312156134b257600080fd5b81356134bd81613b13565b9392505050565b6000806000606084860312156134d957600080fd5b83356134e481613b13565b925060208401356134f481613b13565b9150604084013561350481613b38565b809150509250925092565b600080600080600060a0868803121561352757600080fd5b853561353281613b13565b9450602086013561354281613b13565b9350604086013561355281613b38565b925060608601359150608086013567ffffffffffffffff8082111561357657600080fd5b818801915088601f83011261358a57600080fd5b81358181111561359c5761359c613ae4565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156135e2576135e2613ae4565b816040528281528b60208487010111156135fb57600080fd5b8260208601602083013760006020848301015280955050505050509295509295909350565b6000806040838503121561363357600080fd5b823561363e81613b13565b9150602083013561364e81613b38565b809150509250929050565b6000806040838503121561366c57600080fd5b823561367781613b13565b946020939093013593505050565b6000806040838503121561369857600080fd5b82356136a381613b13565b9150602083013561364e81613b13565b6000806000606084860312156136c857600080fd5b83356136d381613b13565b925060208401356136e381613b13565b929592945050506040919091013590565b600080600080600080600060e0888a03121561370f57600080fd5b873561371a81613b13565b9650602088013561372a81613b13565b95506040880135945060608801359350608088013560ff8116811461374e57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60006020828403121561377d57600080fd5b81516134bd81613b38565b6000806020838503121561379b57600080fd5b823567ffffffffffffffff808211156137b357600080fd5b818501915085601f8301126137c757600080fd5b8135818111156137d657600080fd5b8660208285010111156137e857600080fd5b60209290920196919550909350505050565b60006020828403121561380c57600080fd5b5051919050565b6000815180845261382b8160208601602086016139f2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161386f8184602087016139f2565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b818110156138c757835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613895565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561392b578151805173ffffffffffffffffffffffffffffffffffffffff1685528601518685015292840192908501906001016138f0565b5091979650505050505050565b6020815260006134bd6020830184613813565b6000821982111561395e5761395e613a57565b500190565b600082613999577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139d6576139d6613a57565b500290565b6000828210156139ed576139ed613a57565b500390565b60005b83811015613a0d5781810151838201526020016139f5565b83811115612af05750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613a5057613a50613a57565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114613b3557600080fd5b50565b8015158114613b3557600080fdfea26469706673582212209f642184248699c158c18322f8dca2de6fe2cc065d00eb82ed365836d516447c64736f6c63430008070033a264697066735822122091da199be0556aa753bf6121932e413031575c8e1b8863adf50d85673b53ec8264736f6c63430008070033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x530E CODESIZE SUB DUP1 PUSH2 0x530E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x6D JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x57 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE POP PUSH2 0x9D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0x5245 PUSH2 0xC9 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x15A ADD MSTORE DUP2 DUP2 PUSH2 0x3B1 ADD MSTORE PUSH2 0x569 ADD MSTORE PUSH2 0x5245 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x71A25812 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x71A25812 EQ PUSH3 0x12E JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH3 0x154 JUMPI DUP1 PUSH4 0xF6AB6D99 EQ PUSH3 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x169C4CEF EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x27C3CAE1 EQ PUSH3 0xC1 JUMPI DUP1 PUSH4 0x5BC93D6C EQ PUSH3 0xD8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x9AC JUMP JUMPDEST PUSH3 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x97 PUSH3 0xD2 CALLDATASIZE PUSH1 0x4 PUSH3 0xA57 JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH3 0x11F PUSH3 0xE9 CALLDATASIZE PUSH1 0x4 PUSH3 0x96E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xB8 JUMP JUMPDEST PUSH3 0x145 PUSH3 0x13F CALLDATASIZE PUSH1 0x4 PUSH3 0x9F2 JUMP JUMPDEST PUSH3 0x428 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xB8 SWAP2 SWAP1 PUSH3 0xB30 JUMP JUMPDEST PUSH3 0x97 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0x97 PUSH3 0x18D CALLDATASIZE PUSH1 0x4 PUSH3 0xA3D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP3 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH3 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP DUP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP9 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x22A SWAP2 SWAP1 PUSH3 0x8D7 JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH3 0x271 JUMPI SWAP5 SWAP6 SWAP5 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE DUP6 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE DUP2 DUP6 AND PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 DUP4 AND PUSH1 0xC0 DUP3 ADD MSTORE DUP2 ISZERO ISZERO PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE PUSH1 0x2 DUP1 DUP5 MSTORE PUSH1 0x60 DUP5 ADD SWAP1 SWAP3 MSTORE SWAP11 POP PUSH1 0x0 SWAP2 SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP8 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH3 0x32D JUMPI PUSH3 0x32D PUSH3 0xCA6 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP7 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH3 0x37E JUMPI PUSH3 0x37E PUSH3 0xCA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE DUP11 MLOAD SWAP1 DUP12 ADD KECCAK256 PUSH1 0x40 MLOAD DUP2 SWAP1 DUP13 SWAP1 PUSH32 0x0 SWAP1 PUSH3 0x3DC SWAP1 PUSH3 0x8B3 JUMP JUMPDEST PUSH3 0x3E9 SWAP3 SWAP2 SWAP1 PUSH3 0xB8C JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH3 0x40A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP10 POP PUSH3 0x41A DUP11 DUP4 DUP4 PUSH3 0x551 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x446 JUMPI PUSH3 0x446 PUSH3 0xCD5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x470 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x548 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH3 0x4BB DUP3 DUP7 PUSH3 0xC20 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH3 0x4CE JUMPI PUSH3 0x4CE PUSH3 0xCA6 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x50E JUMPI PUSH3 0x50E PUSH3 0xCA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x53F DUP2 PUSH3 0xC3B JUMP JUMPDEST SWAP2 POP POP PUSH3 0x476 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH3 0x5C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3781A5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH3 0x8AD JUMPI DUP3 DUP2 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH3 0x633 JUMPI PUSH3 0x633 PUSH3 0xCA6 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x666 JUMPI PUSH3 0x666 PUSH3 0xCA6 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH3 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x3F06BF8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH3 0x8A3 JUMPI PUSH1 0x0 DUP1 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x6E3 JUMPI PUSH3 0x6E3 PUSH3 0xCA6 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x73C JUMPI PUSH3 0x73C PUSH3 0xCA6 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP3 MSTORE SWAP2 DUP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP5 MLOAD DUP2 SWAP1 DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH3 0x7CB JUMPI PUSH3 0x7CB PUSH3 0xCA6 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x824 JUMPI PUSH3 0x824 PUSH3 0xCA6 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE SWAP2 DUP4 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE ADD PUSH3 0x6C1 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH3 0x60E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x44E5 DUP1 PUSH3 0xD2B DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x8D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x8F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 MLOAD PUSH3 0x900 DUP2 PUSH3 0xD04 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH3 0x913 DUP2 PUSH3 0xD04 JUMP JUMPDEST PUSH1 0x40 DUP10 ADD MLOAD SWAP1 SWAP7 POP SWAP5 POP PUSH3 0x92B PUSH1 0x60 DUP10 ADD PUSH3 0x8C1 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD MLOAD PUSH3 0x93D DUP2 PUSH3 0xD04 JUMP JUMPDEST PUSH1 0xA0 DUP10 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x950 DUP2 PUSH3 0xD04 JUMP JUMPDEST SWAP2 POP PUSH3 0x960 PUSH1 0xC0 DUP10 ADD PUSH3 0x8C1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x982 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH3 0x98F DUP2 PUSH3 0xD04 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH3 0x9A1 DUP2 PUSH3 0xD04 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x9C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH3 0x9CF DUP2 PUSH3 0xD04 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH3 0x9E1 DUP2 PUSH3 0xD04 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0xA09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH3 0xA16 DUP2 PUSH3 0xD04 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH3 0xA28 DUP2 PUSH3 0xD04 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0xA83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xAAD JUMPI PUSH3 0xAAD PUSH3 0xCD5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xAF6 JUMPI PUSH3 0xAF6 PUSH3 0xCD5 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xB10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xB80 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0xB4C JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xBBC JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH3 0xB9D JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0xBCF JUMPI PUSH1 0x0 PUSH1 0x60 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD PUSH1 0x60 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0xC36 JUMPI PUSH3 0xC36 PUSH3 0xC77 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH3 0xC70 JUMPI PUSH3 0xC70 PUSH3 0xC77 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0xD27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH2 0x180 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x44E5 CODESIZE SUB DUP1 PUSH3 0x44E5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x6A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x5375736869204672616E636869736564204C5020546F6B656E00000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x49BB029AD7C8A58C6232657178B278E20C3BD1F3B0084072E3A97B185E1AAC5F SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x80 DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP9 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x142 SWAP2 SWAP1 PUSH3 0x60F JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A45524F5F41444452455353 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x20C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4944454E544943414C5F41444452455353455300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND ADDRESS EQ ISZERO PUSH3 0x257 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FAA27A5A2A7 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ADDRESS EQ ISZERO PUSH3 0x2A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FAA27A5A2A7 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST PUSH2 0x2710 DUP6 GT ISZERO PUSH3 0x2E9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x494E56414C49445F535741505F464545 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST PUSH3 0x301 DUP4 DUP4 DUP4 PUSH3 0x575 PUSH1 0x20 SHL PUSH3 0x259B OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x60A56C01 PUSH1 0xE1 SHL OR SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH3 0x345 SWAP2 SWAP1 PUSH3 0x78D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x382 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x387 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6050669 PUSH1 0xE1 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP2 PUSH3 0x3D0 SWAP2 SWAP1 PUSH3 0x78D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x40D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x412 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x4DA31827 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP2 PUSH3 0x45B SWAP2 SWAP1 PUSH3 0x78D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x498 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x49D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP14 DUP2 SHL DUP3 AND PUSH2 0x140 MSTORE DUP13 SWAP1 SHL AND PUSH2 0x160 MSTORE PUSH1 0xA0 DUP11 SWAP1 MSTORE PUSH2 0x2710 DUP11 SWAP1 SUB PUSH1 0xC0 MSTORE DUP5 MLOAD SWAP1 SWAP3 POP PUSH3 0x4E3 SWAP2 POP DUP5 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP6 ADD PUSH3 0x773 JUMP JUMPDEST PUSH1 0x6 SSTORE DUP2 MLOAD PUSH3 0x4FD SWAP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP5 ADD PUSH3 0x5E8 JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xE0 MSTORE DUP1 MLOAD PUSH3 0x524 SWAP1 PUSH1 0x20 SWAP1 DUP4 ADD DUP2 ADD SWAP1 DUP4 ADD PUSH3 0x5E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH2 0x100 MSTORE SWAP1 DUP13 SWAP1 SHL AND PUSH2 0x120 MSTORE PUSH1 0x1 PUSH1 0xB SSTORE DUP7 ISZERO PUSH3 0x563 JUMPI PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0xE0 SHL OR SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP PUSH3 0x80D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH3 0x5C0 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x5D2 DUP2 PUSH3 0x7F4 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x5D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x608 DUP2 PUSH3 0x7F4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x62B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 MLOAD PUSH3 0x638 DUP2 PUSH3 0x7F4 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH3 0x64B DUP2 PUSH3 0x7F4 JUMP JUMPDEST PUSH1 0x40 DUP10 ADD MLOAD SWAP1 SWAP7 POP SWAP5 POP PUSH3 0x663 PUSH1 0x60 DUP10 ADD PUSH3 0x5D7 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD MLOAD PUSH3 0x675 DUP2 PUSH3 0x7F4 JUMP JUMPDEST PUSH1 0xA0 DUP10 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x688 DUP2 PUSH3 0x7F4 JUMP JUMPDEST SWAP2 POP PUSH3 0x698 PUSH1 0xC0 DUP10 ADD PUSH3 0x5D7 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x6BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x6D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x6FC JUMPI PUSH3 0x6FC PUSH3 0x7DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x727 JUMPI PUSH3 0x727 PUSH3 0x7DE JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x741 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x754 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH3 0x7AB JUMP JUMPDEST DUP1 SWAP7 POP POP POP POP POP POP PUSH3 0x76A PUSH1 0x20 DUP5 ADD PUSH3 0x5C5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x786 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x7A1 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x7AB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x7C8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x7AE JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x7D8 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x80A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x160 MLOAD PUSH1 0x60 SHR PUSH2 0x3B7C PUSH3 0x969 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x697 ADD MSTORE DUP2 DUP2 PUSH2 0x893 ADD MSTORE DUP2 DUP2 PUSH2 0x9C2 ADD MSTORE DUP2 DUP2 PUSH2 0xA70 ADD MSTORE DUP2 DUP2 PUSH2 0x1131 ADD MSTORE DUP2 DUP2 PUSH2 0x1239 ADD MSTORE DUP2 DUP2 PUSH2 0x1493 ADD MSTORE DUP2 DUP2 PUSH2 0x1502 ADD MSTORE DUP2 DUP2 PUSH2 0x1744 ADD MSTORE DUP2 DUP2 PUSH2 0x1CC0 ADD MSTORE DUP2 DUP2 PUSH2 0x1FC5 ADD MSTORE DUP2 DUP2 PUSH2 0x204C ADD MSTORE PUSH2 0x2C38 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x39A ADD MSTORE DUP2 DUP2 PUSH2 0x80F ADD MSTORE DUP2 DUP2 PUSH2 0xB55 ADD MSTORE DUP2 DUP2 PUSH2 0xC84 ADD MSTORE DUP2 DUP2 PUSH2 0x1105 ADD MSTORE DUP2 DUP2 PUSH2 0x11D0 ADD MSTORE DUP2 DUP2 PUSH2 0x143F ADD MSTORE DUP2 DUP2 PUSH2 0x15E3 ADD MSTORE DUP2 DUP2 PUSH2 0x16D6 ADD MSTORE DUP2 DUP2 PUSH2 0x1C3A ADD MSTORE DUP2 DUP2 PUSH2 0x2085 ADD MSTORE DUP2 DUP2 PUSH2 0x2170 ADD MSTORE PUSH2 0x2B39 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x670 ADD MSTORE PUSH2 0x1B3A ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x498 ADD MSTORE DUP2 DUP2 PUSH2 0x28A1 ADD MSTORE DUP2 DUP2 PUSH2 0x2A17 ADD MSTORE DUP2 DUP2 PUSH2 0x2AFD ADD MSTORE PUSH2 0x2CE1 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x34E ADD MSTORE PUSH2 0x30EF ADD MSTORE PUSH1 0x0 PUSH2 0x27A3 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x4BF ADD MSTORE DUP2 DUP2 PUSH2 0x3387 ADD MSTORE PUSH2 0x33F2 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x45E ADD MSTORE PUSH2 0x22C6 ADD MSTORE PUSH2 0x3B7C PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x277 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5A3D5493 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0xA69840A8 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xC14AD802 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x692 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x662 JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x66B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA9059CBB GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x617 JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x62A JUMPI DUP1 PUSH4 0xBC3377D9 EQ PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x5DD JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7464FC3D GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x577 JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x597 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x55B JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x564 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x627DD56A EQ PUSH2 0x513 JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x526 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x53B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x54CF2AEB GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x570CA735 EQ PUSH2 0x4E1 JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x493 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x3F8 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x418 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x43F JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x24A JUMPI DUP1 PUSH4 0x18160DDD GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3BC JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3C5 JUMPI DUP1 PUSH4 0x25A93264 EQ PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x326 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x28F PUSH2 0x28A CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x6F7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204672616E636869736564204C5020546F6B656E00000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x3938 JUMP JUMPDEST PUSH2 0x2F3 PUSH2 0xD40 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x339 PUSH2 0x334 CALLDATASIZE PUSH1 0x4 PUSH2 0x3659 JUMP JUMPDEST PUSH2 0xDA9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x339 PUSH2 0x3D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x36B3 JUMP JUMPDEST PUSH2 0xE22 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x370 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x40B PUSH2 0x406 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0xF9D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x38D3 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x48E CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x370 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x521 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x1310 JUMP JUMPDEST PUSH2 0x52E PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x3879 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x549 CALLDATASIZE PUSH1 0x4 PUSH2 0x34A0 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x572 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x17B3 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x585 CALLDATASIZE PUSH1 0x4 PUSH2 0x34A0 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x59F PUSH2 0x1AC8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x54726964656E743A4672616E6368697365644350000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x612 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x1BC3 JUMP JUMPDEST PUSH2 0x339 PUSH2 0x625 CALLDATASIZE PUSH1 0x4 PUSH2 0x3659 JUMP JUMPDEST PUSH2 0x1DAB JUMP JUMPDEST PUSH2 0x28F PUSH2 0x638 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x1E5D JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x339 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x59F PUSH2 0x6C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x36F4 JUMP JUMPDEST PUSH2 0x2233 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x6DA CALLDATASIZE PUSH1 0x4 PUSH2 0x3685 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x76A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x781 DUP8 DUP10 ADD DUP10 PUSH2 0x350F JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x7A9 JUMPI PUSH2 0x7A9 DUP5 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x807 PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xA6E JUMPI PUSH2 0x88C DUP6 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP9 POP PUSH2 0x8BA PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x27FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x8F6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3938 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x924 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 PUSH2 0x933 PUSH2 0x2AF6 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 SUB LT ISZERO PUSH2 0x9B3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0x9C0 DUP3 DUP3 DUP8 DUP8 DUP8 PUSH2 0x2D6E JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP11 DUP16 PUSH1 0x40 MLOAD PUSH2 0xA5F SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH2 0xD2C JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB23 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0xB4E DUP6 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP9 POP PUSH2 0xB7C PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x27FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0xBB8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3938 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBE6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 PUSH2 0xBF5 PUSH2 0x2AF6 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 SUB LT ISZERO PUSH2 0xC75 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0xC82 DUP3 DUP3 DUP8 DUP8 DUP8 PUSH2 0x2D6E JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP11 DUP16 PUSH1 0x40 MLOAD PUSH2 0xD21 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMPDEST POP POP PUSH1 0x1 PUSH1 0xB SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xD9E PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xE11 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xE51 JUMPI PUSH2 0xE51 DUP4 PUSH2 0x263B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xEEE JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xEE8 SWAP1 DUP5 SWAP1 PUSH2 0x39DB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xF23 SWAP1 DUP5 SWAP1 PUSH2 0x39DB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xF8B SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x100B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 DUP1 PUSH2 0x101F DUP5 DUP7 ADD DUP7 PUSH2 0x3620 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x102C DUP3 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x108A PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x109B PUSH2 0x2AF6 JUMP JUMPDEST PUSH1 0x2 SLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH2 0x10C0 DUP8 DUP8 DUP5 PUSH2 0x306F JUMP JUMPDEST SWAP1 SWAP2 ADD SWAP1 PUSH1 0x0 DUP3 PUSH2 0x10D1 DUP7 DUP5 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x10DB SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0x10EA DUP7 DUP6 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x10F4 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH2 0x1100 ADDRESS DUP5 PUSH2 0x311E JUMP JUMPDEST PUSH2 0x112C PUSH32 0x0 DUP4 DUP14 DUP14 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0x1158 PUSH32 0x0 DUP3 DUP14 DUP14 PUSH2 0x27FE JUMP JUMPDEST DUP2 DUP7 SUB SWAP6 POP DUP1 DUP6 SUB SWAP5 POP PUSH2 0x116F DUP7 DUP7 DUP12 DUP12 DUP12 PUSH2 0x2D6E JUMP JUMPDEST PUSH2 0x1181 PUSH2 0x117C DUP7 DUP9 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x31B4 JUMP JUMPDEST PUSH1 0x9 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x119A JUMPI SWAP1 POP POP SWAP12 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP13 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1221 JUMPI PUSH2 0x1221 PUSH2 0x3AB5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP13 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x128A JUMPI PUSH2 0x128A PUSH2 0x3AB5 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP2 DUP3 ADD DUP4 SWAP1 MSTORE DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xB SSTORE POP SWAP8 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x137E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x1393 DUP6 DUP8 ADD DUP8 PUSH2 0x34C4 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x13C7 JUMPI PUSH2 0x13C7 DUP3 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1425 PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x1436 PUSH2 0x2AF6 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1500 JUMPI PUSH32 0x0 SWAP1 POP DUP7 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 SUB SWAP2 POP PUSH2 0x14F4 DUP3 DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP11 POP DUP11 DUP4 SUB SWAP3 POP PUSH2 0x161C JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x15B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST POP POP PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH15 0x10000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 AND DUP3 SUB SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x1614 SWAP1 DUP4 SWAP1 DUP9 DUP2 AND SWAP1 DUP11 AND PUSH2 0x279B JUMP JUMPDEST SWAP11 POP DUP11 DUP5 SUB SWAP4 POP JUMPDEST PUSH2 0x1628 DUP2 DUP13 DUP12 DUP12 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0x1635 DUP5 DUP5 DUP10 DUP10 DUP10 PUSH2 0x2D6E JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP6 DUP16 PUSH1 0x40 MLOAD PUSH2 0xD21 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1708 JUMPI PUSH2 0x1708 PUSH2 0x3AB5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1776 JUMPI PUSH2 0x1776 PUSH2 0x3AB5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x1821 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 PUSH2 0x1834 DUP4 DUP6 ADD DUP6 PUSH2 0x34A0 JUMP JUMPDEST SWAP1 POP PUSH2 0x183F DUP2 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x189D PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x18AE PUSH2 0x2AF6 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x18C1 DUP7 DUP7 DUP4 PUSH2 0x306F JUMP JUMPDEST ADD PUSH1 0x0 PUSH2 0x18DE PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x39DB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x18FC PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x39DB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x192D DUP5 DUP5 DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x332C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x1955 PUSH2 0x1941 DUP4 DUP10 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x194B DUP6 DUP12 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x117C SWAP2 SWAP1 PUSH2 0x399E JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x197C JUMPI PUSH2 0x1969 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x342F JUMP JUMPDEST PUSH2 0x1975 PUSH2 0x3E8 DUP3 PUSH2 0x39DB JUMP JUMPDEST SWAP13 POP PUSH2 0x19C4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x199E PUSH2 0x117C PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP15 AND SWAP1 DUP16 AND PUSH2 0x399E JUMP JUMPDEST SWAP1 POP DUP1 DUP8 PUSH2 0x19AC DUP3 DUP6 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x19B6 SWAP2 SWAP1 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x19C0 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP14 POP POP JUMPDEST DUP13 PUSH2 0x1A2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F4C49515549444954595F4D494E544544000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0x1A35 DUP13 DUP15 PUSH2 0x342F JUMP JUMPDEST PUSH2 0x1A42 DUP9 DUP9 DUP14 DUP14 DUP14 PUSH2 0x2D6E JUMP JUMPDEST PUSH2 0x1A4F PUSH2 0x117C DUP9 DUP11 PUSH2 0x399E JUMP JUMPDEST PUSH1 0x9 SSTORE PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 DUP2 ADD DUP15 SWAP1 MSTORE DUP14 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP1 CALLER SWAP1 PUSH32 0xF9C32FBC56FF04F32A233EBC26E388564223745E28ABD8D0781DD906537F563E SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xB SSTORE POP SWAP10 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC14AD80200000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH2 0x1B65 SWAP2 SWAP1 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1BA0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1BA5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1BBD SWAP2 SWAP1 PUSH2 0x37FA JUMP JUMPDEST PUSH1 0x6 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x1BD3 DUP5 DUP7 ADD DUP7 PUSH2 0x3659 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1C33 PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1CBE JUMPI PUSH2 0x1CB7 DUP4 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP5 POP PUSH2 0x1DA1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1D73 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0x1D9E DUP4 DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP5 POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1DDA JUMPI PUSH2 0x1DDA DUP4 PUSH2 0x263B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x1DF9 SWAP1 DUP5 SWAP1 PUSH2 0x39DB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xE11 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x1ECB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x1EE0 DUP6 DUP8 ADD DUP8 PUSH2 0x34C4 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x1EEF DUP3 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1F4D PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x1F5E PUSH2 0x2AF6 JUMP JUMPDEST PUSH1 0x2 SLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH2 0x1F83 DUP8 DUP8 DUP5 PUSH2 0x306F JUMP JUMPDEST SWAP1 SWAP2 ADD SWAP1 PUSH1 0x0 DUP3 PUSH2 0x1F94 DUP7 DUP5 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x1F9E SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0x1FAD DUP7 DUP6 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x1FB7 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH2 0x1FC3 ADDRESS DUP5 PUSH2 0x311E JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2083 JUMPI PUSH2 0x2046 DUP3 DUP4 DUP12 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 DUP12 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x279B JUMP JUMPDEST ADD PUSH2 0x2073 PUSH32 0x0 DUP3 DUP14 DUP14 PUSH2 0x27FE JUMP JUMPDEST SWAP12 POP POP SWAP2 DUP11 SWAP1 SUB SWAP2 PUSH1 0x0 DUP12 PUSH2 0x21A3 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2138 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0x2167 DUP2 DUP3 DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP5 DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x279B JUMP JUMPDEST DUP3 ADD SWAP2 POP PUSH2 0x2197 PUSH32 0x0 DUP4 DUP14 DUP14 PUSH2 0x27FE JUMP JUMPDEST POP SWAP11 POP SWAP3 DUP11 SWAP1 SUB SWAP3 DUP11 PUSH1 0x0 JUMPDEST PUSH2 0x21B0 DUP7 DUP7 DUP12 DUP12 DUP12 PUSH2 0x2D6E JUMP JUMPDEST PUSH2 0x21BD PUSH2 0x117C DUP7 DUP9 PUSH2 0x399E JUMP JUMPDEST PUSH1 0x9 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xB SSTORE POP SWAP9 SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x229D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x0 SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP8 PUSH2 0x2318 DUP4 PUSH2 0x3A1E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x23B9 SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2442 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x24BD JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2523 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x2636 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE DUP6 DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1472C27100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH2 0x26D8 SWAP2 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2713 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2718 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2732 SWAP2 SWAP1 PUSH2 0x376B JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2636 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F57484954454C49535445440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x27C8 PUSH32 0x0 DUP7 PUSH2 0x399E JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x27D7 PUSH2 0x2710 DUP7 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x27E1 SWAP2 SWAP1 PUSH2 0x394B JUMP JUMPDEST PUSH2 0x27EB DUP5 DUP4 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x27F5 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2980 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xA4 DUP1 DUP5 ADD DUP9 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC4 SWAP1 SWAP4 ADD DUP5 MSTORE PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP3 MLOAD PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH2 0x28CD SWAP2 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x290A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x290F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x297A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57495448445241575F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST POP PUSH2 0x2AF0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP1 DUP4 ADD DUP8 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xA4 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 PUSH32 0x0 AND SWAP2 PUSH2 0x2A41 SWAP2 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2A7E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2A83 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2AEE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF7888AEC PUSH32 0x0 ADDRESS PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2B8C SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x2BDA SWAP2 SWAP1 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2C15 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2C1A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2C32 SWAP2 SWAP1 PUSH2 0x37FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP6 POP PUSH1 0x0 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH2 0x2D0E SWAP2 SWAP1 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2D49 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2D4E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2D66 SWAP2 SWAP1 PUSH2 0x37FA JUMP JUMPDEST SWAP3 POP POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 GT DUP1 ISZERO SWAP1 PUSH2 0x2D9A JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT ISZERO JUMPDEST PUSH2 0x2E00 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564552464C4F57000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH2 0x2E84 JUMPI PUSH1 0xA DUP1 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH15 0x10000000000000000000000000000 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP1 DUP9 AND OR OR SWAP1 SSTORE PUSH2 0x302F JUMP JUMPDEST TIMESTAMP PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP1 DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2EAD JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x2EC8 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2F8D JUMPI DUP2 DUP2 SUB PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 PUSH1 0x70 DUP8 SWAP1 SHL AND DUP2 PUSH2 0x2F13 JUMPI PUSH2 0x2F13 PUSH2 0x3A86 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF DUP6 AND DUP2 MUL SWAP1 SWAP3 ADD SWAP1 SSTORE SWAP1 POP PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x70 DUP9 SWAP1 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND DUP2 PUSH2 0x2F6E JUMPI PUSH2 0x2F6E PUSH2 0x3A86 JUMP JUMPDEST DIV SWAP1 POP DUP3 PUSH4 0xFFFFFFFF AND DUP2 MUL PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH15 0x10000000000000000000000000000 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP1 DUP11 AND OR SWAP4 SWAP1 SWAP4 OR SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH32 0xCF2AA50876CDFBB541206F89AF0EE78D44A2ABF8D328E37FA4917F982149848A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x0 SWAP1 DUP1 ISZERO PUSH2 0x3116 JUMPI PUSH1 0x0 PUSH2 0x309D PUSH2 0x117C PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND SWAP1 DUP10 AND PUSH2 0x399E JUMP JUMPDEST SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x3114 JUMPI PUSH2 0x2710 DUP2 PUSH1 0x6 SLOAD DUP5 DUP5 PUSH2 0x30BA SWAP2 SWAP1 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x30C4 SWAP1 DUP9 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x30CE SWAP2 SWAP1 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x30D8 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST PUSH2 0x30E2 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP3 POP DUP3 ISZERO PUSH2 0x3114 JUMPI PUSH2 0x3114 PUSH32 0x0 DUP5 PUSH2 0x342F JUMP JUMPDEST POP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x3153 SWAP1 DUP5 SWAP1 PUSH2 0x39DB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x31C3 JUMPI POP PUSH1 0x0 SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x31E9 JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x3204 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x321B JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x3230 JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x3244 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x3257 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0x3263 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3274 JUMPI PUSH2 0x3274 PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x328C JUMPI PUSH2 0x328C PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x32A4 JUMPI PUSH2 0x32A4 PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x32BC JUMPI PUSH2 0x32BC PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x32D4 JUMPI PUSH2 0x32D4 PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x32EC JUMPI PUSH2 0x32EC PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3304 JUMPI PUSH2 0x3304 PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x331C JUMPI PUSH2 0x331C PUSH2 0x3A86 JUMP JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x3116 JUMPI DUP1 PUSH2 0x27F5 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 ISZERO DUP1 PUSH2 0x333A JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x334A JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x3426 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x3357 DUP6 DUP10 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x3361 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 GT PUSH2 0x33BC JUMPI PUSH2 0x3377 PUSH2 0x2710 PUSH1 0x2 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x3381 DUP3 DUP9 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x33AB SWAP1 PUSH32 0x0 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x33B5 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP2 POP PUSH2 0x3424 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x33C9 DUP8 DUP10 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x33D3 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH2 0x33E2 PUSH2 0x2710 PUSH1 0x2 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x33EC DUP3 DUP11 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x3416 SWAP1 PUSH32 0x0 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x3420 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP4 POP POP JUMPDEST POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3441 SWAP2 SWAP1 PUSH2 0x394B JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x31A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x34B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x34BD DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x34D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x34E4 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x34F4 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x3504 DUP2 PUSH2 0x3B38 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3527 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3532 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3542 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x3552 DUP2 PUSH2 0x3B38 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x358A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x359C JUMPI PUSH2 0x359C PUSH2 0x3AE4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x35E2 JUMPI PUSH2 0x35E2 PUSH2 0x3AE4 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP12 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x35FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x363E DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x364E DUP2 PUSH2 0x3B38 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x366C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3677 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3698 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x36A3 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x364E DUP2 PUSH2 0x3B13 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x36C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x36D3 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x36E3 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x370F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x371A DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x372A DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x374E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x377D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x34BD DUP2 PUSH2 0x3B38 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x379B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x37B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x37C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x37D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x37E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x380C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x382B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x39F2 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x386F DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x39F2 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x38C7 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3895 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x392B JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x38F0 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x34BD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3813 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x395E JUMPI PUSH2 0x395E PUSH2 0x3A57 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3999 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x39D6 JUMPI PUSH2 0x39D6 PUSH2 0x3A57 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x39ED JUMPI PUSH2 0x39ED PUSH2 0x3A57 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3A0D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x39F5 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2AF0 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x3A50 JUMPI PUSH2 0x3A50 PUSH2 0x3A57 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3B35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3B35 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP16 PUSH5 0x2184248699 0xC1 PC 0xC1 DUP4 0x22 0xF8 0xDC LOG2 0xDE PUSH16 0xE2CC065D00EB82ED365836D516447C64 PUSH20 0x6F6C63430008070033A264697066735822122091 0xDA NOT SWAP12 0xE0 SSTORE PUSH11 0xA753BF6121932E41303157 0x5C DUP15 SHL DUP9 PUSH4 0xADF50D85 PUSH8 0x3B53EC8264736F6C PUSH4 0x43000807 STOP CALLER ",
              "sourceMap": "280:1119:53:-:0;;;348:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;398:15;-1:-1:-1;;;;;634:29:44;;630:55;;672:13;;-1:-1:-1;;;672:13:44;;;;;;;;;;;630:55;695:32;;-1:-1:-1;;;;;;695:32:44;;;-1:-1:-1;280:1119:53;;14:290:64;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:64;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:64:o;:::-;280:1119:53;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_registerPool_11818": {
                  "entryPoint": 1361,
                  "id": 11818,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@configAddress_11692": {
                  "entryPoint": null,
                  "id": 11692,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@deployPool_19085": {
                  "entryPoint": 520,
                  "id": 19085,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getPools_11886": {
                  "entryPoint": 1064,
                  "id": 11886,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@masterDeployer_11681": {
                  "entryPoint": null,
                  "id": 11681,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@poolsCount_11837": {
                  "entryPoint": null,
                  "id": 11837,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@pools_11688": {
                  "entryPoint": 437,
                  "id": 11688,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_bool_fromMemory": {
                  "entryPoint": 2241,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_uint256t_boolt_address_payablet_address_payablet_bool_fromMemory": {
                  "entryPoint": 2263,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 7
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 2414,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 2476,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256": {
                  "entryPoint": 2546,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 2621,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_memory_ptr": {
                  "entryPoint": 2647,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_bool_t_address_t_address_t_bool__to_t_address_t_address_t_uint256_t_bool_t_address_t_address_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 8,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 2864,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed": {
                  "entryPoint": 2956,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 3104,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 3131,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 3191,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 3238,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 3285,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 3332,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:7298:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "71:107:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "81:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "96:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "90:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "90:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "81:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "156:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "165:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "168:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "158:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "158:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "158:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "146:5:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "139:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "139:13:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "132:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "132:21:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "122:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "122:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "115:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "115:40:64"
                              },
                              "nodeType": "YulIf",
                              "src": "112:60:64"
                            }
                          ]
                        },
                        "name": "abi_decode_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "50:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "61:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:164:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "392:699:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "439:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "448:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "451:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "441:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "441:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "441:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "413:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "422:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "409:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "409:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "434:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "405:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "405:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "402:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "464:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "483:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "477:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "477:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "468:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "527:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "502:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "502:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "502:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "542:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "552:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "542:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "566:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "591:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "602:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "587:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "587:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "581:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "581:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "570:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "640:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "615:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "615:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "615:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "657:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "667:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "657:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "683:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "703:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "714:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "699:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "699:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "693:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "693:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "683:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "727:56:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "768:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "779:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "764:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "764:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bool_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "737:26:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "737:46:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "727:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "792:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "817:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "828:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "813:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "813:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "807:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "807:26:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "796:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "867:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "842:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "842:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "842:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "884:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "894:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "884:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "910:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "935:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "946:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "931:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "931:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "925:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "925:26:64"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "914:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "985:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "960:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "960:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "960:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1002:17:64",
                              "value": {
                                "name": "value_3",
                                "nodeType": "YulIdentifier",
                                "src": "1012:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "1002:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1028:57:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1069:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1080:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1065:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1065:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bool_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1038:26:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1038:47:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1028:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_uint256t_boolt_address_payablet_address_payablet_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "310:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "321:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "333:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "341:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "349:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "357:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "365:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "373:6:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "381:6:64",
                            "type": ""
                          }
                        ],
                        "src": "183:908:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1183:301:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1229:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1238:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1241:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1231:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1231:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1231:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1204:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1213:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1200:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1200:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1225:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1196:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1196:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1193:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1254:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1280:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1267:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1267:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1258:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1324:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1299:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1299:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1299:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1339:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1349:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1339:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1363:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1395:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1406:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1391:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1391:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1378:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1378:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1367:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1444:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1419:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1419:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1419:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1461:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1471:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1461:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1141:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1152:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1164:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1172:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1096:388:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1593:352:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1639:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1648:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1651:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1641:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1641:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1641:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1614:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1623:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1610:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1610:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1635:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1606:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1606:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1603:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1664:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1690:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1677:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1677:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1668:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1734:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1709:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1709:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1709:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1749:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1759:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1749:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1773:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1805:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1816:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1801:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1801:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1788:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1788:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1777:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1854:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1829:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1829:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1829:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1871:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1881:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1871:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1897:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1924:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1935:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1920:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1920:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1907:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1907:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1897:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1543:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1554:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1566:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1574:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1582:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1489:456:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2071:404:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2118:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2127:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2130:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2120:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2120:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2120:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2092:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2101:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2088:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2088:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2113:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2084:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2084:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2081:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2143:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2169:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2156:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2156:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2147:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2213:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2188:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2188:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2188:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2228:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2238:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2228:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2252:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2284:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2295:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2280:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2280:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2267:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2267:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2256:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2333:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2308:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2308:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2308:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2350:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "2360:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2350:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2376:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2403:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2414:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2399:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2399:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2386:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2386:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2376:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2427:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2454:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2465:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2450:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2450:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2437:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2437:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2427:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2013:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2024:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2036:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2044:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2052:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2060:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1950:525:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2550:110:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2596:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2605:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2608:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2598:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2598:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2598:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2571:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2580:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2567:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2567:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2592:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2563:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2563:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2560:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2621:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2644:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2631:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2631:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2621:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2516:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2527:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2539:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2480:180:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2744:901:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2790:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2799:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2802:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2792:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2792:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2792:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2765:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2774:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2761:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2761:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2786:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2757:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2757:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2754:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2815:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2842:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2829:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2829:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2819:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2861:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2871:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2865:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2916:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2925:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2928:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2918:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2918:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2918:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2904:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2912:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2901:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2901:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2898:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2941:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2955:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2966:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2951:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2951:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2945:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3021:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3030:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3033:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3023:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3023:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3023:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "3000:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3004:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2996:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2996:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3011:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2992:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2992:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2985:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2985:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2982:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3046:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3069:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3056:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3056:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "3050:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3095:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "3097:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3097:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3097:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3087:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3091:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3084:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3084:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3081:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3126:76:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3136:66:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "3130:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3211:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3231:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3225:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3225:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "3215:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3243:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3265:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3289:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3293:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3285:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3285:13:64"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "3300:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "3281:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3281:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3305:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3277:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3277:31:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "3310:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3273:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3273:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3261:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3261:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "3247:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3373:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "3375:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3375:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3375:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3332:10:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3344:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3329:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3329:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3352:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3364:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3349:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3349:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "3326:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3326:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3323:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3411:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3415:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3404:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3404:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3404:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3442:6:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3450:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3435:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3435:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3435:18:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3499:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3508:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3511:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3501:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3501:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3501:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "3476:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3480:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3472:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3472:11:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3485:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3468:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3468:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3490:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3465:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3465:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3462:53:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3541:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3549:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3537:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3537:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3558:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3562:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3554:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3554:11:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3567:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "3524:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3524:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3524:46:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "3594:6:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3602:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3590:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3590:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3607:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3586:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3586:24:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3612:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3579:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3579:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3579:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3623:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "3633:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3623:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2710:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2721:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2733:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2665:980:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3751:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3761:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3773:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3784:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3769:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3769:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3761:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3803:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3818:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3826:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3814:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3814:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3796:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3796:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3796:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3720:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3731:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3742:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3650:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4138:467:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4148:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4160:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4171:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4156:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4156:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4148:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4184:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4194:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4188:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4252:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4267:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4275:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4263:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4263:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4245:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4245:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4245:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4299:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4310:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4295:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4295:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4319:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4327:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4315:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4315:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4288:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4288:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4288:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4351:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4362:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4347:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4347:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4367:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4340:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4340:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4340:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4394:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4405:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4390:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4390:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value3",
                                            "nodeType": "YulIdentifier",
                                            "src": "4424:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "4417:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4417:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "4410:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4410:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4383:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4383:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4383:50:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4453:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4464:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4449:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4449:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "4474:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4482:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4470:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4470:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4442:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4442:44:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4442:44:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4506:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4517:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4502:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4502:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "4527:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4535:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4523:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4523:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4495:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4495:44:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4495:44:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4559:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4570:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4555:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4555:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value6",
                                            "nodeType": "YulIdentifier",
                                            "src": "4590:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "4583:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4583:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "4576:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4576:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4548:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4548:51:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4548:51:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bool_t_address_t_address_t_bool__to_t_address_t_address_t_uint256_t_bool_t_address_t_address_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4059:9:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "4070:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "4078:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "4086:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4094:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4102:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4110:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4118:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4129:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3881:724:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4761:530:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4771:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4781:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4775:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4792:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4810:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4821:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4806:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4806:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4796:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4840:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4851:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4833:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4833:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4833:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4863:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "4874:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "4867:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4889:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4909:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4903:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4903:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "4893:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4932:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4940:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4925:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4925:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4925:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4956:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4967:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4978:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4963:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4963:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "4956:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4990:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5008:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5016:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5004:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5004:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4994:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5028:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5037:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "5032:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5096:169:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "5117:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5132:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "5126:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5126:13:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5141:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "5122:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5122:62:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5110:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5110:75:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5110:75:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5198:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "5209:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5214:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "5205:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5205:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5198:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5230:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "5244:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5252:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "5240:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5240:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5230:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "5058:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5061:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5055:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5055:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "5069:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5071:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "5080:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5083:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "5076:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5076:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "5071:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "5051:3:64",
                                "statements": []
                              },
                              "src": "5047:218:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5274:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "5282:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5274:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4730:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4741:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4752:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4610:681:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5443:612:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5460:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5471:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5453:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5453:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5453:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5483:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5503:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5497:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5497:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "5487:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5530:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5541:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5526:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5526:18:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5546:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5519:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5519:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5519:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5562:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5571:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "5566:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5633:92:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5662:9:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5673:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "5658:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5658:17:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5677:2:64",
                                              "type": "",
                                              "value": "96"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "5654:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5654:26:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5696:6:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5704:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5692:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "5692:14:64"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "5708:4:64",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "5688:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5688:25:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "5682:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5682:32:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5647:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5647:68:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5647:68:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "5592:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5595:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5589:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5589:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "5603:21:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5605:17:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "5614:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5617:4:64",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "5610:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5610:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "5605:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "5585:3:64",
                                "statements": []
                              },
                              "src": "5581:144:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5759:66:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5788:9:64"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5799:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "5784:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5784:22:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5808:2:64",
                                              "type": "",
                                              "value": "96"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "5780:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5780:31:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5813:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5773:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5773:42:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5773:42:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "5740:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5743:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5737:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5737:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5734:91:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5834:121:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5850:9:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "5869:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5877:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5865:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5865:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5882:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "5861:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5861:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5846:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5846:104:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5952:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5842:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5842:113:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5834:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5975:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5986:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5971:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5971:20:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5997:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6005:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5993:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5993:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5964:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5964:85:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5964:85:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5404:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5415:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5423:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5434:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5296:759:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6161:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6171:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6183:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6194:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6179:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6179:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6171:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6213:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6224:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6206:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6206:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6206:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6130:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6141:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6152:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6060:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6290:80:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6317:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "6319:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6319:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6319:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "6306:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "6313:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "6309:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6309:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6303:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6303:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6300:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6348:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "6359:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "6362:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6355:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6355:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "6348:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "6273:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "6276:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "6282:3:64",
                            "type": ""
                          }
                        ],
                        "src": "6242:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6422:148:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6513:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "6515:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6515:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6515:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6438:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6445:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "6435:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6435:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6432:103:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6544:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6555:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6562:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6551:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6551:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "6544:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6404:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "6414:3:64",
                            "type": ""
                          }
                        ],
                        "src": "6375:195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6607:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6624:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6627:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6617:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6617:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6617:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6721:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6724:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6714:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6714:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6714:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6745:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6748:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6738:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6738:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6738:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6575:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6796:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6813:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6816:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6806:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6806:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6806:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6910:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6913:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6903:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6903:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6903:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6934:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6937:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6927:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6927:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6927:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6764:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6985:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7002:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7005:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6995:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6995:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6995:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7099:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7102:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7092:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7092:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7092:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7123:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7126:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "7116:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7116:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7116:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6953:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7187:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7274:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7283:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7286:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7276:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7276:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7276:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7210:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "7221:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7228:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "7217:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7217:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "7207:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7207:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7200:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7200:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7197:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "7176:5:64",
                            "type": ""
                          }
                        ],
                        "src": "7142:154:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_bool_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_uint256t_boolt_address_payablet_address_payablet_bool_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := mload(add(headStart, 64))\n        value3 := abi_decode_bool_fromMemory(add(headStart, 96))\n        let value_2 := mload(add(headStart, 128))\n        validator_revert_address(value_2)\n        value4 := value_2\n        let value_3 := mload(add(headStart, 160))\n        validator_revert_address(value_3)\n        value5 := value_3\n        value6 := abi_decode_bool_fromMemory(add(headStart, 192))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_bytes_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value0 := memPtr\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bool_t_address_t_address_t_bool__to_t_address_t_address_t_uint256_t_bool_t_address_t_address_t_bool__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 224)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), iszero(iszero(value3)))\n        mstore(add(headStart, 128), and(value4, _1))\n        mstore(add(headStart, 160), and(value5, _1))\n        mstore(add(headStart, 192), iszero(iszero(value6)))\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let length := mload(value0)\n        mstore(add(headStart, 64), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(add(headStart, i), 96), mload(add(add(value0, i), 0x20)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 96), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 96)\n        mstore(add(headStart, 0x20), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "11681": [
                  {
                    "length": 32,
                    "start": 346
                  },
                  {
                    "length": 32,
                    "start": 945
                  },
                  {
                    "length": 32,
                    "start": 1385
                  }
                ]
              },
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b50600436106200007b5760003560e01c806371a25812116200005657806371a25812146200012e578063cf58879a1462000154578063f6ab6d99146200017c57600080fd5b8063169c4cef146200008057806327c3cae114620000c15780635bc93d6c14620000d8575b600080fd5b6200009762000091366004620009ac565b620001b5565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b62000097620000d236600462000a57565b62000208565b6200011f620000e93660046200096e565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526020818152604080832093909416825291909152205490565b604051908152602001620000b8565b620001456200013f366004620009f2565b62000428565b604051620000b8919062000b30565b620000977f000000000000000000000000000000000000000000000000000000000000000081565b620000976200018d36600462000a3d565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60006020528260005260406000206020528160005260406000208181548110620001de57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16925083915050565b600080600080600080600080888060200190518101906200022a9190620008d7565b96509650965096509650965096508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16111562000271579495945b6040805173ffffffffffffffffffffffffffffffffffffffff808a1660208301528089169282019290925260608101879052851515608082015281851660a082015290831660c082015281151560e082015261010001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181526002808452606084019092529a506000919081602001602082028036833701905050905087816000815181106200032d576200032d62000ca6565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505086816001815181106200037e576200037e62000ca6565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091018201528a51908b012060405181908c907f000000000000000000000000000000000000000000000000000000000000000090620003dc90620008b3565b620003e992919062000b8c565b8190604051809103906000f59050801580156200040a573d6000803e3d6000fd5b5099506200041a8a838362000551565b505050505050505050919050565b60608167ffffffffffffffff81111562000446576200044662000cd5565b60405190808252806020026020018201604052801562000470578160200160208202803683370190505b50905060005b82811015620005485773ffffffffffffffffffffffffffffffffffffffff808716600090815260208181526040808320938916835292905220620004bb828662000c20565b81548110620004ce57620004ce62000ca6565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168282815181106200050e576200050e62000ca6565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152806200053f8162000c3b565b91505062000476565b50949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614620005c1576040517f03781a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555b6001835103811015620008ad5782816001018151811062000633576200063362000ca6565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1683828151811062000666576200066662000ca6565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1610620006bc576040517f3f06bf8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015b8351811015620008a357600080858481518110620006e357620006e362000ca6565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008583815181106200073c576200073c62000ca6565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409091016000908120805460018101825590825291812090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915584518190869084908110620007cb57620007cb62000ca6565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085848151811062000824576200082462000ca6565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604090910160009081208054600180820183559183529290912090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915501620006c1565b506001016200060e565b50505050565b6144e58062000d2b83390190565b80518015158114620008d257600080fd5b919050565b600080600080600080600060e0888a031215620008f357600080fd5b8751620009008162000d04565b6020890151909750620009138162000d04565b604089015190965094506200092b60608901620008c1565b935060808801516200093d8162000d04565b60a0890151909350620009508162000d04565b91506200096060c08901620008c1565b905092959891949750929550565b600080604083850312156200098257600080fd5b82356200098f8162000d04565b91506020830135620009a18162000d04565b809150509250929050565b600080600060608486031215620009c257600080fd5b8335620009cf8162000d04565b92506020840135620009e18162000d04565b929592945050506040919091013590565b6000806000806080858703121562000a0957600080fd5b843562000a168162000d04565b9350602085013562000a288162000d04565b93969395505050506040820135916060013590565b60006020828403121562000a5057600080fd5b5035919050565b60006020828403121562000a6a57600080fd5b813567ffffffffffffffff8082111562000a8357600080fd5b818401915084601f83011262000a9857600080fd5b81358181111562000aad5762000aad62000cd5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171562000af65762000af662000cd5565b8160405282815287602084870101111562000b1057600080fd5b826020860160208301376000928101602001929092525095945050505050565b6020808252825182820181905260009190848201906040850190845b8181101562000b8057835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162000b4c565b50909695505050505050565b604081526000835180604084015260005b8181101562000bbc576020818701810151606086840101520162000b9d565b8181111562000bcf576000606083860101525b5073ffffffffffffffffffffffffffffffffffffffff93909316602083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b6000821982111562000c365762000c3662000c77565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000c705762000c7062000c77565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811462000d2757600080fd5b5056fe6101806040523480156200001257600080fd5b50604051620044e5380380620044e58339810160408190526200003591620006a6565b604080518082018252601981527f5375736869204672616e636869736564204c5020546f6b656e000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f49bb029ad7c8a58c6232657178b278e20c3bd1f3b0084072e3a97b185e1aac5f918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120608081815250506000806000806000806000888060200190518101906200014291906200060f565b965096509650965096509650965060006001600160a01b0316876001600160a01b03161415620001a85760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064015b60405180910390fd5b856001600160a01b0316876001600160a01b031614156200020c5760405162461bcd60e51b815260206004820152601360248201527f4944454e544943414c5f4144445245535345530000000000000000000000000060448201526064016200019f565b6001600160a01b038716301415620002575760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b60448201526064016200019f565b6001600160a01b038616301415620002a25760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22faa27a5a2a760991b60448201526064016200019f565b612710851115620002e95760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f535741505f46454560801b60448201526064016200019f565b620003018383836200057560201b6200259b1760201c565b60408051600481526024810182526020810180516001600160e01b03166360a56c0160e11b17905290516000916001600160a01b038b16916200034591906200078d565b600060405180830381855afa9150503d806000811462000382576040519150601f19603f3d011682016040523d82523d6000602084013e62000387565b606091505b5060408051600481526024810182526020810180516001600160e01b0316630605066960e11b1790529051919350600092506001600160a01b038c1691620003d091906200078d565b600060405180830381855afa9150503d80600081146200040d576040519150601f19603f3d011682016040523d82523d6000602084013e62000412565b606091505b5060408051600481526024810182526020810180516001600160e01b0316634da3182760e01b1790529051919350600092506001600160a01b038d16916200045b91906200078d565b600060405180830381855afa9150503d806000811462000498576040519150601f19603f3d011682016040523d82523d6000602084013e6200049d565b606091505b506001600160601b031960608d811b8216610140528c901b166101605260a08a90526127108a900360c0528451909250620004e391508401602090810190850162000773565b6006558151620004fd9083016020908101908401620005e8565b60601b6001600160601b03191660e0528051620005249060209083018101908301620005e8565b6001600160601b0319606091821b811661010052908c901b16610120526001600b5586156200056357600a80546001600160e01b0316600160e01b1790555b5050505050505050505050506200080d565b600080546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790558015620005c0576001805460ff60a01b1916600160a01b1790555b505050565b8051620005d281620007f4565b919050565b80518015158114620005d257600080fd5b600060208284031215620005fb57600080fd5b81516200060881620007f4565b9392505050565b600080600080600080600060e0888a0312156200062b57600080fd5b87516200063881620007f4565b60208901519097506200064b81620007f4565b604089015190965094506200066360608901620005d7565b935060808801516200067581620007f4565b60a08901519093506200068881620007f4565b91506200069860c08901620005d7565b905092959891949750929550565b60008060408385031215620006ba57600080fd5b82516001600160401b0380821115620006d257600080fd5b818501915085601f830112620006e757600080fd5b815181811115620006fc57620006fc620007de565b604051601f8201601f19908116603f01168101908382118183101715620007275762000727620007de565b816040528281528860208487010111156200074157600080fd5b62000754836020830160208801620007ab565b80965050505050506200076a60208401620005c5565b90509250929050565b6000602082840312156200078657600080fd5b5051919050565b60008251620007a1818460208701620007ab565b9190910192915050565b60005b83811015620007c8578181015183820152602001620007ae565b83811115620007d8576000848401525b50505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146200080a57600080fd5b50565b60805160a05160c05160e05160601c6101005160601c6101205160601c6101405160601c6101605160601c613b7c620009696000396000818161069701528181610893015281816109c201528181610a70015281816111310152818161123901528181611493015281816115020152818161174401528181611cc001528181611fc50152818161204c0152612c3801526000818161039a0152818161080f01528181610b5501528181610c8401528181611105015281816111d00152818161143f015281816115e3015281816116d601528181611c3a01528181612085015281816121700152612b390152600081816106700152611b3a015260008181610498015281816128a101528181612a1701528181612afd0152612ce101526000818161034e01526130ef015260006127a30152600081816104bf0152818161338701526133f201526000818161045e01526122c60152613b7c6000f3fe608060405234801561001057600080fd5b50600436106102775760003560e01c80635a3d549311610160578063a69840a8116100d8578063c14ad8021161008c578063d21220a711610071578063d21220a714610692578063d505accf146106b9578063dd62ed3e146106cc57600080fd5b8063c14ad80214610662578063cf58879a1461066b57600080fd5b8063a9059cbb116100bd578063a9059cbb14610617578063af8c09bf1461062a578063bc3377d91461063d57600080fd5b8063a69840a8146105dd578063a8f1f52e1461060457600080fd5b80637464fc3d1161012f5780637ecebe00116101145780637ecebe001461057757806392bc32191461059757806395d89b41146105a157600080fd5b80637464fc3d1461055b5780637ba0e2e71461056457600080fd5b80635a3d54931461050a578063627dd56a1461051357806367e4ac2c1461052657806370a082311461053b57600080fd5b80632a07b6c7116101f3578063499a3c50116101c257806354cf2aeb116101a757806354cf2aeb146104ba578063570ca735146104e15780635909c0d51461050157600080fd5b8063499a3c50146104805780634da318271461049357600080fd5b80632a07b6c7146103f857806330adf81f14610418578063313ce5671461043f5780633644e5151461045957600080fd5b80630c0a0cd21161024a57806318160ddd1161022f57806318160ddd146103bc57806323b872dd146103c557806325a93264146103d857600080fd5b80630c0a0cd2146103495780630dfe16811461039557600080fd5b8063053da1c81461027c57806306fdde03146102a25780630902f1ac146102eb578063095ea7b314610326575b600080fd5b61028f61028a366004613788565b6106f7565b6040519081526020015b60405180910390f35b6102de6040518060400160405280601981526020017f5375736869204672616e636869736564204c5020546f6b656e0000000000000081525081565b6040516102999190613938565b6102f3610d40565b604080516dffffffffffffffffffffffffffff948516815293909216602084015263ffffffff1690820152606001610299565b610339610334366004613659565b610da9565b6040519015158152602001610299565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610299565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b61028f60025481565b6103396103d33660046136b3565b610e22565b6000546103709073ffffffffffffffffffffffffffffffffffffffff1681565b61040b610406366004613788565b610f9d565b60405161029991906138d3565b61028f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610447601281565b60405160ff9091168152602001610299565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b61028f61048e366004613788565b611309565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b6001546103709073ffffffffffffffffffffffffffffffffffffffff1681565b61028f60075481565b61028f60085481565b61028f610521366004613788565b611310565b61052e6116b4565b6040516102999190613879565b61028f6105493660046134a0565b60036020526000908152604090205481565b61028f60095481565b61028f610572366004613788565b6117b3565b61028f6105853660046134a0565b60056020526000908152604090205481565b61059f611ac8565b005b6102de6040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b61028f7f54726964656e743a4672616e636869736564435000000000000000000000000081565b61028f610612366004613788565b611bc3565b610339610625366004613659565b611dab565b61028f610638366004613788565b611e5d565b6001546103399074010000000000000000000000000000000000000000900460ff1681565b61028f60065481565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b6103707f000000000000000000000000000000000000000000000000000000000000000081565b61059f6106c73660046136f4565b612233565b61028f6106da366004613685565b600460209081526000928352604080842090915290825290205481565b6000600b5460011461076a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6002600b556000808080806107818789018961350f565b94509450945094509450600160149054906101000a900460ff16156107a9576107a98461263b565b6000806000610807600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161415610a6e5761088c85846dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff1661279b565b98506108ba7f00000000000000000000000000000000000000000000000000000000000000008a89896127fe565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b1906108f6908790600401613938565b600060405180830381600087803b15801561091057600080fd5b505af1158015610924573d6000803e3d6000fd5b50505050600080610933612af6565b9150915086856dffffffffffffffffffffffffffff16830310156109b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e000000000000000000006044820152606401610761565b6109c08282878787612d6e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610a5f929190918252602082015260400190565b60405180910390a45050610d2c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614610b23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e000000000000000000000000006044820152606401610761565b610b4e85836dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff1661279b565b9850610b7c7f00000000000000000000000000000000000000000000000000000000000000008a89896127fe565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b190610bb8908790600401613938565b600060405180830381600087803b158015610bd257600080fd5b505af1158015610be6573d6000803e3d6000fd5b50505050600080610bf5612af6565b9150915086846dffffffffffffffffffffffffffff1682031015610c75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e000000000000000000006044820152606401610761565b610c828282878787612d6e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e460628a8f604051610d21929190918252602082015260400190565b60405180910390a450505b50506001600b555094979650505050505050565b6000806000610d9e600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250909192565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610e119086815260200190565b60405180910390a350600192915050565b60015460009074010000000000000000000000000000000000000000900460ff1615610e5157610e518361263b565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610eee5773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915281208054849290610ee89084906139db565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526003602052604081208054849290610f239084906139db565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260036020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f8b9086815260200190565b60405180910390a35060019392505050565b6060600b5460011461100b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b5560008061101f84860186613620565b9150915061102c8261263b565b600080600061108a600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b92509250925060008061109b612af6565b60025430600090815260036020526040902054929450909250906110c087878461306f565b909101906000826110d1868461399e565b6110db9190613963565b90506000836110ea868561399e565b6110f49190613963565b9050611100308461311e565b61112c7f0000000000000000000000000000000000000000000000000000000000000000838d8d6127fe565b6111587f0000000000000000000000000000000000000000000000000000000000000000828d8d6127fe565b8186039550808503945061116f86868b8b8b612d6e565b61118161117c868861399e565b6131b4565b6009556040805160028082526060820190925290816020015b604080518082019091526000808252602082015281526020019060019003908161119a579050509b5060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001838152508c60008151811061122157611221613ab5565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001828152508c60018151811061128a5761128a613ab5565b60209081029190910181019190915260408051848152918201839052810184905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a350506001600b5550979a9950505050505050505050565b6000806000fd5b6000600b5460011461137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b5560008080611393858701876134c4565b600154929550909350915074010000000000000000000000000000000000000000900460ff16156113c7576113c78261263b565b6000806000611425600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250600080611436612af6565b915091506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415611500577f00000000000000000000000000000000000000000000000000000000000000009050866dffffffffffffffffffffffffffff16840391506114f482886dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff1661279b565b9a508a8303925061161c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16146115b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e000000000000000000000000006044820152606401610761565b5050600a546dffffffffffffffffffffffffffff6e01000000000000000000000000000090910481168203907f000000000000000000000000000000000000000000000000000000000000000090611614908390888116908a1661279b565b9a508a840393505b611628818c8b8b6127fe565b6116358484898989612d6e565b8073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062858f604051610d21929190918252602082015260400190565b60408051600280825260608083018452926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061170857611708613ab5565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061177657611776613ab5565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b6000600b54600114611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b556000611834838501856134a0565b905061183f8161263b565b600080600061189d600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b9250925092506000806118ae612af6565b60025491935091506118c186868361306f565b0160006118de6dffffffffffffffffffffffffffff8816856139db565b905060006118fc6dffffffffffffffffffffffffffff8816856139db565b905060008061192d84848c6dffffffffffffffffffffffffffff168c6dffffffffffffffffffffffffffff1661332c565b9092509050600061195561194183896139db565b61194b858b6139db565b61117c919061399e565b90508561197c5761196960006103e861342f565b6119756103e8826139db565b9c506119c4565b600061199e61117c6dffffffffffffffffffffffffffff808e16908f1661399e565b905080876119ac82856139db565b6119b6919061399e565b6119c09190613963565b9d50505b8c611a2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e5445440000006044820152606401610761565b611a358c8e61342f565b611a4288888d8d8d612d6e565b611a4f61117c888a61399e565b60095560408051868152602081018690529081018e90528d9073ffffffffffffffffffffffffffffffffffffffff8e169033907ff9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e9060600160405180910390a350506001600b5550999c9b505050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc14ad80200000000000000000000000000000000000000000000000000000000179052905160009173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691611b65919061385d565b600060405180830381855afa9150503d8060008114611ba0576040519150601f19603f3d011682016040523d82523d6000602084013e611ba5565b606091505b5091505080806020019051810190611bbd91906137fa565b60065550565b60008080611bd384860186613659565b91509150600080611c33600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b50915091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611cbe57611cb783836dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff1661279b565b9450611da1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611d73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e000000000000000000000000006044820152606401610761565b611d9e83826dffffffffffffffffffffffffffff16846dffffffffffffffffffffffffffff1661279b565b94505b5050505092915050565b60015460009074010000000000000000000000000000000000000000900460ff1615611dda57611dda8361263b565b3360009081526003602052604081208054849290611df99084906139db565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e119086815260200190565b6000600b54600114611ecb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b454400000000000000000000000000000000000000000000000000006044820152606401610761565b6002600b5560008080611ee0858701876134c4565b925092509250611eef8261263b565b6000806000611f4d600a546dffffffffffffffffffffffffffff808216926e01000000000000000000000000000083049091169163ffffffff7c01000000000000000000000000000000000000000000000000000000009091041690565b925092509250600080611f5e612af6565b6002543060009081526003602052604090205492945090925090611f8387878461306f565b90910190600082611f94868461399e565b611f9e9190613963565b9050600083611fad868561399e565b611fb79190613963565b9050611fc3308461311e565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614156120835761204682838b6dffffffffffffffffffffffffffff1603838b6dffffffffffffffffffffffffffff160361279b565b016120737f0000000000000000000000000000000000000000000000000000000000000000828d8d6127fe565b9b5050918a90039160008b6121a3565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614612138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e0000000000000000000000006044820152606401610761565b61216781828a6dffffffffffffffffffffffffffff1603848c6dffffffffffffffffffffffffffff160361279b565b820191506121977f0000000000000000000000000000000000000000000000000000000000000000838d8d6127fe565b509a50928a9003928a60005b6121b086868b8b8b612d6e565b6121bd61117c868861399e565b600955604080518381526020810183905290810184905273ffffffffffffffffffffffffffffffffffffffff8c169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a350506001600b5550989b9a5050505050505050505050565b4284101561229d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606401610761565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080547f0000000000000000000000000000000000000000000000000000000000000000917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b918761231883613a1e565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016123b99291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612442573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906124bd57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e415455524500000000000000006044820152606401610761565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526004602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556001805492851692909116919091179055801561263657600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790555b505050565b600080546001546040805173ffffffffffffffffffffffffffffffffffffffff928316602482015285831660448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1472c27100000000000000000000000000000000000000000000000000000000179052905191909216916126d89161385d565b600060405180830381855afa9150503d8060008114612713576040519150601f19603f3d011682016040523d82523d6000602084013e612718565b606091505b50915050600081806020019051810190612732919061376b565b905080612636576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f545f57484954454c495354454400000000000000000000000000000000006044820152606401610761565b6000806127c87f00000000000000000000000000000000000000000000000000000000000000008661399e565b9050806127d76127108661399e565b6127e1919061394b565b6127eb848361399e565b6127f59190613963565b95945050505050565b8015612980576040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260006084830181905260a48084018890528451808503909101815260c490930184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f97da6d300000000000000000000000000000000000000000000000000000000017905292517f0000000000000000000000000000000000000000000000000000000000000000909116916128cd9161385d565b6000604051808303816000865af19150503d806000811461290a576040519150601f19603f3d011682016040523d82523d6000602084013e61290f565b606091505b505090508061297a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f57495448445241575f4641494c454400000000000000000000000000000000006044820152606401610761565b50612af0565b6040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260848083018790528351808403909101815260a490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff18d03cc0000000000000000000000000000000000000000000000000000000017905291516000927f00000000000000000000000000000000000000000000000000000000000000001691612a419161385d565b6000604051808303816000865af19150503d8060008114612a7e576040519150601f19603f3d011682016040523d82523d6000602084013e612a83565b606091505b5050905080612aee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610761565b505b50505050565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f7888aec7f000000000000000000000000000000000000000000000000000000000000000030604051602401612b8c92919073ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051612bda919061385d565b600060405180830381855afa9150503d8060008114612c15576040519150601f19603f3d011682016040523d82523d6000602084013e612c1a565b606091505b5091505080806020019051810190612c3291906137fa565b604080517f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff90811660248301523060448084019190915283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff7888aec0000000000000000000000000000000000000000000000000000000017905291519295506000927f000000000000000000000000000000000000000000000000000000000000000090921691612d0e919061385d565b600060405180830381855afa9150503d8060008114612d49576040519150601f19603f3d011682016040523d82523d6000602084013e612d4e565b606091505b5091505080806020019051810190612d6691906137fa565b925050509091565b6dffffffffffffffffffffffffffff8511801590612d9a57506dffffffffffffffffffffffffffff8411155b612e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4f564552464c4f570000000000000000000000000000000000000000000000006044820152606401610761565b600a547c0100000000000000000000000000000000000000000000000000000000900463ffffffff16612e8457600a80546dffffffffffffffffffffffffffff8681166e010000000000000000000000000000027fffffffff000000000000000000000000000000000000000000000000000000009092169088161717905561302f565b4263ffffffff80821690831614801590612ead57506dffffffffffffffffffffffffffff841615155b8015612ec857506dffffffffffffffffffffffffffff831615155b15612f8d5781810360006dffffffffffffffffffffffffffff86167bffffffffffffffffffffffffffff0000000000000000000000000000607087901b1681612f1357612f13613a86565b600780549290910463ffffffff851681029092019055905060006dffffffffffffffffffffffffffff8616607088901b7bffffffffffffffffffffffffffff00000000000000000000000000001681612f6e57612f6e613a86565b0490508263ffffffff1681026008600082825401925050819055505050505b600a805463ffffffff9092167c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8881166e010000000000000000000000000000027fffffffff00000000000000000000000000000000000000000000000000000000909516908a161793909317929092169190911790555b60408051868152602081018690527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a15050505050565b600954600090801561311657600061309d61117c6dffffffffffffffffffffffffffff80881690891661399e565b905081811115613114576127108160065484846130ba91906139db565b6130c4908861399e565b6130ce919061399e565b6130d89190613963565b6130e29190613963565b92508215613114576131147f00000000000000000000000000000000000000000000000000000000000000008461342f565b505b509392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080548392906131539084906139db565b909155505060028054829003905560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6000816131c357506000919050565b81600170010000000000000000000000000000000082106131e95760809190911c9060401b5b6801000000000000000082106132045760409190911c9060201b5b640100000000821061321b5760209190911c9060101b5b6201000082106132305760109190911c9060081b5b61010082106132445760089190911c9060041b5b601082106132575760049190911c9060021b5b600882106132635760011b5b600181858161327457613274613a86565b048201901c9050600181858161328c5761328c613a86565b048201901c905060018185816132a4576132a4613a86565b048201901c905060018185816132bc576132bc613a86565b048201901c905060018185816132d4576132d4613a86565b048201901c905060018185816132ec576132ec613a86565b048201901c9050600181858161330457613304613a86565b048201901c9050600081858161331c5761331c613a86565b04905080821061311657806127f5565b60008083158061333a575082155b1561334a57506000905080613426565b600084613357858961399e565b6133619190613963565b90508581116133bc57613377612710600261399e565b61338182886139db565b6133ab907f000000000000000000000000000000000000000000000000000000000000000061399e565b6133b59190613963565b9150613424565b6000846133c9878961399e565b6133d39190613963565b90506133e2612710600261399e565b6133ec828a6139db565b613416907f000000000000000000000000000000000000000000000000000000000000000061399e565b6134209190613963565b9350505b505b94509492505050565b8060026000828254613441919061394b565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016131a8565b6000602082840312156134b257600080fd5b81356134bd81613b13565b9392505050565b6000806000606084860312156134d957600080fd5b83356134e481613b13565b925060208401356134f481613b13565b9150604084013561350481613b38565b809150509250925092565b600080600080600060a0868803121561352757600080fd5b853561353281613b13565b9450602086013561354281613b13565b9350604086013561355281613b38565b925060608601359150608086013567ffffffffffffffff8082111561357657600080fd5b818801915088601f83011261358a57600080fd5b81358181111561359c5761359c613ae4565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156135e2576135e2613ae4565b816040528281528b60208487010111156135fb57600080fd5b8260208601602083013760006020848301015280955050505050509295509295909350565b6000806040838503121561363357600080fd5b823561363e81613b13565b9150602083013561364e81613b38565b809150509250929050565b6000806040838503121561366c57600080fd5b823561367781613b13565b946020939093013593505050565b6000806040838503121561369857600080fd5b82356136a381613b13565b9150602083013561364e81613b13565b6000806000606084860312156136c857600080fd5b83356136d381613b13565b925060208401356136e381613b13565b929592945050506040919091013590565b600080600080600080600060e0888a03121561370f57600080fd5b873561371a81613b13565b9650602088013561372a81613b13565b95506040880135945060608801359350608088013560ff8116811461374e57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60006020828403121561377d57600080fd5b81516134bd81613b38565b6000806020838503121561379b57600080fd5b823567ffffffffffffffff808211156137b357600080fd5b818501915085601f8301126137c757600080fd5b8135818111156137d657600080fd5b8660208285010111156137e857600080fd5b60209290920196919550909350505050565b60006020828403121561380c57600080fd5b5051919050565b6000815180845261382b8160208601602086016139f2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161386f8184602087016139f2565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b818110156138c757835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613895565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561392b578151805173ffffffffffffffffffffffffffffffffffffffff1685528601518685015292840192908501906001016138f0565b5091979650505050505050565b6020815260006134bd6020830184613813565b6000821982111561395e5761395e613a57565b500190565b600082613999577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139d6576139d6613a57565b500290565b6000828210156139ed576139ed613a57565b500390565b60005b83811015613a0d5781810151838201526020016139f5565b83811115612af05750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613a5057613a50613a57565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114613b3557600080fd5b50565b8015158114613b3557600080fdfea26469706673582212209f642184248699c158c18322f8dca2de6fe2cc065d00eb82ed365836d516447c64736f6c63430008070033a264697066735822122091da199be0556aa753bf6121932e413031575c8e1b8863adf50d85673b53ec8264736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x71A25812 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x71A25812 EQ PUSH3 0x12E JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH3 0x154 JUMPI DUP1 PUSH4 0xF6AB6D99 EQ PUSH3 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x169C4CEF EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x27C3CAE1 EQ PUSH3 0xC1 JUMPI DUP1 PUSH4 0x5BC93D6C EQ PUSH3 0xD8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x9AC JUMP JUMPDEST PUSH3 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x97 PUSH3 0xD2 CALLDATASIZE PUSH1 0x4 PUSH3 0xA57 JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH3 0x11F PUSH3 0xE9 CALLDATASIZE PUSH1 0x4 PUSH3 0x96E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xB8 JUMP JUMPDEST PUSH3 0x145 PUSH3 0x13F CALLDATASIZE PUSH1 0x4 PUSH3 0x9F2 JUMP JUMPDEST PUSH3 0x428 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xB8 SWAP2 SWAP1 PUSH3 0xB30 JUMP JUMPDEST PUSH3 0x97 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0x97 PUSH3 0x18D CALLDATASIZE PUSH1 0x4 PUSH3 0xA3D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP3 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH3 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP DUP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP9 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x22A SWAP2 SWAP1 PUSH3 0x8D7 JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH3 0x271 JUMPI SWAP5 SWAP6 SWAP5 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE DUP6 ISZERO ISZERO PUSH1 0x80 DUP3 ADD MSTORE DUP2 DUP6 AND PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 DUP4 AND PUSH1 0xC0 DUP3 ADD MSTORE DUP2 ISZERO ISZERO PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE PUSH1 0x2 DUP1 DUP5 MSTORE PUSH1 0x60 DUP5 ADD SWAP1 SWAP3 MSTORE SWAP11 POP PUSH1 0x0 SWAP2 SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP8 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH3 0x32D JUMPI PUSH3 0x32D PUSH3 0xCA6 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP7 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH3 0x37E JUMPI PUSH3 0x37E PUSH3 0xCA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE DUP11 MLOAD SWAP1 DUP12 ADD KECCAK256 PUSH1 0x40 MLOAD DUP2 SWAP1 DUP13 SWAP1 PUSH32 0x0 SWAP1 PUSH3 0x3DC SWAP1 PUSH3 0x8B3 JUMP JUMPDEST PUSH3 0x3E9 SWAP3 SWAP2 SWAP1 PUSH3 0xB8C JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH3 0x40A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP10 POP PUSH3 0x41A DUP11 DUP4 DUP4 PUSH3 0x551 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x446 JUMPI PUSH3 0x446 PUSH3 0xCD5 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x470 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x548 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH3 0x4BB DUP3 DUP7 PUSH3 0xC20 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH3 0x4CE JUMPI PUSH3 0x4CE PUSH3 0xCA6 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x50E JUMPI PUSH3 0x50E PUSH3 0xCA6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x53F DUP2 PUSH3 0xC3B JUMP JUMPDEST SWAP2 POP POP PUSH3 0x476 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH3 0x5C1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3781A5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH3 0x8AD JUMPI DUP3 DUP2 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH3 0x633 JUMPI PUSH3 0x633 PUSH3 0xCA6 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x666 JUMPI PUSH3 0x666 PUSH3 0xCA6 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH3 0x6BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x3F06BF8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH3 0x8A3 JUMPI PUSH1 0x0 DUP1 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x6E3 JUMPI PUSH3 0x6E3 PUSH3 0xCA6 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x73C JUMPI PUSH3 0x73C PUSH3 0xCA6 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP3 MSTORE SWAP2 DUP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP5 MLOAD DUP2 SWAP1 DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH3 0x7CB JUMPI PUSH3 0x7CB PUSH3 0xCA6 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x824 JUMPI PUSH3 0x824 PUSH3 0xCA6 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE SWAP2 DUP4 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE ADD PUSH3 0x6C1 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH3 0x60E JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x44E5 DUP1 PUSH3 0xD2B DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x8D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x8F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 MLOAD PUSH3 0x900 DUP2 PUSH3 0xD04 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH3 0x913 DUP2 PUSH3 0xD04 JUMP JUMPDEST PUSH1 0x40 DUP10 ADD MLOAD SWAP1 SWAP7 POP SWAP5 POP PUSH3 0x92B PUSH1 0x60 DUP10 ADD PUSH3 0x8C1 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD MLOAD PUSH3 0x93D DUP2 PUSH3 0xD04 JUMP JUMPDEST PUSH1 0xA0 DUP10 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x950 DUP2 PUSH3 0xD04 JUMP JUMPDEST SWAP2 POP PUSH3 0x960 PUSH1 0xC0 DUP10 ADD PUSH3 0x8C1 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x982 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH3 0x98F DUP2 PUSH3 0xD04 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH3 0x9A1 DUP2 PUSH3 0xD04 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x9C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH3 0x9CF DUP2 PUSH3 0xD04 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH3 0x9E1 DUP2 PUSH3 0xD04 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0xA09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH3 0xA16 DUP2 PUSH3 0xD04 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH3 0xA28 DUP2 PUSH3 0xD04 JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0xA83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xAAD JUMPI PUSH3 0xAAD PUSH3 0xCD5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xAF6 JUMPI PUSH3 0xAF6 PUSH3 0xCD5 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xB10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xB80 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0xB4C JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xBBC JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH3 0xB9D JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0xBCF JUMPI PUSH1 0x0 PUSH1 0x60 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD PUSH1 0x60 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0xC36 JUMPI PUSH3 0xC36 PUSH3 0xC77 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH3 0xC70 JUMPI PUSH3 0xC70 PUSH3 0xC77 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0xD27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH2 0x180 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x44E5 CODESIZE SUB DUP1 PUSH3 0x44E5 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x6A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x5375736869204672616E636869736564204C5020546F6B656E00000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x49BB029AD7C8A58C6232657178B278E20C3BD1F3B0084072E3A97B185E1AAC5F SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x80 DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP9 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x142 SWAP2 SWAP1 PUSH3 0x60F JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A45524F5F41444452455353 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x20C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4944454E544943414C5F41444452455353455300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND ADDRESS EQ ISZERO PUSH3 0x257 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FAA27A5A2A7 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ADDRESS EQ ISZERO PUSH3 0x2A2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x24A72B20A624A22FAA27A5A2A7 PUSH1 0x99 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST PUSH2 0x2710 DUP6 GT ISZERO PUSH3 0x2E9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x494E56414C49445F535741505F464545 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST PUSH3 0x301 DUP4 DUP4 DUP4 PUSH3 0x575 PUSH1 0x20 SHL PUSH3 0x259B OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x60A56C01 PUSH1 0xE1 SHL OR SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH3 0x345 SWAP2 SWAP1 PUSH3 0x78D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x382 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x387 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6050669 PUSH1 0xE1 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP2 PUSH3 0x3D0 SWAP2 SWAP1 PUSH3 0x78D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x40D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x412 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x4DA31827 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP2 PUSH3 0x45B SWAP2 SWAP1 PUSH3 0x78D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x498 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x49D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP14 DUP2 SHL DUP3 AND PUSH2 0x140 MSTORE DUP13 SWAP1 SHL AND PUSH2 0x160 MSTORE PUSH1 0xA0 DUP11 SWAP1 MSTORE PUSH2 0x2710 DUP11 SWAP1 SUB PUSH1 0xC0 MSTORE DUP5 MLOAD SWAP1 SWAP3 POP PUSH3 0x4E3 SWAP2 POP DUP5 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP6 ADD PUSH3 0x773 JUMP JUMPDEST PUSH1 0x6 SSTORE DUP2 MLOAD PUSH3 0x4FD SWAP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP5 ADD PUSH3 0x5E8 JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xE0 MSTORE DUP1 MLOAD PUSH3 0x524 SWAP1 PUSH1 0x20 SWAP1 DUP4 ADD DUP2 ADD SWAP1 DUP4 ADD PUSH3 0x5E8 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH2 0x100 MSTORE SWAP1 DUP13 SWAP1 SHL AND PUSH2 0x120 MSTORE PUSH1 0x1 PUSH1 0xB SSTORE DUP7 ISZERO PUSH3 0x563 JUMPI PUSH1 0xA DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0xE0 SHL OR SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP PUSH3 0x80D JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH3 0x5C0 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x5D2 DUP2 PUSH3 0x7F4 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x5D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x608 DUP2 PUSH3 0x7F4 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x62B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 MLOAD PUSH3 0x638 DUP2 PUSH3 0x7F4 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH3 0x64B DUP2 PUSH3 0x7F4 JUMP JUMPDEST PUSH1 0x40 DUP10 ADD MLOAD SWAP1 SWAP7 POP SWAP5 POP PUSH3 0x663 PUSH1 0x60 DUP10 ADD PUSH3 0x5D7 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD MLOAD PUSH3 0x675 DUP2 PUSH3 0x7F4 JUMP JUMPDEST PUSH1 0xA0 DUP10 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x688 DUP2 PUSH3 0x7F4 JUMP JUMPDEST SWAP2 POP PUSH3 0x698 PUSH1 0xC0 DUP10 ADD PUSH3 0x5D7 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x6BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x6D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x6FC JUMPI PUSH3 0x6FC PUSH3 0x7DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x727 JUMPI PUSH3 0x727 PUSH3 0x7DE JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x741 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x754 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH3 0x7AB JUMP JUMPDEST DUP1 SWAP7 POP POP POP POP POP POP PUSH3 0x76A PUSH1 0x20 DUP5 ADD PUSH3 0x5C5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x786 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x7A1 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x7AB JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x7C8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x7AE JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x7D8 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x80A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x160 MLOAD PUSH1 0x60 SHR PUSH2 0x3B7C PUSH3 0x969 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x697 ADD MSTORE DUP2 DUP2 PUSH2 0x893 ADD MSTORE DUP2 DUP2 PUSH2 0x9C2 ADD MSTORE DUP2 DUP2 PUSH2 0xA70 ADD MSTORE DUP2 DUP2 PUSH2 0x1131 ADD MSTORE DUP2 DUP2 PUSH2 0x1239 ADD MSTORE DUP2 DUP2 PUSH2 0x1493 ADD MSTORE DUP2 DUP2 PUSH2 0x1502 ADD MSTORE DUP2 DUP2 PUSH2 0x1744 ADD MSTORE DUP2 DUP2 PUSH2 0x1CC0 ADD MSTORE DUP2 DUP2 PUSH2 0x1FC5 ADD MSTORE DUP2 DUP2 PUSH2 0x204C ADD MSTORE PUSH2 0x2C38 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x39A ADD MSTORE DUP2 DUP2 PUSH2 0x80F ADD MSTORE DUP2 DUP2 PUSH2 0xB55 ADD MSTORE DUP2 DUP2 PUSH2 0xC84 ADD MSTORE DUP2 DUP2 PUSH2 0x1105 ADD MSTORE DUP2 DUP2 PUSH2 0x11D0 ADD MSTORE DUP2 DUP2 PUSH2 0x143F ADD MSTORE DUP2 DUP2 PUSH2 0x15E3 ADD MSTORE DUP2 DUP2 PUSH2 0x16D6 ADD MSTORE DUP2 DUP2 PUSH2 0x1C3A ADD MSTORE DUP2 DUP2 PUSH2 0x2085 ADD MSTORE DUP2 DUP2 PUSH2 0x2170 ADD MSTORE PUSH2 0x2B39 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x670 ADD MSTORE PUSH2 0x1B3A ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x498 ADD MSTORE DUP2 DUP2 PUSH2 0x28A1 ADD MSTORE DUP2 DUP2 PUSH2 0x2A17 ADD MSTORE DUP2 DUP2 PUSH2 0x2AFD ADD MSTORE PUSH2 0x2CE1 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x34E ADD MSTORE PUSH2 0x30EF ADD MSTORE PUSH1 0x0 PUSH2 0x27A3 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x4BF ADD MSTORE DUP2 DUP2 PUSH2 0x3387 ADD MSTORE PUSH2 0x33F2 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x45E ADD MSTORE PUSH2 0x22C6 ADD MSTORE PUSH2 0x3B7C PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x277 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5A3D5493 GT PUSH2 0x160 JUMPI DUP1 PUSH4 0xA69840A8 GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xC14AD802 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD21220A7 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x692 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x6B9 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x662 JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x66B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA9059CBB GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x617 JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x62A JUMPI DUP1 PUSH4 0xBC3377D9 EQ PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x5DD JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7464FC3D GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x577 JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x597 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x5A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x55B JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x564 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x627DD56A EQ PUSH2 0x513 JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x526 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x53B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x54CF2AEB GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x4BA JUMPI DUP1 PUSH4 0x570CA735 EQ PUSH2 0x4E1 JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x493 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x3F8 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x418 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x43F JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x459 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x24A JUMPI DUP1 PUSH4 0x18160DDD GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x3BC JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3C5 JUMPI DUP1 PUSH4 0x25A93264 EQ PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x326 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x28F PUSH2 0x28A CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x6F7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204672616E636869736564204C5020546F6B656E00000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x3938 JUMP JUMPDEST PUSH2 0x2F3 PUSH2 0xD40 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP4 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x339 PUSH2 0x334 CALLDATASIZE PUSH1 0x4 PUSH2 0x3659 JUMP JUMPDEST PUSH2 0xDA9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x339 PUSH2 0x3D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x36B3 JUMP JUMPDEST PUSH2 0xE22 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x370 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x40B PUSH2 0x406 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0xF9D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x38D3 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x447 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x48E CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x1309 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x370 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x521 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x1310 JUMP JUMPDEST PUSH2 0x52E PUSH2 0x16B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x3879 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x549 CALLDATASIZE PUSH1 0x4 PUSH2 0x34A0 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x572 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x17B3 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x585 CALLDATASIZE PUSH1 0x4 PUSH2 0x34A0 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x59F PUSH2 0x1AC8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x54726964656E743A4672616E6368697365644350000000000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x612 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x1BC3 JUMP JUMPDEST PUSH2 0x339 PUSH2 0x625 CALLDATASIZE PUSH1 0x4 PUSH2 0x3659 JUMP JUMPDEST PUSH2 0x1DAB JUMP JUMPDEST PUSH2 0x28F PUSH2 0x638 CALLDATASIZE PUSH1 0x4 PUSH2 0x3788 JUMP JUMPDEST PUSH2 0x1E5D JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x339 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x370 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x59F PUSH2 0x6C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x36F4 JUMP JUMPDEST PUSH2 0x2233 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x6DA CALLDATASIZE PUSH1 0x4 PUSH2 0x3685 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x76A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x781 DUP8 DUP10 ADD DUP10 PUSH2 0x350F JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x7A9 JUMPI PUSH2 0x7A9 DUP5 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x807 PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0xA6E JUMPI PUSH2 0x88C DUP6 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP9 POP PUSH2 0x8BA PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x27FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x8F6 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3938 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x910 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x924 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 PUSH2 0x933 PUSH2 0x2AF6 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 SUB LT ISZERO PUSH2 0x9B3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0x9C0 DUP3 DUP3 DUP8 DUP8 DUP8 PUSH2 0x2D6E JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP11 DUP16 PUSH1 0x40 MLOAD PUSH2 0xA5F SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH2 0xD2C JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB23 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0xB4E DUP6 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP9 POP PUSH2 0xB7C PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x27FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0xBB8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3938 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBE6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP1 PUSH2 0xBF5 PUSH2 0x2AF6 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP7 DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 SUB LT ISZERO PUSH2 0xC75 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0xC82 DUP3 DUP3 DUP8 DUP8 DUP8 PUSH2 0x2D6E JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP11 DUP16 PUSH1 0x40 MLOAD PUSH2 0xD21 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMPDEST POP POP PUSH1 0x1 PUSH1 0xB SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xD9E PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xE11 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xE51 JUMPI PUSH2 0xE51 DUP4 PUSH2 0x263B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xEEE JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xEE8 SWAP1 DUP5 SWAP1 PUSH2 0x39DB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xF23 SWAP1 DUP5 SWAP1 PUSH2 0x39DB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xF8B SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x100B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 DUP1 PUSH2 0x101F DUP5 DUP7 ADD DUP7 PUSH2 0x3620 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x102C DUP3 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x108A PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x109B PUSH2 0x2AF6 JUMP JUMPDEST PUSH1 0x2 SLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH2 0x10C0 DUP8 DUP8 DUP5 PUSH2 0x306F JUMP JUMPDEST SWAP1 SWAP2 ADD SWAP1 PUSH1 0x0 DUP3 PUSH2 0x10D1 DUP7 DUP5 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x10DB SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0x10EA DUP7 DUP6 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x10F4 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH2 0x1100 ADDRESS DUP5 PUSH2 0x311E JUMP JUMPDEST PUSH2 0x112C PUSH32 0x0 DUP4 DUP14 DUP14 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0x1158 PUSH32 0x0 DUP3 DUP14 DUP14 PUSH2 0x27FE JUMP JUMPDEST DUP2 DUP7 SUB SWAP6 POP DUP1 DUP6 SUB SWAP5 POP PUSH2 0x116F DUP7 DUP7 DUP12 DUP12 DUP12 PUSH2 0x2D6E JUMP JUMPDEST PUSH2 0x1181 PUSH2 0x117C DUP7 DUP9 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x31B4 JUMP JUMPDEST PUSH1 0x9 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x119A JUMPI SWAP1 POP POP SWAP12 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP13 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1221 JUMPI PUSH2 0x1221 PUSH2 0x3AB5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP13 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x128A JUMPI PUSH2 0x128A PUSH2 0x3AB5 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP2 DUP3 ADD DUP4 SWAP1 MSTORE DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xB SSTORE POP SWAP8 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x137E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x1393 DUP6 DUP8 ADD DUP8 PUSH2 0x34C4 JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x13C7 JUMPI PUSH2 0x13C7 DUP3 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1425 PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x1436 PUSH2 0x2AF6 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1500 JUMPI PUSH32 0x0 SWAP1 POP DUP7 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 SUB SWAP2 POP PUSH2 0x14F4 DUP3 DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP11 POP DUP11 DUP4 SUB SWAP3 POP PUSH2 0x161C JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x15B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST POP POP PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH15 0x10000000000000000000000000000 SWAP1 SWAP2 DIV DUP2 AND DUP3 SUB SWAP1 PUSH32 0x0 SWAP1 PUSH2 0x1614 SWAP1 DUP4 SWAP1 DUP9 DUP2 AND SWAP1 DUP11 AND PUSH2 0x279B JUMP JUMPDEST SWAP11 POP DUP11 DUP5 SUB SWAP4 POP JUMPDEST PUSH2 0x1628 DUP2 DUP13 DUP12 DUP12 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0x1635 DUP5 DUP5 DUP10 DUP10 DUP10 PUSH2 0x2D6E JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP6 DUP16 PUSH1 0x40 MLOAD PUSH2 0xD21 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1708 JUMPI PUSH2 0x1708 PUSH2 0x3AB5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1776 JUMPI PUSH2 0x1776 PUSH2 0x3AB5 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x1821 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 PUSH2 0x1834 DUP4 DUP6 ADD DUP6 PUSH2 0x34A0 JUMP JUMPDEST SWAP1 POP PUSH2 0x183F DUP2 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x189D PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x18AE PUSH2 0x2AF6 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x18C1 DUP7 DUP7 DUP4 PUSH2 0x306F JUMP JUMPDEST ADD PUSH1 0x0 PUSH2 0x18DE PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x39DB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x18FC PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND DUP6 PUSH2 0x39DB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x192D DUP5 DUP5 DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x332C JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x1955 PUSH2 0x1941 DUP4 DUP10 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x194B DUP6 DUP12 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x117C SWAP2 SWAP1 PUSH2 0x399E JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x197C JUMPI PUSH2 0x1969 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x342F JUMP JUMPDEST PUSH2 0x1975 PUSH2 0x3E8 DUP3 PUSH2 0x39DB JUMP JUMPDEST SWAP13 POP PUSH2 0x19C4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x199E PUSH2 0x117C PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP15 AND SWAP1 DUP16 AND PUSH2 0x399E JUMP JUMPDEST SWAP1 POP DUP1 DUP8 PUSH2 0x19AC DUP3 DUP6 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x19B6 SWAP2 SWAP1 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x19C0 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP14 POP POP JUMPDEST DUP13 PUSH2 0x1A2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F4C49515549444954595F4D494E544544000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0x1A35 DUP13 DUP15 PUSH2 0x342F JUMP JUMPDEST PUSH2 0x1A42 DUP9 DUP9 DUP14 DUP14 DUP14 PUSH2 0x2D6E JUMP JUMPDEST PUSH2 0x1A4F PUSH2 0x117C DUP9 DUP11 PUSH2 0x399E JUMP JUMPDEST PUSH1 0x9 SSTORE PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 DUP2 ADD DUP15 SWAP1 MSTORE DUP14 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP1 CALLER SWAP1 PUSH32 0xF9C32FBC56FF04F32A233EBC26E388564223745E28ABD8D0781DD906537F563E SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xB SSTORE POP SWAP10 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC14AD80200000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH2 0x1B65 SWAP2 SWAP1 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x1BA0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1BA5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1BBD SWAP2 SWAP1 PUSH2 0x37FA JUMP JUMPDEST PUSH1 0x6 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x1BD3 DUP5 DUP7 ADD DUP7 PUSH2 0x3659 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1C33 PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1CBE JUMPI PUSH2 0x1CB7 DUP4 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP5 POP PUSH2 0x1DA1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1D73 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0x1D9E DUP4 DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x279B JUMP JUMPDEST SWAP5 POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1DDA JUMPI PUSH2 0x1DDA DUP4 PUSH2 0x263B JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x1DF9 SWAP1 DUP5 SWAP1 PUSH2 0x39DB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xE11 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD PUSH1 0x1 EQ PUSH2 0x1ECB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x2 PUSH1 0xB SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x1EE0 DUP6 DUP8 ADD DUP8 PUSH2 0x34C4 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x1EEF DUP3 PUSH2 0x263B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1F4D PUSH1 0xA SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP3 PUSH15 0x10000000000000000000000000000 DUP4 DIV SWAP1 SWAP2 AND SWAP2 PUSH4 0xFFFFFFFF PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 DIV AND SWAP1 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x0 DUP1 PUSH2 0x1F5E PUSH2 0x2AF6 JUMP JUMPDEST PUSH1 0x2 SLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 PUSH2 0x1F83 DUP8 DUP8 DUP5 PUSH2 0x306F JUMP JUMPDEST SWAP1 SWAP2 ADD SWAP1 PUSH1 0x0 DUP3 PUSH2 0x1F94 DUP7 DUP5 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x1F9E SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0x1FAD DUP7 DUP6 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x1FB7 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH2 0x1FC3 ADDRESS DUP5 PUSH2 0x311E JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x2083 JUMPI PUSH2 0x2046 DUP3 DUP4 DUP12 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 DUP12 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x279B JUMP JUMPDEST ADD PUSH2 0x2073 PUSH32 0x0 DUP3 DUP14 DUP14 PUSH2 0x27FE JUMP JUMPDEST SWAP12 POP POP SWAP2 DUP11 SWAP1 SUB SWAP2 PUSH1 0x0 DUP12 PUSH2 0x21A3 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2138 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH2 0x2167 DUP2 DUP3 DUP11 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP5 DUP13 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x279B JUMP JUMPDEST DUP3 ADD SWAP2 POP PUSH2 0x2197 PUSH32 0x0 DUP4 DUP14 DUP14 PUSH2 0x27FE JUMP JUMPDEST POP SWAP11 POP SWAP3 DUP11 SWAP1 SUB SWAP3 DUP11 PUSH1 0x0 JUMPDEST PUSH2 0x21B0 DUP7 DUP7 DUP12 DUP12 DUP12 PUSH2 0x2D6E JUMP JUMPDEST PUSH2 0x21BD PUSH2 0x117C DUP7 DUP9 PUSH2 0x399E JUMP JUMPDEST PUSH1 0x9 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0xB SSTORE POP SWAP9 SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x229D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x0 SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP8 PUSH2 0x2318 DUP4 PUSH2 0x3A1E JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x23B9 SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2442 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x24BD JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x2523 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x2636 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE DUP6 DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1472C27100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH2 0x26D8 SWAP2 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2713 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2718 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2732 SWAP2 SWAP1 PUSH2 0x376B JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2636 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F57484954454C49535445440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x27C8 PUSH32 0x0 DUP7 PUSH2 0x399E JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x27D7 PUSH2 0x2710 DUP7 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x27E1 SWAP2 SWAP1 PUSH2 0x394B JUMP JUMPDEST PUSH2 0x27EB DUP5 DUP4 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x27F5 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2980 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xA4 DUP1 DUP5 ADD DUP9 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC4 SWAP1 SWAP4 ADD DUP5 MSTORE PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP3 MLOAD PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH2 0x28CD SWAP2 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x290A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x290F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x297A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57495448445241575F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST POP PUSH2 0x2AF0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP1 DUP4 ADD DUP8 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xA4 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 PUSH32 0x0 AND SWAP2 PUSH2 0x2A41 SWAP2 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2A7E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2A83 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2AEE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF7888AEC PUSH32 0x0 ADDRESS PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x2B8C SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x2BDA SWAP2 SWAP1 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2C15 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2C1A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2C32 SWAP2 SWAP1 PUSH2 0x37FA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP6 POP PUSH1 0x0 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH2 0x2D0E SWAP2 SWAP1 PUSH2 0x385D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2D49 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2D4E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2D66 SWAP2 SWAP1 PUSH2 0x37FA JUMP JUMPDEST SWAP3 POP POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 GT DUP1 ISZERO SWAP1 PUSH2 0x2D9A JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT ISZERO JUMPDEST PUSH2 0x2E00 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564552464C4F57000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x761 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH2 0x2E84 JUMPI PUSH1 0xA DUP1 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH15 0x10000000000000000000000000000 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP3 AND SWAP1 DUP9 AND OR OR SWAP1 SSTORE PUSH2 0x302F JUMP JUMPDEST TIMESTAMP PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP1 DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x2EAD JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x2EC8 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2F8D JUMPI DUP2 DUP2 SUB PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 PUSH1 0x70 DUP8 SWAP1 SHL AND DUP2 PUSH2 0x2F13 JUMPI PUSH2 0x2F13 PUSH2 0x3A86 JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV PUSH4 0xFFFFFFFF DUP6 AND DUP2 MUL SWAP1 SWAP3 ADD SWAP1 SSTORE SWAP1 POP PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x70 DUP9 SWAP1 SHL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND DUP2 PUSH2 0x2F6E JUMPI PUSH2 0x2F6E PUSH2 0x3A86 JUMP JUMPDEST DIV SWAP1 POP DUP3 PUSH4 0xFFFFFFFF AND DUP2 MUL PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 MUL PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH15 0x10000000000000000000000000000 MUL PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP6 AND SWAP1 DUP11 AND OR SWAP4 SWAP1 SWAP4 OR SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE PUSH32 0xCF2AA50876CDFBB541206F89AF0EE78D44A2ABF8D328E37FA4917F982149848A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0x0 SWAP1 DUP1 ISZERO PUSH2 0x3116 JUMPI PUSH1 0x0 PUSH2 0x309D PUSH2 0x117C PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND SWAP1 DUP10 AND PUSH2 0x399E JUMP JUMPDEST SWAP1 POP DUP2 DUP2 GT ISZERO PUSH2 0x3114 JUMPI PUSH2 0x2710 DUP2 PUSH1 0x6 SLOAD DUP5 DUP5 PUSH2 0x30BA SWAP2 SWAP1 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x30C4 SWAP1 DUP9 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x30CE SWAP2 SWAP1 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x30D8 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST PUSH2 0x30E2 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP3 POP DUP3 ISZERO PUSH2 0x3114 JUMPI PUSH2 0x3114 PUSH32 0x0 DUP5 PUSH2 0x342F JUMP JUMPDEST POP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x3153 SWAP1 DUP5 SWAP1 PUSH2 0x39DB JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x31C3 JUMPI POP PUSH1 0x0 SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH17 0x100000000000000000000000000000000 DUP3 LT PUSH2 0x31E9 JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x3204 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0x321B JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x3230 JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x3244 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x3257 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0x3263 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3274 JUMPI PUSH2 0x3274 PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x328C JUMPI PUSH2 0x328C PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x32A4 JUMPI PUSH2 0x32A4 PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x32BC JUMPI PUSH2 0x32BC PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x32D4 JUMPI PUSH2 0x32D4 PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x32EC JUMPI PUSH2 0x32EC PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0x3304 JUMPI PUSH2 0x3304 PUSH2 0x3A86 JUMP JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0x331C JUMPI PUSH2 0x331C PUSH2 0x3A86 JUMP JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0x3116 JUMPI DUP1 PUSH2 0x27F5 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 ISZERO DUP1 PUSH2 0x333A JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x334A JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x3426 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x3357 DUP6 DUP10 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x3361 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP DUP6 DUP2 GT PUSH2 0x33BC JUMPI PUSH2 0x3377 PUSH2 0x2710 PUSH1 0x2 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x3381 DUP3 DUP9 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x33AB SWAP1 PUSH32 0x0 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x33B5 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP2 POP PUSH2 0x3424 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x33C9 DUP8 DUP10 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x33D3 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP1 POP PUSH2 0x33E2 PUSH2 0x2710 PUSH1 0x2 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x33EC DUP3 DUP11 PUSH2 0x39DB JUMP JUMPDEST PUSH2 0x3416 SWAP1 PUSH32 0x0 PUSH2 0x399E JUMP JUMPDEST PUSH2 0x3420 SWAP2 SWAP1 PUSH2 0x3963 JUMP JUMPDEST SWAP4 POP POP JUMPDEST POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3441 SWAP2 SWAP1 PUSH2 0x394B JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x31A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x34B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x34BD DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x34D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x34E4 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x34F4 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x3504 DUP2 PUSH2 0x3B38 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3527 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3532 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3542 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x3552 DUP2 PUSH2 0x3B38 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3576 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x358A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x359C JUMPI PUSH2 0x359C PUSH2 0x3AE4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x35E2 JUMPI PUSH2 0x35E2 PUSH2 0x3AE4 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP12 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x35FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x363E DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x364E DUP2 PUSH2 0x3B38 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x366C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3677 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3698 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x36A3 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x364E DUP2 PUSH2 0x3B13 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x36C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x36D3 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x36E3 DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x370F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x371A DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x372A DUP2 PUSH2 0x3B13 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x374E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x377D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x34BD DUP2 PUSH2 0x3B38 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x379B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x37B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x37C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x37D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x37E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x380C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x382B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x39F2 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x386F DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x39F2 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x38C7 JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3895 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x392B JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x38F0 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x34BD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3813 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x395E JUMPI PUSH2 0x395E PUSH2 0x3A57 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3999 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x39D6 JUMPI PUSH2 0x39D6 PUSH2 0x3A57 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x39ED JUMPI PUSH2 0x39ED PUSH2 0x3A57 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3A0D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x39F5 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2AF0 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x3A50 JUMPI PUSH2 0x3A50 PUSH2 0x3A57 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3B35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3B35 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP16 PUSH5 0x2184248699 0xC1 PC 0xC1 DUP4 0x22 0xF8 0xDC LOG2 0xDE PUSH16 0xE2CC065D00EB82ED365836D516447C64 PUSH20 0x6F6C63430008070033A264697066735822122091 0xDA NOT SWAP12 0xE0 SSTORE PUSH11 0xA753BF6121932E41303157 0x5C DUP15 SHL DUP9 PUSH4 0xADF50D85 PUSH8 0x3B53EC8264736F6C PUSH4 0x43000807 STOP CALLER ",
              "sourceMap": "280:1119:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:62:44;;;;;;:::i;:::-;;:::i;:::-;;;3826:42:64;3814:55;;;3796:74;;3784:2;3769:18;250:62:44;;;;;;;;423:974:53;;;;;;:::i;:::-;;:::i;1535:143:44:-;;;;;;:::i;:::-;1643:13;;;;1610;1643;;;;;;;;;;;:21;;;;;;;;;;;:28;;1535:143;;;;6206:25:64;;;6194:2;6179:18;1535:143:44;6060:177:64;1684:345:44;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;204:39::-;;;;;318:48;;;;;;:::i;:::-;;;;;;;;;;;;;;;;250:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;250:62:44;;-1:-1:-1;;250:62:44:o;423:974:53:-;487:12;512:14;528;544:15;561:16;579:24;605:16;623:11;662;638:95;;;;;;;;;;;;:::i;:::-;511:222;;;;;;;;;;;;;;756:6;747:15;;:6;:15;;;743:81;;;798:6;;806;743:81;887:84;;;4194:42:64;4263:15;;;887:84:53;;;4245:34:64;4315:15;;;4295:18;;;4288:43;;;;4347:18;;;4340:34;;;4417:14;;4410:22;4390:18;;;4383:50;4470:15;;;4449:19;;;4442:44;4523:15;;;4502:19;;;4495:44;4583:14;;4576:22;4555:19;;;4548:51;4156:19;;887:84:53;;;;;;;;;;1022:1;1008:16;;;;;;;;;887:84;-1:-1:-1;982:23:53;;887:84;1008:16;;;;;;;;;;;;-1:-1:-1;1008:16:53;982:42;;1046:6;1034;1041:1;1034:9;;;;;;;;:::i;:::-;;;;;;:18;;;;;;;;;;;1074:6;1062;1069:1;1062:9;;;;;;;;:::i;:::-;:18;;;;:9;;;;;;;;;;:18;1225:22;;;;;;1272:74;;1225:22;;1235:11;;1331:14;;1272:74;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;1257:90;;1357:33;1371:4;1377:6;1385:4;1357:13;:33::i;:::-;501:896;;;;;;;;;423:974;;;:::o;1684:345:44:-;1830:26;1894:5;1880:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1880:20:44;;1868:32;;1915:9;1910:113;1934:5;1930:1;:9;1910:113;;;1975:13;;;;:5;:13;;;;;;;;;;;:21;;;;;;;;;1997:14;2010:1;1997:10;:14;:::i;:::-;1975:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1960:9;1970:1;1960:12;;;;;;;;:::i;:::-;:52;;;;:12;;;;;;;;;;;:52;1941:3;;;;:::i;:::-;;;;1910:113;;;;1684:345;;;;;;:::o;740:789::-;500:10;:28;514:14;500:28;;496:63;;537:22;;;;;;;;;;;;;;496:63;936:19:::1;::::0;;;:13:::1;:19;::::0;;;;:26;;;::::1;;::::0;::::1;;::::0;;1174:339:::1;1210:1;1194:6;:13;:17;1190:1;:21;1174:339;;;1253:6;1260:1;1264;1260:5;1253:13;;;;;;;;:::i;:::-;;;;;;;1240:26;;:6;1247:1;1240:9;;;;;;;;:::i;:::-;;;;;;;:26;;;1236:58;;1275:19;;;;;;;;;;;;;;1236:58;1333:1;1329:5:::0;::::1;1312:187;1340:6;:13;1336:1;:17;1312:187;;;1382:5;:16:::0;1388:6:::1;1395:1;1388:9;;;;;;;;:::i;:::-;;;;;;;1382:16;;;;;;;;;;;;;;;:27;1399:6;1406:1;1399:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;1382:27:::1;::::0;;::::1;::::0;;;;::::1;::::0;;;;;;;;-1:-1:-1;1382:27:44;;;:38;;::::1;::::0;::::1;::::0;;;;;;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;1448:9;;-1:-1:-1;;1448:9:44;;1455:1;;1448:9;::::1;;;;;:::i;:::-;;;;;;;1442:16;;;;;;;;;;;;;;;:27;1459:6;1466:1;1459:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;1442:27:::1;::::0;;::::1;::::0;;;;::::1;::::0;;;;;;;;-1:-1:-1;1442:27:44;;;:38;;::::1;::::0;;::::1;::::0;;;;;;;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;1355:3:::1;1312:187;;;-1:-1:-1::0;1213:3:44::1;;1174:339;;;;740:789:::0;;;:::o;-1:-1:-1:-;;;;;;;;:::o;14:164:64:-;90:13;;139;;132:21;122:32;;112:60;;168:1;165;158:12;112:60;14:164;;;:::o;183:908::-;333:6;341;349;357;365;373;381;434:3;422:9;413:7;409:23;405:33;402:53;;;451:1;448;441:12;402:53;483:9;477:16;502:31;527:5;502:31;:::i;:::-;602:2;587:18;;581:25;552:5;;-1:-1:-1;615:33:64;581:25;615:33;:::i;:::-;714:2;699:18;;693:25;667:7;;-1:-1:-1;693:25:64;-1:-1:-1;737:46:64;779:2;764:18;;737:46;:::i;:::-;727:56;;828:3;817:9;813:19;807:26;842:33;867:7;842:33;:::i;:::-;946:3;931:19;;925:26;894:7;;-1:-1:-1;960:33:64;925:26;960:33;:::i;:::-;1012:7;-1:-1:-1;1038:47:64;1080:3;1065:19;;1038:47;:::i;:::-;1028:57;;183:908;;;;;;;;;;:::o;1096:388::-;1164:6;1172;1225:2;1213:9;1204:7;1200:23;1196:32;1193:52;;;1241:1;1238;1231:12;1193:52;1280:9;1267:23;1299:31;1324:5;1299:31;:::i;:::-;1349:5;-1:-1:-1;1406:2:64;1391:18;;1378:32;1419:33;1378:32;1419:33;:::i;:::-;1471:7;1461:17;;;1096:388;;;;;:::o;1489:456::-;1566:6;1574;1582;1635:2;1623:9;1614:7;1610:23;1606:32;1603:52;;;1651:1;1648;1641:12;1603:52;1690:9;1677:23;1709:31;1734:5;1709:31;:::i;:::-;1759:5;-1:-1:-1;1816:2:64;1801:18;;1788:32;1829:33;1788:32;1829:33;:::i;:::-;1489:456;;1881:7;;-1:-1:-1;;;1935:2:64;1920:18;;;;1907:32;;1489:456::o;1950:525::-;2036:6;2044;2052;2060;2113:3;2101:9;2092:7;2088:23;2084:33;2081:53;;;2130:1;2127;2120:12;2081:53;2169:9;2156:23;2188:31;2213:5;2188:31;:::i;:::-;2238:5;-1:-1:-1;2295:2:64;2280:18;;2267:32;2308:33;2267:32;2308:33;:::i;:::-;1950:525;;2360:7;;-1:-1:-1;;;;2414:2:64;2399:18;;2386:32;;2465:2;2450:18;2437:32;;1950:525::o;2480:180::-;2539:6;2592:2;2580:9;2571:7;2567:23;2563:32;2560:52;;;2608:1;2605;2598:12;2560:52;-1:-1:-1;2631:23:64;;2480:180;-1:-1:-1;2480:180:64:o;2665:980::-;2733:6;2786:2;2774:9;2765:7;2761:23;2757:32;2754:52;;;2802:1;2799;2792:12;2754:52;2842:9;2829:23;2871:18;2912:2;2904:6;2901:14;2898:34;;;2928:1;2925;2918:12;2898:34;2966:6;2955:9;2951:22;2941:32;;3011:7;3004:4;3000:2;2996:13;2992:27;2982:55;;3033:1;3030;3023:12;2982:55;3069:2;3056:16;3091:2;3087;3084:10;3081:36;;;3097:18;;:::i;:::-;3231:2;3225:9;3293:4;3285:13;;3136:66;3281:22;;;3305:2;3277:31;3273:40;3261:53;;;3329:18;;;3349:22;;;3326:46;3323:72;;;3375:18;;:::i;:::-;3415:10;3411:2;3404:22;3450:2;3442:6;3435:18;3490:7;3485:2;3480;3476;3472:11;3468:20;3465:33;3462:53;;;3511:1;3508;3501:12;3462:53;3567:2;3562;3558;3554:11;3549:2;3541:6;3537:15;3524:46;3612:1;3590:15;;;3607:2;3586:24;3579:35;;;;-1:-1:-1;3594:6:64;2665:980;-1:-1:-1;;;;;2665:980:64:o;4610:681::-;4781:2;4833:21;;;4903:13;;4806:18;;;4925:22;;;4752:4;;4781:2;5004:15;;;;4978:2;4963:18;;;4752:4;5047:218;5061:6;5058:1;5055:13;5047:218;;;5126:13;;5141:42;5122:62;5110:75;;5240:15;;;;5205:12;;;;5083:1;5076:9;5047:218;;;-1:-1:-1;5282:3:64;;4610:681;-1:-1:-1;;;;;;4610:681:64:o;5296:759::-;5471:2;5460:9;5453:21;5434:4;5503:6;5497:13;5546:6;5541:2;5530:9;5526:18;5519:34;5571:1;5581:144;5595:6;5592:1;5589:13;5581:144;;;5708:4;5692:14;;;5688:25;;5682:32;5677:2;5658:17;;;5654:26;5647:68;5610:12;5581:144;;;5743:6;5740:1;5737:13;5734:91;;;5813:1;5808:2;5799:6;5788:9;5784:22;5780:31;5773:42;5734:91;-1:-1:-1;6005:42:64;5993:55;;;;5986:4;5971:20;;5964:85;-1:-1:-1;5877:2:64;5865:15;;;;5882:66;5861:88;5846:104;5952:2;5842:113;;5296:759;-1:-1:-1;5296:759:64:o;6242:128::-;6282:3;6313:1;6309:6;6306:1;6303:13;6300:39;;;6319:18;;:::i;:::-;-1:-1:-1;6355:9:64;;6242:128::o;6375:195::-;6414:3;6445:66;6438:5;6435:77;6432:103;;;6515:18;;:::i;:::-;-1:-1:-1;6562:1:64;6551:13;;6375:195::o;6575:184::-;6627:77;6624:1;6617:88;6724:4;6721:1;6714:15;6748:4;6745:1;6738:15;6764:184;6816:77;6813:1;6806:88;6913:4;6910:1;6903:15;6937:4;6934:1;6927:15;6953:184;7005:77;7002:1;6995:88;7102:4;7099:1;7092:15;7126:4;7123:1;7116:15;7142:154;7228:42;7221:5;7217:54;7210:5;7207:65;7197:93;;7286:1;7283;7276:12;7197:93;7142:154;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "4212200",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "configAddress(bytes32)": "2486",
                "deployPool(bytes)": "infinite",
                "getPools(address,address,uint256,uint256)": "infinite",
                "masterDeployer()": "infinite",
                "pools(address,address,uint256)": "infinite",
                "poolsCount(address,address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "configAddress(bytes32)": "f6ab6d99",
              "deployPool(bytes)": "27c3cae1",
              "getPools(address,address,uint256,uint256)": "71a25812",
              "masterDeployer()": "cf58879a",
              "pools(address,address,uint256)": "169c4cef",
              "poolsCount(address,address)": "5bc93d6c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_masterDeployer\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidTokenOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorisedDeployer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"configAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_deployData\",\"type\":\"bytes\"}],\"name\":\"deployPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pairPools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterDeployer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pools\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"}],\"name\":\"poolsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Mudit Gupta.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contract for deploying Trident exchange Franchised Constant Product Pool with configurations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/franchised/FranchisedConstantProductPoolFactory.sol\":\"FranchisedConstantProductPoolFactory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentCallee.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool callback interface.\\ninterface ITridentCallee {\\n    function tridentSwapCallback(bytes calldata data) external;\\n\\n    function tridentMintCallback(bytes calldata data) external;\\n}\\n\",\"keccak256\":\"0x256e838362a3064201b37b3b7c08bc1421b173a6fea633176123f0b827b868c9\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IWhiteListManager.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident franchised pool whitelist manager interface.\\ninterface IWhiteListManager {\\n    function whitelistedAccounts(address operator, address account) external returns (bool);\\n}\\n\",\"keccak256\":\"0x8de295afb9c76132947e2fd4f120bc437ee2c6f41fda1db2bcf6074b977d6df8\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/TridentMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident sqrt helper library.\\nlibrary TridentMath {\\n    /// @notice Calculate sqrt (x) rounding down, where `x` is unsigned 256-bit integer number.\\n    /// @dev Adapted from https://github.com/abdk-consulting/abdk-libraries-solidity/blob/master/ABDKMath64x64.sol, \\n    /// \\u00a9 2019 ABDK Consulting, License-Identifier: BSD-4-Clause.\\n    /// @param x Unsigned 256-bit integer number.\\n    /// @return result Sqrt result.\\n    function sqrt(uint256 x) internal pure returns (uint256 result) {\\n        unchecked {\\n            if (x == 0) result = 0;\\n            else {\\n                uint256 xx = x;\\n                uint256 r = 1;\\n                if (xx >= 0x100000000000000000000000000000000) {\\n                    xx >>= 128;\\n                    r <<= 64;\\n                }\\n                if (xx >= 0x10000000000000000) {\\n                    xx >>= 64;\\n                    r <<= 32;\\n                }\\n                if (xx >= 0x100000000) {\\n                    xx >>= 32;\\n                    r <<= 16;\\n                }\\n                if (xx >= 0x10000) {\\n                    xx >>= 16;\\n                    r <<= 8;\\n                }\\n                if (xx >= 0x100) {\\n                    xx >>= 8;\\n                    r <<= 4;\\n                }\\n                if (xx >= 0x10) {\\n                    xx >>= 4;\\n                    r <<= 2;\\n                }\\n                if (xx >= 0x8) {\\n                    r <<= 1;\\n                }\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1;\\n                r = (r + x / r) >> 1; // @dev Seven iterations should be enough.\\n                uint256 r1 = x / r;\\n                result = r < r1 ? r : r1;\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xccbada517ace78149a4602ce782e6faf408404ee300569b8adf76e0eb7f0dd3b\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/PoolDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer for whitelisted template factories.\\n/// @author Mudit Gupta.\\nabstract contract PoolDeployer {\\n    address public immutable masterDeployer;\\n\\n    mapping(address => mapping(address => address[])) public pools;\\n    mapping(bytes32 => address) public configAddress;\\n\\n    error UnauthorisedDeployer();\\n    error ZeroAddress();\\n    error InvalidTokenOrder();\\n\\n    modifier onlyMaster() {\\n        if (msg.sender != masterDeployer) revert UnauthorisedDeployer();\\n        _;\\n    }\\n\\n    constructor(address _masterDeployer) {\\n        if (_masterDeployer == address(0)) revert ZeroAddress();\\n        masterDeployer = _masterDeployer;\\n    }\\n\\n    function _registerPool(\\n        address pool,\\n        address[] memory tokens,\\n        bytes32 salt\\n    ) internal onlyMaster {\\n        // @dev Store the address of the deployed contract.\\n        configAddress[salt] = pool;\\n        // @dev Attacker used underflow, it was not very effective. poolimon!\\n        // null token array would cause deployment to fail via out of bounds memory axis/gas limit.\\n        unchecked {\\n            for (uint256 i; i < tokens.length - 1; i++) {\\n                if (tokens[i] >= tokens[i + 1]) revert InvalidTokenOrder();\\n                for (uint256 j = i + 1; j < tokens.length; j++) {\\n                    pools[tokens[i]][tokens[j]].push(pool);\\n                    pools[tokens[j]][tokens[i]].push(pool);\\n                }\\n            }\\n        }\\n    }\\n\\n    function poolsCount(address token0, address token1) external view returns (uint256 count) {\\n        count = pools[token0][token1].length;\\n    }\\n\\n    function getPools(\\n        address token0,\\n        address token1,\\n        uint256 startIndex,\\n        uint256 count\\n    ) external view returns (address[] memory pairPools) {\\n        pairPools = new address[](count);\\n        for (uint256 i = 0; i < count; i++) {\\n            pairPools[i] = pools[token0][token1][startIndex + i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x34c44a489ccaf9a7b2bc05527113552a2ebc5a8b4b9d47035e465c39cf569b81\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/franchised/FranchisedConstantProductPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../../interfaces/IBentoBoxMinimal.sol\\\";\\nimport \\\"../../interfaces/IMasterDeployer.sol\\\";\\nimport \\\"../../interfaces/IPool.sol\\\";\\nimport \\\"../../interfaces/ITridentCallee.sol\\\";\\nimport \\\"../../libraries/TridentMath.sol\\\";\\nimport \\\"./TridentFranchisedERC20.sol\\\";\\n\\n/// @notice Trident exchange franchised pool template with constant product formula for swapping between an ERC-20 token pair.\\n/// @dev The reserves are stored as bento shares.\\n///      The curve is applied to shares as well. This pool does not care about the underlying amounts.\\ncontract FranchisedConstantProductPool is IPool, TridentFranchisedERC20 {\\n    event Mint(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\\n    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\\n    event Sync(uint256 reserve0, uint256 reserve1);\\n\\n    uint256 internal constant MINIMUM_LIQUIDITY = 1000;\\n\\n    uint8 internal constant PRECISION = 112;\\n    uint256 internal constant MAX_FEE = 10000; // @dev 100%.\\n    uint256 internal constant MAX_FEE_SQUARE = 100000000;\\n    uint256 internal constant E18 = uint256(10)**18;\\n    uint256 public immutable swapFee;\\n    uint256 internal immutable MAX_FEE_MINUS_SWAP_FEE;\\n\\n    address public immutable barFeeTo;\\n    address public immutable bento;\\n    address public immutable masterDeployer;\\n    address public immutable token0;\\n    address public immutable token1;\\n\\n    uint256 public barFee;\\n    uint256 public price0CumulativeLast;\\n    uint256 public price1CumulativeLast;\\n    uint256 public kLast;\\n\\n    uint112 internal reserve0;\\n    uint112 internal reserve1;\\n    uint32 internal blockTimestampLast;\\n\\n    bytes32 public constant override poolIdentifier = \\\"Trident:FranchisedCP\\\";\\n\\n    uint256 internal unlocked;\\n    modifier lock() {\\n        require(unlocked == 1, \\\"LOCKED\\\");\\n        unlocked = 2;\\n        _;\\n        unlocked = 1;\\n    }\\n\\n    constructor(bytes memory _deployData, address _masterDeployer) {\\n        (\\n            address _token0,\\n            address _token1,\\n            uint256 _swapFee,\\n            bool _twapSupport,\\n            address _whiteListManager,\\n            address _operator,\\n            bool _level2\\n        ) = abi.decode(_deployData, (address, address, uint256, bool, address, address, bool));\\n\\n        // @dev Factory ensures that the tokens are sorted.\\n        require(_token0 != address(0), \\\"ZERO_ADDRESS\\\");\\n        require(_token0 != _token1, \\\"IDENTICAL_ADDRESSES\\\");\\n        require(_token0 != address(this), \\\"INVALID_TOKEN\\\");\\n        require(_token1 != address(this), \\\"INVALID_TOKEN\\\");\\n        require(_swapFee <= MAX_FEE, \\\"INVALID_SWAP_FEE\\\");\\n\\n        TridentFranchisedERC20.initialize(_whiteListManager, _operator, _level2);\\n\\n        (, bytes memory _barFee) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFee.selector));\\n        (, bytes memory _barFeeTo) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFeeTo.selector));\\n        (, bytes memory _bento) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.bento.selector));\\n\\n        token0 = _token0;\\n        token1 = _token1;\\n        swapFee = _swapFee;\\n        // @dev This is safe from underflow - `swapFee` cannot exceed `MAX_FEE` per previous check.\\n        unchecked {\\n            MAX_FEE_MINUS_SWAP_FEE = MAX_FEE - _swapFee;\\n        }\\n        barFee = abi.decode(_barFee, (uint256));\\n        barFeeTo = abi.decode(_barFeeTo, (address));\\n        bento = abi.decode(_bento, (address));\\n        masterDeployer = _masterDeployer;\\n        unlocked = 1;\\n        if (_twapSupport) blockTimestampLast = 1;\\n    }\\n\\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\\n    /// The router must ensure that sufficient LP tokens are minted by using the return value.\\n    function mint(bytes calldata data) public override lock returns (uint256 liquidity) {\\n        address recipient = abi.decode(data, (address));\\n        _checkWhiteList(recipient);\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 _totalSupply = totalSupply;\\n\\n        unchecked {\\n            _totalSupply += _mintFee(_reserve0, _reserve1, _totalSupply);\\n        }\\n\\n        uint256 amount0 = balance0 - _reserve0;\\n        uint256 amount1 = balance1 - _reserve1;\\n        (uint256 fee0, uint256 fee1) = _nonOptimalMintFee(amount0, amount1, _reserve0, _reserve1);\\n        uint256 computed = TridentMath.sqrt((balance0 - fee0) * (balance1 - fee1));\\n\\n        if (_totalSupply == 0) {\\n            _mint(address(0), MINIMUM_LIQUIDITY);\\n            liquidity = computed - MINIMUM_LIQUIDITY;\\n        } else {\\n            uint256 k = TridentMath.sqrt(uint256(_reserve0) * _reserve1);\\n            liquidity = ((computed - k) * _totalSupply) / k;\\n        }\\n        require(liquidity != 0, \\\"INSUFFICIENT_LIQUIDITY_MINTED\\\");\\n        _mint(recipient, liquidity);\\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n        kLast = TridentMath.sqrt(balance0 * balance1);\\n        uint256 liquidityForEvent = liquidity;\\n        emit Mint(msg.sender, amount0, amount1, recipient, liquidityForEvent);\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\\n    function burn(bytes calldata data) public override lock returns (IPool.TokenAmount[] memory withdrawnAmounts) {\\n        (address recipient, bool unwrapBento) = abi.decode(data, (address, bool));\\n        _checkWhiteList(recipient);\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 _totalSupply = totalSupply;\\n        uint256 liquidity = balanceOf[address(this)];\\n\\n        unchecked {\\n            _totalSupply += _mintFee(_reserve0, _reserve1, _totalSupply);\\n        }\\n\\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\\n\\n        _burn(address(this), liquidity);\\n        _transfer(token0, amount0, recipient, unwrapBento);\\n        _transfer(token1, amount1, recipient, unwrapBento);\\n        // @dev This is safe from underflow - amounts are lesser figures derived from balances.\\n        unchecked {\\n            balance0 -= amount0;\\n            balance1 -= amount1;\\n        }\\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n        kLast = TridentMath.sqrt(balance0 * balance1);\\n\\n        withdrawnAmounts = new TokenAmount[](2);\\n        withdrawnAmounts[0] = TokenAmount({token: address(token0), amount: amount0});\\n        withdrawnAmounts[1] = TokenAmount({token: address(token1), amount: amount1});\\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\\n    /// - i.e., the user gets a single token out by burning LP tokens.\\n    function burnSingle(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenOut, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\\n        _checkWhiteList(recipient);\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 _totalSupply = totalSupply;\\n        uint256 liquidity = balanceOf[address(this)];\\n\\n        unchecked {\\n            _totalSupply += _mintFee(_reserve0, _reserve1, _totalSupply);\\n        }\\n\\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\\n\\n        _burn(address(this), liquidity);\\n        unchecked {\\n            if (tokenOut == token1) {\\n                // @dev Swap `token0` for `token1`\\n                // - calculate `amountOut` as if the user first withdrew balanced liquidity and then swapped `token0` for `token1`.\\n                amount1 += _getAmountOut(amount0, _reserve0 - amount0, _reserve1 - amount1);\\n                _transfer(token1, amount1, recipient, unwrapBento);\\n                balance1 -= amount1;\\n                amountOut = amount1;\\n                amount0 = 0;\\n            } else {\\n                // @dev Swap `token1` for `token0`.\\n                require(tokenOut == token0, \\\"INVALID_OUTPUT_TOKEN\\\");\\n                amount0 += _getAmountOut(amount1, _reserve1 - amount1, _reserve0 - amount0);\\n                _transfer(token0, amount0, recipient, unwrapBento);\\n                balance0 -= amount0;\\n                amountOut = amount0;\\n                amount1 = 0;\\n            }\\n        }\\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n        kLast = TridentMath.sqrt(balance0 * balance1);\\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\\n    function swap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\\n        if (level2) _checkWhiteList(recipient);\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 amountIn;\\n        address tokenOut;\\n        unchecked {\\n            if (tokenIn == token0) {\\n                tokenOut = token1;\\n                amountIn = balance0 - _reserve0;\\n                amountOut = _getAmountOut(amountIn, _reserve0, _reserve1);\\n                balance1 -= amountOut;\\n            } else {\\n                require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n                tokenOut = token0;\\n                amountIn = balance1 - reserve1;\\n                amountOut = _getAmountOut(amountIn, _reserve1, _reserve0);\\n                balance0 -= amountOut;\\n            }\\n        }\\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n        _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage.\\n    function flashSwap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address recipient, bool unwrapBento, uint256 amountIn, bytes memory context) = abi.decode(\\n            data,\\n            (address, address, bool, uint256, bytes)\\n        );\\n        if (level2) _checkWhiteList(recipient);\\n        (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) = _getReserves();\\n        unchecked {\\n            if (tokenIn == token0) {\\n                amountOut = _getAmountOut(amountIn, _reserve0, _reserve1);\\n                _transfer(token1, amountOut, recipient, unwrapBento);\\n                ITridentCallee(msg.sender).tridentSwapCallback(context);\\n                (uint256 balance0, uint256 balance1) = _balance();\\n                require(balance0 - _reserve0 >= amountIn, \\\"INSUFFICIENT_AMOUNT_IN\\\");\\n                _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n                emit Swap(recipient, tokenIn, token1, amountIn, amountOut);\\n            } else {\\n                require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n                amountOut = _getAmountOut(amountIn, _reserve1, _reserve0);\\n                _transfer(token0, amountOut, recipient, unwrapBento);\\n                ITridentCallee(msg.sender).tridentSwapCallback(context);\\n                (uint256 balance0, uint256 balance1) = _balance();\\n                require(balance1 - _reserve1 >= amountIn, \\\"INSUFFICIENT_AMOUNT_IN\\\");\\n                _update(balance0, balance1, _reserve0, _reserve1, _blockTimestampLast);\\n                emit Swap(recipient, tokenIn, token0, amountIn, amountOut);\\n            }\\n        }\\n    }\\n\\n    /// @dev Updates `barFee` for Trident protocol.\\n    function updateBarFee() public {\\n        (, bytes memory _barFee) = masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFee.selector));\\n        barFee = abi.decode(_barFee, (uint256));\\n    }\\n\\n    function _getReserves()\\n        internal\\n        view\\n        returns (\\n            uint112 _reserve0,\\n            uint112 _reserve1,\\n            uint32 _blockTimestampLast\\n        )\\n    {\\n        _reserve0 = reserve0;\\n        _reserve1 = reserve1;\\n        _blockTimestampLast = blockTimestampLast;\\n    }\\n\\n    function _balance() internal view returns (uint256 balance0, uint256 balance1) {\\n        // @dev balanceOf(address,address).\\n        (, bytes memory _balance0) = bento.staticcall(abi.encodeWithSelector(0xf7888aec, token0, address(this)));\\n        balance0 = abi.decode(_balance0, (uint256));\\n        // @dev balanceOf(address,address).\\n        (, bytes memory _balance1) = bento.staticcall(abi.encodeWithSelector(0xf7888aec, token1, address(this)));\\n        balance1 = abi.decode(_balance1, (uint256));\\n    }\\n\\n    function _update(\\n        uint256 balance0,\\n        uint256 balance1,\\n        uint112 _reserve0,\\n        uint112 _reserve1,\\n        uint32 _blockTimestampLast\\n    ) internal {\\n        require(balance0 <= type(uint112).max && balance1 <= type(uint112).max, \\\"OVERFLOW\\\");\\n        if (blockTimestampLast == 0) {\\n            // @dev TWAP support is disabled for gas efficiency.\\n            reserve0 = uint112(balance0);\\n            reserve1 = uint112(balance1);\\n        } else {\\n            uint32 blockTimestamp = uint32(block.timestamp);\\n            if (blockTimestamp != _blockTimestampLast && _reserve0 != 0 && _reserve1 != 0) {\\n                unchecked {\\n                    uint32 timeElapsed = blockTimestamp - _blockTimestampLast;\\n                    uint256 price0 = (uint256(_reserve1) << PRECISION) / _reserve0;\\n                    price0CumulativeLast += price0 * timeElapsed;\\n                    uint256 price1 = (uint256(_reserve0) << PRECISION) / _reserve1;\\n                    price1CumulativeLast += price1 * timeElapsed;\\n                }\\n            }\\n            reserve0 = uint112(balance0);\\n            reserve1 = uint112(balance1);\\n            blockTimestampLast = blockTimestamp;\\n        }\\n        emit Sync(balance0, balance1);\\n    }\\n\\n    function _mintFee(\\n        uint112 _reserve0,\\n        uint112 _reserve1,\\n        uint256 _totalSupply\\n    ) internal returns (uint256 liquidity) {\\n        uint256 _kLast = kLast;\\n        if (_kLast != 0) {\\n            uint256 computed = TridentMath.sqrt(uint256(_reserve0) * _reserve1);\\n            if (computed > _kLast) {\\n                // @dev `barFee` % of increase in liquidity.\\n                // It's going to be slightly less than `barFee` % in reality due to the math.\\n                liquidity = (_totalSupply * (computed - _kLast) * barFee) / computed / MAX_FEE;\\n                if (liquidity != 0) {\\n                    _mint(barFeeTo, liquidity);\\n                }\\n            }\\n        }\\n    }\\n\\n    function _getAmountOut(\\n        uint256 amountIn,\\n        uint256 reserveAmountIn,\\n        uint256 reserveAmountOut\\n    ) internal view returns (uint256 amountOut) {\\n        uint256 amountInWithFee = amountIn * MAX_FEE_MINUS_SWAP_FEE;\\n        amountOut = (amountInWithFee * reserveAmountOut) / (reserveAmountIn * MAX_FEE + amountInWithFee);\\n    }\\n\\n    function _transfer(\\n        address token,\\n        uint256 shares,\\n        address to,\\n        bool unwrapBento\\n    ) internal {\\n        if (unwrapBento) {\\n            (bool success, ) = bento.call(abi.encodeWithSelector(IBentoBoxMinimal.withdraw.selector, token, address(this), to, 0, shares));\\n            require(success, \\\"WITHDRAW_FAILED\\\");\\n        } else {\\n            (bool success, ) = bento.call(abi.encodeWithSelector(IBentoBoxMinimal.transfer.selector, token, address(this), to, shares));\\n            require(success, \\\"TRANSFER_FAILED\\\");\\n        }\\n    }\\n\\n    /// @dev This fee is charged to cover for `swapFee` when users add unbalanced liquidity.\\n    function _nonOptimalMintFee(\\n        uint256 _amount0,\\n        uint256 _amount1,\\n        uint256 _reserve0,\\n        uint256 _reserve1\\n    ) internal view returns (uint256 token0Fee, uint256 token1Fee) {\\n        if (_reserve0 == 0 || _reserve1 == 0) return (0, 0);\\n        uint256 amount1Optimal = (_amount0 * _reserve1) / _reserve0;\\n        if (amount1Optimal <= _amount1) {\\n            token1Fee = (swapFee * (_amount1 - amount1Optimal)) / (2 * MAX_FEE);\\n        } else {\\n            uint256 amount0Optimal = (_amount1 * _reserve0) / _reserve1;\\n            token0Fee = (swapFee * (_amount0 - amount0Optimal)) / (2 * MAX_FEE);\\n        }\\n    }\\n\\n    function getAssets() public view override returns (address[] memory assets) {\\n        assets = new address[](2);\\n        assets[0] = token0;\\n        assets[1] = token1;\\n    }\\n\\n    function getAmountOut(bytes calldata data) public view override returns (uint256 finalAmountOut) {\\n        (address tokenIn, uint256 amountIn) = abi.decode(data, (address, uint256));\\n        (uint112 _reserve0, uint112 _reserve1, ) = _getReserves();\\n        if (tokenIn == token0) {\\n            finalAmountOut = _getAmountOut(amountIn, _reserve0, _reserve1);\\n        } else {\\n            require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n            finalAmountOut = _getAmountOut(amountIn, _reserve1, _reserve0);\\n        }\\n    }\\n\\n    function getAmountIn(bytes calldata) public pure override returns (uint256) {\\n        revert();\\n    }\\n\\n    function getReserves()\\n        public\\n        view\\n        returns (\\n            uint112 _reserve0,\\n            uint112 _reserve1,\\n            uint32 _blockTimestampLast\\n        )\\n    {\\n        return _getReserves();\\n    }\\n}\\n\",\"keccak256\":\"0x63846c8e4c0eeb6d17b3ee7540bb336369ecedc000f451364f1c7c1f3c0e7ce5\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/franchised/FranchisedConstantProductPoolFactory.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./FranchisedConstantProductPool.sol\\\";\\nimport \\\"../PoolDeployer.sol\\\";\\n\\n/// @notice Contract for deploying Trident exchange Franchised Constant Product Pool with configurations.\\n/// @author Mudit Gupta.\\ncontract FranchisedConstantProductPoolFactory is PoolDeployer {\\n    constructor(address _masterDeployer) PoolDeployer(_masterDeployer) {}\\n\\n    function deployPool(bytes memory _deployData) external returns (address pool) {\\n        (address tokenA, address tokenB, uint256 swapFee, bool twapSupport, address whiteListManager, address operator, bool level2) = abi\\n            .decode(_deployData, (address, address, uint256, bool, address, address, bool));\\n        if (tokenA > tokenB) {\\n            (tokenA, tokenB) = (tokenB, tokenA);\\n        }\\n\\n        // @dev Strips any extra data.\\n        _deployData = abi.encode(tokenA, tokenB, swapFee, twapSupport, whiteListManager, operator, level2);\\n\\n        address[] memory tokens = new address[](2);\\n        tokens[0] = tokenA;\\n        tokens[1] = tokenB;\\n\\n        // @dev Salt is not actually needed since `_deployData` is part of creationCode and already contains the salt.\\n        bytes32 salt = keccak256(_deployData);\\n        pool = address(new FranchisedConstantProductPool{salt: salt}(_deployData, masterDeployer));\\n        _registerPool(pool, tokens, salt);\\n    }\\n}\\n\",\"keccak256\":\"0xfb1f6915fb34a4a5e43aac419a7809ebbec8555bee9bcdd24f4a89814ca2431d\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/franchised/TridentFranchisedERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../../interfaces/IWhiteListManager.sol\\\";\\n\\n/// @notice Trident franchised pool ERC-20 with EIP-2612 extension.\\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol,\\n/// License-Identifier: AGPL-3.0-only.\\nabstract contract TridentFranchisedERC20 {\\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\\n    event Transfer(address indexed sender, address indexed recipient, uint256 amount);\\n\\n    string public constant name = \\\"Sushi Franchised LP Token\\\";\\n    string public constant symbol = \\\"SLP\\\";\\n    uint8 public constant decimals = 18;\\n\\n    address public whiteListManager;\\n    address public operator;\\n    bool public level2;\\n\\n    uint256 public totalSupply;\\n    /// @notice owner -> balance mapping.\\n    mapping(address => uint256) public balanceOf;\\n    /// @notice owner -> spender -> allowance mapping.\\n    mapping(address => mapping(address => uint256)) public allowance;\\n\\n    /// @notice The EIP-712 typehash for this contract's {permit} struct.\\n    bytes32 public constant PERMIT_TYPEHASH =\\n        keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n    /// @notice The EIP-712 typehash for this contract's domain.\\n    bytes32 public immutable DOMAIN_SEPARATOR;\\n    /// @notice owner -> nonce mapping used in {permit}.\\n    mapping(address => uint256) public nonces;\\n\\n    constructor() {\\n        DOMAIN_SEPARATOR = keccak256(\\n            abi.encode(\\n                keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"),\\n                keccak256(bytes(name)),\\n                keccak256(bytes(\\\"1\\\")),\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    /// @dev Initializes whitelist settings from pool.\\n    function initialize(\\n        address _whiteListManager,\\n        address _operator,\\n        bool _level2\\n    ) internal {\\n        whiteListManager = _whiteListManager;\\n        operator = _operator;\\n        if (_level2) level2 = true;\\n    }\\n\\n    /// @notice Approves `amount` from `msg.sender` to be spent by `spender`.\\n    /// @param spender Address of the party that can pull tokens from `msg.sender`'s account.\\n    /// @param amount The maximum collective `amount` that `spender` can pull.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function approve(address spender, uint256 amount) external returns (bool) {\\n        allowance[msg.sender][spender] = amount;\\n        emit Approval(msg.sender, spender, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `msg.sender` to `recipient`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transfer(address recipient, uint256 amount) external returns (bool) {\\n        if (level2) _checkWhiteList(recipient);\\n        balanceOf[msg.sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(msg.sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\\n    /// @param sender Address to pull tokens `from`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool) {\\n        if (level2) _checkWhiteList(recipient);\\n        if (allowance[sender][msg.sender] != type(uint256).max) {\\n            allowance[sender][msg.sender] -= amount;\\n        }\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Triggers an approval from `owner` to `spender`.\\n    /// @param owner The address to approve from.\\n    /// @param spender The address to be approved.\\n    /// @param amount The number of tokens that are approved (2^256-1 means infinite).\\n    /// @param deadline The time at which to expire the signature.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        require(deadline >= block.timestamp, \\\"PERMIT_DEADLINE_EXPIRED\\\");\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                \\\"\\\\x19\\\\x01\\\",\\n                DOMAIN_SEPARATOR,\\n                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))\\n            )\\n        );\\n        address recoveredAddress = ecrecover(digest, v, r, s);\\n        require(recoveredAddress != address(0) && recoveredAddress == owner, \\\"INVALID_PERMIT_SIGNATURE\\\");\\n        allowance[recoveredAddress][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    function _mint(address recipient, uint256 amount) internal {\\n        totalSupply += amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(address(0), recipient, amount);\\n    }\\n\\n    function _burn(address sender, uint256 amount) internal {\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from underflow - users won't ever\\n        // have a balance larger than `totalSupply`.\\n        unchecked {\\n            totalSupply -= amount;\\n        }\\n        emit Transfer(sender, address(0), amount);\\n    }\\n\\n    /// @dev Checks `whiteListManager` for pool `operator` and given user `account`.\\n    function _checkWhiteList(address account) internal view {\\n        (, bytes memory _whitelisted) = whiteListManager.staticcall(\\n            abi.encodeWithSelector(IWhiteListManager.whitelistedAccounts.selector, operator, account)\\n        );\\n        bool whitelisted = abi.decode(_whitelisted, (bool));\\n        require(whitelisted, \\\"NOT_WHITELISTED\\\");\\n    }\\n}\\n\",\"keccak256\":\"0x2d3db0ed7c3fb40367a4a3fa8fc5ba3dece956fb319b9963cfe5b63ea1ee3b06\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 11688,
                "contract": "contracts/pool/franchised/FranchisedConstantProductPoolFactory.sol:FranchisedConstantProductPoolFactory",
                "label": "pools",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_address,t_mapping(t_address,t_array(t_address)dyn_storage))"
              },
              {
                "astId": 11692,
                "contract": "contracts/pool/franchised/FranchisedConstantProductPoolFactory.sol:FranchisedConstantProductPoolFactory",
                "label": "configAddress",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_bytes32,t_address)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_address)dyn_storage": {
                "base": "t_address",
                "encoding": "dynamic_array",
                "label": "address[]",
                "numberOfBytes": "32"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_array(t_address)dyn_storage)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => address[])",
                "numberOfBytes": "32",
                "value": "t_array(t_address)dyn_storage"
              },
              "t_mapping(t_address,t_mapping(t_address,t_array(t_address)dyn_storage))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => address[]))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_array(t_address)dyn_storage)"
              },
              "t_mapping(t_bytes32,t_address)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Contract for deploying Trident exchange Franchised Constant Product Pool with configurations.",
            "version": 1
          }
        }
      },
      "contracts/pool/franchised/FranchisedHybridPool.sol": {
        "FranchisedHybridPool": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount0",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount1",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount0",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount1",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "name": "Mint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenIn",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOut",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "name": "Swap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "reserve0",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "reserve1",
                  "type": "uint256"
                }
              ],
              "name": "Sync",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "A",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFeeTo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPool.TokenAmount[]",
                  "name": "withdrawnAmounts",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burnSingle",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "flashSwap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "getAmountIn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "getAmountOut",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "finalAmountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAssets",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getReserves",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "_reserve0",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_reserve1",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "level2",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "operator",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolIdentifier",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "swap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "swapFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token0",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token0PrecisionMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token1",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "token1PrecisionMultiplier",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "updateBarFee",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "whiteListManager",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "The reserves are stored as bento shares. However, the stableswap invariant is applied to the underlying amounts.      The API uses the underlying amounts.",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "params": {
                  "amount": "The maximum collective `amount` that `spender` can pull.",
                  "spender": "Address of the party that can pull tokens from `msg.sender`'s account."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "burn(bytes)": {
                "details": "Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens."
              },
              "burnSingle(bytes)": {
                "details": "Burns LP tokens sent to this contract and swaps one of the output tokens for another - i.e., the user gets a single token out by burning LP tokens."
              },
              "flashSwap(bytes)": {
                "details": "Swaps one token for another with payload. The router must support swap callbacks and ensure there isn't too much slippage."
              },
              "getAmountOut(bytes)": {
                "details": "The pool does not need to include a trade simulator directly in itself - it can use a library.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "finalAmountOut": "The amount of output tokens that will be sent to the user if the trade is executed."
                }
              },
              "getAssets()": {
                "returns": {
                  "assets": "An array of tokens supported by the pool."
                }
              },
              "mint(bytes)": {
                "details": "Mints LP tokens - should be called via the router after transferring `bento` tokens. The router must ensure that sufficient LP tokens are minted by using the return value."
              },
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "amount": "The number of tokens that are approved (2^256-1 means infinite).",
                  "deadline": "The time at which to expire the signature.",
                  "owner": "The address to approve from.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "spender": "The address to be approved.",
                  "v": "The recovery byte of the signature."
                }
              },
              "swap(bytes)": {
                "details": "Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage."
              },
              "transfer(address,uint256)": {
                "params": {
                  "amount": "The token `amount` to move.",
                  "recipient": "The address to move tokens to."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "transferFrom(address,address,uint256)": {
                "params": {
                  "amount": "The token `amount` to move.",
                  "recipient": "The address to move tokens to.",
                  "sender": "Address to pull tokens `from`."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "updateBarFee()": {
                "details": "Updates `barFee` for Trident protocol."
              }
            },
            "stateVariables": {
              "MAX_LOOP_LIMIT": {
                "details": "Constant value used as max loop limit."
              },
              "poolIdentifier": {
                "return": "A unique identifier for the pool type.",
                "returns": {
                  "_0": "A unique identifier for the pool type."
                }
              },
              "token0PrecisionMultiplier": {
                "details": "Multipliers for each pooled token's precision to get to POOL_PRECISION_DECIMALS. For example, TBTC has 18 decimals, so the multiplier should be 1. WBTC has 8, so the multiplier should be 10 ** 18 / 10 ** 8 => 10 ** 10."
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_19429": {
                  "entryPoint": null,
                  "id": 19429,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_23291": {
                  "entryPoint": null,
                  "id": 23291,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@initialize_23316": {
                  "entryPoint": 1674,
                  "id": 23316,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "abi_decode_address_fromMemory": {
                  "entryPoint": 1754,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payable_fromMemory": {
                  "entryPoint": 1772,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_uint256t_uint256t_address_payablet_address_payablet_bool_fromMemory": {
                  "entryPoint": 1811,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 7
                },
                "abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory": {
                  "entryPoint": 1963,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 2168,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint8_fromMemory": {
                  "entryPoint": 2194,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 2231,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_784abf5ee5ac26c0ab454d7180fc6674dd424c889acd4d27298540d9febc99d6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_exp_helper": {
                  "entryPoint": 2261,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "checked_exp_t_uint256_t_uint8": {
                  "entryPoint": 2334,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_exp_unsigned": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 2527,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint8": {
                  "entryPoint": 2561,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 2599,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "panic_error_0x11": {
                  "entryPoint": 2650,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 2672,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 2694,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:7404:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "74:78:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "84:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "99:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "93:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "93:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "84:5:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "140:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "115:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "115:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "115:31:64"
                            }
                          ]
                        },
                        "name": "abi_decode_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "53:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "64:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:138:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "246:170:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "292:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "301:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "304:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "294:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "294:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "294:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "267:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "276:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "263:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "263:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "288:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "259:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "259:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "256:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "317:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "336:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "330:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "330:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "321:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "380:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "355:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "355:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "355:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "395:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "405:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "395:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payable_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "212:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "223:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "235:6:64",
                            "type": ""
                          }
                        ],
                        "src": "157:259:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "633:761:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "680:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "689:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "692:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "682:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "682:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "682:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "654:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "663:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "650:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "650:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "675:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "646:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "646:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "643:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "705:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "724:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "718:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "718:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "709:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "768:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "743:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "743:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "743:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "783:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "793:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "783:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "807:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "832:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "843:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "828:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "828:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "822:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "822:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "811:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "881:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "856:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "856:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "856:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "898:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "908:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "898:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "924:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "944:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "955:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "940:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "940:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "934:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "934:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "924:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "968:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "988:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "999:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "984:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "984:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "978:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "978:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "968:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1012:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1037:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1048:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1033:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1033:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1027:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1027:26:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1016:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1087:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1062:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1062:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1062:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1104:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "1114:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "1104:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1130:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1155:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1166:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1151:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1151:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1145:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1145:26:64"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1134:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1205:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1180:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1180:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1180:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1222:17:64",
                              "value": {
                                "name": "value_3",
                                "nodeType": "YulIdentifier",
                                "src": "1232:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "1222:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1248:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1273:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1284:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1269:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1269:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1263:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1263:26:64"
                              },
                              "variables": [
                                {
                                  "name": "value_4",
                                  "nodeType": "YulTypedName",
                                  "src": "1252:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1346:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1355:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1358:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1348:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1348:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1348:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "1311:7:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "1334:7:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "1327:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1327:15:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1320:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1320:23:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1308:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1308:36:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1301:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1301:44:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1298:64:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1371:17:64",
                              "value": {
                                "name": "value_4",
                                "nodeType": "YulIdentifier",
                                "src": "1381:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "1371:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_uint256t_uint256t_address_payablet_address_payablet_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "551:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "562:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "574:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "582:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "590:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "598:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "606:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "614:6:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "622:6:64",
                            "type": ""
                          }
                        ],
                        "src": "421:973:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1506:869:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1552:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1561:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1564:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1554:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1554:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1554:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1527:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1536:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1523:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1523:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1548:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1519:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1519:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1516:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1577:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1597:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1591:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1591:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1581:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1616:28:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1634:2:64",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1638:1:64",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1630:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1630:10:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1642:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1626:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1626:18:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1620:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1671:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1680:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1683:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1673:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1673:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1673:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1659:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1667:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1656:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1656:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1653:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1696:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1710:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1721:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1706:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1706:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1700:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1776:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1785:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1788:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1778:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1778:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1778:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1755:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1759:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1751:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1751:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1766:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1747:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1747:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1740:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1740:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1737:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1801:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1817:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1811:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1811:9:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1805:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1843:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1845:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1845:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1845:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1835:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1839:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1832:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1832:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1829:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1874:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1888:2:64",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "1884:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1884:7:64"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "1878:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1900:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1920:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1914:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1914:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1904:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1932:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1954:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "1978:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "1982:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "1974:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "1974:13:64"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "1989:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "1970:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1970:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1994:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1966:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1966:31:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "1999:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1962:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1962:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1950:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1950:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1936:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2062:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2064:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2064:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2064:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2021:10:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2033:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2018:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2018:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2041:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2053:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2038:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2038:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2015:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2015:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2012:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2100:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2104:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2093:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2093:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2093:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2131:6:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2139:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2124:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2124:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2124:18:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2190:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2199:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2202:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2192:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2192:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2192:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2165:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2169:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2161:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2161:11:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2174:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2157:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2157:22:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2181:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2154:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2154:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2151:55:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2241:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2245:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2237:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2237:13:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2256:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2264:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2252:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2252:17:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2271:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2215:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2215:59:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2215:59:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2283:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "2293:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2283:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2308:61:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2352:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2363:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2348:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2348:20:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2318:29:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2318:51:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2308:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1464:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1475:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1487:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1495:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1399:976:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2461:103:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2507:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2516:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2519:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2509:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2509:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2509:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2482:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2491:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2478:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2478:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2503:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2474:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2474:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2471:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2532:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2548:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2542:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2542:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2532:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2427:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2438:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2450:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2380:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2648:194:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2694:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2703:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2706:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2696:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2696:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2696:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2669:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2678:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2665:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2665:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2690:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2661:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2661:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2658:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2719:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2738:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2732:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2732:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2723:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2796:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2805:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2808:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2798:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2798:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2798:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2770:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2781:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2788:4:64",
                                            "type": "",
                                            "value": "0xff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2777:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2777:16:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2767:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2767:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2760:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2760:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2757:55:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2821:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2831:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2821:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint8_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2614:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2625:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2637:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2569:273:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2984:137:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2994:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3014:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3008:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3008:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2998:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3056:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3064:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3052:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3052:17:64"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3071:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3076:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3030:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3030:53:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3030:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3092:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3103:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3108:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3099:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3099:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3092:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2960:3:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2965:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2976:3:64",
                            "type": ""
                          }
                        ],
                        "src": "2847:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3339:276:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3349:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3361:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3372:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3357:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3357:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3349:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3392:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3403:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3385:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3385:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3385:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3430:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3441:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3426:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3426:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3446:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3419:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3419:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3419:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3473:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3484:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3469:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3469:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3489:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3462:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3462:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3462:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3516:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3527:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3512:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3512:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3532:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3505:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3505:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3505:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3559:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3570:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3555:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3555:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "3580:6:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3596:3:64",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3601:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "3592:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3592:11:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3605:1:64",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "3588:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3588:19:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3576:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3576:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3548:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3548:61:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3548:61:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3276:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3287:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3295:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3303:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3311:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3319:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3330:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3126:489:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3794:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3811:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3822:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3804:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3804:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3804:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3845:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3856:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3841:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3841:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3861:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3834:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3834:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3834:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3884:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3895:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3880:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3880:18:64"
                                  },
                                  {
                                    "hexValue": "5a45524f5f41444452455353",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3900:14:64",
                                    "type": "",
                                    "value": "ZERO_ADDRESS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3873:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3873:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3873:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3924:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3936:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3947:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3932:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3932:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3924:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3771:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3785:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3620:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4135:155:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4152:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4163:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4145:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4145:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4145:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4186:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4197:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4182:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4182:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4202:1:64",
                                    "type": "",
                                    "value": "6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4175:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4175:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4175:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4224:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4235:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4220:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4220:18:64"
                                  },
                                  {
                                    "hexValue": "5a45524f5f41",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4240:8:64",
                                    "type": "",
                                    "value": "ZERO_A"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4213:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4213:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4213:36:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4258:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4270:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4281:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4266:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4266:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4258:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_784abf5ee5ac26c0ab454d7180fc6674dd424c889acd4d27298540d9febc99d6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4112:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4126:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3961:329:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4469:169:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4486:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4497:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4479:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4479:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4479:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4520:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4531:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4516:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4516:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4536:2:64",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4509:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4509:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4509:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4559:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4570:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4555:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4555:18:64"
                                  },
                                  {
                                    "hexValue": "4944454e544943414c5f414444524553534553",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4575:21:64",
                                    "type": "",
                                    "value": "IDENTICAL_ADDRESSES"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4548:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4548:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4548:49:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4606:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4618:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4629:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4614:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4614:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4606:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4446:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4460:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4295:343:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4817:166:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4834:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4845:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4827:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4827:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4827:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4868:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4879:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4864:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4864:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4884:2:64",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4857:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4857:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4857:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4907:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4918:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4903:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4903:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f535741505f464545",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4923:18:64",
                                    "type": "",
                                    "value": "INVALID_SWAP_FEE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4896:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4896:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4896:46:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4951:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4963:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4974:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4959:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4959:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4951:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4794:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4808:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4643:340:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5052:358:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5062:16:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5077:1:64",
                                "type": "",
                                "value": "1"
                              },
                              "variables": [
                                {
                                  "name": "power_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5066:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5087:16:64",
                              "value": {
                                "name": "power_1",
                                "nodeType": "YulIdentifier",
                                "src": "5096:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "5087:5:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5112:13:64",
                              "value": {
                                "name": "_base",
                                "nodeType": "YulIdentifier",
                                "src": "5120:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "base",
                                  "nodeType": "YulIdentifier",
                                  "src": "5112:4:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5176:228:64",
                                "statements": [
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "5221:22:64",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "panic_error_0x11",
                                              "nodeType": "YulIdentifier",
                                              "src": "5223:16:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5223:18:64"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "5223:18:64"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "5196:4:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "5210:1:64",
                                                  "type": "",
                                                  "value": "0"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "not",
                                                "nodeType": "YulIdentifier",
                                                "src": "5206:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5206:6:64"
                                            },
                                            {
                                              "name": "base",
                                              "nodeType": "YulIdentifier",
                                              "src": "5214:4:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "5202:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5202:17:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "5193:2:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5193:27:64"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5190:53:64"
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "5282:29:64",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "5284:25:64",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "power",
                                                "nodeType": "YulIdentifier",
                                                "src": "5297:5:64"
                                              },
                                              {
                                                "name": "base",
                                                "nodeType": "YulIdentifier",
                                                "src": "5304:4:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "5293:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5293:16:64"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "power",
                                              "nodeType": "YulIdentifier",
                                              "src": "5284:5:64"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "5263:8:64"
                                        },
                                        {
                                          "name": "power_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5273:7:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "5259:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5259:22:64"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "5256:55:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5324:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "5336:4:64"
                                        },
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "5342:4:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nodeType": "YulIdentifier",
                                        "src": "5332:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5332:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "base",
                                        "nodeType": "YulIdentifier",
                                        "src": "5324:4:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5360:34:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "power_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5376:7:64"
                                        },
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "5385:8:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "shr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5372:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5372:22:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "exponent",
                                        "nodeType": "YulIdentifier",
                                        "src": "5360:8:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "5145:8:64"
                                  },
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5155:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5142:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5142:21:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "5164:3:64",
                                "statements": []
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "5138:3:64",
                                "statements": []
                              },
                              "src": "5134:270:64"
                            }
                          ]
                        },
                        "name": "checked_exp_helper",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "_base",
                            "nodeType": "YulTypedName",
                            "src": "5016:5:64",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "5023:8:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "5036:5:64",
                            "type": ""
                          },
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "5043:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4988:422:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5483:72:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5493:56:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "5523:4:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "exponent",
                                        "nodeType": "YulIdentifier",
                                        "src": "5533:8:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5543:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5529:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5529:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "checked_exp_unsigned",
                                  "nodeType": "YulIdentifier",
                                  "src": "5502:20:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5502:47:64"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "5493:5:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_exp_t_uint256_t_uint8",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "5454:4:64",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "5460:8:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "5473:5:64",
                            "type": ""
                          }
                        ],
                        "src": "5415:140:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5619:747:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5657:52:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5671:10:64",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "5680:1:64",
                                      "type": "",
                                      "value": "1"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "5671:5:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "5694:5:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "5639:8:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5632:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5632:16:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5629:80:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5742:52:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5756:10:64",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "5765:1:64",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "5756:5:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "5779:5:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "5728:4:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5721:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5721:12:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5718:76:64"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "5830:52:64",
                                    "statements": [
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "5844:10:64",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5853:1:64",
                                          "type": "",
                                          "value": "1"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "5844:5:64"
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulLeave",
                                        "src": "5867:5:64"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "5823:59:64",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5828:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "5898:123:64",
                                    "statements": [
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "5933:22:64",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "panic_error_0x11",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5935:16:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5935:18:64"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "5935:18:64"
                                            }
                                          ]
                                        },
                                        "condition": {
                                          "arguments": [
                                            {
                                              "name": "exponent",
                                              "nodeType": "YulIdentifier",
                                              "src": "5918:8:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5928:3:64",
                                              "type": "",
                                              "value": "255"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "gt",
                                            "nodeType": "YulIdentifier",
                                            "src": "5915:2:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5915:17:64"
                                        },
                                        "nodeType": "YulIf",
                                        "src": "5912:43:64"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "5968:25:64",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "exponent",
                                              "nodeType": "YulIdentifier",
                                              "src": "5981:8:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5991:1:64",
                                              "type": "",
                                              "value": "1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "5977:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5977:16:64"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "power",
                                            "nodeType": "YulIdentifier",
                                            "src": "5968:5:64"
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulLeave",
                                        "src": "6006:5:64"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "5891:130:64",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5896:1:64",
                                    "type": "",
                                    "value": "2"
                                  }
                                }
                              ],
                              "expression": {
                                "name": "base",
                                "nodeType": "YulIdentifier",
                                "src": "5810:4:64"
                              },
                              "nodeType": "YulSwitch",
                              "src": "5803:218:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6119:70:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6133:28:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "base",
                                          "nodeType": "YulIdentifier",
                                          "src": "6146:4:64"
                                        },
                                        {
                                          "name": "exponent",
                                          "nodeType": "YulIdentifier",
                                          "src": "6152:8:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "exp",
                                        "nodeType": "YulIdentifier",
                                        "src": "6142:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6142:19:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "power",
                                        "nodeType": "YulIdentifier",
                                        "src": "6133:5:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulLeave",
                                    "src": "6174:5:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "base",
                                            "nodeType": "YulIdentifier",
                                            "src": "6043:4:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6049:2:64",
                                            "type": "",
                                            "value": "11"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "6040:2:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6040:12:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "exponent",
                                            "nodeType": "YulIdentifier",
                                            "src": "6057:8:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6067:2:64",
                                            "type": "",
                                            "value": "78"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "6054:2:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6054:16:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6036:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6036:35:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "base",
                                            "nodeType": "YulIdentifier",
                                            "src": "6080:4:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6086:3:64",
                                            "type": "",
                                            "value": "307"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "6077:2:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6077:13:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "exponent",
                                            "nodeType": "YulIdentifier",
                                            "src": "6095:8:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6105:2:64",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "6092:2:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6092:16:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6073:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6073:36:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "6033:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6033:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6030:159:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6198:57:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base",
                                    "nodeType": "YulIdentifier",
                                    "src": "6240:4:64"
                                  },
                                  {
                                    "name": "exponent",
                                    "nodeType": "YulIdentifier",
                                    "src": "6246:8:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "checked_exp_helper",
                                  "nodeType": "YulIdentifier",
                                  "src": "6221:18:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6221:34:64"
                              },
                              "variables": [
                                {
                                  "name": "power_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6202:7:64",
                                  "type": ""
                                },
                                {
                                  "name": "base_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6211:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6300:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "6302:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6302:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6302:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6270:7:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6287:1:64",
                                            "type": "",
                                            "value": "0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "6283:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6283:6:64"
                                      },
                                      {
                                        "name": "base_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6291:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "div",
                                      "nodeType": "YulIdentifier",
                                      "src": "6279:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6279:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6267:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6267:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6264:58:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6331:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "power_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6344:7:64"
                                  },
                                  {
                                    "name": "base_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6353:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "6340:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6340:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "power",
                                  "nodeType": "YulIdentifier",
                                  "src": "6331:5:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_exp_unsigned",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base",
                            "nodeType": "YulTypedName",
                            "src": "5590:4:64",
                            "type": ""
                          },
                          {
                            "name": "exponent",
                            "nodeType": "YulTypedName",
                            "src": "5596:8:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "power",
                            "nodeType": "YulTypedName",
                            "src": "5609:5:64",
                            "type": ""
                          }
                        ],
                        "src": "5560:806:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6423:116:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6482:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "6484:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6484:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6484:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "6454:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "6447:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6447:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "6440:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6440:17:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "6462:1:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6473:1:64",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "6469:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6469:6:64"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "6477:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "6465:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6465:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "6459:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6459:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "6436:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6436:45:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6433:71:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6513:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "6528:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "6531:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "6524:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6524:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "6513:7:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "6402:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "6405:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "6411:7:64",
                            "type": ""
                          }
                        ],
                        "src": "6371:168:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6591:148:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6601:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "6616:1:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6619:4:64",
                                    "type": "",
                                    "value": "0xff"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "6612:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6612:12:64"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6605:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6633:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "6648:1:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6651:4:64",
                                    "type": "",
                                    "value": "0xff"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "6644:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6644:12:64"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6637:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6681:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "6683:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6683:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6683:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6671:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6676:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6668:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6668:12:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6665:38:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6712:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6724:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6729:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "6720:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6720:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "6712:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint8",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "6573:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "6576:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "6582:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6544:195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6797:205:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6807:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6816:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6811:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6876:63:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "6901:3:64"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "6906:1:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6897:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6897:11:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6920:3:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "6925:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6916:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6916:11:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6910:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6910:18:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6890:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6890:39:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6890:39:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6837:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6840:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6834:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6834:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6848:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6850:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6859:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6862:2:64",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6855:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6855:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6850:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6830:3:64",
                                "statements": []
                              },
                              "src": "6826:113:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6965:31:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "6978:3:64"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "6983:6:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6974:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6974:16:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6992:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6967:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6967:27:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6967:27:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6954:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6957:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6951:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6951:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6948:48:64"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "6775:3:64",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "6780:3:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "6785:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6744:258:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7039:95:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7056:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7063:3:64",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7068:10:64",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "7059:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7059:20:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7049:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7049:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7049:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7096:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7099:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7089:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7089:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7089:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7120:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7123:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "7113:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7113:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7113:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "7007:127:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7171:95:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7188:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7195:3:64",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7200:10:64",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "7191:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7191:20:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7181:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7181:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7181:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7228:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7231:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7221:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7221:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7221:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7252:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7255:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "7245:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7245:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7245:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "7139:127:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7316:86:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7380:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7389:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7392:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7382:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7382:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7382:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7339:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "7350:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "7365:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "7370:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "7361:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "7361:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7374:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "7357:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7357:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "7346:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7346:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "7336:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7336:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7329:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7329:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7326:70:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "7305:5:64",
                            "type": ""
                          }
                        ],
                        "src": "7271:131:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        validator_revert_address(value)\n    }\n    function abi_decode_tuple_t_address_payable_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_uint256t_uint256t_address_payablet_address_payablet_bool_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := mload(add(headStart, 64))\n        value3 := mload(add(headStart, 96))\n        let value_2 := mload(add(headStart, 128))\n        validator_revert_address(value_2)\n        value4 := value_2\n        let value_3 := mload(add(headStart, 160))\n        validator_revert_address(value_3)\n        value5 := value_3\n        let value_4 := mload(add(headStart, 192))\n        if iszero(eq(value_4, iszero(iszero(value_4)))) { revert(0, 0) }\n        value6 := value_4\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 0x20), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_2, 0x20), add(memPtr, 0x20), _3)\n        value0 := memPtr\n        value1 := abi_decode_address_fromMemory(add(headStart, 0x20))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_decode_tuple_t_uint8_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"ZERO_ADDRESS\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_784abf5ee5ac26c0ab454d7180fc6674dd424c889acd4d27298540d9febc99d6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 6)\n        mstore(add(headStart, 64), \"ZERO_A\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"IDENTICAL_ADDRESSES\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"INVALID_SWAP_FEE\")\n        tail := add(headStart, 96)\n    }\n    function checked_exp_helper(_base, exponent) -> power, base\n    {\n        let power_1 := 1\n        power := power_1\n        base := _base\n        for { } gt(exponent, power_1) { }\n        {\n            if gt(base, div(not(0), base)) { panic_error_0x11() }\n            if and(exponent, power_1) { power := mul(power, base) }\n            base := mul(base, base)\n            exponent := shr(power_1, exponent)\n        }\n    }\n    function checked_exp_t_uint256_t_uint8(base, exponent) -> power\n    {\n        power := checked_exp_unsigned(base, and(exponent, 0xff))\n    }\n    function checked_exp_unsigned(base, exponent) -> power\n    {\n        if iszero(exponent)\n        {\n            power := 1\n            leave\n        }\n        if iszero(base)\n        {\n            power := 0\n            leave\n        }\n        switch base\n        case 1 {\n            power := 1\n            leave\n        }\n        case 2 {\n            if gt(exponent, 255) { panic_error_0x11() }\n            power := shl(exponent, 1)\n            leave\n        }\n        if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n        {\n            power := exp(base, exponent)\n            leave\n        }\n        let power_1, base_1 := checked_exp_helper(base, exponent)\n        if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n        power := mul(power_1, base_1)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_sub_t_uint8(x, y) -> diff\n    {\n        let x_1 := and(x, 0xff)\n        let y_1 := and(y, 0xff)\n        if lt(x_1, y_1) { panic_error_0x11() }\n        diff := sub(x_1, y_1)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101e06040523480156200001257600080fd5b50604051620049d6380380620049d68339810160408190526200003591620007ab565b604080518082018252601981527f5375736869204672616e636869736564204c5020546f6b656e000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f49bb029ad7c8a58c6232657178b278e20c3bd1f3b0084072e3a97b185e1aac5f918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c001604051602081830303815290604052805190602001206080818152505060008060008060008060008880602001905181019062000142919062000713565b965096509650965096509650965060006001600160a01b0316876001600160a01b03161415620001a85760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064015b60405180910390fd5b856001600160a01b0316876001600160a01b031614156200020c5760405162461bcd60e51b815260206004820152601360248201527f4944454e544943414c5f4144445245535345530000000000000000000000000060448201526064016200019f565b612710851115620002535760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f535741505f46454560801b60448201526064016200019f565b836200028b5760405162461bcd60e51b81526020600482015260066024820152655a45524f5f4160d01b60448201526064016200019f565b620002a38383836200068a60201b620023931760201c565b60408051600481526024810182526020810180516001600160e01b03166360a56c0160e11b17905290516000916001600160a01b038b1691620002e79190620008b7565b600060405180830381855afa9150503d806000811462000324576040519150601f19603f3d011682016040523d82523d6000602084013e62000329565b606091505b5060408051600481526024810182526020810180516001600160e01b0316630605066960e11b1790529051919350600092506001600160a01b038c1691620003729190620008b7565b600060405180830381855afa9150503d8060008114620003af576040519150601f19603f3d011682016040523d82523d6000602084013e620003b4565b606091505b5060408051600481526024810182526020810180516001600160e01b0316634da3182760e01b1790529051919350600092506001600160a01b038d1691620003fd9190620008b7565b600060405180830381855afa9150503d80600081146200043a576040519150601f19603f3d011682016040523d82523d6000602084013e6200043f565b606091505b5060408051600481526024810182526020810180516001600160e01b031663313ce56760e01b1790529051919350600092506001600160a01b038d1691620004889190620008b7565b600060405180830381855afa9150503d8060008114620004c5576040519150601f19603f3d011682016040523d82523d6000602084013e620004ca565b606091505b5060408051600481526024810182526020810180516001600160e01b031663313ce56760e01b1790529051919350600092506001600160a01b038d1691620005139190620008b7565b600060405180830381855afa9150503d806000811462000550576040519150601f19603f3d011682016040523d82523d6000602084013e62000555565b606091505b506001600160601b031960608f811b8216610120528e901b166101405260a08c905286519092506200059291508601602090810190870162000878565b6006558351620005ac9085016020908101908601620006ec565b60601b6001600160601b03191660c0528251620005d39060209085018101908501620006ec565b6001600160601b0319606091821b811660e052908e901b166101005261016089905262000602896002620009df565b6101805281516200061d908301602090810190840162000892565b6200062a90601262000a01565b6200063790600a6200091e565b6101a052805162000652908201602090810190830162000892565b6200065f90601262000a01565b6200066c90600a6200091e565b6101c052505060016008555062000a9f9a5050505050505050505050565b600080546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790558015620006d5576001805460ff60a01b1916600160a01b1790555b505050565b8051620006e78162000a86565b919050565b600060208284031215620006ff57600080fd5b81516200070c8162000a86565b9392505050565b600080600080600080600060e0888a0312156200072f57600080fd5b87516200073c8162000a86565b60208901519097506200074f8162000a86565b8096505060408801519450606088015193506080880151620007718162000a86565b60a0890151909350620007848162000a86565b60c089015190925080151581146200079b57600080fd5b8091505092959891949750929550565b60008060408385031215620007bf57600080fd5b82516001600160401b0380821115620007d757600080fd5b818501915085601f830112620007ec57600080fd5b81518181111562000801576200080162000a70565b604051601f8201601f19908116603f011681019083821181831017156200082c576200082c62000a70565b816040528281528860208487010111156200084657600080fd5b6200085983602083016020880162000a27565b80965050505050506200086f60208401620006da565b90509250929050565b6000602082840312156200088b57600080fd5b5051919050565b600060208284031215620008a557600080fd5b815160ff811681146200070c57600080fd5b60008251620008cb81846020870162000a27565b9190910192915050565b600181815b8085111562000916578160001904821115620008fa57620008fa62000a5a565b808516156200090857918102915b93841c9390800290620008da565b509250929050565b60006200070c60ff8416836000826200093a57506001620009d9565b816200094957506000620009d9565b81600181146200096257600281146200096d576200098d565b6001915050620009d9565b60ff84111562000981576200098162000a5a565b50506001821b620009d9565b5060208310610133831016604e8410600b8410161715620009b2575081810a620009d9565b620009be8383620008d5565b8060001904821115620009d557620009d562000a5a565b0290505b92915050565b6000816000190483118215151615620009fc57620009fc62000a5a565b500290565b600060ff821660ff84168082101562000a1e5762000a1e62000a5a565b90039392505050565b60005b8381101562000a4457818101518382015260200162000a2a565b8381111562000a54576000848401525b50505050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811462000a9c57600080fd5b50565b60805160a05160c05160601c60e05160601c6101005160601c6101205160601c6101405160601c61016051610180516101a0516101c051613cc562000d11600039600081816104a1015281816127bd0152818161281a015281816128720152818161290901526132cd01526000818161063001528181612791015281816127e901528181612846015281816128e3015261329f0152600081816133f50152818161344b015281816134f60152613540015260006107110152600081816106ac0152818161084d015281816108f0015281816109e901528181610ac401528181610b7001528181610b94015281816110290152818161108b015281816111790152818161137c015281816113d50152818161160101528181611a8a01528181611d0c01528181611dc501528181611eeb01528181611f77015281816125f101528181612fa80152612fcc01526000818161037c015281816107f9015281816108730152818161091f0152818161094301528181610a9e01528181610b4101528181610ffd0152818161105501528181611110015281816113270152818161148b0152818161159301528181611a2201528181611d6501528181611df101528181611e3101528181611f4b015281816125c501528181612f590152612f7d015260008181610685015261192501526000818161047a0152818161265101528181612a5701528181612b8601528181612c7e01526130bb01526000818161033001528181610c3601526131670152600081816104c8015281816108a201528181610af3015281816119e501528181613110015281816131ef015261325a01526000818161044001526120be0152613cc56000f3fe608060405234801561001057600080fd5b50600436106102775760003560e01c8063627dd56a11610160578063a9059cbb116100d8578063cf58879a1161008c578063d505accf11610071578063d505accf146106ce578063dd62ed3e146106e1578063f446c1d01461070c57600080fd5b8063cf58879a14610680578063d21220a7146106a757600080fd5b8063baa8c7cb116100bd578063baa8c7cb1461062b578063bc3377d914610652578063c14ad8021461067757600080fd5b8063a9059cbb14610605578063af8c09bf1461061857600080fd5b80637ecebe001161012f57806395d89b411161011457806395d89b411461058f578063a69840a8146105cb578063a8f1f52e146105f257600080fd5b80637ecebe001461056557806392bc32191461058557600080fd5b8063627dd56a1461050a57806367e4ac2c1461051d57806370a08231146105325780637ba0e2e71461055257600080fd5b80632a07b6c7116101f3578063499a3c50116101c25780634e25dc47116101a75780634e25dc471461049c57806354cf2aeb146104c3578063570ca735146104ea57600080fd5b8063499a3c50146104625780634da318271461047557600080fd5b80632a07b6c7146103da57806330adf81f146103fa578063313ce567146104215780633644e5151461043b57600080fd5b80630c0a0cd21161024a57806318160ddd1161022f57806318160ddd1461039e57806323b872dd146103a757806325a93264146103ba57600080fd5b80630c0a0cd21461032b5780630dfe16811461037757600080fd5b8063053da1c81461027c57806306fdde03146102a25780630902f1ac146102eb578063095ea7b314610308575b600080fd5b61028f61028a366004613900565b610733565b6040519081526020015b60405180910390f35b6102de6040518060400160405280601981526020017f5375736869204672616e636869736564204c5020546f6b656e0000000000000081525081565b6040516102999190613ab0565b6102f3610d00565b60408051928352602083019190915201610299565b61031b6103163660046137d1565b610d14565b6040519015158152602001610299565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610299565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b61028f60025481565b61031b6103b536600461382b565b610d8e565b6000546103529073ffffffffffffffffffffffffffffffffffffffff1681565b6103ed6103e8366004613900565b610f09565b6040516102999190613a4b565b61028f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610429601281565b60405160ff9091168152602001610299565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b61028f610470366004613900565b611246565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b6001546103529073ffffffffffffffffffffffffffffffffffffffff1681565b61028f610518366004613900565b61124d565b610525611571565b60405161029991906139f1565b61028f61054036600461361f565b60036020526000908152604090205481565b61028f610560366004613900565b611670565b61028f61057336600461361f565b60056020526000908152604090205481565b61058d6118b3565b005b6102de6040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b61028f7f54726964656e743a4672616e636869736564487962726964000000000000000081565b61028f610600366004613900565b6119ae565b61031b6106133660046137d1565b611b57565b61028f610626366004613900565b611c09565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b60015461031b9074010000000000000000000000000000000000000000900460ff1681565b61028f60065481565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b61058d6106dc36600461386c565b61202b565b61028f6106ef3660046137fd565b600460209081526000928352604080842090915290825290205481565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b60006008546001146107a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60026008556000808080806107bd87890189613687565b94509450945094509450600160149054906101000a900460ff16156107e5576107e584612433565b6000806107f0612593565b915091506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614156109e7577f000000000000000000000000000000000000000000000000000000000000000091506108987f00000000000000000000000000000000000000000000000000000000000000008761261c565b95506127106108c77f000000000000000000000000000000000000000000000000000000000000000088613b16565b6108d19190613adb565b90506108e96108e08288613b53565b85856001612781565b99506109187f0000000000000000000000000000000000000000000000000000000000000000898c888b612941565b600061096c7f00000000000000000000000000000000000000000000000000000000000000006109677f00000000000000000000000000000000000000000000000000000000000000006129ca565b61261c565b9050866109798683613b53565b10156109e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e00000000000000000000604482015260640161079d565b50610c2f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614610a9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e00000000000000000000000000604482015260640161079d565b7f00000000000000000000000000000000000000000000000000000000000000009150610ae97f00000000000000000000000000000000000000000000000000000000000000008761261c565b9550612710610b187f000000000000000000000000000000000000000000000000000000000000000088613b16565b610b229190613adb565b9050610b3a610b318288613b53565b85856000612781565b9950610b697f0000000000000000000000000000000000000000000000000000000000000000898c888b612941565b6000610bb87f00000000000000000000000000000000000000000000000000000000000000006109677f00000000000000000000000000000000000000000000000000000000000000006129ca565b905086610bc58583613b53565b1015610c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e00000000000000000000604482015260640161079d565b505b610c5c89827f00000000000000000000000000000000000000000000000000000000000000006000612ae3565b610c64612e42565b8173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062898e604051610ce3929190918252602082015260400190565b60405180910390a450506001600855509598975050505050505050565b600080610d0b612593565b90939092509050565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d7c9086815260200190565b60405180910390a35060015b92915050565b60015460009074010000000000000000000000000000000000000000900460ff1615610dbd57610dbd83612433565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610e5a5773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915281208054849290610e54908490613b53565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526003602052604081208054849290610e8f908490613b53565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260036020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ef79086815260200190565b60405180910390a35060019392505050565b6060600854600114610f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b45440000000000000000000000000000000000000000000000000000604482015260640161079d565b6002600855600080610f8b84860186613798565b91509150610f9882612433565b600080610fa3612f51565b60025430600090815260036020526040812054939550919350919082610fc98684613b16565b610fd39190613adb565b9050600083610fe28685613b16565b610fec9190613adb565b9050610ff83084612ff0565b6110247f0000000000000000000000000000000000000000000000000000000000000000838a8a612ae3565b6110507f0000000000000000000000000000000000000000000000000000000000000000828a8a612ae3565b61107a7f000000000000000000000000000000000000000000000000000000000000000083613086565b6110849087613b53565b95506110b07f000000000000000000000000000000000000000000000000000000000000000082613086565b6110ba9086613b53565b94506110c4612e42565b6040805160028082526060820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816110da57905050985060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001838152508960008151811061116157611161613bfe565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200182815250896001815181106111ca576111ca613bfe565b60209081029190910181019190915260408051848152918201839052810184905273ffffffffffffffffffffffffffffffffffffffff89169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a3505060016008555094979650505050505050565b6000806000fd5b60006008546001146112bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b45440000000000000000000000000000000000000000000000000000604482015260640161079d565b6002600855600080806112d08587018761363c565b600154929550909350915074010000000000000000000000000000000000000000900460ff16156113045761130482612433565b60008061130f612593565b9150915060008061131e612f51565b915091506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614156113d357507f00000000000000000000000000000000000000000000000000000000000000006113a58685613b53565b915060006113b38a84613106565b90506113cb6113c28285613b53565b88886001612781565b9a50506114de565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614611488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e00000000000000000000000000604482015260640161079d565b507f00000000000000000000000000000000000000000000000000000000000000006114b48584613b53565b915060006114c28a84613106565b90506114da6114d18285613b53565b88886000612781565b9a50505b6114ea818b8a8a612ae3565b6114f2612e42565b8073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062858e604051610ce3929190918252602082015260400190565b60408051600280825260608083018452926020830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106115c5576115c5613bfe565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061163357611633613bfe565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b60006008546001146116de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b45440000000000000000000000000000000000000000000000000000604482015260640161079d565b600260085560006116f18385018561361f565b90506116fc81612433565b600080611707612593565b91509150600080611716612f51565b6002549193509150600061172a8685613b53565b905060006117388685613b53565b905060008061174984848b8b613194565b9092509050600061176c61175d848a613b53565b611767848a613b53565b613297565b9050856117935761177f6103e882613b53565b9b5061178e60006103e8613307565b6117c5565b600061179f8b8b613297565b905080876117ad8285613b53565b6117b79190613b16565b6117c19190613adb565b9c50505b8b61182c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e544544000000604482015260640161079d565b6118368b8d613307565b61183e612e42565b60408051868152602081018690529081018d90528c9073ffffffffffffffffffffffffffffffffffffffff8d169033907ff9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e9060600160405180910390a35050600160085550989b9a5050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc14ad80200000000000000000000000000000000000000000000000000000000179052905160009173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169161195091906139d5565b600060405180830381855afa9150503d806000811461198b576040519150601f19603f3d011682016040523d82523d6000602084013e611990565b606091505b50915050808060200190518101906119a89190613972565b60065550565b600080806119be848601866137d1565b915091506000806119cd612593565b915091506119db848461261c565b9250612710611a0a7f000000000000000000000000000000000000000000000000000000000000000085613b16565b611a149190613adb565b611a1e9084613b53565b92507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611a8857611a818383836001612781565b9450611b4d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e00000000000000000000000000604482015260640161079d565b611b4a8383836000612781565b94505b5050505092915050565b60015460009074010000000000000000000000000000000000000000900460ff1615611b8657611b8683612433565b3360009081526003602052604081208054849290611ba5908490613b53565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d7c9086815260200190565b6000600854600114611c77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b45440000000000000000000000000000000000000000000000000000604482015260640161079d565b600260085560008080611c8c8587018761363c565b925092509250611c9b82612433565b600080611ca6612593565b91509150600080611cb5612f51565b60025430600090815260036020526040812054939550919350919082611cdb8684613b16565b611ce59190613adb565b9050600083611cf48685613b16565b611cfe9190613adb565b9050611d0a3084612ff0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff161415611e2f576000611d8a7f000000000000000000000000000000000000000000000000000000000000000084613106565b9050611db4611d998285613b53565b611da3858c613b53565b611dad858c613b53565b6001612781565b611dbe9083613ac3565b9150611dec7f0000000000000000000000000000000000000000000000000000000000000000838d8d612ae3565b611e167f000000000000000000000000000000000000000000000000000000000000000084613086565b611e209088613b53565b9650819c506000925050611fb1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614611ee4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e000000000000000000000000604482015260640161079d565b6000611f107f000000000000000000000000000000000000000000000000000000000000000083613106565b9050611f3a611f1f8284613b53565b611f29858c613b53565b611f33858c613b53565b6000612781565b611f449084613ac3565b9250611f727f0000000000000000000000000000000000000000000000000000000000000000848d8d612ae3565b611f9c7f000000000000000000000000000000000000000000000000000000000000000083613086565b611fa69087613b53565b9550829c5060009150505b611fb9612e42565b604080518381526020810183905290810184905273ffffffffffffffffffffffffffffffffffffffff8b169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a35050600160085550979a9950505050505050505050565b42841015612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f45585049524544000000000000000000604482015260640161079d565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080547f0000000000000000000000000000000000000000000000000000000000000000917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b918761211083613b96565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016121b19291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa15801561223a573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906122b557508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61231b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e41545552450000000000000000604482015260640161079d565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526004602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556001805492851692909116919091179055801561242e57600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790555b505050565b600080546001546040805173ffffffffffffffffffffffffffffffffffffffff928316602482015285831660448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1472c27100000000000000000000000000000000000000000000000000000000179052905191909216916124d0916139d5565b600060405180830381855afa9150503d806000811461250b576040519150601f19603f3d011682016040523d82523d6000602084013e612510565b606091505b5091505060008180602001905181019061252a91906138e3565b90508061242e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f545f57484954454c49535445440000000000000000000000000000000000604482015260640161079d565b6007546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004166125ea7f00000000000000000000000000000000000000000000000000000000000000008361261c565b91506126167f00000000000000000000000000000000000000000000000000000000000000008261261c565b90509091565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526000606483018190529182917f000000000000000000000000000000000000000000000000000000000000000016907f5662311800000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161272191906139d5565b600060405180830381855afa9150503d806000811461275c576040519150601f19603f3d011682016040523d82523d6000602084013e612761565b606091505b50915050808060200190518101906127799190613972565b949350505050565b60008060008315612815576127b67f000000000000000000000000000000000000000000000000000000000000000087613b16565b91506127e27f000000000000000000000000000000000000000000000000000000000000000086613b16565b905061280e7f000000000000000000000000000000000000000000000000000000000000000088613b16565b965061289a565b61283f7f000000000000000000000000000000000000000000000000000000000000000086613b16565b915061286b7f000000000000000000000000000000000000000000000000000000000000000087613b16565b90506128977f000000000000000000000000000000000000000000000000000000000000000088613b16565b96505b60006128a68383613378565b905060006128b48985613ac3565b905060006128c282846134cb565b905060016128d08286613b53565b6128da9190613b53565b955086612907577f0000000000000000000000000000000000000000000000000000000000000000612929565b7f00000000000000000000000000000000000000000000000000000000000000005b6129339087613adb565b9a9950505050505050505050565b61294d85848684612ae3565b8151156129c3576040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b190612990908590600401613ab0565b600060405180830381600087803b1580156129aa57600080fd5b505af11580156129be573d6000803e3d6000fd5b505050505b5050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff83811660248301523060448084019190915283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff7888aec00000000000000000000000000000000000000000000000000000000179052915160009283927f000000000000000000000000000000000000000000000000000000000000000090911691612a8491906139d5565b600060405180830381855afa9150503d8060008114612abf576040519150601f19603f3d011682016040523d82523d6000602084013e612ac4565b606091505b5091505080806020019051810190612adc9190613972565b9392505050565b8015612c65576040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260848201869052600060a48084018290528451808503909101815260c490930184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f97da6d300000000000000000000000000000000000000000000000000000000017905292517f000000000000000000000000000000000000000000000000000000000000000090911691612bb2916139d5565b6000604051808303816000865af19150503d8060008114612bef576040519150601f19603f3d011682016040523d82523d6000602084013e612bf4565b606091505b5050905080612c5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f57495448445241575f4641494c45440000000000000000000000000000000000604482015260640161079d565b50612e3c565b600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167ff18d03cc00000000000000000000000000000000000000000000000000000000863086612ccc838a613086565b60405173ffffffffffffffffffffffffffffffffffffffff9485166024820152928416604484015292166064820152608481019190915260a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051612d8f91906139d5565b6000604051808303816000865af19150503d8060008114612dcc576040519150601f19603f3d011682016040523d82523d6000602084013e612dd1565b606091505b50509050806129c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c45440000000000000000000000000000000000604482015260640161079d565b50505050565b600080612e4d612f51565b90925090506fffffffffffffffffffffffffffffffff82108015612e8057506fffffffffffffffffffffffffffffffff81105b612ee6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4f564552464c4f57000000000000000000000000000000000000000000000000604482015260640161079d565b6fffffffffffffffffffffffffffffffff818116700100000000000000000000000000000000029083161760075560408051838152602081018390527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a15050565b600080612fa17f00000000000000000000000000000000000000000000000000000000000000006109677f00000000000000000000000000000000000000000000000000000000000000006129ca565b91506126167f00000000000000000000000000000000000000000000000000000000000000006109677f00000000000000000000000000000000000000000000000000000000000000006129ca565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054839290613025908490613b53565b909155505060028054829003905560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526000606483018190529182917f000000000000000000000000000000000000000000000000000000000000000016907fda5139ca0000000000000000000000000000000000000000000000000000000090608401612698565b60006127106131357f000000000000000000000000000000000000000000000000000000000000000084613b16565b61313f9190613adb565b90506000612710600654836131549190613b16565b61315e9190613adb565b905061318d84827f00000000000000000000000000000000000000000000000000000000000000006000612ae3565b5092915050565b6000808315806131a2575082155b156131b25750600090508061328e565b6000846131bf8589613b16565b6131c99190613adb565b9050858111613224576131df6127106002613b16565b6131e98288613b53565b613213907f0000000000000000000000000000000000000000000000000000000000000000613b16565b61321d9190613adb565b915061328c565b6000846132318789613b16565b61323b9190613adb565b905061324a6127106002613b16565b613254828a613b53565b61327e907f0000000000000000000000000000000000000000000000000000000000000000613b16565b6132889190613adb565b9350505b505b94509492505050565b6000806132c47f000000000000000000000000000000000000000000000000000000000000000085613b16565b905060006132f27f000000000000000000000000000000000000000000000000000000000000000085613b16565b90506132fe8282613378565b95945050505050565b80600260008282546133199190613ac3565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161307a565b6000806133858385613ac3565b90508061339157600091505b600081815b6101008110156134c1576000600487848a6133b18280613b16565b6133bb9190613adb565b6133c59190613b16565b6133cf9190613adb565b6133d99190613adb565b90508293508060036133eb9190613b16565b83600161341960647f0000000000000000000000000000000000000000000000000000000000000000613adb565b6134239190613b53565b61342d9190613b16565b6134379190613ac3565b83613443836002613b16565b606461346f897f0000000000000000000000000000000000000000000000000000000000000000613b16565b6134799190613adb565b6134839190613ac3565b61348d9190613b16565b6134979190613adb565b92506134a383856135fd565b156134ae57506134c1565b50806134b981613b96565b915050613396565b5095945050505050565b6000806134d9846002613b16565b6134e38480613b16565b6134ed9190613adb565b9050606461351c7f00000000000000000000000000000000000000000000000000000000000000006002613b16565b6135269190613adb565b6135308483613b16565b61353a9190613adb565b905060007f000000000000000000000000000000000000000000000000000000000000000061356a606486613b16565b6135749190613adb565b61357e9086613ac3565b9050600084935060005b610100811015611b4d5784915085836135a2846002613b16565b6135ac9190613ac3565b6135b69190613b53565b846135c18780613b16565b6135cb9190613ac3565b6135d59190613adb565b94506135e185836135fd565b156135eb57611b4d565b806135f581613b96565b915050613588565b600081831115613614575060018183031115610d88565b506001919003111590565b60006020828403121561363157600080fd5b8135612adc81613c5c565b60008060006060848603121561365157600080fd5b833561365c81613c5c565b9250602084013561366c81613c5c565b9150604084013561367c81613c81565b809150509250925092565b600080600080600060a0868803121561369f57600080fd5b85356136aa81613c5c565b945060208601356136ba81613c5c565b935060408601356136ca81613c81565b925060608601359150608086013567ffffffffffffffff808211156136ee57600080fd5b818801915088601f83011261370257600080fd5b81358181111561371457613714613c2d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561375a5761375a613c2d565b816040528281528b602084870101111561377357600080fd5b8260208601602083013760006020848301015280955050505050509295509295909350565b600080604083850312156137ab57600080fd5b82356137b681613c5c565b915060208301356137c681613c81565b809150509250929050565b600080604083850312156137e457600080fd5b82356137ef81613c5c565b946020939093013593505050565b6000806040838503121561381057600080fd5b823561381b81613c5c565b915060208301356137c681613c5c565b60008060006060848603121561384057600080fd5b833561384b81613c5c565b9250602084013561385b81613c5c565b929592945050506040919091013590565b600080600080600080600060e0888a03121561388757600080fd5b873561389281613c5c565b965060208801356138a281613c5c565b95506040880135945060608801359350608088013560ff811681146138c657600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000602082840312156138f557600080fd5b8151612adc81613c81565b6000806020838503121561391357600080fd5b823567ffffffffffffffff8082111561392b57600080fd5b818501915085601f83011261393f57600080fd5b81358181111561394e57600080fd5b86602082850101111561396057600080fd5b60209290920196919550909350505050565b60006020828403121561398457600080fd5b5051919050565b600081518084526139a3816020860160208601613b6a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516139e7818460208701613b6a565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b81811015613a3f57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613a0d565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015613aa3578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101613a68565b5091979650505050505050565b602081526000612adc602083018461398b565b60008219821115613ad657613ad6613bcf565b500190565b600082613b11577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b4e57613b4e613bcf565b500290565b600082821015613b6557613b65613bcf565b500390565b60005b83811015613b85578181015183820152602001613b6d565b83811115612e3c5750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613bc857613bc8613bcf565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114613c7e57600080fd5b50565b8015158114613c7e57600080fdfea26469706673582212208cb16d62de4d77a08746b141626254de45cd7186356a32265015f50f4a7712b164736f6c63430008070033",
              "opcodes": "PUSH2 0x1E0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x49D6 CODESIZE SUB DUP1 PUSH3 0x49D6 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x7AB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x5375736869204672616E636869736564204C5020546F6B656E00000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x49BB029AD7C8A58C6232657178B278E20C3BD1F3B0084072E3A97B185E1AAC5F SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x80 DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP9 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x142 SWAP2 SWAP1 PUSH3 0x713 JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A45524F5F41444452455353 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x20C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4944454E544943414C5F41444452455353455300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST PUSH2 0x2710 DUP6 GT ISZERO PUSH3 0x253 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x494E56414C49445F535741505F464545 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST DUP4 PUSH3 0x28B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x5A45524F5F41 PUSH1 0xD0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST PUSH3 0x2A3 DUP4 DUP4 DUP4 PUSH3 0x68A PUSH1 0x20 SHL PUSH3 0x2393 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x60A56C01 PUSH1 0xE1 SHL OR SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH3 0x2E7 SWAP2 SWAP1 PUSH3 0x8B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x324 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x329 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6050669 PUSH1 0xE1 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP2 PUSH3 0x372 SWAP2 SWAP1 PUSH3 0x8B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x3AF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x3B4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x4DA31827 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP2 PUSH3 0x3FD SWAP2 SWAP1 PUSH3 0x8B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x43A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x43F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP2 PUSH3 0x488 SWAP2 SWAP1 PUSH3 0x8B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x4C5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x4CA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP2 PUSH3 0x513 SWAP2 SWAP1 PUSH3 0x8B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x550 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x555 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP16 DUP2 SHL DUP3 AND PUSH2 0x120 MSTORE DUP15 SWAP1 SHL AND PUSH2 0x140 MSTORE PUSH1 0xA0 DUP13 SWAP1 MSTORE DUP7 MLOAD SWAP1 SWAP3 POP PUSH3 0x592 SWAP2 POP DUP7 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP8 ADD PUSH3 0x878 JUMP JUMPDEST PUSH1 0x6 SSTORE DUP4 MLOAD PUSH3 0x5AC SWAP1 DUP6 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP7 ADD PUSH3 0x6EC JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xC0 MSTORE DUP3 MLOAD PUSH3 0x5D3 SWAP1 PUSH1 0x20 SWAP1 DUP6 ADD DUP2 ADD SWAP1 DUP6 ADD PUSH3 0x6EC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xE0 MSTORE SWAP1 DUP15 SWAP1 SHL AND PUSH2 0x100 MSTORE PUSH2 0x160 DUP10 SWAP1 MSTORE PUSH3 0x602 DUP10 PUSH1 0x2 PUSH3 0x9DF JUMP JUMPDEST PUSH2 0x180 MSTORE DUP2 MLOAD PUSH3 0x61D SWAP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP5 ADD PUSH3 0x892 JUMP JUMPDEST PUSH3 0x62A SWAP1 PUSH1 0x12 PUSH3 0xA01 JUMP JUMPDEST PUSH3 0x637 SWAP1 PUSH1 0xA PUSH3 0x91E JUMP JUMPDEST PUSH2 0x1A0 MSTORE DUP1 MLOAD PUSH3 0x652 SWAP1 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP4 ADD PUSH3 0x892 JUMP JUMPDEST PUSH3 0x65F SWAP1 PUSH1 0x12 PUSH3 0xA01 JUMP JUMPDEST PUSH3 0x66C SWAP1 PUSH1 0xA PUSH3 0x91E JUMP JUMPDEST PUSH2 0x1C0 MSTORE POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP PUSH3 0xA9F SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH3 0x6D5 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x6E7 DUP2 PUSH3 0xA86 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x6FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x70C DUP2 PUSH3 0xA86 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x72F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 MLOAD PUSH3 0x73C DUP2 PUSH3 0xA86 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH3 0x74F DUP2 PUSH3 0xA86 JUMP JUMPDEST DUP1 SWAP7 POP POP PUSH1 0x40 DUP9 ADD MLOAD SWAP5 POP PUSH1 0x60 DUP9 ADD MLOAD SWAP4 POP PUSH1 0x80 DUP9 ADD MLOAD PUSH3 0x771 DUP2 PUSH3 0xA86 JUMP JUMPDEST PUSH1 0xA0 DUP10 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x784 DUP2 PUSH3 0xA86 JUMP JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x79B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x7EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x801 JUMPI PUSH3 0x801 PUSH3 0xA70 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x82C JUMPI PUSH3 0x82C PUSH3 0xA70 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x846 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x859 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH3 0xA27 JUMP JUMPDEST DUP1 SWAP7 POP POP POP POP POP POP PUSH3 0x86F PUSH1 0x20 DUP5 ADD PUSH3 0x6DA JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x88B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x8A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH3 0x70C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x8CB DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0xA27 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH3 0x916 JUMPI DUP2 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x8FA JUMPI PUSH3 0x8FA PUSH3 0xA5A JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH3 0x908 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH3 0x8DA JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x70C PUSH1 0xFF DUP5 AND DUP4 PUSH1 0x0 DUP3 PUSH3 0x93A JUMPI POP PUSH1 0x1 PUSH3 0x9D9 JUMP JUMPDEST DUP2 PUSH3 0x949 JUMPI POP PUSH1 0x0 PUSH3 0x9D9 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH3 0x962 JUMPI PUSH1 0x2 DUP2 EQ PUSH3 0x96D JUMPI PUSH3 0x98D JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH3 0x9D9 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH3 0x981 JUMPI PUSH3 0x981 PUSH3 0xA5A JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH3 0x9D9 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH3 0x9B2 JUMPI POP DUP2 DUP2 EXP PUSH3 0x9D9 JUMP JUMPDEST PUSH3 0x9BE DUP4 DUP4 PUSH3 0x8D5 JUMP JUMPDEST DUP1 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x9D5 JUMPI PUSH3 0x9D5 PUSH3 0xA5A JUMP JUMPDEST MUL SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH3 0x9FC JUMPI PUSH3 0x9FC PUSH3 0xA5A JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND PUSH1 0xFF DUP5 AND DUP1 DUP3 LT ISZERO PUSH3 0xA1E JUMPI PUSH3 0xA1E PUSH3 0xA5A JUMP JUMPDEST SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xA44 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA2A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0xA54 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0xA9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH2 0x1A0 MLOAD PUSH2 0x1C0 MLOAD PUSH2 0x3CC5 PUSH3 0xD11 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x4A1 ADD MSTORE DUP2 DUP2 PUSH2 0x27BD ADD MSTORE DUP2 DUP2 PUSH2 0x281A ADD MSTORE DUP2 DUP2 PUSH2 0x2872 ADD MSTORE DUP2 DUP2 PUSH2 0x2909 ADD MSTORE PUSH2 0x32CD ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x630 ADD MSTORE DUP2 DUP2 PUSH2 0x2791 ADD MSTORE DUP2 DUP2 PUSH2 0x27E9 ADD MSTORE DUP2 DUP2 PUSH2 0x2846 ADD MSTORE DUP2 DUP2 PUSH2 0x28E3 ADD MSTORE PUSH2 0x329F ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x33F5 ADD MSTORE DUP2 DUP2 PUSH2 0x344B ADD MSTORE DUP2 DUP2 PUSH2 0x34F6 ADD MSTORE PUSH2 0x3540 ADD MSTORE PUSH1 0x0 PUSH2 0x711 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x6AC ADD MSTORE DUP2 DUP2 PUSH2 0x84D ADD MSTORE DUP2 DUP2 PUSH2 0x8F0 ADD MSTORE DUP2 DUP2 PUSH2 0x9E9 ADD MSTORE DUP2 DUP2 PUSH2 0xAC4 ADD MSTORE DUP2 DUP2 PUSH2 0xB70 ADD MSTORE DUP2 DUP2 PUSH2 0xB94 ADD MSTORE DUP2 DUP2 PUSH2 0x1029 ADD MSTORE DUP2 DUP2 PUSH2 0x108B ADD MSTORE DUP2 DUP2 PUSH2 0x1179 ADD MSTORE DUP2 DUP2 PUSH2 0x137C ADD MSTORE DUP2 DUP2 PUSH2 0x13D5 ADD MSTORE DUP2 DUP2 PUSH2 0x1601 ADD MSTORE DUP2 DUP2 PUSH2 0x1A8A ADD MSTORE DUP2 DUP2 PUSH2 0x1D0C ADD MSTORE DUP2 DUP2 PUSH2 0x1DC5 ADD MSTORE DUP2 DUP2 PUSH2 0x1EEB ADD MSTORE DUP2 DUP2 PUSH2 0x1F77 ADD MSTORE DUP2 DUP2 PUSH2 0x25F1 ADD MSTORE DUP2 DUP2 PUSH2 0x2FA8 ADD MSTORE PUSH2 0x2FCC ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x37C ADD MSTORE DUP2 DUP2 PUSH2 0x7F9 ADD MSTORE DUP2 DUP2 PUSH2 0x873 ADD MSTORE DUP2 DUP2 PUSH2 0x91F ADD MSTORE DUP2 DUP2 PUSH2 0x943 ADD MSTORE DUP2 DUP2 PUSH2 0xA9E ADD MSTORE DUP2 DUP2 PUSH2 0xB41 ADD MSTORE DUP2 DUP2 PUSH2 0xFFD ADD MSTORE DUP2 DUP2 PUSH2 0x1055 ADD MSTORE DUP2 DUP2 PUSH2 0x1110 ADD MSTORE DUP2 DUP2 PUSH2 0x1327 ADD MSTORE DUP2 DUP2 PUSH2 0x148B ADD MSTORE DUP2 DUP2 PUSH2 0x1593 ADD MSTORE DUP2 DUP2 PUSH2 0x1A22 ADD MSTORE DUP2 DUP2 PUSH2 0x1D65 ADD MSTORE DUP2 DUP2 PUSH2 0x1DF1 ADD MSTORE DUP2 DUP2 PUSH2 0x1E31 ADD MSTORE DUP2 DUP2 PUSH2 0x1F4B ADD MSTORE DUP2 DUP2 PUSH2 0x25C5 ADD MSTORE DUP2 DUP2 PUSH2 0x2F59 ADD MSTORE PUSH2 0x2F7D ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x685 ADD MSTORE PUSH2 0x1925 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x47A ADD MSTORE DUP2 DUP2 PUSH2 0x2651 ADD MSTORE DUP2 DUP2 PUSH2 0x2A57 ADD MSTORE DUP2 DUP2 PUSH2 0x2B86 ADD MSTORE DUP2 DUP2 PUSH2 0x2C7E ADD MSTORE PUSH2 0x30BB ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x330 ADD MSTORE DUP2 DUP2 PUSH2 0xC36 ADD MSTORE PUSH2 0x3167 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x4C8 ADD MSTORE DUP2 DUP2 PUSH2 0x8A2 ADD MSTORE DUP2 DUP2 PUSH2 0xAF3 ADD MSTORE DUP2 DUP2 PUSH2 0x19E5 ADD MSTORE DUP2 DUP2 PUSH2 0x3110 ADD MSTORE DUP2 DUP2 PUSH2 0x31EF ADD MSTORE PUSH2 0x325A ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x440 ADD MSTORE PUSH2 0x20BE ADD MSTORE PUSH2 0x3CC5 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x277 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x627DD56A GT PUSH2 0x160 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xCF58879A GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x6CE JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6E1 JUMPI DUP1 PUSH4 0xF446C1D0 EQ PUSH2 0x70C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCF58879A EQ PUSH2 0x680 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBAA8C7CB GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xBAA8C7CB EQ PUSH2 0x62B JUMPI DUP1 PUSH4 0xBC3377D9 EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x605 JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x58F JUMPI DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x5CB JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x565 JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x627DD56A EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x51D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x4E25DC47 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x4E25DC47 EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x4C3 JUMPI DUP1 PUSH4 0x570CA735 EQ PUSH2 0x4EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x3DA JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x421 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x43B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x24A JUMPI DUP1 PUSH4 0x18160DDD GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x39E JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0x25A93264 EQ PUSH2 0x3BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x308 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x28F PUSH2 0x28A CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x733 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204672616E636869736564204C5020546F6B656E00000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x3AB0 JUMP JUMPDEST PUSH2 0x2F3 PUSH2 0xD00 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x31B PUSH2 0x316 CALLDATASIZE PUSH1 0x4 PUSH2 0x37D1 JUMP JUMPDEST PUSH2 0xD14 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x31B PUSH2 0x3B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x382B JUMP JUMPDEST PUSH2 0xD8E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x352 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x3E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x3A4B JUMP JUMPDEST PUSH2 0x28F PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x429 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x470 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x1246 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x352 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x518 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x124D JUMP JUMPDEST PUSH2 0x525 PUSH2 0x1571 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x39F1 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x540 CALLDATASIZE PUSH1 0x4 PUSH2 0x361F JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x560 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x1670 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x573 CALLDATASIZE PUSH1 0x4 PUSH2 0x361F JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x58D PUSH2 0x18B3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x54726964656E743A4672616E6368697365644879627269640000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x600 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x19AE JUMP JUMPDEST PUSH2 0x31B PUSH2 0x613 CALLDATASIZE PUSH1 0x4 PUSH2 0x37D1 JUMP JUMPDEST PUSH2 0x1B57 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x626 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x1C09 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x31B SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x58D PUSH2 0x6DC CALLDATASIZE PUSH1 0x4 PUSH2 0x386C JUMP JUMPDEST PUSH2 0x202B JUMP JUMPDEST PUSH2 0x28F PUSH2 0x6EF CALLDATASIZE PUSH1 0x4 PUSH2 0x37FD JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0x7A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x7BD DUP8 DUP10 ADD DUP10 PUSH2 0x3687 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x7E5 JUMPI PUSH2 0x7E5 DUP5 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7F0 PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x9E7 JUMPI PUSH32 0x0 SWAP2 POP PUSH2 0x898 PUSH32 0x0 DUP8 PUSH2 0x261C JUMP JUMPDEST SWAP6 POP PUSH2 0x2710 PUSH2 0x8C7 PUSH32 0x0 DUP9 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x8D1 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0x8E9 PUSH2 0x8E0 DUP3 DUP9 PUSH2 0x3B53 JUMP JUMPDEST DUP6 DUP6 PUSH1 0x1 PUSH2 0x2781 JUMP JUMPDEST SWAP10 POP PUSH2 0x918 PUSH32 0x0 DUP10 DUP13 DUP9 DUP12 PUSH2 0x2941 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x96C PUSH32 0x0 PUSH2 0x967 PUSH32 0x0 PUSH2 0x29CA JUMP JUMPDEST PUSH2 0x261C JUMP JUMPDEST SWAP1 POP DUP7 PUSH2 0x979 DUP7 DUP4 PUSH2 0x3B53 JUMP JUMPDEST LT ISZERO PUSH2 0x9E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP PUSH2 0xC2F JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH32 0x0 SWAP2 POP PUSH2 0xAE9 PUSH32 0x0 DUP8 PUSH2 0x261C JUMP JUMPDEST SWAP6 POP PUSH2 0x2710 PUSH2 0xB18 PUSH32 0x0 DUP9 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0xB22 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0xB3A PUSH2 0xB31 DUP3 DUP9 PUSH2 0x3B53 JUMP JUMPDEST DUP6 DUP6 PUSH1 0x0 PUSH2 0x2781 JUMP JUMPDEST SWAP10 POP PUSH2 0xB69 PUSH32 0x0 DUP10 DUP13 DUP9 DUP12 PUSH2 0x2941 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBB8 PUSH32 0x0 PUSH2 0x967 PUSH32 0x0 PUSH2 0x29CA JUMP JUMPDEST SWAP1 POP DUP7 PUSH2 0xBC5 DUP6 DUP4 PUSH2 0x3B53 JUMP JUMPDEST LT ISZERO PUSH2 0xC2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP JUMPDEST PUSH2 0xC5C DUP10 DUP3 PUSH32 0x0 PUSH1 0x0 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0xC64 PUSH2 0x2E42 JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP10 DUP15 PUSH1 0x40 MLOAD PUSH2 0xCE3 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP6 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xD0B PUSH2 0x2593 JUMP JUMPDEST SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xD7C SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xDBD JUMPI PUSH2 0xDBD DUP4 PUSH2 0x2433 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xE5A JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xE54 SWAP1 DUP5 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xE8F SWAP1 DUP5 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xEF7 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0xF77 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 DUP1 PUSH2 0xF8B DUP5 DUP7 ADD DUP7 PUSH2 0x3798 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xF98 DUP3 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xFA3 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x2 SLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 SWAP1 DUP3 PUSH2 0xFC9 DUP7 DUP5 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0xFD3 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0xFE2 DUP7 DUP6 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0xFEC SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0xFF8 ADDRESS DUP5 PUSH2 0x2FF0 JUMP JUMPDEST PUSH2 0x1024 PUSH32 0x0 DUP4 DUP11 DUP11 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x1050 PUSH32 0x0 DUP3 DUP11 DUP11 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x107A PUSH32 0x0 DUP4 PUSH2 0x3086 JUMP JUMPDEST PUSH2 0x1084 SWAP1 DUP8 PUSH2 0x3B53 JUMP JUMPDEST SWAP6 POP PUSH2 0x10B0 PUSH32 0x0 DUP3 PUSH2 0x3086 JUMP JUMPDEST PUSH2 0x10BA SWAP1 DUP7 PUSH2 0x3B53 JUMP JUMPDEST SWAP5 POP PUSH2 0x10C4 PUSH2 0x2E42 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x10DA JUMPI SWAP1 POP POP SWAP9 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP10 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1161 JUMPI PUSH2 0x1161 PUSH2 0x3BFE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP10 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x11CA JUMPI PUSH2 0x11CA PUSH2 0x3BFE JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP2 DUP3 ADD DUP4 SWAP1 MSTORE DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0x12BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x12D0 DUP6 DUP8 ADD DUP8 PUSH2 0x363C JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1304 JUMPI PUSH2 0x1304 DUP3 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x130F PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x131E PUSH2 0x2F51 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x13D3 JUMPI POP PUSH32 0x0 PUSH2 0x13A5 DUP7 DUP6 PUSH2 0x3B53 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH2 0x13B3 DUP11 DUP5 PUSH2 0x3106 JUMP JUMPDEST SWAP1 POP PUSH2 0x13CB PUSH2 0x13C2 DUP3 DUP6 PUSH2 0x3B53 JUMP JUMPDEST DUP9 DUP9 PUSH1 0x1 PUSH2 0x2781 JUMP JUMPDEST SWAP11 POP POP PUSH2 0x14DE JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1488 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP PUSH32 0x0 PUSH2 0x14B4 DUP6 DUP5 PUSH2 0x3B53 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH2 0x14C2 DUP11 DUP5 PUSH2 0x3106 JUMP JUMPDEST SWAP1 POP PUSH2 0x14DA PUSH2 0x14D1 DUP3 DUP6 PUSH2 0x3B53 JUMP JUMPDEST DUP9 DUP9 PUSH1 0x0 PUSH2 0x2781 JUMP JUMPDEST SWAP11 POP POP JUMPDEST PUSH2 0x14EA DUP2 DUP12 DUP11 DUP11 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x14F2 PUSH2 0x2E42 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP6 DUP15 PUSH1 0x40 MLOAD PUSH2 0xCE3 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x15C5 JUMPI PUSH2 0x15C5 PUSH2 0x3BFE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1633 JUMPI PUSH2 0x1633 PUSH2 0x3BFE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0x16DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 PUSH2 0x16F1 DUP4 DUP6 ADD DUP6 PUSH2 0x361F JUMP JUMPDEST SWAP1 POP PUSH2 0x16FC DUP2 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1707 PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1716 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x0 PUSH2 0x172A DUP7 DUP6 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1738 DUP7 DUP6 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1749 DUP5 DUP5 DUP12 DUP12 PUSH2 0x3194 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x176C PUSH2 0x175D DUP5 DUP11 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1767 DUP5 DUP11 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x3297 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x1793 JUMPI PUSH2 0x177F PUSH2 0x3E8 DUP3 PUSH2 0x3B53 JUMP JUMPDEST SWAP12 POP PUSH2 0x178E PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x3307 JUMP JUMPDEST PUSH2 0x17C5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x179F DUP12 DUP12 PUSH2 0x3297 JUMP JUMPDEST SWAP1 POP DUP1 DUP8 PUSH2 0x17AD DUP3 DUP6 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x17B7 SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x17C1 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP13 POP POP JUMPDEST DUP12 PUSH2 0x182C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F4C49515549444954595F4D494E544544000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH2 0x1836 DUP12 DUP14 PUSH2 0x3307 JUMP JUMPDEST PUSH2 0x183E PUSH2 0x2E42 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 DUP2 ADD DUP14 SWAP1 MSTORE DUP13 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND SWAP1 CALLER SWAP1 PUSH32 0xF9C32FBC56FF04F32A233EBC26E388564223745E28ABD8D0781DD906537F563E SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP9 SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC14AD80200000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH2 0x1950 SWAP2 SWAP1 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x198B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1990 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x19A8 SWAP2 SWAP1 PUSH2 0x3972 JUMP JUMPDEST PUSH1 0x6 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x19BE DUP5 DUP7 ADD DUP7 PUSH2 0x37D1 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x19CD PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x19DB DUP5 DUP5 PUSH2 0x261C JUMP JUMPDEST SWAP3 POP PUSH2 0x2710 PUSH2 0x1A0A PUSH32 0x0 DUP6 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x1A14 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x1A1E SWAP1 DUP5 PUSH2 0x3B53 JUMP JUMPDEST SWAP3 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1A88 JUMPI PUSH2 0x1A81 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x2781 JUMP JUMPDEST SWAP5 POP PUSH2 0x1B4D JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1B3D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH2 0x1B4A DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x2781 JUMP JUMPDEST SWAP5 POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1B86 JUMPI PUSH2 0x1B86 DUP4 PUSH2 0x2433 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x1BA5 SWAP1 DUP5 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xD7C SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0x1C77 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x1C8C DUP6 DUP8 ADD DUP8 PUSH2 0x363C JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x1C9B DUP3 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1CA6 PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1CB5 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x2 SLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 SWAP1 DUP3 PUSH2 0x1CDB DUP7 DUP5 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x1CE5 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0x1CF4 DUP7 DUP6 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x1CFE SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0x1D0A ADDRESS DUP5 PUSH2 0x2FF0 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1E2F JUMPI PUSH1 0x0 PUSH2 0x1D8A PUSH32 0x0 DUP5 PUSH2 0x3106 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DB4 PUSH2 0x1D99 DUP3 DUP6 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1DA3 DUP6 DUP13 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1DAD DUP6 DUP13 PUSH2 0x3B53 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2781 JUMP JUMPDEST PUSH2 0x1DBE SWAP1 DUP4 PUSH2 0x3AC3 JUMP JUMPDEST SWAP2 POP PUSH2 0x1DEC PUSH32 0x0 DUP4 DUP14 DUP14 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x1E16 PUSH32 0x0 DUP5 PUSH2 0x3086 JUMP JUMPDEST PUSH2 0x1E20 SWAP1 DUP9 PUSH2 0x3B53 JUMP JUMPDEST SWAP7 POP DUP2 SWAP13 POP PUSH1 0x0 SWAP3 POP POP PUSH2 0x1FB1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1EE4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F10 PUSH32 0x0 DUP4 PUSH2 0x3106 JUMP JUMPDEST SWAP1 POP PUSH2 0x1F3A PUSH2 0x1F1F DUP3 DUP5 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1F29 DUP6 DUP13 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1F33 DUP6 DUP13 PUSH2 0x3B53 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2781 JUMP JUMPDEST PUSH2 0x1F44 SWAP1 DUP5 PUSH2 0x3AC3 JUMP JUMPDEST SWAP3 POP PUSH2 0x1F72 PUSH32 0x0 DUP5 DUP14 DUP14 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x1F9C PUSH32 0x0 DUP4 PUSH2 0x3086 JUMP JUMPDEST PUSH2 0x1FA6 SWAP1 DUP8 PUSH2 0x3B53 JUMP JUMPDEST SWAP6 POP DUP3 SWAP13 POP PUSH1 0x0 SWAP2 POP POP JUMPDEST PUSH2 0x1FB9 PUSH2 0x2E42 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP8 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x2095 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x0 SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP8 PUSH2 0x2110 DUP4 PUSH2 0x3B96 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x21B1 SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x223A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x22B5 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x231B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x242E JUMPI PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE DUP6 DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1472C27100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH2 0x24D0 SWAP2 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x250B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2510 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x252A SWAP2 SWAP1 PUSH2 0x38E3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x242E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F57484954454C49535445440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND PUSH2 0x25EA PUSH32 0x0 DUP4 PUSH2 0x261C JUMP JUMPDEST SWAP2 POP PUSH2 0x2616 PUSH32 0x0 DUP3 PUSH2 0x261C JUMP JUMPDEST SWAP1 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD DUP2 SWAP1 MSTORE SWAP2 DUP3 SWAP2 PUSH32 0x0 AND SWAP1 PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x2721 SWAP2 SWAP1 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x275C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2761 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2779 SWAP2 SWAP1 PUSH2 0x3972 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 ISZERO PUSH2 0x2815 JUMPI PUSH2 0x27B6 PUSH32 0x0 DUP8 PUSH2 0x3B16 JUMP JUMPDEST SWAP2 POP PUSH2 0x27E2 PUSH32 0x0 DUP7 PUSH2 0x3B16 JUMP JUMPDEST SWAP1 POP PUSH2 0x280E PUSH32 0x0 DUP9 PUSH2 0x3B16 JUMP JUMPDEST SWAP7 POP PUSH2 0x289A JUMP JUMPDEST PUSH2 0x283F PUSH32 0x0 DUP7 PUSH2 0x3B16 JUMP JUMPDEST SWAP2 POP PUSH2 0x286B PUSH32 0x0 DUP8 PUSH2 0x3B16 JUMP JUMPDEST SWAP1 POP PUSH2 0x2897 PUSH32 0x0 DUP9 PUSH2 0x3B16 JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH1 0x0 PUSH2 0x28A6 DUP4 DUP4 PUSH2 0x3378 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x28B4 DUP10 DUP6 PUSH2 0x3AC3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x28C2 DUP3 DUP5 PUSH2 0x34CB JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH2 0x28D0 DUP3 DUP7 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x28DA SWAP2 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP6 POP DUP7 PUSH2 0x2907 JUMPI PUSH32 0x0 PUSH2 0x2929 JUMP JUMPDEST PUSH32 0x0 JUMPDEST PUSH2 0x2933 SWAP1 DUP8 PUSH2 0x3ADB JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x294D DUP6 DUP5 DUP7 DUP5 PUSH2 0x2AE3 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x29C3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x2990 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x3AB0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x29BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH2 0x2A84 SWAP2 SWAP1 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2ABF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2AC4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2ADC SWAP2 SWAP1 PUSH2 0x3972 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2C65 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x0 PUSH1 0xA4 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC4 SWAP1 SWAP4 ADD DUP5 MSTORE PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP3 MLOAD PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH2 0x2BB2 SWAP2 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2BEF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2BF4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2C5F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57495448445241575F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP PUSH2 0x2E3C JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP7 ADDRESS DUP7 PUSH2 0x2CCC DUP4 DUP11 PUSH2 0x3086 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x44 DUP5 ADD MSTORE SWAP3 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x2D8F SWAP2 SWAP1 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2DCC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2DD1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x29C3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2E4D PUSH2 0x2F51 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 LT DUP1 ISZERO PUSH2 0x2E80 JUMPI POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT JUMPDEST PUSH2 0x2EE6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564552464C4F57000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP1 DUP4 AND OR PUSH1 0x7 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH32 0xCF2AA50876CDFBB541206F89AF0EE78D44A2ABF8D328E37FA4917F982149848A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2FA1 PUSH32 0x0 PUSH2 0x967 PUSH32 0x0 PUSH2 0x29CA JUMP JUMPDEST SWAP2 POP PUSH2 0x2616 PUSH32 0x0 PUSH2 0x967 PUSH32 0x0 PUSH2 0x29CA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x3025 SWAP1 DUP5 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD DUP2 SWAP1 MSTORE SWAP2 DUP3 SWAP2 PUSH32 0x0 AND SWAP1 PUSH32 0xDA5139CA00000000000000000000000000000000000000000000000000000000 SWAP1 PUSH1 0x84 ADD PUSH2 0x2698 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2710 PUSH2 0x3135 PUSH32 0x0 DUP5 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x313F SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2710 PUSH1 0x6 SLOAD DUP4 PUSH2 0x3154 SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x315E SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0x318D DUP5 DUP3 PUSH32 0x0 PUSH1 0x0 PUSH2 0x2AE3 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 ISZERO DUP1 PUSH2 0x31A2 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x31B2 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x328E JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x31BF DUP6 DUP10 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x31C9 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP DUP6 DUP2 GT PUSH2 0x3224 JUMPI PUSH2 0x31DF PUSH2 0x2710 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x31E9 DUP3 DUP9 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x3213 SWAP1 PUSH32 0x0 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x321D SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP2 POP PUSH2 0x328C JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x3231 DUP8 DUP10 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x323B SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0x324A PUSH2 0x2710 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3254 DUP3 DUP11 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x327E SWAP1 PUSH32 0x0 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3288 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP4 POP POP JUMPDEST POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x32C4 PUSH32 0x0 DUP6 PUSH2 0x3B16 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x32F2 PUSH32 0x0 DUP6 PUSH2 0x3B16 JUMP JUMPDEST SWAP1 POP PUSH2 0x32FE DUP3 DUP3 PUSH2 0x3378 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3319 SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x307A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3385 DUP4 DUP6 PUSH2 0x3AC3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3391 JUMPI PUSH1 0x0 SWAP2 POP JUMPDEST PUSH1 0x0 DUP2 DUP2 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x34C1 JUMPI PUSH1 0x0 PUSH1 0x4 DUP8 DUP5 DUP11 PUSH2 0x33B1 DUP3 DUP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x33BB SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x33C5 SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x33CF SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x33D9 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP DUP3 SWAP4 POP DUP1 PUSH1 0x3 PUSH2 0x33EB SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH2 0x3419 PUSH1 0x64 PUSH32 0x0 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x3423 SWAP2 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x342D SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3437 SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST DUP4 PUSH2 0x3443 DUP4 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH1 0x64 PUSH2 0x346F DUP10 PUSH32 0x0 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3479 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x3483 SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST PUSH2 0x348D SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3497 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP3 POP PUSH2 0x34A3 DUP4 DUP6 PUSH2 0x35FD JUMP JUMPDEST ISZERO PUSH2 0x34AE JUMPI POP PUSH2 0x34C1 JUMP JUMPDEST POP DUP1 PUSH2 0x34B9 DUP2 PUSH2 0x3B96 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3396 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x34D9 DUP5 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x34E3 DUP5 DUP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x34ED SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x64 PUSH2 0x351C PUSH32 0x0 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3526 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x3530 DUP5 DUP4 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x353A SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH2 0x356A PUSH1 0x64 DUP7 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3574 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x357E SWAP1 DUP7 PUSH2 0x3AC3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 SWAP4 POP PUSH1 0x0 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x1B4D JUMPI DUP5 SWAP2 POP DUP6 DUP4 PUSH2 0x35A2 DUP5 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x35AC SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST PUSH2 0x35B6 SWAP2 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST DUP5 PUSH2 0x35C1 DUP8 DUP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x35CB SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST PUSH2 0x35D5 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP5 POP PUSH2 0x35E1 DUP6 DUP4 PUSH2 0x35FD JUMP JUMPDEST ISZERO PUSH2 0x35EB JUMPI PUSH2 0x1B4D JUMP JUMPDEST DUP1 PUSH2 0x35F5 DUP2 PUSH2 0x3B96 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3588 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 GT ISZERO PUSH2 0x3614 JUMPI POP PUSH1 0x1 DUP2 DUP4 SUB GT ISZERO PUSH2 0xD88 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 SUB GT ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2ADC DUP2 PUSH2 0x3C5C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3651 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x365C DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x366C DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x367C DUP2 PUSH2 0x3C81 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x369F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x36AA DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x36BA DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x36CA DUP2 PUSH2 0x3C81 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x36EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3702 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3714 JUMPI PUSH2 0x3714 PUSH2 0x3C2D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x375A JUMPI PUSH2 0x375A PUSH2 0x3C2D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP12 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x37AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x37B6 DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x37C6 DUP2 PUSH2 0x3C81 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x37E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x37EF DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x381B DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x37C6 DUP2 PUSH2 0x3C5C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x384B DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x385B DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3887 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x3892 DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x38A2 DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x38C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x38F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2ADC DUP2 PUSH2 0x3C81 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3913 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x392B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x393F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x394E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3960 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3984 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x39A3 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3B6A JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x39E7 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3B6A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3A3F JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3A0D JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3AA3 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3A68 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2ADC PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x398B JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3AD6 JUMPI PUSH2 0x3AD6 PUSH2 0x3BCF JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3B11 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3B4E JUMPI PUSH2 0x3B4E PUSH2 0x3BCF JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3B65 JUMPI PUSH2 0x3B65 PUSH2 0x3BCF JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3B85 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3B6D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2E3C JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x3BC8 JUMPI PUSH2 0x3BC8 PUSH2 0x3BCF JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3C7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3C7E JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP13 0xB1 PUSH14 0x62DE4D77A08746B141626254DE45 0xCD PUSH18 0x86356A32265015F50F4A7712B164736F6C63 NUMBER STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "625:20646:54:-:0;;;2347:1754;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1711:4:57;;;;;;;;;;;;;;;;;1745:10;;;;;;;;;;-1:-1:-1;;;1745:10:57;;;;1554:278;;1582:95;1554:278;;;3385:25:64;;;;1695:22:57;3426:18:64;;;3419:34;;;;1735:21:57;3469:18:64;;;3462:34;1774:13:57;3512:18:64;;;3505:34;1813:4:57;3555:19:64;;;3548:61;3357:19;;1554:278:57;;;;;;;;;;;;1531:311;;;;;;1512:330;;;;;;2421:15:54;2438;2455:16;2473:9;2484:25;2511:17;2530:12;2570:11;2546:98;;;;;;;;;;;;:::i;:::-;2420:224;;-1:-1:-1;2420:224:54;;-1:-1:-1;2420:224:54;;-1:-1:-1;2420:224:54;-1:-1:-1;2420:224:54;-1:-1:-1;2420:224:54;-1:-1:-1;2420:224:54;-1:-1:-1;;2723:21:54;;2715:46;;;;-1:-1:-1;2715:46:54;;3822:2:64;2715:46:54;;;3804:21:64;3861:2;3841:18;;;3834:30;-1:-1:-1;3880:18:64;;;3873:42;3932:18;;2715:46:54;;;;;;;;;-1:-1:-1;2779:18:54;;;;;;;;2771:50;;;;-1:-1:-1;2771:50:54;;4497:2:64;2771:50:54;;;4479:21:64;4536:2;4516:18;;;4509:30;4575:21;4555:18;;;4548:49;4614:18;;2771:50:54;4295:343:64;2771:50:54;1264:5;2839:8;:19;;2831:48;;;;-1:-1:-1;2831:48:54;;4845:2:64;2831:48:54;;;4827:21:64;4884:2;4864:18;;;4857:30;-1:-1:-1;4903:18:64;;;4896:46;4959:18;;2831:48:54;4643:340:64;2831:48:54;2897:6;2889:25;;;;-1:-1:-1;2889:25:54;;4163:2:64;2889:25:54;;;4145:21:64;4202:1;4182:18;;;4175:29;-1:-1:-1;4220:18:64;;;4213:36;4266:18;;2889:25:54;3961:329:64;2889:25:54;2925:72;2959:17;2978:9;2989:7;2925:33;;;;;:72;;:::i;:::-;3062:55;;;;;;;;;;;;;;;;-1:-1:-1;3062:55:54;-1:-1:-1;3062:55:54;;;3035:83;;-1:-1:-1;;;3035:26:54;;;:83;;3062:55;3035:83;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3184:57:54;;;;;;;;;;;;;;;;-1:-1:-1;3184:57:54;-1:-1:-1;3184:57:54;;;3157:85;;3008:110;;-1:-1:-1;;;;;3157:26:54;;;:85;;3184:57;3157:85;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3305:54:54;;;;;;;;;;;;;;;;-1:-1:-1;3305:54:54;-1:-1:-1;3305:54:54;;;3278:82;;3128:114;;-1:-1:-1;;;;;3278:26:54;;;:82;;3305:54;3278:82;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3419:34:54;;;;;;;;;;;;;;;;-1:-1:-1;3419:34:54;-1:-1:-1;3419:34:54;;;3400:54;;3252:108;;-1:-1:-1;;;;;3400:18:54;;;:54;;3419:34;3400:54;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3535:34:54;;;;;;;;;;;;;;;;-1:-1:-1;3535:34:54;-1:-1:-1;3535:34:54;;;3516:54;;3370:84;;-1:-1:-1;;;;;3516:18:54;;;:54;;3535:34;3516:54;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3603:16:54;;;;;;;3629;;;;;;3655:18;;;;3692:30;;3486:84;;-1:-1:-1;3692:30:54;;-1:-1:-1;3692:30:54;;;;;;;;;;:::i;:::-;3683:6;:39;3743:32;;;;;;;;;;;;;;:::i;:::-;3732:43;;-1:-1:-1;3732:43:54;;;3793:29;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;3785:37:54;;;;;;;3832:32;;;;;;;3874:5;;;;3895;3874;3895:1;:5;:::i;:::-;3889:11;;3954:31;;;;;;;;;;;;;;:::i;:::-;3943:42;;696:2:57;3943:42:54;:::i;:::-;3938:48;;:2;:48;:::i;:::-;3910:76;;4040:31;;;;;;;;;;;;;;:::i;:::-;4029:42;;696:2:57;4029:42:54;:::i;:::-;4024:48;;:2;:48;:::i;:::-;3996:76;;-1:-1:-1;;4093:1:54;4082:8;:12;-1:-1:-1;625:20646:54;;-1:-1:-1;;;;;;;;;;;625:20646:54;1910:238:57;2039:16;:36;;-1:-1:-1;2039:36:57;;;-1:-1:-1;2039:36:57;;;;;;;-1:-1:-1;2085:20:57;;;;;;;;;;;;;;;2115:26;;;;2137:4;2128:13;;-1:-1:-1;2128:13:57;-1:-1:-1;2128:13:57;;;2115:26;1910:238;;;:::o;14:138:64:-;93:13;;115:31;93:13;115:31;:::i;:::-;14:138;;;:::o;157:259::-;235:6;288:2;276:9;267:7;263:23;259:32;256:52;;;304:1;301;294:12;256:52;336:9;330:16;355:31;380:5;355:31;:::i;:::-;405:5;157:259;-1:-1:-1;;;157:259:64:o;421:973::-;574:6;582;590;598;606;614;622;675:3;663:9;654:7;650:23;646:33;643:53;;;692:1;689;682:12;643:53;724:9;718:16;743:31;768:5;743:31;:::i;:::-;843:2;828:18;;822:25;793:5;;-1:-1:-1;856:33:64;822:25;856:33;:::i;:::-;908:7;898:17;;;955:2;944:9;940:18;934:25;924:35;;999:2;988:9;984:18;978:25;968:35;;1048:3;1037:9;1033:19;1027:26;1062:33;1087:7;1062:33;:::i;:::-;1166:3;1151:19;;1145:26;1114:7;;-1:-1:-1;1180:33:64;1145:26;1180:33;:::i;:::-;1284:3;1269:19;;1263:26;1232:7;;-1:-1:-1;1327:15:64;;1320:23;1308:36;;1298:64;;1358:1;1355;1348:12;1298:64;1381:7;1371:17;;;421:973;;;;;;;;;;:::o;1399:976::-;1487:6;1495;1548:2;1536:9;1527:7;1523:23;1519:32;1516:52;;;1564:1;1561;1554:12;1516:52;1591:16;;-1:-1:-1;1656:14:64;;;1653:34;;;1683:1;1680;1673:12;1653:34;1721:6;1710:9;1706:22;1696:32;;1766:7;1759:4;1755:2;1751:13;1747:27;1737:55;;1788:1;1785;1778:12;1737:55;1817:2;1811:9;1839:2;1835;1832:10;1829:36;;;1845:18;;:::i;:::-;1920:2;1914:9;1888:2;1974:13;;-1:-1:-1;;1970:22:64;;;1994:2;1966:31;1962:40;1950:53;;;2018:18;;;2038:22;;;2015:46;2012:72;;;2064:18;;:::i;:::-;2104:10;2100:2;2093:22;2139:2;2131:6;2124:18;2181:7;2174:4;2169:2;2165;2161:11;2157:22;2154:35;2151:55;;;2202:1;2199;2192:12;2151:55;2215:59;2271:2;2264:4;2256:6;2252:17;2245:4;2241:2;2237:13;2215:59;:::i;:::-;2293:6;2283:16;;;;;;;2318:51;2363:4;2352:9;2348:20;2318:51;:::i;:::-;2308:61;;1399:976;;;;;:::o;2380:184::-;2450:6;2503:2;2491:9;2482:7;2478:23;2474:32;2471:52;;;2519:1;2516;2509:12;2471:52;-1:-1:-1;2542:16:64;;2380:184;-1:-1:-1;2380:184:64:o;2569:273::-;2637:6;2690:2;2678:9;2669:7;2665:23;2661:32;2658:52;;;2706:1;2703;2696:12;2658:52;2738:9;2732:16;2788:4;2781:5;2777:16;2770:5;2767:27;2757:55;;2808:1;2805;2798:12;2847:274;2976:3;3014:6;3008:13;3030:53;3076:6;3071:3;3064:4;3056:6;3052:17;3030:53;:::i;:::-;3099:16;;;;;2847:274;-1:-1:-1;;2847:274:64:o;4988:422::-;5077:1;5120:5;5077:1;5134:270;5155:7;5145:8;5142:21;5134:270;;;5214:4;5210:1;5206:6;5202:17;5196:4;5193:27;5190:53;;;5223:18;;:::i;:::-;5273:7;5263:8;5259:22;5256:55;;;5293:16;;;;5256:55;5372:22;;;;5332:15;;;;5134:270;;;5138:3;4988:422;;;;;:::o;5415:140::-;5473:5;5502:47;5543:4;5533:8;5529:19;5523:4;5609:5;5639:8;5629:80;;-1:-1:-1;5680:1:64;5694:5;;5629:80;5728:4;5718:76;;-1:-1:-1;5765:1:64;5779:5;;5718:76;5810:4;5828:1;5823:59;;;;5896:1;5891:130;;;;5803:218;;5823:59;5853:1;5844:10;;5867:5;;;5891:130;5928:3;5918:8;5915:17;5912:43;;;5935:18;;:::i;:::-;-1:-1:-1;;5991:1:64;5977:16;;6006:5;;5803:218;;6105:2;6095:8;6092:16;6086:3;6080:4;6077:13;6073:36;6067:2;6057:8;6054:16;6049:2;6043:4;6040:12;6036:35;6033:77;6030:159;;;-1:-1:-1;6142:19:64;;;6174:5;;6030:159;6221:34;6246:8;6240:4;6221:34;:::i;:::-;6291:6;6287:1;6283:6;6279:19;6270:7;6267:32;6264:58;;;6302:18;;:::i;:::-;6340:20;;-1:-1:-1;5560:806:64;;;;;:::o;6371:168::-;6411:7;6477:1;6473;6469:6;6465:14;6462:1;6459:21;6454:1;6447:9;6440:17;6436:45;6433:71;;;6484:18;;:::i;:::-;-1:-1:-1;6524:9:64;;6371:168::o;6544:195::-;6582:4;6619;6616:1;6612:12;6651:4;6648:1;6644:12;6676:3;6671;6668:12;6665:38;;;6683:18;;:::i;:::-;6720:13;;;6544:195;-1:-1:-1;;;6544:195:64:o;6744:258::-;6816:1;6826:113;6840:6;6837:1;6834:13;6826:113;;;6916:11;;;6910:18;6897:11;;;6890:39;6862:2;6855:10;6826:113;;;6957:6;6954:1;6951:13;6948:48;;;6992:1;6983:6;6978:3;6974:16;6967:27;6948:48;;6744:258;;;:::o;7007:127::-;7068:10;7063:3;7059:20;7056:1;7049:31;7099:4;7096:1;7089:15;7123:4;7120:1;7113:15;7139:127;7200:10;7195:3;7191:20;7188:1;7181:31;7231:4;7228:1;7221:15;7255:4;7252:1;7245:15;7271:131;-1:-1:-1;7346:31:64;;7336:42;;7326:70;;7392:1;7389;7382:12;7326:70;7271:131;:::o;:::-;625:20646:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@A_19161": {
                  "entryPoint": null,
                  "id": 19161,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@DOMAIN_SEPARATOR_23253": {
                  "entryPoint": null,
                  "id": 23253,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@PERMIT_TYPEHASH_23250": {
                  "entryPoint": null,
                  "id": 23250,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@__balance_20465": {
                  "entryPoint": 10698,
                  "id": 20465,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_balance_20430": {
                  "entryPoint": 12113,
                  "id": 20430,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@_burn_23592": {
                  "entryPoint": 12272,
                  "id": 23592,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_checkWhiteList_23628": {
                  "entryPoint": 9267,
                  "id": 23628,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_computeLiquidityFromAdjustedBalances_20832": {
                  "entryPoint": 13176,
                  "id": 20832,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_computeLiquidity_20725": {
                  "entryPoint": 12951,
                  "id": 20725,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_getAmountOut_20627": {
                  "entryPoint": 10113,
                  "id": 20627,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_getReserves_20355": {
                  "entryPoint": 9619,
                  "id": 20355,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@_getY_20930": {
                  "entryPoint": 13515,
                  "id": 20930,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_handleFee_21063": {
                  "entryPoint": 12550,
                  "id": 21063,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_mint_23564": {
                  "entryPoint": 13063,
                  "id": 23564,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_nonOptimalMintFee_21146": {
                  "entryPoint": 12692,
                  "id": 21146,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "@_processSwap_20325": {
                  "entryPoint": 10561,
                  "id": 20325,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@_toAmount_20500": {
                  "entryPoint": 9756,
                  "id": 20500,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_toShare_20535": {
                  "entryPoint": 12422,
                  "id": 20535,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_transfer_20695": {
                  "entryPoint": 10979,
                  "id": 20695,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_updateReserves_20404": {
                  "entryPoint": 11842,
                  "id": 20404,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@allowance_23244": {
                  "entryPoint": null,
                  "id": 23244,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@approve_23345": {
                  "entryPoint": 3348,
                  "id": 23345,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@balanceOf_23237": {
                  "entryPoint": null,
                  "id": 23237,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@barFeeTo_19151": {
                  "entryPoint": null,
                  "id": 19151,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@barFee_19173": {
                  "entryPoint": null,
                  "id": 19173,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@bento_19153": {
                  "entryPoint": null,
                  "id": 19153,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@burnSingle_19919": {
                  "entryPoint": 7177,
                  "id": 19919,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@burn_19719": {
                  "entryPoint": 3849,
                  "id": 19719,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@decimals_23224": {
                  "entryPoint": null,
                  "id": 23224,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@flashSwap_20264": {
                  "entryPoint": 1843,
                  "id": 20264,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAmountIn_21263": {
                  "entryPoint": 4678,
                  "id": 21263,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAmountOut_21251": {
                  "entryPoint": 6574,
                  "id": 21251,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAssets_21174": {
                  "entryPoint": 5489,
                  "id": 21174,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@getReserves_21278": {
                  "entryPoint": 3328,
                  "id": 21278,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@initialize_23316": {
                  "entryPoint": 9107,
                  "id": 23316,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@level2_23230": {
                  "entryPoint": null,
                  "id": 23230,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@masterDeployer_19155": {
                  "entryPoint": null,
                  "id": 19155,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@mint_19574": {
                  "entryPoint": 5744,
                  "id": 19574,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@name_23218": {
                  "entryPoint": null,
                  "id": 23218,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@nonces_23258": {
                  "entryPoint": null,
                  "id": 23258,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@operator_23228": {
                  "entryPoint": null,
                  "id": 23228,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@permit_23536": {
                  "entryPoint": 8235,
                  "id": 23536,
                  "parameterSlots": 7,
                  "returnSlots": 0
                },
                "@poolIdentifier_19181": {
                  "entryPoint": null,
                  "id": 19181,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@swapFee_19149": {
                  "entryPoint": null,
                  "id": 19149,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@swap_20062": {
                  "entryPoint": 4685,
                  "id": 20062,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@symbol_23221": {
                  "entryPoint": null,
                  "id": 23221,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@token0PrecisionMultiplier_19169": {
                  "entryPoint": null,
                  "id": 19169,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@token0_19157": {
                  "entryPoint": null,
                  "id": 19157,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@token1PrecisionMultiplier_19171": {
                  "entryPoint": null,
                  "id": 19171,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@token1_19159": {
                  "entryPoint": null,
                  "id": 19159,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@totalSupply_23232": {
                  "entryPoint": null,
                  "id": 23232,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@transferFrom_23448": {
                  "entryPoint": 3470,
                  "id": 23448,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@transfer_23385": {
                  "entryPoint": 6999,
                  "id": 23385,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@updateBarFee_20291": {
                  "entryPoint": 6323,
                  "id": 20291,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@whiteListManager_23226": {
                  "entryPoint": null,
                  "id": 23226,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@within1_2851": {
                  "entryPoint": 13821,
                  "id": 2851,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 13855,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payable": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_bool": {
                  "entryPoint": 13884,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_boolt_uint256t_bytes_memory_ptr": {
                  "entryPoint": 13959,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_address_payablet_bool": {
                  "entryPoint": 14232,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_address_payablet_uint256": {
                  "entryPoint": 14289,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 14333,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 14379,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32": {
                  "entryPoint": 14444,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 7
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bool_fromMemory": {
                  "entryPoint": 14563,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_calldata_ptr": {
                  "entryPoint": 14592,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 14706,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_bytes": {
                  "entryPoint": 14731,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 14805,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_rational_0_by_1__to_t_address_t_address_t_address_t_uint256_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256_t_bool__to_t_address_t_uint256_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14833,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 14923,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 15024,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_763a38bd0e76a191b2607dcd1b2bd7d2e31ac1f3de7b2a0f756698e57f39c206__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f386d26920ad5c64e0ecdb024adf48b36625926cc342c9dfbbd1b4a7544d8539__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 15043,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 15067,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 15126,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 15187,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 15210,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "increment_t_uint256": {
                  "entryPoint": 15254,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 15311,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 15358,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 15405,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 15452,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bool": {
                  "entryPoint": 15489,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:19593:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:177:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "130:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "139:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "142:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "132:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "132:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "132:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "105:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "114:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "101:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "101:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "126:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "94:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "155:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "181:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "168:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "168:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "159:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "225:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "200:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "200:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "200:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "240:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "250:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "240:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "61:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "73:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:247:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "344:177:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "390:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "399:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "402:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "392:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "392:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "392:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "365:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "374:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "361:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "361:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "386:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "357:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "357:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "354:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "415:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "441:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "428:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "428:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "419:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "485:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "460:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "460:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "460:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "500:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "510:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "500:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payable",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "310:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "321:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "333:6:64",
                            "type": ""
                          }
                        ],
                        "src": "266:255:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "643:422:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "689:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "698:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "701:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "691:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "691:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "691:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "664:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "673:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "660:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "660:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "685:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "656:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "656:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "653:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "714:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "740:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "727:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "727:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "718:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "784:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "759:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "759:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "759:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "799:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "809:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "799:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "823:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "855:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "866:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "851:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "851:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "838:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "838:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "827:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "904:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "879:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "879:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "879:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "921:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "931:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "921:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "947:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "979:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "990:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "975:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "975:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "962:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "962:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "951:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1025:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "1003:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1003:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1003:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1042:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "1052:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1042:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "593:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "604:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "616:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "624:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "632:6:64",
                            "type": ""
                          }
                        ],
                        "src": "526:539:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1230:1317:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1277:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1286:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1289:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1279:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1279:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1279:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1251:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1260:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1247:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1247:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1272:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1243:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1243:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1240:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1302:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1328:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1315:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1315:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1306:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1372:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1347:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1347:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1347:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1387:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1397:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1387:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1411:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1443:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1454:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1439:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1439:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1426:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1426:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1415:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1492:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1467:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1467:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1467:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1509:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1519:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1509:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1535:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1567:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1578:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1563:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1563:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1550:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1550:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1539:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1613:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "1591:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1591:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1591:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1630:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "1640:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1630:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1656:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1683:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1694:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1679:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1679:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1666:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1666:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1656:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1707:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1738:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1749:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1734:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1734:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1721:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1721:33:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1711:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1763:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1773:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1767:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1818:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1827:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1830:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1820:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1820:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1820:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1806:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1814:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1803:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1803:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1800:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1843:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1857:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1868:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1853:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1853:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1847:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1923:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1932:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1935:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1925:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1925:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1925:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1902:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1906:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1898:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1898:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1913:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1894:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1894:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1887:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1887:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1884:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1948:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1971:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1958:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1958:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1952:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1997:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "1999:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1999:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1999:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1989:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1993:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1986:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1986:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1983:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2028:76:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2038:66:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "2032:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2113:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2133:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2127:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2127:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2117:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2145:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2167:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2191:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2195:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2187:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2187:13:64"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "2202:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "2183:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2183:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2207:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2179:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2179:31:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "2212:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2175:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2175:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2163:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2163:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2149:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2275:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2277:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2277:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2277:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2234:10:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2246:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2231:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2231:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2254:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2266:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2251:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2251:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2228:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2228:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2225:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2313:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2317:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2306:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2306:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2306:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2344:6:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2352:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2337:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2337:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2337:18:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2401:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2410:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2413:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2403:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2403:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2403:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2378:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2382:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2374:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2374:11:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2387:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2370:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2370:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2392:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2367:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2367:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2364:53:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2443:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2451:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2439:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2439:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2460:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2464:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2456:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2456:11:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2469:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "2426:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2426:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2426:46:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "2496:6:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2504:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2492:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2492:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2509:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2488:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2488:24:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2514:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2481:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2481:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2481:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2525:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "2535:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2525:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_boolt_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1164:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1175:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1187:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1195:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1203:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1211:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1219:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1070:1477:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2644:298:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2690:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2699:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2702:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2692:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2692:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2692:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2665:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2674:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2661:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2661:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2686:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2657:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2657:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2654:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2715:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2741:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2728:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2728:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2719:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2785:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2760:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2760:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2760:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2800:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2810:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2800:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2824:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2856:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2867:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2852:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2852:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2839:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2839:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2828:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2902:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "2880:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2880:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2880:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2919:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "2929:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2919:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2602:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2613:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2625:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2633:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2552:390:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3042:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3088:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3097:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3100:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3090:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3090:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3090:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3063:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3072:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3059:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3059:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3084:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3055:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3055:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3052:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3113:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3139:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3126:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3126:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3117:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3183:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3158:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3158:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3158:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3198:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3208:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3198:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3222:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3249:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3260:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3245:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3245:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3232:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3232:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3222:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3000:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3011:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3023:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3031:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2947:323:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3362:301:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3408:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3417:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3420:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3410:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3410:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3410:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3383:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3392:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3379:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3379:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3404:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3375:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3375:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3372:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3433:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3459:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3446:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3446:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3437:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3503:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3478:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3478:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3478:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3518:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3528:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3518:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3542:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3574:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3585:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3570:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3570:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3557:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3557:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3546:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3623:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3598:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3598:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3598:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3640:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3650:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3640:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3320:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3331:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3343:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3351:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3275:388:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3772:352:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3818:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3827:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3830:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3820:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3820:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3820:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3793:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3802:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3789:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3789:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3814:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3785:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3785:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3782:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3843:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3869:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3856:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3856:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3847:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3913:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3888:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3888:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3888:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3928:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3938:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3928:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3952:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3984:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3995:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3980:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3980:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3967:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3967:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3956:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4033:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4008:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4008:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4008:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4050:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4060:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4050:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4076:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4103:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4114:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4099:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4099:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4086:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4086:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4076:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3722:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3733:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3745:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3753:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3761:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3668:456:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4299:659:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4346:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4355:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4358:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4348:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4348:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4348:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4320:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4329:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4316:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4316:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4341:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4312:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4312:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4309:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4371:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4397:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4384:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4384:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4375:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4441:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4416:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4416:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4416:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4456:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4466:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4456:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4480:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4512:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4523:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4508:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4508:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4495:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4495:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4484:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4561:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4536:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4536:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4536:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4578:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4588:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4578:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4604:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4631:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4642:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4627:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4627:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4614:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4614:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4604:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4655:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4682:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4693:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4678:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4678:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4665:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4665:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4655:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4706:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4738:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4749:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4734:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4734:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4721:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4721:33:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4710:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4806:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4815:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4818:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4808:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4808:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4808:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4776:7:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "4789:7:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4798:4:64",
                                            "type": "",
                                            "value": "0xff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "4785:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4785:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "4773:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4773:31:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4766:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4766:39:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4763:59:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4831:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "4841:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "4831:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4857:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4884:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4895:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4880:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4880:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4867:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4867:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "4857:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4909:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4936:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4947:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4932:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4932:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4919:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4919:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "4909:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4217:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4228:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4240:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4248:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4256:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4264:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "4272:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "4280:6:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "4288:6:64",
                            "type": ""
                          }
                        ],
                        "src": "4129:829:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5050:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5096:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5105:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5108:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5098:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5098:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5098:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5071:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5080:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5067:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5067:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5092:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5063:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5063:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5060:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5121:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5147:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5134:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5134:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5125:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5191:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5166:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5166:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5166:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5206:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5216:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5206:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5230:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5257:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5268:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5253:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5253:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5240:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5240:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5230:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5008:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5019:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5031:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5039:6:64",
                            "type": ""
                          }
                        ],
                        "src": "4963:315:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5361:167:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5407:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5416:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5419:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5409:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5409:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5409:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5382:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5391:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5378:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5378:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5403:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5374:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5374:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5371:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5432:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5451:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5445:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5445:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5436:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5492:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "5470:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5470:28:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5470:28:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5507:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5517:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5507:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5327:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5338:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5350:6:64",
                            "type": ""
                          }
                        ],
                        "src": "5283:245:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5622:502:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5668:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5677:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5680:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5670:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5670:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5670:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5643:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5652:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5639:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5639:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5664:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5635:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5635:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5632:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5693:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5720:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5707:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5707:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "5697:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5739:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5749:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5743:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5794:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5803:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5806:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5796:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5796:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5796:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5782:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5790:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5779:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5779:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5776:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5819:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5833:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5844:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5829:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5829:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5823:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5899:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5908:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5911:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5901:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5901:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5901:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "5878:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5882:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5874:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5874:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5889:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5870:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5870:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5863:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5863:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5860:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5924:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5951:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5938:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5938:16:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "5928:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5981:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5990:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5993:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5983:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5983:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5983:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5969:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5977:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5966:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5966:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5963:34:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6047:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6056:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6059:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6049:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6049:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6049:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "6020:2:64"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "6024:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6016:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6016:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6033:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6012:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6012:24:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6038:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6009:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6009:37:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6006:57:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6072:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6086:2:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6090:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6082:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6082:11:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6072:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6102:16:64",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "6112:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6102:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5580:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5591:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5603:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5611:6:64",
                            "type": ""
                          }
                        ],
                        "src": "5533:591:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6210:103:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6256:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6265:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6268:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6258:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6258:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6258:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6231:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6240:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6227:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6227:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6252:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6223:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6223:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6220:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6281:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6297:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6291:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6291:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6281:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6176:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6187:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6199:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6129:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6367:267:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6377:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6397:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6391:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6391:12:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6381:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6419:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6424:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6412:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6412:19:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6412:19:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6466:5:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6473:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6462:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6462:16:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6484:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6489:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6480:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6480:14:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6496:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "6440:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6440:63:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6440:63:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6512:116:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6527:3:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "6540:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6548:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "6536:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6536:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6553:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "6532:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6532:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6523:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6523:98:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6623:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6519:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6519:109:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6512:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6344:5:64",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6351:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6359:3:64",
                            "type": ""
                          }
                        ],
                        "src": "6318:316:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6776:137:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6786:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6806:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6800:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6800:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6790:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6848:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6856:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6844:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6844:17:64"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6863:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6868:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "6822:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6822:53:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6822:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6884:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6895:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6900:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6891:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6891:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6884:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6752:3:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6757:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6768:3:64",
                            "type": ""
                          }
                        ],
                        "src": "6639:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7166:196:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "7183:3:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7188:66:64",
                                    "type": "",
                                    "value": "0x1901000000000000000000000000000000000000000000000000000000000000"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7176:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7176:79:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7176:79:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7275:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7280:1:64",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7271:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7271:11:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7284:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7264:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7264:27:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7264:27:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7311:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7316:2:64",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7307:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7307:12:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7321:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7300:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7300:28:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7300:28:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7337:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "7348:3:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7353:2:64",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7344:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7344:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7337:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7134:3:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7139:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7147:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7158:3:64",
                            "type": ""
                          }
                        ],
                        "src": "6918:444:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7468:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7478:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7490:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7501:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7486:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7486:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7478:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7520:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "7535:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7543:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7531:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7531:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7513:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7513:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7513:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7437:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7448:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7459:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7367:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7727:198:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7737:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7749:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7760:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7745:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7745:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7737:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7772:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7782:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7776:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7840:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "7855:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7863:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7851:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7851:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7833:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7833:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7833:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7887:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7898:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7883:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7883:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7907:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7915:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7903:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7903:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7876:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7876:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7876:43:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7688:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7699:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7707:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7718:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7598:327:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8115:294:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8125:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8137:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8148:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8133:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8133:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8125:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8161:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8171:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8165:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8229:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8244:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8252:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8240:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8240:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8222:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8222:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8222:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8276:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8287:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8272:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8272:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8296:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8304:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8292:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8292:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8265:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8265:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8265:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8328:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8339:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8324:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8324:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8348:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8356:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8344:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8344:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8317:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8317:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8317:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8380:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8391:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8376:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8376:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "8396:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8369:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8369:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8369:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8060:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "8071:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8079:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8087:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8095:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8106:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7930:479:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8633:349:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8643:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8655:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8666:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8651:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8651:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8643:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8679:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8689:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8683:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8747:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8762:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8770:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8758:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8758:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8740:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8740:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8740:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8794:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8805:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8790:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8790:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8814:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8822:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8810:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8810:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8783:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8783:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8783:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8846:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8857:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8842:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8842:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8866:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8874:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8862:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8862:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8835:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8835:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8835:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8898:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8909:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8894:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8894:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "8914:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8887:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8887:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8887:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8941:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8952:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8937:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8937:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "8962:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8970:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8958:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8958:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8930:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8930:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8930:46:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_rational_0_by_1__to_t_address_t_address_t_address_t_uint256_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8570:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "8581:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "8589:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8597:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8605:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8613:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8624:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8414:568:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9138:227:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9148:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9160:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9171:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9156:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9156:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9148:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9190:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "9205:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9213:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9201:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9201:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9183:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9183:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9183:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9277:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9288:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9273:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9273:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9293:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9266:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9266:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9266:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9320:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9331:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9316:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9316:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "9350:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "9343:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9343:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "9336:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9336:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9309:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9309:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9309:50:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256_t_bool__to_t_address_t_uint256_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9091:9:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9102:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9110:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9118:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9129:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8987:378:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9521:530:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9531:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9541:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9535:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9552:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9570:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9581:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9566:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9566:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9556:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9600:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9611:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9593:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9593:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9593:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9623:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "9634:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "9627:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9649:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9669:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9663:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9663:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "9653:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9692:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9700:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9685:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9685:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9685:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9716:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9727:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9738:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9723:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9723:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "9716:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9750:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9768:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9776:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9764:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9764:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "9754:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9788:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9797:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "9792:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9856:169:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "9877:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9892:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "9886:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "9886:13:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "9901:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "9882:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9882:62:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "9870:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9870:75:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9870:75:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9958:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "9969:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9974:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9965:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9965:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "9958:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9990:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "10004:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "10012:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10000:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10000:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "9990:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "9818:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9821:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9815:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9815:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "9829:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9831:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "9840:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9843:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9836:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9836:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "9831:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "9811:3:64",
                                "statements": []
                              },
                              "src": "9807:218:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10034:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "10042:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10034:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9490:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9501:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9512:4:64",
                            "type": ""
                          }
                        ],
                        "src": "9370:681:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10265:636:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10275:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10285:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10279:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10296:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10314:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10325:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10310:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10310:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10300:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10344:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10355:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10337:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10337:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10337:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10367:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "10378:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "10371:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10393:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10413:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10407:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10407:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "10397:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10436:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10444:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10429:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10429:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10429:22:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10460:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10470:2:64",
                                "type": "",
                                "value": "64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "10464:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10481:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10492:9:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "10503:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10488:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10488:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "10481:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10515:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10533:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10541:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10529:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10529:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "10519:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10553:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10562:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "10557:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10621:254:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "10635:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "10651:6:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "10645:5:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10645:13:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "10639:2:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "10678:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10693:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "10687:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "10687:9:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "10698:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "10683:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10683:58:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10671:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10671:71:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10671:71:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "10766:3:64"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "10771:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "10762:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10762:12:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10786:2:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10790:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "10782:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "10782:11:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "10776:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10776:18:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10755:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10755:40:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10755:40:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10808:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "10819:3:64"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "10824:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10815:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10815:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "10808:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10840:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "10854:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "10862:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10850:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10850:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10840:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "10583:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10586:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10580:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10580:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "10594:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10596:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "10605:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10608:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10601:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10601:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "10596:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "10576:3:64",
                                "statements": []
                              },
                              "src": "10572:303:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10884:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "10892:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10884:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10234:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10245:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10256:4:64",
                            "type": ""
                          }
                        ],
                        "src": "10056:845:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11001:92:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11011:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11023:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11034:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11019:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11019:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11011:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11053:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "11078:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "11071:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11071:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "11064:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11064:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11046:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11046:41:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11046:41:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10970:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10981:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10992:4:64",
                            "type": ""
                          }
                        ],
                        "src": "10906:187:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11199:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11209:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11221:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11232:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11217:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11217:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11209:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11251:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11262:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11244:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11244:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11244:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11168:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11179:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11190:4:64",
                            "type": ""
                          }
                        ],
                        "src": "11098:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11521:373:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11531:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11543:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11554:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11539:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11539:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11531:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11574:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11585:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11567:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11567:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11567:25:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11601:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11611:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11605:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11673:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11684:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11669:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11669:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11693:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11701:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11689:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11689:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11662:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11662:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11662:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11725:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11736:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11721:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11721:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "11745:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11753:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11741:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11741:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11714:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11714:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11714:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11777:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11788:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11773:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11773:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "11793:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11766:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11766:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11766:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11820:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11831:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11816:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11816:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "11837:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11809:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11809:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11809:35:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11864:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11875:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11860:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11860:19:64"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "11881:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11853:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11853:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11853:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11450:9:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "11461:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "11469:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "11477:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "11485:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11493:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11501:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11512:4:64",
                            "type": ""
                          }
                        ],
                        "src": "11280:614:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12080:217:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12090:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12102:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12113:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12098:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12098:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12090:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12133:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12144:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12126:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12126:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12126:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12171:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12182:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12167:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12167:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12191:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12199:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12187:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12187:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12160:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12160:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12160:45:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12225:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12236:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12221:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12221:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "12241:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12214:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12214:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12214:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12268:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12279:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12264:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12264:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "12284:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12257:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12257:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12257:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12025:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "12036:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "12044:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12052:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12060:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12071:4:64",
                            "type": ""
                          }
                        ],
                        "src": "11899:398:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12421:98:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12438:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12449:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12431:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12431:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12431:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12461:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12486:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12498:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12509:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12494:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12494:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "12469:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12469:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12461:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12390:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12401:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12412:4:64",
                            "type": ""
                          }
                        ],
                        "src": "12302:217:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12645:98:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12662:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12673:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12655:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12655:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12655:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12685:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12710:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12722:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12733:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12718:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12718:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "12693:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12693:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12685:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12614:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12625:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12636:4:64",
                            "type": ""
                          }
                        ],
                        "src": "12524:219:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12922:174:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12939:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12950:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12932:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12932:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12932:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12973:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12984:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12969:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12969:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12989:2:64",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12962:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12962:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12962:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13012:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13023:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13008:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13008:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f5045524d49545f5349474e4154555245",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13028:26:64",
                                    "type": "",
                                    "value": "INVALID_PERMIT_SIGNATURE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13001:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13001:54:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13001:54:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13064:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13076:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13087:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13072:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13072:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13064:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12899:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12913:4:64",
                            "type": ""
                          }
                        ],
                        "src": "12748:348:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13275:172:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13292:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13303:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13285:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13285:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13285:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13326:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13337:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13322:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13322:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13342:2:64",
                                    "type": "",
                                    "value": "22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13315:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13315:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13315:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13365:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13376:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13361:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13361:18:64"
                                  },
                                  {
                                    "hexValue": "494e53554646494349454e545f414d4f554e545f494e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13381:24:64",
                                    "type": "",
                                    "value": "INSUFFICIENT_AMOUNT_IN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13354:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13354:52:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13354:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13415:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13427:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13438:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13423:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13423:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13415:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13252:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13266:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13101:346:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13626:169:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13643:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13654:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13636:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13636:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13636:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13677:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13688:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13673:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13673:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13693:2:64",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13666:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13666:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13666:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13716:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13727:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13712:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13712:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f494e5055545f544f4b454e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13732:21:64",
                                    "type": "",
                                    "value": "INVALID_INPUT_TOKEN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13705:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13705:49:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13705:49:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13763:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13775:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13786:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13771:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13771:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13763:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13603:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13617:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13452:343:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13974:170:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13991:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14002:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13984:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13984:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13984:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14025:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14036:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14021:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14021:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14041:2:64",
                                    "type": "",
                                    "value": "20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14014:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14014:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14014:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14064:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14075:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14060:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14060:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f4f55545055545f544f4b454e",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14080:22:64",
                                    "type": "",
                                    "value": "INVALID_OUTPUT_TOKEN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14053:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14053:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14053:50:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14112:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14124:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14135:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14120:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14120:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14112:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13951:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13965:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13800:344:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14323:179:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14340:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14351:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14333:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14333:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14333:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14374:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14385:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14370:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14370:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14390:2:64",
                                    "type": "",
                                    "value": "29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14363:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14363:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14363:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14413:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14424:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14409:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14409:18:64"
                                  },
                                  {
                                    "hexValue": "494e53554646494349454e545f4c49515549444954595f4d494e544544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14429:31:64",
                                    "type": "",
                                    "value": "INSUFFICIENT_LIQUIDITY_MINTED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14402:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14402:59:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14402:59:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14470:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14482:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14493:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14478:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14478:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14470:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14300:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14314:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14149:353:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14681:165:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14698:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14709:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14691:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14691:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14691:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14732:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14743:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14728:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14728:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14748:2:64",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14721:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14721:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14721:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14771:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14782:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14767:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14767:18:64"
                                  },
                                  {
                                    "hexValue": "57495448445241575f4641494c4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14787:17:64",
                                    "type": "",
                                    "value": "WITHDRAW_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14760:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14760:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14760:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14814:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14826:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14837:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14822:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14822:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14814:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_763a38bd0e76a191b2607dcd1b2bd7d2e31ac1f3de7b2a0f756698e57f39c206__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14658:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14672:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14507:339:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15025:165:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15042:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15053:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15035:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15035:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15035:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15076:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15087:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15072:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15072:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15092:2:64",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15065:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15065:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15065:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15115:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15126:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15111:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15111:18:64"
                                  },
                                  {
                                    "hexValue": "5452414e534645525f4641494c4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15131:17:64",
                                    "type": "",
                                    "value": "TRANSFER_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15104:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15104:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15104:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15158:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15170:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15181:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15166:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15166:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15158:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15002:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15016:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14851:339:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15369:157:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15386:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15397:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15379:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15379:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15379:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15420:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15431:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15416:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15416:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15436:1:64",
                                    "type": "",
                                    "value": "8"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15409:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15409:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15409:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15458:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15469:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15454:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15454:18:64"
                                  },
                                  {
                                    "hexValue": "4f564552464c4f57",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15474:10:64",
                                    "type": "",
                                    "value": "OVERFLOW"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15447:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15447:38:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15447:38:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15494:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15506:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15517:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15502:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15502:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15494:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15346:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15360:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15195:331:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15705:173:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15722:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15733:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15715:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15715:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15715:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15756:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15767:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15752:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15752:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15772:2:64",
                                    "type": "",
                                    "value": "23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15745:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15745:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15745:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15795:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15806:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15791:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15791:18:64"
                                  },
                                  {
                                    "hexValue": "5045524d49545f444541444c494e455f45585049524544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15811:25:64",
                                    "type": "",
                                    "value": "PERMIT_DEADLINE_EXPIRED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15784:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15784:53:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15784:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15846:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15858:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15869:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15854:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15854:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15846:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15682:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15696:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15531:347:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16057:155:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16074:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16085:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16067:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16067:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16067:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16108:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16119:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16104:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16104:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16124:1:64",
                                    "type": "",
                                    "value": "6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16097:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16097:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16097:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16146:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16157:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16142:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16142:18:64"
                                  },
                                  {
                                    "hexValue": "4c4f434b4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16162:8:64",
                                    "type": "",
                                    "value": "LOCKED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16135:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16135:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16135:36:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16180:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16192:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16203:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16188:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16188:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16180:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16034:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16048:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15883:329:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16391:165:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16408:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16419:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16401:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16401:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16401:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16442:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16453:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16438:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16438:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16458:2:64",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16431:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16431:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16431:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16481:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16492:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16477:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16477:18:64"
                                  },
                                  {
                                    "hexValue": "4e4f545f57484954454c4953544544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16497:17:64",
                                    "type": "",
                                    "value": "NOT_WHITELISTED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16470:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16470:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16470:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16524:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16536:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16547:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16532:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16532:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16524:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f386d26920ad5c64e0ecdb024adf48b36625926cc342c9dfbbd1b4a7544d8539__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16368:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16382:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16217:339:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16662:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16672:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16684:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16695:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16680:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16680:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16672:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16714:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16725:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16707:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16707:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16707:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16631:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16642:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16653:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16561:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16872:119:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16882:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16894:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16905:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16890:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16890:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16882:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16924:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16935:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16917:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16917:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16917:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16962:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16973:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16958:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16958:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16978:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16951:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16951:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16951:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16833:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16844:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16852:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16863:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16743:248:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17153:162:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17163:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17175:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17186:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17171:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17171:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17163:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17205:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "17216:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17198:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17198:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17198:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17243:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17254:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17239:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17239:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17259:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17232:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17232:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17232:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17286:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17297:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17282:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17282:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "17302:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17275:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17275:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17275:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17106:9:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17117:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17125:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17133:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17144:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16996:319:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17417:87:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17427:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17439:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17450:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17435:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17435:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17427:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17469:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "17484:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17492:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17480:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17480:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17462:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17462:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17462:36:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17386:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17397:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17408:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17320:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17557:80:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17584:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "17586:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17586:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17586:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17573:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "17580:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "17576:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17576:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17570:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17570:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "17567:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17615:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17626:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17629:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17622:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17622:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "17615:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "17540:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "17543:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "17549:3:64",
                            "type": ""
                          }
                        ],
                        "src": "17509:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17688:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17719:168:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17740:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17743:77:64",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "17733:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17733:88:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17733:88:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17841:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17844:4:64",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "17834:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17834:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17834:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17869:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17872:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "17862:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17862:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17862:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17708:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "17701:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17701:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "17698:189:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17896:14:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "17905:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "17908:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "17901:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17901:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "17896:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "17673:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "17676:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "17682:1:64",
                            "type": ""
                          }
                        ],
                        "src": "17642:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17973:176:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18092:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "18094:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18094:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18094:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "18004:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "17997:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17997:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "17990:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17990:17:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "18012:1:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "18019:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "18087:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "18015:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18015:74:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "18009:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18009:81:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "17986:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17986:105:64"
                              },
                              "nodeType": "YulIf",
                              "src": "17983:131:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18123:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18138:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18141:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "18134:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18134:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "18123:7:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "17952:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "17955:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "17961:7:64",
                            "type": ""
                          }
                        ],
                        "src": "17921:228:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18203:76:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18225:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "18227:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18227:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18227:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18219:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18222:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "18216:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18216:8:64"
                              },
                              "nodeType": "YulIf",
                              "src": "18213:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18256:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "18268:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "18271:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "18264:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18264:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "18256:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "18185:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "18188:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "18194:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18154:125:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18337:205:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18347:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "18356:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "18351:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18416:63:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "18441:3:64"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "18446:1:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "18437:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "18437:11:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18460:3:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18465:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "18456:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "18456:11:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "18450:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "18450:18:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "18430:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18430:39:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18430:39:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "18377:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "18380:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "18374:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18374:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "18388:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "18390:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "18399:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18402:2:64",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "18395:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18395:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "18390:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "18370:3:64",
                                "statements": []
                              },
                              "src": "18366:113:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18505:31:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "18518:3:64"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "18523:6:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "18514:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "18514:16:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18532:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "18507:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18507:27:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18507:27:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "18494:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "18497:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "18491:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18491:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "18488:48:64"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "18315:3:64",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "18320:3:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "18325:6:64",
                            "type": ""
                          }
                        ],
                        "src": "18284:258:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18594:148:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18685:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "18687:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18687:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18687:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "18610:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18617:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "18607:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18607:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "18604:103:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18716:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "18727:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18734:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18723:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18723:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "18716:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "18576:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "18586:3:64",
                            "type": ""
                          }
                        ],
                        "src": "18547:195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18779:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18796:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18799:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18789:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18789:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18789:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18893:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18896:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18886:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18886:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18886:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18917:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18920:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "18910:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18910:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18910:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "18747:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18968:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18985:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18988:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18978:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18978:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18978:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19082:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19085:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19075:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19075:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19075:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19106:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19109:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "19099:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19099:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19099:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "18936:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19157:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19174:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19177:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19167:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19167:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19167:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19271:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19274:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19264:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19264:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19264:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19295:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19298:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "19288:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19288:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19288:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "19125:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19359:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19446:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19455:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19458:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "19448:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19448:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19448:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "19382:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "19393:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "19400:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "19389:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19389:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "19379:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19379:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "19372:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19372:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "19369:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "19348:5:64",
                            "type": ""
                          }
                        ],
                        "src": "19314:154:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19515:76:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19569:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19578:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19581:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "19571:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19571:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19571:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "19538:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "19559:5:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "19552:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "19552:13:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "19545:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19545:21:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "19535:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19535:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "19528:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19528:40:64"
                              },
                              "nodeType": "YulIf",
                              "src": "19525:60:64"
                            }
                          ]
                        },
                        "name": "validator_revert_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "19504:5:64",
                            "type": ""
                          }
                        ],
                        "src": "19473:118:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payable(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_bool(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_bool(value_2)\n        value2 := value_2\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_boolt_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_bool(value_2)\n        value2 := value_2\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value4 := memPtr\n    }\n    function abi_decode_tuple_t_address_payablet_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_bool(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_address_payablet_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let value_2 := calldataload(add(headStart, 128))\n        if iszero(eq(value_2, and(value_2, 0xff))) { revert(0, 0) }\n        value4 := value_2\n        value5 := calldataload(add(headStart, 160))\n        value6 := calldataload(add(headStart, 192))\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, 0x1901000000000000000000000000000000000000000000000000000000000000)\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256_t_rational_0_by_1__to_t_address_t_address_t_address_t_uint256_t_uint8__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, 0xff))\n    }\n    function abi_encode_tuple_t_address_t_uint256_t_bool__to_t_address_t_uint256_t_bool__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), iszero(iszero(value2)))\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        let _2 := 64\n        pos := add(headStart, _2)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _3 := mload(srcPtr)\n            mstore(pos, and(mload(_3), 0xffffffffffffffffffffffffffffffffffffffff))\n            mstore(add(pos, _1), mload(add(_3, _1)))\n            pos := add(pos, _2)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, value0)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"INVALID_PERMIT_SIGNATURE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 22)\n        mstore(add(headStart, 64), \"INSUFFICIENT_AMOUNT_IN\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"INVALID_INPUT_TOKEN\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"INVALID_OUTPUT_TOKEN\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"INSUFFICIENT_LIQUIDITY_MINTED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_763a38bd0e76a191b2607dcd1b2bd7d2e31ac1f3de7b2a0f756698e57f39c206__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"WITHDRAW_FAILED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"TRANSFER_FAILED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 8)\n        mstore(add(headStart, 64), \"OVERFLOW\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"PERMIT_DEADLINE_EXPIRED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 6)\n        mstore(add(headStart, 64), \"LOCKED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f386d26920ad5c64e0ecdb024adf48b36625926cc342c9dfbbd1b4a7544d8539__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"NOT_WHITELISTED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "19149": [
                  {
                    "length": 32,
                    "start": 1224
                  },
                  {
                    "length": 32,
                    "start": 2210
                  },
                  {
                    "length": 32,
                    "start": 2803
                  },
                  {
                    "length": 32,
                    "start": 6629
                  },
                  {
                    "length": 32,
                    "start": 12560
                  },
                  {
                    "length": 32,
                    "start": 12783
                  },
                  {
                    "length": 32,
                    "start": 12890
                  }
                ],
                "19151": [
                  {
                    "length": 32,
                    "start": 816
                  },
                  {
                    "length": 32,
                    "start": 3126
                  },
                  {
                    "length": 32,
                    "start": 12647
                  }
                ],
                "19153": [
                  {
                    "length": 32,
                    "start": 1146
                  },
                  {
                    "length": 32,
                    "start": 9809
                  },
                  {
                    "length": 32,
                    "start": 10839
                  },
                  {
                    "length": 32,
                    "start": 11142
                  },
                  {
                    "length": 32,
                    "start": 11390
                  },
                  {
                    "length": 32,
                    "start": 12475
                  }
                ],
                "19155": [
                  {
                    "length": 32,
                    "start": 1669
                  },
                  {
                    "length": 32,
                    "start": 6437
                  }
                ],
                "19157": [
                  {
                    "length": 32,
                    "start": 892
                  },
                  {
                    "length": 32,
                    "start": 2041
                  },
                  {
                    "length": 32,
                    "start": 2163
                  },
                  {
                    "length": 32,
                    "start": 2335
                  },
                  {
                    "length": 32,
                    "start": 2371
                  },
                  {
                    "length": 32,
                    "start": 2718
                  },
                  {
                    "length": 32,
                    "start": 2881
                  },
                  {
                    "length": 32,
                    "start": 4093
                  },
                  {
                    "length": 32,
                    "start": 4181
                  },
                  {
                    "length": 32,
                    "start": 4368
                  },
                  {
                    "length": 32,
                    "start": 4903
                  },
                  {
                    "length": 32,
                    "start": 5259
                  },
                  {
                    "length": 32,
                    "start": 5523
                  },
                  {
                    "length": 32,
                    "start": 6690
                  },
                  {
                    "length": 32,
                    "start": 7525
                  },
                  {
                    "length": 32,
                    "start": 7665
                  },
                  {
                    "length": 32,
                    "start": 7729
                  },
                  {
                    "length": 32,
                    "start": 8011
                  },
                  {
                    "length": 32,
                    "start": 9669
                  },
                  {
                    "length": 32,
                    "start": 12121
                  },
                  {
                    "length": 32,
                    "start": 12157
                  }
                ],
                "19159": [
                  {
                    "length": 32,
                    "start": 1708
                  },
                  {
                    "length": 32,
                    "start": 2125
                  },
                  {
                    "length": 32,
                    "start": 2288
                  },
                  {
                    "length": 32,
                    "start": 2537
                  },
                  {
                    "length": 32,
                    "start": 2756
                  },
                  {
                    "length": 32,
                    "start": 2928
                  },
                  {
                    "length": 32,
                    "start": 2964
                  },
                  {
                    "length": 32,
                    "start": 4137
                  },
                  {
                    "length": 32,
                    "start": 4235
                  },
                  {
                    "length": 32,
                    "start": 4473
                  },
                  {
                    "length": 32,
                    "start": 4988
                  },
                  {
                    "length": 32,
                    "start": 5077
                  },
                  {
                    "length": 32,
                    "start": 5633
                  },
                  {
                    "length": 32,
                    "start": 6794
                  },
                  {
                    "length": 32,
                    "start": 7436
                  },
                  {
                    "length": 32,
                    "start": 7621
                  },
                  {
                    "length": 32,
                    "start": 7915
                  },
                  {
                    "length": 32,
                    "start": 8055
                  },
                  {
                    "length": 32,
                    "start": 9713
                  },
                  {
                    "length": 32,
                    "start": 12200
                  },
                  {
                    "length": 32,
                    "start": 12236
                  }
                ],
                "19161": [
                  {
                    "length": 32,
                    "start": 1809
                  }
                ],
                "19163": [
                  {
                    "length": 32,
                    "start": 13301
                  },
                  {
                    "length": 32,
                    "start": 13387
                  },
                  {
                    "length": 32,
                    "start": 13558
                  },
                  {
                    "length": 32,
                    "start": 13632
                  }
                ],
                "19169": [
                  {
                    "length": 32,
                    "start": 1584
                  },
                  {
                    "length": 32,
                    "start": 10129
                  },
                  {
                    "length": 32,
                    "start": 10217
                  },
                  {
                    "length": 32,
                    "start": 10310
                  },
                  {
                    "length": 32,
                    "start": 10467
                  },
                  {
                    "length": 32,
                    "start": 12959
                  }
                ],
                "19171": [
                  {
                    "length": 32,
                    "start": 1185
                  },
                  {
                    "length": 32,
                    "start": 10173
                  },
                  {
                    "length": 32,
                    "start": 10266
                  },
                  {
                    "length": 32,
                    "start": 10354
                  },
                  {
                    "length": 32,
                    "start": 10505
                  },
                  {
                    "length": 32,
                    "start": 13005
                  }
                ],
                "23253": [
                  {
                    "length": 32,
                    "start": 1088
                  },
                  {
                    "length": 32,
                    "start": 8382
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106102775760003560e01c8063627dd56a11610160578063a9059cbb116100d8578063cf58879a1161008c578063d505accf11610071578063d505accf146106ce578063dd62ed3e146106e1578063f446c1d01461070c57600080fd5b8063cf58879a14610680578063d21220a7146106a757600080fd5b8063baa8c7cb116100bd578063baa8c7cb1461062b578063bc3377d914610652578063c14ad8021461067757600080fd5b8063a9059cbb14610605578063af8c09bf1461061857600080fd5b80637ecebe001161012f57806395d89b411161011457806395d89b411461058f578063a69840a8146105cb578063a8f1f52e146105f257600080fd5b80637ecebe001461056557806392bc32191461058557600080fd5b8063627dd56a1461050a57806367e4ac2c1461051d57806370a08231146105325780637ba0e2e71461055257600080fd5b80632a07b6c7116101f3578063499a3c50116101c25780634e25dc47116101a75780634e25dc471461049c57806354cf2aeb146104c3578063570ca735146104ea57600080fd5b8063499a3c50146104625780634da318271461047557600080fd5b80632a07b6c7146103da57806330adf81f146103fa578063313ce567146104215780633644e5151461043b57600080fd5b80630c0a0cd21161024a57806318160ddd1161022f57806318160ddd1461039e57806323b872dd146103a757806325a93264146103ba57600080fd5b80630c0a0cd21461032b5780630dfe16811461037757600080fd5b8063053da1c81461027c57806306fdde03146102a25780630902f1ac146102eb578063095ea7b314610308575b600080fd5b61028f61028a366004613900565b610733565b6040519081526020015b60405180910390f35b6102de6040518060400160405280601981526020017f5375736869204672616e636869736564204c5020546f6b656e0000000000000081525081565b6040516102999190613ab0565b6102f3610d00565b60408051928352602083019190915201610299565b61031b6103163660046137d1565b610d14565b6040519015158152602001610299565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610299565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b61028f60025481565b61031b6103b536600461382b565b610d8e565b6000546103529073ffffffffffffffffffffffffffffffffffffffff1681565b6103ed6103e8366004613900565b610f09565b6040516102999190613a4b565b61028f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610429601281565b60405160ff9091168152602001610299565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b61028f610470366004613900565b611246565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b6001546103529073ffffffffffffffffffffffffffffffffffffffff1681565b61028f610518366004613900565b61124d565b610525611571565b60405161029991906139f1565b61028f61054036600461361f565b60036020526000908152604090205481565b61028f610560366004613900565b611670565b61028f61057336600461361f565b60056020526000908152604090205481565b61058d6118b3565b005b6102de6040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b61028f7f54726964656e743a4672616e636869736564487962726964000000000000000081565b61028f610600366004613900565b6119ae565b61031b6106133660046137d1565b611b57565b61028f610626366004613900565b611c09565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b60015461031b9074010000000000000000000000000000000000000000900460ff1681565b61028f60065481565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b61058d6106dc36600461386c565b61202b565b61028f6106ef3660046137fd565b600460209081526000928352604080842090915290825290205481565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b60006008546001146107a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60026008556000808080806107bd87890189613687565b94509450945094509450600160149054906101000a900460ff16156107e5576107e584612433565b6000806107f0612593565b915091506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614156109e7577f000000000000000000000000000000000000000000000000000000000000000091506108987f00000000000000000000000000000000000000000000000000000000000000008761261c565b95506127106108c77f000000000000000000000000000000000000000000000000000000000000000088613b16565b6108d19190613adb565b90506108e96108e08288613b53565b85856001612781565b99506109187f0000000000000000000000000000000000000000000000000000000000000000898c888b612941565b600061096c7f00000000000000000000000000000000000000000000000000000000000000006109677f00000000000000000000000000000000000000000000000000000000000000006129ca565b61261c565b9050866109798683613b53565b10156109e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e00000000000000000000604482015260640161079d565b50610c2f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614610a9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e00000000000000000000000000604482015260640161079d565b7f00000000000000000000000000000000000000000000000000000000000000009150610ae97f00000000000000000000000000000000000000000000000000000000000000008761261c565b9550612710610b187f000000000000000000000000000000000000000000000000000000000000000088613b16565b610b229190613adb565b9050610b3a610b318288613b53565b85856000612781565b9950610b697f0000000000000000000000000000000000000000000000000000000000000000898c888b612941565b6000610bb87f00000000000000000000000000000000000000000000000000000000000000006109677f00000000000000000000000000000000000000000000000000000000000000006129ca565b905086610bc58583613b53565b1015610c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e00000000000000000000604482015260640161079d565b505b610c5c89827f00000000000000000000000000000000000000000000000000000000000000006000612ae3565b610c64612e42565b8173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062898e604051610ce3929190918252602082015260400190565b60405180910390a450506001600855509598975050505050505050565b600080610d0b612593565b90939092509050565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d7c9086815260200190565b60405180910390a35060015b92915050565b60015460009074010000000000000000000000000000000000000000900460ff1615610dbd57610dbd83612433565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610e5a5773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915281208054849290610e54908490613b53565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526003602052604081208054849290610e8f908490613b53565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260036020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ef79086815260200190565b60405180910390a35060019392505050565b6060600854600114610f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b45440000000000000000000000000000000000000000000000000000604482015260640161079d565b6002600855600080610f8b84860186613798565b91509150610f9882612433565b600080610fa3612f51565b60025430600090815260036020526040812054939550919350919082610fc98684613b16565b610fd39190613adb565b9050600083610fe28685613b16565b610fec9190613adb565b9050610ff83084612ff0565b6110247f0000000000000000000000000000000000000000000000000000000000000000838a8a612ae3565b6110507f0000000000000000000000000000000000000000000000000000000000000000828a8a612ae3565b61107a7f000000000000000000000000000000000000000000000000000000000000000083613086565b6110849087613b53565b95506110b07f000000000000000000000000000000000000000000000000000000000000000082613086565b6110ba9086613b53565b94506110c4612e42565b6040805160028082526060820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816110da57905050985060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001838152508960008151811061116157611161613bfe565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200182815250896001815181106111ca576111ca613bfe565b60209081029190910181019190915260408051848152918201839052810184905273ffffffffffffffffffffffffffffffffffffffff89169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a3505060016008555094979650505050505050565b6000806000fd5b60006008546001146112bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b45440000000000000000000000000000000000000000000000000000604482015260640161079d565b6002600855600080806112d08587018761363c565b600154929550909350915074010000000000000000000000000000000000000000900460ff16156113045761130482612433565b60008061130f612593565b9150915060008061131e612f51565b915091506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614156113d357507f00000000000000000000000000000000000000000000000000000000000000006113a58685613b53565b915060006113b38a84613106565b90506113cb6113c28285613b53565b88886001612781565b9a50506114de565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614611488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e00000000000000000000000000604482015260640161079d565b507f00000000000000000000000000000000000000000000000000000000000000006114b48584613b53565b915060006114c28a84613106565b90506114da6114d18285613b53565b88886000612781565b9a50505b6114ea818b8a8a612ae3565b6114f2612e42565b8073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062858e604051610ce3929190918252602082015260400190565b60408051600280825260608083018452926020830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106115c5576115c5613bfe565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061163357611633613bfe565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b60006008546001146116de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b45440000000000000000000000000000000000000000000000000000604482015260640161079d565b600260085560006116f18385018561361f565b90506116fc81612433565b600080611707612593565b91509150600080611716612f51565b6002549193509150600061172a8685613b53565b905060006117388685613b53565b905060008061174984848b8b613194565b9092509050600061176c61175d848a613b53565b611767848a613b53565b613297565b9050856117935761177f6103e882613b53565b9b5061178e60006103e8613307565b6117c5565b600061179f8b8b613297565b905080876117ad8285613b53565b6117b79190613b16565b6117c19190613adb565b9c50505b8b61182c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e544544000000604482015260640161079d565b6118368b8d613307565b61183e612e42565b60408051868152602081018690529081018d90528c9073ffffffffffffffffffffffffffffffffffffffff8d169033907ff9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e9060600160405180910390a35050600160085550989b9a5050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc14ad80200000000000000000000000000000000000000000000000000000000179052905160009173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169161195091906139d5565b600060405180830381855afa9150503d806000811461198b576040519150601f19603f3d011682016040523d82523d6000602084013e611990565b606091505b50915050808060200190518101906119a89190613972565b60065550565b600080806119be848601866137d1565b915091506000806119cd612593565b915091506119db848461261c565b9250612710611a0a7f000000000000000000000000000000000000000000000000000000000000000085613b16565b611a149190613adb565b611a1e9084613b53565b92507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611a8857611a818383836001612781565b9450611b4d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e00000000000000000000000000604482015260640161079d565b611b4a8383836000612781565b94505b5050505092915050565b60015460009074010000000000000000000000000000000000000000900460ff1615611b8657611b8683612433565b3360009081526003602052604081208054849290611ba5908490613b53565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d7c9086815260200190565b6000600854600114611c77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b45440000000000000000000000000000000000000000000000000000604482015260640161079d565b600260085560008080611c8c8587018761363c565b925092509250611c9b82612433565b600080611ca6612593565b91509150600080611cb5612f51565b60025430600090815260036020526040812054939550919350919082611cdb8684613b16565b611ce59190613adb565b9050600083611cf48685613b16565b611cfe9190613adb565b9050611d0a3084612ff0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff161415611e2f576000611d8a7f000000000000000000000000000000000000000000000000000000000000000084613106565b9050611db4611d998285613b53565b611da3858c613b53565b611dad858c613b53565b6001612781565b611dbe9083613ac3565b9150611dec7f0000000000000000000000000000000000000000000000000000000000000000838d8d612ae3565b611e167f000000000000000000000000000000000000000000000000000000000000000084613086565b611e209088613b53565b9650819c506000925050611fb1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614611ee4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e000000000000000000000000604482015260640161079d565b6000611f107f000000000000000000000000000000000000000000000000000000000000000083613106565b9050611f3a611f1f8284613b53565b611f29858c613b53565b611f33858c613b53565b6000612781565b611f449084613ac3565b9250611f727f0000000000000000000000000000000000000000000000000000000000000000848d8d612ae3565b611f9c7f000000000000000000000000000000000000000000000000000000000000000083613086565b611fa69087613b53565b9550829c5060009150505b611fb9612e42565b604080518381526020810183905290810184905273ffffffffffffffffffffffffffffffffffffffff8b169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a35050600160085550979a9950505050505050505050565b42841015612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f45585049524544000000000000000000604482015260640161079d565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080547f0000000000000000000000000000000000000000000000000000000000000000917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b918761211083613b96565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016121b19291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa15801561223a573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906122b557508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61231b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e41545552450000000000000000604482015260640161079d565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526004602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556001805492851692909116919091179055801561242e57600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790555b505050565b600080546001546040805173ffffffffffffffffffffffffffffffffffffffff928316602482015285831660448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1472c27100000000000000000000000000000000000000000000000000000000179052905191909216916124d0916139d5565b600060405180830381855afa9150503d806000811461250b576040519150601f19603f3d011682016040523d82523d6000602084013e612510565b606091505b5091505060008180602001905181019061252a91906138e3565b90508061242e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f545f57484954454c49535445440000000000000000000000000000000000604482015260640161079d565b6007546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004166125ea7f00000000000000000000000000000000000000000000000000000000000000008361261c565b91506126167f00000000000000000000000000000000000000000000000000000000000000008261261c565b90509091565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526000606483018190529182917f000000000000000000000000000000000000000000000000000000000000000016907f5662311800000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161272191906139d5565b600060405180830381855afa9150503d806000811461275c576040519150601f19603f3d011682016040523d82523d6000602084013e612761565b606091505b50915050808060200190518101906127799190613972565b949350505050565b60008060008315612815576127b67f000000000000000000000000000000000000000000000000000000000000000087613b16565b91506127e27f000000000000000000000000000000000000000000000000000000000000000086613b16565b905061280e7f000000000000000000000000000000000000000000000000000000000000000088613b16565b965061289a565b61283f7f000000000000000000000000000000000000000000000000000000000000000086613b16565b915061286b7f000000000000000000000000000000000000000000000000000000000000000087613b16565b90506128977f000000000000000000000000000000000000000000000000000000000000000088613b16565b96505b60006128a68383613378565b905060006128b48985613ac3565b905060006128c282846134cb565b905060016128d08286613b53565b6128da9190613b53565b955086612907577f0000000000000000000000000000000000000000000000000000000000000000612929565b7f00000000000000000000000000000000000000000000000000000000000000005b6129339087613adb565b9a9950505050505050505050565b61294d85848684612ae3565b8151156129c3576040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b190612990908590600401613ab0565b600060405180830381600087803b1580156129aa57600080fd5b505af11580156129be573d6000803e3d6000fd5b505050505b5050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff83811660248301523060448084019190915283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff7888aec00000000000000000000000000000000000000000000000000000000179052915160009283927f000000000000000000000000000000000000000000000000000000000000000090911691612a8491906139d5565b600060405180830381855afa9150503d8060008114612abf576040519150601f19603f3d011682016040523d82523d6000602084013e612ac4565b606091505b5091505080806020019051810190612adc9190613972565b9392505050565b8015612c65576040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260848201869052600060a48084018290528451808503909101815260c490930184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f97da6d300000000000000000000000000000000000000000000000000000000017905292517f000000000000000000000000000000000000000000000000000000000000000090911691612bb2916139d5565b6000604051808303816000865af19150503d8060008114612bef576040519150601f19603f3d011682016040523d82523d6000602084013e612bf4565b606091505b5050905080612c5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f57495448445241575f4641494c45440000000000000000000000000000000000604482015260640161079d565b50612e3c565b600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167ff18d03cc00000000000000000000000000000000000000000000000000000000863086612ccc838a613086565b60405173ffffffffffffffffffffffffffffffffffffffff9485166024820152928416604484015292166064820152608481019190915260a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051612d8f91906139d5565b6000604051808303816000865af19150503d8060008114612dcc576040519150601f19603f3d011682016040523d82523d6000602084013e612dd1565b606091505b50509050806129c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c45440000000000000000000000000000000000604482015260640161079d565b50505050565b600080612e4d612f51565b90925090506fffffffffffffffffffffffffffffffff82108015612e8057506fffffffffffffffffffffffffffffffff81105b612ee6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4f564552464c4f57000000000000000000000000000000000000000000000000604482015260640161079d565b6fffffffffffffffffffffffffffffffff818116700100000000000000000000000000000000029083161760075560408051838152602081018390527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a15050565b600080612fa17f00000000000000000000000000000000000000000000000000000000000000006109677f00000000000000000000000000000000000000000000000000000000000000006129ca565b91506126167f00000000000000000000000000000000000000000000000000000000000000006109677f00000000000000000000000000000000000000000000000000000000000000006129ca565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054839290613025908490613b53565b909155505060028054829003905560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526000606483018190529182917f000000000000000000000000000000000000000000000000000000000000000016907fda5139ca0000000000000000000000000000000000000000000000000000000090608401612698565b60006127106131357f000000000000000000000000000000000000000000000000000000000000000084613b16565b61313f9190613adb565b90506000612710600654836131549190613b16565b61315e9190613adb565b905061318d84827f00000000000000000000000000000000000000000000000000000000000000006000612ae3565b5092915050565b6000808315806131a2575082155b156131b25750600090508061328e565b6000846131bf8589613b16565b6131c99190613adb565b9050858111613224576131df6127106002613b16565b6131e98288613b53565b613213907f0000000000000000000000000000000000000000000000000000000000000000613b16565b61321d9190613adb565b915061328c565b6000846132318789613b16565b61323b9190613adb565b905061324a6127106002613b16565b613254828a613b53565b61327e907f0000000000000000000000000000000000000000000000000000000000000000613b16565b6132889190613adb565b9350505b505b94509492505050565b6000806132c47f000000000000000000000000000000000000000000000000000000000000000085613b16565b905060006132f27f000000000000000000000000000000000000000000000000000000000000000085613b16565b90506132fe8282613378565b95945050505050565b80600260008282546133199190613ac3565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161307a565b6000806133858385613ac3565b90508061339157600091505b600081815b6101008110156134c1576000600487848a6133b18280613b16565b6133bb9190613adb565b6133c59190613b16565b6133cf9190613adb565b6133d99190613adb565b90508293508060036133eb9190613b16565b83600161341960647f0000000000000000000000000000000000000000000000000000000000000000613adb565b6134239190613b53565b61342d9190613b16565b6134379190613ac3565b83613443836002613b16565b606461346f897f0000000000000000000000000000000000000000000000000000000000000000613b16565b6134799190613adb565b6134839190613ac3565b61348d9190613b16565b6134979190613adb565b92506134a383856135fd565b156134ae57506134c1565b50806134b981613b96565b915050613396565b5095945050505050565b6000806134d9846002613b16565b6134e38480613b16565b6134ed9190613adb565b9050606461351c7f00000000000000000000000000000000000000000000000000000000000000006002613b16565b6135269190613adb565b6135308483613b16565b61353a9190613adb565b905060007f000000000000000000000000000000000000000000000000000000000000000061356a606486613b16565b6135749190613adb565b61357e9086613ac3565b9050600084935060005b610100811015611b4d5784915085836135a2846002613b16565b6135ac9190613ac3565b6135b69190613b53565b846135c18780613b16565b6135cb9190613ac3565b6135d59190613adb565b94506135e185836135fd565b156135eb57611b4d565b806135f581613b96565b915050613588565b600081831115613614575060018183031115610d88565b506001919003111590565b60006020828403121561363157600080fd5b8135612adc81613c5c565b60008060006060848603121561365157600080fd5b833561365c81613c5c565b9250602084013561366c81613c5c565b9150604084013561367c81613c81565b809150509250925092565b600080600080600060a0868803121561369f57600080fd5b85356136aa81613c5c565b945060208601356136ba81613c5c565b935060408601356136ca81613c81565b925060608601359150608086013567ffffffffffffffff808211156136ee57600080fd5b818801915088601f83011261370257600080fd5b81358181111561371457613714613c2d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561375a5761375a613c2d565b816040528281528b602084870101111561377357600080fd5b8260208601602083013760006020848301015280955050505050509295509295909350565b600080604083850312156137ab57600080fd5b82356137b681613c5c565b915060208301356137c681613c81565b809150509250929050565b600080604083850312156137e457600080fd5b82356137ef81613c5c565b946020939093013593505050565b6000806040838503121561381057600080fd5b823561381b81613c5c565b915060208301356137c681613c5c565b60008060006060848603121561384057600080fd5b833561384b81613c5c565b9250602084013561385b81613c5c565b929592945050506040919091013590565b600080600080600080600060e0888a03121561388757600080fd5b873561389281613c5c565b965060208801356138a281613c5c565b95506040880135945060608801359350608088013560ff811681146138c657600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000602082840312156138f557600080fd5b8151612adc81613c81565b6000806020838503121561391357600080fd5b823567ffffffffffffffff8082111561392b57600080fd5b818501915085601f83011261393f57600080fd5b81358181111561394e57600080fd5b86602082850101111561396057600080fd5b60209290920196919550909350505050565b60006020828403121561398457600080fd5b5051919050565b600081518084526139a3816020860160208601613b6a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516139e7818460208701613b6a565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b81811015613a3f57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613a0d565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015613aa3578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101613a68565b5091979650505050505050565b602081526000612adc602083018461398b565b60008219821115613ad657613ad6613bcf565b500190565b600082613b11577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b4e57613b4e613bcf565b500290565b600082821015613b6557613b65613bcf565b500390565b60005b83811015613b85578181015183820152602001613b6d565b83811115612e3c5750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613bc857613bc8613bcf565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114613c7e57600080fd5b50565b8015158114613c7e57600080fdfea26469706673582212208cb16d62de4d77a08746b141626254de45cd7186356a32265015f50f4a7712b164736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x277 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x627DD56A GT PUSH2 0x160 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xCF58879A GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x6CE JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6E1 JUMPI DUP1 PUSH4 0xF446C1D0 EQ PUSH2 0x70C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCF58879A EQ PUSH2 0x680 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBAA8C7CB GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xBAA8C7CB EQ PUSH2 0x62B JUMPI DUP1 PUSH4 0xBC3377D9 EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x605 JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x58F JUMPI DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x5CB JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x565 JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x627DD56A EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x51D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x4E25DC47 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x4E25DC47 EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x4C3 JUMPI DUP1 PUSH4 0x570CA735 EQ PUSH2 0x4EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x3DA JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x421 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x43B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x24A JUMPI DUP1 PUSH4 0x18160DDD GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x39E JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0x25A93264 EQ PUSH2 0x3BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x308 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x28F PUSH2 0x28A CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x733 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204672616E636869736564204C5020546F6B656E00000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x3AB0 JUMP JUMPDEST PUSH2 0x2F3 PUSH2 0xD00 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x31B PUSH2 0x316 CALLDATASIZE PUSH1 0x4 PUSH2 0x37D1 JUMP JUMPDEST PUSH2 0xD14 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x31B PUSH2 0x3B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x382B JUMP JUMPDEST PUSH2 0xD8E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x352 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x3E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x3A4B JUMP JUMPDEST PUSH2 0x28F PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x429 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x470 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x1246 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x352 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x518 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x124D JUMP JUMPDEST PUSH2 0x525 PUSH2 0x1571 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x39F1 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x540 CALLDATASIZE PUSH1 0x4 PUSH2 0x361F JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x560 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x1670 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x573 CALLDATASIZE PUSH1 0x4 PUSH2 0x361F JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x58D PUSH2 0x18B3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x54726964656E743A4672616E6368697365644879627269640000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x600 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x19AE JUMP JUMPDEST PUSH2 0x31B PUSH2 0x613 CALLDATASIZE PUSH1 0x4 PUSH2 0x37D1 JUMP JUMPDEST PUSH2 0x1B57 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x626 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x1C09 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x31B SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x58D PUSH2 0x6DC CALLDATASIZE PUSH1 0x4 PUSH2 0x386C JUMP JUMPDEST PUSH2 0x202B JUMP JUMPDEST PUSH2 0x28F PUSH2 0x6EF CALLDATASIZE PUSH1 0x4 PUSH2 0x37FD JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0x7A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x7BD DUP8 DUP10 ADD DUP10 PUSH2 0x3687 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x7E5 JUMPI PUSH2 0x7E5 DUP5 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7F0 PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x9E7 JUMPI PUSH32 0x0 SWAP2 POP PUSH2 0x898 PUSH32 0x0 DUP8 PUSH2 0x261C JUMP JUMPDEST SWAP6 POP PUSH2 0x2710 PUSH2 0x8C7 PUSH32 0x0 DUP9 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x8D1 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0x8E9 PUSH2 0x8E0 DUP3 DUP9 PUSH2 0x3B53 JUMP JUMPDEST DUP6 DUP6 PUSH1 0x1 PUSH2 0x2781 JUMP JUMPDEST SWAP10 POP PUSH2 0x918 PUSH32 0x0 DUP10 DUP13 DUP9 DUP12 PUSH2 0x2941 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x96C PUSH32 0x0 PUSH2 0x967 PUSH32 0x0 PUSH2 0x29CA JUMP JUMPDEST PUSH2 0x261C JUMP JUMPDEST SWAP1 POP DUP7 PUSH2 0x979 DUP7 DUP4 PUSH2 0x3B53 JUMP JUMPDEST LT ISZERO PUSH2 0x9E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP PUSH2 0xC2F JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH32 0x0 SWAP2 POP PUSH2 0xAE9 PUSH32 0x0 DUP8 PUSH2 0x261C JUMP JUMPDEST SWAP6 POP PUSH2 0x2710 PUSH2 0xB18 PUSH32 0x0 DUP9 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0xB22 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0xB3A PUSH2 0xB31 DUP3 DUP9 PUSH2 0x3B53 JUMP JUMPDEST DUP6 DUP6 PUSH1 0x0 PUSH2 0x2781 JUMP JUMPDEST SWAP10 POP PUSH2 0xB69 PUSH32 0x0 DUP10 DUP13 DUP9 DUP12 PUSH2 0x2941 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBB8 PUSH32 0x0 PUSH2 0x967 PUSH32 0x0 PUSH2 0x29CA JUMP JUMPDEST SWAP1 POP DUP7 PUSH2 0xBC5 DUP6 DUP4 PUSH2 0x3B53 JUMP JUMPDEST LT ISZERO PUSH2 0xC2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP JUMPDEST PUSH2 0xC5C DUP10 DUP3 PUSH32 0x0 PUSH1 0x0 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0xC64 PUSH2 0x2E42 JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP10 DUP15 PUSH1 0x40 MLOAD PUSH2 0xCE3 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP6 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xD0B PUSH2 0x2593 JUMP JUMPDEST SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xD7C SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xDBD JUMPI PUSH2 0xDBD DUP4 PUSH2 0x2433 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xE5A JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xE54 SWAP1 DUP5 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xE8F SWAP1 DUP5 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xEF7 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0xF77 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 DUP1 PUSH2 0xF8B DUP5 DUP7 ADD DUP7 PUSH2 0x3798 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xF98 DUP3 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xFA3 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x2 SLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 SWAP1 DUP3 PUSH2 0xFC9 DUP7 DUP5 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0xFD3 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0xFE2 DUP7 DUP6 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0xFEC SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0xFF8 ADDRESS DUP5 PUSH2 0x2FF0 JUMP JUMPDEST PUSH2 0x1024 PUSH32 0x0 DUP4 DUP11 DUP11 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x1050 PUSH32 0x0 DUP3 DUP11 DUP11 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x107A PUSH32 0x0 DUP4 PUSH2 0x3086 JUMP JUMPDEST PUSH2 0x1084 SWAP1 DUP8 PUSH2 0x3B53 JUMP JUMPDEST SWAP6 POP PUSH2 0x10B0 PUSH32 0x0 DUP3 PUSH2 0x3086 JUMP JUMPDEST PUSH2 0x10BA SWAP1 DUP7 PUSH2 0x3B53 JUMP JUMPDEST SWAP5 POP PUSH2 0x10C4 PUSH2 0x2E42 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x10DA JUMPI SWAP1 POP POP SWAP9 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP10 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1161 JUMPI PUSH2 0x1161 PUSH2 0x3BFE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP10 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x11CA JUMPI PUSH2 0x11CA PUSH2 0x3BFE JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP2 DUP3 ADD DUP4 SWAP1 MSTORE DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0x12BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x12D0 DUP6 DUP8 ADD DUP8 PUSH2 0x363C JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1304 JUMPI PUSH2 0x1304 DUP3 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x130F PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x131E PUSH2 0x2F51 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x13D3 JUMPI POP PUSH32 0x0 PUSH2 0x13A5 DUP7 DUP6 PUSH2 0x3B53 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH2 0x13B3 DUP11 DUP5 PUSH2 0x3106 JUMP JUMPDEST SWAP1 POP PUSH2 0x13CB PUSH2 0x13C2 DUP3 DUP6 PUSH2 0x3B53 JUMP JUMPDEST DUP9 DUP9 PUSH1 0x1 PUSH2 0x2781 JUMP JUMPDEST SWAP11 POP POP PUSH2 0x14DE JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1488 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP PUSH32 0x0 PUSH2 0x14B4 DUP6 DUP5 PUSH2 0x3B53 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH2 0x14C2 DUP11 DUP5 PUSH2 0x3106 JUMP JUMPDEST SWAP1 POP PUSH2 0x14DA PUSH2 0x14D1 DUP3 DUP6 PUSH2 0x3B53 JUMP JUMPDEST DUP9 DUP9 PUSH1 0x0 PUSH2 0x2781 JUMP JUMPDEST SWAP11 POP POP JUMPDEST PUSH2 0x14EA DUP2 DUP12 DUP11 DUP11 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x14F2 PUSH2 0x2E42 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP6 DUP15 PUSH1 0x40 MLOAD PUSH2 0xCE3 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x15C5 JUMPI PUSH2 0x15C5 PUSH2 0x3BFE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1633 JUMPI PUSH2 0x1633 PUSH2 0x3BFE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0x16DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 PUSH2 0x16F1 DUP4 DUP6 ADD DUP6 PUSH2 0x361F JUMP JUMPDEST SWAP1 POP PUSH2 0x16FC DUP2 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1707 PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1716 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x0 PUSH2 0x172A DUP7 DUP6 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1738 DUP7 DUP6 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1749 DUP5 DUP5 DUP12 DUP12 PUSH2 0x3194 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x176C PUSH2 0x175D DUP5 DUP11 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1767 DUP5 DUP11 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x3297 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x1793 JUMPI PUSH2 0x177F PUSH2 0x3E8 DUP3 PUSH2 0x3B53 JUMP JUMPDEST SWAP12 POP PUSH2 0x178E PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x3307 JUMP JUMPDEST PUSH2 0x17C5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x179F DUP12 DUP12 PUSH2 0x3297 JUMP JUMPDEST SWAP1 POP DUP1 DUP8 PUSH2 0x17AD DUP3 DUP6 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x17B7 SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x17C1 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP13 POP POP JUMPDEST DUP12 PUSH2 0x182C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F4C49515549444954595F4D494E544544000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH2 0x1836 DUP12 DUP14 PUSH2 0x3307 JUMP JUMPDEST PUSH2 0x183E PUSH2 0x2E42 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 DUP2 ADD DUP14 SWAP1 MSTORE DUP13 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND SWAP1 CALLER SWAP1 PUSH32 0xF9C32FBC56FF04F32A233EBC26E388564223745E28ABD8D0781DD906537F563E SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP9 SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC14AD80200000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH2 0x1950 SWAP2 SWAP1 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x198B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1990 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x19A8 SWAP2 SWAP1 PUSH2 0x3972 JUMP JUMPDEST PUSH1 0x6 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x19BE DUP5 DUP7 ADD DUP7 PUSH2 0x37D1 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x19CD PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x19DB DUP5 DUP5 PUSH2 0x261C JUMP JUMPDEST SWAP3 POP PUSH2 0x2710 PUSH2 0x1A0A PUSH32 0x0 DUP6 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x1A14 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x1A1E SWAP1 DUP5 PUSH2 0x3B53 JUMP JUMPDEST SWAP3 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1A88 JUMPI PUSH2 0x1A81 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x2781 JUMP JUMPDEST SWAP5 POP PUSH2 0x1B4D JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1B3D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH2 0x1B4A DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x2781 JUMP JUMPDEST SWAP5 POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1B86 JUMPI PUSH2 0x1B86 DUP4 PUSH2 0x2433 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x1BA5 SWAP1 DUP5 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xD7C SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0x1C77 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x1C8C DUP6 DUP8 ADD DUP8 PUSH2 0x363C JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x1C9B DUP3 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1CA6 PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1CB5 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x2 SLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 SWAP1 DUP3 PUSH2 0x1CDB DUP7 DUP5 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x1CE5 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0x1CF4 DUP7 DUP6 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x1CFE SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0x1D0A ADDRESS DUP5 PUSH2 0x2FF0 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1E2F JUMPI PUSH1 0x0 PUSH2 0x1D8A PUSH32 0x0 DUP5 PUSH2 0x3106 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DB4 PUSH2 0x1D99 DUP3 DUP6 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1DA3 DUP6 DUP13 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1DAD DUP6 DUP13 PUSH2 0x3B53 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2781 JUMP JUMPDEST PUSH2 0x1DBE SWAP1 DUP4 PUSH2 0x3AC3 JUMP JUMPDEST SWAP2 POP PUSH2 0x1DEC PUSH32 0x0 DUP4 DUP14 DUP14 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x1E16 PUSH32 0x0 DUP5 PUSH2 0x3086 JUMP JUMPDEST PUSH2 0x1E20 SWAP1 DUP9 PUSH2 0x3B53 JUMP JUMPDEST SWAP7 POP DUP2 SWAP13 POP PUSH1 0x0 SWAP3 POP POP PUSH2 0x1FB1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1EE4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F10 PUSH32 0x0 DUP4 PUSH2 0x3106 JUMP JUMPDEST SWAP1 POP PUSH2 0x1F3A PUSH2 0x1F1F DUP3 DUP5 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1F29 DUP6 DUP13 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1F33 DUP6 DUP13 PUSH2 0x3B53 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2781 JUMP JUMPDEST PUSH2 0x1F44 SWAP1 DUP5 PUSH2 0x3AC3 JUMP JUMPDEST SWAP3 POP PUSH2 0x1F72 PUSH32 0x0 DUP5 DUP14 DUP14 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x1F9C PUSH32 0x0 DUP4 PUSH2 0x3086 JUMP JUMPDEST PUSH2 0x1FA6 SWAP1 DUP8 PUSH2 0x3B53 JUMP JUMPDEST SWAP6 POP DUP3 SWAP13 POP PUSH1 0x0 SWAP2 POP POP JUMPDEST PUSH2 0x1FB9 PUSH2 0x2E42 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP8 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x2095 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x0 SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP8 PUSH2 0x2110 DUP4 PUSH2 0x3B96 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x21B1 SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x223A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x22B5 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x231B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x242E JUMPI PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE DUP6 DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1472C27100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH2 0x24D0 SWAP2 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x250B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2510 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x252A SWAP2 SWAP1 PUSH2 0x38E3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x242E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F57484954454C49535445440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND PUSH2 0x25EA PUSH32 0x0 DUP4 PUSH2 0x261C JUMP JUMPDEST SWAP2 POP PUSH2 0x2616 PUSH32 0x0 DUP3 PUSH2 0x261C JUMP JUMPDEST SWAP1 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD DUP2 SWAP1 MSTORE SWAP2 DUP3 SWAP2 PUSH32 0x0 AND SWAP1 PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x2721 SWAP2 SWAP1 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x275C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2761 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2779 SWAP2 SWAP1 PUSH2 0x3972 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 ISZERO PUSH2 0x2815 JUMPI PUSH2 0x27B6 PUSH32 0x0 DUP8 PUSH2 0x3B16 JUMP JUMPDEST SWAP2 POP PUSH2 0x27E2 PUSH32 0x0 DUP7 PUSH2 0x3B16 JUMP JUMPDEST SWAP1 POP PUSH2 0x280E PUSH32 0x0 DUP9 PUSH2 0x3B16 JUMP JUMPDEST SWAP7 POP PUSH2 0x289A JUMP JUMPDEST PUSH2 0x283F PUSH32 0x0 DUP7 PUSH2 0x3B16 JUMP JUMPDEST SWAP2 POP PUSH2 0x286B PUSH32 0x0 DUP8 PUSH2 0x3B16 JUMP JUMPDEST SWAP1 POP PUSH2 0x2897 PUSH32 0x0 DUP9 PUSH2 0x3B16 JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH1 0x0 PUSH2 0x28A6 DUP4 DUP4 PUSH2 0x3378 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x28B4 DUP10 DUP6 PUSH2 0x3AC3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x28C2 DUP3 DUP5 PUSH2 0x34CB JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH2 0x28D0 DUP3 DUP7 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x28DA SWAP2 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP6 POP DUP7 PUSH2 0x2907 JUMPI PUSH32 0x0 PUSH2 0x2929 JUMP JUMPDEST PUSH32 0x0 JUMPDEST PUSH2 0x2933 SWAP1 DUP8 PUSH2 0x3ADB JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x294D DUP6 DUP5 DUP7 DUP5 PUSH2 0x2AE3 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x29C3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x2990 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x3AB0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x29BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH2 0x2A84 SWAP2 SWAP1 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2ABF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2AC4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2ADC SWAP2 SWAP1 PUSH2 0x3972 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2C65 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x0 PUSH1 0xA4 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC4 SWAP1 SWAP4 ADD DUP5 MSTORE PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP3 MLOAD PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH2 0x2BB2 SWAP2 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2BEF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2BF4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2C5F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57495448445241575F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP PUSH2 0x2E3C JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP7 ADDRESS DUP7 PUSH2 0x2CCC DUP4 DUP11 PUSH2 0x3086 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x44 DUP5 ADD MSTORE SWAP3 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x2D8F SWAP2 SWAP1 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2DCC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2DD1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x29C3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2E4D PUSH2 0x2F51 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 LT DUP1 ISZERO PUSH2 0x2E80 JUMPI POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT JUMPDEST PUSH2 0x2EE6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564552464C4F57000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP1 DUP4 AND OR PUSH1 0x7 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH32 0xCF2AA50876CDFBB541206F89AF0EE78D44A2ABF8D328E37FA4917F982149848A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2FA1 PUSH32 0x0 PUSH2 0x967 PUSH32 0x0 PUSH2 0x29CA JUMP JUMPDEST SWAP2 POP PUSH2 0x2616 PUSH32 0x0 PUSH2 0x967 PUSH32 0x0 PUSH2 0x29CA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x3025 SWAP1 DUP5 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD DUP2 SWAP1 MSTORE SWAP2 DUP3 SWAP2 PUSH32 0x0 AND SWAP1 PUSH32 0xDA5139CA00000000000000000000000000000000000000000000000000000000 SWAP1 PUSH1 0x84 ADD PUSH2 0x2698 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2710 PUSH2 0x3135 PUSH32 0x0 DUP5 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x313F SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2710 PUSH1 0x6 SLOAD DUP4 PUSH2 0x3154 SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x315E SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0x318D DUP5 DUP3 PUSH32 0x0 PUSH1 0x0 PUSH2 0x2AE3 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 ISZERO DUP1 PUSH2 0x31A2 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x31B2 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x328E JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x31BF DUP6 DUP10 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x31C9 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP DUP6 DUP2 GT PUSH2 0x3224 JUMPI PUSH2 0x31DF PUSH2 0x2710 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x31E9 DUP3 DUP9 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x3213 SWAP1 PUSH32 0x0 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x321D SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP2 POP PUSH2 0x328C JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x3231 DUP8 DUP10 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x323B SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0x324A PUSH2 0x2710 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3254 DUP3 DUP11 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x327E SWAP1 PUSH32 0x0 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3288 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP4 POP POP JUMPDEST POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x32C4 PUSH32 0x0 DUP6 PUSH2 0x3B16 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x32F2 PUSH32 0x0 DUP6 PUSH2 0x3B16 JUMP JUMPDEST SWAP1 POP PUSH2 0x32FE DUP3 DUP3 PUSH2 0x3378 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3319 SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x307A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3385 DUP4 DUP6 PUSH2 0x3AC3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3391 JUMPI PUSH1 0x0 SWAP2 POP JUMPDEST PUSH1 0x0 DUP2 DUP2 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x34C1 JUMPI PUSH1 0x0 PUSH1 0x4 DUP8 DUP5 DUP11 PUSH2 0x33B1 DUP3 DUP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x33BB SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x33C5 SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x33CF SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x33D9 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP DUP3 SWAP4 POP DUP1 PUSH1 0x3 PUSH2 0x33EB SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH2 0x3419 PUSH1 0x64 PUSH32 0x0 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x3423 SWAP2 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x342D SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3437 SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST DUP4 PUSH2 0x3443 DUP4 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH1 0x64 PUSH2 0x346F DUP10 PUSH32 0x0 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3479 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x3483 SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST PUSH2 0x348D SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3497 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP3 POP PUSH2 0x34A3 DUP4 DUP6 PUSH2 0x35FD JUMP JUMPDEST ISZERO PUSH2 0x34AE JUMPI POP PUSH2 0x34C1 JUMP JUMPDEST POP DUP1 PUSH2 0x34B9 DUP2 PUSH2 0x3B96 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3396 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x34D9 DUP5 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x34E3 DUP5 DUP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x34ED SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x64 PUSH2 0x351C PUSH32 0x0 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3526 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x3530 DUP5 DUP4 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x353A SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH2 0x356A PUSH1 0x64 DUP7 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3574 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x357E SWAP1 DUP7 PUSH2 0x3AC3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 SWAP4 POP PUSH1 0x0 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x1B4D JUMPI DUP5 SWAP2 POP DUP6 DUP4 PUSH2 0x35A2 DUP5 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x35AC SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST PUSH2 0x35B6 SWAP2 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST DUP5 PUSH2 0x35C1 DUP8 DUP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x35CB SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST PUSH2 0x35D5 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP5 POP PUSH2 0x35E1 DUP6 DUP4 PUSH2 0x35FD JUMP JUMPDEST ISZERO PUSH2 0x35EB JUMPI PUSH2 0x1B4D JUMP JUMPDEST DUP1 PUSH2 0x35F5 DUP2 PUSH2 0x3B96 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3588 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 GT ISZERO PUSH2 0x3614 JUMPI POP PUSH1 0x1 DUP2 DUP4 SUB GT ISZERO PUSH2 0xD88 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 SUB GT ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2ADC DUP2 PUSH2 0x3C5C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3651 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x365C DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x366C DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x367C DUP2 PUSH2 0x3C81 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x369F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x36AA DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x36BA DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x36CA DUP2 PUSH2 0x3C81 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x36EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3702 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3714 JUMPI PUSH2 0x3714 PUSH2 0x3C2D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x375A JUMPI PUSH2 0x375A PUSH2 0x3C2D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP12 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x37AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x37B6 DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x37C6 DUP2 PUSH2 0x3C81 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x37E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x37EF DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x381B DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x37C6 DUP2 PUSH2 0x3C5C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x384B DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x385B DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3887 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x3892 DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x38A2 DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x38C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x38F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2ADC DUP2 PUSH2 0x3C81 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3913 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x392B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x393F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x394E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3960 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3984 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x39A3 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3B6A JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x39E7 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3B6A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3A3F JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3A0D JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3AA3 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3A68 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2ADC PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x398B JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3AD6 JUMPI PUSH2 0x3AD6 PUSH2 0x3BCF JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3B11 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3B4E JUMPI PUSH2 0x3B4E PUSH2 0x3BCF JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3B65 JUMPI PUSH2 0x3B65 PUSH2 0x3BCF JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3B85 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3B6D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2E3C JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x3BC8 JUMPI PUSH2 0x3BC8 PUSH2 0x3BCF JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3C7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3C7E JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP13 0xB1 PUSH14 0x62DE4D77A08746B141626254DE45 0xCD PUSH18 0x86356A32265015F50F4A7712B164736F6C63 NUMBER STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "625:20646:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10031:1615;;;;;;:::i;:::-;;:::i;:::-;;;11244:25:64;;;11232:2;11217:18;10031:1615:54;;;;;;;;557:57:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;21131:138:54:-;;;:::i;:::-;;;;16917:25:64;;;16973:2;16958:18;;16951:34;;;;16890:18;21131:138:54;16743:248:64;2457:203:57;;;;;;:::i;:::-;;:::i;:::-;;;11071:14:64;;11064:22;11046:41;;11034:2;11019:18;2457:203:57;10906:187:64;1328:33:54;;;;;;;;7543:42:64;7531:55;;;7513:74;;7501:2;7486:18;1328:33:54;7367:226:64;1448:31:54;;;;;796:26:57;;;;;;3665:612;;;;;;:::i;:::-;;:::i;705:31::-;;;;;;;;;5610:1085:54;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1120:145:57:-;;1170:95;1120:145;;663:35;;696:2;663:35;;;;;17492:4:64;17480:17;;;17462:36;;17450:2;17435:18;663:35:57;17320:184:64;1336:41:57;;;;;21024:101:54;;;;;;:::i;:::-;;:::i;1367:30::-;;;;;1959:50;;;;;1289:32;;;;;742:23:57;;;;;;;;;8747:1142:54;;;;;;:::i;:::-;;:::i;20195:174::-;;;:::i;:::-;;;;;;;:::i;870:44:57:-;;;;;;:::i;:::-;;;;;;;;;;;;;;4300:1184:54;;;;;;:::i;:::-;;:::i;1440:41:57:-;;;;;;:::i;:::-;;;;;;;;;;;;;;11704:206:54;;;:::i;:::-;;620:37:57;;;;;;;;;;;;;;;;;;;;;2107:76:54;;;;;20375:643;;;;;;:::i;:::-;;:::i;2900:441:57:-;;;;;;:::i;:::-;;:::i;6870:1749:54:-;;;;;;:::i;:::-;;:::i;1903:50::-;;;;;771:18:57;;;;;;;;;;;;2016:21:54;;;;;;1403:39;;;;;1485:31;;;;;4757:794:57;;;;;;:::i;:::-;;:::i;975:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1522:26:54;;;;;10031:1615;10101:17;2255:8;;2267:1;2255:13;2247:32;;;;;;;16085:2:64;2247:32:54;;;16067:21:64;16124:1;16104:18;;;16097:29;16162:8;16142:18;;;16135:36;16188:18;;2247:32:54;;;;;;;;;2300:1;2289:8;:12;10131:15:::1;::::0;;;;10227:92:::1;::::0;;::::1;10251:4:::0;10227:92:::1;:::i;:::-;10130:189;;;;;;;;;;10333:6;;;;;;;;;;;10329:38;;;10341:26;10357:9;10341:15;:26::i;:::-;10378:17;10397::::0;10418:14:::1;:12;:14::i;:::-;10377:55;;;;10442:16;10468:11:::0;10505:6:::1;10494:17;;:7;:17;;;10490:1003;;;10538:6;10527:17;;10569:27;10579:6;10587:8;10569:9;:27::i;:::-;10558:38:::0;-1:-1:-1;1264:5:54::1;10617:18;10628:7;10558:38:::0;10617:18:::1;:::i;:::-;10616:30;;;;:::i;:::-;10610:36:::0;-1:-1:-1;10672:57:54::1;10686:14;10610:36:::0;10686:8;:14:::1;:::i;:::-;10702:9;10713;10724:4;10672:13;:57::i;:::-;10660:69;;10743:64;10756:6;10764:9;10775;10786:7;10795:11;10743:12;:64::i;:::-;10821:16;10840:36;10850:6;10858:17;10868:6;10858:9;:17::i;:::-;10840:9;:36::i;:::-;10821:55:::0;-1:-1:-1;10922:8:54;10898:20:::1;10909:9:::0;10821:55;10898:20:::1;:::i;:::-;:32;;10890:67;;;::::0;::::1;::::0;;13303:2:64;10890:67:54::1;::::0;::::1;13285:21:64::0;13342:2;13322:18;;;13315:30;13381:24;13361:18;;;13354:52;13423:18;;10890:67:54::1;13101:346:64::0;10890:67:54::1;10513:455;10490:1003;;;11007:6;10996:17;;:7;:17;;;10988:49;;;::::0;::::1;::::0;;13654:2:64;10988:49:54::1;::::0;::::1;13636:21:64::0;13693:2;13673:18;;;13666:30;13732:21;13712:18;;;13705:49;13771:18;;10988:49:54::1;13452:343:64::0;10988:49:54::1;11062:6;11051:17;;11093:27;11103:6;11111:8;11093:9;:27::i;:::-;11082:38:::0;-1:-1:-1;1264:5:54::1;11141:18;11152:7;11082:38:::0;11141:18:::1;:::i;:::-;11140:30;;;;:::i;:::-;11134:36:::0;-1:-1:-1;11196:58:54::1;11210:14;11134:36:::0;11210:8;:14:::1;:::i;:::-;11226:9;11237;11248:5;11196:13;:58::i;:::-;11184:70;;11268:64;11281:6;11289:9;11300;11311:7;11320:11;11268:12;:64::i;:::-;11346:16;11365:36;11375:6;11383:17;11393:6;11383:9;:17::i;11365:36::-;11346:55:::0;-1:-1:-1;11447:8:54;11423:20:::1;11434:9:::0;11346:55;11423:20:::1;:::i;:::-;:32;;11415:67;;;::::0;::::1;::::0;;13303:2:64;11415:67:54::1;::::0;::::1;13285:21:64::0;13342:2;13322:18;;;13315:30;13381:24;13361:18;;;13354:52;13423:18;;11415:67:54::1;13101:346:64::0;11415:67:54::1;10974:519;10490:1003;11502:40;11512:7;11521:3;11526:8;11536:5;11502:9;:40::i;:::-;11552:17;:15;:17::i;:::-;11609:8;11584:55;;11600:7;11584:55;;11589:9;11584:55;;;11619:8;11629:9;11584:55;;;;;;16917:25:64::0;;;16973:2;16958:18;;16951:34;16905:2;16890:18;;16743:248;11584:55:54::1;;;;;;;;-1:-1:-1::0;;2333:1:54;2322:8;:12;-1:-1:-1;10031:1615:54;;;-1:-1:-1;;;;;;;;10031:1615:54:o;21131:138::-;21175:17;21194;21248:14;:12;:14::i;:::-;21223:39;;;;-1:-1:-1;21131:138:54;-1:-1:-1;21131:138:54:o;2457:203:57:-;2551:10;2525:4;2541:21;;;:9;:21;;;;;;;;;:30;;;;;;;;;;:39;;;2595:37;2525:4;;2541:30;;2595:37;;;;2574:6;11244:25:64;;11232:2;11217:18;;11098:177;2595:37:57;;;;;;;;-1:-1:-1;2649:4:57;2457:203;;;;;:::o;3665:612::-;3806:6;;3786:4;;3806:6;;;;;3802:38;;;3814:26;3830:9;3814:15;:26::i;:::-;3854:17;;;;;;;:9;:17;;;;;;;;3872:10;3854:29;;;;;;;;3887:17;3854:50;3850:120;;3920:17;;;;;;;:9;:17;;;;;;;;3938:10;3920:29;;;;;;;:39;;3953:6;;3920:17;:39;;3953:6;;3920:39;:::i;:::-;;;;-1:-1:-1;;3850:120:57;3979:17;;;;;;;:9;:17;;;;;:27;;4000:6;;3979:17;:27;;4000:6;;3979:27;:::i;:::-;;;;-1:-1:-1;;4159:20:57;;;;;;;;:9;:20;;;;;;;:30;;;;;;4214:35;4159:20;;4214:35;;;;;;;4183:6;11244:25:64;;11232:2;11217:18;;11098:177;4214:35:57;;;;;;;;-1:-1:-1;4266:4:57;3665:612;;;;;:::o;5610:1085:54:-;5675:43;2255:8;;2267:1;2255:13;2247:32;;;;;;;16085:2:64;2247:32:54;;;16067:21:64;16124:1;16104:18;;;16097:29;16162:8;16142:18;;;16135:36;16188:18;;2247:32:54;15883:329:64;2247:32:54;2300:1;2289:8;:12;5731:17:::1;::::0;5770:33:::1;::::0;;::::1;5781:4:::0;5770:33:::1;:::i;:::-;5730:73;;;;5813:26;5829:9;5813:15;:26::i;:::-;5850:16;5868::::0;5888:10:::1;:8;:10::i;:::-;5931:11;::::0;5990:4:::1;5908:20;5972:24:::0;;;:9:::1;:24;::::0;;;;;5849:49;;-1:-1:-1;5849:49:54;;-1:-1:-1;5931:11:54;5972:24;5931:11;6026:20:::1;5849:49:::0;5972:24;6026:20:::1;:::i;:::-;6025:37;;;;:::i;:::-;6007:55:::0;-1:-1:-1;6072:15:54::1;6115:12:::0;6091:20:::1;6103:8:::0;6091:9;:20:::1;:::i;:::-;6090:37;;;;:::i;:::-;6072:55;;6138:31;6152:4;6159:9;6138:5;:31::i;:::-;6179:50;6189:6;6197:7;6206:9;6217:11;6179:9;:50::i;:::-;6239;6249:6;6257:7;6266:9;6277:11;6239:9;:50::i;:::-;6312:25;6321:6;6329:7;6312:8;:25::i;:::-;6300:37;::::0;;::::1;:::i;:::-;;;6359:25;6368:6;6376:7;6359:8;:25::i;:::-;6347:37;::::0;;::::1;:::i;:::-;;;6395:17;:15;:17::i;:::-;6442:20;::::0;;6460:1:::1;6442:20:::0;;;;;::::1;::::0;;;;::::1;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;6442:20:54::1;;;;;;;;;;;;;;;6423:39;;6494:45;;;;;;;;6514:6;6494:45;;;;;;6530:7;6494:45;;::::0;6472:16:::1;6489:1;6472:19;;;;;;;;:::i;:::-;;;;;;:67;;;;6571:45;;;;;;;;6591:6;6571:45;;;;;;6607:7;6571:45;;::::0;6549:16:::1;6566:1;6549:19;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;:67;;;;6632:56:::1;::::0;;17198:25:64;;;17239:18;;;17232:34;;;17282:18;;17275:34;;;6632:56:54::1;::::0;::::1;::::0;6637:10:::1;::::0;6632:56:::1;::::0;17186:2:64;17171:18;6632:56:54::1;;;;;;;-1:-1:-1::0;;2333:1:54;2322:8;:12;-1:-1:-1;5610:1085:54;;;-1:-1:-1;;;;;;;5610:1085:54:o;21024:101::-;21091:7;21110:8;;;8747:1142;8812:17;2255:8;;2267:1;2255:13;2247:32;;;;;;;16085:2:64;2247:32:54;;;16067:21:64;16124:1;16104:18;;;16097:29;16162:8;16142:18;;;16135:36;16188:18;;2247:32:54;15883:329:64;2247:32:54;2300:1;2289:8;:12;8842:15:::1;::::0;;8898:42:::1;::::0;;::::1;8909:4:::0;8898:42:::1;:::i;:::-;8954:6;::::0;8841:99;;-1:-1:-1;8841:99:54;;-1:-1:-1;8841:99:54;-1:-1:-1;8954:6:54;;::::1;;;8950:38;;;8962:26;8978:9;8962:15;:26::i;:::-;8999:17;9018::::0;9039:14:::1;:12;:14::i;:::-;8998:55;;;;9064:16;9082::::0;9102:10:::1;:8;:10::i;:::-;9063:49;;;;9122:16;9148::::0;9190:6:::1;9179:17;;:7;:17;;;9175:547;;;-1:-1:-1::0;9223:6:54::1;9254:20;9265:9:::0;9254:8;:20:::1;:::i;:::-;9243:31;;9288:11;9302:29;9313:7;9322:8;9302:10;:29::i;:::-;9288:43:::0;-1:-1:-1;9357:57:54::1;9371:14;9288:43:::0;9371:8;:14:::1;:::i;:::-;9387:9;9398;9409:4;9357:13;:57::i;:::-;9345:69;;9198:227;9175:547;;;9464:6;9453:17;;:7;:17;;;9445:49;;;::::0;::::1;::::0;;13654:2:64;9445:49:54::1;::::0;::::1;13636:21:64::0;13693:2;13673:18;;;13666:30;13732:21;13712:18;;;13705:49;13771:18;;9445:49:54::1;13452:343:64::0;9445:49:54::1;-1:-1:-1::0;9519:6:54::1;9550:20;9561:9:::0;9550:8;:20:::1;:::i;:::-;9539:31;;9584:11;9598:29;9609:7;9618:8;9598:10;:29::i;:::-;9584:43:::0;-1:-1:-1;9653:58:54::1;9667:14;9584:43:::0;9667:8;:14:::1;:::i;:::-;9683:9;9694;9705:5;9653:13;:58::i;:::-;9641:70;;9431:291;9175:547;9731:54;9741:8;9751:9;9762;9773:11;9731:9;:54::i;:::-;9795:17;:15;:17::i;:::-;9852:8;9827:55;;9843:7;9827:55;;9832:9;9827:55;;;9862:8;9872:9;9827:55;;;;;;16917:25:64::0;;;16973:2;16958:18;;16951:34;16905:2;16890:18;;16743:248;20195:174:54;20290:16;;;20304:1;20290:16;;;20246:23;20290:16;;;;;20246:23;20290:16;;;;;;;;;;-1:-1:-1;20290:16:54;20281:25;;20328:6;20316;20323:1;20316:9;;;;;;;;:::i;:::-;;;;;;:18;;;;;;;;;;;20356:6;20344;20351:1;20344:9;;;;;;;;:::i;:::-;;;;;;:18;;;;;;;;;;;20195:174;:::o;4300:1184::-;4365:17;2255:8;;2267:1;2255:13;2247:32;;;;;;;16085:2:64;2247:32:54;;;16067:21:64;16124:1;16104:18;;;16097:29;16162:8;16142:18;;;16135:36;16188:18;;2247:32:54;15883:329:64;2247:32:54;2300:1;2289:8;:12;4394:17:::1;4414:27;::::0;;::::1;4425:4:::0;4414:27:::1;:::i;:::-;4394:47;;4451:26;4467:9;4451:15;:26::i;:::-;4488:17;4507::::0;4528:14:::1;:12;:14::i;:::-;4487:55;;;;4553:16;4571::::0;4591:10:::1;:8;:10::i;:::-;4634:11;::::0;4552:49;;-1:-1:-1;4552:49:54;-1:-1:-1;4611:20:54::1;4674;4685:9:::0;4552:49;4674:20:::1;:::i;:::-;4656:38:::0;-1:-1:-1;4704:15:54::1;4722:20;4733:9:::0;4722:8;:20:::1;:::i;:::-;4704:38;;4753:12;4767::::0;4783:58:::1;4802:7;4811;4820:9;4831;4783:18;:58::i;:::-;4752:89:::0;;-1:-1:-1;4752:89:54;-1:-1:-1;4851:14:54::1;4868:51;4886:15;4752:89:::0;4886:8;:15:::1;:::i;:::-;4903;4914:4:::0;4903:8;:15:::1;:::i;:::-;4868:17;:51::i;:::-;4851:68:::0;-1:-1:-1;4934:17:54;4930:292:::1;;4979:26;1067:5;4979:6:::0;:26:::1;:::i;:::-;4967:38;;5019:36;5033:1;1067:5;5019;:36::i;:::-;4930:292;;;5086:14;5103:39;5121:9;5132;5103:17;:39::i;:::-;5086:56:::0;-1:-1:-1;5086:56:54;5189:12;5170:15:::1;5086:56:::0;5170:6;:15:::1;:::i;:::-;5169:32;;;;:::i;:::-;5168:43;;;;:::i;:::-;5156:55;;5072:150;4930:292;5239:14:::0;5231:56:::1;;;::::0;::::1;::::0;;14351:2:64;5231:56:54::1;::::0;::::1;14333:21:64::0;14390:2;14370:18;;;14363:30;14429:31;14409:18;;;14402:59;14478:18;;5231:56:54::1;14149:353:64::0;5231:56:54::1;5297:27;5303:9;5314;5297:5;:27::i;:::-;5334:17;:15;:17::i;:::-;5413:64;::::0;;17198:25:64;;;17254:2;17239:18;;17232:34;;;17282:18;;;17275:34;;;5389:9:54;;5413:64:::1;::::0;::::1;::::0;5418:10:::1;::::0;5413:64:::1;::::0;17186:2:64;17171:18;5413:64:54::1;;;;;;;-1:-1:-1::0;;2333:1:54;2322:8;:12;-1:-1:-1;4300:1184:54;;;-1:-1:-1;;;;;;;;;;;4300:1184:54:o;11704:206::-;11798:55;;;;;;;;;;;;;;;;;;11821:31;11798:55;;;11772:82;;11748:20;;11772:25;:14;:25;;:82;;11798:55;11772:82;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11745:109;;;11884:7;11873:30;;;;;;;;;;;;:::i;:::-;11864:6;:39;-1:-1:-1;11704:206:54:o;20375:643::-;20448:22;;;20520:36;;;;20531:4;20520:36;:::i;:::-;20482:74;;;;20567:17;20586;20607:14;:12;:14::i;:::-;20566:55;;;;20642:28;20652:7;20661:8;20642:9;:28::i;:::-;20631:39;-1:-1:-1;1264:5:54;20693:18;20704:7;20631:39;20693:18;:::i;:::-;20692:30;;;;:::i;:::-;20680:42;;;;:::i;:::-;;;20748:6;20737:17;;:7;:17;;;20733:279;;;20787:51;20801:8;20811:9;20822;20833:4;20787:13;:51::i;:::-;20770:68;;20733:279;;;20888:6;20877:17;;:7;:17;;;20869:49;;;;;;;13654:2:64;20869:49:54;;;13636:21:64;13693:2;13673:18;;;13666:30;13732:21;13712:18;;;13705:49;13771:18;;20869:49:54;13452:343:64;20869:49:54;20949:52;20963:8;20973:9;20984;20995:5;20949:13;:52::i;:::-;20932:69;;20733:279;20472:546;;;;20375:643;;;;:::o;2900:441:57:-;2991:6;;2971:4;;2991:6;;;;;2987:38;;;2999:26;3015:9;2999:15;:26::i;:::-;3045:10;3035:21;;;;:9;:21;;;;;:31;;3060:6;;3035:21;:31;;3060:6;;3035:31;:::i;:::-;;;;-1:-1:-1;;3219:20:57;;;;;;;:9;:20;;;;;;;:30;;;;;;3274:39;3283:10;;3274:39;;;;3243:6;11244:25:64;;11232:2;11217:18;;11098:177;6870:1749:54;6941:17;2255:8;;2267:1;2255:13;2247:32;;;;;;;16085:2:64;2247:32:54;;;16067:21:64;16124:1;16104:18;;;16097:29;16162:8;16142:18;;;16135:36;16188:18;;2247:32:54;15883:329:64;2247:32:54;2300:1;2289:8;:12;6971:16:::1;::::0;;7028:42:::1;::::0;;::::1;7039:4:::0;7028:42:::1;:::i;:::-;6970:100;;;;;;7080:26;7096:9;7080:15;:26::i;:::-;7117:17;7136::::0;7157:14:::1;:12;:14::i;:::-;7116:55;;;;7182:16;7200::::0;7220:10:::1;:8;:10::i;:::-;7263:11;::::0;7322:4:::1;7240:20;7304:24:::0;;;:9:::1;:24;::::0;;;;;7181:49;;-1:-1:-1;7181:49:54;;-1:-1:-1;7263:11:54;7304:24;7263:11;7358:20:::1;7181:49:::0;7304:24;7358:20:::1;:::i;:::-;7357:37;;;;:::i;:::-;7339:55:::0;-1:-1:-1;7404:15:54::1;7447:12:::0;7423:20:::1;7435:8:::0;7423:9;:20:::1;:::i;:::-;7422:37;;;;:::i;:::-;7404:55;;7470:31;7484:4;7491:9;7470:5;:31::i;:::-;7528:6;7516:18;;:8;:18;;;7512:1003;;;7729:11;7743:27;7754:6;7762:7;7743:10;:27::i;:::-;7729:41:::0;-1:-1:-1;7795:76:54::1;7809:13;7729:41:::0;7809:7;:13:::1;:::i;:::-;7824:19;7836:7:::0;7824:9;:19:::1;:::i;:::-;7845;7857:7:::0;7845:9;:19:::1;:::i;:::-;7866:4;7795:13;:76::i;:::-;7784:87;::::0;;::::1;:::i;:::-;;;7885:50;7895:6;7903:7;7912:9;7923:11;7885:9;:50::i;:::-;7961:25;7970:6;7978:7;7961:8;:25::i;:::-;7949:37;::::0;;::::1;:::i;:::-;;;8012:7;8000:19;;8043:1;8033:11;;7536:519;7512:1003;;;8143:6;8131:18;;:8;:18;;;8123:51;;;::::0;::::1;::::0;;14002:2:64;8123:51:54::1;::::0;::::1;13984:21:64::0;14041:2;14021:18;;;14014:30;14080:22;14060:18;;;14053:50;14120:18;;8123:51:54::1;13800:344:64::0;8123:51:54::1;8188:11;8202:27;8213:6;8221:7;8202:10;:27::i;:::-;8188:41:::0;-1:-1:-1;8254:77:54::1;8268:13;8188:41:::0;8268:7;:13:::1;:::i;:::-;8283:19;8295:7:::0;8283:9;:19:::1;:::i;:::-;8304;8316:7:::0;8304:9;:19:::1;:::i;:::-;8325:5;8254:13;:77::i;:::-;8243:88;::::0;;::::1;:::i;:::-;;;8345:50;8355:6;8363:7;8372:9;8383:11;8345:9;:50::i;:::-;8421:25;8430:6;8438:7;8421:8;:25::i;:::-;8409:37;::::0;;::::1;:::i;:::-;;;8472:7;8460:19;;8503:1;8493:11;;8061:454;7512:1003;8524:17;:15;:17::i;:::-;8556:56;::::0;;17198:25:64;;;17254:2;17239:18;;17232:34;;;17282:18;;;17275:34;;;8556:56:54::1;::::0;::::1;::::0;8561:10:::1;::::0;8556:56:::1;::::0;17186:2:64;17171:18;8556:56:54::1;;;;;;;-1:-1:-1::0;;2333:1:54;2322:8;:12;-1:-1:-1;6870:1749:54;;;-1:-1:-1;;;;;;;;;;6870:1749:54:o;4757:794:57:-;4971:15;4959:8;:27;;4951:63;;;;;;;15733:2:64;4951:63:57;;;15715:21:64;15772:2;15752:18;;;15745:30;15811:25;15791:18;;;15784:53;15854:18;;4951:63:57;15531:347:64;4951:63:57;5222:13;;;5024:14;5222:13;;;:6;:13;;;;;:15;;5126:16;;1170:95;;5198:5;;5205:7;;5214:6;;5024:14;5222:15;;;:::i;:::-;;;;-1:-1:-1;5170:78:57;;;;;;11567:25:64;;;;11611:42;11689:15;;;11669:18;;;11662:43;11741:15;;;;11721:18;;;11714:43;11773:18;;;11766:34;11816:19;;;11809:35;11860:19;;;11853:35;;;11539:19;;5170:78:57;;;;;;;;;;;;5160:89;;;;;;5064:199;;;;;;;;7188:66:64;7176:79;;7280:1;7271:11;;7264:27;;;;7316:2;7307:12;;7300:28;7353:2;7344:12;;6918:444;5064:199:57;;;;;;;;;;;;;;5041:232;;5064:199;5041:232;;;;5283:24;5310:26;;;;;;;;;12126:25:64;;;12199:4;12187:17;;12167:18;;;12160:45;;;;12221:18;;;12214:34;;;12264:18;;;12257:34;;;5041:232:57;;-1:-1:-1;5283:24:57;5310:26;;12098:19:64;;5310:26:57;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5310:26:57;;;;;;-1:-1:-1;;5354:30:57;;;;;;;:59;;;5408:5;5388:25;;:16;:25;;;5354:59;5346:96;;;;;;;12950:2:64;5346:96:57;;;12932:21:64;12989:2;12969:18;;;12962:30;13028:26;13008:18;;;13001:54;13072:18;;5346:96:57;12748:348:64;5346:96:57;5452:27;;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:45;;;5512:32;11244:25:64;;;5452:36:57;;5512:32;;;;;11217:18:64;5512:32:57;;;;;;;4941:610;;4757:794;;;;;;;:::o;1910:238::-;2039:16;:36;;;;;;;;;;;;;;;2085:20;;;;;;;;;;;;;;;2115:26;;;;2137:4;2128:13;;;;;;;;2115:26;1910:238;;;:::o;6330:355::-;6399:25;6428:16;;;6540:8;6469:89;;;6428:16;6540:8;;;6469:89;;;7833:34:64;7903:15;;;7883:18;;;;7876:43;;;;6469:89:57;;;;;;;;;;7745:18:64;;;;6469:89:57;;;;;;;;;6492:46;6469:89;;;6428:140;;:16;;;;;:140;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6396:172;;;6578:16;6608:12;6597:32;;;;;;;;;;;;:::i;:::-;6578:51;;6647:11;6639:39;;;;;;;16419:2:64;6639:39:57;;;16401:21:64;16458:2;16438:18;;;16431:30;16497:17;16477:18;;;16470:45;16532:18;;6639:39:57;16217:339:64;12233:247:54;12354:8;;;;;;;12364;;;;12395:28;12405:6;12354:8;12395:9;:28::i;:::-;12383:40;;12445:28;12455:6;12463:9;12445;:28::i;:::-;12433:40;;12233:247;;:::o;13337:326::-;13527:79;;13510:16;9201:55:64;;;13527:79:54;;;9183:74:64;9273:18;;;9266:34;;;13409:14:54;9316:18:64;;;9309:50;;;13409:14:54;;;13510:5;:16;;13550:34;;9156:18:64;;13527:79:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13510:97;;;;13527:79;13510:97;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13483:124;;;13637:7;13626:30;;;;;;;;;;;;:::i;:::-;13617:39;13337:326;-1:-1:-1;;;;13337:326:54:o;13998:859::-;14153:10;14175:12;14197:13;14225:8;14221:378;;;14256:37;14268:25;14256:9;:37;:::i;:::-;14249:44;-1:-1:-1;14315:37:54;14327:25;14315:9;:37;:::i;:::-;14307:45;-1:-1:-1;14366:37:54;14378:25;14366:37;;:::i;:::-;;;14221:378;;;14441:37;14453:25;14441:9;:37;:::i;:::-;14434:44;-1:-1:-1;14500:37:54;14512:25;14500:9;:37;:::i;:::-;14492:45;-1:-1:-1;14551:37:54;14563:25;14551:37;;:::i;:::-;;;14221:378;14608:9;14620:50;14658:4;14664:5;14620:37;:50::i;:::-;14608:62;-1:-1:-1;14680:9:54;14692:15;14699:8;14692:4;:15;:::i;:::-;14680:27;;14717:9;14729:11;14735:1;14738;14729:5;:11::i;:::-;14717:23;-1:-1:-1;14767:1:54;14755:9;14717:23;14755:5;:9;:::i;:::-;:13;;;;:::i;:::-;14750:18;;14785:8;:64;;14824:25;14785:64;;;14796:25;14785:64;14778:72;;;;:::i;:::-;;13998:859;-1:-1:-1;;;;;;;;;;13998:859:54:o;11916:311::-;12089:47;12099:8;12109:9;12120:2;12124:11;12089:9;:47::i;:::-;12150:11;;:16;12146:74;;12168:52;;;;;12183:10;;12168:46;;:52;;12215:4;;12168:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12146:74;11916:311;;;;;:::o;13014:317::-;13189:81;;;13172:16;7851:15:64;;;13189:81:54;;;7833:34:64;13264:4:54;7883:18:64;;;;7876:43;;;;13189:81:54;;;;;;;;;;7745:18:64;;;;13189:81:54;;;;;;;;;13212:35;13189:81;;;13172:99;;-1:-1:-1;;;;13172:5:54;:16;;;;:99;;13189:81;13172:99;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13142:129;;;13302:10;13291:33;;;;;;;;;;;;:::i;:::-;13281:43;13014:317;-1:-1:-1;;;13014:317:54:o;14863:744::-;15004:11;15000:601;;;15132:95;;;15121:10;8758:15:64;;;15132:95:54;;;8740:34:64;15206:4:54;8790:18:64;;;8783:43;8862:15;;;8842:18;;;8835:43;8894:18;;;8887:34;;;-1:-1:-1;8937:19:64;;;;8930:46;;;15132:95:54;;;;;;;;;;8651:19:64;;;;15132:95:54;;;;;;;;;15155:34;15132:95;;;15121:107;;:5;:10;;;;:107;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15102:126;;;15250:7;15242:35;;;;;;;14709:2:64;15242:35:54;;;14691:21:64;14748:2;14728:18;;;14721:30;14787:17;14767:18;;;14760:45;14822:18;;15242:35:54;14507:339:64;15242:35:54;15017:271;15000:601;;;15372:12;15390:10;:5;:10;15441:34;15477:5;15492:4;15499:2;15503:23;15477:5;15519:6;15503:8;:23::i;:::-;15418:109;;8171:42:64;8240:15;;;15418:109:54;;;8222:34:64;8292:15;;;8272:18;;;8265:43;8344:15;;8324:18;;;8317:43;8376:18;;;8369:34;;;;8133:19;;15418:109:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15390:151;;;;15418:109;15390:151;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15371:170;;;15563:7;15555:35;;;;;;;15053:2:64;15555:35:54;;;15035:21:64;15092:2;15072:18;;;15065:30;15131:17;15111:18;;;15104:45;15166:18;;15555:35:54;14851:339:64;15000:601:54;14863:744;;;;:::o;12486:316::-;12533:17;12552;12573:10;:8;:10::i;:::-;12532:51;;-1:-1:-1;12532:51:54;-1:-1:-1;12613:17:54;12601:29;;:62;;;;-1:-1:-1;12646:17:54;12634:29;;12601:62;12593:83;;;;;;;15397:2:64;12593:83:54;;;15379:21:64;15436:1;15416:18;;;15409:29;15474:10;15454:18;;;15447:38;15502:18;;12593:83:54;15195:331:64;12593:83:54;12686:29;12725;;;;;12686;;;12725;12686:8;12725:29;12769:26;;;16917:25:64;;;16973:2;16958:18;;16951:34;;;12769:26:54;;16890:18:64;12769:26:54;;;;;;;12522:280;;12486:316::o;12808:200::-;12851:16;12869;12908:36;12918:6;12926:17;12936:6;12926:9;:17::i;12908:36::-;12897:47;;12965:36;12975:6;12983:17;12993:6;12983:9;:17::i;5907:332:57:-;5973:17;;;;;;;:9;:17;;;;;:27;;5994:6;;5973:17;:27;;5994:6;;5973:27;:::i;:::-;;;;-1:-1:-1;;6150:11:57;:21;;;;;;;6196:36;;11244:25:64;;;-1:-1:-1;;6196:36:57;;;;;;11232:2:64;11217:18;6196:36:57;;;;;;;;5907:332;;:::o;13669:323:54:-;13857:78;;13840:16;9201:55:64;;;13857:78:54;;;9183:74:64;9273:18;;;9266:34;;;13740:14:54;9316:18:64;;;9309:50;;;13740:14:54;;;13840:5;:16;;13880:33;;9156:18:64;;13857:78:54;8987:378:64;19202:245:54;19275:11;1264:5;19305:18;19316:7;19305:8;:18;:::i;:::-;19304:30;;;;:::i;:::-;19298:36;;19344:15;1264:5;19369:6;;19363:3;:12;;;;:::i;:::-;19362:24;;;;:::i;:::-;19344:42;;19396:44;19406:7;19415;19424:8;19434:5;19396:9;:44::i;:::-;19288:159;19202:245;;;;:::o;19546:643::-;19709:17;;19761:14;;;:32;;-1:-1:-1;19779:14:54;;19761:32;19757:51;;;-1:-1:-1;19803:1:54;;-1:-1:-1;19803:1:54;19795:13;;19757:51;19818:22;19868:9;19844:20;19855:9;19844:8;:20;:::i;:::-;19843:34;;;;:::i;:::-;19818:59;;19910:8;19892:14;:26;19888:295;;19989:11;1264:5;19989:1;:11;:::i;:::-;19958:25;19969:14;19958:8;:25;:::i;:::-;19947:37;;:7;:37;:::i;:::-;19946:55;;;;:::i;:::-;19934:67;;19888:295;;;20032:22;20082:9;20058:20;20069:9;20058:8;:20;:::i;:::-;20057:34;;;;:::i;:::-;20032:59;-1:-1:-1;20160:11:54;1264:5;20160:1;:11;:::i;:::-;20129:25;20140:14;20129:8;:25;:::i;:::-;20118:37;;:7;:37;:::i;:::-;20117:55;;;;:::i;:::-;20105:67;;20018:165;19888:295;19747:442;19546:643;;;;;;;;:::o;15976:305::-;16064:17;;16107:37;16119:25;16107:9;:37;:::i;:::-;16093:51;-1:-1:-1;16154:11:54;16168:37;16180:25;16168:9;:37;:::i;:::-;16154:51;;16227:47;16265:3;16270;16227:37;:47::i;:::-;16215:59;15976:305;-1:-1:-1;;;;;15976:305:54:o;5557:344:57:-;5641:6;5626:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;5800:20:57;;;;;;;:9;:20;;;;;;;;:30;;;;;;5855:39;11244:25:64;;;5855:39:57;;11217:18:64;5855:39:57;11098:177:64;16287:597:54;16383:16;;16423:9;16429:3;16423;:9;:::i;:::-;16411:21;-1:-1:-1;16447:6:54;16443:49;;16480:1;16469:12;;16443:49;16501:13;16536:1;16501:13;16547:309;1219:3;16567:1;:18;16547:309;;;16606:10;16649:1;16643:3;16638:1;16631:3;16622:5;16638:1;;16622:5;:::i;:::-;16621:13;;;;:::i;:::-;16620:19;;;;:::i;:::-;16619:27;;;;:::i;:::-;:31;;;;:::i;:::-;16606:44;;16672:1;16664:9;;16769:2;16765:1;:6;;;;:::i;:::-;16761:1;16756;16736:17;1645:3;16736;:17;:::i;:::-;:21;;;;:::i;:::-;16735:27;;;;:::i;:::-;:36;;;;:::i;:::-;16729:1;16719:6;16723:2;16719:1;:6;:::i;:::-;1645:3;16694:7;16700:1;16694:3;:7;:::i;:::-;16693:23;;;;:::i;:::-;:32;;;;:::i;:::-;16692:38;;;;:::i;:::-;16691:81;;;;:::i;:::-;16687:85;-1:-1:-1;16790:16:54;16687:85;16800:5;16790:9;:16::i;:::-;16786:60;;;16826:5;;;16786:60;-1:-1:-1;16587:3:54;;;;:::i;:::-;;;;16547:309;;;-1:-1:-1;16876:1:54;16287:597;-1:-1:-1;;;;;16287:597:54:o;17452:504::-;17512:9;;17556:5;:1;17560;17556:5;:::i;:::-;17546;17550:1;;17546:5;:::i;:::-;17545:17;;;;:::i;:::-;17533:29;-1:-1:-1;1645:3:54;17588:7;:3;17594:1;17588:7;:::i;:::-;17587:23;;;;:::i;:::-;17577:5;17581:1;17577;:5;:::i;:::-;17576:35;;;;:::i;:::-;17572:39;-1:-1:-1;17621:9:54;17658:3;17639:15;1645:3;17639:1;:15;:::i;:::-;17638:23;;;;:::i;:::-;17633:29;;:1;:29;:::i;:::-;17621:41;;17672:13;17699:1;17695:5;;17756:9;17751:199;1219:3;17771:1;:18;17751:199;;;17818:1;;-1:-1:-1;17864:1:54;17860;17852:5;17818:1;17856;17852:5;:::i;:::-;:9;;;;:::i;:::-;:13;;;;:::i;:::-;17846:1;17838:5;17842:1;;17838:5;:::i;:::-;:9;;;;:::i;:::-;17837:29;;;;:::i;:::-;17833:33;-1:-1:-1;17884:16:54;17833:33;17894:5;17884:9;:16::i;:::-;17880:60;;;17920:5;;17880:60;17791:3;;;;:::i;:::-;;;;17751:199;;520:210:22;582:4;630:1;626;:5;622:61;;;-1:-1:-1;667:1:22;658:5;;;:10;;651:17;;622:61;-1:-1:-1;712:1:22;703:5;;;:10;;;520:210::o;14:247:64:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;526:539::-;616:6;624;632;685:2;673:9;664:7;660:23;656:32;653:52;;;701:1;698;691:12;653:52;740:9;727:23;759:31;784:5;759:31;:::i;:::-;809:5;-1:-1:-1;866:2:64;851:18;;838:32;879:33;838:32;879:33;:::i;:::-;931:7;-1:-1:-1;990:2:64;975:18;;962:32;1003:30;962:32;1003:30;:::i;:::-;1052:7;1042:17;;;526:539;;;;;:::o;1070:1477::-;1187:6;1195;1203;1211;1219;1272:3;1260:9;1251:7;1247:23;1243:33;1240:53;;;1289:1;1286;1279:12;1240:53;1328:9;1315:23;1347:31;1372:5;1347:31;:::i;:::-;1397:5;-1:-1:-1;1454:2:64;1439:18;;1426:32;1467:33;1426:32;1467:33;:::i;:::-;1519:7;-1:-1:-1;1578:2:64;1563:18;;1550:32;1591:30;1550:32;1591:30;:::i;:::-;1640:7;-1:-1:-1;1694:2:64;1679:18;;1666:32;;-1:-1:-1;1749:3:64;1734:19;;1721:33;1773:18;1803:14;;;1800:34;;;1830:1;1827;1820:12;1800:34;1868:6;1857:9;1853:22;1843:32;;1913:7;1906:4;1902:2;1898:13;1894:27;1884:55;;1935:1;1932;1925:12;1884:55;1971:2;1958:16;1993:2;1989;1986:10;1983:36;;;1999:18;;:::i;:::-;2133:2;2127:9;2195:4;2187:13;;2038:66;2183:22;;;2207:2;2179:31;2175:40;2163:53;;;2231:18;;;2251:22;;;2228:46;2225:72;;;2277:18;;:::i;:::-;2317:10;2313:2;2306:22;2352:2;2344:6;2337:18;2392:7;2387:2;2382;2378;2374:11;2370:20;2367:33;2364:53;;;2413:1;2410;2403:12;2364:53;2469:2;2464;2460;2456:11;2451:2;2443:6;2439:15;2426:46;2514:1;2509:2;2504;2496:6;2492:15;2488:24;2481:35;2535:6;2525:16;;;;;;;1070:1477;;;;;;;;:::o;2552:390::-;2625:6;2633;2686:2;2674:9;2665:7;2661:23;2657:32;2654:52;;;2702:1;2699;2692:12;2654:52;2741:9;2728:23;2760:31;2785:5;2760:31;:::i;:::-;2810:5;-1:-1:-1;2867:2:64;2852:18;;2839:32;2880:30;2839:32;2880:30;:::i;:::-;2929:7;2919:17;;;2552:390;;;;;:::o;2947:323::-;3023:6;3031;3084:2;3072:9;3063:7;3059:23;3055:32;3052:52;;;3100:1;3097;3090:12;3052:52;3139:9;3126:23;3158:31;3183:5;3158:31;:::i;:::-;3208:5;3260:2;3245:18;;;;3232:32;;-1:-1:-1;;;2947:323:64:o;3275:388::-;3343:6;3351;3404:2;3392:9;3383:7;3379:23;3375:32;3372:52;;;3420:1;3417;3410:12;3372:52;3459:9;3446:23;3478:31;3503:5;3478:31;:::i;:::-;3528:5;-1:-1:-1;3585:2:64;3570:18;;3557:32;3598:33;3557:32;3598:33;:::i;3668:456::-;3745:6;3753;3761;3814:2;3802:9;3793:7;3789:23;3785:32;3782:52;;;3830:1;3827;3820:12;3782:52;3869:9;3856:23;3888:31;3913:5;3888:31;:::i;:::-;3938:5;-1:-1:-1;3995:2:64;3980:18;;3967:32;4008:33;3967:32;4008:33;:::i;:::-;3668:456;;4060:7;;-1:-1:-1;;;4114:2:64;4099:18;;;;4086:32;;3668:456::o;4129:829::-;4240:6;4248;4256;4264;4272;4280;4288;4341:3;4329:9;4320:7;4316:23;4312:33;4309:53;;;4358:1;4355;4348:12;4309:53;4397:9;4384:23;4416:31;4441:5;4416:31;:::i;:::-;4466:5;-1:-1:-1;4523:2:64;4508:18;;4495:32;4536:33;4495:32;4536:33;:::i;:::-;4588:7;-1:-1:-1;4642:2:64;4627:18;;4614:32;;-1:-1:-1;4693:2:64;4678:18;;4665:32;;-1:-1:-1;4749:3:64;4734:19;;4721:33;4798:4;4785:18;;4773:31;;4763:59;;4818:1;4815;4808:12;4763:59;4129:829;;;;-1:-1:-1;4129:829:64;;;;4841:7;4895:3;4880:19;;4867:33;;-1:-1:-1;4947:3:64;4932:19;;;4919:33;;4129:829;-1:-1:-1;;4129:829:64:o;5283:245::-;5350:6;5403:2;5391:9;5382:7;5378:23;5374:32;5371:52;;;5419:1;5416;5409:12;5371:52;5451:9;5445:16;5470:28;5492:5;5470:28;:::i;5533:591::-;5603:6;5611;5664:2;5652:9;5643:7;5639:23;5635:32;5632:52;;;5680:1;5677;5670:12;5632:52;5720:9;5707:23;5749:18;5790:2;5782:6;5779:14;5776:34;;;5806:1;5803;5796:12;5776:34;5844:6;5833:9;5829:22;5819:32;;5889:7;5882:4;5878:2;5874:13;5870:27;5860:55;;5911:1;5908;5901:12;5860:55;5951:2;5938:16;5977:2;5969:6;5966:14;5963:34;;;5993:1;5990;5983:12;5963:34;6038:7;6033:2;6024:6;6020:2;6016:15;6012:24;6009:37;6006:57;;;6059:1;6056;6049:12;6006:57;6090:2;6082:11;;;;;6112:6;;-1:-1:-1;5533:591:64;;-1:-1:-1;;;;5533:591:64:o;6129:184::-;6199:6;6252:2;6240:9;6231:7;6227:23;6223:32;6220:52;;;6268:1;6265;6258:12;6220:52;-1:-1:-1;6291:16:64;;6129:184;-1:-1:-1;6129:184:64:o;6318:316::-;6359:3;6397:5;6391:12;6424:6;6419:3;6412:19;6440:63;6496:6;6489:4;6484:3;6480:14;6473:4;6466:5;6462:16;6440:63;:::i;:::-;6548:2;6536:15;6553:66;6532:88;6523:98;;;;6623:4;6519:109;;6318:316;-1:-1:-1;;6318:316:64:o;6639:274::-;6768:3;6806:6;6800:13;6822:53;6868:6;6863:3;6856:4;6848:6;6844:17;6822:53;:::i;:::-;6891:16;;;;;6639:274;-1:-1:-1;;6639:274:64:o;9370:681::-;9541:2;9593:21;;;9663:13;;9566:18;;;9685:22;;;9512:4;;9541:2;9764:15;;;;9738:2;9723:18;;;9512:4;9807:218;9821:6;9818:1;9815:13;9807:218;;;9886:13;;9901:42;9882:62;9870:75;;10000:15;;;;9965:12;;;;9843:1;9836:9;9807:218;;;-1:-1:-1;10042:3:64;;9370:681;-1:-1:-1;;;;;;9370:681:64:o;10056:845::-;10285:2;10337:21;;;10407:13;;10310:18;;;10429:22;;;10256:4;;10285:2;10470;;10488:18;;;;10529:15;;;10256:4;10572:303;10586:6;10583:1;10580:13;10572:303;;;10645:13;;10687:9;;10698:42;10683:58;10671:71;;10782:11;;10776:18;10762:12;;;10755:40;10815:12;;;;10850:15;;;;10608:1;10601:9;10572:303;;;-1:-1:-1;10892:3:64;;10056:845;-1:-1:-1;;;;;;;10056:845:64:o;12302:217::-;12449:2;12438:9;12431:21;12412:4;12469:44;12509:2;12498:9;12494:18;12486:6;12469:44;:::i;17509:128::-;17549:3;17580:1;17576:6;17573:1;17570:13;17567:39;;;17586:18;;:::i;:::-;-1:-1:-1;17622:9:64;;17509:128::o;17642:274::-;17682:1;17708;17698:189;;17743:77;17740:1;17733:88;17844:4;17841:1;17834:15;17872:4;17869:1;17862:15;17698:189;-1:-1:-1;17901:9:64;;17642:274::o;17921:228::-;17961:7;18087:1;18019:66;18015:74;18012:1;18009:81;18004:1;17997:9;17990:17;17986:105;17983:131;;;18094:18;;:::i;:::-;-1:-1:-1;18134:9:64;;17921:228::o;18154:125::-;18194:4;18222:1;18219;18216:8;18213:34;;;18227:18;;:::i;:::-;-1:-1:-1;18264:9:64;;18154:125::o;18284:258::-;18356:1;18366:113;18380:6;18377:1;18374:13;18366:113;;;18456:11;;;18450:18;18437:11;;;18430:39;18402:2;18395:10;18366:113;;;18497:6;18494:1;18491:13;18488:48;;;-1:-1:-1;;18532:1:64;18514:16;;18507:27;18284:258::o;18547:195::-;18586:3;18617:66;18610:5;18607:77;18604:103;;;18687:18;;:::i;:::-;-1:-1:-1;18734:1:64;18723:13;;18547:195::o;18747:184::-;18799:77;18796:1;18789:88;18896:4;18893:1;18886:15;18920:4;18917:1;18910:15;18936:184;18988:77;18985:1;18978:88;19085:4;19082:1;19075:15;19109:4;19106:1;19099:15;19125:184;19177:77;19174:1;19167:88;19274:4;19271:1;19264:15;19298:4;19295:1;19288:15;19314:154;19400:42;19393:5;19389:54;19382:5;19379:65;19369:93;;19458:1;19455;19448:12;19369:93;19314:154;:::o;19473:118::-;19559:5;19552:13;19545:21;19538:5;19535:32;19525:60;;19581:1;19578;19571:12"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "3111400",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "A()": "infinite",
                "DOMAIN_SEPARATOR()": "infinite",
                "PERMIT_TYPEHASH()": "252",
                "allowance(address,address)": "infinite",
                "approve(address,uint256)": "24583",
                "balanceOf(address)": "2580",
                "barFee()": "2395",
                "barFeeTo()": "infinite",
                "bento()": "infinite",
                "burn(bytes)": "infinite",
                "burnSingle(bytes)": "infinite",
                "decimals()": "294",
                "flashSwap(bytes)": "infinite",
                "getAmountIn(bytes)": "467",
                "getAmountOut(bytes)": "infinite",
                "getAssets()": "infinite",
                "getReserves()": "infinite",
                "level2()": "2410",
                "masterDeployer()": "infinite",
                "mint(bytes)": "infinite",
                "name()": "infinite",
                "nonces(address)": "2558",
                "operator()": "2424",
                "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "infinite",
                "poolIdentifier()": "273",
                "swap(bytes)": "infinite",
                "swapFee()": "infinite",
                "symbol()": "infinite",
                "token0()": "infinite",
                "token0PrecisionMultiplier()": "infinite",
                "token1()": "infinite",
                "token1PrecisionMultiplier()": "infinite",
                "totalSupply()": "2352",
                "transfer(address,uint256)": "infinite",
                "transferFrom(address,address,uint256)": "infinite",
                "updateBarFee()": "infinite",
                "whiteListManager()": "2425"
              },
              "internal": {
                "__balance(address)": "infinite",
                "_balance()": "infinite",
                "_computeLiquidity(uint256,uint256)": "infinite",
                "_computeLiquidityFromAdjustedBalances(uint256,uint256)": "infinite",
                "_getAmountOut(uint256,uint256,uint256,bool)": "infinite",
                "_getReserves()": "infinite",
                "_getY(uint256,uint256)": "infinite",
                "_getYD(uint256,uint256)": "infinite",
                "_handleFee(address,uint256)": "infinite",
                "_nonOptimalMintFee(uint256,uint256,uint256,uint256)": "infinite",
                "_processSwap(address,address,uint256,bytes memory,bool)": "infinite",
                "_toAmount(address,uint256)": "infinite",
                "_toShare(address,uint256)": "infinite",
                "_transfer(address,uint256,address,bool)": "infinite",
                "_updateReserves()": "infinite"
              }
            },
            "methodIdentifiers": {
              "A()": "f446c1d0",
              "DOMAIN_SEPARATOR()": "3644e515",
              "PERMIT_TYPEHASH()": "30adf81f",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "barFee()": "c14ad802",
              "barFeeTo()": "0c0a0cd2",
              "bento()": "4da31827",
              "burn(bytes)": "2a07b6c7",
              "burnSingle(bytes)": "af8c09bf",
              "decimals()": "313ce567",
              "flashSwap(bytes)": "053da1c8",
              "getAmountIn(bytes)": "499a3c50",
              "getAmountOut(bytes)": "a8f1f52e",
              "getAssets()": "67e4ac2c",
              "getReserves()": "0902f1ac",
              "level2()": "bc3377d9",
              "masterDeployer()": "cf58879a",
              "mint(bytes)": "7ba0e2e7",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "operator()": "570ca735",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "poolIdentifier()": "a69840a8",
              "swap(bytes)": "627dd56a",
              "swapFee()": "54cf2aeb",
              "symbol()": "95d89b41",
              "token0()": "0dfe1681",
              "token0PrecisionMultiplier()": "baa8c7cb",
              "token1()": "d21220a7",
              "token1PrecisionMultiplier()": "4e25dc47",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "updateBarFee()": "92bc3219",
              "whiteListManager()": "25a93264"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_deployData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_masterDeployer\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reserve0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"reserve1\",\"type\":\"uint256\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"A\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"barFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"barFeeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bento\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burn\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPool.TokenAmount[]\",\"name\":\"withdrawnAmounts\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burnSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"finalAmountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAssets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_reserve0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_reserve1\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"level2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterDeployer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolIdentifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0PrecisionMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1PrecisionMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateBarFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"whiteListManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The reserves are stored as bento shares. However, the stableswap invariant is applied to the underlying amounts.      The API uses the underlying amounts.\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"params\":{\"amount\":\"The maximum collective `amount` that `spender` can pull.\",\"spender\":\"Address of the party that can pull tokens from `msg.sender`'s account.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"burn(bytes)\":{\"details\":\"Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\"},\"burnSingle(bytes)\":{\"details\":\"Burns LP tokens sent to this contract and swaps one of the output tokens for another - i.e., the user gets a single token out by burning LP tokens.\"},\"flashSwap(bytes)\":{\"details\":\"Swaps one token for another with payload. The router must support swap callbacks and ensure there isn't too much slippage.\"},\"getAmountOut(bytes)\":{\"details\":\"The pool does not need to include a trade simulator directly in itself - it can use a library.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"finalAmountOut\":\"The amount of output tokens that will be sent to the user if the trade is executed.\"}},\"getAssets()\":{\"returns\":{\"assets\":\"An array of tokens supported by the pool.\"}},\"mint(bytes)\":{\"details\":\"Mints LP tokens - should be called via the router after transferring `bento` tokens. The router must ensure that sufficient LP tokens are minted by using the return value.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"amount\":\"The number of tokens that are approved (2^256-1 means infinite).\",\"deadline\":\"The time at which to expire the signature.\",\"owner\":\"The address to approve from.\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"spender\":\"The address to be approved.\",\"v\":\"The recovery byte of the signature.\"}},\"swap(bytes)\":{\"details\":\"Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\"},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The token `amount` to move.\",\"recipient\":\"The address to move tokens to.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The token `amount` to move.\",\"recipient\":\"The address to move tokens to.\",\"sender\":\"Address to pull tokens `from`.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"updateBarFee()\":{\"details\":\"Updates `barFee` for Trident protocol.\"}},\"stateVariables\":{\"MAX_LOOP_LIMIT\":{\"details\":\"Constant value used as max loop limit.\"},\"poolIdentifier\":{\"return\":\"A unique identifier for the pool type.\",\"returns\":{\"_0\":\"A unique identifier for the pool type.\"}},\"token0PrecisionMultiplier\":{\"details\":\"Multipliers for each pooled token's precision to get to POOL_PRECISION_DECIMALS. For example, TBTC has 18 decimals, so the multiplier should be 1. WBTC has 8, so the multiplier should be 10 ** 18 / 10 ** 8 => 10 ** 10.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"The EIP-712 typehash for this contract's domain.\"},\"PERMIT_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for this contract's {permit} struct.\"},\"allowance(address,address)\":{\"notice\":\"owner -> spender -> allowance mapping.\"},\"approve(address,uint256)\":{\"notice\":\"Approves `amount` from `msg.sender` to be spent by `spender`.\"},\"balanceOf(address)\":{\"notice\":\"owner -> balance mapping.\"},\"getAmountOut(bytes)\":{\"notice\":\"Simulates a trade and returns the expected output.\"},\"nonces(address)\":{\"notice\":\"owner -> nonce mapping used in {permit}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Triggers an approval from `owner` to `spender`.\"},\"transfer(address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `msg.sender` to `recipient`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\"}},\"notice\":\"Trident exchange franchised pool template with hybrid like-kind formula for swapping between an ERC-20 token pair.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/franchised/FranchisedHybridPool.sol\":\"FranchisedHybridPool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentCallee.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool callback interface.\\ninterface ITridentCallee {\\n    function tridentSwapCallback(bytes calldata data) external;\\n\\n    function tridentMintCallback(bytes calldata data) external;\\n}\\n\",\"keccak256\":\"0x256e838362a3064201b37b3b7c08bc1421b173a6fea633176123f0b827b868c9\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IWhiteListManager.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident franchised pool whitelist manager interface.\\ninterface IWhiteListManager {\\n    function whitelistedAccounts(address operator, address account) external returns (bool);\\n}\\n\",\"keccak256\":\"0x8de295afb9c76132947e2fd4f120bc437ee2c6f41fda1db2bcf6074b977d6df8\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/MathUtils.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice A library that contains functions for calculating differences between two uint256.\\n/// @author Adapted from https://github.com/saddle-finance/saddle-contract/blob/master/contracts/MathUtils.sol.\\nlibrary MathUtils {\\n    /// @notice Compares a and b and returns 'true' if the difference between a and b\\n    /// is less than 1 or equal to each other.\\n    /// @param a uint256 to compare with.\\n    /// @param b uint256 to compare with.\\n    function within1(uint256 a, uint256 b) internal pure returns (bool) {\\n        unchecked {\\n            if (a > b) {\\n                return a - b <= 1;\\n            }\\n            return b - a <= 1;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x7f02d5a108fe7743d0aa4274a0234f81ffe25ba702ce6ba46d94db27cde97d52\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/franchised/FranchisedHybridPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../../interfaces/IBentoBoxMinimal.sol\\\";\\nimport \\\"../../interfaces/IMasterDeployer.sol\\\";\\nimport \\\"../../interfaces/IPool.sol\\\";\\nimport \\\"../../interfaces/ITridentCallee.sol\\\";\\nimport \\\"../../libraries/MathUtils.sol\\\";\\nimport \\\"./TridentFranchisedERC20.sol\\\";\\n\\n/// @notice Trident exchange franchised pool template with hybrid like-kind formula for swapping between an ERC-20 token pair.\\n/// @dev The reserves are stored as bento shares. However, the stableswap invariant is applied to the underlying amounts.\\n///      The API uses the underlying amounts.\\ncontract FranchisedHybridPool is IPool, TridentFranchisedERC20 {\\n    using MathUtils for uint256;\\n\\n    event Mint(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\\n    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\\n    event Sync(uint256 reserve0, uint256 reserve1);\\n\\n    uint256 internal constant MINIMUM_LIQUIDITY = 10**3;\\n    uint8 internal constant PRECISION = 112;\\n\\n    /// @dev Constant value used as max loop limit.\\n    uint256 internal constant MAX_LOOP_LIMIT = 256;\\n    uint256 internal constant MAX_FEE = 10000; // @dev 100%.\\n    uint256 public immutable swapFee;\\n\\n    address public immutable barFeeTo;\\n    address public immutable bento;\\n    address public immutable masterDeployer;\\n    address public immutable token0;\\n    address public immutable token1;\\n    uint256 public immutable A;\\n    uint256 internal immutable N_A; // @dev 2 * A.\\n    uint256 internal constant A_PRECISION = 100;\\n\\n    /// @dev Multipliers for each pooled token's precision to get to POOL_PRECISION_DECIMALS.\\n    /// For example, TBTC has 18 decimals, so the multiplier should be 1. WBTC\\n    /// has 8, so the multiplier should be 10 ** 18 / 10 ** 8 => 10 ** 10.\\n    uint256 public immutable token0PrecisionMultiplier;\\n    uint256 public immutable token1PrecisionMultiplier;\\n\\n    uint256 public barFee;\\n\\n    uint128 internal reserve0;\\n    uint128 internal reserve1;\\n\\n    bytes32 public constant override poolIdentifier = \\\"Trident:FranchisedHybrid\\\";\\n\\n    uint256 internal unlocked;\\n    modifier lock() {\\n        require(unlocked == 1, \\\"LOCKED\\\");\\n        unlocked = 2;\\n        _;\\n        unlocked = 1;\\n    }\\n\\n    constructor(bytes memory _deployData, address _masterDeployer) {\\n        (address _token0, address _token1, uint256 _swapFee, uint256 a, address _whiteListManager, address _operator, bool _level2) = abi\\n            .decode(_deployData, (address, address, uint256, uint256, address, address, bool));\\n\\n        // @dev Factory ensures that the tokens are sorted.\\n        require(_token0 != address(0), \\\"ZERO_ADDRESS\\\");\\n        require(_token0 != _token1, \\\"IDENTICAL_ADDRESSES\\\");\\n        require(_swapFee <= MAX_FEE, \\\"INVALID_SWAP_FEE\\\");\\n        require(a != 0, \\\"ZERO_A\\\");\\n\\n        TridentFranchisedERC20.initialize(_whiteListManager, _operator, _level2);\\n\\n        (, bytes memory _barFee) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFee.selector));\\n        (, bytes memory _barFeeTo) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFeeTo.selector));\\n        (, bytes memory _bento) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.bento.selector));\\n        (, bytes memory _decimals0) = _token0.staticcall(abi.encodeWithSelector(0x313ce567)); // @dev 'decimals()'.\\n        (, bytes memory _decimals1) = _token1.staticcall(abi.encodeWithSelector(0x313ce567)); // @dev 'decimals()'.\\n\\n        token0 = _token0;\\n        token1 = _token1;\\n        swapFee = _swapFee;\\n        barFee = abi.decode(_barFee, (uint256));\\n        barFeeTo = abi.decode(_barFeeTo, (address));\\n        bento = abi.decode(_bento, (address));\\n        masterDeployer = _masterDeployer;\\n        A = a;\\n        N_A = 2 * a;\\n        token0PrecisionMultiplier = 10**(decimals - abi.decode(_decimals0, (uint8)));\\n        token1PrecisionMultiplier = 10**(decimals - abi.decode(_decimals1, (uint8)));\\n        unlocked = 1;\\n    }\\n\\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\\n    /// The router must ensure that sufficient LP tokens are minted by using the return value.\\n    function mint(bytes calldata data) public override lock returns (uint256 liquidity) {\\n        address recipient = abi.decode(data, (address));\\n        _checkWhiteList(recipient);\\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 _totalSupply = totalSupply;\\n\\n        uint256 amount0 = balance0 - _reserve0;\\n        uint256 amount1 = balance1 - _reserve1;\\n        (uint256 fee0, uint256 fee1) = _nonOptimalMintFee(amount0, amount1, _reserve0, _reserve1);\\n        uint256 newLiq = _computeLiquidity(balance0 - fee0, balance1 - fee1);\\n\\n        if (_totalSupply == 0) {\\n            liquidity = newLiq - MINIMUM_LIQUIDITY;\\n            _mint(address(0), MINIMUM_LIQUIDITY);\\n        } else {\\n            uint256 oldLiq = _computeLiquidity(_reserve0, _reserve1);\\n            liquidity = ((newLiq - oldLiq) * _totalSupply) / oldLiq;\\n        }\\n        require(liquidity != 0, \\\"INSUFFICIENT_LIQUIDITY_MINTED\\\");\\n        _mint(recipient, liquidity);\\n        _updateReserves();\\n        uint256 liquidityForEvent = liquidity;\\n        emit Mint(msg.sender, amount0, amount1, recipient, liquidityForEvent);\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\\n    function burn(bytes calldata data) public override lock returns (IPool.TokenAmount[] memory withdrawnAmounts) {\\n        (address recipient, bool unwrapBento) = abi.decode(data, (address, bool));\\n        _checkWhiteList(recipient);\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 _totalSupply = totalSupply;\\n        uint256 liquidity = balanceOf[address(this)];\\n\\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\\n\\n        _burn(address(this), liquidity);\\n        _transfer(token0, amount0, recipient, unwrapBento);\\n        _transfer(token1, amount1, recipient, unwrapBento);\\n\\n        balance0 -= _toShare(token0, amount0);\\n        balance1 -= _toShare(token1, amount1);\\n\\n        _updateReserves();\\n\\n        withdrawnAmounts = new TokenAmount[](2);\\n        withdrawnAmounts[0] = TokenAmount({token: token0, amount: amount0});\\n        withdrawnAmounts[1] = TokenAmount({token: token1, amount: amount1});\\n\\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\\n    /// - i.e., the user gets a single token out by burning LP tokens.\\n    function burnSingle(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenOut, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\\n        _checkWhiteList(recipient);\\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 _totalSupply = totalSupply;\\n        uint256 liquidity = balanceOf[address(this)];\\n\\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\\n\\n        _burn(address(this), liquidity);\\n\\n        if (tokenOut == token1) {\\n            // @dev Swap `token0` for `token1`.\\n            // @dev Calculate `amountOut` as if the user first withdrew balanced liquidity and then swapped `token0` for `token1`.\\n            uint256 fee = _handleFee(token0, amount0);\\n            amount1 += _getAmountOut(amount0 - fee, _reserve0 - amount0, _reserve1 - amount1, true);\\n            _transfer(token1, amount1, recipient, unwrapBento);\\n            balance0 -= _toShare(token0, amount0);\\n            amountOut = amount1;\\n            amount0 = 0;\\n        } else {\\n            // @dev Swap `token1` for `token0`.\\n            require(tokenOut == token0, \\\"INVALID_OUTPUT_TOKEN\\\");\\n            uint256 fee = _handleFee(token1, amount1);\\n            amount0 += _getAmountOut(amount1 - fee, _reserve0 - amount0, _reserve1 - amount1, false);\\n            _transfer(token0, amount0, recipient, unwrapBento);\\n            balance1 -= _toShare(token1, amount1);\\n            amountOut = amount0;\\n            amount1 = 0;\\n        }\\n        _updateReserves();\\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\\n    function swap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\\n        if (level2) _checkWhiteList(recipient);\\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 amountIn;\\n        address tokenOut;\\n\\n        if (tokenIn == token0) {\\n            tokenOut = token1;\\n            amountIn = balance0 - _reserve0;\\n            uint256 fee = _handleFee(tokenIn, amountIn);\\n            amountOut = _getAmountOut(amountIn - fee, _reserve0, _reserve1, true);\\n        } else {\\n            require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n            tokenOut = token0;\\n            amountIn = balance1 - _reserve1;\\n            uint256 fee = _handleFee(tokenIn, amountIn);\\n            amountOut = _getAmountOut(amountIn - fee, _reserve0, _reserve1, false);\\n        }\\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n        _updateReserves();\\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\\n    }\\n\\n    /// @dev Swaps one token for another with payload. The router must support swap callbacks and ensure there isn't too much slippage.\\n    function flashSwap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address recipient, bool unwrapBento, uint256 amountIn, bytes memory context) = abi.decode(\\n            data,\\n            (address, address, bool, uint256, bytes)\\n        );\\n        if (level2) _checkWhiteList(recipient);\\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\\n        address tokenOut;\\n        uint256 fee;\\n\\n        if (tokenIn == token0) {\\n            tokenOut = token1;\\n            amountIn = _toAmount(token0, amountIn);\\n            fee = (amountIn * swapFee) / MAX_FEE;\\n            amountOut = _getAmountOut(amountIn - fee, _reserve0, _reserve1, true);\\n            _processSwap(token1, recipient, amountOut, context, unwrapBento);\\n            uint256 balance0 = _toAmount(token0, __balance(token0));\\n            require(balance0 - _reserve0 >= amountIn, \\\"INSUFFICIENT_AMOUNT_IN\\\");\\n        } else {\\n            require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n            tokenOut = token0;\\n            amountIn = _toAmount(token1, amountIn);\\n            fee = (amountIn * swapFee) / MAX_FEE;\\n            amountOut = _getAmountOut(amountIn - fee, _reserve0, _reserve1, false);\\n            _processSwap(token0, recipient, amountOut, context, unwrapBento);\\n            uint256 balance1 = _toAmount(token1, __balance(token1));\\n            require(balance1 - _reserve1 >= amountIn, \\\"INSUFFICIENT_AMOUNT_IN\\\");\\n        }\\n        _transfer(tokenIn, fee, barFeeTo, false);\\n        _updateReserves();\\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\\n    }\\n\\n    /// @dev Updates `barFee` for Trident protocol.\\n    function updateBarFee() public {\\n        (, bytes memory _barFee) = masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFee.selector));\\n        barFee = abi.decode(_barFee, (uint256));\\n    }\\n\\n    function _processSwap(\\n        address tokenOut,\\n        address to,\\n        uint256 amountOut,\\n        bytes memory data,\\n        bool unwrapBento\\n    ) internal {\\n        _transfer(tokenOut, amountOut, to, unwrapBento);\\n        if (data.length != 0) ITridentCallee(msg.sender).tridentSwapCallback(data);\\n    }\\n\\n    function _getReserves() internal view returns (uint256 _reserve0, uint256 _reserve1) {\\n        (_reserve0, _reserve1) = (reserve0, reserve1);\\n        _reserve0 = _toAmount(token0, _reserve0);\\n        _reserve1 = _toAmount(token1, _reserve1);\\n    }\\n\\n    function _updateReserves() internal {\\n        (uint256 _reserve0, uint256 _reserve1) = _balance();\\n        require(_reserve0 < type(uint128).max && _reserve1 < type(uint128).max, \\\"OVERFLOW\\\");\\n        reserve0 = uint128(_reserve0);\\n        reserve1 = uint128(_reserve1);\\n        emit Sync(_reserve0, _reserve1);\\n    }\\n\\n    function _balance() internal view returns (uint256 balance0, uint256 balance1) {\\n        balance0 = _toAmount(token0, __balance(token0));\\n        balance1 = _toAmount(token1, __balance(token1));\\n    }\\n\\n    function __balance(address token) internal view returns (uint256 balance) {\\n        // @dev balanceOf(address,address).\\n        (, bytes memory ___balance) = bento.staticcall(abi.encodeWithSelector(IBentoBoxMinimal.balanceOf.selector, token, address(this)));\\n        balance = abi.decode(___balance, (uint256));\\n    }\\n\\n    function _toAmount(address token, uint256 input) internal view returns (uint256 output) {\\n        // @dev toAmount(address,uint256,bool).\\n        (, bytes memory _output) = bento.staticcall(abi.encodeWithSelector(IBentoBoxMinimal.toAmount.selector, token, input, false));\\n        output = abi.decode(_output, (uint256));\\n    }\\n\\n    function _toShare(address token, uint256 input) internal view returns (uint256 output) {\\n        // @dev toShare(address,uint256,bool).\\n        (, bytes memory _output) = bento.staticcall(abi.encodeWithSelector(IBentoBoxMinimal.toShare.selector, token, input, false));\\n        output = abi.decode(_output, (uint256));\\n    }\\n\\n    function _getAmountOut(\\n        uint256 amountIn,\\n        uint256 _reserve0,\\n        uint256 _reserve1,\\n        bool token0In\\n    ) internal view returns (uint256 dy) {\\n        uint256 xpIn;\\n        uint256 xpOut;\\n\\n        if (token0In) {\\n            xpIn = _reserve0 * token0PrecisionMultiplier;\\n            xpOut = _reserve1 * token1PrecisionMultiplier;\\n            amountIn *= token0PrecisionMultiplier;\\n        } else {\\n            xpIn = _reserve1 * token1PrecisionMultiplier;\\n            xpOut = _reserve0 * token0PrecisionMultiplier;\\n            amountIn *= token1PrecisionMultiplier;\\n        }\\n        uint256 d = _computeLiquidityFromAdjustedBalances(xpIn, xpOut);\\n        uint256 x = xpIn + amountIn;\\n        uint256 y = _getY(x, d);\\n        dy = xpOut - y - 1;\\n        dy /= (token0In ? token1PrecisionMultiplier : token0PrecisionMultiplier);\\n    }\\n\\n    function _transfer(\\n        address token,\\n        uint256 amount,\\n        address to,\\n        bool unwrapBento\\n    ) internal {\\n        if (unwrapBento) {\\n            // @dev withdraw(address,address,address,uint256,uint256).\\n            (bool success, ) = bento.call(abi.encodeWithSelector(IBentoBoxMinimal.withdraw.selector, token, address(this), to, amount, 0));\\n            require(success, \\\"WITHDRAW_FAILED\\\");\\n        } else {\\n            // @dev transfer(address,address,address,uint256).\\n            (bool success, ) = bento.call(\\n                abi.encodeWithSelector(IBentoBoxMinimal.transfer.selector, token, address(this), to, _toShare(token, amount))\\n            );\\n            require(success, \\\"TRANSFER_FAILED\\\");\\n        }\\n    }\\n\\n    /// @notice Get D, the StableSwap invariant, based on a set of balances and a particular A.\\n    /// See the StableSwap paper for details.\\n    /// @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L319.\\n    /// @return liquidity The invariant, at the precision of the pool.\\n    function _computeLiquidity(uint256 _reserve0, uint256 _reserve1) internal view returns (uint256 liquidity) {\\n        uint256 xp0 = _reserve0 * token0PrecisionMultiplier;\\n        uint256 xp1 = _reserve1 * token1PrecisionMultiplier;\\n        liquidity = _computeLiquidityFromAdjustedBalances(xp0, xp1);\\n    }\\n\\n    function _computeLiquidityFromAdjustedBalances(uint256 xp0, uint256 xp1) internal view returns (uint256 computed) {\\n        uint256 s = xp0 + xp1;\\n\\n        if (s == 0) {\\n            computed = 0;\\n        }\\n        uint256 prevD;\\n        uint256 D = s;\\n        for (uint256 i = 0; i < MAX_LOOP_LIMIT; i++) {\\n            uint256 dP = (((D * D) / xp0) * D) / xp1 / 4;\\n            prevD = D;\\n            D = (((N_A * s) / A_PRECISION + 2 * dP) * D) / ((N_A / A_PRECISION - 1) * D + 3 * dP);\\n            if (D.within1(prevD)) {\\n                break;\\n            }\\n        }\\n        computed = D;\\n    }\\n\\n    /// @notice Calculate the new balances of the tokens given the indexes of the token\\n    /// that is swapped from (FROM) and the token that is swapped to (TO).\\n    /// This function is used as a helper function to calculate how much TO token\\n    /// the user should receive on swap.\\n    /// @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L432.\\n    /// @param x The new total amount of FROM token.\\n    /// @return y The amount of TO token that should remain in the pool.\\n    function _getY(uint256 x, uint256 D) internal view returns (uint256 y) {\\n        uint256 c = (D * D) / (x * 2);\\n        c = (c * D) / ((N_A * 2) / A_PRECISION);\\n        uint256 b = x + ((D * A_PRECISION) / N_A);\\n        uint256 yPrev;\\n        y = D;\\n        // @dev Iterative approximation.\\n        for (uint256 i = 0; i < MAX_LOOP_LIMIT; i++) {\\n            yPrev = y;\\n            y = (y * y + c) / (y * 2 + b - D);\\n            if (y.within1(yPrev)) {\\n                break;\\n            }\\n        }\\n    }\\n\\n    /// @notice Calculate the price of a token in the pool given\\n    /// precision-adjusted balances and a particular D and precision-adjusted\\n    /// array of balances.\\n    /// @dev This is accomplished via solving the quadratic equation iteratively.\\n    /// See the StableSwap paper and Curve.fi implementation for further details.\\n    /// x_1**2 + x1 * (sum' - (A*n**n - 1) * D / (A * n**n)) = D ** (n + 1) / (n ** (2 * n) * prod' * A)\\n    /// x_1**2 + b*x_1 = c\\n    /// x_1 = (x_1**2 + c) / (2*x_1 + b)\\n    /// @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L276.\\n    /// @return y The price of the token, in the same precision as in xp.\\n    function _getYD(\\n        uint256 s, // @dev xpOut.\\n        uint256 d\\n    ) internal view returns (uint256 y) {\\n        uint256 c = (d * d) / (s * 2);\\n        c = (c * d) / ((N_A * 2) / A_PRECISION);\\n\\n        uint256 b = s + ((d * A_PRECISION) / N_A);\\n        uint256 yPrev;\\n        y = d;\\n\\n        for (uint256 i = 0; i < MAX_LOOP_LIMIT; i++) {\\n            yPrev = y;\\n            y = (y * y + c) / (y * 2 + b - d);\\n            if (y.within1(yPrev)) {\\n                break;\\n            }\\n        }\\n    }\\n\\n    function _handleFee(address tokenIn, uint256 amountIn) internal returns (uint256 fee) {\\n        fee = (amountIn * swapFee) / MAX_FEE;\\n        uint256 _barFee = (fee * barFee) / MAX_FEE;\\n        _transfer(tokenIn, _barFee, barFeeTo, false);\\n    }\\n\\n    /// @dev This fee is charged to cover for `swapFee` when users add unbalanced liquidity.\\n    function _nonOptimalMintFee(\\n        uint256 _amount0,\\n        uint256 _amount1,\\n        uint256 _reserve0,\\n        uint256 _reserve1\\n    ) internal view returns (uint256 token0Fee, uint256 token1Fee) {\\n        if (_reserve0 == 0 || _reserve1 == 0) return (0, 0);\\n        uint256 amount1Optimal = (_amount0 * _reserve1) / _reserve0;\\n\\n        if (amount1Optimal <= _amount1) {\\n            token1Fee = (swapFee * (_amount1 - amount1Optimal)) / (2 * MAX_FEE);\\n        } else {\\n            uint256 amount0Optimal = (_amount1 * _reserve0) / _reserve1;\\n            token0Fee = (swapFee * (_amount0 - amount0Optimal)) / (2 * MAX_FEE);\\n        }\\n    }\\n\\n    function getAssets() public view override returns (address[] memory assets) {\\n        assets = new address[](2);\\n        assets[0] = token0;\\n        assets[1] = token1;\\n    }\\n\\n    function getAmountOut(bytes calldata data) public view override returns (uint256 finalAmountOut) {\\n        (address tokenIn, uint256 amountIn) = abi.decode(data, (address, uint256));\\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\\n        amountIn = _toAmount(tokenIn, amountIn);\\n        amountIn -= (amountIn * swapFee) / MAX_FEE;\\n\\n        if (tokenIn == token0) {\\n            finalAmountOut = _getAmountOut(amountIn, _reserve0, _reserve1, true);\\n        } else {\\n            require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n            finalAmountOut = _getAmountOut(amountIn, _reserve0, _reserve1, false);\\n        }\\n    }\\n\\n    function getAmountIn(bytes calldata) public pure override returns (uint256) {\\n        revert();\\n    }\\n\\n    function getReserves() public view returns (uint256 _reserve0, uint256 _reserve1) {\\n        (_reserve0, _reserve1) = _getReserves();\\n    }\\n}\\n\",\"keccak256\":\"0x67f0d767a6d89f9d9a79d572860d1025d16d9087365118e93b1b337401de3137\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/franchised/TridentFranchisedERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../../interfaces/IWhiteListManager.sol\\\";\\n\\n/// @notice Trident franchised pool ERC-20 with EIP-2612 extension.\\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol,\\n/// License-Identifier: AGPL-3.0-only.\\nabstract contract TridentFranchisedERC20 {\\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\\n    event Transfer(address indexed sender, address indexed recipient, uint256 amount);\\n\\n    string public constant name = \\\"Sushi Franchised LP Token\\\";\\n    string public constant symbol = \\\"SLP\\\";\\n    uint8 public constant decimals = 18;\\n\\n    address public whiteListManager;\\n    address public operator;\\n    bool public level2;\\n\\n    uint256 public totalSupply;\\n    /// @notice owner -> balance mapping.\\n    mapping(address => uint256) public balanceOf;\\n    /// @notice owner -> spender -> allowance mapping.\\n    mapping(address => mapping(address => uint256)) public allowance;\\n\\n    /// @notice The EIP-712 typehash for this contract's {permit} struct.\\n    bytes32 public constant PERMIT_TYPEHASH =\\n        keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n    /// @notice The EIP-712 typehash for this contract's domain.\\n    bytes32 public immutable DOMAIN_SEPARATOR;\\n    /// @notice owner -> nonce mapping used in {permit}.\\n    mapping(address => uint256) public nonces;\\n\\n    constructor() {\\n        DOMAIN_SEPARATOR = keccak256(\\n            abi.encode(\\n                keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"),\\n                keccak256(bytes(name)),\\n                keccak256(bytes(\\\"1\\\")),\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    /// @dev Initializes whitelist settings from pool.\\n    function initialize(\\n        address _whiteListManager,\\n        address _operator,\\n        bool _level2\\n    ) internal {\\n        whiteListManager = _whiteListManager;\\n        operator = _operator;\\n        if (_level2) level2 = true;\\n    }\\n\\n    /// @notice Approves `amount` from `msg.sender` to be spent by `spender`.\\n    /// @param spender Address of the party that can pull tokens from `msg.sender`'s account.\\n    /// @param amount The maximum collective `amount` that `spender` can pull.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function approve(address spender, uint256 amount) external returns (bool) {\\n        allowance[msg.sender][spender] = amount;\\n        emit Approval(msg.sender, spender, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `msg.sender` to `recipient`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transfer(address recipient, uint256 amount) external returns (bool) {\\n        if (level2) _checkWhiteList(recipient);\\n        balanceOf[msg.sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(msg.sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\\n    /// @param sender Address to pull tokens `from`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool) {\\n        if (level2) _checkWhiteList(recipient);\\n        if (allowance[sender][msg.sender] != type(uint256).max) {\\n            allowance[sender][msg.sender] -= amount;\\n        }\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Triggers an approval from `owner` to `spender`.\\n    /// @param owner The address to approve from.\\n    /// @param spender The address to be approved.\\n    /// @param amount The number of tokens that are approved (2^256-1 means infinite).\\n    /// @param deadline The time at which to expire the signature.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        require(deadline >= block.timestamp, \\\"PERMIT_DEADLINE_EXPIRED\\\");\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                \\\"\\\\x19\\\\x01\\\",\\n                DOMAIN_SEPARATOR,\\n                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))\\n            )\\n        );\\n        address recoveredAddress = ecrecover(digest, v, r, s);\\n        require(recoveredAddress != address(0) && recoveredAddress == owner, \\\"INVALID_PERMIT_SIGNATURE\\\");\\n        allowance[recoveredAddress][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    function _mint(address recipient, uint256 amount) internal {\\n        totalSupply += amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(address(0), recipient, amount);\\n    }\\n\\n    function _burn(address sender, uint256 amount) internal {\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from underflow - users won't ever\\n        // have a balance larger than `totalSupply`.\\n        unchecked {\\n            totalSupply -= amount;\\n        }\\n        emit Transfer(sender, address(0), amount);\\n    }\\n\\n    /// @dev Checks `whiteListManager` for pool `operator` and given user `account`.\\n    function _checkWhiteList(address account) internal view {\\n        (, bytes memory _whitelisted) = whiteListManager.staticcall(\\n            abi.encodeWithSelector(IWhiteListManager.whitelistedAccounts.selector, operator, account)\\n        );\\n        bool whitelisted = abi.decode(_whitelisted, (bool));\\n        require(whitelisted, \\\"NOT_WHITELISTED\\\");\\n    }\\n}\\n\",\"keccak256\":\"0x2d3db0ed7c3fb40367a4a3fa8fc5ba3dece956fb319b9963cfe5b63ea1ee3b06\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 23226,
                "contract": "contracts/pool/franchised/FranchisedHybridPool.sol:FranchisedHybridPool",
                "label": "whiteListManager",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 23228,
                "contract": "contracts/pool/franchised/FranchisedHybridPool.sol:FranchisedHybridPool",
                "label": "operator",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              },
              {
                "astId": 23230,
                "contract": "contracts/pool/franchised/FranchisedHybridPool.sol:FranchisedHybridPool",
                "label": "level2",
                "offset": 20,
                "slot": "1",
                "type": "t_bool"
              },
              {
                "astId": 23232,
                "contract": "contracts/pool/franchised/FranchisedHybridPool.sol:FranchisedHybridPool",
                "label": "totalSupply",
                "offset": 0,
                "slot": "2",
                "type": "t_uint256"
              },
              {
                "astId": 23237,
                "contract": "contracts/pool/franchised/FranchisedHybridPool.sol:FranchisedHybridPool",
                "label": "balanceOf",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 23244,
                "contract": "contracts/pool/franchised/FranchisedHybridPool.sol:FranchisedHybridPool",
                "label": "allowance",
                "offset": 0,
                "slot": "4",
                "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
              },
              {
                "astId": 23258,
                "contract": "contracts/pool/franchised/FranchisedHybridPool.sol:FranchisedHybridPool",
                "label": "nonces",
                "offset": 0,
                "slot": "5",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 19173,
                "contract": "contracts/pool/franchised/FranchisedHybridPool.sol:FranchisedHybridPool",
                "label": "barFee",
                "offset": 0,
                "slot": "6",
                "type": "t_uint256"
              },
              {
                "astId": 19175,
                "contract": "contracts/pool/franchised/FranchisedHybridPool.sol:FranchisedHybridPool",
                "label": "reserve0",
                "offset": 0,
                "slot": "7",
                "type": "t_uint128"
              },
              {
                "astId": 19177,
                "contract": "contracts/pool/franchised/FranchisedHybridPool.sol:FranchisedHybridPool",
                "label": "reserve1",
                "offset": 16,
                "slot": "7",
                "type": "t_uint128"
              },
              {
                "astId": 19183,
                "contract": "contracts/pool/franchised/FranchisedHybridPool.sol:FranchisedHybridPool",
                "label": "unlocked",
                "offset": 0,
                "slot": "8",
                "type": "t_uint256"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_mapping(t_address,t_mapping(t_address,t_uint256))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_uint256)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_uint128": {
                "encoding": "inplace",
                "label": "uint128",
                "numberOfBytes": "16"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "DOMAIN_SEPARATOR()": {
                "notice": "The EIP-712 typehash for this contract's domain."
              },
              "PERMIT_TYPEHASH()": {
                "notice": "The EIP-712 typehash for this contract's {permit} struct."
              },
              "allowance(address,address)": {
                "notice": "owner -> spender -> allowance mapping."
              },
              "approve(address,uint256)": {
                "notice": "Approves `amount` from `msg.sender` to be spent by `spender`."
              },
              "balanceOf(address)": {
                "notice": "owner -> balance mapping."
              },
              "getAmountOut(bytes)": {
                "notice": "Simulates a trade and returns the expected output."
              },
              "nonces(address)": {
                "notice": "owner -> nonce mapping used in {permit}."
              },
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Triggers an approval from `owner` to `spender`."
              },
              "transfer(address,uint256)": {
                "notice": "Transfers `amount` tokens from `msg.sender` to `recipient`."
              },
              "transferFrom(address,address,uint256)": {
                "notice": "Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`."
              }
            },
            "notice": "Trident exchange franchised pool template with hybrid like-kind formula for swapping between an ERC-20 token pair.",
            "version": 1
          }
        }
      },
      "contracts/pool/franchised/FranchisedHybridPoolFactory.sol": {
        "FranchisedHybridPoolFactory": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "InvalidTokenOrder",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnauthorisedDeployer",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ZeroAddress",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "name": "configAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "pool",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "startIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "name": "getPools",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "pairPools",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "pools",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token0",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "token1",
                  "type": "address"
                }
              ],
              "name": "poolsCount",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "count",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Mudit Gupta.",
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_11730": {
                  "entryPoint": null,
                  "id": 11730,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_21295": {
                  "entryPoint": null,
                  "id": 21295,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 109,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:306:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:290:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value0 := value\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b506040516157e93803806157e983398101604081905261002f9161006d565b806001600160a01b0381166100575760405163d92e233d60e01b815260040160405180910390fd5b60601b6001600160601b0319166080525061009d565b60006020828403121561007f57600080fd5b81516001600160a01b038116811461009657600080fd5b9392505050565b60805160601c6157206100c96000396000818161015a015281816103b0015261056801526157206000f3fe60806040523480156200001157600080fd5b50600436106200007b5760003560e01c806371a25812116200005657806371a25812146200012e578063cf58879a1462000154578063f6ab6d99146200017c57600080fd5b8063169c4cef146200008057806327c3cae114620000c15780635bc93d6c14620000d8575b600080fd5b620000976200009136600462000996565b620001b5565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b62000097620000d236600462000a41565b62000208565b6200011f620000e936600462000958565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526020818152604080832093909416825291909152205490565b604051908152602001620000b8565b620001456200013f366004620009dc565b62000427565b604051620000b8919062000b1a565b620000977f000000000000000000000000000000000000000000000000000000000000000081565b620000976200018d36600462000a27565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60006020528260005260406000206020528160005260406000208181548110620001de57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16925083915050565b600080600080600080600080888060200190518101906200022a9190620008c0565b96509650965096509650965096508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16111562000271579495945b6040805173ffffffffffffffffffffffffffffffffffffffff808a16602083015280891692820192909252606081018790526080810186905281851660a082015290831660c082015281151560e082015261010001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181526002808452606084019092529a506000919081602001602082028036833701905050905087816000815181106200032c576200032c62000c90565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505086816001815181106200037d576200037d62000c90565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091018201528a51908b012060405181908c907f000000000000000000000000000000000000000000000000000000000000000090620003db90620008b2565b620003e892919062000b76565b8190604051809103906000f590508015801562000409573d6000803e3d6000fd5b509950620004198a838362000550565b505050505050505050919050565b60608167ffffffffffffffff81111562000445576200044562000cbf565b6040519080825280602002602001820160405280156200046f578160200160208202803683370190505b50905060005b82811015620005475773ffffffffffffffffffffffffffffffffffffffff808716600090815260208181526040808320938916835292905220620004ba828662000c0a565b81548110620004cd57620004cd62000c90565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168282815181106200050d576200050d62000c90565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152806200053e8162000c25565b91505062000475565b50949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614620005c0576040517f03781a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555b6001835103811015620008ac5782816001018151811062000632576200063262000c90565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1683828151811062000665576200066562000c90565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1610620006bb576040517f3f06bf8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015b8351811015620008a257600080858481518110620006e257620006e262000c90565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008583815181106200073b576200073b62000c90565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409091016000908120805460018101825590825291812090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915584518190869084908110620007ca57620007ca62000c90565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085848151811062000823576200082362000c90565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604090910160009081208054600180820183559183529290912090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915501620006c0565b506001016200060d565b50505050565b6149d68062000d1583390190565b600080600080600080600060e0888a031215620008dc57600080fd5b8751620008e98162000cee565b6020890151909750620008fc8162000cee565b80965050604088015194506060880151935060808801516200091e8162000cee565b60a0890151909350620009318162000cee565b60c089015190925080151581146200094857600080fd5b8091505092959891949750929550565b600080604083850312156200096c57600080fd5b8235620009798162000cee565b915060208301356200098b8162000cee565b809150509250929050565b600080600060608486031215620009ac57600080fd5b8335620009b98162000cee565b92506020840135620009cb8162000cee565b929592945050506040919091013590565b60008060008060808587031215620009f357600080fd5b843562000a008162000cee565b9350602085013562000a128162000cee565b93969395505050506040820135916060013590565b60006020828403121562000a3a57600080fd5b5035919050565b60006020828403121562000a5457600080fd5b813567ffffffffffffffff8082111562000a6d57600080fd5b818401915084601f83011262000a8257600080fd5b81358181111562000a975762000a9762000cbf565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171562000ae05762000ae062000cbf565b8160405282815287602084870101111562000afa57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6020808252825182820181905260009190848201906040850190845b8181101562000b6a57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162000b36565b50909695505050505050565b604081526000835180604084015260005b8181101562000ba6576020818701810151606086840101520162000b87565b8181111562000bb9576000606083860101525b5073ffffffffffffffffffffffffffffffffffffffff93909316602083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b6000821982111562000c205762000c2062000c61565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000c5a5762000c5a62000c61565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811462000d1157600080fd5b5056fe6101e06040523480156200001257600080fd5b50604051620049d6380380620049d68339810160408190526200003591620007ab565b604080518082018252601981527f5375736869204672616e636869736564204c5020546f6b656e000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f49bb029ad7c8a58c6232657178b278e20c3bd1f3b0084072e3a97b185e1aac5f918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c001604051602081830303815290604052805190602001206080818152505060008060008060008060008880602001905181019062000142919062000713565b965096509650965096509650965060006001600160a01b0316876001600160a01b03161415620001a85760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064015b60405180910390fd5b856001600160a01b0316876001600160a01b031614156200020c5760405162461bcd60e51b815260206004820152601360248201527f4944454e544943414c5f4144445245535345530000000000000000000000000060448201526064016200019f565b612710851115620002535760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f535741505f46454560801b60448201526064016200019f565b836200028b5760405162461bcd60e51b81526020600482015260066024820152655a45524f5f4160d01b60448201526064016200019f565b620002a38383836200068a60201b620023931760201c565b60408051600481526024810182526020810180516001600160e01b03166360a56c0160e11b17905290516000916001600160a01b038b1691620002e79190620008b7565b600060405180830381855afa9150503d806000811462000324576040519150601f19603f3d011682016040523d82523d6000602084013e62000329565b606091505b5060408051600481526024810182526020810180516001600160e01b0316630605066960e11b1790529051919350600092506001600160a01b038c1691620003729190620008b7565b600060405180830381855afa9150503d8060008114620003af576040519150601f19603f3d011682016040523d82523d6000602084013e620003b4565b606091505b5060408051600481526024810182526020810180516001600160e01b0316634da3182760e01b1790529051919350600092506001600160a01b038d1691620003fd9190620008b7565b600060405180830381855afa9150503d80600081146200043a576040519150601f19603f3d011682016040523d82523d6000602084013e6200043f565b606091505b5060408051600481526024810182526020810180516001600160e01b031663313ce56760e01b1790529051919350600092506001600160a01b038d1691620004889190620008b7565b600060405180830381855afa9150503d8060008114620004c5576040519150601f19603f3d011682016040523d82523d6000602084013e620004ca565b606091505b5060408051600481526024810182526020810180516001600160e01b031663313ce56760e01b1790529051919350600092506001600160a01b038d1691620005139190620008b7565b600060405180830381855afa9150503d806000811462000550576040519150601f19603f3d011682016040523d82523d6000602084013e62000555565b606091505b506001600160601b031960608f811b8216610120528e901b166101405260a08c905286519092506200059291508601602090810190870162000878565b6006558351620005ac9085016020908101908601620006ec565b60601b6001600160601b03191660c0528251620005d39060209085018101908501620006ec565b6001600160601b0319606091821b811660e052908e901b166101005261016089905262000602896002620009df565b6101805281516200061d908301602090810190840162000892565b6200062a90601262000a01565b6200063790600a6200091e565b6101a052805162000652908201602090810190830162000892565b6200065f90601262000a01565b6200066c90600a6200091e565b6101c052505060016008555062000a9f9a5050505050505050505050565b600080546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790558015620006d5576001805460ff60a01b1916600160a01b1790555b505050565b8051620006e78162000a86565b919050565b600060208284031215620006ff57600080fd5b81516200070c8162000a86565b9392505050565b600080600080600080600060e0888a0312156200072f57600080fd5b87516200073c8162000a86565b60208901519097506200074f8162000a86565b8096505060408801519450606088015193506080880151620007718162000a86565b60a0890151909350620007848162000a86565b60c089015190925080151581146200079b57600080fd5b8091505092959891949750929550565b60008060408385031215620007bf57600080fd5b82516001600160401b0380821115620007d757600080fd5b818501915085601f830112620007ec57600080fd5b81518181111562000801576200080162000a70565b604051601f8201601f19908116603f011681019083821181831017156200082c576200082c62000a70565b816040528281528860208487010111156200084657600080fd5b6200085983602083016020880162000a27565b80965050505050506200086f60208401620006da565b90509250929050565b6000602082840312156200088b57600080fd5b5051919050565b600060208284031215620008a557600080fd5b815160ff811681146200070c57600080fd5b60008251620008cb81846020870162000a27565b9190910192915050565b600181815b8085111562000916578160001904821115620008fa57620008fa62000a5a565b808516156200090857918102915b93841c9390800290620008da565b509250929050565b60006200070c60ff8416836000826200093a57506001620009d9565b816200094957506000620009d9565b81600181146200096257600281146200096d576200098d565b6001915050620009d9565b60ff84111562000981576200098162000a5a565b50506001821b620009d9565b5060208310610133831016604e8410600b8410161715620009b2575081810a620009d9565b620009be8383620008d5565b8060001904821115620009d557620009d562000a5a565b0290505b92915050565b6000816000190483118215151615620009fc57620009fc62000a5a565b500290565b600060ff821660ff84168082101562000a1e5762000a1e62000a5a565b90039392505050565b60005b8381101562000a4457818101518382015260200162000a2a565b8381111562000a54576000848401525b50505050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811462000a9c57600080fd5b50565b60805160a05160c05160601c60e05160601c6101005160601c6101205160601c6101405160601c61016051610180516101a0516101c051613cc562000d11600039600081816104a1015281816127bd0152818161281a015281816128720152818161290901526132cd01526000818161063001528181612791015281816127e901528181612846015281816128e3015261329f0152600081816133f50152818161344b015281816134f60152613540015260006107110152600081816106ac0152818161084d015281816108f0015281816109e901528181610ac401528181610b7001528181610b94015281816110290152818161108b015281816111790152818161137c015281816113d50152818161160101528181611a8a01528181611d0c01528181611dc501528181611eeb01528181611f77015281816125f101528181612fa80152612fcc01526000818161037c015281816107f9015281816108730152818161091f0152818161094301528181610a9e01528181610b4101528181610ffd0152818161105501528181611110015281816113270152818161148b0152818161159301528181611a2201528181611d6501528181611df101528181611e3101528181611f4b015281816125c501528181612f590152612f7d015260008181610685015261192501526000818161047a0152818161265101528181612a5701528181612b8601528181612c7e01526130bb01526000818161033001528181610c3601526131670152600081816104c8015281816108a201528181610af3015281816119e501528181613110015281816131ef015261325a01526000818161044001526120be0152613cc56000f3fe608060405234801561001057600080fd5b50600436106102775760003560e01c8063627dd56a11610160578063a9059cbb116100d8578063cf58879a1161008c578063d505accf11610071578063d505accf146106ce578063dd62ed3e146106e1578063f446c1d01461070c57600080fd5b8063cf58879a14610680578063d21220a7146106a757600080fd5b8063baa8c7cb116100bd578063baa8c7cb1461062b578063bc3377d914610652578063c14ad8021461067757600080fd5b8063a9059cbb14610605578063af8c09bf1461061857600080fd5b80637ecebe001161012f57806395d89b411161011457806395d89b411461058f578063a69840a8146105cb578063a8f1f52e146105f257600080fd5b80637ecebe001461056557806392bc32191461058557600080fd5b8063627dd56a1461050a57806367e4ac2c1461051d57806370a08231146105325780637ba0e2e71461055257600080fd5b80632a07b6c7116101f3578063499a3c50116101c25780634e25dc47116101a75780634e25dc471461049c57806354cf2aeb146104c3578063570ca735146104ea57600080fd5b8063499a3c50146104625780634da318271461047557600080fd5b80632a07b6c7146103da57806330adf81f146103fa578063313ce567146104215780633644e5151461043b57600080fd5b80630c0a0cd21161024a57806318160ddd1161022f57806318160ddd1461039e57806323b872dd146103a757806325a93264146103ba57600080fd5b80630c0a0cd21461032b5780630dfe16811461037757600080fd5b8063053da1c81461027c57806306fdde03146102a25780630902f1ac146102eb578063095ea7b314610308575b600080fd5b61028f61028a366004613900565b610733565b6040519081526020015b60405180910390f35b6102de6040518060400160405280601981526020017f5375736869204672616e636869736564204c5020546f6b656e0000000000000081525081565b6040516102999190613ab0565b6102f3610d00565b60408051928352602083019190915201610299565b61031b6103163660046137d1565b610d14565b6040519015158152602001610299565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610299565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b61028f60025481565b61031b6103b536600461382b565b610d8e565b6000546103529073ffffffffffffffffffffffffffffffffffffffff1681565b6103ed6103e8366004613900565b610f09565b6040516102999190613a4b565b61028f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610429601281565b60405160ff9091168152602001610299565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b61028f610470366004613900565b611246565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b6001546103529073ffffffffffffffffffffffffffffffffffffffff1681565b61028f610518366004613900565b61124d565b610525611571565b60405161029991906139f1565b61028f61054036600461361f565b60036020526000908152604090205481565b61028f610560366004613900565b611670565b61028f61057336600461361f565b60056020526000908152604090205481565b61058d6118b3565b005b6102de6040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b61028f7f54726964656e743a4672616e636869736564487962726964000000000000000081565b61028f610600366004613900565b6119ae565b61031b6106133660046137d1565b611b57565b61028f610626366004613900565b611c09565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b60015461031b9074010000000000000000000000000000000000000000900460ff1681565b61028f60065481565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b61058d6106dc36600461386c565b61202b565b61028f6106ef3660046137fd565b600460209081526000928352604080842090915290825290205481565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b60006008546001146107a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60026008556000808080806107bd87890189613687565b94509450945094509450600160149054906101000a900460ff16156107e5576107e584612433565b6000806107f0612593565b915091506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614156109e7577f000000000000000000000000000000000000000000000000000000000000000091506108987f00000000000000000000000000000000000000000000000000000000000000008761261c565b95506127106108c77f000000000000000000000000000000000000000000000000000000000000000088613b16565b6108d19190613adb565b90506108e96108e08288613b53565b85856001612781565b99506109187f0000000000000000000000000000000000000000000000000000000000000000898c888b612941565b600061096c7f00000000000000000000000000000000000000000000000000000000000000006109677f00000000000000000000000000000000000000000000000000000000000000006129ca565b61261c565b9050866109798683613b53565b10156109e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e00000000000000000000604482015260640161079d565b50610c2f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614610a9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e00000000000000000000000000604482015260640161079d565b7f00000000000000000000000000000000000000000000000000000000000000009150610ae97f00000000000000000000000000000000000000000000000000000000000000008761261c565b9550612710610b187f000000000000000000000000000000000000000000000000000000000000000088613b16565b610b229190613adb565b9050610b3a610b318288613b53565b85856000612781565b9950610b697f0000000000000000000000000000000000000000000000000000000000000000898c888b612941565b6000610bb87f00000000000000000000000000000000000000000000000000000000000000006109677f00000000000000000000000000000000000000000000000000000000000000006129ca565b905086610bc58583613b53565b1015610c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e00000000000000000000604482015260640161079d565b505b610c5c89827f00000000000000000000000000000000000000000000000000000000000000006000612ae3565b610c64612e42565b8173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062898e604051610ce3929190918252602082015260400190565b60405180910390a450506001600855509598975050505050505050565b600080610d0b612593565b90939092509050565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d7c9086815260200190565b60405180910390a35060015b92915050565b60015460009074010000000000000000000000000000000000000000900460ff1615610dbd57610dbd83612433565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610e5a5773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915281208054849290610e54908490613b53565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526003602052604081208054849290610e8f908490613b53565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260036020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ef79086815260200190565b60405180910390a35060019392505050565b6060600854600114610f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b45440000000000000000000000000000000000000000000000000000604482015260640161079d565b6002600855600080610f8b84860186613798565b91509150610f9882612433565b600080610fa3612f51565b60025430600090815260036020526040812054939550919350919082610fc98684613b16565b610fd39190613adb565b9050600083610fe28685613b16565b610fec9190613adb565b9050610ff83084612ff0565b6110247f0000000000000000000000000000000000000000000000000000000000000000838a8a612ae3565b6110507f0000000000000000000000000000000000000000000000000000000000000000828a8a612ae3565b61107a7f000000000000000000000000000000000000000000000000000000000000000083613086565b6110849087613b53565b95506110b07f000000000000000000000000000000000000000000000000000000000000000082613086565b6110ba9086613b53565b94506110c4612e42565b6040805160028082526060820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816110da57905050985060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001838152508960008151811061116157611161613bfe565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200182815250896001815181106111ca576111ca613bfe565b60209081029190910181019190915260408051848152918201839052810184905273ffffffffffffffffffffffffffffffffffffffff89169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a3505060016008555094979650505050505050565b6000806000fd5b60006008546001146112bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b45440000000000000000000000000000000000000000000000000000604482015260640161079d565b6002600855600080806112d08587018761363c565b600154929550909350915074010000000000000000000000000000000000000000900460ff16156113045761130482612433565b60008061130f612593565b9150915060008061131e612f51565b915091506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614156113d357507f00000000000000000000000000000000000000000000000000000000000000006113a58685613b53565b915060006113b38a84613106565b90506113cb6113c28285613b53565b88886001612781565b9a50506114de565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614611488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e00000000000000000000000000604482015260640161079d565b507f00000000000000000000000000000000000000000000000000000000000000006114b48584613b53565b915060006114c28a84613106565b90506114da6114d18285613b53565b88886000612781565b9a50505b6114ea818b8a8a612ae3565b6114f2612e42565b8073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062858e604051610ce3929190918252602082015260400190565b60408051600280825260608083018452926020830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106115c5576115c5613bfe565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061163357611633613bfe565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b60006008546001146116de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b45440000000000000000000000000000000000000000000000000000604482015260640161079d565b600260085560006116f18385018561361f565b90506116fc81612433565b600080611707612593565b91509150600080611716612f51565b6002549193509150600061172a8685613b53565b905060006117388685613b53565b905060008061174984848b8b613194565b9092509050600061176c61175d848a613b53565b611767848a613b53565b613297565b9050856117935761177f6103e882613b53565b9b5061178e60006103e8613307565b6117c5565b600061179f8b8b613297565b905080876117ad8285613b53565b6117b79190613b16565b6117c19190613adb565b9c50505b8b61182c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e544544000000604482015260640161079d565b6118368b8d613307565b61183e612e42565b60408051868152602081018690529081018d90528c9073ffffffffffffffffffffffffffffffffffffffff8d169033907ff9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e9060600160405180910390a35050600160085550989b9a5050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc14ad80200000000000000000000000000000000000000000000000000000000179052905160009173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169161195091906139d5565b600060405180830381855afa9150503d806000811461198b576040519150601f19603f3d011682016040523d82523d6000602084013e611990565b606091505b50915050808060200190518101906119a89190613972565b60065550565b600080806119be848601866137d1565b915091506000806119cd612593565b915091506119db848461261c565b9250612710611a0a7f000000000000000000000000000000000000000000000000000000000000000085613b16565b611a149190613adb565b611a1e9084613b53565b92507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611a8857611a818383836001612781565b9450611b4d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e00000000000000000000000000604482015260640161079d565b611b4a8383836000612781565b94505b5050505092915050565b60015460009074010000000000000000000000000000000000000000900460ff1615611b8657611b8683612433565b3360009081526003602052604081208054849290611ba5908490613b53565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d7c9086815260200190565b6000600854600114611c77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b45440000000000000000000000000000000000000000000000000000604482015260640161079d565b600260085560008080611c8c8587018761363c565b925092509250611c9b82612433565b600080611ca6612593565b91509150600080611cb5612f51565b60025430600090815260036020526040812054939550919350919082611cdb8684613b16565b611ce59190613adb565b9050600083611cf48685613b16565b611cfe9190613adb565b9050611d0a3084612ff0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff161415611e2f576000611d8a7f000000000000000000000000000000000000000000000000000000000000000084613106565b9050611db4611d998285613b53565b611da3858c613b53565b611dad858c613b53565b6001612781565b611dbe9083613ac3565b9150611dec7f0000000000000000000000000000000000000000000000000000000000000000838d8d612ae3565b611e167f000000000000000000000000000000000000000000000000000000000000000084613086565b611e209088613b53565b9650819c506000925050611fb1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614611ee4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e000000000000000000000000604482015260640161079d565b6000611f107f000000000000000000000000000000000000000000000000000000000000000083613106565b9050611f3a611f1f8284613b53565b611f29858c613b53565b611f33858c613b53565b6000612781565b611f449084613ac3565b9250611f727f0000000000000000000000000000000000000000000000000000000000000000848d8d612ae3565b611f9c7f000000000000000000000000000000000000000000000000000000000000000083613086565b611fa69087613b53565b9550829c5060009150505b611fb9612e42565b604080518381526020810183905290810184905273ffffffffffffffffffffffffffffffffffffffff8b169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a35050600160085550979a9950505050505050505050565b42841015612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f45585049524544000000000000000000604482015260640161079d565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080547f0000000000000000000000000000000000000000000000000000000000000000917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b918761211083613b96565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016121b19291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa15801561223a573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906122b557508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61231b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e41545552450000000000000000604482015260640161079d565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526004602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556001805492851692909116919091179055801561242e57600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790555b505050565b600080546001546040805173ffffffffffffffffffffffffffffffffffffffff928316602482015285831660448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1472c27100000000000000000000000000000000000000000000000000000000179052905191909216916124d0916139d5565b600060405180830381855afa9150503d806000811461250b576040519150601f19603f3d011682016040523d82523d6000602084013e612510565b606091505b5091505060008180602001905181019061252a91906138e3565b90508061242e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f545f57484954454c49535445440000000000000000000000000000000000604482015260640161079d565b6007546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004166125ea7f00000000000000000000000000000000000000000000000000000000000000008361261c565b91506126167f00000000000000000000000000000000000000000000000000000000000000008261261c565b90509091565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526000606483018190529182917f000000000000000000000000000000000000000000000000000000000000000016907f5662311800000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161272191906139d5565b600060405180830381855afa9150503d806000811461275c576040519150601f19603f3d011682016040523d82523d6000602084013e612761565b606091505b50915050808060200190518101906127799190613972565b949350505050565b60008060008315612815576127b67f000000000000000000000000000000000000000000000000000000000000000087613b16565b91506127e27f000000000000000000000000000000000000000000000000000000000000000086613b16565b905061280e7f000000000000000000000000000000000000000000000000000000000000000088613b16565b965061289a565b61283f7f000000000000000000000000000000000000000000000000000000000000000086613b16565b915061286b7f000000000000000000000000000000000000000000000000000000000000000087613b16565b90506128977f000000000000000000000000000000000000000000000000000000000000000088613b16565b96505b60006128a68383613378565b905060006128b48985613ac3565b905060006128c282846134cb565b905060016128d08286613b53565b6128da9190613b53565b955086612907577f0000000000000000000000000000000000000000000000000000000000000000612929565b7f00000000000000000000000000000000000000000000000000000000000000005b6129339087613adb565b9a9950505050505050505050565b61294d85848684612ae3565b8151156129c3576040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b190612990908590600401613ab0565b600060405180830381600087803b1580156129aa57600080fd5b505af11580156129be573d6000803e3d6000fd5b505050505b5050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff83811660248301523060448084019190915283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff7888aec00000000000000000000000000000000000000000000000000000000179052915160009283927f000000000000000000000000000000000000000000000000000000000000000090911691612a8491906139d5565b600060405180830381855afa9150503d8060008114612abf576040519150601f19603f3d011682016040523d82523d6000602084013e612ac4565b606091505b5091505080806020019051810190612adc9190613972565b9392505050565b8015612c65576040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260848201869052600060a48084018290528451808503909101815260c490930184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f97da6d300000000000000000000000000000000000000000000000000000000017905292517f000000000000000000000000000000000000000000000000000000000000000090911691612bb2916139d5565b6000604051808303816000865af19150503d8060008114612bef576040519150601f19603f3d011682016040523d82523d6000602084013e612bf4565b606091505b5050905080612c5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f57495448445241575f4641494c45440000000000000000000000000000000000604482015260640161079d565b50612e3c565b600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167ff18d03cc00000000000000000000000000000000000000000000000000000000863086612ccc838a613086565b60405173ffffffffffffffffffffffffffffffffffffffff9485166024820152928416604484015292166064820152608481019190915260a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051612d8f91906139d5565b6000604051808303816000865af19150503d8060008114612dcc576040519150601f19603f3d011682016040523d82523d6000602084013e612dd1565b606091505b50509050806129c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c45440000000000000000000000000000000000604482015260640161079d565b50505050565b600080612e4d612f51565b90925090506fffffffffffffffffffffffffffffffff82108015612e8057506fffffffffffffffffffffffffffffffff81105b612ee6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4f564552464c4f57000000000000000000000000000000000000000000000000604482015260640161079d565b6fffffffffffffffffffffffffffffffff818116700100000000000000000000000000000000029083161760075560408051838152602081018390527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a15050565b600080612fa17f00000000000000000000000000000000000000000000000000000000000000006109677f00000000000000000000000000000000000000000000000000000000000000006129ca565b91506126167f00000000000000000000000000000000000000000000000000000000000000006109677f00000000000000000000000000000000000000000000000000000000000000006129ca565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054839290613025908490613b53565b909155505060028054829003905560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526000606483018190529182917f000000000000000000000000000000000000000000000000000000000000000016907fda5139ca0000000000000000000000000000000000000000000000000000000090608401612698565b60006127106131357f000000000000000000000000000000000000000000000000000000000000000084613b16565b61313f9190613adb565b90506000612710600654836131549190613b16565b61315e9190613adb565b905061318d84827f00000000000000000000000000000000000000000000000000000000000000006000612ae3565b5092915050565b6000808315806131a2575082155b156131b25750600090508061328e565b6000846131bf8589613b16565b6131c99190613adb565b9050858111613224576131df6127106002613b16565b6131e98288613b53565b613213907f0000000000000000000000000000000000000000000000000000000000000000613b16565b61321d9190613adb565b915061328c565b6000846132318789613b16565b61323b9190613adb565b905061324a6127106002613b16565b613254828a613b53565b61327e907f0000000000000000000000000000000000000000000000000000000000000000613b16565b6132889190613adb565b9350505b505b94509492505050565b6000806132c47f000000000000000000000000000000000000000000000000000000000000000085613b16565b905060006132f27f000000000000000000000000000000000000000000000000000000000000000085613b16565b90506132fe8282613378565b95945050505050565b80600260008282546133199190613ac3565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161307a565b6000806133858385613ac3565b90508061339157600091505b600081815b6101008110156134c1576000600487848a6133b18280613b16565b6133bb9190613adb565b6133c59190613b16565b6133cf9190613adb565b6133d99190613adb565b90508293508060036133eb9190613b16565b83600161341960647f0000000000000000000000000000000000000000000000000000000000000000613adb565b6134239190613b53565b61342d9190613b16565b6134379190613ac3565b83613443836002613b16565b606461346f897f0000000000000000000000000000000000000000000000000000000000000000613b16565b6134799190613adb565b6134839190613ac3565b61348d9190613b16565b6134979190613adb565b92506134a383856135fd565b156134ae57506134c1565b50806134b981613b96565b915050613396565b5095945050505050565b6000806134d9846002613b16565b6134e38480613b16565b6134ed9190613adb565b9050606461351c7f00000000000000000000000000000000000000000000000000000000000000006002613b16565b6135269190613adb565b6135308483613b16565b61353a9190613adb565b905060007f000000000000000000000000000000000000000000000000000000000000000061356a606486613b16565b6135749190613adb565b61357e9086613ac3565b9050600084935060005b610100811015611b4d5784915085836135a2846002613b16565b6135ac9190613ac3565b6135b69190613b53565b846135c18780613b16565b6135cb9190613ac3565b6135d59190613adb565b94506135e185836135fd565b156135eb57611b4d565b806135f581613b96565b915050613588565b600081831115613614575060018183031115610d88565b506001919003111590565b60006020828403121561363157600080fd5b8135612adc81613c5c565b60008060006060848603121561365157600080fd5b833561365c81613c5c565b9250602084013561366c81613c5c565b9150604084013561367c81613c81565b809150509250925092565b600080600080600060a0868803121561369f57600080fd5b85356136aa81613c5c565b945060208601356136ba81613c5c565b935060408601356136ca81613c81565b925060608601359150608086013567ffffffffffffffff808211156136ee57600080fd5b818801915088601f83011261370257600080fd5b81358181111561371457613714613c2d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561375a5761375a613c2d565b816040528281528b602084870101111561377357600080fd5b8260208601602083013760006020848301015280955050505050509295509295909350565b600080604083850312156137ab57600080fd5b82356137b681613c5c565b915060208301356137c681613c81565b809150509250929050565b600080604083850312156137e457600080fd5b82356137ef81613c5c565b946020939093013593505050565b6000806040838503121561381057600080fd5b823561381b81613c5c565b915060208301356137c681613c5c565b60008060006060848603121561384057600080fd5b833561384b81613c5c565b9250602084013561385b81613c5c565b929592945050506040919091013590565b600080600080600080600060e0888a03121561388757600080fd5b873561389281613c5c565b965060208801356138a281613c5c565b95506040880135945060608801359350608088013560ff811681146138c657600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000602082840312156138f557600080fd5b8151612adc81613c81565b6000806020838503121561391357600080fd5b823567ffffffffffffffff8082111561392b57600080fd5b818501915085601f83011261393f57600080fd5b81358181111561394e57600080fd5b86602082850101111561396057600080fd5b60209290920196919550909350505050565b60006020828403121561398457600080fd5b5051919050565b600081518084526139a3816020860160208601613b6a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516139e7818460208701613b6a565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b81811015613a3f57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613a0d565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015613aa3578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101613a68565b5091979650505050505050565b602081526000612adc602083018461398b565b60008219821115613ad657613ad6613bcf565b500190565b600082613b11577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b4e57613b4e613bcf565b500290565b600082821015613b6557613b65613bcf565b500390565b60005b83811015613b85578181015183820152602001613b6d565b83811115612e3c5750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613bc857613bc8613bcf565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114613c7e57600080fd5b50565b8015158114613c7e57600080fdfea26469706673582212208cb16d62de4d77a08746b141626254de45cd7186356a32265015f50f4a7712b164736f6c63430008070033a26469706673582212206bab0a3faad22b53e9cbaa3b83f0a00277d9d7565e330a6aca4fb2d44ddd1b5e64736f6c63430008070033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x57E9 CODESIZE SUB DUP1 PUSH2 0x57E9 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x6D JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x57 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD92E233D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE POP PUSH2 0x9D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0x5720 PUSH2 0xC9 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x15A ADD MSTORE DUP2 DUP2 PUSH2 0x3B0 ADD MSTORE PUSH2 0x568 ADD MSTORE PUSH2 0x5720 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x71A25812 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x71A25812 EQ PUSH3 0x12E JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH3 0x154 JUMPI DUP1 PUSH4 0xF6AB6D99 EQ PUSH3 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x169C4CEF EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x27C3CAE1 EQ PUSH3 0xC1 JUMPI DUP1 PUSH4 0x5BC93D6C EQ PUSH3 0xD8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x996 JUMP JUMPDEST PUSH3 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x97 PUSH3 0xD2 CALLDATASIZE PUSH1 0x4 PUSH3 0xA41 JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH3 0x11F PUSH3 0xE9 CALLDATASIZE PUSH1 0x4 PUSH3 0x958 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xB8 JUMP JUMPDEST PUSH3 0x145 PUSH3 0x13F CALLDATASIZE PUSH1 0x4 PUSH3 0x9DC JUMP JUMPDEST PUSH3 0x427 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xB8 SWAP2 SWAP1 PUSH3 0xB1A JUMP JUMPDEST PUSH3 0x97 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0x97 PUSH3 0x18D CALLDATASIZE PUSH1 0x4 PUSH3 0xA27 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP3 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH3 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP DUP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP9 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x22A SWAP2 SWAP1 PUSH3 0x8C0 JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH3 0x271 JUMPI SWAP5 SWAP6 SWAP5 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 DUP6 AND PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 DUP4 AND PUSH1 0xC0 DUP3 ADD MSTORE DUP2 ISZERO ISZERO PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE PUSH1 0x2 DUP1 DUP5 MSTORE PUSH1 0x60 DUP5 ADD SWAP1 SWAP3 MSTORE SWAP11 POP PUSH1 0x0 SWAP2 SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP8 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH3 0x32C JUMPI PUSH3 0x32C PUSH3 0xC90 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP7 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH3 0x37D JUMPI PUSH3 0x37D PUSH3 0xC90 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE DUP11 MLOAD SWAP1 DUP12 ADD KECCAK256 PUSH1 0x40 MLOAD DUP2 SWAP1 DUP13 SWAP1 PUSH32 0x0 SWAP1 PUSH3 0x3DB SWAP1 PUSH3 0x8B2 JUMP JUMPDEST PUSH3 0x3E8 SWAP3 SWAP2 SWAP1 PUSH3 0xB76 JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH3 0x409 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP10 POP PUSH3 0x419 DUP11 DUP4 DUP4 PUSH3 0x550 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x445 JUMPI PUSH3 0x445 PUSH3 0xCBF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x46F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x547 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH3 0x4BA DUP3 DUP7 PUSH3 0xC0A JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH3 0x4CD JUMPI PUSH3 0x4CD PUSH3 0xC90 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x50D JUMPI PUSH3 0x50D PUSH3 0xC90 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x53E DUP2 PUSH3 0xC25 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x475 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH3 0x5C0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3781A5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH3 0x8AC JUMPI DUP3 DUP2 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH3 0x632 JUMPI PUSH3 0x632 PUSH3 0xC90 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x665 JUMPI PUSH3 0x665 PUSH3 0xC90 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH3 0x6BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x3F06BF8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH3 0x8A2 JUMPI PUSH1 0x0 DUP1 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x6E2 JUMPI PUSH3 0x6E2 PUSH3 0xC90 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x73B JUMPI PUSH3 0x73B PUSH3 0xC90 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP3 MSTORE SWAP2 DUP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP5 MLOAD DUP2 SWAP1 DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH3 0x7CA JUMPI PUSH3 0x7CA PUSH3 0xC90 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x823 JUMPI PUSH3 0x823 PUSH3 0xC90 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE SWAP2 DUP4 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE ADD PUSH3 0x6C0 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH3 0x60D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x49D6 DUP1 PUSH3 0xD15 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x8DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 MLOAD PUSH3 0x8E9 DUP2 PUSH3 0xCEE JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH3 0x8FC DUP2 PUSH3 0xCEE JUMP JUMPDEST DUP1 SWAP7 POP POP PUSH1 0x40 DUP9 ADD MLOAD SWAP5 POP PUSH1 0x60 DUP9 ADD MLOAD SWAP4 POP PUSH1 0x80 DUP9 ADD MLOAD PUSH3 0x91E DUP2 PUSH3 0xCEE JUMP JUMPDEST PUSH1 0xA0 DUP10 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x931 DUP2 PUSH3 0xCEE JUMP JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x948 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x96C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH3 0x979 DUP2 PUSH3 0xCEE JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH3 0x98B DUP2 PUSH3 0xCEE JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x9AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH3 0x9B9 DUP2 PUSH3 0xCEE JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH3 0x9CB DUP2 PUSH3 0xCEE JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x9F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH3 0xA00 DUP2 PUSH3 0xCEE JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH3 0xA12 DUP2 PUSH3 0xCEE JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0xA6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA97 JUMPI PUSH3 0xA97 PUSH3 0xCBF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xAE0 JUMPI PUSH3 0xAE0 PUSH3 0xCBF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xAFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xB6A JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0xB36 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xBA6 JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH3 0xB87 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0xBB9 JUMPI PUSH1 0x0 PUSH1 0x60 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD PUSH1 0x60 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0xC20 JUMPI PUSH3 0xC20 PUSH3 0xC61 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH3 0xC5A JUMPI PUSH3 0xC5A PUSH3 0xC61 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0xD11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH2 0x1E0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x49D6 CODESIZE SUB DUP1 PUSH3 0x49D6 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x7AB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x5375736869204672616E636869736564204C5020546F6B656E00000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x49BB029AD7C8A58C6232657178B278E20C3BD1F3B0084072E3A97B185E1AAC5F SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x80 DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP9 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x142 SWAP2 SWAP1 PUSH3 0x713 JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A45524F5F41444452455353 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x20C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4944454E544943414C5F41444452455353455300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST PUSH2 0x2710 DUP6 GT ISZERO PUSH3 0x253 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x494E56414C49445F535741505F464545 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST DUP4 PUSH3 0x28B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x5A45524F5F41 PUSH1 0xD0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST PUSH3 0x2A3 DUP4 DUP4 DUP4 PUSH3 0x68A PUSH1 0x20 SHL PUSH3 0x2393 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x60A56C01 PUSH1 0xE1 SHL OR SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH3 0x2E7 SWAP2 SWAP1 PUSH3 0x8B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x324 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x329 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6050669 PUSH1 0xE1 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP2 PUSH3 0x372 SWAP2 SWAP1 PUSH3 0x8B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x3AF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x3B4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x4DA31827 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP2 PUSH3 0x3FD SWAP2 SWAP1 PUSH3 0x8B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x43A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x43F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP2 PUSH3 0x488 SWAP2 SWAP1 PUSH3 0x8B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x4C5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x4CA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP2 PUSH3 0x513 SWAP2 SWAP1 PUSH3 0x8B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x550 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x555 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP16 DUP2 SHL DUP3 AND PUSH2 0x120 MSTORE DUP15 SWAP1 SHL AND PUSH2 0x140 MSTORE PUSH1 0xA0 DUP13 SWAP1 MSTORE DUP7 MLOAD SWAP1 SWAP3 POP PUSH3 0x592 SWAP2 POP DUP7 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP8 ADD PUSH3 0x878 JUMP JUMPDEST PUSH1 0x6 SSTORE DUP4 MLOAD PUSH3 0x5AC SWAP1 DUP6 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP7 ADD PUSH3 0x6EC JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xC0 MSTORE DUP3 MLOAD PUSH3 0x5D3 SWAP1 PUSH1 0x20 SWAP1 DUP6 ADD DUP2 ADD SWAP1 DUP6 ADD PUSH3 0x6EC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xE0 MSTORE SWAP1 DUP15 SWAP1 SHL AND PUSH2 0x100 MSTORE PUSH2 0x160 DUP10 SWAP1 MSTORE PUSH3 0x602 DUP10 PUSH1 0x2 PUSH3 0x9DF JUMP JUMPDEST PUSH2 0x180 MSTORE DUP2 MLOAD PUSH3 0x61D SWAP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP5 ADD PUSH3 0x892 JUMP JUMPDEST PUSH3 0x62A SWAP1 PUSH1 0x12 PUSH3 0xA01 JUMP JUMPDEST PUSH3 0x637 SWAP1 PUSH1 0xA PUSH3 0x91E JUMP JUMPDEST PUSH2 0x1A0 MSTORE DUP1 MLOAD PUSH3 0x652 SWAP1 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP4 ADD PUSH3 0x892 JUMP JUMPDEST PUSH3 0x65F SWAP1 PUSH1 0x12 PUSH3 0xA01 JUMP JUMPDEST PUSH3 0x66C SWAP1 PUSH1 0xA PUSH3 0x91E JUMP JUMPDEST PUSH2 0x1C0 MSTORE POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP PUSH3 0xA9F SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH3 0x6D5 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x6E7 DUP2 PUSH3 0xA86 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x6FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x70C DUP2 PUSH3 0xA86 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x72F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 MLOAD PUSH3 0x73C DUP2 PUSH3 0xA86 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH3 0x74F DUP2 PUSH3 0xA86 JUMP JUMPDEST DUP1 SWAP7 POP POP PUSH1 0x40 DUP9 ADD MLOAD SWAP5 POP PUSH1 0x60 DUP9 ADD MLOAD SWAP4 POP PUSH1 0x80 DUP9 ADD MLOAD PUSH3 0x771 DUP2 PUSH3 0xA86 JUMP JUMPDEST PUSH1 0xA0 DUP10 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x784 DUP2 PUSH3 0xA86 JUMP JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x79B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x7EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x801 JUMPI PUSH3 0x801 PUSH3 0xA70 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x82C JUMPI PUSH3 0x82C PUSH3 0xA70 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x846 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x859 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH3 0xA27 JUMP JUMPDEST DUP1 SWAP7 POP POP POP POP POP POP PUSH3 0x86F PUSH1 0x20 DUP5 ADD PUSH3 0x6DA JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x88B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x8A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH3 0x70C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x8CB DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0xA27 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH3 0x916 JUMPI DUP2 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x8FA JUMPI PUSH3 0x8FA PUSH3 0xA5A JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH3 0x908 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH3 0x8DA JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x70C PUSH1 0xFF DUP5 AND DUP4 PUSH1 0x0 DUP3 PUSH3 0x93A JUMPI POP PUSH1 0x1 PUSH3 0x9D9 JUMP JUMPDEST DUP2 PUSH3 0x949 JUMPI POP PUSH1 0x0 PUSH3 0x9D9 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH3 0x962 JUMPI PUSH1 0x2 DUP2 EQ PUSH3 0x96D JUMPI PUSH3 0x98D JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH3 0x9D9 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH3 0x981 JUMPI PUSH3 0x981 PUSH3 0xA5A JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH3 0x9D9 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH3 0x9B2 JUMPI POP DUP2 DUP2 EXP PUSH3 0x9D9 JUMP JUMPDEST PUSH3 0x9BE DUP4 DUP4 PUSH3 0x8D5 JUMP JUMPDEST DUP1 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x9D5 JUMPI PUSH3 0x9D5 PUSH3 0xA5A JUMP JUMPDEST MUL SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH3 0x9FC JUMPI PUSH3 0x9FC PUSH3 0xA5A JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND PUSH1 0xFF DUP5 AND DUP1 DUP3 LT ISZERO PUSH3 0xA1E JUMPI PUSH3 0xA1E PUSH3 0xA5A JUMP JUMPDEST SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xA44 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA2A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0xA54 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0xA9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH2 0x1A0 MLOAD PUSH2 0x1C0 MLOAD PUSH2 0x3CC5 PUSH3 0xD11 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x4A1 ADD MSTORE DUP2 DUP2 PUSH2 0x27BD ADD MSTORE DUP2 DUP2 PUSH2 0x281A ADD MSTORE DUP2 DUP2 PUSH2 0x2872 ADD MSTORE DUP2 DUP2 PUSH2 0x2909 ADD MSTORE PUSH2 0x32CD ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x630 ADD MSTORE DUP2 DUP2 PUSH2 0x2791 ADD MSTORE DUP2 DUP2 PUSH2 0x27E9 ADD MSTORE DUP2 DUP2 PUSH2 0x2846 ADD MSTORE DUP2 DUP2 PUSH2 0x28E3 ADD MSTORE PUSH2 0x329F ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x33F5 ADD MSTORE DUP2 DUP2 PUSH2 0x344B ADD MSTORE DUP2 DUP2 PUSH2 0x34F6 ADD MSTORE PUSH2 0x3540 ADD MSTORE PUSH1 0x0 PUSH2 0x711 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x6AC ADD MSTORE DUP2 DUP2 PUSH2 0x84D ADD MSTORE DUP2 DUP2 PUSH2 0x8F0 ADD MSTORE DUP2 DUP2 PUSH2 0x9E9 ADD MSTORE DUP2 DUP2 PUSH2 0xAC4 ADD MSTORE DUP2 DUP2 PUSH2 0xB70 ADD MSTORE DUP2 DUP2 PUSH2 0xB94 ADD MSTORE DUP2 DUP2 PUSH2 0x1029 ADD MSTORE DUP2 DUP2 PUSH2 0x108B ADD MSTORE DUP2 DUP2 PUSH2 0x1179 ADD MSTORE DUP2 DUP2 PUSH2 0x137C ADD MSTORE DUP2 DUP2 PUSH2 0x13D5 ADD MSTORE DUP2 DUP2 PUSH2 0x1601 ADD MSTORE DUP2 DUP2 PUSH2 0x1A8A ADD MSTORE DUP2 DUP2 PUSH2 0x1D0C ADD MSTORE DUP2 DUP2 PUSH2 0x1DC5 ADD MSTORE DUP2 DUP2 PUSH2 0x1EEB ADD MSTORE DUP2 DUP2 PUSH2 0x1F77 ADD MSTORE DUP2 DUP2 PUSH2 0x25F1 ADD MSTORE DUP2 DUP2 PUSH2 0x2FA8 ADD MSTORE PUSH2 0x2FCC ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x37C ADD MSTORE DUP2 DUP2 PUSH2 0x7F9 ADD MSTORE DUP2 DUP2 PUSH2 0x873 ADD MSTORE DUP2 DUP2 PUSH2 0x91F ADD MSTORE DUP2 DUP2 PUSH2 0x943 ADD MSTORE DUP2 DUP2 PUSH2 0xA9E ADD MSTORE DUP2 DUP2 PUSH2 0xB41 ADD MSTORE DUP2 DUP2 PUSH2 0xFFD ADD MSTORE DUP2 DUP2 PUSH2 0x1055 ADD MSTORE DUP2 DUP2 PUSH2 0x1110 ADD MSTORE DUP2 DUP2 PUSH2 0x1327 ADD MSTORE DUP2 DUP2 PUSH2 0x148B ADD MSTORE DUP2 DUP2 PUSH2 0x1593 ADD MSTORE DUP2 DUP2 PUSH2 0x1A22 ADD MSTORE DUP2 DUP2 PUSH2 0x1D65 ADD MSTORE DUP2 DUP2 PUSH2 0x1DF1 ADD MSTORE DUP2 DUP2 PUSH2 0x1E31 ADD MSTORE DUP2 DUP2 PUSH2 0x1F4B ADD MSTORE DUP2 DUP2 PUSH2 0x25C5 ADD MSTORE DUP2 DUP2 PUSH2 0x2F59 ADD MSTORE PUSH2 0x2F7D ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x685 ADD MSTORE PUSH2 0x1925 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x47A ADD MSTORE DUP2 DUP2 PUSH2 0x2651 ADD MSTORE DUP2 DUP2 PUSH2 0x2A57 ADD MSTORE DUP2 DUP2 PUSH2 0x2B86 ADD MSTORE DUP2 DUP2 PUSH2 0x2C7E ADD MSTORE PUSH2 0x30BB ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x330 ADD MSTORE DUP2 DUP2 PUSH2 0xC36 ADD MSTORE PUSH2 0x3167 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x4C8 ADD MSTORE DUP2 DUP2 PUSH2 0x8A2 ADD MSTORE DUP2 DUP2 PUSH2 0xAF3 ADD MSTORE DUP2 DUP2 PUSH2 0x19E5 ADD MSTORE DUP2 DUP2 PUSH2 0x3110 ADD MSTORE DUP2 DUP2 PUSH2 0x31EF ADD MSTORE PUSH2 0x325A ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x440 ADD MSTORE PUSH2 0x20BE ADD MSTORE PUSH2 0x3CC5 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x277 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x627DD56A GT PUSH2 0x160 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xCF58879A GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x6CE JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6E1 JUMPI DUP1 PUSH4 0xF446C1D0 EQ PUSH2 0x70C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCF58879A EQ PUSH2 0x680 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBAA8C7CB GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xBAA8C7CB EQ PUSH2 0x62B JUMPI DUP1 PUSH4 0xBC3377D9 EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x605 JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x58F JUMPI DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x5CB JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x565 JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x627DD56A EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x51D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x4E25DC47 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x4E25DC47 EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x4C3 JUMPI DUP1 PUSH4 0x570CA735 EQ PUSH2 0x4EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x3DA JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x421 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x43B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x24A JUMPI DUP1 PUSH4 0x18160DDD GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x39E JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0x25A93264 EQ PUSH2 0x3BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x308 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x28F PUSH2 0x28A CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x733 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204672616E636869736564204C5020546F6B656E00000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x3AB0 JUMP JUMPDEST PUSH2 0x2F3 PUSH2 0xD00 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x31B PUSH2 0x316 CALLDATASIZE PUSH1 0x4 PUSH2 0x37D1 JUMP JUMPDEST PUSH2 0xD14 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x31B PUSH2 0x3B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x382B JUMP JUMPDEST PUSH2 0xD8E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x352 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x3E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x3A4B JUMP JUMPDEST PUSH2 0x28F PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x429 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x470 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x1246 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x352 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x518 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x124D JUMP JUMPDEST PUSH2 0x525 PUSH2 0x1571 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x39F1 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x540 CALLDATASIZE PUSH1 0x4 PUSH2 0x361F JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x560 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x1670 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x573 CALLDATASIZE PUSH1 0x4 PUSH2 0x361F JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x58D PUSH2 0x18B3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x54726964656E743A4672616E6368697365644879627269640000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x600 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x19AE JUMP JUMPDEST PUSH2 0x31B PUSH2 0x613 CALLDATASIZE PUSH1 0x4 PUSH2 0x37D1 JUMP JUMPDEST PUSH2 0x1B57 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x626 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x1C09 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x31B SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x58D PUSH2 0x6DC CALLDATASIZE PUSH1 0x4 PUSH2 0x386C JUMP JUMPDEST PUSH2 0x202B JUMP JUMPDEST PUSH2 0x28F PUSH2 0x6EF CALLDATASIZE PUSH1 0x4 PUSH2 0x37FD JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0x7A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x7BD DUP8 DUP10 ADD DUP10 PUSH2 0x3687 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x7E5 JUMPI PUSH2 0x7E5 DUP5 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7F0 PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x9E7 JUMPI PUSH32 0x0 SWAP2 POP PUSH2 0x898 PUSH32 0x0 DUP8 PUSH2 0x261C JUMP JUMPDEST SWAP6 POP PUSH2 0x2710 PUSH2 0x8C7 PUSH32 0x0 DUP9 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x8D1 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0x8E9 PUSH2 0x8E0 DUP3 DUP9 PUSH2 0x3B53 JUMP JUMPDEST DUP6 DUP6 PUSH1 0x1 PUSH2 0x2781 JUMP JUMPDEST SWAP10 POP PUSH2 0x918 PUSH32 0x0 DUP10 DUP13 DUP9 DUP12 PUSH2 0x2941 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x96C PUSH32 0x0 PUSH2 0x967 PUSH32 0x0 PUSH2 0x29CA JUMP JUMPDEST PUSH2 0x261C JUMP JUMPDEST SWAP1 POP DUP7 PUSH2 0x979 DUP7 DUP4 PUSH2 0x3B53 JUMP JUMPDEST LT ISZERO PUSH2 0x9E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP PUSH2 0xC2F JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH32 0x0 SWAP2 POP PUSH2 0xAE9 PUSH32 0x0 DUP8 PUSH2 0x261C JUMP JUMPDEST SWAP6 POP PUSH2 0x2710 PUSH2 0xB18 PUSH32 0x0 DUP9 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0xB22 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0xB3A PUSH2 0xB31 DUP3 DUP9 PUSH2 0x3B53 JUMP JUMPDEST DUP6 DUP6 PUSH1 0x0 PUSH2 0x2781 JUMP JUMPDEST SWAP10 POP PUSH2 0xB69 PUSH32 0x0 DUP10 DUP13 DUP9 DUP12 PUSH2 0x2941 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBB8 PUSH32 0x0 PUSH2 0x967 PUSH32 0x0 PUSH2 0x29CA JUMP JUMPDEST SWAP1 POP DUP7 PUSH2 0xBC5 DUP6 DUP4 PUSH2 0x3B53 JUMP JUMPDEST LT ISZERO PUSH2 0xC2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP JUMPDEST PUSH2 0xC5C DUP10 DUP3 PUSH32 0x0 PUSH1 0x0 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0xC64 PUSH2 0x2E42 JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP10 DUP15 PUSH1 0x40 MLOAD PUSH2 0xCE3 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP6 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xD0B PUSH2 0x2593 JUMP JUMPDEST SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xD7C SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xDBD JUMPI PUSH2 0xDBD DUP4 PUSH2 0x2433 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xE5A JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xE54 SWAP1 DUP5 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xE8F SWAP1 DUP5 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xEF7 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0xF77 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 DUP1 PUSH2 0xF8B DUP5 DUP7 ADD DUP7 PUSH2 0x3798 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xF98 DUP3 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xFA3 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x2 SLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 SWAP1 DUP3 PUSH2 0xFC9 DUP7 DUP5 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0xFD3 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0xFE2 DUP7 DUP6 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0xFEC SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0xFF8 ADDRESS DUP5 PUSH2 0x2FF0 JUMP JUMPDEST PUSH2 0x1024 PUSH32 0x0 DUP4 DUP11 DUP11 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x1050 PUSH32 0x0 DUP3 DUP11 DUP11 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x107A PUSH32 0x0 DUP4 PUSH2 0x3086 JUMP JUMPDEST PUSH2 0x1084 SWAP1 DUP8 PUSH2 0x3B53 JUMP JUMPDEST SWAP6 POP PUSH2 0x10B0 PUSH32 0x0 DUP3 PUSH2 0x3086 JUMP JUMPDEST PUSH2 0x10BA SWAP1 DUP7 PUSH2 0x3B53 JUMP JUMPDEST SWAP5 POP PUSH2 0x10C4 PUSH2 0x2E42 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x10DA JUMPI SWAP1 POP POP SWAP9 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP10 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1161 JUMPI PUSH2 0x1161 PUSH2 0x3BFE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP10 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x11CA JUMPI PUSH2 0x11CA PUSH2 0x3BFE JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP2 DUP3 ADD DUP4 SWAP1 MSTORE DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0x12BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x12D0 DUP6 DUP8 ADD DUP8 PUSH2 0x363C JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1304 JUMPI PUSH2 0x1304 DUP3 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x130F PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x131E PUSH2 0x2F51 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x13D3 JUMPI POP PUSH32 0x0 PUSH2 0x13A5 DUP7 DUP6 PUSH2 0x3B53 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH2 0x13B3 DUP11 DUP5 PUSH2 0x3106 JUMP JUMPDEST SWAP1 POP PUSH2 0x13CB PUSH2 0x13C2 DUP3 DUP6 PUSH2 0x3B53 JUMP JUMPDEST DUP9 DUP9 PUSH1 0x1 PUSH2 0x2781 JUMP JUMPDEST SWAP11 POP POP PUSH2 0x14DE JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1488 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP PUSH32 0x0 PUSH2 0x14B4 DUP6 DUP5 PUSH2 0x3B53 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH2 0x14C2 DUP11 DUP5 PUSH2 0x3106 JUMP JUMPDEST SWAP1 POP PUSH2 0x14DA PUSH2 0x14D1 DUP3 DUP6 PUSH2 0x3B53 JUMP JUMPDEST DUP9 DUP9 PUSH1 0x0 PUSH2 0x2781 JUMP JUMPDEST SWAP11 POP POP JUMPDEST PUSH2 0x14EA DUP2 DUP12 DUP11 DUP11 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x14F2 PUSH2 0x2E42 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP6 DUP15 PUSH1 0x40 MLOAD PUSH2 0xCE3 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x15C5 JUMPI PUSH2 0x15C5 PUSH2 0x3BFE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1633 JUMPI PUSH2 0x1633 PUSH2 0x3BFE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0x16DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 PUSH2 0x16F1 DUP4 DUP6 ADD DUP6 PUSH2 0x361F JUMP JUMPDEST SWAP1 POP PUSH2 0x16FC DUP2 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1707 PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1716 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x0 PUSH2 0x172A DUP7 DUP6 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1738 DUP7 DUP6 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1749 DUP5 DUP5 DUP12 DUP12 PUSH2 0x3194 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x176C PUSH2 0x175D DUP5 DUP11 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1767 DUP5 DUP11 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x3297 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x1793 JUMPI PUSH2 0x177F PUSH2 0x3E8 DUP3 PUSH2 0x3B53 JUMP JUMPDEST SWAP12 POP PUSH2 0x178E PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x3307 JUMP JUMPDEST PUSH2 0x17C5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x179F DUP12 DUP12 PUSH2 0x3297 JUMP JUMPDEST SWAP1 POP DUP1 DUP8 PUSH2 0x17AD DUP3 DUP6 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x17B7 SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x17C1 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP13 POP POP JUMPDEST DUP12 PUSH2 0x182C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F4C49515549444954595F4D494E544544000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH2 0x1836 DUP12 DUP14 PUSH2 0x3307 JUMP JUMPDEST PUSH2 0x183E PUSH2 0x2E42 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 DUP2 ADD DUP14 SWAP1 MSTORE DUP13 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND SWAP1 CALLER SWAP1 PUSH32 0xF9C32FBC56FF04F32A233EBC26E388564223745E28ABD8D0781DD906537F563E SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP9 SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC14AD80200000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH2 0x1950 SWAP2 SWAP1 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x198B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1990 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x19A8 SWAP2 SWAP1 PUSH2 0x3972 JUMP JUMPDEST PUSH1 0x6 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x19BE DUP5 DUP7 ADD DUP7 PUSH2 0x37D1 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x19CD PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x19DB DUP5 DUP5 PUSH2 0x261C JUMP JUMPDEST SWAP3 POP PUSH2 0x2710 PUSH2 0x1A0A PUSH32 0x0 DUP6 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x1A14 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x1A1E SWAP1 DUP5 PUSH2 0x3B53 JUMP JUMPDEST SWAP3 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1A88 JUMPI PUSH2 0x1A81 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x2781 JUMP JUMPDEST SWAP5 POP PUSH2 0x1B4D JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1B3D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH2 0x1B4A DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x2781 JUMP JUMPDEST SWAP5 POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1B86 JUMPI PUSH2 0x1B86 DUP4 PUSH2 0x2433 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x1BA5 SWAP1 DUP5 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xD7C SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0x1C77 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x1C8C DUP6 DUP8 ADD DUP8 PUSH2 0x363C JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x1C9B DUP3 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1CA6 PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1CB5 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x2 SLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 SWAP1 DUP3 PUSH2 0x1CDB DUP7 DUP5 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x1CE5 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0x1CF4 DUP7 DUP6 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x1CFE SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0x1D0A ADDRESS DUP5 PUSH2 0x2FF0 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1E2F JUMPI PUSH1 0x0 PUSH2 0x1D8A PUSH32 0x0 DUP5 PUSH2 0x3106 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DB4 PUSH2 0x1D99 DUP3 DUP6 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1DA3 DUP6 DUP13 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1DAD DUP6 DUP13 PUSH2 0x3B53 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2781 JUMP JUMPDEST PUSH2 0x1DBE SWAP1 DUP4 PUSH2 0x3AC3 JUMP JUMPDEST SWAP2 POP PUSH2 0x1DEC PUSH32 0x0 DUP4 DUP14 DUP14 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x1E16 PUSH32 0x0 DUP5 PUSH2 0x3086 JUMP JUMPDEST PUSH2 0x1E20 SWAP1 DUP9 PUSH2 0x3B53 JUMP JUMPDEST SWAP7 POP DUP2 SWAP13 POP PUSH1 0x0 SWAP3 POP POP PUSH2 0x1FB1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1EE4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F10 PUSH32 0x0 DUP4 PUSH2 0x3106 JUMP JUMPDEST SWAP1 POP PUSH2 0x1F3A PUSH2 0x1F1F DUP3 DUP5 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1F29 DUP6 DUP13 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1F33 DUP6 DUP13 PUSH2 0x3B53 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2781 JUMP JUMPDEST PUSH2 0x1F44 SWAP1 DUP5 PUSH2 0x3AC3 JUMP JUMPDEST SWAP3 POP PUSH2 0x1F72 PUSH32 0x0 DUP5 DUP14 DUP14 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x1F9C PUSH32 0x0 DUP4 PUSH2 0x3086 JUMP JUMPDEST PUSH2 0x1FA6 SWAP1 DUP8 PUSH2 0x3B53 JUMP JUMPDEST SWAP6 POP DUP3 SWAP13 POP PUSH1 0x0 SWAP2 POP POP JUMPDEST PUSH2 0x1FB9 PUSH2 0x2E42 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP8 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x2095 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x0 SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP8 PUSH2 0x2110 DUP4 PUSH2 0x3B96 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x21B1 SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x223A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x22B5 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x231B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x242E JUMPI PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE DUP6 DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1472C27100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH2 0x24D0 SWAP2 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x250B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2510 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x252A SWAP2 SWAP1 PUSH2 0x38E3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x242E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F57484954454C49535445440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND PUSH2 0x25EA PUSH32 0x0 DUP4 PUSH2 0x261C JUMP JUMPDEST SWAP2 POP PUSH2 0x2616 PUSH32 0x0 DUP3 PUSH2 0x261C JUMP JUMPDEST SWAP1 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD DUP2 SWAP1 MSTORE SWAP2 DUP3 SWAP2 PUSH32 0x0 AND SWAP1 PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x2721 SWAP2 SWAP1 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x275C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2761 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2779 SWAP2 SWAP1 PUSH2 0x3972 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 ISZERO PUSH2 0x2815 JUMPI PUSH2 0x27B6 PUSH32 0x0 DUP8 PUSH2 0x3B16 JUMP JUMPDEST SWAP2 POP PUSH2 0x27E2 PUSH32 0x0 DUP7 PUSH2 0x3B16 JUMP JUMPDEST SWAP1 POP PUSH2 0x280E PUSH32 0x0 DUP9 PUSH2 0x3B16 JUMP JUMPDEST SWAP7 POP PUSH2 0x289A JUMP JUMPDEST PUSH2 0x283F PUSH32 0x0 DUP7 PUSH2 0x3B16 JUMP JUMPDEST SWAP2 POP PUSH2 0x286B PUSH32 0x0 DUP8 PUSH2 0x3B16 JUMP JUMPDEST SWAP1 POP PUSH2 0x2897 PUSH32 0x0 DUP9 PUSH2 0x3B16 JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH1 0x0 PUSH2 0x28A6 DUP4 DUP4 PUSH2 0x3378 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x28B4 DUP10 DUP6 PUSH2 0x3AC3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x28C2 DUP3 DUP5 PUSH2 0x34CB JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH2 0x28D0 DUP3 DUP7 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x28DA SWAP2 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP6 POP DUP7 PUSH2 0x2907 JUMPI PUSH32 0x0 PUSH2 0x2929 JUMP JUMPDEST PUSH32 0x0 JUMPDEST PUSH2 0x2933 SWAP1 DUP8 PUSH2 0x3ADB JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x294D DUP6 DUP5 DUP7 DUP5 PUSH2 0x2AE3 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x29C3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x2990 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x3AB0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x29BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH2 0x2A84 SWAP2 SWAP1 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2ABF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2AC4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2ADC SWAP2 SWAP1 PUSH2 0x3972 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2C65 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x0 PUSH1 0xA4 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC4 SWAP1 SWAP4 ADD DUP5 MSTORE PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP3 MLOAD PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH2 0x2BB2 SWAP2 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2BEF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2BF4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2C5F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57495448445241575F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP PUSH2 0x2E3C JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP7 ADDRESS DUP7 PUSH2 0x2CCC DUP4 DUP11 PUSH2 0x3086 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x44 DUP5 ADD MSTORE SWAP3 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x2D8F SWAP2 SWAP1 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2DCC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2DD1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x29C3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2E4D PUSH2 0x2F51 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 LT DUP1 ISZERO PUSH2 0x2E80 JUMPI POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT JUMPDEST PUSH2 0x2EE6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564552464C4F57000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP1 DUP4 AND OR PUSH1 0x7 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH32 0xCF2AA50876CDFBB541206F89AF0EE78D44A2ABF8D328E37FA4917F982149848A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2FA1 PUSH32 0x0 PUSH2 0x967 PUSH32 0x0 PUSH2 0x29CA JUMP JUMPDEST SWAP2 POP PUSH2 0x2616 PUSH32 0x0 PUSH2 0x967 PUSH32 0x0 PUSH2 0x29CA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x3025 SWAP1 DUP5 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD DUP2 SWAP1 MSTORE SWAP2 DUP3 SWAP2 PUSH32 0x0 AND SWAP1 PUSH32 0xDA5139CA00000000000000000000000000000000000000000000000000000000 SWAP1 PUSH1 0x84 ADD PUSH2 0x2698 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2710 PUSH2 0x3135 PUSH32 0x0 DUP5 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x313F SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2710 PUSH1 0x6 SLOAD DUP4 PUSH2 0x3154 SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x315E SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0x318D DUP5 DUP3 PUSH32 0x0 PUSH1 0x0 PUSH2 0x2AE3 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 ISZERO DUP1 PUSH2 0x31A2 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x31B2 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x328E JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x31BF DUP6 DUP10 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x31C9 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP DUP6 DUP2 GT PUSH2 0x3224 JUMPI PUSH2 0x31DF PUSH2 0x2710 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x31E9 DUP3 DUP9 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x3213 SWAP1 PUSH32 0x0 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x321D SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP2 POP PUSH2 0x328C JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x3231 DUP8 DUP10 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x323B SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0x324A PUSH2 0x2710 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3254 DUP3 DUP11 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x327E SWAP1 PUSH32 0x0 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3288 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP4 POP POP JUMPDEST POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x32C4 PUSH32 0x0 DUP6 PUSH2 0x3B16 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x32F2 PUSH32 0x0 DUP6 PUSH2 0x3B16 JUMP JUMPDEST SWAP1 POP PUSH2 0x32FE DUP3 DUP3 PUSH2 0x3378 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3319 SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x307A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3385 DUP4 DUP6 PUSH2 0x3AC3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3391 JUMPI PUSH1 0x0 SWAP2 POP JUMPDEST PUSH1 0x0 DUP2 DUP2 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x34C1 JUMPI PUSH1 0x0 PUSH1 0x4 DUP8 DUP5 DUP11 PUSH2 0x33B1 DUP3 DUP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x33BB SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x33C5 SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x33CF SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x33D9 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP DUP3 SWAP4 POP DUP1 PUSH1 0x3 PUSH2 0x33EB SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH2 0x3419 PUSH1 0x64 PUSH32 0x0 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x3423 SWAP2 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x342D SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3437 SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST DUP4 PUSH2 0x3443 DUP4 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH1 0x64 PUSH2 0x346F DUP10 PUSH32 0x0 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3479 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x3483 SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST PUSH2 0x348D SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3497 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP3 POP PUSH2 0x34A3 DUP4 DUP6 PUSH2 0x35FD JUMP JUMPDEST ISZERO PUSH2 0x34AE JUMPI POP PUSH2 0x34C1 JUMP JUMPDEST POP DUP1 PUSH2 0x34B9 DUP2 PUSH2 0x3B96 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3396 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x34D9 DUP5 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x34E3 DUP5 DUP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x34ED SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x64 PUSH2 0x351C PUSH32 0x0 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3526 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x3530 DUP5 DUP4 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x353A SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH2 0x356A PUSH1 0x64 DUP7 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3574 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x357E SWAP1 DUP7 PUSH2 0x3AC3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 SWAP4 POP PUSH1 0x0 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x1B4D JUMPI DUP5 SWAP2 POP DUP6 DUP4 PUSH2 0x35A2 DUP5 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x35AC SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST PUSH2 0x35B6 SWAP2 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST DUP5 PUSH2 0x35C1 DUP8 DUP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x35CB SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST PUSH2 0x35D5 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP5 POP PUSH2 0x35E1 DUP6 DUP4 PUSH2 0x35FD JUMP JUMPDEST ISZERO PUSH2 0x35EB JUMPI PUSH2 0x1B4D JUMP JUMPDEST DUP1 PUSH2 0x35F5 DUP2 PUSH2 0x3B96 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3588 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 GT ISZERO PUSH2 0x3614 JUMPI POP PUSH1 0x1 DUP2 DUP4 SUB GT ISZERO PUSH2 0xD88 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 SUB GT ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2ADC DUP2 PUSH2 0x3C5C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3651 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x365C DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x366C DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x367C DUP2 PUSH2 0x3C81 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x369F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x36AA DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x36BA DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x36CA DUP2 PUSH2 0x3C81 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x36EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3702 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3714 JUMPI PUSH2 0x3714 PUSH2 0x3C2D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x375A JUMPI PUSH2 0x375A PUSH2 0x3C2D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP12 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x37AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x37B6 DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x37C6 DUP2 PUSH2 0x3C81 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x37E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x37EF DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x381B DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x37C6 DUP2 PUSH2 0x3C5C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x384B DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x385B DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3887 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x3892 DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x38A2 DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x38C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x38F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2ADC DUP2 PUSH2 0x3C81 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3913 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x392B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x393F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x394E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3960 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3984 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x39A3 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3B6A JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x39E7 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3B6A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3A3F JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3A0D JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3AA3 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3A68 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2ADC PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x398B JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3AD6 JUMPI PUSH2 0x3AD6 PUSH2 0x3BCF JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3B11 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3B4E JUMPI PUSH2 0x3B4E PUSH2 0x3BCF JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3B65 JUMPI PUSH2 0x3B65 PUSH2 0x3BCF JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3B85 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3B6D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2E3C JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x3BC8 JUMPI PUSH2 0x3BC8 PUSH2 0x3BCF JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3C7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3C7E JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP13 0xB1 PUSH14 0x62DE4D77A08746B141626254DE45 0xCD PUSH18 0x86356A32265015F50F4A7712B164736F6C63 NUMBER STOP ADDMOD SMOD STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH12 0xAB0A3FAAD22B53E9CBAA3B83 CREATE LOG0 MUL PUSH24 0xD9D7565E330A6ACA4FB2D44DDD1B5E64736F6C6343000807 STOP CALLER ",
              "sourceMap": "269:1107:55:-:0;;;328:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;378:15;-1:-1:-1;;;;;634:29:44;;630:55;;672:13;;-1:-1:-1;;;672:13:44;;;;;;;;;;;630:55;695:32;;-1:-1:-1;;;;;;695:32:44;;;-1:-1:-1;269:1107:55;;14:290:64;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:64;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:64:o;:::-;269:1107:55;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_registerPool_11818": {
                  "entryPoint": 1360,
                  "id": 11818,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@configAddress_11692": {
                  "entryPoint": null,
                  "id": 11692,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@deployPool_21412": {
                  "entryPoint": 520,
                  "id": 21412,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getPools_11886": {
                  "entryPoint": 1063,
                  "id": 11886,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@masterDeployer_11681": {
                  "entryPoint": null,
                  "id": 11681,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@poolsCount_11837": {
                  "entryPoint": null,
                  "id": 11837,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@pools_11688": {
                  "entryPoint": 437,
                  "id": 11688,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_uint256t_uint256t_address_payablet_address_payablet_bool_fromMemory": {
                  "entryPoint": 2240,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 7
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 2392,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 2454,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256": {
                  "entryPoint": 2524,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 2599,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_memory_ptr": {
                  "entryPoint": 2625,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_address_t_address_t_bool__to_t_address_t_address_t_uint256_t_uint256_t_address_t_address_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 8,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 2842,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed": {
                  "entryPoint": 2934,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 3082,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "increment_t_uint256": {
                  "entryPoint": 3109,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 3169,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 3216,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 3263,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 3310,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:7184:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "226:761:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "273:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "282:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "285:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "275:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "275:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "275:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "247:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "256:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "243:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "243:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "268:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "239:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "239:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "236:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "298:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "317:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "311:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "311:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "302:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "361:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "336:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "336:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "336:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "376:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "386:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "376:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "400:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "425:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "436:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "421:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "421:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "415:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "415:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "404:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "474:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "449:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "449:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "449:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "491:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "501:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "491:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "517:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "537:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "548:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "533:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "533:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "527:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "527:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "517:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "561:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "581:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "592:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "577:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "577:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "571:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "571:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "561:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "605:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "630:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "641:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "626:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "626:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "620:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "620:26:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "609:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "680:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "655:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "655:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "655:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "697:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "707:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "697:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "723:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "748:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "759:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "744:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "744:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "738:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "738:26:64"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "727:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "798:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "773:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "773:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "773:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "815:17:64",
                              "value": {
                                "name": "value_3",
                                "nodeType": "YulIdentifier",
                                "src": "825:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "815:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "841:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "866:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "877:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "862:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "862:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "856:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "856:26:64"
                              },
                              "variables": [
                                {
                                  "name": "value_4",
                                  "nodeType": "YulTypedName",
                                  "src": "845:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "939:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "948:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "951:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "941:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "941:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "941:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "904:7:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "927:7:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "920:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "920:15:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "913:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "913:23:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "901:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "901:36:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "894:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "894:44:64"
                              },
                              "nodeType": "YulIf",
                              "src": "891:64:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "964:17:64",
                              "value": {
                                "name": "value_4",
                                "nodeType": "YulIdentifier",
                                "src": "974:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "964:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_uint256t_uint256t_address_payablet_address_payablet_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "144:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "155:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "167:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "175:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "183:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "191:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "199:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "207:6:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "215:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:973:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1079:301:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1125:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1134:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1137:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1127:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1127:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1127:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1100:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1109:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1096:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1096:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1121:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1092:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1092:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1089:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1150:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1176:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1163:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1163:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1154:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1220:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1195:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1195:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1195:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1235:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1245:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1235:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1259:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1291:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1302:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1287:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1287:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1274:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1274:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1263:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1340:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1315:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1315:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1315:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1357:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1367:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1357:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1037:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1048:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1060:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1068:6:64",
                            "type": ""
                          }
                        ],
                        "src": "992:388:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1489:352:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1535:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1544:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1547:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1537:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1537:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1537:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1510:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1519:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1506:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1506:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1531:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1502:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1502:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1499:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1560:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1586:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1573:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1573:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1564:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1630:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1605:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1605:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1605:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1645:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1655:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1645:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1669:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1701:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1712:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1697:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1697:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1684:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1684:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1673:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1750:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1725:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1725:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1725:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1767:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1777:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1767:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1793:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1820:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1831:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1816:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1816:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1803:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1803:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1793:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1439:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1450:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1462:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1470:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1478:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1385:456:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1967:404:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2014:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2023:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2026:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2016:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2016:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2016:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1988:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1997:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1984:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1984:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2009:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1980:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1980:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1977:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2039:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2065:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2052:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2052:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2043:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2109:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2084:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2084:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2084:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2124:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2134:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2124:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2148:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2180:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2191:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2176:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2176:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2163:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2163:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2152:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2229:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2204:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2204:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2204:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2246:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "2256:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2246:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2272:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2299:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2310:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2295:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2295:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2282:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2282:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2272:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2323:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2350:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2361:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2346:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2346:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2333:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2333:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2323:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1909:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1920:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1932:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1940:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1948:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1956:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1846:525:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2446:110:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2492:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2501:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2504:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2494:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2494:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2494:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2467:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2476:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2463:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2463:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2488:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2459:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2459:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2456:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2517:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2540:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2527:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2527:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2517:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2412:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2423:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2435:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2376:180:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2640:901:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2686:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2695:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2698:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2688:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2688:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2688:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2661:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2670:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2657:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2657:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2682:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2653:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2653:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2650:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2711:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2738:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2725:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2725:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2715:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2757:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2767:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2761:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2812:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2821:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2824:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2814:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2814:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2814:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2800:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2808:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2797:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2797:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2794:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2837:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2851:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2862:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2847:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2847:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2841:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2917:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2926:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2929:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2919:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2919:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2919:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2896:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2900:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2892:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2892:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2907:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2888:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2888:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2881:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2881:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2878:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2942:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2965:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2952:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2952:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2946:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2991:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2993:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2993:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2993:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2983:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2987:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2980:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2980:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2977:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3022:76:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3032:66:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "3026:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3107:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3127:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3121:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3121:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "3111:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3139:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3161:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3185:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3189:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3181:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3181:13:64"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "3196:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "3177:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3177:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3201:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3173:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3173:31:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "3206:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3169:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3169:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3157:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3157:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "3143:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3269:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "3271:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3271:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3271:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3228:10:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3240:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3225:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3225:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3248:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3260:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3245:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3245:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "3222:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3222:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3219:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3307:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3311:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3300:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3300:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3300:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3338:6:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3346:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3331:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3331:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3331:18:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3395:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3404:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3407:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3397:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3397:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3397:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "3372:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3376:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3368:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3368:11:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3381:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3364:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3364:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3386:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3361:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3361:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3358:53:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3437:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3445:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3433:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3433:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3454:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3458:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3450:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3450:11:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3463:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "3420:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3420:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3420:46:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "3490:6:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3498:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3486:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3486:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3503:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3482:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3482:24:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3508:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3475:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3475:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3475:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3519:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "3529:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3519:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2606:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2617:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2629:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2561:980:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3647:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3657:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3669:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3680:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3665:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3665:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3657:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3699:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3714:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3722:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3710:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3710:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3692:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3692:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3692:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3616:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3627:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3638:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3546:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4040:451:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4050:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4062:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4073:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4058:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4058:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4050:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4086:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4096:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4090:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4154:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4169:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4177:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4165:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4165:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4147:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4147:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4147:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4201:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4212:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4197:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4197:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4221:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4229:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4217:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4217:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4190:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4190:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4190:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4253:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4264:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4249:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4249:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4269:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4242:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4242:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4242:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4296:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4307:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4292:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4292:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4312:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4285:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4285:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4285:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4339:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4350:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4335:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4335:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "4360:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4368:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4356:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4356:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4328:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4328:44:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4328:44:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4392:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4403:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4388:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4388:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "4413:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4421:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4409:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4409:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4381:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4381:44:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4381:44:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4445:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4456:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4441:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4441:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value6",
                                            "nodeType": "YulIdentifier",
                                            "src": "4476:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "4469:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4469:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "4462:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4462:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4434:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4434:51:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4434:51:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_address_t_address_t_bool__to_t_address_t_address_t_uint256_t_uint256_t_address_t_address_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3961:9:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "3972:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "3980:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3988:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3996:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4004:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4012:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4020:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4031:4:64",
                            "type": ""
                          }
                        ],
                        "src": "3777:714:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4647:530:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4657:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4667:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4661:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4678:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4696:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4707:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4692:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4692:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4682:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4726:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4737:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4719:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4719:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4719:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4749:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "4760:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "4753:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4775:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4795:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4789:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4789:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "4779:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4818:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4826:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4811:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4811:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4811:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4842:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4853:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4864:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4849:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4849:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "4842:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4876:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4894:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4902:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4890:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4890:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4880:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4914:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4923:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "4918:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4982:169:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "5003:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5018:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "5012:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5012:13:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5027:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "5008:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5008:62:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4996:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4996:75:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4996:75:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5084:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "5095:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5100:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "5091:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5091:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5084:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5116:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "5130:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5138:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "5126:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5126:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5116:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4944:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4947:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4941:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4941:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4955:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4957:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "4966:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4969:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4962:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4962:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "4957:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4937:3:64",
                                "statements": []
                              },
                              "src": "4933:218:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5160:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "5168:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5160:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4616:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4627:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4638:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4496:681:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5329:612:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5346:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5357:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5339:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5339:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5339:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5369:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "5389:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5383:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5383:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "5373:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5416:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5427:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5412:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5412:18:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5432:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5405:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5405:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5405:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5448:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5457:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "5452:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5519:92:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5548:9:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5559:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "5544:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5544:17:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5563:2:64",
                                              "type": "",
                                              "value": "96"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "5540:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5540:26:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5582:6:64"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5590:1:64"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5578:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "5578:14:64"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "5594:4:64",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "5574:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5574:25:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "5568:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5568:32:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5533:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5533:68:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5533:68:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "5478:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5481:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5475:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5475:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "5489:21:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5491:17:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "5500:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5503:4:64",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "5496:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5496:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "5491:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "5471:3:64",
                                "statements": []
                              },
                              "src": "5467:144:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5645:66:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5674:9:64"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5685:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "5670:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "5670:22:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "5694:2:64",
                                              "type": "",
                                              "value": "96"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "5666:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5666:31:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5699:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5659:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5659:42:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5659:42:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "5626:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "5629:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5623:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5623:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5620:91:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5720:121:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5736:9:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "5755:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5763:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5751:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5751:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5768:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "5747:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5747:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5732:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5732:104:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5838:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5728:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5728:113:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5720:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5861:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5872:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5857:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5857:20:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5883:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5891:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5879:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5879:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5850:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5850:85:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5850:85:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5290:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5301:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5309:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5320:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5182:759:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6047:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6057:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6069:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6080:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6065:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6065:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6057:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6099:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "6110:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6092:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6092:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6092:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6016:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6027:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6038:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5946:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6176:80:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6203:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "6205:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6205:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6205:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "6192:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "6199:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "6195:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6195:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6189:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6189:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6186:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6234:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "6245:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "6248:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6241:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6241:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "6234:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "6159:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "6162:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "6168:3:64",
                            "type": ""
                          }
                        ],
                        "src": "6128:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6308:148:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6399:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "6401:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6401:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6401:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6324:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6331:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "6321:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6321:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6318:103:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6430:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6441:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6448:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6437:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6437:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "6430:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6290:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "6300:3:64",
                            "type": ""
                          }
                        ],
                        "src": "6261:195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6493:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6510:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6513:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6503:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6503:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6503:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6607:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6610:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6600:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6600:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6600:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6631:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6634:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6624:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6624:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6624:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6461:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6682:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6699:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6702:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6692:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6692:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6692:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6796:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6799:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6789:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6789:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6789:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6820:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6823:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "6813:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6813:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6813:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6650:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6871:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6888:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6891:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6881:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6881:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6881:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6985:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6988:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6978:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6978:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6978:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7009:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7012:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "7002:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7002:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7002:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "6839:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7073:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7160:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7169:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7172:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7162:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7162:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7162:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7096:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "7107:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7114:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "7103:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7103:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "7093:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7093:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7086:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7086:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7083:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "7062:5:64",
                            "type": ""
                          }
                        ],
                        "src": "7028:154:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_payablet_address_payablet_uint256t_uint256t_address_payablet_address_payablet_bool_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := mload(add(headStart, 64))\n        value3 := mload(add(headStart, 96))\n        let value_2 := mload(add(headStart, 128))\n        validator_revert_address(value_2)\n        value4 := value_2\n        let value_3 := mload(add(headStart, 160))\n        validator_revert_address(value_3)\n        value5 := value_3\n        let value_4 := mload(add(headStart, 192))\n        if iszero(eq(value_4, iszero(iszero(value_4)))) { revert(0, 0) }\n        value6 := value_4\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_bytes_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value0 := memPtr\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_address_t_address_t_bool__to_t_address_t_address_t_uint256_t_uint256_t_address_t_address_t_bool__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 224)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, _1))\n        mstore(add(headStart, 160), and(value5, _1))\n        mstore(add(headStart, 192), iszero(iszero(value6)))\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr_t_address__to_t_bytes_memory_ptr_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, 64)\n        let length := mload(value0)\n        mstore(add(headStart, 64), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(add(headStart, i), 96), mload(add(add(value0, i), 0x20)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 96), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 96)\n        mstore(add(headStart, 0x20), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "11681": [
                  {
                    "length": 32,
                    "start": 346
                  },
                  {
                    "length": 32,
                    "start": 944
                  },
                  {
                    "length": 32,
                    "start": 1384
                  }
                ]
              },
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b50600436106200007b5760003560e01c806371a25812116200005657806371a25812146200012e578063cf58879a1462000154578063f6ab6d99146200017c57600080fd5b8063169c4cef146200008057806327c3cae114620000c15780635bc93d6c14620000d8575b600080fd5b620000976200009136600462000996565b620001b5565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b62000097620000d236600462000a41565b62000208565b6200011f620000e936600462000958565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526020818152604080832093909416825291909152205490565b604051908152602001620000b8565b620001456200013f366004620009dc565b62000427565b604051620000b8919062000b1a565b620000977f000000000000000000000000000000000000000000000000000000000000000081565b620000976200018d36600462000a27565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60006020528260005260406000206020528160005260406000208181548110620001de57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16925083915050565b600080600080600080600080888060200190518101906200022a9190620008c0565b96509650965096509650965096508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16111562000271579495945b6040805173ffffffffffffffffffffffffffffffffffffffff808a16602083015280891692820192909252606081018790526080810186905281851660a082015290831660c082015281151560e082015261010001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181526002808452606084019092529a506000919081602001602082028036833701905050905087816000815181106200032c576200032c62000c90565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505086816001815181106200037d576200037d62000c90565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091018201528a51908b012060405181908c907f000000000000000000000000000000000000000000000000000000000000000090620003db90620008b2565b620003e892919062000b76565b8190604051809103906000f590508015801562000409573d6000803e3d6000fd5b509950620004198a838362000550565b505050505050505050919050565b60608167ffffffffffffffff81111562000445576200044562000cbf565b6040519080825280602002602001820160405280156200046f578160200160208202803683370190505b50905060005b82811015620005475773ffffffffffffffffffffffffffffffffffffffff808716600090815260208181526040808320938916835292905220620004ba828662000c0a565b81548110620004cd57620004cd62000c90565b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168282815181106200050d576200050d62000c90565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152806200053e8162000c25565b91505062000475565b50949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614620005c0576040517f03781a5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260016020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790555b6001835103811015620008ac5782816001018151811062000632576200063262000c90565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1683828151811062000665576200066562000c90565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1610620006bb576040517f3f06bf8100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015b8351811015620008a257600080858481518110620006e257620006e262000c90565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008583815181106200073b576200073b62000c90565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff90811683528282019390935260409091016000908120805460018101825590825291812090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915584518190869084908110620007ca57620007ca62000c90565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085848151811062000823576200082362000c90565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff908116835282820193909352604090910160009081208054600180820183559183529290912090910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169288169290921790915501620006c0565b506001016200060d565b50505050565b6149d68062000d1583390190565b600080600080600080600060e0888a031215620008dc57600080fd5b8751620008e98162000cee565b6020890151909750620008fc8162000cee565b80965050604088015194506060880151935060808801516200091e8162000cee565b60a0890151909350620009318162000cee565b60c089015190925080151581146200094857600080fd5b8091505092959891949750929550565b600080604083850312156200096c57600080fd5b8235620009798162000cee565b915060208301356200098b8162000cee565b809150509250929050565b600080600060608486031215620009ac57600080fd5b8335620009b98162000cee565b92506020840135620009cb8162000cee565b929592945050506040919091013590565b60008060008060808587031215620009f357600080fd5b843562000a008162000cee565b9350602085013562000a128162000cee565b93969395505050506040820135916060013590565b60006020828403121562000a3a57600080fd5b5035919050565b60006020828403121562000a5457600080fd5b813567ffffffffffffffff8082111562000a6d57600080fd5b818401915084601f83011262000a8257600080fd5b81358181111562000a975762000a9762000cbf565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171562000ae05762000ae062000cbf565b8160405282815287602084870101111562000afa57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6020808252825182820181905260009190848201906040850190845b8181101562000b6a57835173ffffffffffffffffffffffffffffffffffffffff168352928401929184019160010162000b36565b50909695505050505050565b604081526000835180604084015260005b8181101562000ba6576020818701810151606086840101520162000b87565b8181111562000bb9576000606083860101525b5073ffffffffffffffffffffffffffffffffffffffff93909316602083015250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601606001919050565b6000821982111562000c205762000c2062000c61565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000c5a5762000c5a62000c61565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811462000d1157600080fd5b5056fe6101e06040523480156200001257600080fd5b50604051620049d6380380620049d68339810160408190526200003591620007ab565b604080518082018252601981527f5375736869204672616e636869736564204c5020546f6b656e000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f49bb029ad7c8a58c6232657178b278e20c3bd1f3b0084072e3a97b185e1aac5f918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c001604051602081830303815290604052805190602001206080818152505060008060008060008060008880602001905181019062000142919062000713565b965096509650965096509650965060006001600160a01b0316876001600160a01b03161415620001a85760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064015b60405180910390fd5b856001600160a01b0316876001600160a01b031614156200020c5760405162461bcd60e51b815260206004820152601360248201527f4944454e544943414c5f4144445245535345530000000000000000000000000060448201526064016200019f565b612710851115620002535760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f535741505f46454560801b60448201526064016200019f565b836200028b5760405162461bcd60e51b81526020600482015260066024820152655a45524f5f4160d01b60448201526064016200019f565b620002a38383836200068a60201b620023931760201c565b60408051600481526024810182526020810180516001600160e01b03166360a56c0160e11b17905290516000916001600160a01b038b1691620002e79190620008b7565b600060405180830381855afa9150503d806000811462000324576040519150601f19603f3d011682016040523d82523d6000602084013e62000329565b606091505b5060408051600481526024810182526020810180516001600160e01b0316630605066960e11b1790529051919350600092506001600160a01b038c1691620003729190620008b7565b600060405180830381855afa9150503d8060008114620003af576040519150601f19603f3d011682016040523d82523d6000602084013e620003b4565b606091505b5060408051600481526024810182526020810180516001600160e01b0316634da3182760e01b1790529051919350600092506001600160a01b038d1691620003fd9190620008b7565b600060405180830381855afa9150503d80600081146200043a576040519150601f19603f3d011682016040523d82523d6000602084013e6200043f565b606091505b5060408051600481526024810182526020810180516001600160e01b031663313ce56760e01b1790529051919350600092506001600160a01b038d1691620004889190620008b7565b600060405180830381855afa9150503d8060008114620004c5576040519150601f19603f3d011682016040523d82523d6000602084013e620004ca565b606091505b5060408051600481526024810182526020810180516001600160e01b031663313ce56760e01b1790529051919350600092506001600160a01b038d1691620005139190620008b7565b600060405180830381855afa9150503d806000811462000550576040519150601f19603f3d011682016040523d82523d6000602084013e62000555565b606091505b506001600160601b031960608f811b8216610120528e901b166101405260a08c905286519092506200059291508601602090810190870162000878565b6006558351620005ac9085016020908101908601620006ec565b60601b6001600160601b03191660c0528251620005d39060209085018101908501620006ec565b6001600160601b0319606091821b811660e052908e901b166101005261016089905262000602896002620009df565b6101805281516200061d908301602090810190840162000892565b6200062a90601262000a01565b6200063790600a6200091e565b6101a052805162000652908201602090810190830162000892565b6200065f90601262000a01565b6200066c90600a6200091e565b6101c052505060016008555062000a9f9a5050505050505050505050565b600080546001600160a01b038086166001600160a01b03199283161790925560018054928516929091169190911790558015620006d5576001805460ff60a01b1916600160a01b1790555b505050565b8051620006e78162000a86565b919050565b600060208284031215620006ff57600080fd5b81516200070c8162000a86565b9392505050565b600080600080600080600060e0888a0312156200072f57600080fd5b87516200073c8162000a86565b60208901519097506200074f8162000a86565b8096505060408801519450606088015193506080880151620007718162000a86565b60a0890151909350620007848162000a86565b60c089015190925080151581146200079b57600080fd5b8091505092959891949750929550565b60008060408385031215620007bf57600080fd5b82516001600160401b0380821115620007d757600080fd5b818501915085601f830112620007ec57600080fd5b81518181111562000801576200080162000a70565b604051601f8201601f19908116603f011681019083821181831017156200082c576200082c62000a70565b816040528281528860208487010111156200084657600080fd5b6200085983602083016020880162000a27565b80965050505050506200086f60208401620006da565b90509250929050565b6000602082840312156200088b57600080fd5b5051919050565b600060208284031215620008a557600080fd5b815160ff811681146200070c57600080fd5b60008251620008cb81846020870162000a27565b9190910192915050565b600181815b8085111562000916578160001904821115620008fa57620008fa62000a5a565b808516156200090857918102915b93841c9390800290620008da565b509250929050565b60006200070c60ff8416836000826200093a57506001620009d9565b816200094957506000620009d9565b81600181146200096257600281146200096d576200098d565b6001915050620009d9565b60ff84111562000981576200098162000a5a565b50506001821b620009d9565b5060208310610133831016604e8410600b8410161715620009b2575081810a620009d9565b620009be8383620008d5565b8060001904821115620009d557620009d562000a5a565b0290505b92915050565b6000816000190483118215151615620009fc57620009fc62000a5a565b500290565b600060ff821660ff84168082101562000a1e5762000a1e62000a5a565b90039392505050565b60005b8381101562000a4457818101518382015260200162000a2a565b8381111562000a54576000848401525b50505050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811462000a9c57600080fd5b50565b60805160a05160c05160601c60e05160601c6101005160601c6101205160601c6101405160601c61016051610180516101a0516101c051613cc562000d11600039600081816104a1015281816127bd0152818161281a015281816128720152818161290901526132cd01526000818161063001528181612791015281816127e901528181612846015281816128e3015261329f0152600081816133f50152818161344b015281816134f60152613540015260006107110152600081816106ac0152818161084d015281816108f0015281816109e901528181610ac401528181610b7001528181610b94015281816110290152818161108b015281816111790152818161137c015281816113d50152818161160101528181611a8a01528181611d0c01528181611dc501528181611eeb01528181611f77015281816125f101528181612fa80152612fcc01526000818161037c015281816107f9015281816108730152818161091f0152818161094301528181610a9e01528181610b4101528181610ffd0152818161105501528181611110015281816113270152818161148b0152818161159301528181611a2201528181611d6501528181611df101528181611e3101528181611f4b015281816125c501528181612f590152612f7d015260008181610685015261192501526000818161047a0152818161265101528181612a5701528181612b8601528181612c7e01526130bb01526000818161033001528181610c3601526131670152600081816104c8015281816108a201528181610af3015281816119e501528181613110015281816131ef015261325a01526000818161044001526120be0152613cc56000f3fe608060405234801561001057600080fd5b50600436106102775760003560e01c8063627dd56a11610160578063a9059cbb116100d8578063cf58879a1161008c578063d505accf11610071578063d505accf146106ce578063dd62ed3e146106e1578063f446c1d01461070c57600080fd5b8063cf58879a14610680578063d21220a7146106a757600080fd5b8063baa8c7cb116100bd578063baa8c7cb1461062b578063bc3377d914610652578063c14ad8021461067757600080fd5b8063a9059cbb14610605578063af8c09bf1461061857600080fd5b80637ecebe001161012f57806395d89b411161011457806395d89b411461058f578063a69840a8146105cb578063a8f1f52e146105f257600080fd5b80637ecebe001461056557806392bc32191461058557600080fd5b8063627dd56a1461050a57806367e4ac2c1461051d57806370a08231146105325780637ba0e2e71461055257600080fd5b80632a07b6c7116101f3578063499a3c50116101c25780634e25dc47116101a75780634e25dc471461049c57806354cf2aeb146104c3578063570ca735146104ea57600080fd5b8063499a3c50146104625780634da318271461047557600080fd5b80632a07b6c7146103da57806330adf81f146103fa578063313ce567146104215780633644e5151461043b57600080fd5b80630c0a0cd21161024a57806318160ddd1161022f57806318160ddd1461039e57806323b872dd146103a757806325a93264146103ba57600080fd5b80630c0a0cd21461032b5780630dfe16811461037757600080fd5b8063053da1c81461027c57806306fdde03146102a25780630902f1ac146102eb578063095ea7b314610308575b600080fd5b61028f61028a366004613900565b610733565b6040519081526020015b60405180910390f35b6102de6040518060400160405280601981526020017f5375736869204672616e636869736564204c5020546f6b656e0000000000000081525081565b6040516102999190613ab0565b6102f3610d00565b60408051928352602083019190915201610299565b61031b6103163660046137d1565b610d14565b6040519015158152602001610299565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610299565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b61028f60025481565b61031b6103b536600461382b565b610d8e565b6000546103529073ffffffffffffffffffffffffffffffffffffffff1681565b6103ed6103e8366004613900565b610f09565b6040516102999190613a4b565b61028f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610429601281565b60405160ff9091168152602001610299565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b61028f610470366004613900565b611246565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b6001546103529073ffffffffffffffffffffffffffffffffffffffff1681565b61028f610518366004613900565b61124d565b610525611571565b60405161029991906139f1565b61028f61054036600461361f565b60036020526000908152604090205481565b61028f610560366004613900565b611670565b61028f61057336600461361f565b60056020526000908152604090205481565b61058d6118b3565b005b6102de6040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b61028f7f54726964656e743a4672616e636869736564487962726964000000000000000081565b61028f610600366004613900565b6119ae565b61031b6106133660046137d1565b611b57565b61028f610626366004613900565b611c09565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b60015461031b9074010000000000000000000000000000000000000000900460ff1681565b61028f60065481565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b6103527f000000000000000000000000000000000000000000000000000000000000000081565b61058d6106dc36600461386c565b61202b565b61028f6106ef3660046137fd565b600460209081526000928352604080842090915290825290205481565b61028f7f000000000000000000000000000000000000000000000000000000000000000081565b60006008546001146107a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60026008556000808080806107bd87890189613687565b94509450945094509450600160149054906101000a900460ff16156107e5576107e584612433565b6000806107f0612593565b915091506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614156109e7577f000000000000000000000000000000000000000000000000000000000000000091506108987f00000000000000000000000000000000000000000000000000000000000000008761261c565b95506127106108c77f000000000000000000000000000000000000000000000000000000000000000088613b16565b6108d19190613adb565b90506108e96108e08288613b53565b85856001612781565b99506109187f0000000000000000000000000000000000000000000000000000000000000000898c888b612941565b600061096c7f00000000000000000000000000000000000000000000000000000000000000006109677f00000000000000000000000000000000000000000000000000000000000000006129ca565b61261c565b9050866109798683613b53565b10156109e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e00000000000000000000604482015260640161079d565b50610c2f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614610a9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e00000000000000000000000000604482015260640161079d565b7f00000000000000000000000000000000000000000000000000000000000000009150610ae97f00000000000000000000000000000000000000000000000000000000000000008761261c565b9550612710610b187f000000000000000000000000000000000000000000000000000000000000000088613b16565b610b229190613adb565b9050610b3a610b318288613b53565b85856000612781565b9950610b697f0000000000000000000000000000000000000000000000000000000000000000898c888b612941565b6000610bb87f00000000000000000000000000000000000000000000000000000000000000006109677f00000000000000000000000000000000000000000000000000000000000000006129ca565b905086610bc58583613b53565b1015610c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f494e53554646494349454e545f414d4f554e545f494e00000000000000000000604482015260640161079d565b505b610c5c89827f00000000000000000000000000000000000000000000000000000000000000006000612ae3565b610c64612e42565b8173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062898e604051610ce3929190918252602082015260400190565b60405180910390a450506001600855509598975050505050505050565b600080610d0b612593565b90939092509050565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d7c9086815260200190565b60405180910390a35060015b92915050565b60015460009074010000000000000000000000000000000000000000900460ff1615610dbd57610dbd83612433565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610e5a5773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915281208054849290610e54908490613b53565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526003602052604081208054849290610e8f908490613b53565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260036020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ef79086815260200190565b60405180910390a35060019392505050565b6060600854600114610f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b45440000000000000000000000000000000000000000000000000000604482015260640161079d565b6002600855600080610f8b84860186613798565b91509150610f9882612433565b600080610fa3612f51565b60025430600090815260036020526040812054939550919350919082610fc98684613b16565b610fd39190613adb565b9050600083610fe28685613b16565b610fec9190613adb565b9050610ff83084612ff0565b6110247f0000000000000000000000000000000000000000000000000000000000000000838a8a612ae3565b6110507f0000000000000000000000000000000000000000000000000000000000000000828a8a612ae3565b61107a7f000000000000000000000000000000000000000000000000000000000000000083613086565b6110849087613b53565b95506110b07f000000000000000000000000000000000000000000000000000000000000000082613086565b6110ba9086613b53565b94506110c4612e42565b6040805160028082526060820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816110da57905050985060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168152602001838152508960008151811061116157611161613bfe565b602002602001018190525060405180604001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16815260200182815250896001815181106111ca576111ca613bfe565b60209081029190910181019190915260408051848152918201839052810184905273ffffffffffffffffffffffffffffffffffffffff89169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a3505060016008555094979650505050505050565b6000806000fd5b60006008546001146112bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b45440000000000000000000000000000000000000000000000000000604482015260640161079d565b6002600855600080806112d08587018761363c565b600154929550909350915074010000000000000000000000000000000000000000900460ff16156113045761130482612433565b60008061130f612593565b9150915060008061131e612f51565b915091506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614156113d357507f00000000000000000000000000000000000000000000000000000000000000006113a58685613b53565b915060006113b38a84613106565b90506113cb6113c28285613b53565b88886001612781565b9a50506114de565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614611488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e00000000000000000000000000604482015260640161079d565b507f00000000000000000000000000000000000000000000000000000000000000006114b48584613b53565b915060006114c28a84613106565b90506114da6114d18285613b53565b88886000612781565b9a50505b6114ea818b8a8a612ae3565b6114f2612e42565b8073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062858e604051610ce3929190918252602082015260400190565b60408051600280825260608083018452926020830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106115c5576115c5613bfe565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061163357611633613bfe565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505090565b60006008546001146116de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b45440000000000000000000000000000000000000000000000000000604482015260640161079d565b600260085560006116f18385018561361f565b90506116fc81612433565b600080611707612593565b91509150600080611716612f51565b6002549193509150600061172a8685613b53565b905060006117388685613b53565b905060008061174984848b8b613194565b9092509050600061176c61175d848a613b53565b611767848a613b53565b613297565b9050856117935761177f6103e882613b53565b9b5061178e60006103e8613307565b6117c5565b600061179f8b8b613297565b905080876117ad8285613b53565b6117b79190613b16565b6117c19190613adb565b9c50505b8b61182c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e544544000000604482015260640161079d565b6118368b8d613307565b61183e612e42565b60408051868152602081018690529081018d90528c9073ffffffffffffffffffffffffffffffffffffffff8d169033907ff9c32fbc56ff04f32a233ebc26e388564223745e28abd8d0781dd906537f563e9060600160405180910390a35050600160085550989b9a5050505050505050505050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc14ad80200000000000000000000000000000000000000000000000000000000179052905160009173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169161195091906139d5565b600060405180830381855afa9150503d806000811461198b576040519150601f19603f3d011682016040523d82523d6000602084013e611990565b606091505b50915050808060200190518101906119a89190613972565b60065550565b600080806119be848601866137d1565b915091506000806119cd612593565b915091506119db848461261c565b9250612710611a0a7f000000000000000000000000000000000000000000000000000000000000000085613b16565b611a149190613adb565b611a1e9084613b53565b92507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611a8857611a818383836001612781565b9450611b4d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f494e56414c49445f494e5055545f544f4b454e00000000000000000000000000604482015260640161079d565b611b4a8383836000612781565b94505b5050505092915050565b60015460009074010000000000000000000000000000000000000000900460ff1615611b8657611b8683612433565b3360009081526003602052604081208054849290611ba5908490613b53565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d7c9086815260200190565b6000600854600114611c77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b45440000000000000000000000000000000000000000000000000000604482015260640161079d565b600260085560008080611c8c8587018761363c565b925092509250611c9b82612433565b600080611ca6612593565b91509150600080611cb5612f51565b60025430600090815260036020526040812054939550919350919082611cdb8684613b16565b611ce59190613adb565b9050600083611cf48685613b16565b611cfe9190613adb565b9050611d0a3084612ff0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff161415611e2f576000611d8a7f000000000000000000000000000000000000000000000000000000000000000084613106565b9050611db4611d998285613b53565b611da3858c613b53565b611dad858c613b53565b6001612781565b611dbe9083613ac3565b9150611dec7f0000000000000000000000000000000000000000000000000000000000000000838d8d612ae3565b611e167f000000000000000000000000000000000000000000000000000000000000000084613086565b611e209088613b53565b9650819c506000925050611fb1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614611ee4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f494e56414c49445f4f55545055545f544f4b454e000000000000000000000000604482015260640161079d565b6000611f107f000000000000000000000000000000000000000000000000000000000000000083613106565b9050611f3a611f1f8284613b53565b611f29858c613b53565b611f33858c613b53565b6000612781565b611f449084613ac3565b9250611f727f0000000000000000000000000000000000000000000000000000000000000000848d8d612ae3565b611f9c7f000000000000000000000000000000000000000000000000000000000000000083613086565b611fa69087613b53565b9550829c5060009150505b611fb9612e42565b604080518381526020810183905290810184905273ffffffffffffffffffffffffffffffffffffffff8b169033907fa476cebfbe7485684f5578d84d8a64a8afe93a0a2a3047bd6f3e681e108b8f119060600160405180910390a35050600160085550979a9950505050505050505050565b42841015612095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f45585049524544000000000000000000604482015260640161079d565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080547f0000000000000000000000000000000000000000000000000000000000000000917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b918761211083613b96565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001206040516020016121b19291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa15801561223a573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906122b557508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b61231b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e41545552450000000000000000604482015260640161079d565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526004602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556001805492851692909116919091179055801561242e57600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790555b505050565b600080546001546040805173ffffffffffffffffffffffffffffffffffffffff928316602482015285831660448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1472c27100000000000000000000000000000000000000000000000000000000179052905191909216916124d0916139d5565b600060405180830381855afa9150503d806000811461250b576040519150601f19603f3d011682016040523d82523d6000602084013e612510565b606091505b5091505060008180602001905181019061252a91906138e3565b90508061242e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f545f57484954454c49535445440000000000000000000000000000000000604482015260640161079d565b6007546fffffffffffffffffffffffffffffffff808216917001000000000000000000000000000000009004166125ea7f00000000000000000000000000000000000000000000000000000000000000008361261c565b91506126167f00000000000000000000000000000000000000000000000000000000000000008261261c565b90509091565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526000606483018190529182917f000000000000000000000000000000000000000000000000000000000000000016907f5662311800000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161272191906139d5565b600060405180830381855afa9150503d806000811461275c576040519150601f19603f3d011682016040523d82523d6000602084013e612761565b606091505b50915050808060200190518101906127799190613972565b949350505050565b60008060008315612815576127b67f000000000000000000000000000000000000000000000000000000000000000087613b16565b91506127e27f000000000000000000000000000000000000000000000000000000000000000086613b16565b905061280e7f000000000000000000000000000000000000000000000000000000000000000088613b16565b965061289a565b61283f7f000000000000000000000000000000000000000000000000000000000000000086613b16565b915061286b7f000000000000000000000000000000000000000000000000000000000000000087613b16565b90506128977f000000000000000000000000000000000000000000000000000000000000000088613b16565b96505b60006128a68383613378565b905060006128b48985613ac3565b905060006128c282846134cb565b905060016128d08286613b53565b6128da9190613b53565b955086612907577f0000000000000000000000000000000000000000000000000000000000000000612929565b7f00000000000000000000000000000000000000000000000000000000000000005b6129339087613adb565b9a9950505050505050505050565b61294d85848684612ae3565b8151156129c3576040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152339063bd50c7b190612990908590600401613ab0565b600060405180830381600087803b1580156129aa57600080fd5b505af11580156129be573d6000803e3d6000fd5b505050505b5050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff83811660248301523060448084019190915283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff7888aec00000000000000000000000000000000000000000000000000000000179052915160009283927f000000000000000000000000000000000000000000000000000000000000000090911691612a8491906139d5565b600060405180830381855afa9150503d8060008114612abf576040519150601f19603f3d011682016040523d82523d6000602084013e612ac4565b606091505b5091505080806020019051810190612adc9190613972565b9392505050565b8015612c65576040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260848201869052600060a48084018290528451808503909101815260c490930184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f97da6d300000000000000000000000000000000000000000000000000000000017905292517f000000000000000000000000000000000000000000000000000000000000000090911691612bb2916139d5565b6000604051808303816000865af19150503d8060008114612bef576040519150601f19603f3d011682016040523d82523d6000602084013e612bf4565b606091505b5050905080612c5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f57495448445241575f4641494c45440000000000000000000000000000000000604482015260640161079d565b50612e3c565b600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000167ff18d03cc00000000000000000000000000000000000000000000000000000000863086612ccc838a613086565b60405173ffffffffffffffffffffffffffffffffffffffff9485166024820152928416604484015292166064820152608481019190915260a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051612d8f91906139d5565b6000604051808303816000865af19150503d8060008114612dcc576040519150601f19603f3d011682016040523d82523d6000602084013e612dd1565b606091505b50509050806129c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c45440000000000000000000000000000000000604482015260640161079d565b50505050565b600080612e4d612f51565b90925090506fffffffffffffffffffffffffffffffff82108015612e8057506fffffffffffffffffffffffffffffffff81105b612ee6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4f564552464c4f57000000000000000000000000000000000000000000000000604482015260640161079d565b6fffffffffffffffffffffffffffffffff818116700100000000000000000000000000000000029083161760075560408051838152602081018390527fcf2aa50876cdfbb541206f89af0ee78d44a2abf8d328e37fa4917f982149848a910160405180910390a15050565b600080612fa17f00000000000000000000000000000000000000000000000000000000000000006109677f00000000000000000000000000000000000000000000000000000000000000006129ca565b91506126167f00000000000000000000000000000000000000000000000000000000000000006109677f00000000000000000000000000000000000000000000000000000000000000006129ca565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054839290613025908490613b53565b909155505060028054829003905560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b60405173ffffffffffffffffffffffffffffffffffffffff8381166024830152604482018390526000606483018190529182917f000000000000000000000000000000000000000000000000000000000000000016907fda5139ca0000000000000000000000000000000000000000000000000000000090608401612698565b60006127106131357f000000000000000000000000000000000000000000000000000000000000000084613b16565b61313f9190613adb565b90506000612710600654836131549190613b16565b61315e9190613adb565b905061318d84827f00000000000000000000000000000000000000000000000000000000000000006000612ae3565b5092915050565b6000808315806131a2575082155b156131b25750600090508061328e565b6000846131bf8589613b16565b6131c99190613adb565b9050858111613224576131df6127106002613b16565b6131e98288613b53565b613213907f0000000000000000000000000000000000000000000000000000000000000000613b16565b61321d9190613adb565b915061328c565b6000846132318789613b16565b61323b9190613adb565b905061324a6127106002613b16565b613254828a613b53565b61327e907f0000000000000000000000000000000000000000000000000000000000000000613b16565b6132889190613adb565b9350505b505b94509492505050565b6000806132c47f000000000000000000000000000000000000000000000000000000000000000085613b16565b905060006132f27f000000000000000000000000000000000000000000000000000000000000000085613b16565b90506132fe8282613378565b95945050505050565b80600260008282546133199190613ac3565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161307a565b6000806133858385613ac3565b90508061339157600091505b600081815b6101008110156134c1576000600487848a6133b18280613b16565b6133bb9190613adb565b6133c59190613b16565b6133cf9190613adb565b6133d99190613adb565b90508293508060036133eb9190613b16565b83600161341960647f0000000000000000000000000000000000000000000000000000000000000000613adb565b6134239190613b53565b61342d9190613b16565b6134379190613ac3565b83613443836002613b16565b606461346f897f0000000000000000000000000000000000000000000000000000000000000000613b16565b6134799190613adb565b6134839190613ac3565b61348d9190613b16565b6134979190613adb565b92506134a383856135fd565b156134ae57506134c1565b50806134b981613b96565b915050613396565b5095945050505050565b6000806134d9846002613b16565b6134e38480613b16565b6134ed9190613adb565b9050606461351c7f00000000000000000000000000000000000000000000000000000000000000006002613b16565b6135269190613adb565b6135308483613b16565b61353a9190613adb565b905060007f000000000000000000000000000000000000000000000000000000000000000061356a606486613b16565b6135749190613adb565b61357e9086613ac3565b9050600084935060005b610100811015611b4d5784915085836135a2846002613b16565b6135ac9190613ac3565b6135b69190613b53565b846135c18780613b16565b6135cb9190613ac3565b6135d59190613adb565b94506135e185836135fd565b156135eb57611b4d565b806135f581613b96565b915050613588565b600081831115613614575060018183031115610d88565b506001919003111590565b60006020828403121561363157600080fd5b8135612adc81613c5c565b60008060006060848603121561365157600080fd5b833561365c81613c5c565b9250602084013561366c81613c5c565b9150604084013561367c81613c81565b809150509250925092565b600080600080600060a0868803121561369f57600080fd5b85356136aa81613c5c565b945060208601356136ba81613c5c565b935060408601356136ca81613c81565b925060608601359150608086013567ffffffffffffffff808211156136ee57600080fd5b818801915088601f83011261370257600080fd5b81358181111561371457613714613c2d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561375a5761375a613c2d565b816040528281528b602084870101111561377357600080fd5b8260208601602083013760006020848301015280955050505050509295509295909350565b600080604083850312156137ab57600080fd5b82356137b681613c5c565b915060208301356137c681613c81565b809150509250929050565b600080604083850312156137e457600080fd5b82356137ef81613c5c565b946020939093013593505050565b6000806040838503121561381057600080fd5b823561381b81613c5c565b915060208301356137c681613c5c565b60008060006060848603121561384057600080fd5b833561384b81613c5c565b9250602084013561385b81613c5c565b929592945050506040919091013590565b600080600080600080600060e0888a03121561388757600080fd5b873561389281613c5c565b965060208801356138a281613c5c565b95506040880135945060608801359350608088013560ff811681146138c657600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000602082840312156138f557600080fd5b8151612adc81613c81565b6000806020838503121561391357600080fd5b823567ffffffffffffffff8082111561392b57600080fd5b818501915085601f83011261393f57600080fd5b81358181111561394e57600080fd5b86602082850101111561396057600080fd5b60209290920196919550909350505050565b60006020828403121561398457600080fd5b5051919050565b600081518084526139a3816020860160208601613b6a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082516139e7818460208701613b6a565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b81811015613a3f57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613a0d565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b82811015613aa3578151805173ffffffffffffffffffffffffffffffffffffffff168552860151868501529284019290850190600101613a68565b5091979650505050505050565b602081526000612adc602083018461398b565b60008219821115613ad657613ad6613bcf565b500190565b600082613b11577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b4e57613b4e613bcf565b500290565b600082821015613b6557613b65613bcf565b500390565b60005b83811015613b85578181015183820152602001613b6d565b83811115612e3c5750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613bc857613bc8613bcf565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114613c7e57600080fd5b50565b8015158114613c7e57600080fdfea26469706673582212208cb16d62de4d77a08746b141626254de45cd7186356a32265015f50f4a7712b164736f6c63430008070033a26469706673582212206bab0a3faad22b53e9cbaa3b83f0a00277d9d7565e330a6aca4fb2d44ddd1b5e64736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH3 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x71A25812 GT PUSH3 0x56 JUMPI DUP1 PUSH4 0x71A25812 EQ PUSH3 0x12E JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH3 0x154 JUMPI DUP1 PUSH4 0xF6AB6D99 EQ PUSH3 0x17C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x169C4CEF EQ PUSH3 0x80 JUMPI DUP1 PUSH4 0x27C3CAE1 EQ PUSH3 0xC1 JUMPI DUP1 PUSH4 0x5BC93D6C EQ PUSH3 0xD8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x97 PUSH3 0x91 CALLDATASIZE PUSH1 0x4 PUSH3 0x996 JUMP JUMPDEST PUSH3 0x1B5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH3 0x97 PUSH3 0xD2 CALLDATASIZE PUSH1 0x4 PUSH3 0xA41 JUMP JUMPDEST PUSH3 0x208 JUMP JUMPDEST PUSH3 0x11F PUSH3 0xE9 CALLDATASIZE PUSH1 0x4 PUSH3 0x958 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0xB8 JUMP JUMPDEST PUSH3 0x145 PUSH3 0x13F CALLDATASIZE PUSH1 0x4 PUSH3 0x9DC JUMP JUMPDEST PUSH3 0x427 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0xB8 SWAP2 SWAP1 PUSH3 0xB1A JUMP JUMPDEST PUSH3 0x97 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH3 0x97 PUSH3 0x18D CALLDATASIZE PUSH1 0x4 PUSH3 0xA27 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP3 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH3 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP DUP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP9 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x22A SWAP2 SWAP1 PUSH3 0x8C0 JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH3 0x271 JUMPI SWAP5 SWAP6 SWAP5 JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x20 DUP4 ADD MSTORE DUP1 DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 DUP6 AND PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 DUP4 AND PUSH1 0xC0 DUP3 ADD MSTORE DUP2 ISZERO ISZERO PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD DUP2 MSTORE PUSH1 0x2 DUP1 DUP5 MSTORE PUSH1 0x60 DUP5 ADD SWAP1 SWAP3 MSTORE SWAP11 POP PUSH1 0x0 SWAP2 SWAP1 DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP8 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH3 0x32C JUMPI PUSH3 0x32C PUSH3 0xC90 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP DUP7 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH3 0x37D JUMPI PUSH3 0x37D PUSH3 0xC90 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD DUP3 ADD MSTORE DUP11 MLOAD SWAP1 DUP12 ADD KECCAK256 PUSH1 0x40 MLOAD DUP2 SWAP1 DUP13 SWAP1 PUSH32 0x0 SWAP1 PUSH3 0x3DB SWAP1 PUSH3 0x8B2 JUMP JUMPDEST PUSH3 0x3E8 SWAP3 SWAP2 SWAP1 PUSH3 0xB76 JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH3 0x409 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP SWAP10 POP PUSH3 0x419 DUP11 DUP4 DUP4 PUSH3 0x550 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH3 0x445 JUMPI PUSH3 0x445 PUSH3 0xCBF JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x46F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x547 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP10 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH3 0x4BA DUP3 DUP7 PUSH3 0xC0A JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH3 0x4CD JUMPI PUSH3 0x4CD PUSH3 0xC90 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x50D JUMPI PUSH3 0x50D PUSH3 0xC90 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 PUSH3 0x53E DUP2 PUSH3 0xC25 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x475 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH3 0x5C0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x3781A5300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH3 0x8AC JUMPI DUP3 DUP2 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH3 0x632 JUMPI PUSH3 0x632 PUSH3 0xC90 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x665 JUMPI PUSH3 0x665 PUSH3 0xC90 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT PUSH3 0x6BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x3F06BF8100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP2 ADD JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH3 0x8A2 JUMPI PUSH1 0x0 DUP1 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x6E2 JUMPI PUSH3 0x6E2 PUSH3 0xC90 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x73B JUMPI PUSH3 0x73B PUSH3 0xC90 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP3 MSTORE SWAP2 DUP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE DUP5 MLOAD DUP2 SWAP1 DUP7 SWAP1 DUP5 SWAP1 DUP2 LT PUSH3 0x7CA JUMPI PUSH3 0x7CA PUSH3 0xC90 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x823 JUMPI PUSH3 0x823 PUSH3 0xC90 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND DUP4 MSTORE DUP3 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 SWAP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD DUP4 SSTORE SWAP2 DUP4 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP3 DUP9 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE ADD PUSH3 0x6C0 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH3 0x60D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x49D6 DUP1 PUSH3 0xD15 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x8DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 MLOAD PUSH3 0x8E9 DUP2 PUSH3 0xCEE JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH3 0x8FC DUP2 PUSH3 0xCEE JUMP JUMPDEST DUP1 SWAP7 POP POP PUSH1 0x40 DUP9 ADD MLOAD SWAP5 POP PUSH1 0x60 DUP9 ADD MLOAD SWAP4 POP PUSH1 0x80 DUP9 ADD MLOAD PUSH3 0x91E DUP2 PUSH3 0xCEE JUMP JUMPDEST PUSH1 0xA0 DUP10 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x931 DUP2 PUSH3 0xCEE JUMP JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x948 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x96C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH3 0x979 DUP2 PUSH3 0xCEE JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH3 0x98B DUP2 PUSH3 0xCEE JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x9AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH3 0x9B9 DUP2 PUSH3 0xCEE JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH3 0x9CB DUP2 PUSH3 0xCEE JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x9F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH3 0xA00 DUP2 PUSH3 0xCEE JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH3 0xA12 DUP2 PUSH3 0xCEE JUMP JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH3 0xA6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xA82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH3 0xA97 JUMPI PUSH3 0xA97 PUSH3 0xCBF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xAE0 JUMPI PUSH3 0xAE0 PUSH3 0xCBF JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0xAFA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP3 DUP2 ADD PUSH1 0x20 ADD SWAP3 SWAP1 SWAP3 MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xB6A JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0xB36 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 DUP4 MLOAD DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0xBA6 JUMPI PUSH1 0x20 DUP2 DUP8 ADD DUP2 ADD MLOAD PUSH1 0x60 DUP7 DUP5 ADD ADD MSTORE ADD PUSH3 0xB87 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0xBB9 JUMPI PUSH1 0x0 PUSH1 0x60 DUP4 DUP7 ADD ADD MSTORE JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x1F SWAP2 SWAP1 SWAP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD PUSH1 0x60 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0xC20 JUMPI PUSH3 0xC20 PUSH3 0xC61 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH3 0xC5A JUMPI PUSH3 0xC5A PUSH3 0xC61 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0xD11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID PUSH2 0x1E0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x49D6 CODESIZE SUB DUP1 PUSH3 0x49D6 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x7AB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x5375736869204672616E636869736564204C5020546F6B656E00000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x49BB029AD7C8A58C6232657178B278E20C3BD1F3B0084072E3A97B185E1AAC5F SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x80 DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP9 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x142 SWAP2 SWAP1 PUSH3 0x713 JUMP JUMPDEST SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP SWAP7 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x1A8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A45524F5F41444452455353 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x20C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4944454E544943414C5F41444452455353455300000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST PUSH2 0x2710 DUP6 GT ISZERO PUSH3 0x253 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x494E56414C49445F535741505F464545 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST DUP4 PUSH3 0x28B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH6 0x5A45524F5F41 PUSH1 0xD0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x19F JUMP JUMPDEST PUSH3 0x2A3 DUP4 DUP4 DUP4 PUSH3 0x68A PUSH1 0x20 SHL PUSH3 0x2393 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x60A56C01 PUSH1 0xE1 SHL OR SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH3 0x2E7 SWAP2 SWAP1 PUSH3 0x8B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x324 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x329 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6050669 PUSH1 0xE1 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP2 PUSH3 0x372 SWAP2 SWAP1 PUSH3 0x8B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x3AF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x3B4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x4DA31827 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP2 PUSH3 0x3FD SWAP2 SWAP1 PUSH3 0x8B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x43A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x43F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP2 PUSH3 0x488 SWAP2 SWAP1 PUSH3 0x8B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x4C5 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x4CA JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND SWAP2 PUSH3 0x513 SWAP2 SWAP1 PUSH3 0x8B7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x550 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x555 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP16 DUP2 SHL DUP3 AND PUSH2 0x120 MSTORE DUP15 SWAP1 SHL AND PUSH2 0x140 MSTORE PUSH1 0xA0 DUP13 SWAP1 MSTORE DUP7 MLOAD SWAP1 SWAP3 POP PUSH3 0x592 SWAP2 POP DUP7 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP8 ADD PUSH3 0x878 JUMP JUMPDEST PUSH1 0x6 SSTORE DUP4 MLOAD PUSH3 0x5AC SWAP1 DUP6 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP7 ADD PUSH3 0x6EC JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xC0 MSTORE DUP3 MLOAD PUSH3 0x5D3 SWAP1 PUSH1 0x20 SWAP1 DUP6 ADD DUP2 ADD SWAP1 DUP6 ADD PUSH3 0x6EC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xE0 MSTORE SWAP1 DUP15 SWAP1 SHL AND PUSH2 0x100 MSTORE PUSH2 0x160 DUP10 SWAP1 MSTORE PUSH3 0x602 DUP10 PUSH1 0x2 PUSH3 0x9DF JUMP JUMPDEST PUSH2 0x180 MSTORE DUP2 MLOAD PUSH3 0x61D SWAP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP5 ADD PUSH3 0x892 JUMP JUMPDEST PUSH3 0x62A SWAP1 PUSH1 0x12 PUSH3 0xA01 JUMP JUMPDEST PUSH3 0x637 SWAP1 PUSH1 0xA PUSH3 0x91E JUMP JUMPDEST PUSH2 0x1A0 MSTORE DUP1 MLOAD PUSH3 0x652 SWAP1 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP4 ADD PUSH3 0x892 JUMP JUMPDEST PUSH3 0x65F SWAP1 PUSH1 0x12 PUSH3 0xA01 JUMP JUMPDEST PUSH3 0x66C SWAP1 PUSH1 0xA PUSH3 0x91E JUMP JUMPDEST PUSH2 0x1C0 MSTORE POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP PUSH3 0xA9F SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH3 0x6D5 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x6E7 DUP2 PUSH3 0xA86 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x6FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x70C DUP2 PUSH3 0xA86 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x72F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 MLOAD PUSH3 0x73C DUP2 PUSH3 0xA86 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP8 POP PUSH3 0x74F DUP2 PUSH3 0xA86 JUMP JUMPDEST DUP1 SWAP7 POP POP PUSH1 0x40 DUP9 ADD MLOAD SWAP5 POP PUSH1 0x60 DUP9 ADD MLOAD SWAP4 POP PUSH1 0x80 DUP9 ADD MLOAD PUSH3 0x771 DUP2 PUSH3 0xA86 JUMP JUMPDEST PUSH1 0xA0 DUP10 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x784 DUP2 PUSH3 0xA86 JUMP JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x79B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x7BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x7D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x7EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x801 JUMPI PUSH3 0x801 PUSH3 0xA70 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x82C JUMPI PUSH3 0x82C PUSH3 0xA70 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x846 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x859 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH3 0xA27 JUMP JUMPDEST DUP1 SWAP7 POP POP POP POP POP POP PUSH3 0x86F PUSH1 0x20 DUP5 ADD PUSH3 0x6DA JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x88B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x8A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH3 0x70C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x8CB DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0xA27 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH3 0x916 JUMPI DUP2 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x8FA JUMPI PUSH3 0x8FA PUSH3 0xA5A JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH3 0x908 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH3 0x8DA JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x70C PUSH1 0xFF DUP5 AND DUP4 PUSH1 0x0 DUP3 PUSH3 0x93A JUMPI POP PUSH1 0x1 PUSH3 0x9D9 JUMP JUMPDEST DUP2 PUSH3 0x949 JUMPI POP PUSH1 0x0 PUSH3 0x9D9 JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH3 0x962 JUMPI PUSH1 0x2 DUP2 EQ PUSH3 0x96D JUMPI PUSH3 0x98D JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH3 0x9D9 JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH3 0x981 JUMPI PUSH3 0x981 PUSH3 0xA5A JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH3 0x9D9 JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH3 0x9B2 JUMPI POP DUP2 DUP2 EXP PUSH3 0x9D9 JUMP JUMPDEST PUSH3 0x9BE DUP4 DUP4 PUSH3 0x8D5 JUMP JUMPDEST DUP1 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x9D5 JUMPI PUSH3 0x9D5 PUSH3 0xA5A JUMP JUMPDEST MUL SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH3 0x9FC JUMPI PUSH3 0x9FC PUSH3 0xA5A JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xFF DUP3 AND PUSH1 0xFF DUP5 AND DUP1 DUP3 LT ISZERO PUSH3 0xA1E JUMPI PUSH3 0xA1E PUSH3 0xA5A JUMP JUMPDEST SWAP1 SUB SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xA44 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA2A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0xA54 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0xA9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x120 MLOAD PUSH1 0x60 SHR PUSH2 0x140 MLOAD PUSH1 0x60 SHR PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH2 0x1A0 MLOAD PUSH2 0x1C0 MLOAD PUSH2 0x3CC5 PUSH3 0xD11 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x4A1 ADD MSTORE DUP2 DUP2 PUSH2 0x27BD ADD MSTORE DUP2 DUP2 PUSH2 0x281A ADD MSTORE DUP2 DUP2 PUSH2 0x2872 ADD MSTORE DUP2 DUP2 PUSH2 0x2909 ADD MSTORE PUSH2 0x32CD ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x630 ADD MSTORE DUP2 DUP2 PUSH2 0x2791 ADD MSTORE DUP2 DUP2 PUSH2 0x27E9 ADD MSTORE DUP2 DUP2 PUSH2 0x2846 ADD MSTORE DUP2 DUP2 PUSH2 0x28E3 ADD MSTORE PUSH2 0x329F ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x33F5 ADD MSTORE DUP2 DUP2 PUSH2 0x344B ADD MSTORE DUP2 DUP2 PUSH2 0x34F6 ADD MSTORE PUSH2 0x3540 ADD MSTORE PUSH1 0x0 PUSH2 0x711 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x6AC ADD MSTORE DUP2 DUP2 PUSH2 0x84D ADD MSTORE DUP2 DUP2 PUSH2 0x8F0 ADD MSTORE DUP2 DUP2 PUSH2 0x9E9 ADD MSTORE DUP2 DUP2 PUSH2 0xAC4 ADD MSTORE DUP2 DUP2 PUSH2 0xB70 ADD MSTORE DUP2 DUP2 PUSH2 0xB94 ADD MSTORE DUP2 DUP2 PUSH2 0x1029 ADD MSTORE DUP2 DUP2 PUSH2 0x108B ADD MSTORE DUP2 DUP2 PUSH2 0x1179 ADD MSTORE DUP2 DUP2 PUSH2 0x137C ADD MSTORE DUP2 DUP2 PUSH2 0x13D5 ADD MSTORE DUP2 DUP2 PUSH2 0x1601 ADD MSTORE DUP2 DUP2 PUSH2 0x1A8A ADD MSTORE DUP2 DUP2 PUSH2 0x1D0C ADD MSTORE DUP2 DUP2 PUSH2 0x1DC5 ADD MSTORE DUP2 DUP2 PUSH2 0x1EEB ADD MSTORE DUP2 DUP2 PUSH2 0x1F77 ADD MSTORE DUP2 DUP2 PUSH2 0x25F1 ADD MSTORE DUP2 DUP2 PUSH2 0x2FA8 ADD MSTORE PUSH2 0x2FCC ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x37C ADD MSTORE DUP2 DUP2 PUSH2 0x7F9 ADD MSTORE DUP2 DUP2 PUSH2 0x873 ADD MSTORE DUP2 DUP2 PUSH2 0x91F ADD MSTORE DUP2 DUP2 PUSH2 0x943 ADD MSTORE DUP2 DUP2 PUSH2 0xA9E ADD MSTORE DUP2 DUP2 PUSH2 0xB41 ADD MSTORE DUP2 DUP2 PUSH2 0xFFD ADD MSTORE DUP2 DUP2 PUSH2 0x1055 ADD MSTORE DUP2 DUP2 PUSH2 0x1110 ADD MSTORE DUP2 DUP2 PUSH2 0x1327 ADD MSTORE DUP2 DUP2 PUSH2 0x148B ADD MSTORE DUP2 DUP2 PUSH2 0x1593 ADD MSTORE DUP2 DUP2 PUSH2 0x1A22 ADD MSTORE DUP2 DUP2 PUSH2 0x1D65 ADD MSTORE DUP2 DUP2 PUSH2 0x1DF1 ADD MSTORE DUP2 DUP2 PUSH2 0x1E31 ADD MSTORE DUP2 DUP2 PUSH2 0x1F4B ADD MSTORE DUP2 DUP2 PUSH2 0x25C5 ADD MSTORE DUP2 DUP2 PUSH2 0x2F59 ADD MSTORE PUSH2 0x2F7D ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x685 ADD MSTORE PUSH2 0x1925 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x47A ADD MSTORE DUP2 DUP2 PUSH2 0x2651 ADD MSTORE DUP2 DUP2 PUSH2 0x2A57 ADD MSTORE DUP2 DUP2 PUSH2 0x2B86 ADD MSTORE DUP2 DUP2 PUSH2 0x2C7E ADD MSTORE PUSH2 0x30BB ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x330 ADD MSTORE DUP2 DUP2 PUSH2 0xC36 ADD MSTORE PUSH2 0x3167 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x4C8 ADD MSTORE DUP2 DUP2 PUSH2 0x8A2 ADD MSTORE DUP2 DUP2 PUSH2 0xAF3 ADD MSTORE DUP2 DUP2 PUSH2 0x19E5 ADD MSTORE DUP2 DUP2 PUSH2 0x3110 ADD MSTORE DUP2 DUP2 PUSH2 0x31EF ADD MSTORE PUSH2 0x325A ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x440 ADD MSTORE PUSH2 0x20BE ADD MSTORE PUSH2 0x3CC5 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x277 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x627DD56A GT PUSH2 0x160 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0xD8 JUMPI DUP1 PUSH4 0xCF58879A GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x6CE JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x6E1 JUMPI DUP1 PUSH4 0xF446C1D0 EQ PUSH2 0x70C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCF58879A EQ PUSH2 0x680 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBAA8C7CB GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xBAA8C7CB EQ PUSH2 0x62B JUMPI DUP1 PUSH4 0xBC3377D9 EQ PUSH2 0x652 JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x677 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x605 JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0x12F JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x114 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x58F JUMPI DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x5CB JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x565 JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x627DD56A EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x51D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x532 JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 GT PUSH2 0x1F3 JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x4E25DC47 GT PUSH2 0x1A7 JUMPI DUP1 PUSH4 0x4E25DC47 EQ PUSH2 0x49C JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x4C3 JUMPI DUP1 PUSH4 0x570CA735 EQ PUSH2 0x4EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x475 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x3DA JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x3FA JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x421 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x43B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 GT PUSH2 0x24A JUMPI DUP1 PUSH4 0x18160DDD GT PUSH2 0x22F JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x39E JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0x25A93264 EQ PUSH2 0x3BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2A2 JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x308 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x28F PUSH2 0x28A CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x733 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204672616E636869736564204C5020546F6B656E00000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x3AB0 JUMP JUMPDEST PUSH2 0x2F3 PUSH2 0xD00 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x31B PUSH2 0x316 CALLDATASIZE PUSH1 0x4 PUSH2 0x37D1 JUMP JUMPDEST PUSH2 0xD14 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x31B PUSH2 0x3B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x382B JUMP JUMPDEST PUSH2 0xD8E JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x352 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x3E8 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0xF09 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x3A4B JUMP JUMPDEST PUSH2 0x28F PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x429 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x299 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x470 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x1246 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x352 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x518 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x124D JUMP JUMPDEST PUSH2 0x525 PUSH2 0x1571 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x299 SWAP2 SWAP1 PUSH2 0x39F1 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x540 CALLDATASIZE PUSH1 0x4 PUSH2 0x361F JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x560 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x1670 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x573 CALLDATASIZE PUSH1 0x4 PUSH2 0x361F JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x58D PUSH2 0x18B3 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2DE PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x54726964656E743A4672616E6368697365644879627269640000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x600 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x19AE JUMP JUMPDEST PUSH2 0x31B PUSH2 0x613 CALLDATASIZE PUSH1 0x4 PUSH2 0x37D1 JUMP JUMPDEST PUSH2 0x1B57 JUMP JUMPDEST PUSH2 0x28F PUSH2 0x626 CALLDATASIZE PUSH1 0x4 PUSH2 0x3900 JUMP JUMPDEST PUSH2 0x1C09 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x31B SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH1 0x6 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x352 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x58D PUSH2 0x6DC CALLDATASIZE PUSH1 0x4 PUSH2 0x386C JUMP JUMPDEST PUSH2 0x202B JUMP JUMPDEST PUSH2 0x28F PUSH2 0x6EF CALLDATASIZE PUSH1 0x4 PUSH2 0x37FD JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x28F PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0x7A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x7BD DUP8 DUP10 ADD DUP10 PUSH2 0x3687 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x7E5 JUMPI PUSH2 0x7E5 DUP5 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x7F0 PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x9E7 JUMPI PUSH32 0x0 SWAP2 POP PUSH2 0x898 PUSH32 0x0 DUP8 PUSH2 0x261C JUMP JUMPDEST SWAP6 POP PUSH2 0x2710 PUSH2 0x8C7 PUSH32 0x0 DUP9 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x8D1 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0x8E9 PUSH2 0x8E0 DUP3 DUP9 PUSH2 0x3B53 JUMP JUMPDEST DUP6 DUP6 PUSH1 0x1 PUSH2 0x2781 JUMP JUMPDEST SWAP10 POP PUSH2 0x918 PUSH32 0x0 DUP10 DUP13 DUP9 DUP12 PUSH2 0x2941 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x96C PUSH32 0x0 PUSH2 0x967 PUSH32 0x0 PUSH2 0x29CA JUMP JUMPDEST PUSH2 0x261C JUMP JUMPDEST SWAP1 POP DUP7 PUSH2 0x979 DUP7 DUP4 PUSH2 0x3B53 JUMP JUMPDEST LT ISZERO PUSH2 0x9E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP PUSH2 0xC2F JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA9C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH32 0x0 SWAP2 POP PUSH2 0xAE9 PUSH32 0x0 DUP8 PUSH2 0x261C JUMP JUMPDEST SWAP6 POP PUSH2 0x2710 PUSH2 0xB18 PUSH32 0x0 DUP9 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0xB22 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0xB3A PUSH2 0xB31 DUP3 DUP9 PUSH2 0x3B53 JUMP JUMPDEST DUP6 DUP6 PUSH1 0x0 PUSH2 0x2781 JUMP JUMPDEST SWAP10 POP PUSH2 0xB69 PUSH32 0x0 DUP10 DUP13 DUP9 DUP12 PUSH2 0x2941 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBB8 PUSH32 0x0 PUSH2 0x967 PUSH32 0x0 PUSH2 0x29CA JUMP JUMPDEST SWAP1 POP DUP7 PUSH2 0xBC5 DUP6 DUP4 PUSH2 0x3B53 JUMP JUMPDEST LT ISZERO PUSH2 0xC2D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F414D4F554E545F494E00000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP JUMPDEST PUSH2 0xC5C DUP10 DUP3 PUSH32 0x0 PUSH1 0x0 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0xC64 PUSH2 0x2E42 JUMP JUMPDEST DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP10 DUP15 PUSH1 0x40 MLOAD PUSH2 0xCE3 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP6 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xD0B PUSH2 0x2593 JUMP JUMPDEST SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xD7C SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xDBD JUMPI PUSH2 0xDBD DUP4 PUSH2 0x2433 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xE5A JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xE54 SWAP1 DUP5 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xE8F SWAP1 DUP5 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xEF7 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0xF77 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 DUP1 PUSH2 0xF8B DUP5 DUP7 ADD DUP7 PUSH2 0x3798 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xF98 DUP3 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xFA3 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x2 SLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 SWAP1 DUP3 PUSH2 0xFC9 DUP7 DUP5 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0xFD3 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0xFE2 DUP7 DUP6 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0xFEC SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0xFF8 ADDRESS DUP5 PUSH2 0x2FF0 JUMP JUMPDEST PUSH2 0x1024 PUSH32 0x0 DUP4 DUP11 DUP11 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x1050 PUSH32 0x0 DUP3 DUP11 DUP11 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x107A PUSH32 0x0 DUP4 PUSH2 0x3086 JUMP JUMPDEST PUSH2 0x1084 SWAP1 DUP8 PUSH2 0x3B53 JUMP JUMPDEST SWAP6 POP PUSH2 0x10B0 PUSH32 0x0 DUP3 PUSH2 0x3086 JUMP JUMPDEST PUSH2 0x10BA SWAP1 DUP7 PUSH2 0x3B53 JUMP JUMPDEST SWAP5 POP PUSH2 0x10C4 PUSH2 0x2E42 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x10DA JUMPI SWAP1 POP POP SWAP9 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE POP DUP10 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1161 JUMPI PUSH2 0x1161 PUSH2 0x3BFE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP DUP10 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x11CA JUMPI PUSH2 0x11CA PUSH2 0x3BFE JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE SWAP2 DUP3 ADD DUP4 SWAP1 MSTORE DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0x12BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x12D0 DUP6 DUP8 ADD DUP8 PUSH2 0x363C JUMP JUMPDEST PUSH1 0x1 SLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1304 JUMPI PUSH2 0x1304 DUP3 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x130F PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x131E PUSH2 0x2F51 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x13D3 JUMPI POP PUSH32 0x0 PUSH2 0x13A5 DUP7 DUP6 PUSH2 0x3B53 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH2 0x13B3 DUP11 DUP5 PUSH2 0x3106 JUMP JUMPDEST SWAP1 POP PUSH2 0x13CB PUSH2 0x13C2 DUP3 DUP6 PUSH2 0x3B53 JUMP JUMPDEST DUP9 DUP9 PUSH1 0x1 PUSH2 0x2781 JUMP JUMPDEST SWAP11 POP POP PUSH2 0x14DE JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1488 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP PUSH32 0x0 PUSH2 0x14B4 DUP6 DUP5 PUSH2 0x3B53 JUMP JUMPDEST SWAP2 POP PUSH1 0x0 PUSH2 0x14C2 DUP11 DUP5 PUSH2 0x3106 JUMP JUMPDEST SWAP1 POP PUSH2 0x14DA PUSH2 0x14D1 DUP3 DUP6 PUSH2 0x3B53 JUMP JUMPDEST DUP9 DUP9 PUSH1 0x0 PUSH2 0x2781 JUMP JUMPDEST SWAP11 POP POP JUMPDEST PUSH2 0x14EA DUP2 DUP12 DUP11 DUP11 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x14F2 PUSH2 0x2E42 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP6 DUP15 PUSH1 0x40 MLOAD PUSH2 0xCE3 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x15C5 JUMPI PUSH2 0x15C5 PUSH2 0x3BFE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP PUSH32 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x1633 JUMPI PUSH2 0x1633 PUSH2 0x3BFE JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0x16DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 PUSH2 0x16F1 DUP4 DUP6 ADD DUP6 PUSH2 0x361F JUMP JUMPDEST SWAP1 POP PUSH2 0x16FC DUP2 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1707 PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1716 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x0 PUSH2 0x172A DUP7 DUP6 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1738 DUP7 DUP6 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x1749 DUP5 DUP5 DUP12 DUP12 PUSH2 0x3194 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x176C PUSH2 0x175D DUP5 DUP11 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1767 DUP5 DUP11 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x3297 JUMP JUMPDEST SWAP1 POP DUP6 PUSH2 0x1793 JUMPI PUSH2 0x177F PUSH2 0x3E8 DUP3 PUSH2 0x3B53 JUMP JUMPDEST SWAP12 POP PUSH2 0x178E PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x3307 JUMP JUMPDEST PUSH2 0x17C5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x179F DUP12 DUP12 PUSH2 0x3297 JUMP JUMPDEST SWAP1 POP DUP1 DUP8 PUSH2 0x17AD DUP3 DUP6 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x17B7 SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x17C1 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP13 POP POP JUMPDEST DUP12 PUSH2 0x182C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E53554646494349454E545F4C49515549444954595F4D494E544544000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH2 0x1836 DUP12 DUP14 PUSH2 0x3307 JUMP JUMPDEST PUSH2 0x183E PUSH2 0x2E42 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 DUP2 ADD DUP14 SWAP1 MSTORE DUP13 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 AND SWAP1 CALLER SWAP1 PUSH32 0xF9C32FBC56FF04F32A233EBC26E388564223745E28ABD8D0781DD906537F563E SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP9 SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC14AD80200000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH2 0x1950 SWAP2 SWAP1 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x198B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1990 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x19A8 SWAP2 SWAP1 PUSH2 0x3972 JUMP JUMPDEST PUSH1 0x6 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH2 0x19BE DUP5 DUP7 ADD DUP7 PUSH2 0x37D1 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x19CD PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x19DB DUP5 DUP5 PUSH2 0x261C JUMP JUMPDEST SWAP3 POP PUSH2 0x2710 PUSH2 0x1A0A PUSH32 0x0 DUP6 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x1A14 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x1A1E SWAP1 DUP5 PUSH2 0x3B53 JUMP JUMPDEST SWAP3 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1A88 JUMPI PUSH2 0x1A81 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x2781 JUMP JUMPDEST SWAP5 POP PUSH2 0x1B4D JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1B3D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F494E5055545F544F4B454E00000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH2 0x1B4A DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x2781 JUMP JUMPDEST SWAP5 POP JUMPDEST POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1B86 JUMPI PUSH2 0x1B86 DUP4 PUSH2 0x2433 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x1BA5 SWAP1 DUP5 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xD7C SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 SLOAD PUSH1 0x1 EQ PUSH2 0x1C77 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x8 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0x1C8C DUP6 DUP8 ADD DUP8 PUSH2 0x363C JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x1C9B DUP3 PUSH2 0x2433 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1CA6 PUSH2 0x2593 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH2 0x1CB5 PUSH2 0x2F51 JUMP JUMPDEST PUSH1 0x2 SLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 SWAP1 DUP3 PUSH2 0x1CDB DUP7 DUP5 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x1CE5 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0x1CF4 DUP7 DUP6 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x1CFE SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0x1D0A ADDRESS DUP5 PUSH2 0x2FF0 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1E2F JUMPI PUSH1 0x0 PUSH2 0x1D8A PUSH32 0x0 DUP5 PUSH2 0x3106 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DB4 PUSH2 0x1D99 DUP3 DUP6 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1DA3 DUP6 DUP13 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1DAD DUP6 DUP13 PUSH2 0x3B53 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2781 JUMP JUMPDEST PUSH2 0x1DBE SWAP1 DUP4 PUSH2 0x3AC3 JUMP JUMPDEST SWAP2 POP PUSH2 0x1DEC PUSH32 0x0 DUP4 DUP14 DUP14 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x1E16 PUSH32 0x0 DUP5 PUSH2 0x3086 JUMP JUMPDEST PUSH2 0x1E20 SWAP1 DUP9 PUSH2 0x3B53 JUMP JUMPDEST SWAP7 POP DUP2 SWAP13 POP PUSH1 0x0 SWAP3 POP POP PUSH2 0x1FB1 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1EE4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F4F55545055545F544F4B454E000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F10 PUSH32 0x0 DUP4 PUSH2 0x3106 JUMP JUMPDEST SWAP1 POP PUSH2 0x1F3A PUSH2 0x1F1F DUP3 DUP5 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1F29 DUP6 DUP13 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x1F33 DUP6 DUP13 PUSH2 0x3B53 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2781 JUMP JUMPDEST PUSH2 0x1F44 SWAP1 DUP5 PUSH2 0x3AC3 JUMP JUMPDEST SWAP3 POP PUSH2 0x1F72 PUSH32 0x0 DUP5 DUP14 DUP14 PUSH2 0x2AE3 JUMP JUMPDEST PUSH2 0x1F9C PUSH32 0x0 DUP4 PUSH2 0x3086 JUMP JUMPDEST PUSH2 0x1FA6 SWAP1 DUP8 PUSH2 0x3B53 JUMP JUMPDEST SWAP6 POP DUP3 SWAP13 POP PUSH1 0x0 SWAP2 POP POP JUMPDEST PUSH2 0x1FB9 PUSH2 0x2E42 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 DUP2 ADD DUP5 SWAP1 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP1 CALLER SWAP1 PUSH32 0xA476CEBFBE7485684F5578D84D8A64A8AFE93A0A2A3047BD6F3E681E108B8F11 SWAP1 PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x8 SSTORE POP SWAP8 SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x2095 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x0 SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP8 PUSH2 0x2110 DUP4 PUSH2 0x3B96 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x21B1 SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x223A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x22B5 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x231B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x242E JUMPI PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE DUP6 DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1472C27100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH2 0x24D0 SWAP2 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x250B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2510 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x252A SWAP2 SWAP1 PUSH2 0x38E3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x242E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F57484954454C49535445440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH17 0x100000000000000000000000000000000 SWAP1 DIV AND PUSH2 0x25EA PUSH32 0x0 DUP4 PUSH2 0x261C JUMP JUMPDEST SWAP2 POP PUSH2 0x2616 PUSH32 0x0 DUP3 PUSH2 0x261C JUMP JUMPDEST SWAP1 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD DUP2 SWAP1 MSTORE SWAP2 DUP3 SWAP2 PUSH32 0x0 AND SWAP1 PUSH32 0x5662311800000000000000000000000000000000000000000000000000000000 SWAP1 PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x2721 SWAP2 SWAP1 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x275C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2761 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2779 SWAP2 SWAP1 PUSH2 0x3972 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 ISZERO PUSH2 0x2815 JUMPI PUSH2 0x27B6 PUSH32 0x0 DUP8 PUSH2 0x3B16 JUMP JUMPDEST SWAP2 POP PUSH2 0x27E2 PUSH32 0x0 DUP7 PUSH2 0x3B16 JUMP JUMPDEST SWAP1 POP PUSH2 0x280E PUSH32 0x0 DUP9 PUSH2 0x3B16 JUMP JUMPDEST SWAP7 POP PUSH2 0x289A JUMP JUMPDEST PUSH2 0x283F PUSH32 0x0 DUP7 PUSH2 0x3B16 JUMP JUMPDEST SWAP2 POP PUSH2 0x286B PUSH32 0x0 DUP8 PUSH2 0x3B16 JUMP JUMPDEST SWAP1 POP PUSH2 0x2897 PUSH32 0x0 DUP9 PUSH2 0x3B16 JUMP JUMPDEST SWAP7 POP JUMPDEST PUSH1 0x0 PUSH2 0x28A6 DUP4 DUP4 PUSH2 0x3378 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x28B4 DUP10 DUP6 PUSH2 0x3AC3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x28C2 DUP3 DUP5 PUSH2 0x34CB JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH2 0x28D0 DUP3 DUP7 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x28DA SWAP2 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP6 POP DUP7 PUSH2 0x2907 JUMPI PUSH32 0x0 PUSH2 0x2929 JUMP JUMPDEST PUSH32 0x0 JUMPDEST PUSH2 0x2933 SWAP1 DUP8 PUSH2 0x3ADB JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x294D DUP6 DUP5 DUP7 DUP5 PUSH2 0x2AE3 JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x29C3 JUMPI PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x2990 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x3AB0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x29AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x29BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH2 0x2A84 SWAP2 SWAP1 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2ABF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2AC4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2ADC SWAP2 SWAP1 PUSH2 0x3972 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2C65 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP3 ADD DUP7 SWAP1 MSTORE PUSH1 0x0 PUSH1 0xA4 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC4 SWAP1 SWAP4 ADD DUP5 MSTORE PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP3 MLOAD PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH2 0x2BB2 SWAP2 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2BEF JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2BF4 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2C5F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57495448445241575F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP PUSH2 0x2E3C JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 DUP7 ADDRESS DUP7 PUSH2 0x2CCC DUP4 DUP11 PUSH2 0x3086 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x24 DUP3 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x44 DUP5 ADD MSTORE SWAP3 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA4 ADD PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 DUP2 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 MSTORE SWAP1 MLOAD PUSH2 0x2D8F SWAP2 SWAP1 PUSH2 0x39D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2DCC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2DD1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x29C3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2E4D PUSH2 0x2F51 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 LT DUP1 ISZERO PUSH2 0x2E80 JUMPI POP PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 LT JUMPDEST PUSH2 0x2EE6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F564552464C4F57000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x79D JUMP JUMPDEST PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH17 0x100000000000000000000000000000000 MUL SWAP1 DUP4 AND OR PUSH1 0x7 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE PUSH32 0xCF2AA50876CDFBB541206F89AF0EE78D44A2ABF8D328E37FA4917F982149848A SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2FA1 PUSH32 0x0 PUSH2 0x967 PUSH32 0x0 PUSH2 0x29CA JUMP JUMPDEST SWAP2 POP PUSH2 0x2616 PUSH32 0x0 PUSH2 0x967 PUSH32 0x0 PUSH2 0x29CA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x3025 SWAP1 DUP5 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 PUSH1 0x64 DUP4 ADD DUP2 SWAP1 MSTORE SWAP2 DUP3 SWAP2 PUSH32 0x0 AND SWAP1 PUSH32 0xDA5139CA00000000000000000000000000000000000000000000000000000000 SWAP1 PUSH1 0x84 ADD PUSH2 0x2698 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2710 PUSH2 0x3135 PUSH32 0x0 DUP5 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x313F SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2710 PUSH1 0x6 SLOAD DUP4 PUSH2 0x3154 SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x315E SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0x318D DUP5 DUP3 PUSH32 0x0 PUSH1 0x0 PUSH2 0x2AE3 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 ISZERO DUP1 PUSH2 0x31A2 JUMPI POP DUP3 ISZERO JUMPDEST ISZERO PUSH2 0x31B2 JUMPI POP PUSH1 0x0 SWAP1 POP DUP1 PUSH2 0x328E JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x31BF DUP6 DUP10 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x31C9 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP DUP6 DUP2 GT PUSH2 0x3224 JUMPI PUSH2 0x31DF PUSH2 0x2710 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x31E9 DUP3 DUP9 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x3213 SWAP1 PUSH32 0x0 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x321D SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP2 POP PUSH2 0x328C JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH2 0x3231 DUP8 DUP10 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x323B SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH2 0x324A PUSH2 0x2710 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3254 DUP3 DUP11 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x327E SWAP1 PUSH32 0x0 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3288 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP4 POP POP JUMPDEST POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x32C4 PUSH32 0x0 DUP6 PUSH2 0x3B16 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x32F2 PUSH32 0x0 DUP6 PUSH2 0x3B16 JUMP JUMPDEST SWAP1 POP PUSH2 0x32FE DUP3 DUP3 PUSH2 0x3378 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3319 SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x307A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3385 DUP4 DUP6 PUSH2 0x3AC3 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3391 JUMPI PUSH1 0x0 SWAP2 POP JUMPDEST PUSH1 0x0 DUP2 DUP2 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x34C1 JUMPI PUSH1 0x0 PUSH1 0x4 DUP8 DUP5 DUP11 PUSH2 0x33B1 DUP3 DUP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x33BB SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x33C5 SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x33CF SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x33D9 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP DUP3 SWAP4 POP DUP1 PUSH1 0x3 PUSH2 0x33EB SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH2 0x3419 PUSH1 0x64 PUSH32 0x0 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x3423 SWAP2 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST PUSH2 0x342D SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3437 SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST DUP4 PUSH2 0x3443 DUP4 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH1 0x64 PUSH2 0x346F DUP10 PUSH32 0x0 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3479 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x3483 SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST PUSH2 0x348D SWAP2 SWAP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3497 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP3 POP PUSH2 0x34A3 DUP4 DUP6 PUSH2 0x35FD JUMP JUMPDEST ISZERO PUSH2 0x34AE JUMPI POP PUSH2 0x34C1 JUMP JUMPDEST POP DUP1 PUSH2 0x34B9 DUP2 PUSH2 0x3B96 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3396 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x34D9 DUP5 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x34E3 DUP5 DUP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x34ED SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x64 PUSH2 0x351C PUSH32 0x0 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3526 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x3530 DUP5 DUP4 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x353A SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH2 0x356A PUSH1 0x64 DUP7 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x3574 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST PUSH2 0x357E SWAP1 DUP7 PUSH2 0x3AC3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 SWAP4 POP PUSH1 0x0 JUMPDEST PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x1B4D JUMPI DUP5 SWAP2 POP DUP6 DUP4 PUSH2 0x35A2 DUP5 PUSH1 0x2 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x35AC SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST PUSH2 0x35B6 SWAP2 SWAP1 PUSH2 0x3B53 JUMP JUMPDEST DUP5 PUSH2 0x35C1 DUP8 DUP1 PUSH2 0x3B16 JUMP JUMPDEST PUSH2 0x35CB SWAP2 SWAP1 PUSH2 0x3AC3 JUMP JUMPDEST PUSH2 0x35D5 SWAP2 SWAP1 PUSH2 0x3ADB JUMP JUMPDEST SWAP5 POP PUSH2 0x35E1 DUP6 DUP4 PUSH2 0x35FD JUMP JUMPDEST ISZERO PUSH2 0x35EB JUMPI PUSH2 0x1B4D JUMP JUMPDEST DUP1 PUSH2 0x35F5 DUP2 PUSH2 0x3B96 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x3588 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 GT ISZERO PUSH2 0x3614 JUMPI POP PUSH1 0x1 DUP2 DUP4 SUB GT ISZERO PUSH2 0xD88 JUMP JUMPDEST POP PUSH1 0x1 SWAP2 SWAP1 SUB GT ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2ADC DUP2 PUSH2 0x3C5C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3651 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x365C DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x366C DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x367C DUP2 PUSH2 0x3C81 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x369F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x36AA DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x36BA DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x36CA DUP2 PUSH2 0x3C81 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x36EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP9 ADD SWAP2 POP DUP9 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3702 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x3714 JUMPI PUSH2 0x3714 PUSH2 0x3C2D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x375A JUMPI PUSH2 0x375A PUSH2 0x3C2D JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP12 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x3773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x37AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x37B6 DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x37C6 DUP2 PUSH2 0x3C81 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x37E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x37EF DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3810 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x381B DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x37C6 DUP2 PUSH2 0x3C5C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x384B DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x385B DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x3887 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x3892 DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x38A2 DUP2 PUSH2 0x3C5C JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x38C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x38F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2ADC DUP2 PUSH2 0x3C81 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3913 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x392B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x393F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x394E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3960 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3984 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x39A3 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3B6A JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x39E7 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3B6A JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3A3F JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3A0D JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3AA3 JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3A68 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2ADC PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x398B JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x3AD6 JUMPI PUSH2 0x3AD6 PUSH2 0x3BCF JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x3B11 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3B4E JUMPI PUSH2 0x3B4E PUSH2 0x3BCF JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3B65 JUMPI PUSH2 0x3B65 PUSH2 0x3BCF JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3B85 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3B6D JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2E3C JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x3BC8 JUMPI PUSH2 0x3BC8 PUSH2 0x3BCF JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3C7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3C7E JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP13 0xB1 PUSH14 0x62DE4D77A08746B141626254DE45 0xCD PUSH18 0x86356A32265015F50F4A7712B164736F6C63 NUMBER STOP ADDMOD SMOD STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH12 0xAB0A3FAAD22B53E9CBAA3B83 CREATE LOG0 MUL PUSH24 0xD9D7565E330A6ACA4FB2D44DDD1B5E64736F6C6343000807 STOP CALLER ",
              "sourceMap": "269:1107:55:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;250:62:44;;;;;;:::i;:::-;;:::i;:::-;;;3722:42:64;3710:55;;;3692:74;;3680:2;3665:18;250:62:44;;;;;;;;403:971:55;;;;;;:::i;:::-;;:::i;1535:143:44:-;;;;;;:::i;:::-;1643:13;;;;1610;1643;;;;;;;;;;;:21;;;;;;;;;;;:28;;1535:143;;;;6092:25:64;;;6080:2;6065:18;1535:143:44;5946:177:64;1684:345:44;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;204:39::-;;;;;318:48;;;;;;:::i;:::-;;;;;;;;;;;;;;;;250:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;250:62:44;;-1:-1:-1;;250:62:44:o;403:971:55:-;467:12;492:14;508;524:15;541:9;552:24;578:16;596:11;635;611:119;;;;;;;;;;;;:::i;:::-;491:239;;;;;;;;;;;;;;753:6;744:15;;:6;:15;;;740:81;;;795:6;;803;740:81;884:74;;;4096:42:64;4165:15;;;884:74:55;;;4147:34:64;4217:15;;;4197:18;;;4190:43;;;;4249:18;;;4242:34;;;4292:18;;;4285:34;;;4356:15;;;4335:19;;;4328:44;4409:15;;;4388:19;;;4381:44;4469:14;;4462:22;4441:19;;;4434:51;4058:19;;884:74:55;;;;;;;;;;1008:1;994:16;;;;;;;;;884:74;-1:-1:-1;968:23:55;;884:74;994:16;;;;;;;;;;;;-1:-1:-1;994:16:55;968:42;;1032:6;1020;1027:1;1020:9;;;;;;;;:::i;:::-;;;;;;:18;;;;;;;;;;;1060:6;1048;1055:1;1048:9;;;;;;;;:::i;:::-;:18;;;;:9;;;;;;;;;;:18;1211:22;;;;;;1258:65;;1211:22;;1221:11;;1308:14;;1258:65;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;1243:81;;1334:33;1348:4;1354:6;1362:4;1334:13;:33::i;:::-;481:893;;;;;;;;;403:971;;;:::o;1684:345:44:-;1830:26;1894:5;1880:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1880:20:44;;1868:32;;1915:9;1910:113;1934:5;1930:1;:9;1910:113;;;1975:13;;;;:5;:13;;;;;;;;;;;:21;;;;;;;;;1997:14;2010:1;1997:10;:14;:::i;:::-;1975:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1960:9;1970:1;1960:12;;;;;;;;:::i;:::-;:52;;;;:12;;;;;;;;;;;:52;1941:3;;;;:::i;:::-;;;;1910:113;;;;1684:345;;;;;;:::o;740:789::-;500:10;:28;514:14;500:28;;496:63;;537:22;;;;;;;;;;;;;;496:63;936:19:::1;::::0;;;:13:::1;:19;::::0;;;;:26;;;::::1;;::::0;::::1;;::::0;;1174:339:::1;1210:1;1194:6;:13;:17;1190:1;:21;1174:339;;;1253:6;1260:1;1264;1260:5;1253:13;;;;;;;;:::i;:::-;;;;;;;1240:26;;:6;1247:1;1240:9;;;;;;;;:::i;:::-;;;;;;;:26;;;1236:58;;1275:19;;;;;;;;;;;;;;1236:58;1333:1;1329:5:::0;::::1;1312:187;1340:6;:13;1336:1;:17;1312:187;;;1382:5;:16:::0;1388:6:::1;1395:1;1388:9;;;;;;;;:::i;:::-;;;;;;;1382:16;;;;;;;;;;;;;;;:27;1399:6;1406:1;1399:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;1382:27:::1;::::0;;::::1;::::0;;;;::::1;::::0;;;;;;;;-1:-1:-1;1382:27:44;;;:38;;::::1;::::0;::::1;::::0;;;;;;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;1448:9;;-1:-1:-1;;1448:9:44;;1455:1;;1448:9;::::1;;;;;:::i;:::-;;;;;;;1442:16;;;;;;;;;;;;;;;:27;1459:6;1466:1;1459:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;1442:27:::1;::::0;;::::1;::::0;;;;::::1;::::0;;;;;;;;-1:-1:-1;1442:27:44;;;:38;;::::1;::::0;;::::1;::::0;;;;;;;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;1355:3:::1;1312:187;;;-1:-1:-1::0;1213:3:44::1;;1174:339;;;;740:789:::0;;;:::o;-1:-1:-1:-;;;;;;;;:::o;14:973:64:-;167:6;175;183;191;199;207;215;268:3;256:9;247:7;243:23;239:33;236:53;;;285:1;282;275:12;236:53;317:9;311:16;336:31;361:5;336:31;:::i;:::-;436:2;421:18;;415:25;386:5;;-1:-1:-1;449:33:64;415:25;449:33;:::i;:::-;501:7;491:17;;;548:2;537:9;533:18;527:25;517:35;;592:2;581:9;577:18;571:25;561:35;;641:3;630:9;626:19;620:26;655:33;680:7;655:33;:::i;:::-;759:3;744:19;;738:26;707:7;;-1:-1:-1;773:33:64;738:26;773:33;:::i;:::-;877:3;862:19;;856:26;825:7;;-1:-1:-1;920:15:64;;913:23;901:36;;891:64;;951:1;948;941:12;891:64;974:7;964:17;;;14:973;;;;;;;;;;:::o;992:388::-;1060:6;1068;1121:2;1109:9;1100:7;1096:23;1092:32;1089:52;;;1137:1;1134;1127:12;1089:52;1176:9;1163:23;1195:31;1220:5;1195:31;:::i;:::-;1245:5;-1:-1:-1;1302:2:64;1287:18;;1274:32;1315:33;1274:32;1315:33;:::i;:::-;1367:7;1357:17;;;992:388;;;;;:::o;1385:456::-;1462:6;1470;1478;1531:2;1519:9;1510:7;1506:23;1502:32;1499:52;;;1547:1;1544;1537:12;1499:52;1586:9;1573:23;1605:31;1630:5;1605:31;:::i;:::-;1655:5;-1:-1:-1;1712:2:64;1697:18;;1684:32;1725:33;1684:32;1725:33;:::i;:::-;1385:456;;1777:7;;-1:-1:-1;;;1831:2:64;1816:18;;;;1803:32;;1385:456::o;1846:525::-;1932:6;1940;1948;1956;2009:3;1997:9;1988:7;1984:23;1980:33;1977:53;;;2026:1;2023;2016:12;1977:53;2065:9;2052:23;2084:31;2109:5;2084:31;:::i;:::-;2134:5;-1:-1:-1;2191:2:64;2176:18;;2163:32;2204:33;2163:32;2204:33;:::i;:::-;1846:525;;2256:7;;-1:-1:-1;;;;2310:2:64;2295:18;;2282:32;;2361:2;2346:18;2333:32;;1846:525::o;2376:180::-;2435:6;2488:2;2476:9;2467:7;2463:23;2459:32;2456:52;;;2504:1;2501;2494:12;2456:52;-1:-1:-1;2527:23:64;;2376:180;-1:-1:-1;2376:180:64:o;2561:980::-;2629:6;2682:2;2670:9;2661:7;2657:23;2653:32;2650:52;;;2698:1;2695;2688:12;2650:52;2738:9;2725:23;2767:18;2808:2;2800:6;2797:14;2794:34;;;2824:1;2821;2814:12;2794:34;2862:6;2851:9;2847:22;2837:32;;2907:7;2900:4;2896:2;2892:13;2888:27;2878:55;;2929:1;2926;2919:12;2878:55;2965:2;2952:16;2987:2;2983;2980:10;2977:36;;;2993:18;;:::i;:::-;3127:2;3121:9;3189:4;3181:13;;3032:66;3177:22;;;3201:2;3173:31;3169:40;3157:53;;;3225:18;;;3245:22;;;3222:46;3219:72;;;3271:18;;:::i;:::-;3311:10;3307:2;3300:22;3346:2;3338:6;3331:18;3386:7;3381:2;3376;3372;3368:11;3364:20;3361:33;3358:53;;;3407:1;3404;3397:12;3358:53;3463:2;3458;3454;3450:11;3445:2;3437:6;3433:15;3420:46;3508:1;3486:15;;;3503:2;3482:24;3475:35;;;;-1:-1:-1;3490:6:64;2561:980;-1:-1:-1;;;;;2561:980:64:o;4496:681::-;4667:2;4719:21;;;4789:13;;4692:18;;;4811:22;;;4638:4;;4667:2;4890:15;;;;4864:2;4849:18;;;4638:4;4933:218;4947:6;4944:1;4941:13;4933:218;;;5012:13;;5027:42;5008:62;4996:75;;5126:15;;;;5091:12;;;;4969:1;4962:9;4933:218;;;-1:-1:-1;5168:3:64;;4496:681;-1:-1:-1;;;;;;4496:681:64:o;5182:759::-;5357:2;5346:9;5339:21;5320:4;5389:6;5383:13;5432:6;5427:2;5416:9;5412:18;5405:34;5457:1;5467:144;5481:6;5478:1;5475:13;5467:144;;;5594:4;5578:14;;;5574:25;;5568:32;5563:2;5544:17;;;5540:26;5533:68;5496:12;5467:144;;;5629:6;5626:1;5623:13;5620:91;;;5699:1;5694:2;5685:6;5674:9;5670:22;5666:31;5659:42;5620:91;-1:-1:-1;5891:42:64;5879:55;;;;5872:4;5857:20;;5850:85;-1:-1:-1;5763:2:64;5751:15;;;;5768:66;5747:88;5732:104;5838:2;5728:113;;5182:759;-1:-1:-1;5182:759:64:o;6128:128::-;6168:3;6199:1;6195:6;6192:1;6189:13;6186:39;;;6205:18;;:::i;:::-;-1:-1:-1;6241:9:64;;6128:128::o;6261:195::-;6300:3;6331:66;6324:5;6321:77;6318:103;;;6401:18;;:::i;:::-;-1:-1:-1;6448:1:64;6437:13;;6261:195::o;6461:184::-;6513:77;6510:1;6503:88;6610:4;6607:1;6600:15;6634:4;6631:1;6624:15;6650:184;6702:77;6699:1;6692:88;6799:4;6796:1;6789:15;6823:4;6820:1;6813:15;6839:184;6891:77;6888:1;6881:88;6988:4;6985:1;6978:15;7012:4;7009:1;7002:15;7028:154;7114:42;7107:5;7103:54;7096:5;7093:65;7083:93;;7172:1;7169;7162:12;7083:93;7028:154;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "4460800",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "configAddress(bytes32)": "2486",
                "deployPool(bytes)": "infinite",
                "getPools(address,address,uint256,uint256)": "infinite",
                "masterDeployer()": "infinite",
                "pools(address,address,uint256)": "infinite",
                "poolsCount(address,address)": "infinite"
              }
            },
            "methodIdentifiers": {
              "configAddress(bytes32)": "f6ab6d99",
              "deployPool(bytes)": "27c3cae1",
              "getPools(address,address,uint256,uint256)": "71a25812",
              "masterDeployer()": "cf58879a",
              "pools(address,address,uint256)": "169c4cef",
              "poolsCount(address,address)": "5bc93d6c"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_masterDeployer\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidTokenOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorisedDeployer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"configAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_deployData\",\"type\":\"bytes\"}],\"name\":\"deployPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pool\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"getPools\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pairPools\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterDeployer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pools\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"}],\"name\":\"poolsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Mudit Gupta.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Contract for deploying Trident exchange Franchised Hybrid Product Pool with configurations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/franchised/FranchisedHybridPoolFactory.sol\":\"FranchisedHybridPoolFactory\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentCallee.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool callback interface.\\ninterface ITridentCallee {\\n    function tridentSwapCallback(bytes calldata data) external;\\n\\n    function tridentMintCallback(bytes calldata data) external;\\n}\\n\",\"keccak256\":\"0x256e838362a3064201b37b3b7c08bc1421b173a6fea633176123f0b827b868c9\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IWhiteListManager.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident franchised pool whitelist manager interface.\\ninterface IWhiteListManager {\\n    function whitelistedAccounts(address operator, address account) external returns (bool);\\n}\\n\",\"keccak256\":\"0x8de295afb9c76132947e2fd4f120bc437ee2c6f41fda1db2bcf6074b977d6df8\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/MathUtils.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice A library that contains functions for calculating differences between two uint256.\\n/// @author Adapted from https://github.com/saddle-finance/saddle-contract/blob/master/contracts/MathUtils.sol.\\nlibrary MathUtils {\\n    /// @notice Compares a and b and returns 'true' if the difference between a and b\\n    /// is less than 1 or equal to each other.\\n    /// @param a uint256 to compare with.\\n    /// @param b uint256 to compare with.\\n    function within1(uint256 a, uint256 b) internal pure returns (bool) {\\n        unchecked {\\n            if (a > b) {\\n                return a - b <= 1;\\n            }\\n            return b - a <= 1;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x7f02d5a108fe7743d0aa4274a0234f81ffe25ba702ce6ba46d94db27cde97d52\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/PoolDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer for whitelisted template factories.\\n/// @author Mudit Gupta.\\nabstract contract PoolDeployer {\\n    address public immutable masterDeployer;\\n\\n    mapping(address => mapping(address => address[])) public pools;\\n    mapping(bytes32 => address) public configAddress;\\n\\n    error UnauthorisedDeployer();\\n    error ZeroAddress();\\n    error InvalidTokenOrder();\\n\\n    modifier onlyMaster() {\\n        if (msg.sender != masterDeployer) revert UnauthorisedDeployer();\\n        _;\\n    }\\n\\n    constructor(address _masterDeployer) {\\n        if (_masterDeployer == address(0)) revert ZeroAddress();\\n        masterDeployer = _masterDeployer;\\n    }\\n\\n    function _registerPool(\\n        address pool,\\n        address[] memory tokens,\\n        bytes32 salt\\n    ) internal onlyMaster {\\n        // @dev Store the address of the deployed contract.\\n        configAddress[salt] = pool;\\n        // @dev Attacker used underflow, it was not very effective. poolimon!\\n        // null token array would cause deployment to fail via out of bounds memory axis/gas limit.\\n        unchecked {\\n            for (uint256 i; i < tokens.length - 1; i++) {\\n                if (tokens[i] >= tokens[i + 1]) revert InvalidTokenOrder();\\n                for (uint256 j = i + 1; j < tokens.length; j++) {\\n                    pools[tokens[i]][tokens[j]].push(pool);\\n                    pools[tokens[j]][tokens[i]].push(pool);\\n                }\\n            }\\n        }\\n    }\\n\\n    function poolsCount(address token0, address token1) external view returns (uint256 count) {\\n        count = pools[token0][token1].length;\\n    }\\n\\n    function getPools(\\n        address token0,\\n        address token1,\\n        uint256 startIndex,\\n        uint256 count\\n    ) external view returns (address[] memory pairPools) {\\n        pairPools = new address[](count);\\n        for (uint256 i = 0; i < count; i++) {\\n            pairPools[i] = pools[token0][token1][startIndex + i];\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x34c44a489ccaf9a7b2bc05527113552a2ebc5a8b4b9d47035e465c39cf569b81\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/franchised/FranchisedHybridPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../../interfaces/IBentoBoxMinimal.sol\\\";\\nimport \\\"../../interfaces/IMasterDeployer.sol\\\";\\nimport \\\"../../interfaces/IPool.sol\\\";\\nimport \\\"../../interfaces/ITridentCallee.sol\\\";\\nimport \\\"../../libraries/MathUtils.sol\\\";\\nimport \\\"./TridentFranchisedERC20.sol\\\";\\n\\n/// @notice Trident exchange franchised pool template with hybrid like-kind formula for swapping between an ERC-20 token pair.\\n/// @dev The reserves are stored as bento shares. However, the stableswap invariant is applied to the underlying amounts.\\n///      The API uses the underlying amounts.\\ncontract FranchisedHybridPool is IPool, TridentFranchisedERC20 {\\n    using MathUtils for uint256;\\n\\n    event Mint(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\\n    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed recipient, uint256 liquidity);\\n    event Sync(uint256 reserve0, uint256 reserve1);\\n\\n    uint256 internal constant MINIMUM_LIQUIDITY = 10**3;\\n    uint8 internal constant PRECISION = 112;\\n\\n    /// @dev Constant value used as max loop limit.\\n    uint256 internal constant MAX_LOOP_LIMIT = 256;\\n    uint256 internal constant MAX_FEE = 10000; // @dev 100%.\\n    uint256 public immutable swapFee;\\n\\n    address public immutable barFeeTo;\\n    address public immutable bento;\\n    address public immutable masterDeployer;\\n    address public immutable token0;\\n    address public immutable token1;\\n    uint256 public immutable A;\\n    uint256 internal immutable N_A; // @dev 2 * A.\\n    uint256 internal constant A_PRECISION = 100;\\n\\n    /// @dev Multipliers for each pooled token's precision to get to POOL_PRECISION_DECIMALS.\\n    /// For example, TBTC has 18 decimals, so the multiplier should be 1. WBTC\\n    /// has 8, so the multiplier should be 10 ** 18 / 10 ** 8 => 10 ** 10.\\n    uint256 public immutable token0PrecisionMultiplier;\\n    uint256 public immutable token1PrecisionMultiplier;\\n\\n    uint256 public barFee;\\n\\n    uint128 internal reserve0;\\n    uint128 internal reserve1;\\n\\n    bytes32 public constant override poolIdentifier = \\\"Trident:FranchisedHybrid\\\";\\n\\n    uint256 internal unlocked;\\n    modifier lock() {\\n        require(unlocked == 1, \\\"LOCKED\\\");\\n        unlocked = 2;\\n        _;\\n        unlocked = 1;\\n    }\\n\\n    constructor(bytes memory _deployData, address _masterDeployer) {\\n        (address _token0, address _token1, uint256 _swapFee, uint256 a, address _whiteListManager, address _operator, bool _level2) = abi\\n            .decode(_deployData, (address, address, uint256, uint256, address, address, bool));\\n\\n        // @dev Factory ensures that the tokens are sorted.\\n        require(_token0 != address(0), \\\"ZERO_ADDRESS\\\");\\n        require(_token0 != _token1, \\\"IDENTICAL_ADDRESSES\\\");\\n        require(_swapFee <= MAX_FEE, \\\"INVALID_SWAP_FEE\\\");\\n        require(a != 0, \\\"ZERO_A\\\");\\n\\n        TridentFranchisedERC20.initialize(_whiteListManager, _operator, _level2);\\n\\n        (, bytes memory _barFee) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFee.selector));\\n        (, bytes memory _barFeeTo) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFeeTo.selector));\\n        (, bytes memory _bento) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.bento.selector));\\n        (, bytes memory _decimals0) = _token0.staticcall(abi.encodeWithSelector(0x313ce567)); // @dev 'decimals()'.\\n        (, bytes memory _decimals1) = _token1.staticcall(abi.encodeWithSelector(0x313ce567)); // @dev 'decimals()'.\\n\\n        token0 = _token0;\\n        token1 = _token1;\\n        swapFee = _swapFee;\\n        barFee = abi.decode(_barFee, (uint256));\\n        barFeeTo = abi.decode(_barFeeTo, (address));\\n        bento = abi.decode(_bento, (address));\\n        masterDeployer = _masterDeployer;\\n        A = a;\\n        N_A = 2 * a;\\n        token0PrecisionMultiplier = 10**(decimals - abi.decode(_decimals0, (uint8)));\\n        token1PrecisionMultiplier = 10**(decimals - abi.decode(_decimals1, (uint8)));\\n        unlocked = 1;\\n    }\\n\\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\\n    /// The router must ensure that sufficient LP tokens are minted by using the return value.\\n    function mint(bytes calldata data) public override lock returns (uint256 liquidity) {\\n        address recipient = abi.decode(data, (address));\\n        _checkWhiteList(recipient);\\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 _totalSupply = totalSupply;\\n\\n        uint256 amount0 = balance0 - _reserve0;\\n        uint256 amount1 = balance1 - _reserve1;\\n        (uint256 fee0, uint256 fee1) = _nonOptimalMintFee(amount0, amount1, _reserve0, _reserve1);\\n        uint256 newLiq = _computeLiquidity(balance0 - fee0, balance1 - fee1);\\n\\n        if (_totalSupply == 0) {\\n            liquidity = newLiq - MINIMUM_LIQUIDITY;\\n            _mint(address(0), MINIMUM_LIQUIDITY);\\n        } else {\\n            uint256 oldLiq = _computeLiquidity(_reserve0, _reserve1);\\n            liquidity = ((newLiq - oldLiq) * _totalSupply) / oldLiq;\\n        }\\n        require(liquidity != 0, \\\"INSUFFICIENT_LIQUIDITY_MINTED\\\");\\n        _mint(recipient, liquidity);\\n        _updateReserves();\\n        uint256 liquidityForEvent = liquidity;\\n        emit Mint(msg.sender, amount0, amount1, recipient, liquidityForEvent);\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\\n    function burn(bytes calldata data) public override lock returns (IPool.TokenAmount[] memory withdrawnAmounts) {\\n        (address recipient, bool unwrapBento) = abi.decode(data, (address, bool));\\n        _checkWhiteList(recipient);\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 _totalSupply = totalSupply;\\n        uint256 liquidity = balanceOf[address(this)];\\n\\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\\n\\n        _burn(address(this), liquidity);\\n        _transfer(token0, amount0, recipient, unwrapBento);\\n        _transfer(token1, amount1, recipient, unwrapBento);\\n\\n        balance0 -= _toShare(token0, amount0);\\n        balance1 -= _toShare(token1, amount1);\\n\\n        _updateReserves();\\n\\n        withdrawnAmounts = new TokenAmount[](2);\\n        withdrawnAmounts[0] = TokenAmount({token: token0, amount: amount0});\\n        withdrawnAmounts[1] = TokenAmount({token: token1, amount: amount1});\\n\\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\\n    /// - i.e., the user gets a single token out by burning LP tokens.\\n    function burnSingle(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenOut, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\\n        _checkWhiteList(recipient);\\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 _totalSupply = totalSupply;\\n        uint256 liquidity = balanceOf[address(this)];\\n\\n        uint256 amount0 = (liquidity * balance0) / _totalSupply;\\n        uint256 amount1 = (liquidity * balance1) / _totalSupply;\\n\\n        _burn(address(this), liquidity);\\n\\n        if (tokenOut == token1) {\\n            // @dev Swap `token0` for `token1`.\\n            // @dev Calculate `amountOut` as if the user first withdrew balanced liquidity and then swapped `token0` for `token1`.\\n            uint256 fee = _handleFee(token0, amount0);\\n            amount1 += _getAmountOut(amount0 - fee, _reserve0 - amount0, _reserve1 - amount1, true);\\n            _transfer(token1, amount1, recipient, unwrapBento);\\n            balance0 -= _toShare(token0, amount0);\\n            amountOut = amount1;\\n            amount0 = 0;\\n        } else {\\n            // @dev Swap `token1` for `token0`.\\n            require(tokenOut == token0, \\\"INVALID_OUTPUT_TOKEN\\\");\\n            uint256 fee = _handleFee(token1, amount1);\\n            amount0 += _getAmountOut(amount1 - fee, _reserve0 - amount0, _reserve1 - amount1, false);\\n            _transfer(token0, amount0, recipient, unwrapBento);\\n            balance1 -= _toShare(token1, amount1);\\n            amountOut = amount0;\\n            amount1 = 0;\\n        }\\n        _updateReserves();\\n        emit Burn(msg.sender, amount0, amount1, recipient, liquidity);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\\n    function swap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address recipient, bool unwrapBento) = abi.decode(data, (address, address, bool));\\n        if (level2) _checkWhiteList(recipient);\\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\\n        (uint256 balance0, uint256 balance1) = _balance();\\n        uint256 amountIn;\\n        address tokenOut;\\n\\n        if (tokenIn == token0) {\\n            tokenOut = token1;\\n            amountIn = balance0 - _reserve0;\\n            uint256 fee = _handleFee(tokenIn, amountIn);\\n            amountOut = _getAmountOut(amountIn - fee, _reserve0, _reserve1, true);\\n        } else {\\n            require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n            tokenOut = token0;\\n            amountIn = balance1 - _reserve1;\\n            uint256 fee = _handleFee(tokenIn, amountIn);\\n            amountOut = _getAmountOut(amountIn - fee, _reserve0, _reserve1, false);\\n        }\\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n        _updateReserves();\\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\\n    }\\n\\n    /// @dev Swaps one token for another with payload. The router must support swap callbacks and ensure there isn't too much slippage.\\n    function flashSwap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address recipient, bool unwrapBento, uint256 amountIn, bytes memory context) = abi.decode(\\n            data,\\n            (address, address, bool, uint256, bytes)\\n        );\\n        if (level2) _checkWhiteList(recipient);\\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\\n        address tokenOut;\\n        uint256 fee;\\n\\n        if (tokenIn == token0) {\\n            tokenOut = token1;\\n            amountIn = _toAmount(token0, amountIn);\\n            fee = (amountIn * swapFee) / MAX_FEE;\\n            amountOut = _getAmountOut(amountIn - fee, _reserve0, _reserve1, true);\\n            _processSwap(token1, recipient, amountOut, context, unwrapBento);\\n            uint256 balance0 = _toAmount(token0, __balance(token0));\\n            require(balance0 - _reserve0 >= amountIn, \\\"INSUFFICIENT_AMOUNT_IN\\\");\\n        } else {\\n            require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n            tokenOut = token0;\\n            amountIn = _toAmount(token1, amountIn);\\n            fee = (amountIn * swapFee) / MAX_FEE;\\n            amountOut = _getAmountOut(amountIn - fee, _reserve0, _reserve1, false);\\n            _processSwap(token0, recipient, amountOut, context, unwrapBento);\\n            uint256 balance1 = _toAmount(token1, __balance(token1));\\n            require(balance1 - _reserve1 >= amountIn, \\\"INSUFFICIENT_AMOUNT_IN\\\");\\n        }\\n        _transfer(tokenIn, fee, barFeeTo, false);\\n        _updateReserves();\\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\\n    }\\n\\n    /// @dev Updates `barFee` for Trident protocol.\\n    function updateBarFee() public {\\n        (, bytes memory _barFee) = masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFee.selector));\\n        barFee = abi.decode(_barFee, (uint256));\\n    }\\n\\n    function _processSwap(\\n        address tokenOut,\\n        address to,\\n        uint256 amountOut,\\n        bytes memory data,\\n        bool unwrapBento\\n    ) internal {\\n        _transfer(tokenOut, amountOut, to, unwrapBento);\\n        if (data.length != 0) ITridentCallee(msg.sender).tridentSwapCallback(data);\\n    }\\n\\n    function _getReserves() internal view returns (uint256 _reserve0, uint256 _reserve1) {\\n        (_reserve0, _reserve1) = (reserve0, reserve1);\\n        _reserve0 = _toAmount(token0, _reserve0);\\n        _reserve1 = _toAmount(token1, _reserve1);\\n    }\\n\\n    function _updateReserves() internal {\\n        (uint256 _reserve0, uint256 _reserve1) = _balance();\\n        require(_reserve0 < type(uint128).max && _reserve1 < type(uint128).max, \\\"OVERFLOW\\\");\\n        reserve0 = uint128(_reserve0);\\n        reserve1 = uint128(_reserve1);\\n        emit Sync(_reserve0, _reserve1);\\n    }\\n\\n    function _balance() internal view returns (uint256 balance0, uint256 balance1) {\\n        balance0 = _toAmount(token0, __balance(token0));\\n        balance1 = _toAmount(token1, __balance(token1));\\n    }\\n\\n    function __balance(address token) internal view returns (uint256 balance) {\\n        // @dev balanceOf(address,address).\\n        (, bytes memory ___balance) = bento.staticcall(abi.encodeWithSelector(IBentoBoxMinimal.balanceOf.selector, token, address(this)));\\n        balance = abi.decode(___balance, (uint256));\\n    }\\n\\n    function _toAmount(address token, uint256 input) internal view returns (uint256 output) {\\n        // @dev toAmount(address,uint256,bool).\\n        (, bytes memory _output) = bento.staticcall(abi.encodeWithSelector(IBentoBoxMinimal.toAmount.selector, token, input, false));\\n        output = abi.decode(_output, (uint256));\\n    }\\n\\n    function _toShare(address token, uint256 input) internal view returns (uint256 output) {\\n        // @dev toShare(address,uint256,bool).\\n        (, bytes memory _output) = bento.staticcall(abi.encodeWithSelector(IBentoBoxMinimal.toShare.selector, token, input, false));\\n        output = abi.decode(_output, (uint256));\\n    }\\n\\n    function _getAmountOut(\\n        uint256 amountIn,\\n        uint256 _reserve0,\\n        uint256 _reserve1,\\n        bool token0In\\n    ) internal view returns (uint256 dy) {\\n        uint256 xpIn;\\n        uint256 xpOut;\\n\\n        if (token0In) {\\n            xpIn = _reserve0 * token0PrecisionMultiplier;\\n            xpOut = _reserve1 * token1PrecisionMultiplier;\\n            amountIn *= token0PrecisionMultiplier;\\n        } else {\\n            xpIn = _reserve1 * token1PrecisionMultiplier;\\n            xpOut = _reserve0 * token0PrecisionMultiplier;\\n            amountIn *= token1PrecisionMultiplier;\\n        }\\n        uint256 d = _computeLiquidityFromAdjustedBalances(xpIn, xpOut);\\n        uint256 x = xpIn + amountIn;\\n        uint256 y = _getY(x, d);\\n        dy = xpOut - y - 1;\\n        dy /= (token0In ? token1PrecisionMultiplier : token0PrecisionMultiplier);\\n    }\\n\\n    function _transfer(\\n        address token,\\n        uint256 amount,\\n        address to,\\n        bool unwrapBento\\n    ) internal {\\n        if (unwrapBento) {\\n            // @dev withdraw(address,address,address,uint256,uint256).\\n            (bool success, ) = bento.call(abi.encodeWithSelector(IBentoBoxMinimal.withdraw.selector, token, address(this), to, amount, 0));\\n            require(success, \\\"WITHDRAW_FAILED\\\");\\n        } else {\\n            // @dev transfer(address,address,address,uint256).\\n            (bool success, ) = bento.call(\\n                abi.encodeWithSelector(IBentoBoxMinimal.transfer.selector, token, address(this), to, _toShare(token, amount))\\n            );\\n            require(success, \\\"TRANSFER_FAILED\\\");\\n        }\\n    }\\n\\n    /// @notice Get D, the StableSwap invariant, based on a set of balances and a particular A.\\n    /// See the StableSwap paper for details.\\n    /// @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L319.\\n    /// @return liquidity The invariant, at the precision of the pool.\\n    function _computeLiquidity(uint256 _reserve0, uint256 _reserve1) internal view returns (uint256 liquidity) {\\n        uint256 xp0 = _reserve0 * token0PrecisionMultiplier;\\n        uint256 xp1 = _reserve1 * token1PrecisionMultiplier;\\n        liquidity = _computeLiquidityFromAdjustedBalances(xp0, xp1);\\n    }\\n\\n    function _computeLiquidityFromAdjustedBalances(uint256 xp0, uint256 xp1) internal view returns (uint256 computed) {\\n        uint256 s = xp0 + xp1;\\n\\n        if (s == 0) {\\n            computed = 0;\\n        }\\n        uint256 prevD;\\n        uint256 D = s;\\n        for (uint256 i = 0; i < MAX_LOOP_LIMIT; i++) {\\n            uint256 dP = (((D * D) / xp0) * D) / xp1 / 4;\\n            prevD = D;\\n            D = (((N_A * s) / A_PRECISION + 2 * dP) * D) / ((N_A / A_PRECISION - 1) * D + 3 * dP);\\n            if (D.within1(prevD)) {\\n                break;\\n            }\\n        }\\n        computed = D;\\n    }\\n\\n    /// @notice Calculate the new balances of the tokens given the indexes of the token\\n    /// that is swapped from (FROM) and the token that is swapped to (TO).\\n    /// This function is used as a helper function to calculate how much TO token\\n    /// the user should receive on swap.\\n    /// @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L432.\\n    /// @param x The new total amount of FROM token.\\n    /// @return y The amount of TO token that should remain in the pool.\\n    function _getY(uint256 x, uint256 D) internal view returns (uint256 y) {\\n        uint256 c = (D * D) / (x * 2);\\n        c = (c * D) / ((N_A * 2) / A_PRECISION);\\n        uint256 b = x + ((D * A_PRECISION) / N_A);\\n        uint256 yPrev;\\n        y = D;\\n        // @dev Iterative approximation.\\n        for (uint256 i = 0; i < MAX_LOOP_LIMIT; i++) {\\n            yPrev = y;\\n            y = (y * y + c) / (y * 2 + b - D);\\n            if (y.within1(yPrev)) {\\n                break;\\n            }\\n        }\\n    }\\n\\n    /// @notice Calculate the price of a token in the pool given\\n    /// precision-adjusted balances and a particular D and precision-adjusted\\n    /// array of balances.\\n    /// @dev This is accomplished via solving the quadratic equation iteratively.\\n    /// See the StableSwap paper and Curve.fi implementation for further details.\\n    /// x_1**2 + x1 * (sum' - (A*n**n - 1) * D / (A * n**n)) = D ** (n + 1) / (n ** (2 * n) * prod' * A)\\n    /// x_1**2 + b*x_1 = c\\n    /// x_1 = (x_1**2 + c) / (2*x_1 + b)\\n    /// @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L276.\\n    /// @return y The price of the token, in the same precision as in xp.\\n    function _getYD(\\n        uint256 s, // @dev xpOut.\\n        uint256 d\\n    ) internal view returns (uint256 y) {\\n        uint256 c = (d * d) / (s * 2);\\n        c = (c * d) / ((N_A * 2) / A_PRECISION);\\n\\n        uint256 b = s + ((d * A_PRECISION) / N_A);\\n        uint256 yPrev;\\n        y = d;\\n\\n        for (uint256 i = 0; i < MAX_LOOP_LIMIT; i++) {\\n            yPrev = y;\\n            y = (y * y + c) / (y * 2 + b - d);\\n            if (y.within1(yPrev)) {\\n                break;\\n            }\\n        }\\n    }\\n\\n    function _handleFee(address tokenIn, uint256 amountIn) internal returns (uint256 fee) {\\n        fee = (amountIn * swapFee) / MAX_FEE;\\n        uint256 _barFee = (fee * barFee) / MAX_FEE;\\n        _transfer(tokenIn, _barFee, barFeeTo, false);\\n    }\\n\\n    /// @dev This fee is charged to cover for `swapFee` when users add unbalanced liquidity.\\n    function _nonOptimalMintFee(\\n        uint256 _amount0,\\n        uint256 _amount1,\\n        uint256 _reserve0,\\n        uint256 _reserve1\\n    ) internal view returns (uint256 token0Fee, uint256 token1Fee) {\\n        if (_reserve0 == 0 || _reserve1 == 0) return (0, 0);\\n        uint256 amount1Optimal = (_amount0 * _reserve1) / _reserve0;\\n\\n        if (amount1Optimal <= _amount1) {\\n            token1Fee = (swapFee * (_amount1 - amount1Optimal)) / (2 * MAX_FEE);\\n        } else {\\n            uint256 amount0Optimal = (_amount1 * _reserve0) / _reserve1;\\n            token0Fee = (swapFee * (_amount0 - amount0Optimal)) / (2 * MAX_FEE);\\n        }\\n    }\\n\\n    function getAssets() public view override returns (address[] memory assets) {\\n        assets = new address[](2);\\n        assets[0] = token0;\\n        assets[1] = token1;\\n    }\\n\\n    function getAmountOut(bytes calldata data) public view override returns (uint256 finalAmountOut) {\\n        (address tokenIn, uint256 amountIn) = abi.decode(data, (address, uint256));\\n        (uint256 _reserve0, uint256 _reserve1) = _getReserves();\\n        amountIn = _toAmount(tokenIn, amountIn);\\n        amountIn -= (amountIn * swapFee) / MAX_FEE;\\n\\n        if (tokenIn == token0) {\\n            finalAmountOut = _getAmountOut(amountIn, _reserve0, _reserve1, true);\\n        } else {\\n            require(tokenIn == token1, \\\"INVALID_INPUT_TOKEN\\\");\\n            finalAmountOut = _getAmountOut(amountIn, _reserve0, _reserve1, false);\\n        }\\n    }\\n\\n    function getAmountIn(bytes calldata) public pure override returns (uint256) {\\n        revert();\\n    }\\n\\n    function getReserves() public view returns (uint256 _reserve0, uint256 _reserve1) {\\n        (_reserve0, _reserve1) = _getReserves();\\n    }\\n}\\n\",\"keccak256\":\"0x67f0d767a6d89f9d9a79d572860d1025d16d9087365118e93b1b337401de3137\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/franchised/FranchisedHybridPoolFactory.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./FranchisedHybridPool.sol\\\";\\nimport \\\"../PoolDeployer.sol\\\";\\n\\n/// @notice Contract for deploying Trident exchange Franchised Hybrid Product Pool with configurations.\\n/// @author Mudit Gupta.\\ncontract FranchisedHybridPoolFactory is PoolDeployer {\\n    constructor(address _masterDeployer) PoolDeployer(_masterDeployer) {}\\n\\n    function deployPool(bytes memory _deployData) external returns (address pool) {\\n        (address tokenA, address tokenB, uint256 swapFee, uint256 a, address whiteListManager, address operator, bool level2) = abi.decode(\\n            _deployData,\\n            (address, address, uint256, uint256, address, address, bool)\\n        );\\n        if (tokenA > tokenB) {\\n            (tokenA, tokenB) = (tokenB, tokenA);\\n        }\\n\\n        // @dev Strips any extra data.\\n        _deployData = abi.encode(tokenA, tokenB, swapFee, a, whiteListManager, operator, level2);\\n        address[] memory tokens = new address[](2);\\n        tokens[0] = tokenA;\\n        tokens[1] = tokenB;\\n\\n        // @dev Salt is not actually needed since `_deployData` is part of creationCode and already contains the salt.\\n        bytes32 salt = keccak256(_deployData);\\n        pool = address(new FranchisedHybridPool{salt: salt}(_deployData, masterDeployer));\\n        _registerPool(pool, tokens, salt);\\n    }\\n}\\n\",\"keccak256\":\"0x5312171820933d41c11246537c0ae77a3153496dac33d83aa0c93e4c01aa5b59\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/franchised/TridentFranchisedERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../../interfaces/IWhiteListManager.sol\\\";\\n\\n/// @notice Trident franchised pool ERC-20 with EIP-2612 extension.\\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol,\\n/// License-Identifier: AGPL-3.0-only.\\nabstract contract TridentFranchisedERC20 {\\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\\n    event Transfer(address indexed sender, address indexed recipient, uint256 amount);\\n\\n    string public constant name = \\\"Sushi Franchised LP Token\\\";\\n    string public constant symbol = \\\"SLP\\\";\\n    uint8 public constant decimals = 18;\\n\\n    address public whiteListManager;\\n    address public operator;\\n    bool public level2;\\n\\n    uint256 public totalSupply;\\n    /// @notice owner -> balance mapping.\\n    mapping(address => uint256) public balanceOf;\\n    /// @notice owner -> spender -> allowance mapping.\\n    mapping(address => mapping(address => uint256)) public allowance;\\n\\n    /// @notice The EIP-712 typehash for this contract's {permit} struct.\\n    bytes32 public constant PERMIT_TYPEHASH =\\n        keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n    /// @notice The EIP-712 typehash for this contract's domain.\\n    bytes32 public immutable DOMAIN_SEPARATOR;\\n    /// @notice owner -> nonce mapping used in {permit}.\\n    mapping(address => uint256) public nonces;\\n\\n    constructor() {\\n        DOMAIN_SEPARATOR = keccak256(\\n            abi.encode(\\n                keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"),\\n                keccak256(bytes(name)),\\n                keccak256(bytes(\\\"1\\\")),\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    /// @dev Initializes whitelist settings from pool.\\n    function initialize(\\n        address _whiteListManager,\\n        address _operator,\\n        bool _level2\\n    ) internal {\\n        whiteListManager = _whiteListManager;\\n        operator = _operator;\\n        if (_level2) level2 = true;\\n    }\\n\\n    /// @notice Approves `amount` from `msg.sender` to be spent by `spender`.\\n    /// @param spender Address of the party that can pull tokens from `msg.sender`'s account.\\n    /// @param amount The maximum collective `amount` that `spender` can pull.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function approve(address spender, uint256 amount) external returns (bool) {\\n        allowance[msg.sender][spender] = amount;\\n        emit Approval(msg.sender, spender, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `msg.sender` to `recipient`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transfer(address recipient, uint256 amount) external returns (bool) {\\n        if (level2) _checkWhiteList(recipient);\\n        balanceOf[msg.sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(msg.sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\\n    /// @param sender Address to pull tokens `from`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool) {\\n        if (level2) _checkWhiteList(recipient);\\n        if (allowance[sender][msg.sender] != type(uint256).max) {\\n            allowance[sender][msg.sender] -= amount;\\n        }\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Triggers an approval from `owner` to `spender`.\\n    /// @param owner The address to approve from.\\n    /// @param spender The address to be approved.\\n    /// @param amount The number of tokens that are approved (2^256-1 means infinite).\\n    /// @param deadline The time at which to expire the signature.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        require(deadline >= block.timestamp, \\\"PERMIT_DEADLINE_EXPIRED\\\");\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                \\\"\\\\x19\\\\x01\\\",\\n                DOMAIN_SEPARATOR,\\n                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))\\n            )\\n        );\\n        address recoveredAddress = ecrecover(digest, v, r, s);\\n        require(recoveredAddress != address(0) && recoveredAddress == owner, \\\"INVALID_PERMIT_SIGNATURE\\\");\\n        allowance[recoveredAddress][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    function _mint(address recipient, uint256 amount) internal {\\n        totalSupply += amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(address(0), recipient, amount);\\n    }\\n\\n    function _burn(address sender, uint256 amount) internal {\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from underflow - users won't ever\\n        // have a balance larger than `totalSupply`.\\n        unchecked {\\n            totalSupply -= amount;\\n        }\\n        emit Transfer(sender, address(0), amount);\\n    }\\n\\n    /// @dev Checks `whiteListManager` for pool `operator` and given user `account`.\\n    function _checkWhiteList(address account) internal view {\\n        (, bytes memory _whitelisted) = whiteListManager.staticcall(\\n            abi.encodeWithSelector(IWhiteListManager.whitelistedAccounts.selector, operator, account)\\n        );\\n        bool whitelisted = abi.decode(_whitelisted, (bool));\\n        require(whitelisted, \\\"NOT_WHITELISTED\\\");\\n    }\\n}\\n\",\"keccak256\":\"0x2d3db0ed7c3fb40367a4a3fa8fc5ba3dece956fb319b9963cfe5b63ea1ee3b06\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 11688,
                "contract": "contracts/pool/franchised/FranchisedHybridPoolFactory.sol:FranchisedHybridPoolFactory",
                "label": "pools",
                "offset": 0,
                "slot": "0",
                "type": "t_mapping(t_address,t_mapping(t_address,t_array(t_address)dyn_storage))"
              },
              {
                "astId": 11692,
                "contract": "contracts/pool/franchised/FranchisedHybridPoolFactory.sol:FranchisedHybridPoolFactory",
                "label": "configAddress",
                "offset": 0,
                "slot": "1",
                "type": "t_mapping(t_bytes32,t_address)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_address)dyn_storage": {
                "base": "t_address",
                "encoding": "dynamic_array",
                "label": "address[]",
                "numberOfBytes": "32"
              },
              "t_bytes32": {
                "encoding": "inplace",
                "label": "bytes32",
                "numberOfBytes": "32"
              },
              "t_mapping(t_address,t_array(t_address)dyn_storage)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => address[])",
                "numberOfBytes": "32",
                "value": "t_array(t_address)dyn_storage"
              },
              "t_mapping(t_address,t_mapping(t_address,t_array(t_address)dyn_storage))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => address[]))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_array(t_address)dyn_storage)"
              },
              "t_mapping(t_bytes32,t_address)": {
                "encoding": "mapping",
                "key": "t_bytes32",
                "label": "mapping(bytes32 => address)",
                "numberOfBytes": "32",
                "value": "t_address"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "notice": "Contract for deploying Trident exchange Franchised Hybrid Product Pool with configurations.",
            "version": 1
          }
        }
      },
      "contracts/pool/franchised/FranchisedIndexPool.sol": {
        "FranchisedIndexPool": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_deployData",
                  "type": "bytes"
                },
                {
                  "internalType": "address",
                  "name": "_masterDeployer",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "tokenOut",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "Burn",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "tokenIn",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "Mint",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenIn",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "tokenOut",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountIn",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "name": "Swap",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "barFeeTo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burn",
              "outputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct IPool.TokenAmount[]",
                  "name": "withdrawnAmounts",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "burnSingle",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "flashSwap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "getAmountIn",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "getAmountOut",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getAssets",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "assets",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getReservesAndWeights",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "reserves",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint136[]",
                  "name": "weights",
                  "type": "uint136[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "level2",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "mint",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "liquidity",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "operator",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "poolIdentifier",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "records",
              "outputs": [
                {
                  "internalType": "uint120",
                  "name": "reserve",
                  "type": "uint120"
                },
                {
                  "internalType": "uint136",
                  "name": "weight",
                  "type": "uint136"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "swap",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "amountOut",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "swapFee",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "updateBarFee",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "whiteListManager",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "details": "The reserves are stored as bento shares.      The curve is applied to shares as well. This pool does not care about the underlying amounts.",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "params": {
                  "amount": "The maximum collective `amount` that `spender` can pull.",
                  "spender": "Address of the party that can pull tokens from `msg.sender`'s account."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "burn(bytes)": {
                "details": "Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens."
              },
              "burnSingle(bytes)": {
                "details": "Burns LP tokens sent to this contract and swaps one of the output tokens for another - i.e., the user gets a single token out by burning LP tokens."
              },
              "flashSwap(bytes)": {
                "details": "Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage."
              },
              "getAmountOut(bytes)": {
                "details": "The pool does not need to include a trade simulator directly in itself - it can use a library.",
                "params": {
                  "data": "ABI-encoded params that the pool requires."
                },
                "returns": {
                  "amountOut": "The amount of output tokens that will be sent to the user if the trade is executed."
                }
              },
              "getAssets()": {
                "returns": {
                  "assets": "An array of tokens supported by the pool."
                }
              },
              "mint(bytes)": {
                "details": "Mints LP tokens - should be called via the router after transferring `bento` tokens. The router must ensure that sufficient LP tokens are minted by using the return value."
              },
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "amount": "The number of tokens that are approved (2^256-1 means infinite).",
                  "deadline": "The time at which to expire the signature.",
                  "owner": "The address to approve from.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "spender": "The address to be approved.",
                  "v": "The recovery byte of the signature."
                }
              },
              "swap(bytes)": {
                "details": "Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage."
              },
              "transfer(address,uint256)": {
                "params": {
                  "amount": "The token `amount` to move.",
                  "recipient": "The address to move tokens to."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "transferFrom(address,address,uint256)": {
                "params": {
                  "amount": "The token `amount` to move.",
                  "recipient": "The address to move tokens to.",
                  "sender": "Address to pull tokens `from`."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "updateBarFee()": {
                "details": "Updates `barFee` for Trident protocol."
              }
            },
            "stateVariables": {
              "poolIdentifier": {
                "return": "A unique identifier for the pool type.",
                "returns": {
                  "_0": "A unique identifier for the pool type."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_21819": {
                  "entryPoint": null,
                  "id": 21819,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_23291": {
                  "entryPoint": null,
                  "id": 23291,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_mint_23564": {
                  "entryPoint": 2107,
                  "id": 23564,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@initialize_23316": {
                  "entryPoint": 2027,
                  "id": 23316,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "abi_decode_address_fromMemory": {
                  "entryPoint": 2216,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_array_uint136_dyn_fromMemory": {
                  "entryPoint": 2234,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_bool_fromMemory": {
                  "entryPoint": 2379,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payable_fromMemory": {
                  "entryPoint": 2396,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint136_$dyn_memory_ptrt_uint256t_address_payablet_address_payablet_bool_fromMemory": {
                  "entryPoint": 2435,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory": {
                  "entryPoint": 2716,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 2899,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 2925,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_00a4856cd405d120cf9a0137dbcece84ecbe301664e8b1f382f9ad760cebc409__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_75f734113dfa6f453446d4f37ce54f235fdeedec101ae5c27cbf0958b768d046__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_87c75609d2efba568b00c7442679e76c5cb56f78d53aa8cdaaa9ad7d0cd20528__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_e75e5d818d3b36fb5c347de52391ac0301ffdae8d8720063773226e186361380__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 2955,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "array_allocation_size_array_address_dyn": {
                  "entryPoint": 3006,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint136": {
                  "entryPoint": 3044,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 3090,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 3117,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 3152,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 3186,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "increment_t_uint256": {
                  "entryPoint": 3237,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 3267,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 3289,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 3311,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 3333,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:9190:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "74:78:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "84:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "99:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "93:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "93:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "84:5:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "140:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "115:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "115:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "115:31:64"
                            }
                          ]
                        },
                        "name": "abi_decode_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "53:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "64:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:138:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "232:736:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "281:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "290:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "293:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "283:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "283:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "283:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "260:6:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "268:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "256:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "256:17:64"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "275:3:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "252:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "252:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "245:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "245:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "242:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "306:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "322:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "316:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "316:13:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "310:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "338:14:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "348:4:64",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "342:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "361:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "428:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_address_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "388:39:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "388:43:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "372:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "372:60:64"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "365:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "441:16:64",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "454:3:64"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "445:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "473:3:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "478:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "466:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "466:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "466:15:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "490:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "501:3:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "506:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "497:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "497:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "490:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "518:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "533:6:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "541:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "529:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "529:15:64"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "522:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "598:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "607:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "610:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "600:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "600:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "600:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "567:6:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "579:1:64",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "582:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "575:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "575:10:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "563:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "563:23:64"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "588:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "559:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "559:32:64"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "593:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "556:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "556:41:64"
                              },
                              "nodeType": "YulIf",
                              "src": "553:61:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "623:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "632:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "627:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "642:12:64",
                              "value": {
                                "name": "i",
                                "nodeType": "YulIdentifier",
                                "src": "653:1:64"
                              },
                              "variables": [
                                {
                                  "name": "i_1",
                                  "nodeType": "YulTypedName",
                                  "src": "646:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "714:225:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "728:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "747:3:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "741:5:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "741:10:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "732:5:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "818:16:64",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "i",
                                                "nodeType": "YulIdentifier",
                                                "src": "827:1:64"
                                              },
                                              {
                                                "name": "i",
                                                "nodeType": "YulIdentifier",
                                                "src": "830:1:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "820:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "820:12:64"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "820:12:64"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value",
                                              "nodeType": "YulIdentifier",
                                              "src": "777:5:64"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "value",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "788:5:64"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "803:3:64",
                                                          "type": "",
                                                          "value": "136"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nodeType": "YulLiteral",
                                                          "src": "808:1:64",
                                                          "type": "",
                                                          "value": "1"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "shl",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "799:3:64"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "799:11:64"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "812:1:64",
                                                      "type": "",
                                                      "value": "1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "sub",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "795:3:64"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "795:19:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "784:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "784:31:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "eq",
                                            "nodeType": "YulIdentifier",
                                            "src": "774:2:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "774:42:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "767:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "767:50:64"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "764:70:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "854:3:64"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "859:5:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "847:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "847:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "847:18:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "878:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "889:3:64"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "894:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "885:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "885:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "878:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "910:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "921:3:64"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "926:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "917:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "917:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "910:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "674:3:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "679:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "671:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "671:11:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "683:22:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "685:18:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "696:3:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "701:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "692:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "692:11:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "685:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "667:3:64",
                                "statements": []
                              },
                              "src": "663:276:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "948:14:64",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "957:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "948:5:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_uint136_dyn_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "206:6:64",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "214:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "222:5:64",
                            "type": ""
                          }
                        ],
                        "src": "157:811:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1030:107:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1040:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1055:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1049:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1049:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "1040:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1115:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1124:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1127:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1117:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1117:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1117:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1084:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "1105:5:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "1098:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1098:13:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1091:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1091:21:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1081:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1081:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1074:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1074:40:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1071:60:64"
                            }
                          ]
                        },
                        "name": "abi_decode_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1009:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1020:5:64",
                            "type": ""
                          }
                        ],
                        "src": "973:164:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1231:170:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1277:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1286:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1289:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1279:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1279:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1279:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1252:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1261:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1248:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1248:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1273:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1244:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1244:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1241:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1302:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1321:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1315:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1315:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1306:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1365:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1340:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1340:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1340:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1380:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1390:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1380:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payable_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1197:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1208:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1220:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1142:259:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1635:1320:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1682:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1691:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1694:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1684:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1684:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1684:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1656:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1665:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1652:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1652:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1677:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1648:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1648:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1645:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1707:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1727:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1721:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1721:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1711:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1746:28:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1764:2:64",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1768:1:64",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "1760:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1760:10:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1772:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1756:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1756:18:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1750:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1801:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1810:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1813:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1803:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1803:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1803:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1789:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1797:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1786:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1786:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1783:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1826:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1840:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1851:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1836:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1836:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1830:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1906:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1915:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1918:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1908:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1908:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1908:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1885:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1889:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1881:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1881:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1896:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1877:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1877:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1870:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1870:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1867:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1931:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1947:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1941:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1941:9:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1935:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1959:14:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1969:4:64",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "1963:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1982:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "2049:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_address_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "2009:39:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2009:43:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1993:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1993:60:64"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "1986:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2062:16:64",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "2075:3:64"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2066:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "2094:3:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2099:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2087:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2087:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2087:15:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2111:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "2122:3:64"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "2127:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2118:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2118:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "2111:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2139:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2154:2:64"
                                  },
                                  {
                                    "name": "_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "2158:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2150:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2150:11:64"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "2143:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2215:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2224:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2227:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2217:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2217:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2217:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2184:2:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2192:1:64",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "2195:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "2188:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2188:10:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2180:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2180:19:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "2201:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2176:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2176:28:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2206:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2173:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2173:41:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2170:61:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2240:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2249:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "2244:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2304:186:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2318:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "2337:3:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "2331:5:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2331:10:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "2322:5:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "2379:5:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "validator_revert_address",
                                        "nodeType": "YulIdentifier",
                                        "src": "2354:24:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2354:31:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2354:31:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "2405:3:64"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "2410:5:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "2398:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2398:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2398:18:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2429:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "2440:3:64"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2445:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2436:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2436:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "2429:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2461:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "2472:3:64"
                                        },
                                        {
                                          "name": "_4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2477:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2468:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2468:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "2461:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2270:1:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2273:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2267:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2267:9:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2277:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2279:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "2288:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2291:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2284:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2284:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "2279:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2263:3:64",
                                "statements": []
                              },
                              "src": "2259:231:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2499:15:64",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "2509:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2499:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2523:41:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2549:9:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "2560:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2545:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2545:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2539:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2539:25:64"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2527:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2593:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2602:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2605:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2595:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2595:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2595:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2579:8:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2589:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2576:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2576:16:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2573:36:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2618:84:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2672:9:64"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2683:8:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2668:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2668:24:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2694:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_uint136_dyn_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2628:39:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2628:74:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2618:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2711:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2731:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2742:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2727:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2727:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2721:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2721:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2711:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2755:59:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2799:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2810:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2795:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2795:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2765:29:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2765:49:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2755:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2823:60:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2867:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2878:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2863:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2863:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2833:29:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2833:50:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2823:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2892:57:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2933:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2944:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2929:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2929:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_bool_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2902:26:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2902:47:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "2892:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint136_$dyn_memory_ptrt_uint256t_address_payablet_address_payablet_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1561:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1572:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1584:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1592:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1600:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1608:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1616:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "1624:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1406:1549:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3067:736:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3113:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3122:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3125:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3115:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3115:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3115:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3088:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3097:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3084:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3084:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3109:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3080:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3080:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3077:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3138:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3158:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3152:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3152:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3142:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3177:28:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3195:2:64",
                                        "type": "",
                                        "value": "64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3199:1:64",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "3191:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3191:10:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3203:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "3187:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3187:18:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3181:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3232:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3241:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3244:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3234:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3234:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3234:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3220:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3228:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3217:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3217:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3214:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3257:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3271:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3282:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3267:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3267:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "3261:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3337:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3346:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3349:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3339:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3339:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3339:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "3316:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3320:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3312:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3312:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3327:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3308:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3308:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3301:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3301:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3298:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3362:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3378:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3372:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3372:9:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "3366:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3404:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "3406:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3406:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3406:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3396:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3400:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3393:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3393:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3390:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3435:68:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "3476:2:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3480:4:64",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3472:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3472:13:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3491:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "3487:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3487:7:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3468:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3468:27:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3497:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3464:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3464:38:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3448:15:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3448:55:64"
                              },
                              "variables": [
                                {
                                  "name": "array",
                                  "nodeType": "YulTypedName",
                                  "src": "3439:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "3519:5:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3526:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3512:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3512:17:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3512:17:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3577:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3586:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3589:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3579:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3579:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3579:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "3552:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3556:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3548:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3548:11:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3561:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3544:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3544:22:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3568:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3541:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3541:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3538:55:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3628:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3632:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3624:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3624:13:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "3643:5:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3650:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3639:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3639:16:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3657:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3602:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3602:58:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3602:58:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3669:15:64",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "3679:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3669:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3693:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3716:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3727:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3712:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3712:20:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3706:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3706:27:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3697:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3767:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3742:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3742:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3742:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3782:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3792:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3782:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3025:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3036:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3048:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3056:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2960:843:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3889:103:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3935:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3944:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3947:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3937:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3937:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3937:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3910:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3919:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3906:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3906:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3931:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3902:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3902:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3899:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3960:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3976:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3970:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3970:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3960:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3855:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3866:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3878:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3808:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4134:137:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4144:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4164:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4158:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4158:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "4148:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4206:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4214:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4202:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4202:17:64"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4221:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4226:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "4180:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4180:53:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4180:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4242:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4253:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4258:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4249:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4249:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "4242:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4110:3:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4115:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4126:3:64",
                            "type": ""
                          }
                        ],
                        "src": "3997:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4489:276:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4499:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4511:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4522:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4507:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4507:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4499:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4542:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4553:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4535:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4535:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4535:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4580:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4591:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4576:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4576:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4596:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4569:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4569:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4569:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4623:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4634:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4619:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4619:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4639:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4612:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4612:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4612:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4666:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4677:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4662:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4662:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4682:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4655:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4655:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4655:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4709:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4720:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4705:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4705:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "4730:6:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4746:3:64",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4751:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "4742:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4742:11:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4755:1:64",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "4738:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4738:19:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4726:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4726:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4698:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4698:61:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4698:61:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4426:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "4437:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4445:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4453:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4461:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4469:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4480:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4276:489:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4944:164:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4961:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4972:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4954:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4954:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4954:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4995:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5006:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4991:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4991:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5011:2:64",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4984:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4984:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4984:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5034:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5045:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5030:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5030:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f415252415953",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5050:16:64",
                                    "type": "",
                                    "value": "INVALID_ARRAYS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5023:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5023:44:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5023:44:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5076:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5088:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5099:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5084:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5084:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5076:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_00a4856cd405d120cf9a0137dbcece84ecbe301664e8b1f382f9ad760cebc409__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4921:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4935:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4770:338:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5287:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5304:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5315:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5297:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5297:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5297:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5338:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5349:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5334:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5334:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5354:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5327:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5327:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5327:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5377:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5388:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5373:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5373:18:64"
                                  },
                                  {
                                    "hexValue": "5a45524f5f41444452455353",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5393:14:64",
                                    "type": "",
                                    "value": "ZERO_ADDRESS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5366:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5366:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5366:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5417:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5429:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5440:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5425:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5425:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5417:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5264:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5278:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5113:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5628:171:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5645:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5656:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5638:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5638:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5638:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5679:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5690:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5675:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5675:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5695:2:64",
                                    "type": "",
                                    "value": "21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5668:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5668:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5668:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5718:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5729:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5714:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5714:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f544f4b454e535f4c454e475448",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5734:23:64",
                                    "type": "",
                                    "value": "INVALID_TOKENS_LENGTH"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5707:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5707:51:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5707:51:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5767:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5779:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5790:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5775:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5775:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5767:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_75f734113dfa6f453446d4f37ce54f235fdeedec101ae5c27cbf0958b768d046__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5605:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5619:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5454:345:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5978:164:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5995:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6006:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5988:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5988:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5988:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6029:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6040:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6025:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6025:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6045:2:64",
                                    "type": "",
                                    "value": "14"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6018:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6018:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6018:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6068:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6079:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6064:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6064:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f574549474854",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6084:16:64",
                                    "type": "",
                                    "value": "INVALID_WEIGHT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6057:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6057:44:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6057:44:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6110:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6122:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6133:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6118:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6118:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6110:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_87c75609d2efba568b00c7442679e76c5cb56f78d53aa8cdaaa9ad7d0cd20528__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5955:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5969:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5804:338:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6321:166:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6338:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6349:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6331:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6331:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6331:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6372:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6383:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6368:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6368:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6388:2:64",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6361:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6361:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6361:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6411:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6422:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6407:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6407:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f535741505f464545",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6427:18:64",
                                    "type": "",
                                    "value": "INVALID_SWAP_FEE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6400:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6400:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6400:46:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6455:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6467:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6478:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6463:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6463:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6455:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6298:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6312:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6147:340:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6666:166:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6683:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6694:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6676:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6676:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6676:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6717:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6728:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6713:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6713:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6733:2:64",
                                    "type": "",
                                    "value": "16"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6706:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6706:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6706:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6756:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6767:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6752:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6752:18:64"
                                  },
                                  {
                                    "hexValue": "4d41585f544f54414c5f574549474854",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6772:18:64",
                                    "type": "",
                                    "value": "MAX_TOTAL_WEIGHT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6745:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6745:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6745:46:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6800:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6812:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6823:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6808:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6808:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6800:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e75e5d818d3b36fb5c347de52391ac0301ffdae8d8720063773226e186361380__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6643:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6657:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6492:340:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6938:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6948:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6960:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6971:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6956:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6956:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6948:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6990:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7001:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6983:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6983:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6983:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6907:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6918:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6929:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6837:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7064:230:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7074:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7090:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7084:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7084:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "7074:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7102:58:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7124:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "7140:4:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7146:2:64",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7136:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7136:13:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7155:2:64",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "7151:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7151:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7132:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7132:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7120:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7120:40:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7106:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7235:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "7237:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7237:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7237:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7178:10:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7198:2:64",
                                                "type": "",
                                                "value": "64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7202:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "7194:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7194:10:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7206:1:64",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "7190:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7190:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7175:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7175:34:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7214:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "7226:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7211:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7211:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "7172:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7172:62:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7169:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7273:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7277:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7266:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7266:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7266:22:64"
                            }
                          ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "7044:4:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "7053:6:64",
                            "type": ""
                          }
                        ],
                        "src": "7019:275:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7368:114:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7412:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "7414:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7414:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7414:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7384:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7400:2:64",
                                            "type": "",
                                            "value": "64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7404:1:64",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "7396:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7396:10:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7408:1:64",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7392:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7392:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7381:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7381:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7378:56:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7443:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7459:1:64",
                                        "type": "",
                                        "value": "5"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "7462:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "7455:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7455:14:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7471:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7451:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7451:25:64"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "7443:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_array_address_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "7348:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "7359:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7299:183:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7535:190:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7545:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7563:3:64",
                                        "type": "",
                                        "value": "136"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7568:1:64",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "7559:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7559:11:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7572:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "7555:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7555:19:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7549:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7583:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "7598:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7601:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "7594:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7594:10:64"
                              },
                              "variables": [
                                {
                                  "name": "x_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7587:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7613:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "7628:1:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7631:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "7624:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7624:10:64"
                              },
                              "variables": [
                                {
                                  "name": "y_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7617:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7668:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "7670:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7670:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7670:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7649:3:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7658:2:64"
                                      },
                                      {
                                        "name": "y_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7662:3:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7654:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7654:12:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7646:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7646:21:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7643:47:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7699:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7710:3:64"
                                  },
                                  {
                                    "name": "y_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7715:3:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7706:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7706:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "7699:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint136",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "7518:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "7521:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "7527:3:64",
                            "type": ""
                          }
                        ],
                        "src": "7487:238:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7778:80:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7805:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "7807:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7807:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7807:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "7794:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "7801:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "7797:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7797:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7791:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7791:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7788:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7836:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "7847:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "7850:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7843:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7843:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "7836:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "7761:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "7764:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "7770:3:64",
                            "type": ""
                          }
                        ],
                        "src": "7730:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7909:171:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7940:111:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7961:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "7968:3:64",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "7973:10:64",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "7964:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7964:20:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7954:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7954:31:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7954:31:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8005:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8008:4:64",
                                          "type": "",
                                          "value": "0x12"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7998:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7998:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7998:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8033:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8036:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8026:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8026:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8026:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "7929:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7922:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7922:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7919:132:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8060:14:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "8069:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "8072:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "8065:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8065:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "8060:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "7894:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "7897:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "7903:1:64",
                            "type": ""
                          }
                        ],
                        "src": "7863:217:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8137:116:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8196:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "8198:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8198:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8198:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "8168:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "8161:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8161:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "8154:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8154:17:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "8176:1:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8187:1:64",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "8183:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8183:6:64"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "8191:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "8179:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8179:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "8173:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8173:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "8150:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8150:45:64"
                              },
                              "nodeType": "YulIf",
                              "src": "8147:71:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8227:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "8242:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "8245:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "8238:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8238:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "8227:7:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "8116:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "8119:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "8125:7:64",
                            "type": ""
                          }
                        ],
                        "src": "8085:168:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8311:205:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8321:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8330:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "8325:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8390:63:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "8415:3:64"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "8420:1:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "8411:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "8411:11:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "8434:3:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "8439:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "8430:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "8430:11:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "8424:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "8424:18:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "8404:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8404:39:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8404:39:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "8351:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8354:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8348:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8348:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "8362:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8364:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "8373:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8376:2:64",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "8369:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8369:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "8364:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "8344:3:64",
                                "statements": []
                              },
                              "src": "8340:113:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8479:31:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "8492:3:64"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "8497:6:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "8488:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "8488:16:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8506:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "8481:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8481:27:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8481:27:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "8468:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8471:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8465:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8465:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "8462:48:64"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "8289:3:64",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "8294:3:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "8299:6:64",
                            "type": ""
                          }
                        ],
                        "src": "8258:258:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8568:88:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8599:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "8601:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8601:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8601:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8584:5:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8595:1:64",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "8591:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8591:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "8581:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8581:17:64"
                              },
                              "nodeType": "YulIf",
                              "src": "8578:43:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8630:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8641:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8648:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8637:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8637:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "8630:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "8550:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "8560:3:64",
                            "type": ""
                          }
                        ],
                        "src": "8521:135:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8693:95:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8710:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8717:3:64",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8722:10:64",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "8713:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8713:20:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8703:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8703:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8703:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8750:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8753:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8743:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8743:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8743:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8774:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8777:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "8767:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8767:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8767:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "8661:127:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8825:95:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8842:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8849:3:64",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8854:10:64",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "8845:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8845:20:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8835:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8835:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8835:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8882:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8885:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8875:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8875:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8875:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8906:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8909:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "8899:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8899:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8899:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "8793:127:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8957:95:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8974:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8981:3:64",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8986:10:64",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "8977:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8977:20:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8967:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8967:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8967:31:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9014:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9017:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9007:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9007:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9007:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9038:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9041:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "9031:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9031:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9031:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "8925:127:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9102:86:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9166:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9175:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9178:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9168:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9168:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9168:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "9125:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "9136:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "9151:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "9156:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9147:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9147:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9160:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "9143:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "9143:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "9132:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9132:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "9122:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9122:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "9115:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9115:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "9112:70:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "9091:5:64",
                            "type": ""
                          }
                        ],
                        "src": "9057:131:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        validator_revert_address(value)\n    }\n    function abi_decode_array_uint136_dyn_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_address_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let src := add(offset, _2)\n        if gt(add(add(offset, shl(5, _1)), _2), end) { revert(0, 0) }\n        let i := 0\n        let i_1 := i\n        for { } lt(i_1, _1) { i_1 := add(i_1, 1) }\n        {\n            let value := mload(src)\n            if iszero(eq(value, and(value, sub(shl(136, 1), 1)))) { revert(i, i) }\n            mstore(dst, value)\n            dst := add(dst, _2)\n            src := add(src, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_bool_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address_payable_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint136_$dyn_memory_ptrt_uint256t_address_payablet_address_payablet_bool_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        let _4 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_address_dyn(_3))\n        let dst_1 := dst\n        mstore(dst, _3)\n        dst := add(dst, _4)\n        let src := add(_2, _4)\n        if gt(add(add(_2, shl(5, _3)), _4), dataEnd) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _3) { i := add(i, 1) }\n        {\n            let value := mload(src)\n            validator_revert_address(value)\n            mstore(dst, value)\n            dst := add(dst, _4)\n            src := add(src, _4)\n        }\n        value0 := dst_1\n        let offset_1 := mload(add(headStart, _4))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_array_uint136_dyn_fromMemory(add(headStart, offset_1), dataEnd)\n        value2 := mload(add(headStart, 64))\n        value3 := abi_decode_address_fromMemory(add(headStart, 96))\n        value4 := abi_decode_address_fromMemory(add(headStart, 128))\n        value5 := abi_decode_bool_fromMemory(add(headStart, 160))\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let array := allocate_memory(add(and(add(_3, 0x1f), not(31)), 0x20))\n        mstore(array, _3)\n        if gt(add(add(_2, _3), 0x20), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_2, 0x20), add(array, 0x20), _3)\n        value0 := array\n        let value := mload(add(headStart, 0x20))\n        validator_revert_address(value)\n        value1 := value\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_00a4856cd405d120cf9a0137dbcece84ecbe301664e8b1f382f9ad760cebc409__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"INVALID_ARRAYS\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"ZERO_ADDRESS\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_75f734113dfa6f453446d4f37ce54f235fdeedec101ae5c27cbf0958b768d046__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"INVALID_TOKENS_LENGTH\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_87c75609d2efba568b00c7442679e76c5cb56f78d53aa8cdaaa9ad7d0cd20528__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"INVALID_WEIGHT\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"INVALID_SWAP_FEE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_e75e5d818d3b36fb5c347de52391ac0301ffdae8d8720063773226e186361380__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"MAX_TOTAL_WEIGHT\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_array_address_dyn(length) -> size\n    {\n        if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function checked_add_t_uint136(x, y) -> sum\n    {\n        let _1 := sub(shl(136, 1), 1)\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101206040523480156200001257600080fd5b506040516200417838038062004178833981016040819052620000359162000a9c565b604080518082018252601981527f5375736869204672616e636869736564204c5020546f6b656e000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f49bb029ad7c8a58c6232657178b278e20c3bd1f3b0084072e3a97b185e1aac5f918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120608081815250506000806000806000808780602001905181019062000140919062000983565b9550955095509550955095508451865114620001945760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f41525241595360901b60448201526064015b60405180910390fd5b83620001ac620f4240670de0b6b3a764000062000c2d565b11158015620001cf5750620001cb600a670de0b6b3a764000062000c2d565b8411155b620002105760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f535741505f46454560801b60448201526064016200018b565b85516002111580156200022557506008865111155b620002735760405162461bcd60e51b815260206004820152601560248201527f494e56414c49445f544f4b454e535f4c454e475448000000000000000000000060448201526064016200018b565b6200028b838383620007eb60201b620020561760201c565b60005b8651811015620005345760006001600160a01b0316878281518110620002b857620002b862000cd9565b60200260200101516001600160a01b03161415620003085760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064016200018b565b8581815181106200031d576200031d62000cd9565b60200260200101516001600160881b0316670de0b6b3a7640000111580156200037f575062000356670de0b6b3a7640000603262000c50565b8682815181106200036b576200036b62000cd9565b60200260200101516001600160881b031611155b620003be5760405162461bcd60e51b815260206004820152600e60248201526d1253959053125117d5d15251d21560921b60448201526064016200018b565b604051806040016040528060006001600160781b03168152602001878381518110620003ee57620003ee62000cd9565b60200260200101516001600160881b0316815250600a60008984815181106200041b576200041b62000cd9565b6020908102919091018101516001600160a01b0316825281810192909252604001600020825192909101516001600160881b0316600160781b026001600160781b03909216919091179055865160079088908390811062000480576200048062000cd9565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790558551869082908110620004d257620004d262000cd9565b602090810291909101015160068054600090620004fa9084906001600160881b031662000be4565b92506101000a8154816001600160881b0302191690836001600160881b0316021790555080806200052b9062000ca5565b9150506200028e565b506200054a670de0b6b3a7640000603262000c50565b6006546001600160881b03161115620005995760405162461bcd60e51b815260206004820152601060248201526f13505617d513d5105317d5d15251d21560821b60448201526064016200018b565b620005ba6000620005b4670de0b6b3a7640000606462000c50565b6200083b565b60408051600481526024810182526020810180516001600160e01b03166360a56c0160e11b17905290516000916001600160a01b038a1691620005fe919062000b6d565b600060405180830381855afa9150503d80600081146200063b576040519150601f19603f3d011682016040523d82523d6000602084013e62000640565b606091505b5060408051600481526024810182526020810180516001600160e01b0316630605066960e11b1790529051919350600092506001600160a01b038b169162000689919062000b6d565b600060405180830381855afa9150503d8060008114620006c6576040519150601f19603f3d011682016040523d82523d6000602084013e620006cb565b606091505b5060408051600481526024810182526020810180516001600160e01b0316634da3182760e01b1790529051919350600092506001600160a01b038c169162000714919062000b6d565b600060405180830381855afa9150503d806000811462000751576040519150601f19603f3d011682016040523d82523d6000602084013e62000756565b606091505b5060a089905284519092506200077791508401602090810190850162000b53565b60085581516200079190830160209081019084016200095c565b60601b6001600160601b03191660c0528051620007b890602090830181019083016200095c565b6001600160601b0319606091821b811660e0529a901b90991661010052505060016009555062000d1e9650505050505050565b600080546001600160a01b038086166001600160a01b0319928316179092556001805492851692909116919091179055801562000836576001805460ff60a01b1916600160a01b1790555b505050565b80600260008282546200084f919062000c12565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b8051620008b58162000d05565b919050565b600082601f830112620008cc57600080fd5b81516020620008e5620008df8362000bbe565b62000b8b565b80838252828201915082860187848660051b89010111156200090657600080fd5b6000805b868110156200093d5782516001600160881b03811681146200092a578283fd5b855293850193918501916001016200090a565b509198975050505050505050565b80518015158114620008b557600080fd5b6000602082840312156200096f57600080fd5b81516200097c8162000d05565b9392505050565b60008060008060008060c087890312156200099d57600080fd5b86516001600160401b0380821115620009b557600080fd5b818901915089601f830112620009ca57600080fd5b81516020620009dd620008df8362000bbe565b8083825282820191508286018e848660051b8901011115620009fe57600080fd5b600096505b8487101562000a2e57805162000a198162000d05565b83526001969096019591830191830162000a03565b50918c0151919a5090935050508082111562000a4957600080fd5b5062000a5889828a01620008ba565b9550506040870151935062000a7060608801620008a8565b925062000a8060808801620008a8565b915062000a9060a088016200094b565b90509295509295509295565b6000806040838503121562000ab057600080fd5b82516001600160401b038082111562000ac857600080fd5b818501915085601f83011262000add57600080fd5b81518181111562000af25762000af262000cef565b62000b07601f8201601f191660200162000b8b565b915080825286602082850101111562000b1f57600080fd5b62000b3281602084016020860162000c72565b508093505050602083015162000b488162000d05565b809150509250929050565b60006020828403121562000b6657600080fd5b5051919050565b6000825162000b8181846020870162000c72565b9190910192915050565b604051601f8201601f191681016001600160401b038111828210171562000bb65762000bb662000cef565b604052919050565b60006001600160401b0382111562000bda5762000bda62000cef565b5060051b60200190565b60006001600160881b0382811684821680830382111562000c095762000c0962000cc3565b01949350505050565b6000821982111562000c285762000c2862000cc3565b500190565b60008262000c4b57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161562000c6d5762000c6d62000cc3565b500290565b60005b8381101562000c8f57818101518382015260200162000c75565b8381111562000c9f576000848401525b50505050565b600060001982141562000cbc5762000cbc62000cc3565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811462000d1b57600080fd5b50565b60805160a05160c05160601c60e05160601c6101005160601c6133db62000d9d6000396000818161062f01526118f501526000818161045c015281816123b8015281816124e7015261265d015260006102a701526000818161048301528181611b6d01526122b80152600081816103900152611d8101526133db6000f3fe608060405234801561001057600080fd5b506004361061020b5760003560e01c8063627dd56a1161012a578063a69840a8116100bd578063bc3377d91161008c578063cf58879a11610071578063cf58879a1461062a578063d505accf14610651578063dd62ed3e1461066457600080fd5b8063bc3377d9146105fc578063c14ad8021461062157600080fd5b8063a69840a81461059c578063a8f1f52e146105c3578063a9059cbb146105d6578063af8c09bf146105e957600080fd5b80637ecebe00116100f95780637ecebe00146105205780638ae454411461054057806392bc32191461055657806395d89b411461056057600080fd5b8063627dd56a146104c557806367e4ac2c146104d857806370a08231146104ed5780637ba0e2e71461050d57600080fd5b806330adf81f116101a2578063499a3c5011610171578063499a3c50146104445780634da318271461045757806354cf2aeb1461047e578063570ca735146104a557600080fd5b806330adf81f1461034a578063313ce567146103715780633644e5151461038b578063469e9067146103b257600080fd5b806318160ddd116101de57806318160ddd146102ee57806323b872dd146102f757806325a932641461030a5780632a07b6c71461032a57600080fd5b8063053da1c81461021057806306fdde0314610236578063095ea7b31461027f5780630c0a0cd2146102a2575b600080fd5b61022361021e366004612f31565b61068f565b6040519081526020015b60405180910390f35b6102726040518060400160405280601981526020017f5375736869204672616e636869736564204c5020546f6b656e0000000000000081525081565b60405161022d91906131aa565b61029261028d366004612e08565b610a50565b604051901515815260200161022d565b6102c97f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161022d565b61022360025481565b610292610305366004612e6d565b610aca565b6000546102c99073ffffffffffffffffffffffffffffffffffffffff1681565b61033d610338366004612f31565b610c45565b60405161022d91906130b7565b6102237f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610379601281565b60405160ff909116815260200161022d565b6102237f000000000000000000000000000000000000000000000000000000000000000081565b61040b6103c0366004612bd3565b600a602052600090815260409020546effffffffffffffffffffffffffffff8116906f01000000000000000000000000000000900470ffffffffffffffffffffffffffffffffff1682565b604080516effffffffffffffffffffffffffffff909316835270ffffffffffffffffffffffffffffffffff90911660208301520161022d565b610223610452366004612f31565b610fcf565b6102c97f000000000000000000000000000000000000000000000000000000000000000081565b6102237f000000000000000000000000000000000000000000000000000000000000000081565b6001546102c99073ffffffffffffffffffffffffffffffffffffffff1681565b6102236104d3366004612f31565b610fd6565b6104e0611319565b60405161022d919061305d565b6102236104fb366004612bd3565b60036020526000908152604090205481565b61022361051b366004612f31565b611388565b61022361052e366004612bd3565b60056020526000908152604090205481565b6105486116b3565b60405161022d92919061311c565b61055e611883565b005b6102726040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b6102237f54726964656e743a4672616e636869736564496e64657800000000000000000081565b6102236105d1366004612f31565b61197e565b6102926105e4366004612e08565b6119b4565b6102236105f7366004612f31565b611a66565b6001546102929074010000000000000000000000000000000000000000900460ff1681565b61022360085481565b6102c97f000000000000000000000000000000000000000000000000000000000000000081565b61055e61065f366004612e9d565b611cee565b610223610672366004612e34565b600460209081526000928352604080842090915290825290205481565b6000600954600114610702576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60026009556000808080808061071a888a018a612c54565b955095509550955095509550600160149054906101000a900460ff161561074457610744846120f6565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600a60205260408082209288168252902081546107a1906effffffffffffffffffffffffffffff1661079c6002670de0b6b3a76400006131d5565b612256565b84111561080a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4d41585f494e5f524154494f000000000000000000000000000000000000000060448201526064016106f9565b815481546108609186916effffffffffffffffffffffffffffff8083169270ffffffffffffffffffffffffffffffffff6f01000000000000000000000000000000918290048116939283169291909104166122a1565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152909950339063bd50c7b19061089f9086906004016131aa565b600060405180830381600087803b1580156108b957600080fd5b505af11580156108cd573d6000803e3d6000fd5b505083546effffffffffffffffffffffffffffff16860191506108f190508961232b565b1015610959576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f5245434549564544000000000000000000000000000000000000000060448201526064016106f9565b81546effffffffffffffffffffffffffffff808216860181167fffffffffffffffffffffffffffffffffff00000000000000000000000000000092831617845582548082168c900390911691161781556109b5878a8888612444565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062878d604051610a34929190918252602082015260400190565b60405180910390a4505060016009555094979650505050505050565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ab89086815260200190565b60405180910390a35060015b92915050565b60015460009074010000000000000000000000000000000000000000900460ff1615610af957610af9836120f6565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610b965773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915281208054849290610b90908490613226565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526003602052604081208054849290610bcb908490613226565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260036020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c339086815260200190565b60405180910390a35060019392505050565b6060600954600114610cb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106f9565b600260095560008080610cc885870187612dc7565b925092509250610cd7836120f6565b6000610ce58260025461273c565b60075490915067ffffffffffffffff811115610d0357610d03613343565b604051908082528060200260200182016040528015610d4857816020015b6040805180820190915260008082526020820152815260200190600190039081610d215790505b509450610d553083612776565b60005b600754811015610fbe57600060078281548110610d7757610d77613314565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16808352600a90915260408220549092506effffffffffffffffffffffffffffff1690610dc78583612256565b90506effffffffffffffffffffffffffffff8116610e41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5a45524f5f4f555400000000000000000000000000000000000000000000000060448201526064016106f9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600a6020526040902080547fffffffffffffffffffffffffffffffffff00000000000000000000000000000081166effffffffffffffffffffffffffffff918216849003821617909155610eb690849083168a8a612444565b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001826effffffffffffffffffffffffffffff16815250898581518110610f0457610f04613314565b60200260200101819052508773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3dd1df88dc92e2788892542d81f999d720a44b4c127065d45c128f4f59fdc3738584604051610fa092919073ffffffffffffffffffffffffffffffffffffffff9290921682526effffffffffffffffffffffffffffff16602082015260400190565b60405180910390a35050508080610fb690613269565b915050610d58565b505060016009555091949350505050565b6000806000fd5b6000600954600114611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106f9565b600260095560008080808061105b87890189612bf0565b94509450945094509450600160149054906101000a900460ff161561108357611083836120f6565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600a60205260408082209287168252902081546110db906effffffffffffffffffffffffffffff1661079c6002670de0b6b3a76400006131d5565b831115611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4d41585f494e5f524154494f000000000000000000000000000000000000000060448201526064016106f9565b8154815461119a9185916effffffffffffffffffffffffffffff8083169270ffffffffffffffffffffffffffffffffff6f01000000000000000000000000000000918290048116939283169291909104166122a1565b82549098506effffffffffffffffffffffffffffff1683016111bb8861232b565b1015611223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f5245434549564544000000000000000000000000000000000000000060448201526064016106f9565b81546effffffffffffffffffffffffffffff808216850181167fffffffffffffffffffffffffffffffffff00000000000000000000000000000092831617845582548082168b9003909116911617815561127f86898787612444565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062868c6040516112fe929190918252602082015260400190565b60405180910390a45050600160095550939695505050505050565b6060600780548060200260200160405190810160405280929190818152602001828054801561137e57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611353575b5050505050905090565b60006009546001146113f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106f9565b600260095560008061140a84860186612e08565b91509150611417826120f6565b60006114258260025461273c565b905060005b60075481101561169a5760006007828154811061144957611449613314565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16808352600a90915260408220549092506effffffffffffffffffffffffffffff16908161149a57846114c6565b6114c6856effffffffffffffffffffffffffffff16836effffffffffffffffffffffffffffff16612256565b90506114df64e8d4a51000670de0b6b3a76400006131d5565b816effffffffffffffffffffffffffffff161015611559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f42414c414e434500000000000000000000000000000000000000000060448201526064016106f9565b8181016effffffffffffffffffffffffffffff166115768461232b565b10156115de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f5245434549564544000000000000000000000000000000000000000060448201526064016106f9565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600a602090815260409182902080547fffffffffffffffffffffffffffffffffff00000000000000000000000000000081166effffffffffffffffffffffffffffff918216880182161790915582519384528516908301529189169133917ff9403b28cc8805935e0ce6943ed646d5fde3d1e14f6b398e85bfa2851d1b85f7910160405180910390a3505050808061169290613269565b91505061142a565b506116a5838361280c565b506001600955949350505050565b60075460609081908067ffffffffffffffff8111156116d4576116d4613343565b6040519080825280602002602001820160405280156116fd578160200160208202803683370190505b5092508067ffffffffffffffff81111561171957611719613343565b604051908082528060200260200182016040528015611742578160200160208202803683370190505b50915060005b8181101561187d57600a60006007838154811061176757611767613314565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205484516effffffffffffffffffffffffffffff909116908590839081106117c1576117c1613314565b602002602001018181525050600a6000600783815481106117e4576117e4613314565b60009182526020808320919091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205483516f0100000000000000000000000000000090910470ffffffffffffffffffffffffffffffffff169084908390811061185357611853613314565b70ffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101611748565b50509091565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc14ad80200000000000000000000000000000000000000000000000000000000179052905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916119209190613041565b600060405180830381855afa9150503d806000811461195b576040519150601f19603f3d011682016040523d82523d6000602084013e611960565b606091505b50915050808060200190518101906119789190612fa3565b60085550565b6000808080808061199187890189612fbc565b945094509450945094506119a885858585856122a1565b98975050505050505050565b60015460009074010000000000000000000000000000000000000000900460ff16156119e3576119e3836120f6565b3360009081526003602052604081208054849290611a02908490613226565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ab89086815260200190565b6000600954600114611ad4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106f9565b60026009556000808080611aea86880188612d76565b9350935093509350611afb836120f6565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a602052604090208054600254600654611b91926effffffffffffffffffffffffffffff8116926f0100000000000000000000000000000090910470ffffffffffffffffffffffffffffffffff9081169216867f000000000000000000000000000000000000000000000000000000000000000061287d565b8154909650611bc9906effffffffffffffffffffffffffffff16611bbe6003670de0b6b3a76400006131d5565b61079c9060016131bd565b861115611c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d41585f4f55545f524154494f0000000000000000000000000000000000000060448201526064016106f9565b80546effffffffffffffffffffffffffffff808216889003167fffffffffffffffffffffffffffffffffff000000000000000000000000000000909116178155611c7c3083612776565b611c8885878686612444565b6040805173ffffffffffffffffffffffffffffffffffffffff87811682526020820189905286169133917f3dd1df88dc92e2788892542d81f999d720a44b4c127065d45c128f4f59fdc373910160405180910390a3505060016009555091949350505050565b42841015611d58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016106f9565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080547f0000000000000000000000000000000000000000000000000000000000000000917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b9187611dd383613269565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611e749291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611efd573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611f7857508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611fde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e4154555245000000000000000060448201526064016106f9565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526004602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255600180549285169290911691909117905580156120f157600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790555b505050565b600080546001546040805173ffffffffffffffffffffffffffffffffffffffff928316602482015285831660448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1472c271000000000000000000000000000000000000000000000000000000001790529051919092169161219391613041565b600060405180830381855afa9150503d80600081146121ce576040519150601f19603f3d011682016040523d82523d6000602084013e6121d3565b606091505b509150506000818060200190518101906121ed9190612f14565b9050806120f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f545f57484954454c4953544544000000000000000000000000000000000060448201526064016106f9565b60008061226383856131e9565b9050600061227a6002670de0b6b3a76400006131d5565b61228490836131bd565b9050612298670de0b6b3a7640000826131d5565b95945050505050565b6000806122ae858461273c565b905060006122e6887f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a764000003612256565b905060006122f688838a0161273c565b90506000612304828561292c565b9050670de0b6b3a764000081900361231c8882612256565b9b9a5050505050505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff83811660248301523060448084019190915283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff7888aec00000000000000000000000000000000000000000000000000000000179052915160009283927f0000000000000000000000000000000000000000000000000000000000000000909116916123e59190613041565b600060405180830381855afa9150503d8060008114612420576040519150601f19603f3d011682016040523d82523d6000602084013e612425565b606091505b509150508080602001905181019061243d9190612fa3565b9392505050565b80156125c6576040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260006084830181905260a48084018890528451808503909101815260c490930184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f97da6d300000000000000000000000000000000000000000000000000000000017905292517f00000000000000000000000000000000000000000000000000000000000000009091169161251391613041565b6000604051808303816000865af19150503d8060008114612550576040519150601f19603f3d011682016040523d82523d6000602084013e612555565b606091505b50509050806125c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f57495448445241575f4641494c4544000000000000000000000000000000000060448201526064016106f9565b50612736565b6040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260848083018790528351808403909101815260a490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff18d03cc0000000000000000000000000000000000000000000000000000000017905291516000927f0000000000000000000000000000000000000000000000000000000000000000169161268791613041565b6000604051808303816000865af19150503d80600081146126c4576040519150601f19603f3d011682016040523d82523d6000602084013e6126c9565b606091505b5050905080612734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c4544000000000000000000000000000000000060448201526064016106f9565b505b50505050565b600080612751670de0b6b3a7640000856131e9565b905060006127606002856131d5565b61276a90836131bd565b905061229884826131d5565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080548392906127ab908490613226565b909155505060028054829003905560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b806002600082825461281e91906131bd565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612800565b60008061288a878661273c565b905060006128988588613226565b905060006128a6828961273c565b905060006128c5826128c0670de0b6b3a76400008761273c565b612a4f565b905060006128d3828d612256565b905060006128e1828e613226565b90506000886128f888670de0b6b3a7640000613226565b61290291906131e9565b905061291a8261079c83670de0b6b3a7640000613226565b9e9d5050505050505050505050505050565b60008260011115801561295d5750600161294f670de0b6b3a764000060026131e9565b6129599190613226565b8311155b6129c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f494e56414c49445f42415345000000000000000000000000000000000000000060448201526064016106f9565b6000670de0b6b3a76400006129d881856131d5565b6129e291906131e9565b905060006129f08285613226565b90506000612a0a866128c0670de0b6b3a7640000866131d5565b905081612a15578093505b6000612a388784612a336402540be400670de0b6b3a76400006131d5565b612abe565b9050612a448282612256565b979650505050505050565b6000612a5c6002836132a2565b612a6e57670de0b6b3a7640000612a70565b825b9050612a7d6002836131d5565b91505b8115612aa457612a9083806131e9565b9250612a9d6002836131d5565b9150612a80565b612aaf6002836132a2565b15610ac45761243d83826131e9565b6000828180612ad587670de0b6b3a7640000612bae565b670de0b6b3a76400009550909250905083600060015b878310612ba1576000612b06670de0b6b3a7640000836131e9565b9050600080612b2689612b21670de0b6b3a764000086613226565b612bae565b91509150612b388661079c848b612256565b9550612b44868461273c565b955085612b5357505050612ba1565b8615612b5d579315935b8015612b67579315935b8415612b7e57612b77868b613226565b9950612b8b565b612b88868b6131bd565b99505b5050508080612b9990613269565b915050612aeb565b5050505050509392505050565b600080828410612bc45750508082036000612bcc565b505081810360015b9250929050565b600060208284031215612be557600080fd5b813561243d81613372565b600080600080600060a08688031215612c0857600080fd5b8535612c1381613372565b94506020860135612c2381613372565b93506040860135612c3381613372565b92506060860135612c4381613397565b949793965091946080013592915050565b60008060008060008060c08789031215612c6d57600080fd5b8635612c7881613372565b95506020870135612c8881613372565b94506040870135612c9881613372565b93506060870135612ca881613397565b92506080870135915060a087013567ffffffffffffffff80821115612ccc57600080fd5b818901915089601f830112612ce057600080fd5b813581811115612cf257612cf2613343565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715612d3857612d38613343565b816040528281528c6020848701011115612d5157600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b60008060008060808587031215612d8c57600080fd5b8435612d9781613372565b93506020850135612da781613372565b92506040850135612db781613397565b9396929550929360600135925050565b600080600060608486031215612ddc57600080fd5b8335612de781613372565b92506020840135612df781613397565b929592945050506040919091013590565b60008060408385031215612e1b57600080fd5b8235612e2681613372565b946020939093013593505050565b60008060408385031215612e4757600080fd5b8235612e5281613372565b91506020830135612e6281613372565b809150509250929050565b600080600060608486031215612e8257600080fd5b8335612e8d81613372565b92506020840135612df781613372565b600080600080600080600060e0888a031215612eb857600080fd5b8735612ec381613372565b96506020880135612ed381613372565b95506040880135945060608801359350608088013560ff81168114612ef757600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600060208284031215612f2657600080fd5b815161243d81613397565b60008060208385031215612f4457600080fd5b823567ffffffffffffffff80821115612f5c57600080fd5b818501915085601f830112612f7057600080fd5b813581811115612f7f57600080fd5b866020828501011115612f9157600080fd5b60209290920196919550909350505050565b600060208284031215612fb557600080fd5b5051919050565b600080600080600060a08688031215612fd457600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000815180845261300f81602086016020860161323d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161305381846020870161323d565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b818110156130ab57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613079565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561310f578151805173ffffffffffffffffffffffffffffffffffffffff1685528601518685015292840192908501906001016130d4565b5091979650505050505050565b604080825283519082018190526000906020906060840190828701845b8281101561315557815184529284019290840190600101613139565b5050508381038285015284518082528583019183019060005b8181101561319d57835170ffffffffffffffffffffffffffffffffff168352928401929184019160010161316e565b5090979650505050505050565b60208152600061243d6020830184612ff7565b600082198211156131d0576131d06132b6565b500190565b6000826131e4576131e46132e5565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613221576132216132b6565b500290565b600082821015613238576132386132b6565b500390565b60005b83811015613258578181015183820152602001613240565b838111156127365750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561329b5761329b6132b6565b5060010190565b6000826132b1576132b16132e5565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461339457600080fd5b50565b801515811461339457600080fdfea264697066735822122077569485f492546ca5f754638fb90b39eac66a93bf0e16d8f9d4003a7ae8851e64736f6c63430008070033",
              "opcodes": "PUSH2 0x120 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x4178 CODESIZE SUB DUP1 PUSH3 0x4178 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0xA9C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x5375736869204672616E636869736564204C5020546F6B656E00000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x49BB029AD7C8A58C6232657178B278E20C3BD1F3B0084072E3A97B185E1AAC5F SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x80 DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP8 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH3 0x140 SWAP2 SWAP1 PUSH3 0x983 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP DUP5 MLOAD DUP7 MLOAD EQ PUSH3 0x194 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x494E56414C49445F415252415953 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH3 0x1AC PUSH3 0xF4240 PUSH8 0xDE0B6B3A7640000 PUSH3 0xC2D JUMP JUMPDEST GT ISZERO DUP1 ISZERO PUSH3 0x1CF JUMPI POP PUSH3 0x1CB PUSH1 0xA PUSH8 0xDE0B6B3A7640000 PUSH3 0xC2D JUMP JUMPDEST DUP5 GT ISZERO JUMPDEST PUSH3 0x210 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x494E56414C49445F535741505F464545 PUSH1 0x80 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x18B JUMP JUMPDEST DUP6 MLOAD PUSH1 0x2 GT ISZERO DUP1 ISZERO PUSH3 0x225 JUMPI POP PUSH1 0x8 DUP7 MLOAD GT ISZERO JUMPDEST PUSH3 0x273 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F544F4B454E535F4C454E4754480000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x18B JUMP JUMPDEST PUSH3 0x28B DUP4 DUP4 DUP4 PUSH3 0x7EB PUSH1 0x20 SHL PUSH3 0x2056 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP7 MLOAD DUP2 LT ISZERO PUSH3 0x534 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x2B8 JUMPI PUSH3 0x2B8 PUSH3 0xCD9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x308 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x5A45524F5F41444452455353 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x18B JUMP JUMPDEST DUP6 DUP2 DUP2 MLOAD DUP2 LT PUSH3 0x31D JUMPI PUSH3 0x31D PUSH3 0xCD9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND PUSH8 0xDE0B6B3A7640000 GT ISZERO DUP1 ISZERO PUSH3 0x37F JUMPI POP PUSH3 0x356 PUSH8 0xDE0B6B3A7640000 PUSH1 0x32 PUSH3 0xC50 JUMP JUMPDEST DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x36B JUMPI PUSH3 0x36B PUSH3 0xCD9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND GT ISZERO JUMPDEST PUSH3 0x3BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x1253959053125117D5D15251D215 PUSH1 0x92 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x18B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x3EE JUMPI PUSH3 0x3EE PUSH3 0xCD9 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND DUP2 MSTORE POP PUSH1 0xA PUSH1 0x0 DUP10 DUP5 DUP2 MLOAD DUP2 LT PUSH3 0x41B JUMPI PUSH3 0x41B PUSH3 0xCD9 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 DUP3 MLOAD SWAP3 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND PUSH1 0x1 PUSH1 0x78 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP7 MLOAD PUSH1 0x7 SWAP1 DUP9 SWAP1 DUP4 SWAP1 DUP2 LT PUSH3 0x480 JUMPI PUSH3 0x480 PUSH3 0xCD9 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 SLOAD PUSH1 0x1 DUP2 ADD DUP5 SSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE SWAP2 SWAP1 SWAP3 KECCAK256 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP6 MLOAD DUP7 SWAP1 DUP3 SWAP1 DUP2 LT PUSH3 0x4D2 JUMPI PUSH3 0x4D2 PUSH3 0xCD9 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x6 DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH3 0x4FA SWAP1 DUP5 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND PUSH3 0xBE4 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP1 DUP1 PUSH3 0x52B SWAP1 PUSH3 0xCA5 JUMP JUMPDEST SWAP2 POP POP PUSH3 0x28E JUMP JUMPDEST POP PUSH3 0x54A PUSH8 0xDE0B6B3A7640000 PUSH1 0x32 PUSH3 0xC50 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB AND GT ISZERO PUSH3 0x599 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x13505617D513D5105317D5D15251D215 PUSH1 0x82 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x18B JUMP JUMPDEST PUSH3 0x5BA PUSH1 0x0 PUSH3 0x5B4 PUSH8 0xDE0B6B3A7640000 PUSH1 0x64 PUSH3 0xC50 JUMP JUMPDEST PUSH3 0x83B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x60A56C01 PUSH1 0xE1 SHL OR SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP2 PUSH3 0x5FE SWAP2 SWAP1 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x63B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x640 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x6050669 PUSH1 0xE1 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND SWAP2 PUSH3 0x689 SWAP2 SWAP1 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x6C6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x6CB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x4DA31827 PUSH1 0xE0 SHL OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND SWAP2 PUSH3 0x714 SWAP2 SWAP1 PUSH3 0xB6D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x751 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x756 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP PUSH1 0xA0 DUP10 SWAP1 MSTORE DUP5 MLOAD SWAP1 SWAP3 POP PUSH3 0x777 SWAP2 POP DUP5 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP6 ADD PUSH3 0xB53 JUMP JUMPDEST PUSH1 0x8 SSTORE DUP2 MLOAD PUSH3 0x791 SWAP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP1 DUP5 ADD PUSH3 0x95C JUMP JUMPDEST PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xC0 MSTORE DUP1 MLOAD PUSH3 0x7B8 SWAP1 PUSH1 0x20 SWAP1 DUP4 ADD DUP2 ADD SWAP1 DUP4 ADD PUSH3 0x95C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 DUP3 SHL DUP2 AND PUSH1 0xE0 MSTORE SWAP11 SWAP1 SHL SWAP1 SWAP10 AND PUSH2 0x100 MSTORE POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP PUSH3 0xD1E SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH3 0x836 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH3 0x84F SWAP2 SWAP1 PUSH3 0xC12 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH3 0x8B5 DUP2 PUSH3 0xD05 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x8CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH3 0x8E5 PUSH3 0x8DF DUP4 PUSH3 0xBBE JUMP JUMPDEST PUSH3 0xB8B JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP8 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH3 0x906 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH3 0x93D JUMPI DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x92A JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 MSTORE SWAP4 DUP6 ADD SWAP4 SWAP2 DUP6 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x90A JUMP JUMPDEST POP SWAP2 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x8B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x96F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH3 0x97C DUP2 PUSH3 0xD05 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x99D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x9B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x9CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH3 0x9DD PUSH3 0x8DF DUP4 PUSH3 0xBBE JUMP JUMPDEST DUP1 DUP4 DUP3 MSTORE DUP3 DUP3 ADD SWAP2 POP DUP3 DUP7 ADD DUP15 DUP5 DUP7 PUSH1 0x5 SHL DUP10 ADD ADD GT ISZERO PUSH3 0x9FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH3 0xA2E JUMPI DUP1 MLOAD PUSH3 0xA19 DUP2 PUSH3 0xD05 JUMP JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH3 0xA03 JUMP JUMPDEST POP SWAP2 DUP13 ADD MLOAD SWAP2 SWAP11 POP SWAP1 SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH3 0xA49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0xA58 DUP10 DUP3 DUP11 ADD PUSH3 0x8BA JUMP JUMPDEST SWAP6 POP POP PUSH1 0x40 DUP8 ADD MLOAD SWAP4 POP PUSH3 0xA70 PUSH1 0x60 DUP9 ADD PUSH3 0x8A8 JUMP JUMPDEST SWAP3 POP PUSH3 0xA80 PUSH1 0x80 DUP9 ADD PUSH3 0x8A8 JUMP JUMPDEST SWAP2 POP PUSH3 0xA90 PUSH1 0xA0 DUP9 ADD PUSH3 0x94B JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0xAB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0xAC8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH3 0xADD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0xAF2 JUMPI PUSH3 0xAF2 PUSH3 0xCEF JUMP JUMPDEST PUSH3 0xB07 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH3 0xB8B JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH3 0xB1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xB32 DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH3 0xC72 JUMP JUMPDEST POP DUP1 SWAP4 POP POP POP PUSH1 0x20 DUP4 ADD MLOAD PUSH3 0xB48 DUP2 PUSH3 0xD05 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xB66 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0xB81 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0xC72 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0xBB6 JUMPI PUSH3 0xBB6 PUSH3 0xCEF JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH3 0xBDA JUMPI PUSH3 0xBDA PUSH3 0xCEF JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB DUP3 DUP2 AND DUP5 DUP3 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH3 0xC09 JUMPI PUSH3 0xC09 PUSH3 0xCC3 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH3 0xC28 JUMPI PUSH3 0xC28 PUSH3 0xCC3 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH3 0xC4B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH3 0xC6D JUMPI PUSH3 0xC6D PUSH3 0xCC3 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xC8F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xC75 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0xC9F JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH3 0xCBC JUMPI PUSH3 0xCBC PUSH3 0xCC3 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0xD1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0x60 SHR PUSH2 0x33DB PUSH3 0xD9D PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x62F ADD MSTORE PUSH2 0x18F5 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x45C ADD MSTORE DUP2 DUP2 PUSH2 0x23B8 ADD MSTORE DUP2 DUP2 PUSH2 0x24E7 ADD MSTORE PUSH2 0x265D ADD MSTORE PUSH1 0x0 PUSH2 0x2A7 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x483 ADD MSTORE DUP2 DUP2 PUSH2 0x1B6D ADD MSTORE PUSH2 0x22B8 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x390 ADD MSTORE PUSH2 0x1D81 ADD MSTORE PUSH2 0x33DB PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x20B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x627DD56A GT PUSH2 0x12A JUMPI DUP1 PUSH4 0xA69840A8 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xBC3377D9 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xCF58879A GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x62A JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x651 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBC3377D9 EQ PUSH2 0x5FC JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x621 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x59C JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x5C3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5D6 JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x5E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x520 JUMPI DUP1 PUSH4 0x8AE45441 EQ PUSH2 0x540 JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x556 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x627DD56A EQ PUSH2 0x4C5 JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x4D8 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4ED JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x50D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x30ADF81F GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x171 JUMPI DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x444 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x47E JUMPI DUP1 PUSH4 0x570CA735 EQ PUSH2 0x4A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x34A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x371 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x38B JUMPI DUP1 PUSH4 0x469E9067 EQ PUSH2 0x3B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x1DE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2EE JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x25A93264 EQ PUSH2 0x30A JUMPI DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x236 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x2A2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x223 PUSH2 0x21E CALLDATASIZE PUSH1 0x4 PUSH2 0x2F31 JUMP JUMPDEST PUSH2 0x68F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x272 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204672616E636869736564204C5020546F6B656E00000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22D SWAP2 SWAP1 PUSH2 0x31AA JUMP JUMPDEST PUSH2 0x292 PUSH2 0x28D CALLDATASIZE PUSH1 0x4 PUSH2 0x2E08 JUMP JUMPDEST PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22D JUMP JUMPDEST PUSH2 0x2C9 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22D JUMP JUMPDEST PUSH2 0x223 PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x292 PUSH2 0x305 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E6D JUMP JUMPDEST PUSH2 0xACA JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x2C9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x33D PUSH2 0x338 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F31 JUMP JUMPDEST PUSH2 0xC45 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22D SWAP2 SWAP1 PUSH2 0x30B7 JUMP JUMPDEST PUSH2 0x223 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x379 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22D JUMP JUMPDEST PUSH2 0x223 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x40B PUSH2 0x3C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2BD3 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP1 PUSH16 0x1000000000000000000000000000000 SWAP1 DIV PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x22D JUMP JUMPDEST PUSH2 0x223 PUSH2 0x452 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F31 JUMP JUMPDEST PUSH2 0xFCF JUMP JUMPDEST PUSH2 0x2C9 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x223 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x2C9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x223 PUSH2 0x4D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F31 JUMP JUMPDEST PUSH2 0xFD6 JUMP JUMPDEST PUSH2 0x4E0 PUSH2 0x1319 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22D SWAP2 SWAP1 PUSH2 0x305D JUMP JUMPDEST PUSH2 0x223 PUSH2 0x4FB CALLDATASIZE PUSH1 0x4 PUSH2 0x2BD3 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x223 PUSH2 0x51B CALLDATASIZE PUSH1 0x4 PUSH2 0x2F31 JUMP JUMPDEST PUSH2 0x1388 JUMP JUMPDEST PUSH2 0x223 PUSH2 0x52E CALLDATASIZE PUSH1 0x4 PUSH2 0x2BD3 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x548 PUSH2 0x16B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22D SWAP3 SWAP2 SWAP1 PUSH2 0x311C JUMP JUMPDEST PUSH2 0x55E PUSH2 0x1883 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x272 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x223 PUSH32 0x54726964656E743A4672616E636869736564496E646578000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x223 PUSH2 0x5D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F31 JUMP JUMPDEST PUSH2 0x197E JUMP JUMPDEST PUSH2 0x292 PUSH2 0x5E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E08 JUMP JUMPDEST PUSH2 0x19B4 JUMP JUMPDEST PUSH2 0x223 PUSH2 0x5F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F31 JUMP JUMPDEST PUSH2 0x1A66 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x292 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x223 PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2C9 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x55E PUSH2 0x65F CALLDATASIZE PUSH1 0x4 PUSH2 0x2E9D JUMP JUMPDEST PUSH2 0x1CEE JUMP JUMPDEST PUSH2 0x223 PUSH2 0x672 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E34 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x702 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x71A DUP9 DUP11 ADD DUP11 PUSH2 0x2C54 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x744 JUMPI PUSH2 0x744 DUP5 PUSH2 0x20F6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP3 DUP9 AND DUP3 MSTORE SWAP1 KECCAK256 DUP2 SLOAD PUSH2 0x7A1 SWAP1 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x79C PUSH1 0x2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x31D5 JUMP JUMPDEST PUSH2 0x2256 JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x80A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D41585F494E5F524154494F0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST DUP2 SLOAD DUP2 SLOAD PUSH2 0x860 SWAP2 DUP7 SWAP2 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP3 PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH16 0x1000000000000000000000000000000 SWAP2 DUP3 SWAP1 DIV DUP2 AND SWAP4 SWAP3 DUP4 AND SWAP3 SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x22A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP10 POP CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x89F SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x31AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP DUP4 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 ADD SWAP2 POP PUSH2 0x8F1 SWAP1 POP DUP10 PUSH2 0x232B JUMP JUMPDEST LT ISZERO PUSH2 0x959 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F52454345495645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST DUP2 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP7 ADD DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 SWAP3 DUP4 AND OR DUP5 SSTORE DUP3 SLOAD DUP1 DUP3 AND DUP13 SWAP1 SUB SWAP1 SWAP2 AND SWAP2 AND OR DUP2 SSTORE PUSH2 0x9B5 DUP8 DUP11 DUP9 DUP9 PUSH2 0x2444 JUMP JUMPDEST DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP8 DUP14 PUSH1 0x40 MLOAD PUSH2 0xA34 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xAB8 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xAF9 JUMPI PUSH2 0xAF9 DUP4 PUSH2 0x20F6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xB96 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xB90 SWAP1 DUP5 SWAP1 PUSH2 0x3226 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xBCB SWAP1 DUP5 SWAP1 PUSH2 0x3226 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xC33 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0xCB3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0xCC8 DUP6 DUP8 ADD DUP8 PUSH2 0x2DC7 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0xCD7 DUP4 PUSH2 0x20F6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE5 DUP3 PUSH1 0x2 SLOAD PUSH2 0x273C JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD03 JUMPI PUSH2 0xD03 PUSH2 0x3343 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD48 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xD21 JUMPI SWAP1 POP JUMPDEST POP SWAP5 POP PUSH2 0xD55 ADDRESS DUP4 PUSH2 0x2776 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x7 SLOAD DUP2 LT ISZERO PUSH2 0xFBE JUMPI PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xD77 JUMPI PUSH2 0xD77 PUSH2 0x3314 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP4 MSTORE PUSH1 0xA SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD SWAP1 SWAP3 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0xDC7 DUP6 DUP4 PUSH2 0x2256 JUMP JUMPDEST SWAP1 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xE41 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5A45524F5F4F5554000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 DUP2 AND PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP5 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH2 0xEB6 SWAP1 DUP5 SWAP1 DUP4 AND DUP11 DUP11 PUSH2 0x2444 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xF04 JUMPI PUSH2 0xF04 PUSH2 0x3314 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x3DD1DF88DC92E2788892542D81F999D720A44B4C127065D45C128F4F59FDC373 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0xFA0 SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP DUP1 DUP1 PUSH2 0xFB6 SWAP1 PUSH2 0x3269 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xD58 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP2 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x1044 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x105B DUP8 DUP10 ADD DUP10 PUSH2 0x2BF0 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1083 JUMPI PUSH2 0x1083 DUP4 PUSH2 0x20F6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP3 DUP8 AND DUP3 MSTORE SWAP1 KECCAK256 DUP2 SLOAD PUSH2 0x10DB SWAP1 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x79C PUSH1 0x2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x31D5 JUMP JUMPDEST DUP4 GT ISZERO PUSH2 0x1144 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D41585F494E5F524154494F0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST DUP2 SLOAD DUP2 SLOAD PUSH2 0x119A SWAP2 DUP6 SWAP2 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP3 PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH16 0x1000000000000000000000000000000 SWAP2 DUP3 SWAP1 DIV DUP2 AND SWAP4 SWAP3 DUP4 AND SWAP3 SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x22A1 JUMP JUMPDEST DUP3 SLOAD SWAP1 SWAP9 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 ADD PUSH2 0x11BB DUP9 PUSH2 0x232B JUMP JUMPDEST LT ISZERO PUSH2 0x1223 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F52454345495645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST DUP2 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP6 ADD DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 SWAP3 DUP4 AND OR DUP5 SSTORE DUP3 SLOAD DUP1 DUP3 AND DUP12 SWAP1 SUB SWAP1 SWAP2 AND SWAP2 AND OR DUP2 SSTORE PUSH2 0x127F DUP7 DUP10 DUP8 DUP8 PUSH2 0x2444 JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP7 DUP13 PUSH1 0x40 MLOAD PUSH2 0x12FE SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP4 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x137E JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1353 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x13F6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 PUSH2 0x140A DUP5 DUP7 ADD DUP7 PUSH2 0x2E08 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x1417 DUP3 PUSH2 0x20F6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1425 DUP3 PUSH1 0x2 SLOAD PUSH2 0x273C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x7 SLOAD DUP2 LT ISZERO PUSH2 0x169A JUMPI PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1449 JUMPI PUSH2 0x1449 PUSH2 0x3314 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP4 MSTORE PUSH1 0xA SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD SWAP1 SWAP3 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0x149A JUMPI DUP5 PUSH2 0x14C6 JUMP JUMPDEST PUSH2 0x14C6 DUP6 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2256 JUMP JUMPDEST SWAP1 POP PUSH2 0x14DF PUSH5 0xE8D4A51000 PUSH8 0xDE0B6B3A7640000 PUSH2 0x31D5 JUMP JUMPDEST DUP2 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x1559 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E5F42414C414E4345000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST DUP2 DUP2 ADD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1576 DUP5 PUSH2 0x232B JUMP JUMPDEST LT ISZERO PUSH2 0x15DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F52454345495645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 DUP2 AND PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP9 ADD DUP3 AND OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE DUP6 AND SWAP1 DUP4 ADD MSTORE SWAP2 DUP10 AND SWAP2 CALLER SWAP2 PUSH32 0xF9403B28CC8805935E0CE6943ED646D5FDE3D1E14F6B398E85BFA2851D1B85F7 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP DUP1 DUP1 PUSH2 0x1692 SWAP1 PUSH2 0x3269 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x142A JUMP JUMPDEST POP PUSH2 0x16A5 DUP4 DUP4 PUSH2 0x280C JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x9 SSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x60 SWAP1 DUP2 SWAP1 DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x16D4 JUMPI PUSH2 0x16D4 PUSH2 0x3343 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x16FD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1719 JUMPI PUSH2 0x1719 PUSH2 0x3343 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1742 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x187D JUMPI PUSH1 0xA PUSH1 0x0 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1767 JUMPI PUSH2 0x1767 PUSH2 0x3314 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD DUP5 MLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP6 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x17C1 JUMPI PUSH2 0x17C1 PUSH2 0x3314 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0xA PUSH1 0x0 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x17E4 JUMPI PUSH2 0x17E4 PUSH2 0x3314 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD DUP4 MLOAD PUSH16 0x1000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP5 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1853 JUMPI PUSH2 0x1853 PUSH2 0x3314 JUMP JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1748 JUMP JUMPDEST POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC14AD80200000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH2 0x1920 SWAP2 SWAP1 PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x195B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1960 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1978 SWAP2 SWAP1 PUSH2 0x2FA3 JUMP JUMPDEST PUSH1 0x8 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x1991 DUP8 DUP10 ADD DUP10 PUSH2 0x2FBC JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH2 0x19A8 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x22A1 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x19E3 JUMPI PUSH2 0x19E3 DUP4 PUSH2 0x20F6 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x1A02 SWAP1 DUP5 SWAP1 PUSH2 0x3226 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xAB8 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x1AD4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x1AEA DUP7 DUP9 ADD DUP9 PUSH2 0x2D76 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP PUSH2 0x1AFB DUP4 PUSH2 0x20F6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x6 SLOAD PUSH2 0x1B91 SWAP3 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP3 PUSH16 0x1000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP3 AND DUP7 PUSH32 0x0 PUSH2 0x287D JUMP JUMPDEST DUP2 SLOAD SWAP1 SWAP7 POP PUSH2 0x1BC9 SWAP1 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1BBE PUSH1 0x3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x31D5 JUMP JUMPDEST PUSH2 0x79C SWAP1 PUSH1 0x1 PUSH2 0x31BD JUMP JUMPDEST DUP7 GT ISZERO PUSH2 0x1C32 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D41585F4F55545F524154494F00000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST DUP1 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP9 SWAP1 SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 SWAP1 SWAP2 AND OR DUP2 SSTORE PUSH2 0x1C7C ADDRESS DUP4 PUSH2 0x2776 JUMP JUMPDEST PUSH2 0x1C88 DUP6 DUP8 DUP7 DUP7 PUSH2 0x2444 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP10 SWAP1 MSTORE DUP7 AND SWAP2 CALLER SWAP2 PUSH32 0x3DD1DF88DC92E2788892542D81F999D720A44B4C127065D45C128F4F59FDC373 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP2 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1D58 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x0 SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP8 PUSH2 0x1DD3 DUP4 PUSH2 0x3269 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E74 SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EFD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1F78 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1FDE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x20F1 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE DUP6 DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1472C27100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH2 0x2193 SWAP2 PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x21CE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x21D3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x21ED SWAP2 SWAP1 PUSH2 0x2F14 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x20F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F57484954454C49535445440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2263 DUP4 DUP6 PUSH2 0x31E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x227A PUSH1 0x2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x31D5 JUMP JUMPDEST PUSH2 0x2284 SWAP1 DUP4 PUSH2 0x31BD JUMP JUMPDEST SWAP1 POP PUSH2 0x2298 PUSH8 0xDE0B6B3A7640000 DUP3 PUSH2 0x31D5 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x22AE DUP6 DUP5 PUSH2 0x273C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x22E6 DUP9 PUSH32 0x0 PUSH8 0xDE0B6B3A7640000 SUB PUSH2 0x2256 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x22F6 DUP9 DUP4 DUP11 ADD PUSH2 0x273C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2304 DUP3 DUP6 PUSH2 0x292C JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 DUP2 SWAP1 SUB PUSH2 0x231C DUP9 DUP3 PUSH2 0x2256 JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH2 0x23E5 SWAP2 SWAP1 PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2420 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2425 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x243D SWAP2 SWAP1 PUSH2 0x2FA3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x25C6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xA4 DUP1 DUP5 ADD DUP9 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC4 SWAP1 SWAP4 ADD DUP5 MSTORE PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP3 MLOAD PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH2 0x2513 SWAP2 PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2550 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2555 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x25C0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57495448445241575F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST POP PUSH2 0x2736 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP1 DUP4 ADD DUP8 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xA4 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 PUSH32 0x0 AND SWAP2 PUSH2 0x2687 SWAP2 PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x26C4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x26C9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2734 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2751 PUSH8 0xDE0B6B3A7640000 DUP6 PUSH2 0x31E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2760 PUSH1 0x2 DUP6 PUSH2 0x31D5 JUMP JUMPDEST PUSH2 0x276A SWAP1 DUP4 PUSH2 0x31BD JUMP JUMPDEST SWAP1 POP PUSH2 0x2298 DUP5 DUP3 PUSH2 0x31D5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x27AB SWAP1 DUP5 SWAP1 PUSH2 0x3226 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x281E SWAP2 SWAP1 PUSH2 0x31BD JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x2800 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x288A DUP8 DUP7 PUSH2 0x273C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2898 DUP6 DUP9 PUSH2 0x3226 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x28A6 DUP3 DUP10 PUSH2 0x273C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x28C5 DUP3 PUSH2 0x28C0 PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x273C JUMP JUMPDEST PUSH2 0x2A4F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x28D3 DUP3 DUP14 PUSH2 0x2256 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x28E1 DUP3 DUP15 PUSH2 0x3226 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP9 PUSH2 0x28F8 DUP9 PUSH8 0xDE0B6B3A7640000 PUSH2 0x3226 JUMP JUMPDEST PUSH2 0x2902 SWAP2 SWAP1 PUSH2 0x31E9 JUMP JUMPDEST SWAP1 POP PUSH2 0x291A DUP3 PUSH2 0x79C DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x3226 JUMP JUMPDEST SWAP15 SWAP14 POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 GT ISZERO DUP1 ISZERO PUSH2 0x295D JUMPI POP PUSH1 0x1 PUSH2 0x294F PUSH8 0xDE0B6B3A7640000 PUSH1 0x2 PUSH2 0x31E9 JUMP JUMPDEST PUSH2 0x2959 SWAP2 SWAP1 PUSH2 0x3226 JUMP JUMPDEST DUP4 GT ISZERO JUMPDEST PUSH2 0x29C3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F424153450000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x29D8 DUP2 DUP6 PUSH2 0x31D5 JUMP JUMPDEST PUSH2 0x29E2 SWAP2 SWAP1 PUSH2 0x31E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x29F0 DUP3 DUP6 PUSH2 0x3226 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2A0A DUP7 PUSH2 0x28C0 PUSH8 0xDE0B6B3A7640000 DUP7 PUSH2 0x31D5 JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x2A15 JUMPI DUP1 SWAP4 POP JUMPDEST PUSH1 0x0 PUSH2 0x2A38 DUP8 DUP5 PUSH2 0x2A33 PUSH5 0x2540BE400 PUSH8 0xDE0B6B3A7640000 PUSH2 0x31D5 JUMP JUMPDEST PUSH2 0x2ABE JUMP JUMPDEST SWAP1 POP PUSH2 0x2A44 DUP3 DUP3 PUSH2 0x2256 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A5C PUSH1 0x2 DUP4 PUSH2 0x32A2 JUMP JUMPDEST PUSH2 0x2A6E JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x2A70 JUMP JUMPDEST DUP3 JUMPDEST SWAP1 POP PUSH2 0x2A7D PUSH1 0x2 DUP4 PUSH2 0x31D5 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 ISZERO PUSH2 0x2AA4 JUMPI PUSH2 0x2A90 DUP4 DUP1 PUSH2 0x31E9 JUMP JUMPDEST SWAP3 POP PUSH2 0x2A9D PUSH1 0x2 DUP4 PUSH2 0x31D5 JUMP JUMPDEST SWAP2 POP PUSH2 0x2A80 JUMP JUMPDEST PUSH2 0x2AAF PUSH1 0x2 DUP4 PUSH2 0x32A2 JUMP JUMPDEST ISZERO PUSH2 0xAC4 JUMPI PUSH2 0x243D DUP4 DUP3 PUSH2 0x31E9 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 DUP1 PUSH2 0x2AD5 DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2BAE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP6 POP SWAP1 SWAP3 POP SWAP1 POP DUP4 PUSH1 0x0 PUSH1 0x1 JUMPDEST DUP8 DUP4 LT PUSH2 0x2BA1 JUMPI PUSH1 0x0 PUSH2 0x2B06 PUSH8 0xDE0B6B3A7640000 DUP4 PUSH2 0x31E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x2B26 DUP10 PUSH2 0x2B21 PUSH8 0xDE0B6B3A7640000 DUP7 PUSH2 0x3226 JUMP JUMPDEST PUSH2 0x2BAE JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2B38 DUP7 PUSH2 0x79C DUP5 DUP12 PUSH2 0x2256 JUMP JUMPDEST SWAP6 POP PUSH2 0x2B44 DUP7 DUP5 PUSH2 0x273C JUMP JUMPDEST SWAP6 POP DUP6 PUSH2 0x2B53 JUMPI POP POP POP PUSH2 0x2BA1 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x2B5D JUMPI SWAP4 ISZERO SWAP4 JUMPDEST DUP1 ISZERO PUSH2 0x2B67 JUMPI SWAP4 ISZERO SWAP4 JUMPDEST DUP5 ISZERO PUSH2 0x2B7E JUMPI PUSH2 0x2B77 DUP7 DUP12 PUSH2 0x3226 JUMP JUMPDEST SWAP10 POP PUSH2 0x2B8B JUMP JUMPDEST PUSH2 0x2B88 DUP7 DUP12 PUSH2 0x31BD JUMP JUMPDEST SWAP10 POP JUMPDEST POP POP POP DUP1 DUP1 PUSH2 0x2B99 SWAP1 PUSH2 0x3269 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2AEB JUMP JUMPDEST POP POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 LT PUSH2 0x2BC4 JUMPI POP POP DUP1 DUP3 SUB PUSH1 0x0 PUSH2 0x2BCC JUMP JUMPDEST POP POP DUP2 DUP2 SUB PUSH1 0x1 JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2BE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x243D DUP2 PUSH2 0x3372 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2C08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2C13 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x2C23 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x2C33 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x2C43 DUP2 PUSH2 0x3397 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP2 SWAP5 PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x2C6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2C78 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x2C88 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x2C98 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x2CA8 DUP2 PUSH2 0x3397 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2CCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2CE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2CF2 JUMPI PUSH2 0x2CF2 PUSH2 0x3343 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2D38 JUMPI PUSH2 0x2D38 PUSH2 0x3343 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP13 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x2D51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2D8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2D97 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x2DA7 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x2DB7 DUP2 PUSH2 0x3397 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2DDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2DE7 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2DF7 DUP2 PUSH2 0x3397 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2E26 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2E52 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2E62 DUP2 PUSH2 0x3372 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2E82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2E8D DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2DF7 DUP2 PUSH2 0x3372 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2EB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x2EC3 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x2ED3 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2EF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x243D DUP2 PUSH2 0x3397 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2F44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2F5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2F70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2F7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2F91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2FB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2FD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP4 CALLDATALOAD SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x300F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x323D JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3053 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x323D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x30AB JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3079 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x310F JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x30D4 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3155 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3139 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP5 MLOAD DUP1 DUP3 MSTORE DUP6 DUP4 ADD SWAP2 DUP4 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x319D JUMPI DUP4 MLOAD PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x316E JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x243D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2FF7 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x31D0 JUMPI PUSH2 0x31D0 PUSH2 0x32B6 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x31E4 JUMPI PUSH2 0x31E4 PUSH2 0x32E5 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3221 JUMPI PUSH2 0x3221 PUSH2 0x32B6 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3238 JUMPI PUSH2 0x3238 PUSH2 0x32B6 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3258 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3240 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2736 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x329B JUMPI PUSH2 0x329B PUSH2 0x32B6 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x32B1 JUMPI PUSH2 0x32B1 PUSH2 0x32E5 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3394 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH24 0x569485F492546CA5F754638FB90B39EAC66A93BF0E16D8F9 0xD4 STOP GASPRICE PUSH27 0xE8851E64736F6C6343000807003300000000000000000000000000 ",
              "sourceMap": "570:15883:56:-:0;;;2274:1919;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1711:4:57;;;;;;;;;;;;;;;;;1745:10;;;;;;;;;;-1:-1:-1;;;1745:10:57;;;;1554:278;;1582:95;1554:278;;;4535:25:64;;;;1695:22:57;4576:18:64;;;4569:34;;;;1735:21:57;4619:18:64;;;4612:34;1774:13:57;4662:18:64;;;4655:34;1813:4:57;4705:19:64;;;4698:61;4507:19;;1554:278:57;;;;;;;;;;;;1531:311;;;;;;1512:330;;;;;;2361:24:56;2399:25;2438:16;2468:25;2507:17;2538:12;2574:11;2563:80;;;;;;;;;;;;:::i;:::-;2347:296;;;;;;;;;;;;2739:8;:15;2721:7;:14;:33;2713:60;;;;-1:-1:-1;;;2713:60:56;;4972:2:64;2713:60:56;;;4954:21:64;5011:2;4991:18;;;4984:30;-1:-1:-1;;;5030:18:64;;;5023:44;5084:18;;2713:60:56;;;;;;;;;2802:8;1178:12;1185:5;1038:6;1178:12;:::i;:::-;2791:19;;:42;;;;-1:-1:-1;1232:9:56;1239:2;1038:6;1232:9;:::i;:::-;2814:8;:19;;2791:42;2783:71;;;;-1:-1:-1;;;2783:71:56;;6349:2:64;2783:71:56;;;6331:21:64;6388:2;6368:18;;;6361:30;-1:-1:-1;;;6407:18:64;;;6400:46;6463:18;;2783:71:56;6147:340:64;2783:71:56;2886:7;:14;1089:1;2872:28;;:60;;;;;1135:1;2904:7;:14;:28;;2872:60;2864:94;;;;-1:-1:-1;;;2864:94:56;;5656:2:64;2864:94:56;;;5638:21:64;5695:2;5675:18;;;5668:30;5734:23;5714:18;;;5707:51;5775:18;;2864:94:56;5454:345:64;2864:94:56;2969:72;3003:17;3022:9;3033:7;2969:33;;;;;:72;;:::i;:::-;3057:9;3052:368;3076:7;:14;3072:1;:18;3052:368;;;3141:1;-1:-1:-1;;;;;3119:24:56;:7;3127:1;3119:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3119:24:56;;;3111:49;;;;-1:-1:-1;;;3111:49:56;;5315:2:64;3111:49:56;;;5297:21:64;5354:2;5334:18;;;5327:30;-1:-1:-1;;;5373:18:64;;;5366:42;5425:18;;3111:49:56;5113:336:64;3111:49:56;3196:8;3205:1;3196:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3182:25:56;1038:6;3182:25;;:54;;;;-1:-1:-1;1335:9:56;1038:6;1342:2;1335:9;:::i;:::-;3211:8;3220:1;3211:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3211:25:56;;;3182:54;3174:81;;;;-1:-1:-1;;;3174:81:56;;6006:2:64;3174:81:56;;;5988:21:64;6045:2;6025:18;;;6018:30;-1:-1:-1;;;6064:18:64;;;6057:44;6118:18;;3174:81:56;5804:338:64;3174:81:56;3291:41;;;;;;;;3308:1;-1:-1:-1;;;;;3291:41:56;;;;;3319:8;3328:1;3319:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;3291:41:56;;;;3269:7;:19;3277:7;3285:1;3277:10;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3269:19:56;;;;;;;;;;;;-1:-1:-1;3269:19:56;:63;;;;;;;-1:-1:-1;;;;;3269:63:56;-1:-1:-1;;;3269:63:56;-1:-1:-1;;;;;3269:63:56;;;;;;;;;3358:10;;3346:6;;3358:7;;3366:1;;3358:10;;;;;;:::i;:::-;;;;;;;;;;;;3346:23;;;;;;;-1:-1:-1;3346:23:56;;;;;;;;;;-1:-1:-1;;;;;;3346:23:56;-1:-1:-1;;;;;3346:23:56;;;;;;;;;3398:11;;;;3407:1;;3398:11;;;;;;:::i;:::-;;;;;;;;;;;3383;:26;;:11;;:26;;3398:11;;-1:-1:-1;;;;;3383:26:56;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;3383:26:56;;;;;-1:-1:-1;;;;;3383:26:56;;;;;;3092:3;;;;;:::i;:::-;;;;3052:368;;;-1:-1:-1;1395:9:56;1038:6;1402:2;1395:9;:::i;:::-;3438:11;;-1:-1:-1;;;;;3438:11:56;:31;;3430:60;;;;-1:-1:-1;;;3430:60:56;;6694:2:64;3430:60:56;;;6676:21:64;6733:2;6713:18;;;6706:30;-1:-1:-1;;;6752:18:64;;;6745:46;6808:18;;3430:60:56;6492:340:64;3430:60:56;3546:35;3560:1;1514:10;1038:6;1521:3;1514:10;:::i;:::-;3546:5;:35::i;:::-;3646:55;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3646:55:56;-1:-1:-1;;;3646:55:56;;;3619:83;;3595:20;;-1:-1:-1;;;;;3619:26:56;;;:83;;3646:55;3619:83;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3768:57:56;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3768:57:56;-1:-1:-1;;;3768:57:56;;;3741:85;;3592:110;;-1:-1:-1;3715:22:56;;-1:-1:-1;;;;;;3741:26:56;;;:85;;3768:57;3741:85;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3889:54:56;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3889:54:56;-1:-1:-1;;;3889:54:56;;;3862:82;;3712:114;;-1:-1:-1;3839:19:56;;-1:-1:-1;;;;;;3862:26:56;;;:82;;3889:54;3862:82;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3955:18:56;;;;3992:30;;3836:108;;-1:-1:-1;3992:30:56;;-1:-1:-1;3992:30:56;;;;;;;;;;:::i;:::-;3983:6;:39;4043:32;;;;;;;;;;;;;;:::i;:::-;4032:43;;-1:-1:-1;;;;;;4032:43:56;;;4093:29;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;4085:37:56;;;;;;;;4132:32;;;;;;;;-1:-1:-1;;4185:1:56;4174:8;:12;-1:-1:-1;570:15883:56;;-1:-1:-1;;;;;;;570:15883:56;1910:238:57;2039:16;:36;;-1:-1:-1;;;;;2039:36:57;;;-1:-1:-1;;;;;;2039:36:57;;;;;;;;2085:20;;;;;;;;;;;;;;;2115:26;;;;2137:4;2128:13;;-1:-1:-1;;;;2128:13:57;-1:-1:-1;;;2128:13:57;;;2115:26;1910:238;;;:::o;5557:344::-;5641:6;5626:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;5800:20:57;;;;;;:9;:20;;;;;;;;:30;;;;;;5855:39;6983:25:64;;;5855:39:57;;6956:18:64;5855:39:57;;;;;;;5557:344;;:::o;14:138:64:-;93:13;;115:31;93:13;115:31;:::i;:::-;14:138;;;:::o;157:811::-;222:5;275:3;268:4;260:6;256:17;252:27;242:55;;293:1;290;283:12;242:55;322:6;316:13;348:4;372:60;388:43;428:2;388:43;:::i;:::-;372:60;:::i;:::-;454:3;478:2;473:3;466:15;506:2;501:3;497:12;490:19;;541:2;533:6;529:15;593:3;588:2;582;579:1;575:10;567:6;563:23;559:32;556:41;553:61;;;610:1;607;600:12;553:61;632:1;653;663:276;679:2;674:3;671:11;663:276;;;741:10;;-1:-1:-1;;;;;784:31:64;;774:42;;764:70;;830:1;827;820:12;764:70;847:18;;885:12;;;;917;;;;701:1;692:11;663:276;;;-1:-1:-1;957:5:64;;157:811;-1:-1:-1;;;;;;;;157:811:64:o;973:164::-;1049:13;;1098;;1091:21;1081:32;;1071:60;;1127:1;1124;1117:12;1142:259;1220:6;1273:2;1261:9;1252:7;1248:23;1244:32;1241:52;;;1289:1;1286;1279:12;1241:52;1321:9;1315:16;1340:31;1365:5;1340:31;:::i;:::-;1390:5;1142:259;-1:-1:-1;;;1142:259:64:o;1406:1549::-;1584:6;1592;1600;1608;1616;1624;1677:3;1665:9;1656:7;1652:23;1648:33;1645:53;;;1694:1;1691;1684:12;1645:53;1721:16;;-1:-1:-1;;;;;1786:14:64;;;1783:34;;;1813:1;1810;1803:12;1783:34;1851:6;1840:9;1836:22;1826:32;;1896:7;1889:4;1885:2;1881:13;1877:27;1867:55;;1918:1;1915;1908:12;1867:55;1947:2;1941:9;1969:4;1993:60;2009:43;2049:2;2009:43;:::i;1993:60::-;2075:3;2099:2;2094:3;2087:15;2127:2;2122:3;2118:12;2111:19;;2158:2;2154;2150:11;2206:7;2201:2;2195;2192:1;2188:10;2184:2;2180:19;2176:28;2173:41;2170:61;;;2227:1;2224;2217:12;2170:61;2249:1;2240:10;;2259:231;2273:2;2270:1;2267:9;2259:231;;;2337:3;2331:10;2354:31;2379:5;2354:31;:::i;:::-;2398:18;;2291:1;2284:9;;;;;2436:12;;;;2468;;2259:231;;;-1:-1:-1;2545:18:64;;;2539:25;2509:5;;-1:-1:-1;2539:25:64;;-1:-1:-1;;;2576:16:64;;;2573:36;;;2605:1;2602;2595:12;2573:36;;2628:74;2694:7;2683:8;2672:9;2668:24;2628:74;:::i;:::-;2618:84;;;2742:2;2731:9;2727:18;2721:25;2711:35;;2765:49;2810:2;2799:9;2795:18;2765:49;:::i;:::-;2755:59;;2833:50;2878:3;2867:9;2863:19;2833:50;:::i;:::-;2823:60;;2902:47;2944:3;2933:9;2929:19;2902:47;:::i;:::-;2892:57;;1406:1549;;;;;;;;:::o;2960:843::-;3048:6;3056;3109:2;3097:9;3088:7;3084:23;3080:32;3077:52;;;3125:1;3122;3115:12;3077:52;3152:16;;-1:-1:-1;;;;;3217:14:64;;;3214:34;;;3244:1;3241;3234:12;3214:34;3282:6;3271:9;3267:22;3257:32;;3327:7;3320:4;3316:2;3312:13;3308:27;3298:55;;3349:1;3346;3339:12;3298:55;3378:2;3372:9;3400:2;3396;3393:10;3390:36;;;3406:18;;:::i;:::-;3448:55;3491:2;3472:13;;-1:-1:-1;;3468:27:64;3497:4;3464:38;3448:55;:::i;:::-;3435:68;;3526:2;3519:5;3512:17;3568:7;3561:4;3556:2;3552;3548:11;3544:22;3541:35;3538:55;;;3589:1;3586;3579:12;3538:55;3602:58;3657:2;3650:4;3643:5;3639:16;3632:4;3628:2;3624:13;3602:58;:::i;:::-;;3679:5;3669:15;;;;3727:4;3716:9;3712:20;3706:27;3742:31;3767:5;3742:31;:::i;:::-;3792:5;3782:15;;;2960:843;;;;;:::o;3808:184::-;3878:6;3931:2;3919:9;3910:7;3906:23;3902:32;3899:52;;;3947:1;3944;3937:12;3899:52;-1:-1:-1;3970:16:64;;3808:184;-1:-1:-1;3808:184:64:o;3997:274::-;4126:3;4164:6;4158:13;4180:53;4226:6;4221:3;4214:4;4206:6;4202:17;4180:53;:::i;:::-;4249:16;;;;;3997:274;-1:-1:-1;;3997:274:64:o;7019:275::-;7090:2;7084:9;7155:2;7136:13;;-1:-1:-1;;7132:27:64;7120:40;;-1:-1:-1;;;;;7175:34:64;;7211:22;;;7172:62;7169:88;;;7237:18;;:::i;:::-;7273:2;7266:22;7019:275;;-1:-1:-1;7019:275:64:o;7299:183::-;7359:4;-1:-1:-1;;;;;7381:30:64;;7378:56;;;7414:18;;:::i;:::-;-1:-1:-1;7459:1:64;7455:14;7471:4;7451:25;;7299:183::o;7487:238::-;7527:3;-1:-1:-1;;;;;7594:10:64;;;7624;;;7654:12;;;7646:21;;7643:47;;;7670:18;;:::i;:::-;7706:13;;7487:238;-1:-1:-1;;;;7487:238:64:o;7730:128::-;7770:3;7801:1;7797:6;7794:1;7791:13;7788:39;;;7807:18;;:::i;:::-;-1:-1:-1;7843:9:64;;7730:128::o;7863:217::-;7903:1;7929;7919:132;;7973:10;7968:3;7964:20;7961:1;7954:31;8008:4;8005:1;7998:15;8036:4;8033:1;8026:15;7919:132;-1:-1:-1;8065:9:64;;7863:217::o;8085:168::-;8125:7;8191:1;8187;8183:6;8179:14;8176:1;8173:21;8168:1;8161:9;8154:17;8150:45;8147:71;;;8198:18;;:::i;:::-;-1:-1:-1;8238:9:64;;8085:168::o;8258:258::-;8330:1;8340:113;8354:6;8351:1;8348:13;8340:113;;;8430:11;;;8424:18;8411:11;;;8404:39;8376:2;8369:10;8340:113;;;8471:6;8468:1;8465:13;8462:48;;;8506:1;8497:6;8492:3;8488:16;8481:27;8462:48;;8258:258;;;:::o;8521:135::-;8560:3;-1:-1:-1;;8581:17:64;;8578:43;;;8601:18;;:::i;:::-;-1:-1:-1;8648:1:64;8637:13;;8521:135::o;8661:127::-;8722:10;8717:3;8713:20;8710:1;8703:31;8753:4;8750:1;8743:15;8777:4;8774:1;8767:15;8793:127;8854:10;8849:3;8845:20;8842:1;8835:31;8885:4;8882:1;8875:15;8909:4;8906:1;8899:15;8925:127;8986:10;8981:3;8977:20;8974:1;8967:31;9017:4;9014:1;9007:15;9041:4;9038:1;9031:15;9057:131;-1:-1:-1;;;;;9132:31:64;;9122:42;;9112:70;;9178:1;9175;9168:12;9112:70;9057:131;:::o;:::-;570:15883:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@DOMAIN_SEPARATOR_23253": {
                  "entryPoint": null,
                  "id": 23253,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@PERMIT_TYPEHASH_23250": {
                  "entryPoint": null,
                  "id": 23250,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_balance_22513": {
                  "entryPoint": 9003,
                  "id": 22513,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_burn_23592": {
                  "entryPoint": 10102,
                  "id": 23592,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_checkWhiteList_23628": {
                  "entryPoint": 8438,
                  "id": 23628,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_computeSingleOutGivenPoolIn_22724": {
                  "entryPoint": 10365,
                  "id": 22724,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "@_compute_22644": {
                  "entryPoint": 10540,
                  "id": 22644,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_div_22994": {
                  "entryPoint": 10044,
                  "id": 22994,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_getAmountOut_22576": {
                  "entryPoint": 8865,
                  "id": 22576,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@_mint_23564": {
                  "entryPoint": 10252,
                  "id": 23564,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_mul_22963": {
                  "entryPoint": 8790,
                  "id": 22963,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_powApprox_22893": {
                  "entryPoint": 10942,
                  "id": 22893,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@_pow_22775": {
                  "entryPoint": 10831,
                  "id": 22775,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_subFlag_22932": {
                  "entryPoint": 11182,
                  "id": 22932,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "@_transfer_23059": {
                  "entryPoint": 9284,
                  "id": 23059,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@allowance_23244": {
                  "entryPoint": null,
                  "id": 23244,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@approve_23345": {
                  "entryPoint": 2640,
                  "id": 23345,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@balanceOf_23237": {
                  "entryPoint": null,
                  "id": 23237,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@barFeeTo_21449": {
                  "entryPoint": null,
                  "id": 21449,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@barFee_21539": {
                  "entryPoint": null,
                  "id": 21539,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@bento_21451": {
                  "entryPoint": null,
                  "id": 21451,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@burnSingle_22181": {
                  "entryPoint": 6758,
                  "id": 22181,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@burn_22079": {
                  "entryPoint": 3141,
                  "id": 22079,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@decimals_23224": {
                  "entryPoint": null,
                  "id": 23224,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@flashSwap_22451": {
                  "entryPoint": 1679,
                  "id": 22451,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAmountIn_23128": {
                  "entryPoint": 4047,
                  "id": 23128,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAmountOut_23116": {
                  "entryPoint": 6526,
                  "id": 23116,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getAssets_23071": {
                  "entryPoint": 4889,
                  "id": 23071,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@getReservesAndWeights_23194": {
                  "entryPoint": 5811,
                  "id": 23194,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@initialize_23316": {
                  "entryPoint": 8278,
                  "id": 23316,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@level2_23230": {
                  "entryPoint": null,
                  "id": 23230,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@masterDeployer_21453": {
                  "entryPoint": null,
                  "id": 21453,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@mint_21943": {
                  "entryPoint": 5000,
                  "id": 21943,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@name_23218": {
                  "entryPoint": null,
                  "id": 23218,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@nonces_23258": {
                  "entryPoint": null,
                  "id": 23258,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@operator_23228": {
                  "entryPoint": null,
                  "id": 23228,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@permit_23536": {
                  "entryPoint": 7406,
                  "id": 23536,
                  "parameterSlots": 7,
                  "returnSlots": 0
                },
                "@poolIdentifier_21543": {
                  "entryPoint": null,
                  "id": 21543,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@records_21569": {
                  "entryPoint": null,
                  "id": 21569,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@swapFee_21447": {
                  "entryPoint": null,
                  "id": 21447,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@swap_22310": {
                  "entryPoint": 4054,
                  "id": 22310,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@symbol_23221": {
                  "entryPoint": null,
                  "id": 23221,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@totalSupply_23232": {
                  "entryPoint": null,
                  "id": 23232,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@transferFrom_23448": {
                  "entryPoint": 2762,
                  "id": 23448,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@transfer_23385": {
                  "entryPoint": 6580,
                  "id": 23385,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@updateBarFee_22478": {
                  "entryPoint": 6275,
                  "id": 22478,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@whiteListManager_23226": {
                  "entryPoint": null,
                  "id": 23226,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 11219,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_address_payablet_boolt_uint256": {
                  "entryPoint": 11248,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_address_payablet_boolt_uint256t_bytes_memory_ptr": {
                  "entryPoint": 11348,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_decode_tuple_t_address_payablet_address_payablet_boolt_uint256": {
                  "entryPoint": 11638,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_address_payablet_boolt_uint256": {
                  "entryPoint": 11719,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_address_payablet_uint256": {
                  "entryPoint": 11784,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 11828,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_uint256": {
                  "entryPoint": 11885,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32": {
                  "entryPoint": 11933,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 7
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bool_fromMemory": {
                  "entryPoint": 12052,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes_calldata_ptr": {
                  "entryPoint": 12081,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_uint256_fromMemory": {
                  "entryPoint": 12195,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256": {
                  "entryPoint": 12220,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_encode_bytes": {
                  "entryPoint": 12279,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 12353,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint8_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint120__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 12381,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 12471,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint136_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint136_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 12572,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 12714,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4277c8319fd149a95e69be42a3e123adc1b4da419a70e9b9baf1b89820d48e58__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_4c5ad29f1d3e8bb498f3f1a2e1b9ae2d9e0aa620eec7213536f28c96e8c078d5__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5bc54dac1e6c6942ca387ee7fa5b266c08fd485e140ffd0f93cb3919d20c5523__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_5cc85f4aca207e790130bbbe0f65d41050b113ebde71647d75b6406db2462409__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_6bebbe4a6d03d73ca34b8e24407254be08e942ad0a1388f8e02d78d6cedb6f8f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_763a38bd0e76a191b2607dcd1b2bd7d2e31ac1f3de7b2a0f756698e57f39c206__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ae8acaa6a695c6235cafd131eee9e0f44d7addbb9b6373a0f80fba9ff8078b7f__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_f386d26920ad5c64e0ecdb024adf48b36625926cc342c9dfbbd1b4a7544d8539__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint120_t_uint136__to_t_uint120_t_uint136__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 12733,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_div_t_uint256": {
                  "entryPoint": 12757,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 12777,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 12838,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "copy_memory_to_memory": {
                  "entryPoint": 12861,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "increment_t_uint256": {
                  "entryPoint": 12905,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "mod_t_uint256": {
                  "entryPoint": 12962,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 12982,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": 13029,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 13076,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 13123,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 13170,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "validator_revert_bool": {
                  "entryPoint": 13207,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:22764:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:177:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "130:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "139:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "142:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "132:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "132:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "132:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "105:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "114:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "101:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "101:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "126:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "94:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "155:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "181:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "168:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "168:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "159:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "225:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "200:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "200:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "200:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "240:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "250:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "240:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "61:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "73:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:247:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "425:599:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "472:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "481:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "484:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "474:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "474:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "474:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "446:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "455:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "442:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "442:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "467:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "438:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "438:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "435:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "497:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "523:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "510:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "510:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "501:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "567:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "542:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "542:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "542:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "582:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "592:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "582:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "606:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "638:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "649:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "634:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "634:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "621:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "621:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "610:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "687:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "662:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "662:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "662:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "704:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "714:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "704:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "730:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "762:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "773:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "758:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "758:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "745:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "745:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "734:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "811:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "786:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "786:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "786:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "828:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "838:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "828:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "854:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "886:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "897:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "882:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "882:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "869:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "869:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "858:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "932:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "910:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "910:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "910:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "949:17:64",
                              "value": {
                                "name": "value_3",
                                "nodeType": "YulIdentifier",
                                "src": "959:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "949:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "975:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1002:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1013:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "998:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "998:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "985:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "985:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "975:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_address_payablet_boolt_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "359:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "370:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "382:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "390:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "398:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "406:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "414:6:64",
                            "type": ""
                          }
                        ],
                        "src": "266:758:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1214:1442:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1261:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1270:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1273:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1263:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1263:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1263:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1235:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1244:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1231:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1231:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1256:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1227:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1227:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1224:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1286:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1312:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1299:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1299:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1290:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1356:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1331:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1331:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1331:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1371:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1381:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1371:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1395:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1427:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1438:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1423:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1423:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1410:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1410:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1399:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1476:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1451:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1451:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1451:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1493:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "1503:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1493:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1519:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1551:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1562:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1547:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1547:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1534:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1534:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1523:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1600:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1575:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1575:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1575:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1617:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "1627:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1617:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1643:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1675:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1686:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1671:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1671:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1658:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1658:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "1647:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1721:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "1699:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1699:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1699:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1738:17:64",
                              "value": {
                                "name": "value_3",
                                "nodeType": "YulIdentifier",
                                "src": "1748:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1738:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1764:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1791:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1802:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1787:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1787:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1774:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1774:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "1764:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1816:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1847:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1858:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1843:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1843:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1830:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1830:33:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1820:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1872:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1882:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1876:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1927:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1936:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1939:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1929:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1929:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1929:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1915:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1923:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1912:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1912:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1909:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1952:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1966:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1977:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1962:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1962:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "1956:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2032:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2041:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2044:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2034:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2034:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2034:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2011:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2015:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2007:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2007:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2022:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2003:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2003:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1996:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1996:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1993:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2057:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2080:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2067:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2067:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2061:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2106:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2108:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2108:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2108:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2098:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2102:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2095:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2095:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2092:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2137:76:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2147:66:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "2141:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2222:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2242:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2236:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2236:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2226:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2254:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2276:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2300:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2304:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2296:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2296:13:64"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "2311:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "2292:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2292:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2316:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2288:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2288:31:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "2321:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2284:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2284:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2272:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2272:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2258:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2384:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2386:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2386:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2386:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2343:10:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2355:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2340:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2340:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2363:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2375:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2360:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2360:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2337:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2337:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2334:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2422:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2426:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2415:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2415:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2415:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2453:6:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2461:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2446:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2446:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2446:18:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2510:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2519:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2522:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2512:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2512:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2512:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2487:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2491:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2483:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2483:11:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2496:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2479:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2479:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2501:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2476:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2476:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2473:53:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2552:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2560:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2548:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2548:15:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2569:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2573:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2565:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2565:11:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2578:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "2535:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2535:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2535:46:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "2605:6:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "2613:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2601:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2601:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2618:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2597:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2597:24:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2623:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2590:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2590:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2590:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2634:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "2644:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "2634:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_address_payablet_boolt_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1140:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1151:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1163:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1171:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1179:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1187:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1195:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "1203:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1029:1627:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2795:474:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2842:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2851:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2854:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2844:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2844:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2844:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2816:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2825:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2812:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2812:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2837:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2808:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2808:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2805:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2867:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2893:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2880:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2880:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2871:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2937:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2912:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2912:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2912:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2952:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2962:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2952:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2976:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3008:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3019:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3004:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3004:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2991:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2991:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2980:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3057:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3032:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3032:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3032:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3074:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3084:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3074:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3100:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3132:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3143:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3128:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3128:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3115:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3115:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "3104:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3178:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "3156:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3156:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3156:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3195:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "3205:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3195:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3221:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3248:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3259:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3244:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3244:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3231:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3231:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3221:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_address_payablet_boolt_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2737:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2748:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2760:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2768:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2776:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2784:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2661:608:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3383:349:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3429:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3438:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3441:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3431:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3431:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3431:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3404:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3413:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3400:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3400:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3425:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3396:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3396:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3393:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3454:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3480:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3467:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3467:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3458:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3524:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3499:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3499:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3499:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3539:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3549:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3539:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3563:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3595:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3606:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3591:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3591:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3578:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3578:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3567:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3641:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "3619:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3619:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3619:30:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3658:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3668:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3658:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3684:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3711:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3722:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3707:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3707:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3694:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3694:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3684:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_boolt_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3333:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3344:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3356:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3364:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3372:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3274:458:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3832:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3878:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3887:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3890:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3880:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3880:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3880:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3853:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3862:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3849:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3849:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3874:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3845:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3845:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3842:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3903:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3929:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3916:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3916:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3907:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3973:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3948:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3948:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3948:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3988:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3998:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3988:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4012:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4039:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4050:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4035:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4035:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4022:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4022:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4012:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3790:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3801:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3813:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3821:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3737:323:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4152:301:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4198:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4207:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4210:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4200:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4200:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4200:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4173:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4182:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4169:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4169:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4194:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4165:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4165:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4162:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4223:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4249:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4236:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4236:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4227:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4293:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4268:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4268:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4268:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4308:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4318:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4308:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4332:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4364:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4375:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4360:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4360:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4347:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4347:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4336:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4413:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4388:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4388:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4388:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4430:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4440:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4430:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4110:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4121:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4133:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4141:6:64",
                            "type": ""
                          }
                        ],
                        "src": "4065:388:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4562:352:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4608:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4617:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4620:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4610:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4610:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4610:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4583:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4592:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4579:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4579:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4604:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4575:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4575:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "4572:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4633:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4659:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4646:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4646:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4637:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4703:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4678:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4678:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4678:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4718:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4728:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4718:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4742:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4774:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4785:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4770:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4770:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4757:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4757:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4746:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4823:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4798:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4798:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4798:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4840:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4850:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4840:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4866:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4893:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4904:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4889:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4889:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4876:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4876:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4866:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4512:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4523:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4535:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4543:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4551:6:64",
                            "type": ""
                          }
                        ],
                        "src": "4458:456:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5089:659:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5136:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5145:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5148:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5138:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5138:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5138:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5110:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5119:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5106:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5106:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5131:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5102:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5102:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5099:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5161:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5187:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5174:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5174:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5165:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5231:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5206:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5206:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5206:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5246:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5256:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5246:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5270:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5302:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5313:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5298:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5298:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5285:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5285:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5274:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5351:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5326:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5326:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5326:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5368:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "5378:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5368:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5394:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5421:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5432:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5417:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5417:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5404:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5404:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5394:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5445:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5472:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5483:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5468:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5468:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5455:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5455:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "5445:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5496:48:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5528:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5539:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5524:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5524:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5511:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5511:33:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5500:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5596:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5605:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5608:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5598:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5598:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5598:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5566:7:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "5579:7:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5588:4:64",
                                            "type": "",
                                            "value": "0xff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "5575:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5575:18:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "5563:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5563:31:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5556:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5556:39:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5553:59:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5621:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "5631:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "5621:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5647:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5674:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5685:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5670:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5670:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5657:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5657:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "5647:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5699:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5726:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5737:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5722:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5722:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5709:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5709:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "5699:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5007:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5018:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5030:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5038:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5046:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5054:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "5062:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "5070:6:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "5078:6:64",
                            "type": ""
                          }
                        ],
                        "src": "4919:829:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5840:228:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5886:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5895:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5898:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5888:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5888:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5888:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5861:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5870:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5857:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5857:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5882:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5853:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5853:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "5850:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5911:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5937:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5924:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5924:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5915:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5981:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5956:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5956:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5956:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5996:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6006:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5996:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6020:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6047:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6058:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6043:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6043:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6030:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6030:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6020:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5798:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5809:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5821:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5829:6:64",
                            "type": ""
                          }
                        ],
                        "src": "5753:315:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6151:167:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6197:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6206:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6209:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6199:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6199:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6199:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6172:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6181:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6168:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6168:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6193:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6164:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6164:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6161:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6222:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6241:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6235:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6235:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6226:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6282:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "6260:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6260:28:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6260:28:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6297:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6307:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6297:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6117:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6128:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6140:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6073:245:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6412:502:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6458:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6467:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6470:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6460:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6460:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6460:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6433:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6442:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6429:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6429:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6454:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6425:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6425:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6422:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6483:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6510:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6497:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6497:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6487:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6529:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6539:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6533:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6584:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6593:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6596:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6586:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6586:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6586:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6572:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6580:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6569:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6569:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6566:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6609:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6623:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6634:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6619:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6619:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "6613:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6689:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6698:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6701:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6691:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6691:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6691:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "6668:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6672:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6664:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6664:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6679:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "6660:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6660:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6653:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6653:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6650:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6714:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6741:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6728:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6728:16:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6718:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6771:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6780:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6783:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6773:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6773:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6773:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6759:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6767:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6756:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6756:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6753:34:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6837:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6846:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6849:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6839:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6839:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6839:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "6810:2:64"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "6814:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6806:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6806:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6823:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6802:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6802:24:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6828:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6799:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6799:37:64"
                              },
                              "nodeType": "YulIf",
                              "src": "6796:57:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6862:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6876:2:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6880:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6872:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6872:11:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6862:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6892:16:64",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "6902:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6892:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6370:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6381:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6393:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6401:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6323:591:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7000:103:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7046:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7055:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7058:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7048:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7048:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7048:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7021:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7030:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7017:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7017:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7042:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7013:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7013:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7010:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7071:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7087:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7081:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7081:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7071:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6966:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6977:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6989:6:64",
                            "type": ""
                          }
                        ],
                        "src": "6919:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7246:316:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7293:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7302:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7305:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7295:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7295:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7295:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7267:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7276:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7263:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7263:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7288:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7259:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7259:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "7256:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7318:33:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7341:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7328:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7328:23:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7318:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7360:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7387:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7398:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7383:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7383:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7370:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7370:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7360:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7411:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7438:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7449:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7434:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7434:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7421:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7421:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "7411:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7462:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7489:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7500:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7485:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7485:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7472:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7472:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "7462:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7513:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7540:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7551:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7536:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7536:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7523:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7523:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "7513:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7180:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7191:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7203:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7211:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7219:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7227:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7235:6:64",
                            "type": ""
                          }
                        ],
                        "src": "7108:454:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7616:267:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7626:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7646:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7640:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7640:12:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "7630:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "7668:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7673:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7661:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7661:19:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7661:19:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7715:5:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7722:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7711:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7711:16:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7733:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7738:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7729:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7729:14:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7745:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "7689:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7689:63:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7689:63:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7761:116:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7776:3:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "7789:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7797:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "7785:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7785:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7802:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "7781:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7781:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7772:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7772:98:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7872:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7768:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7768:109:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7761:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "7593:5:64",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7600:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7608:3:64",
                            "type": ""
                          }
                        ],
                        "src": "7567:316:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8025:137:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8035:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8055:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8049:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8049:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "8039:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8097:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8105:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8093:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8093:17:64"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "8112:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8117:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "8071:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8071:53:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8071:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8133:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "8144:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8149:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8140:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8140:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "8133:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "8001:3:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8006:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "8017:3:64",
                            "type": ""
                          }
                        ],
                        "src": "7888:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8415:196:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "8432:3:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8437:66:64",
                                    "type": "",
                                    "value": "0x1901000000000000000000000000000000000000000000000000000000000000"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8425:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8425:79:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8425:79:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "8524:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8529:1:64",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8520:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8520:11:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8533:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8513:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8513:27:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8513:27:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "8560:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8565:2:64",
                                        "type": "",
                                        "value": "34"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8556:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8556:12:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8570:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8549:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8549:28:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8549:28:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8586:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "8597:3:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8602:2:64",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8593:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8593:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "8586:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "8383:3:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8388:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8396:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "8407:3:64",
                            "type": ""
                          }
                        ],
                        "src": "8167:444:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8717:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8727:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8739:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8750:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8735:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8735:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8727:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8769:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8784:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8792:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8780:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8780:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8762:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8762:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8762:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8686:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8697:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8708:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8616:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8976:198:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8986:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8998:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9009:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8994:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8994:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8986:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9021:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9031:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9025:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9089:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "9104:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9112:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9100:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9100:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9082:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9082:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9082:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9136:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9147:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9132:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9132:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9156:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9164:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9152:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9152:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9125:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9125:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9125:43:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8937:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8948:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8956:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8967:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8847:327:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9398:349:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9408:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9420:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9431:3:64",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9416:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9416:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9408:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9444:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9454:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9448:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9512:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "9527:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9535:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9523:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9523:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9505:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9505:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9505:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9559:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9570:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9555:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9555:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9579:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9587:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9575:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9575:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9548:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9548:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9548:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9611:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9622:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9607:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9607:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "9631:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9639:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9627:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9627:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9600:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9600:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9600:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9663:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9674:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9659:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9659:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "9683:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9691:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9679:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9679:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9652:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9652:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9652:45:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9717:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9728:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9713:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9713:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "9734:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9706:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9706:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9706:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint8_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9335:9:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "9346:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9354:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9362:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9370:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9378:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9389:4:64",
                            "type": ""
                          }
                        ],
                        "src": "9179:568:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9937:294:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9947:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9959:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9970:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9955:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9955:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9947:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9983:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9993:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9987:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10051:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "10066:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10074:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10062:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10062:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10044:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10044:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10044:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10098:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10109:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10094:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10094:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10118:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10126:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10114:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10114:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10087:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10087:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10087:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10150:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10161:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10146:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10146:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "10170:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10178:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10166:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10166:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10139:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10139:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10139:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10202:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10213:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10198:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10198:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "10218:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10191:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10191:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10191:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9882:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9893:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9901:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9909:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9917:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9928:4:64",
                            "type": ""
                          }
                        ],
                        "src": "9752:479:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10365:207:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10375:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10387:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10398:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10383:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10383:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10375:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10417:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "10432:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10440:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10428:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10428:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10410:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10410:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10410:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10504:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10515:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10500:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10500:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10524:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10532:32:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10520:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10520:45:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10493:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10493:73:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10493:73:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint120__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10326:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10337:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10345:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10356:4:64",
                            "type": ""
                          }
                        ],
                        "src": "10236:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10706:168:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10716:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10728:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10739:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10724:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10724:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10716:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10758:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "10773:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10781:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10769:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10769:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10751:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10751:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10751:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10845:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10856:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10841:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10841:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10861:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10834:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10834:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10834:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10667:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10678:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10686:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10697:4:64",
                            "type": ""
                          }
                        ],
                        "src": "10577:297:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11030:530:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11040:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11050:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11044:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11061:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11079:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11090:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11075:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11075:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11065:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11109:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11120:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11102:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11102:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11102:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11132:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "11143:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "11136:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11158:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11178:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11172:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11172:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "11162:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11201:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11209:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11194:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11194:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11194:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11225:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11236:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11247:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11232:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11232:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "11225:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11259:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11277:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11285:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11273:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11273:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "11263:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11297:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11306:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "11301:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11365:169:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "11386:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "11401:6:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "11395:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "11395:13:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "11410:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "11391:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "11391:62:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "11379:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11379:75:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11379:75:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11467:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "11478:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11483:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11474:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11474:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "11467:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11499:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "11513:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11521:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11509:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11509:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11499:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "11327:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11330:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11324:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11324:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "11338:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11340:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "11349:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11352:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11345:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11345:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "11340:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "11320:3:64",
                                "statements": []
                              },
                              "src": "11316:218:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11543:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "11551:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11543:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10999:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11010:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11021:4:64",
                            "type": ""
                          }
                        ],
                        "src": "10879:681:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11774:636:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11784:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11794:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11788:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11805:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11823:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11834:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11819:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11819:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11809:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11853:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11864:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11846:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11846:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11846:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11876:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "11887:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "11880:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11902:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "11922:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11916:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11916:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "11906:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11945:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11953:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11938:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11938:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11938:22:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11969:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11979:2:64",
                                "type": "",
                                "value": "64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "11973:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11990:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12001:9:64"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "12012:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11997:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11997:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "11990:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12024:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12042:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12050:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12038:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12038:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "12028:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12062:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12071:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "12066:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12130:254:64",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "12144:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "12160:6:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "12154:5:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12154:13:64"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "12148:2:64",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "12187:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12202:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "12196:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "12196:9:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "12207:42:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "12192:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12192:58:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "12180:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12180:71:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12180:71:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "12275:3:64"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "12280:2:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "12271:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12271:12:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12295:2:64"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12299:2:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "12291:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "12291:11:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "12285:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "12285:18:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "12264:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12264:40:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12264:40:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12317:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "12328:3:64"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "12333:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "12324:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12324:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12317:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12349:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "12363:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "12371:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "12359:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12359:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "12349:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "12092:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12095:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12089:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12089:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "12103:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12105:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "12114:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12117:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "12110:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12110:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "12105:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "12085:3:64",
                                "statements": []
                              },
                              "src": "12081:303:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12393:11:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "12401:3:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12393:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11743:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11754:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11765:4:64",
                            "type": ""
                          }
                        ],
                        "src": "11565:845:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12644:966:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12654:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12672:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12683:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12668:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12668:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12658:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12702:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12713:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12695:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12695:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12695:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12725:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "12736:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "12729:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12751:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12771:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12765:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12765:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "12755:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12794:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12802:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12787:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12787:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12787:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12818:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12829:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12840:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12825:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12825:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "12818:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12852:14:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12862:4:64",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12856:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12875:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "12893:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12901:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12889:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12889:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "12879:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12913:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12922:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "12917:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12981:120:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "13002:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "13013:6:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "13007:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "13007:13:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "12995:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12995:26:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12995:26:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13034:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "13045:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13050:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "13041:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13041:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "13034:3:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13066:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "13080:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13088:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "13076:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13076:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "13066:6:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "12943:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12946:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12940:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12940:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "12954:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12956:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "12965:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12968:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "12961:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12961:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "12956:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "12936:3:64",
                                "statements": []
                              },
                              "src": "12932:169:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13121:9:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13132:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13117:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13117:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "13141:3:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13146:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13137:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13137:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13110:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13110:47:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13110:47:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13166:16:64",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "13179:3:64"
                              },
                              "variables": [
                                {
                                  "name": "pos_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13170:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13191:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13213:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13207:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13207:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13195:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "13236:3:64"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13241:8:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13229:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13229:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13229:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13259:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "13272:3:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13277:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13268:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13268:12:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "13259:5:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13289:31:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13309:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13317:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13305:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13305:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13293:8:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13329:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13340:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13333:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13407:175:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13428:5:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "13445:8:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "13439:5:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "13439:15:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "13456:36:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "13435:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "13435:58:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "13421:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13421:73:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13421:73:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13507:23:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13520:5:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13527:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "13516:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13516:14:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13507:5:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13543:29:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13559:8:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13569:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "13555:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13555:17:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13543:8:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13361:3:64"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13366:8:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13358:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13358:17:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "13376:22:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13378:18:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13389:3:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13394:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "13385:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13385:11:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13378:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "13354:3:64",
                                "statements": []
                              },
                              "src": "13350:232:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13591:13:64",
                              "value": {
                                "name": "pos_1",
                                "nodeType": "YulIdentifier",
                                "src": "13599:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13591:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint136_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint136_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12605:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12616:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12624:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12635:4:64",
                            "type": ""
                          }
                        ],
                        "src": "12415:1195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13710:92:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13720:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13732:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13743:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13728:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13728:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13720:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13762:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "13787:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "13780:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13780:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "13773:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13773:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13755:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13755:41:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13755:41:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13679:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13690:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13701:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13615:187:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13908:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13918:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13930:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13941:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13926:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13926:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13918:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13960:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "13971:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13953:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13953:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13953:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13877:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13888:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13899:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13807:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14230:373:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14240:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14252:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14263:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14248:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14248:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14240:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14283:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14294:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14276:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14276:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14276:25:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14310:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14320:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14314:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14382:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14393:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14378:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14378:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14402:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14410:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14398:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14398:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14371:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14371:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14371:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14434:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14445:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14430:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14430:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "14454:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14462:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14450:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14450:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14423:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14423:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14423:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14486:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14497:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14482:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14482:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "14502:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14475:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14475:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14475:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14529:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14540:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14525:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14525:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "14546:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14518:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14518:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14518:35:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14573:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14584:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14569:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14569:19:64"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "14590:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14562:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14562:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14562:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14159:9:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "14170:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "14178:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "14186:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14194:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14202:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14210:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14221:4:64",
                            "type": ""
                          }
                        ],
                        "src": "13989:614:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14789:217:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14799:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14811:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14822:3:64",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14807:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14807:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14799:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14842:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14853:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14835:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14835:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14835:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14880:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14891:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14876:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14876:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14900:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14908:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14896:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14896:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14869:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14869:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14869:45:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14934:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14945:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14930:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14930:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "14950:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14923:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14923:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14923:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14977:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14988:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14973:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14973:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "14993:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14966:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14966:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14966:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14734:9:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "14745:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14753:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14761:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14769:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14780:4:64",
                            "type": ""
                          }
                        ],
                        "src": "14608:398:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15130:98:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15147:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15158:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15140:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15140:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15140:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15170:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "15195:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15207:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15218:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15203:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15203:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "15178:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15178:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15170:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15099:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15110:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15121:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15011:217:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15354:98:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15371:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15382:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15364:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15364:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15364:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15394:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "15419:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15431:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15442:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15427:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15427:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "15402:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15402:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15394:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15323:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15334:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15345:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15233:219:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15631:174:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15648:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15659:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15641:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15641:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15641:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15682:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15693:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15678:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15678:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15698:2:64",
                                    "type": "",
                                    "value": "24"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15671:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15671:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15671:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15721:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15732:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15717:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15717:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f5045524d49545f5349474e4154555245",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15737:26:64",
                                    "type": "",
                                    "value": "INVALID_PERMIT_SIGNATURE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15710:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15710:54:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15710:54:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15773:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15785:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15796:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15781:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15781:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15773:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15608:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15622:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15457:348:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15984:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16001:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16012:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15994:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15994:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15994:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16035:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16046:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16031:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16031:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16051:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16024:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16024:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16024:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16074:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16085:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16070:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16070:18:64"
                                  },
                                  {
                                    "hexValue": "494e56414c49445f42415345",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16090:14:64",
                                    "type": "",
                                    "value": "INVALID_BASE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16063:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16063:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16063:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16114:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16126:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16137:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16122:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16122:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16114:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4277c8319fd149a95e69be42a3e123adc1b4da419a70e9b9baf1b89820d48e58__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15961:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15975:4:64",
                            "type": ""
                          }
                        ],
                        "src": "15810:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16325:163:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16342:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16353:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16335:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16335:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16335:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16376:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16387:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16372:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16372:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16392:2:64",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16365:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16365:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16365:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16415:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16426:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16411:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16411:18:64"
                                  },
                                  {
                                    "hexValue": "4d41585f4f55545f524154494f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16431:15:64",
                                    "type": "",
                                    "value": "MAX_OUT_RATIO"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16404:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16404:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16404:43:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16456:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16468:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16479:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16464:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16464:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16456:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4c5ad29f1d3e8bb498f3f1a2e1b9ae2d9e0aa620eec7213536f28c96e8c078d5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16302:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16316:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16151:337:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16667:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16684:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16695:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16677:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16677:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16677:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16718:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16729:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16714:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16714:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16734:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16707:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16707:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16707:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16757:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16768:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16753:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16753:18:64"
                                  },
                                  {
                                    "hexValue": "4e4f545f5245434549564544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "16773:14:64",
                                    "type": "",
                                    "value": "NOT_RECEIVED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16746:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16746:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16746:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16797:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16809:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16820:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16805:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16805:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16797:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5bc54dac1e6c6942ca387ee7fa5b266c08fd485e140ffd0f93cb3919d20c5523__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16644:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16658:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16493:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17008:157:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17025:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17036:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17018:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17018:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17018:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17059:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17070:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17055:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17055:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17075:1:64",
                                    "type": "",
                                    "value": "8"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17048:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17048:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17048:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17097:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17108:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17093:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17093:18:64"
                                  },
                                  {
                                    "hexValue": "5a45524f5f4f5554",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17113:10:64",
                                    "type": "",
                                    "value": "ZERO_OUT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17086:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17086:38:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17086:38:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17133:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17145:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17156:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17141:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17141:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17133:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_5cc85f4aca207e790130bbbe0f65d41050b113ebde71647d75b6406db2462409__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16985:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16999:4:64",
                            "type": ""
                          }
                        ],
                        "src": "16834:331:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17344:161:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17361:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17372:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17354:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17354:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17354:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17395:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17406:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17391:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17391:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17411:2:64",
                                    "type": "",
                                    "value": "11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17384:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17384:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17384:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17434:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17445:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17430:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17430:18:64"
                                  },
                                  {
                                    "hexValue": "4d494e5f42414c414e4345",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17450:13:64",
                                    "type": "",
                                    "value": "MIN_BALANCE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17423:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17423:41:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17423:41:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17473:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17485:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17496:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17481:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17481:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17473:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6bebbe4a6d03d73ca34b8e24407254be08e942ad0a1388f8e02d78d6cedb6f8f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17321:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17335:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17170:335:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17684:165:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17701:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17712:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17694:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17694:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17694:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17735:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17746:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17731:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17731:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17751:2:64",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17724:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17724:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17724:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17774:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17785:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17770:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17770:18:64"
                                  },
                                  {
                                    "hexValue": "57495448445241575f4641494c4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "17790:17:64",
                                    "type": "",
                                    "value": "WITHDRAW_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17763:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17763:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17763:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17817:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17829:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17840:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17825:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17825:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17817:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_763a38bd0e76a191b2607dcd1b2bd7d2e31ac1f3de7b2a0f756698e57f39c206__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17661:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17675:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17510:339:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18028:165:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18045:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18056:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18038:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18038:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18038:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18079:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18090:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18075:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18075:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18095:2:64",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18068:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18068:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18068:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18118:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18129:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18114:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18114:18:64"
                                  },
                                  {
                                    "hexValue": "5452414e534645525f4641494c4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18134:17:64",
                                    "type": "",
                                    "value": "TRANSFER_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18107:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18107:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18107:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18161:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18173:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18184:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18169:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18169:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18161:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18005:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18019:4:64",
                            "type": ""
                          }
                        ],
                        "src": "17854:339:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18372:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18389:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18400:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18382:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18382:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18382:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18423:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18434:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18419:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18419:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18439:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18412:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18412:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18412:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18462:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18473:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18458:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18458:18:64"
                                  },
                                  {
                                    "hexValue": "4d41585f494e5f524154494f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18478:14:64",
                                    "type": "",
                                    "value": "MAX_IN_RATIO"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18451:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18451:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18451:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18502:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18514:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18525:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18510:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18510:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18502:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ae8acaa6a695c6235cafd131eee9e0f44d7addbb9b6373a0f80fba9ff8078b7f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18349:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18363:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18198:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18713:173:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18730:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18741:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18723:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18723:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18723:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18764:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18775:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18760:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18760:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18780:2:64",
                                    "type": "",
                                    "value": "23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18753:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18753:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18753:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18803:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18814:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18799:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18799:18:64"
                                  },
                                  {
                                    "hexValue": "5045524d49545f444541444c494e455f45585049524544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "18819:25:64",
                                    "type": "",
                                    "value": "PERMIT_DEADLINE_EXPIRED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18792:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18792:53:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18792:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18854:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18866:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18877:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18862:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18862:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18854:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18690:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18704:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18539:347:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19065:155:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19082:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19093:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19075:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19075:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19075:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19116:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19127:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19112:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19112:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19132:1:64",
                                    "type": "",
                                    "value": "6"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19105:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19105:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19105:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19154:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19165:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19150:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19150:18:64"
                                  },
                                  {
                                    "hexValue": "4c4f434b4544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19170:8:64",
                                    "type": "",
                                    "value": "LOCKED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19143:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19143:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19143:36:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19188:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19200:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19211:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19196:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19196:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19188:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19042:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19056:4:64",
                            "type": ""
                          }
                        ],
                        "src": "18891:329:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19399:165:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19416:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19427:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19409:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19409:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19409:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19450:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19461:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19446:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19446:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19466:2:64",
                                    "type": "",
                                    "value": "15"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19439:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19439:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19439:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19489:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19500:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19485:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19485:18:64"
                                  },
                                  {
                                    "hexValue": "4e4f545f57484954454c4953544544",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19505:17:64",
                                    "type": "",
                                    "value": "NOT_WHITELISTED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19478:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19478:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19478:45:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19532:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19544:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19555:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19540:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19540:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19532:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_f386d26920ad5c64e0ecdb024adf48b36625926cc342c9dfbbd1b4a7544d8539__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19376:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19390:4:64",
                            "type": ""
                          }
                        ],
                        "src": "19225:339:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19698:201:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19708:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19720:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19731:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19716:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19716:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19708:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19750:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19765:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19773:32:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19761:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19761:45:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19743:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19743:64:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19743:64:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19827:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19838:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19823:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19823:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19847:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19855:36:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19843:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19843:49:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19816:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19816:77:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19816:77:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint120_t_uint136__to_t_uint120_t_uint136__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19659:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19670:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19678:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19689:4:64",
                            "type": ""
                          }
                        ],
                        "src": "19569:330:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20005:76:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "20015:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20027:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20038:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20023:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20023:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20015:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20057:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "20068:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20050:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20050:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20050:25:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19974:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19985:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19996:4:64",
                            "type": ""
                          }
                        ],
                        "src": "19904:177:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20215:119:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "20225:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20237:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20248:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20233:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20233:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20225:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20267:9:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "20278:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20260:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20260:25:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20260:25:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20305:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20316:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20301:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20301:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20321:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20294:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20294:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20294:34:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20176:9:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "20187:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20195:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20206:4:64",
                            "type": ""
                          }
                        ],
                        "src": "20086:248:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20436:87:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "20446:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20458:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20469:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20454:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20454:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20446:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20488:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "20503:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20511:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20499:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20499:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20481:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20481:36:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20481:36:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20405:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20416:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20427:4:64",
                            "type": ""
                          }
                        ],
                        "src": "20339:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20576:80:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20603:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "20605:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20605:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20605:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "20592:1:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "20599:1:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "20595:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20595:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20589:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20589:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "20586:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20634:16:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "20645:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "20648:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20641:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20641:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "20634:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "20559:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "20562:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "20568:3:64",
                            "type": ""
                          }
                        ],
                        "src": "20528:128:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20707:74:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20730:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "20732:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20732:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20732:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "20727:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "20720:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20720:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "20717:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20761:14:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "20770:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "20773:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "20766:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20766:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "20761:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_div_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "20692:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "20695:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "20701:1:64",
                            "type": ""
                          }
                        ],
                        "src": "20661:120:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20838:176:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20957:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "20959:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20959:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20959:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "20869:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "20862:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20862:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "20855:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20855:17:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "20877:1:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "20884:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "20952:1:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "20880:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "20880:74:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "20874:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20874:81:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "20851:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20851:105:64"
                              },
                              "nodeType": "YulIf",
                              "src": "20848:131:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20988:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "21003:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "21006:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "20999:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20999:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "20988:7:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "20817:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "20820:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "20826:7:64",
                            "type": ""
                          }
                        ],
                        "src": "20786:228:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21068:76:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21090:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "21092:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21092:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21092:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "21084:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "21087:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21081:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21081:8:64"
                              },
                              "nodeType": "YulIf",
                              "src": "21078:34:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21121:17:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "21133:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "21136:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "21129:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21129:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "21121:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "21050:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "21053:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "21059:4:64",
                            "type": ""
                          }
                        ],
                        "src": "21019:125:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21202:205:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21212:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "21221:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "21216:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21281:63:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "21306:3:64"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "21311:1:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "21302:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "21302:11:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "21325:3:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "21330:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "21321:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "21321:11:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "21315:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "21315:18:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "21295:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21295:39:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21295:39:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "21242:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "21245:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21239:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21239:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "21253:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "21255:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "21264:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21267:2:64",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "21260:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21260:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "21255:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "21235:3:64",
                                "statements": []
                              },
                              "src": "21231:113:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21370:31:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "21383:3:64"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "21388:6:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "21379:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "21379:16:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21397:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "21372:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21372:27:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21372:27:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "21359:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "21362:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21356:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21356:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "21353:48:64"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "21180:3:64",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "21185:3:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "21190:6:64",
                            "type": ""
                          }
                        ],
                        "src": "21149:258:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21459:148:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21550:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "21552:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21552:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21552:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "21475:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21482:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "21472:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21472:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "21469:103:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21581:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "21592:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21599:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21588:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21588:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "21581:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "21441:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "21451:3:64",
                            "type": ""
                          }
                        ],
                        "src": "21412:195:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21650:74:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21673:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x12",
                                        "nodeType": "YulIdentifier",
                                        "src": "21675:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21675:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21675:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "21670:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "21663:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21663:9:64"
                              },
                              "nodeType": "YulIf",
                              "src": "21660:35:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21704:14:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "21713:1:64"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "21716:1:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mod",
                                  "nodeType": "YulIdentifier",
                                  "src": "21709:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21709:9:64"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "21704:1:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "mod_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "21635:1:64",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "21638:1:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "r",
                            "nodeType": "YulTypedName",
                            "src": "21644:1:64",
                            "type": ""
                          }
                        ],
                        "src": "21612:112:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21761:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21778:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21781:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21771:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21771:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21771:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21875:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21878:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21868:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21868:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21868:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21899:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21902:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "21892:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21892:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21892:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "21729:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21950:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21967:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21970:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21960:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21960:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21960:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22064:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22067:4:64",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22057:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22057:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22057:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22088:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22091:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "22081:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22081:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22081:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "21918:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22139:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22156:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22159:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22149:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22149:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22149:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22253:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22256:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22246:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22246:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22246:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22277:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22280:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "22270:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22270:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22270:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "22107:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22328:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22345:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22348:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22338:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22338:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22338:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22442:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22445:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22435:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22435:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22435:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22466:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22469:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "22459:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22459:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22459:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "22296:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22530:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22617:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22626:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22629:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22619:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22619:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22619:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22553:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "22564:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22571:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "22560:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22560:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "22550:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22550:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "22543:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22543:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "22540:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "22519:5:64",
                            "type": ""
                          }
                        ],
                        "src": "22485:154:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22686:76:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22740:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22749:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22752:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22742:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22742:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22742:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22709:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "22730:5:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "22723:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "22723:13:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "22716:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22716:21:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "22706:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22706:32:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "22699:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22699:40:64"
                              },
                              "nodeType": "YulIf",
                              "src": "22696:60:64"
                            }
                          ]
                        },
                        "name": "validator_revert_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "22675:5:64",
                            "type": ""
                          }
                        ],
                        "src": "22644:118:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_address_payablet_boolt_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_address(value_2)\n        value2 := value_2\n        let value_3 := calldataload(add(headStart, 96))\n        validator_revert_bool(value_3)\n        value3 := value_3\n        value4 := calldataload(add(headStart, 128))\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_address_payablet_boolt_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_address(value_2)\n        value2 := value_2\n        let value_3 := calldataload(add(headStart, 96))\n        validator_revert_bool(value_3)\n        value3 := value_3\n        value4 := calldataload(add(headStart, 128))\n        let offset := calldataload(add(headStart, 160))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value5 := memPtr\n    }\n    function abi_decode_tuple_t_address_payablet_address_payablet_boolt_uint256(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_bool(value_2)\n        value2 := value_2\n        value3 := calldataload(add(headStart, 96))\n    }\n    function abi_decode_tuple_t_address_payablet_boolt_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_bool(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_address_payablet_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let value_2 := calldataload(add(headStart, 128))\n        if iszero(eq(value_2, and(value_2, 0xff))) { revert(0, 0) }\n        value4 := value_2\n        value5 := calldataload(add(headStart, 160))\n        value6 := calldataload(add(headStart, 192))\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_uint256t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, 0x1901000000000000000000000000000000000000000000000000000000000000)\n        mstore(add(pos, 2), value0)\n        mstore(add(pos, 34), value1)\n        end := add(pos, 66)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_rational_0_by_1_t_uint256__to_t_address_t_address_t_address_t_uint8_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), and(value3, 0xff))\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_address_t_address_t_address_t_uint256__to_t_address_t_address_t_address_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_address_t_uint120__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        let _2 := 64\n        pos := add(headStart, _2)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _3 := mload(srcPtr)\n            mstore(pos, and(mload(_3), 0xffffffffffffffffffffffffffffffffffffffff))\n            mstore(add(pos, _1), mload(add(_3, _1)))\n            pos := add(pos, _2)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint136_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint136_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        let tail_1 := add(headStart, 64)\n        mstore(headStart, 64)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 96)\n        let _1 := 0x20\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        mstore(add(headStart, _1), sub(pos, headStart))\n        let pos_1 := pos\n        let length_1 := mload(value1)\n        mstore(pos, length_1)\n        pos_1 := add(pos, _1)\n        let srcPtr_1 := add(value1, _1)\n        let i_1 := 0\n        for { } lt(i_1, length_1) { i_1 := add(i_1, 1) }\n        {\n            mstore(pos_1, and(mload(srcPtr_1), 0xffffffffffffffffffffffffffffffffff))\n            pos_1 := add(pos_1, _1)\n            srcPtr_1 := add(srcPtr_1, _1)\n        }\n        tail := pos_1\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, value0)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"INVALID_PERMIT_SIGNATURE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_4277c8319fd149a95e69be42a3e123adc1b4da419a70e9b9baf1b89820d48e58__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"INVALID_BASE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_4c5ad29f1d3e8bb498f3f1a2e1b9ae2d9e0aa620eec7213536f28c96e8c078d5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"MAX_OUT_RATIO\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_5bc54dac1e6c6942ca387ee7fa5b266c08fd485e140ffd0f93cb3919d20c5523__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"NOT_RECEIVED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_5cc85f4aca207e790130bbbe0f65d41050b113ebde71647d75b6406db2462409__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 8)\n        mstore(add(headStart, 64), \"ZERO_OUT\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6bebbe4a6d03d73ca34b8e24407254be08e942ad0a1388f8e02d78d6cedb6f8f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 11)\n        mstore(add(headStart, 64), \"MIN_BALANCE\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_763a38bd0e76a191b2607dcd1b2bd7d2e31ac1f3de7b2a0f756698e57f39c206__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"WITHDRAW_FAILED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"TRANSFER_FAILED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ae8acaa6a695c6235cafd131eee9e0f44d7addbb9b6373a0f80fba9ff8078b7f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"MAX_IN_RATIO\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"PERMIT_DEADLINE_EXPIRED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 6)\n        mstore(add(headStart, 64), \"LOCKED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_f386d26920ad5c64e0ecdb024adf48b36625926cc342c9dfbbd1b4a7544d8539__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"NOT_WHITELISTED\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint120_t_uint136__to_t_uint120_t_uint136__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := div(x, y)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function mod_t_uint256(x, y) -> r\n    {\n        if iszero(y) { panic_error_0x12() }\n        r := mod(x, y)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "21447": [
                  {
                    "length": 32,
                    "start": 1155
                  },
                  {
                    "length": 32,
                    "start": 7021
                  },
                  {
                    "length": 32,
                    "start": 8888
                  }
                ],
                "21449": [
                  {
                    "length": 32,
                    "start": 679
                  }
                ],
                "21451": [
                  {
                    "length": 32,
                    "start": 1116
                  },
                  {
                    "length": 32,
                    "start": 9144
                  },
                  {
                    "length": 32,
                    "start": 9447
                  },
                  {
                    "length": 32,
                    "start": 9821
                  }
                ],
                "21453": [
                  {
                    "length": 32,
                    "start": 1583
                  },
                  {
                    "length": 32,
                    "start": 6389
                  }
                ],
                "23253": [
                  {
                    "length": 32,
                    "start": 912
                  },
                  {
                    "length": 32,
                    "start": 7553
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061020b5760003560e01c8063627dd56a1161012a578063a69840a8116100bd578063bc3377d91161008c578063cf58879a11610071578063cf58879a1461062a578063d505accf14610651578063dd62ed3e1461066457600080fd5b8063bc3377d9146105fc578063c14ad8021461062157600080fd5b8063a69840a81461059c578063a8f1f52e146105c3578063a9059cbb146105d6578063af8c09bf146105e957600080fd5b80637ecebe00116100f95780637ecebe00146105205780638ae454411461054057806392bc32191461055657806395d89b411461056057600080fd5b8063627dd56a146104c557806367e4ac2c146104d857806370a08231146104ed5780637ba0e2e71461050d57600080fd5b806330adf81f116101a2578063499a3c5011610171578063499a3c50146104445780634da318271461045757806354cf2aeb1461047e578063570ca735146104a557600080fd5b806330adf81f1461034a578063313ce567146103715780633644e5151461038b578063469e9067146103b257600080fd5b806318160ddd116101de57806318160ddd146102ee57806323b872dd146102f757806325a932641461030a5780632a07b6c71461032a57600080fd5b8063053da1c81461021057806306fdde0314610236578063095ea7b31461027f5780630c0a0cd2146102a2575b600080fd5b61022361021e366004612f31565b61068f565b6040519081526020015b60405180910390f35b6102726040518060400160405280601981526020017f5375736869204672616e636869736564204c5020546f6b656e0000000000000081525081565b60405161022d91906131aa565b61029261028d366004612e08565b610a50565b604051901515815260200161022d565b6102c97f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161022d565b61022360025481565b610292610305366004612e6d565b610aca565b6000546102c99073ffffffffffffffffffffffffffffffffffffffff1681565b61033d610338366004612f31565b610c45565b60405161022d91906130b7565b6102237f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610379601281565b60405160ff909116815260200161022d565b6102237f000000000000000000000000000000000000000000000000000000000000000081565b61040b6103c0366004612bd3565b600a602052600090815260409020546effffffffffffffffffffffffffffff8116906f01000000000000000000000000000000900470ffffffffffffffffffffffffffffffffff1682565b604080516effffffffffffffffffffffffffffff909316835270ffffffffffffffffffffffffffffffffff90911660208301520161022d565b610223610452366004612f31565b610fcf565b6102c97f000000000000000000000000000000000000000000000000000000000000000081565b6102237f000000000000000000000000000000000000000000000000000000000000000081565b6001546102c99073ffffffffffffffffffffffffffffffffffffffff1681565b6102236104d3366004612f31565b610fd6565b6104e0611319565b60405161022d919061305d565b6102236104fb366004612bd3565b60036020526000908152604090205481565b61022361051b366004612f31565b611388565b61022361052e366004612bd3565b60056020526000908152604090205481565b6105486116b3565b60405161022d92919061311c565b61055e611883565b005b6102726040518060400160405280600381526020017f534c50000000000000000000000000000000000000000000000000000000000081525081565b6102237f54726964656e743a4672616e636869736564496e64657800000000000000000081565b6102236105d1366004612f31565b61197e565b6102926105e4366004612e08565b6119b4565b6102236105f7366004612f31565b611a66565b6001546102929074010000000000000000000000000000000000000000900460ff1681565b61022360085481565b6102c97f000000000000000000000000000000000000000000000000000000000000000081565b61055e61065f366004612e9d565b611cee565b610223610672366004612e34565b600460209081526000928352604080842090915290825290205481565b6000600954600114610702576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60026009556000808080808061071a888a018a612c54565b955095509550955095509550600160149054906101000a900460ff161561074457610744846120f6565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600a60205260408082209288168252902081546107a1906effffffffffffffffffffffffffffff1661079c6002670de0b6b3a76400006131d5565b612256565b84111561080a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4d41585f494e5f524154494f000000000000000000000000000000000000000060448201526064016106f9565b815481546108609186916effffffffffffffffffffffffffffff8083169270ffffffffffffffffffffffffffffffffff6f01000000000000000000000000000000918290048116939283169291909104166122a1565b6040517fbd50c7b1000000000000000000000000000000000000000000000000000000008152909950339063bd50c7b19061089f9086906004016131aa565b600060405180830381600087803b1580156108b957600080fd5b505af11580156108cd573d6000803e3d6000fd5b505083546effffffffffffffffffffffffffffff16860191506108f190508961232b565b1015610959576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f5245434549564544000000000000000000000000000000000000000060448201526064016106f9565b81546effffffffffffffffffffffffffffff808216860181167fffffffffffffffffffffffffffffffffff00000000000000000000000000000092831617845582548082168c900390911691161781556109b5878a8888612444565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062878d604051610a34929190918252602082015260400190565b60405180910390a4505060016009555094979650505050505050565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ab89086815260200190565b60405180910390a35060015b92915050565b60015460009074010000000000000000000000000000000000000000900460ff1615610af957610af9836120f6565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610b965773ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832033845290915281208054849290610b90908490613226565b90915550505b73ffffffffffffffffffffffffffffffffffffffff841660009081526003602052604081208054849290610bcb908490613226565b909155505073ffffffffffffffffffffffffffffffffffffffff808416600081815260036020526040908190208054860190555190918616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c339086815260200190565b60405180910390a35060019392505050565b6060600954600114610cb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106f9565b600260095560008080610cc885870187612dc7565b925092509250610cd7836120f6565b6000610ce58260025461273c565b60075490915067ffffffffffffffff811115610d0357610d03613343565b604051908082528060200260200182016040528015610d4857816020015b6040805180820190915260008082526020820152815260200190600190039081610d215790505b509450610d553083612776565b60005b600754811015610fbe57600060078281548110610d7757610d77613314565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16808352600a90915260408220549092506effffffffffffffffffffffffffffff1690610dc78583612256565b90506effffffffffffffffffffffffffffff8116610e41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5a45524f5f4f555400000000000000000000000000000000000000000000000060448201526064016106f9565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600a6020526040902080547fffffffffffffffffffffffffffffffffff00000000000000000000000000000081166effffffffffffffffffffffffffffff918216849003821617909155610eb690849083168a8a612444565b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001826effffffffffffffffffffffffffffff16815250898581518110610f0457610f04613314565b60200260200101819052508773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f3dd1df88dc92e2788892542d81f999d720a44b4c127065d45c128f4f59fdc3738584604051610fa092919073ffffffffffffffffffffffffffffffffffffffff9290921682526effffffffffffffffffffffffffffff16602082015260400190565b60405180910390a35050508080610fb690613269565b915050610d58565b505060016009555091949350505050565b6000806000fd5b6000600954600114611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106f9565b600260095560008080808061105b87890189612bf0565b94509450945094509450600160149054906101000a900460ff161561108357611083836120f6565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600a60205260408082209287168252902081546110db906effffffffffffffffffffffffffffff1661079c6002670de0b6b3a76400006131d5565b831115611144576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4d41585f494e5f524154494f000000000000000000000000000000000000000060448201526064016106f9565b8154815461119a9185916effffffffffffffffffffffffffffff8083169270ffffffffffffffffffffffffffffffffff6f01000000000000000000000000000000918290048116939283169291909104166122a1565b82549098506effffffffffffffffffffffffffffff1683016111bb8861232b565b1015611223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f5245434549564544000000000000000000000000000000000000000060448201526064016106f9565b81546effffffffffffffffffffffffffffff808216850181167fffffffffffffffffffffffffffffffffff00000000000000000000000000000092831617845582548082168b9003909116911617815561127f86898787612444565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fcd3829a3813dc3cdd188fd3d01dcf3268c16be2fdd2dd21d0665418816e46062868c6040516112fe929190918252602082015260400190565b60405180910390a45050600160095550939695505050505050565b6060600780548060200260200160405190810160405280929190818152602001828054801561137e57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611353575b5050505050905090565b60006009546001146113f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106f9565b600260095560008061140a84860186612e08565b91509150611417826120f6565b60006114258260025461273c565b905060005b60075481101561169a5760006007828154811061144957611449613314565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16808352600a90915260408220549092506effffffffffffffffffffffffffffff16908161149a57846114c6565b6114c6856effffffffffffffffffffffffffffff16836effffffffffffffffffffffffffffff16612256565b90506114df64e8d4a51000670de0b6b3a76400006131d5565b816effffffffffffffffffffffffffffff161015611559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f42414c414e434500000000000000000000000000000000000000000060448201526064016106f9565b8181016effffffffffffffffffffffffffffff166115768461232b565b10156115de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e4f545f5245434549564544000000000000000000000000000000000000000060448201526064016106f9565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600a602090815260409182902080547fffffffffffffffffffffffffffffffffff00000000000000000000000000000081166effffffffffffffffffffffffffffff918216880182161790915582519384528516908301529189169133917ff9403b28cc8805935e0ce6943ed646d5fde3d1e14f6b398e85bfa2851d1b85f7910160405180910390a3505050808061169290613269565b91505061142a565b506116a5838361280c565b506001600955949350505050565b60075460609081908067ffffffffffffffff8111156116d4576116d4613343565b6040519080825280602002602001820160405280156116fd578160200160208202803683370190505b5092508067ffffffffffffffff81111561171957611719613343565b604051908082528060200260200182016040528015611742578160200160208202803683370190505b50915060005b8181101561187d57600a60006007838154811061176757611767613314565b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205484516effffffffffffffffffffffffffffff909116908590839081106117c1576117c1613314565b602002602001018181525050600a6000600783815481106117e4576117e4613314565b60009182526020808320919091015473ffffffffffffffffffffffffffffffffffffffff16835282019290925260400190205483516f0100000000000000000000000000000090910470ffffffffffffffffffffffffffffffffff169084908390811061185357611853613314565b70ffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101611748565b50509091565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc14ad80200000000000000000000000000000000000000000000000000000000179052905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916119209190613041565b600060405180830381855afa9150503d806000811461195b576040519150601f19603f3d011682016040523d82523d6000602084013e611960565b606091505b50915050808060200190518101906119789190612fa3565b60085550565b6000808080808061199187890189612fbc565b945094509450945094506119a885858585856122a1565b98975050505050505050565b60015460009074010000000000000000000000000000000000000000900460ff16156119e3576119e3836120f6565b3360009081526003602052604081208054849290611a02908490613226565b909155505073ffffffffffffffffffffffffffffffffffffffff8316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ab89086815260200190565b6000600954600114611ad4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f4c4f434b4544000000000000000000000000000000000000000000000000000060448201526064016106f9565b60026009556000808080611aea86880188612d76565b9350935093509350611afb836120f6565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a602052604090208054600254600654611b91926effffffffffffffffffffffffffffff8116926f0100000000000000000000000000000090910470ffffffffffffffffffffffffffffffffff9081169216867f000000000000000000000000000000000000000000000000000000000000000061287d565b8154909650611bc9906effffffffffffffffffffffffffffff16611bbe6003670de0b6b3a76400006131d5565b61079c9060016131bd565b861115611c32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d41585f4f55545f524154494f0000000000000000000000000000000000000060448201526064016106f9565b80546effffffffffffffffffffffffffffff808216889003167fffffffffffffffffffffffffffffffffff000000000000000000000000000000909116178155611c7c3083612776565b611c8885878686612444565b6040805173ffffffffffffffffffffffffffffffffffffffff87811682526020820189905286169133917f3dd1df88dc92e2788892542d81f999d720a44b4c127065d45c128f4f59fdc373910160405180910390a3505060016009555091949350505050565b42841015611d58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016106f9565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080547f0000000000000000000000000000000000000000000000000000000000000000917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b9187611dd383613269565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810187905260e00160405160208183030381529060405280519060200120604051602001611e749291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015611efd573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611f7857508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611fde576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f494e56414c49445f5045524d49545f5349474e4154555245000000000000000060448201526064016106f9565b73ffffffffffffffffffffffffffffffffffffffff81811660009081526004602090815260408083208c8516808552908352928190208b9055518a815291928c16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255600180549285169290911691909117905580156120f157600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790555b505050565b600080546001546040805173ffffffffffffffffffffffffffffffffffffffff928316602482015285831660448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1472c271000000000000000000000000000000000000000000000000000000001790529051919092169161219391613041565b600060405180830381855afa9150503d80600081146121ce576040519150601f19603f3d011682016040523d82523d6000602084013e6121d3565b606091505b509150506000818060200190518101906121ed9190612f14565b9050806120f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f545f57484954454c4953544544000000000000000000000000000000000060448201526064016106f9565b60008061226383856131e9565b9050600061227a6002670de0b6b3a76400006131d5565b61228490836131bd565b9050612298670de0b6b3a7640000826131d5565b95945050505050565b6000806122ae858461273c565b905060006122e6887f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a764000003612256565b905060006122f688838a0161273c565b90506000612304828561292c565b9050670de0b6b3a764000081900361231c8882612256565b9b9a5050505050505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff83811660248301523060448084019190915283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff7888aec00000000000000000000000000000000000000000000000000000000179052915160009283927f0000000000000000000000000000000000000000000000000000000000000000909116916123e59190613041565b600060405180830381855afa9150503d8060008114612420576040519150601f19603f3d011682016040523d82523d6000602084013e612425565b606091505b509150508080602001905181019061243d9190612fa3565b9392505050565b80156125c6576040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260006084830181905260a48084018890528451808503909101815260c490930184526020830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f97da6d300000000000000000000000000000000000000000000000000000000017905292517f00000000000000000000000000000000000000000000000000000000000000009091169161251391613041565b6000604051808303816000865af19150503d8060008114612550576040519150601f19603f3d011682016040523d82523d6000602084013e612555565b606091505b50509050806125c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f57495448445241575f4641494c4544000000000000000000000000000000000060448201526064016106f9565b50612736565b6040805173ffffffffffffffffffffffffffffffffffffffff8681166024830152306044830152848116606483015260848083018790528351808403909101815260a490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff18d03cc0000000000000000000000000000000000000000000000000000000017905291516000927f0000000000000000000000000000000000000000000000000000000000000000169161268791613041565b6000604051808303816000865af19150503d80600081146126c4576040519150601f19603f3d011682016040523d82523d6000602084013e6126c9565b606091505b5050905080612734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c4544000000000000000000000000000000000060448201526064016106f9565b505b50505050565b600080612751670de0b6b3a7640000856131e9565b905060006127606002856131d5565b61276a90836131bd565b905061229884826131d5565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040812080548392906127ab908490613226565b909155505060028054829003905560405181815260009073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b806002600082825461281e91906131bd565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101612800565b60008061288a878661273c565b905060006128988588613226565b905060006128a6828961273c565b905060006128c5826128c0670de0b6b3a76400008761273c565b612a4f565b905060006128d3828d612256565b905060006128e1828e613226565b90506000886128f888670de0b6b3a7640000613226565b61290291906131e9565b905061291a8261079c83670de0b6b3a7640000613226565b9e9d5050505050505050505050505050565b60008260011115801561295d5750600161294f670de0b6b3a764000060026131e9565b6129599190613226565b8311155b6129c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f494e56414c49445f42415345000000000000000000000000000000000000000060448201526064016106f9565b6000670de0b6b3a76400006129d881856131d5565b6129e291906131e9565b905060006129f08285613226565b90506000612a0a866128c0670de0b6b3a7640000866131d5565b905081612a15578093505b6000612a388784612a336402540be400670de0b6b3a76400006131d5565b612abe565b9050612a448282612256565b979650505050505050565b6000612a5c6002836132a2565b612a6e57670de0b6b3a7640000612a70565b825b9050612a7d6002836131d5565b91505b8115612aa457612a9083806131e9565b9250612a9d6002836131d5565b9150612a80565b612aaf6002836132a2565b15610ac45761243d83826131e9565b6000828180612ad587670de0b6b3a7640000612bae565b670de0b6b3a76400009550909250905083600060015b878310612ba1576000612b06670de0b6b3a7640000836131e9565b9050600080612b2689612b21670de0b6b3a764000086613226565b612bae565b91509150612b388661079c848b612256565b9550612b44868461273c565b955085612b5357505050612ba1565b8615612b5d579315935b8015612b67579315935b8415612b7e57612b77868b613226565b9950612b8b565b612b88868b6131bd565b99505b5050508080612b9990613269565b915050612aeb565b5050505050509392505050565b600080828410612bc45750508082036000612bcc565b505081810360015b9250929050565b600060208284031215612be557600080fd5b813561243d81613372565b600080600080600060a08688031215612c0857600080fd5b8535612c1381613372565b94506020860135612c2381613372565b93506040860135612c3381613372565b92506060860135612c4381613397565b949793965091946080013592915050565b60008060008060008060c08789031215612c6d57600080fd5b8635612c7881613372565b95506020870135612c8881613372565b94506040870135612c9881613372565b93506060870135612ca881613397565b92506080870135915060a087013567ffffffffffffffff80821115612ccc57600080fd5b818901915089601f830112612ce057600080fd5b813581811115612cf257612cf2613343565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715612d3857612d38613343565b816040528281528c6020848701011115612d5157600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b60008060008060808587031215612d8c57600080fd5b8435612d9781613372565b93506020850135612da781613372565b92506040850135612db781613397565b9396929550929360600135925050565b600080600060608486031215612ddc57600080fd5b8335612de781613372565b92506020840135612df781613397565b929592945050506040919091013590565b60008060408385031215612e1b57600080fd5b8235612e2681613372565b946020939093013593505050565b60008060408385031215612e4757600080fd5b8235612e5281613372565b91506020830135612e6281613372565b809150509250929050565b600080600060608486031215612e8257600080fd5b8335612e8d81613372565b92506020840135612df781613372565b600080600080600080600060e0888a031215612eb857600080fd5b8735612ec381613372565b96506020880135612ed381613372565b95506040880135945060608801359350608088013560ff81168114612ef757600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600060208284031215612f2657600080fd5b815161243d81613397565b60008060208385031215612f4457600080fd5b823567ffffffffffffffff80821115612f5c57600080fd5b818501915085601f830112612f7057600080fd5b813581811115612f7f57600080fd5b866020828501011115612f9157600080fd5b60209290920196919550909350505050565b600060208284031215612fb557600080fd5b5051919050565b600080600080600060a08688031215612fd457600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000815180845261300f81602086016020860161323d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161305381846020870161323d565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b818110156130ab57835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613079565b50909695505050505050565b602080825282518282018190526000919060409081850190868401855b8281101561310f578151805173ffffffffffffffffffffffffffffffffffffffff1685528601518685015292840192908501906001016130d4565b5091979650505050505050565b604080825283519082018190526000906020906060840190828701845b8281101561315557815184529284019290840190600101613139565b5050508381038285015284518082528583019183019060005b8181101561319d57835170ffffffffffffffffffffffffffffffffff168352928401929184019160010161316e565b5090979650505050505050565b60208152600061243d6020830184612ff7565b600082198211156131d0576131d06132b6565b500190565b6000826131e4576131e46132e5565b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613221576132216132b6565b500290565b600082821015613238576132386132b6565b500390565b60005b83811015613258578181015183820152602001613240565b838111156127365750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561329b5761329b6132b6565b5060010190565b6000826132b1576132b16132e5565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461339457600080fd5b50565b801515811461339457600080fdfea264697066735822122077569485f492546ca5f754638fb90b39eac66a93bf0e16d8f9d4003a7ae8851e64736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x20B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x627DD56A GT PUSH2 0x12A JUMPI DUP1 PUSH4 0xA69840A8 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0xBC3377D9 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xCF58879A GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x62A JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x651 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBC3377D9 EQ PUSH2 0x5FC JUMPI DUP1 PUSH4 0xC14AD802 EQ PUSH2 0x621 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA69840A8 EQ PUSH2 0x59C JUMPI DUP1 PUSH4 0xA8F1F52E EQ PUSH2 0x5C3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5D6 JUMPI DUP1 PUSH4 0xAF8C09BF EQ PUSH2 0x5E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x7ECEBE00 GT PUSH2 0xF9 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x520 JUMPI DUP1 PUSH4 0x8AE45441 EQ PUSH2 0x540 JUMPI DUP1 PUSH4 0x92BC3219 EQ PUSH2 0x556 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x627DD56A EQ PUSH2 0x4C5 JUMPI DUP1 PUSH4 0x67E4AC2C EQ PUSH2 0x4D8 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4ED JUMPI DUP1 PUSH4 0x7BA0E2E7 EQ PUSH2 0x50D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x30ADF81F GT PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x499A3C50 GT PUSH2 0x171 JUMPI DUP1 PUSH4 0x499A3C50 EQ PUSH2 0x444 JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0x54CF2AEB EQ PUSH2 0x47E JUMPI DUP1 PUSH4 0x570CA735 EQ PUSH2 0x4A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x34A JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x371 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x38B JUMPI DUP1 PUSH4 0x469E9067 EQ PUSH2 0x3B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0x1DE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x2EE JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x2F7 JUMPI DUP1 PUSH4 0x25A93264 EQ PUSH2 0x30A JUMPI DUP1 PUSH4 0x2A07B6C7 EQ PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x53DA1C8 EQ PUSH2 0x210 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x236 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0xC0A0CD2 EQ PUSH2 0x2A2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x223 PUSH2 0x21E CALLDATASIZE PUSH1 0x4 PUSH2 0x2F31 JUMP JUMPDEST PUSH2 0x68F JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x272 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x19 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5375736869204672616E636869736564204C5020546F6B656E00000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22D SWAP2 SWAP1 PUSH2 0x31AA JUMP JUMPDEST PUSH2 0x292 PUSH2 0x28D CALLDATASIZE PUSH1 0x4 PUSH2 0x2E08 JUMP JUMPDEST PUSH2 0xA50 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22D JUMP JUMPDEST PUSH2 0x2C9 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22D JUMP JUMPDEST PUSH2 0x223 PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x292 PUSH2 0x305 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E6D JUMP JUMPDEST PUSH2 0xACA JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x2C9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x33D PUSH2 0x338 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F31 JUMP JUMPDEST PUSH2 0xC45 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22D SWAP2 SWAP1 PUSH2 0x30B7 JUMP JUMPDEST PUSH2 0x223 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH2 0x379 PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22D JUMP JUMPDEST PUSH2 0x223 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x40B PUSH2 0x3C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2BD3 JUMP JUMPDEST PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP1 PUSH16 0x1000000000000000000000000000000 SWAP1 DIV PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x22D JUMP JUMPDEST PUSH2 0x223 PUSH2 0x452 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F31 JUMP JUMPDEST PUSH2 0xFCF JUMP JUMPDEST PUSH2 0x2C9 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x223 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x2C9 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH2 0x223 PUSH2 0x4D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F31 JUMP JUMPDEST PUSH2 0xFD6 JUMP JUMPDEST PUSH2 0x4E0 PUSH2 0x1319 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22D SWAP2 SWAP1 PUSH2 0x305D JUMP JUMPDEST PUSH2 0x223 PUSH2 0x4FB CALLDATASIZE PUSH1 0x4 PUSH2 0x2BD3 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x223 PUSH2 0x51B CALLDATASIZE PUSH1 0x4 PUSH2 0x2F31 JUMP JUMPDEST PUSH2 0x1388 JUMP JUMPDEST PUSH2 0x223 PUSH2 0x52E CALLDATASIZE PUSH1 0x4 PUSH2 0x2BD3 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x548 PUSH2 0x16B3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22D SWAP3 SWAP2 SWAP1 PUSH2 0x311C JUMP JUMPDEST PUSH2 0x55E PUSH2 0x1883 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x272 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x534C500000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH2 0x223 PUSH32 0x54726964656E743A4672616E636869736564496E646578000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0x223 PUSH2 0x5D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F31 JUMP JUMPDEST PUSH2 0x197E JUMP JUMPDEST PUSH2 0x292 PUSH2 0x5E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E08 JUMP JUMPDEST PUSH2 0x19B4 JUMP JUMPDEST PUSH2 0x223 PUSH2 0x5F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2F31 JUMP JUMPDEST PUSH2 0x1A66 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x292 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x223 PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2C9 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x55E PUSH2 0x65F CALLDATASIZE PUSH1 0x4 PUSH2 0x2E9D JUMP JUMPDEST PUSH2 0x1CEE JUMP JUMPDEST PUSH2 0x223 PUSH2 0x672 CALLDATASIZE PUSH1 0x4 PUSH2 0x2E34 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x702 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x71A DUP9 DUP11 ADD DUP11 PUSH2 0x2C54 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 POP PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x744 JUMPI PUSH2 0x744 DUP5 PUSH2 0x20F6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP3 DUP9 AND DUP3 MSTORE SWAP1 KECCAK256 DUP2 SLOAD PUSH2 0x7A1 SWAP1 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x79C PUSH1 0x2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x31D5 JUMP JUMPDEST PUSH2 0x2256 JUMP JUMPDEST DUP5 GT ISZERO PUSH2 0x80A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D41585F494E5F524154494F0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST DUP2 SLOAD DUP2 SLOAD PUSH2 0x860 SWAP2 DUP7 SWAP2 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP3 PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH16 0x1000000000000000000000000000000 SWAP2 DUP3 SWAP1 DIV DUP2 AND SWAP4 SWAP3 DUP4 AND SWAP3 SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x22A1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xBD50C7B100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP10 POP CALLER SWAP1 PUSH4 0xBD50C7B1 SWAP1 PUSH2 0x89F SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x31AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP DUP4 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 ADD SWAP2 POP PUSH2 0x8F1 SWAP1 POP DUP10 PUSH2 0x232B JUMP JUMPDEST LT ISZERO PUSH2 0x959 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F52454345495645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST DUP2 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP7 ADD DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 SWAP3 DUP4 AND OR DUP5 SSTORE DUP3 SLOAD DUP1 DUP3 AND DUP13 SWAP1 SUB SWAP1 SWAP2 AND SWAP2 AND OR DUP2 SSTORE PUSH2 0x9B5 DUP8 DUP11 DUP9 DUP9 PUSH2 0x2444 JUMP JUMPDEST DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP8 DUP14 PUSH1 0x40 MLOAD PUSH2 0xA34 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP5 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 SWAP1 SSTORE MLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP1 PUSH2 0xAB8 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0xAF9 JUMPI PUSH2 0xAF9 DUP4 PUSH2 0x20F6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xB96 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xB90 SWAP1 DUP5 SWAP1 PUSH2 0x3226 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0xBCB SWAP1 DUP5 SWAP1 PUSH2 0x3226 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD SWAP1 SWAP2 DUP7 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xC33 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0xCB3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 PUSH2 0xCC8 DUP6 DUP8 ADD DUP8 PUSH2 0x2DC7 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0xCD7 DUP4 PUSH2 0x20F6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCE5 DUP3 PUSH1 0x2 SLOAD PUSH2 0x273C JUMP JUMPDEST PUSH1 0x7 SLOAD SWAP1 SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD03 JUMPI PUSH2 0xD03 PUSH2 0x3343 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD48 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xD21 JUMPI SWAP1 POP JUMPDEST POP SWAP5 POP PUSH2 0xD55 ADDRESS DUP4 PUSH2 0x2776 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x7 SLOAD DUP2 LT ISZERO PUSH2 0xFBE JUMPI PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0xD77 JUMPI PUSH2 0xD77 PUSH2 0x3314 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP4 MSTORE PUSH1 0xA SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD SWAP1 SWAP3 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0xDC7 DUP6 DUP4 PUSH2 0x2256 JUMP JUMPDEST SWAP1 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xE41 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x8 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5A45524F5F4F5554000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 DUP2 AND PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP5 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH2 0xEB6 SWAP1 DUP5 SWAP1 DUP4 AND DUP11 DUP11 PUSH2 0x2444 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE POP DUP10 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xF04 JUMPI PUSH2 0xF04 PUSH2 0x3314 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x3DD1DF88DC92E2788892542D81F999D720A44B4C127065D45C128F4F59FDC373 DUP6 DUP5 PUSH1 0x40 MLOAD PUSH2 0xFA0 SWAP3 SWAP2 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP DUP1 DUP1 PUSH2 0xFB6 SWAP1 PUSH2 0x3269 JUMP JUMPDEST SWAP2 POP POP PUSH2 0xD58 JUMP JUMPDEST POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP2 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x1044 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 PUSH2 0x105B DUP8 DUP10 ADD DUP10 PUSH2 0x2BF0 JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH1 0x1 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x1083 JUMPI PUSH2 0x1083 DUP4 PUSH2 0x20F6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP3 DUP8 AND DUP3 MSTORE SWAP1 KECCAK256 DUP2 SLOAD PUSH2 0x10DB SWAP1 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x79C PUSH1 0x2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x31D5 JUMP JUMPDEST DUP4 GT ISZERO PUSH2 0x1144 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D41585F494E5F524154494F0000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST DUP2 SLOAD DUP2 SLOAD PUSH2 0x119A SWAP2 DUP6 SWAP2 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP3 PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH16 0x1000000000000000000000000000000 SWAP2 DUP3 SWAP1 DIV DUP2 AND SWAP4 SWAP3 DUP4 AND SWAP3 SWAP2 SWAP1 SWAP2 DIV AND PUSH2 0x22A1 JUMP JUMPDEST DUP3 SLOAD SWAP1 SWAP9 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 ADD PUSH2 0x11BB DUP9 PUSH2 0x232B JUMP JUMPDEST LT ISZERO PUSH2 0x1223 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F52454345495645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST DUP2 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP6 ADD DUP2 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 SWAP3 DUP4 AND OR DUP5 SSTORE DUP3 SLOAD DUP1 DUP3 AND DUP12 SWAP1 SUB SWAP1 SWAP2 AND SWAP2 AND OR DUP2 SSTORE PUSH2 0x127F DUP7 DUP10 DUP8 DUP8 PUSH2 0x2444 JUMP JUMPDEST DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xCD3829A3813DC3CDD188FD3D01DCF3268C16BE2FDD2DD21D0665418816E46062 DUP7 DUP13 PUSH1 0x40 MLOAD PUSH2 0x12FE SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP4 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x7 DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x137E JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1353 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x13F6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 PUSH2 0x140A DUP5 DUP7 ADD DUP7 PUSH2 0x2E08 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x1417 DUP3 PUSH2 0x20F6 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1425 DUP3 PUSH1 0x2 SLOAD PUSH2 0x273C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x7 SLOAD DUP2 LT ISZERO PUSH2 0x169A JUMPI PUSH1 0x0 PUSH1 0x7 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1449 JUMPI PUSH2 0x1449 PUSH2 0x3314 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 DUP4 MSTORE PUSH1 0xA SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD SWAP1 SWAP3 POP PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP2 PUSH2 0x149A JUMPI DUP5 PUSH2 0x14C6 JUMP JUMPDEST PUSH2 0x14C6 DUP6 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2256 JUMP JUMPDEST SWAP1 POP PUSH2 0x14DF PUSH5 0xE8D4A51000 PUSH8 0xDE0B6B3A7640000 PUSH2 0x31D5 JUMP JUMPDEST DUP2 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND LT ISZERO PUSH2 0x1559 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xB PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D494E5F42414C414E4345000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST DUP2 DUP2 ADD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1576 DUP5 PUSH2 0x232B JUMP JUMPDEST LT ISZERO PUSH2 0x15DE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F52454345495645440000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 DUP2 AND PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND DUP9 ADD DUP3 AND OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE DUP6 AND SWAP1 DUP4 ADD MSTORE SWAP2 DUP10 AND SWAP2 CALLER SWAP2 PUSH32 0xF9403B28CC8805935E0CE6943ED646D5FDE3D1E14F6B398E85BFA2851D1B85F7 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP DUP1 DUP1 PUSH2 0x1692 SWAP1 PUSH2 0x3269 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x142A JUMP JUMPDEST POP PUSH2 0x16A5 DUP4 DUP4 PUSH2 0x280C JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x9 SSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x60 SWAP1 DUP2 SWAP1 DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x16D4 JUMPI PUSH2 0x16D4 PUSH2 0x3343 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x16FD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP DUP1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1719 JUMPI PUSH2 0x1719 PUSH2 0x3343 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1742 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x187D JUMPI PUSH1 0xA PUSH1 0x0 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x1767 JUMPI PUSH2 0x1767 PUSH2 0x3314 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD DUP5 MLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP6 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x17C1 JUMPI PUSH2 0x17C1 PUSH2 0x3314 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0xA PUSH1 0x0 PUSH1 0x7 DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x17E4 JUMPI PUSH2 0x17E4 PUSH2 0x3314 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 ADD SWAP1 KECCAK256 SLOAD DUP4 MLOAD PUSH16 0x1000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 DUP5 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1853 JUMPI PUSH2 0x1853 PUSH2 0x3314 JUMP JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1748 JUMP JUMPDEST POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC14AD80200000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 PUSH2 0x1920 SWAP2 SWAP1 PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x195B JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1960 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1978 SWAP2 SWAP1 PUSH2 0x2FA3 JUMP JUMPDEST PUSH1 0x8 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x1991 DUP8 DUP10 ADD DUP10 PUSH2 0x2FBC JUMP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP SWAP5 POP PUSH2 0x19A8 DUP6 DUP6 DUP6 DUP6 DUP6 PUSH2 0x22A1 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x0 SWAP1 PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x19E3 JUMPI PUSH2 0x19E3 DUP4 PUSH2 0x20F6 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x1A02 SWAP1 DUP5 SWAP1 PUSH2 0x3226 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE MLOAD CALLER SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH2 0xAB8 SWAP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x9 SLOAD PUSH1 0x1 EQ PUSH2 0x1AD4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x6 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4C4F434B45440000000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x9 SSTORE PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x1AEA DUP7 DUP9 ADD DUP9 PUSH2 0x2D76 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP SWAP4 POP PUSH2 0x1AFB DUP4 PUSH2 0x20F6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0xA PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x6 SLOAD PUSH2 0x1B91 SWAP3 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND SWAP3 PUSH16 0x1000000000000000000000000000000 SWAP1 SWAP2 DIV PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP3 AND DUP7 PUSH32 0x0 PUSH2 0x287D JUMP JUMPDEST DUP2 SLOAD SWAP1 SWAP7 POP PUSH2 0x1BC9 SWAP1 PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1BBE PUSH1 0x3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x31D5 JUMP JUMPDEST PUSH2 0x79C SWAP1 PUSH1 0x1 PUSH2 0x31BD JUMP JUMPDEST DUP7 GT ISZERO PUSH2 0x1C32 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4D41585F4F55545F524154494F00000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST DUP1 SLOAD PUSH15 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND DUP9 SWAP1 SUB AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000 SWAP1 SWAP2 AND OR DUP2 SSTORE PUSH2 0x1C7C ADDRESS DUP4 PUSH2 0x2776 JUMP JUMPDEST PUSH2 0x1C88 DUP6 DUP8 DUP7 DUP7 PUSH2 0x2444 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP10 SWAP1 MSTORE DUP7 AND SWAP2 CALLER SWAP2 PUSH32 0x3DD1DF88DC92E2788892542D81F999D720A44B4C127065D45C128F4F59FDC373 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 PUSH1 0x9 SSTORE POP SWAP2 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1D58 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5045524D49545F444541444C494E455F45585049524544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH32 0x0 SWAP2 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP8 PUSH2 0x1DD3 DUP4 PUSH2 0x3269 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP1 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP2 AND PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0xE0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1E74 SWAP3 SWAP2 SWAP1 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0x42 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x0 DUP1 DUP6 MSTORE SWAP2 DUP5 ADD DUP1 DUP5 MSTORE DUP2 SWAP1 MSTORE PUSH1 0xFF DUP9 AND SWAP3 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP4 ADD DUP7 SWAP1 MSTORE PUSH1 0x80 DUP4 ADD DUP6 SWAP1 MSTORE SWAP1 SWAP3 POP SWAP1 PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EFD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1F78 JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1FDE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5045524D49545F5349474E41545552450000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP13 DUP6 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP12 SWAP1 SSTORE MLOAD DUP11 DUP2 MSTORE SWAP2 SWAP3 DUP13 AND SWAP2 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP3 DUP6 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x20F1 JUMPI PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 OR SWAP1 SSTORE JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE DUP6 DUP4 AND PUSH1 0x44 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1472C27100000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH2 0x2193 SWAP2 PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x21CE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x21D3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x21ED SWAP2 SWAP1 PUSH2 0x2F14 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x20F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F57484954454C49535445440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2263 DUP4 DUP6 PUSH2 0x31E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x227A PUSH1 0x2 PUSH8 0xDE0B6B3A7640000 PUSH2 0x31D5 JUMP JUMPDEST PUSH2 0x2284 SWAP1 DUP4 PUSH2 0x31BD JUMP JUMPDEST SWAP1 POP PUSH2 0x2298 PUSH8 0xDE0B6B3A7640000 DUP3 PUSH2 0x31D5 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x22AE DUP6 DUP5 PUSH2 0x273C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x22E6 DUP9 PUSH32 0x0 PUSH8 0xDE0B6B3A7640000 SUB PUSH2 0x2256 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x22F6 DUP9 DUP4 DUP11 ADD PUSH2 0x273C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2304 DUP3 DUP6 PUSH2 0x292C JUMP JUMPDEST SWAP1 POP PUSH8 0xDE0B6B3A7640000 DUP2 SWAP1 SUB PUSH2 0x231C DUP9 DUP3 PUSH2 0x2256 JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF7888AEC00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH2 0x23E5 SWAP2 SWAP1 PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2420 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2425 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x243D SWAP2 SWAP1 PUSH2 0x2FA3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x25C6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xA4 DUP1 DUP5 ADD DUP9 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP6 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC4 SWAP1 SWAP4 ADD DUP5 MSTORE PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x97DA6D3000000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP3 MLOAD PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH2 0x2513 SWAP2 PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2550 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2555 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x25C0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x57495448445241575F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST POP PUSH2 0x2736 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE ADDRESS PUSH1 0x44 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x84 DUP1 DUP4 ADD DUP8 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xA4 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xF18D03CC00000000000000000000000000000000000000000000000000000000 OR SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 PUSH32 0x0 AND SWAP2 PUSH2 0x2687 SWAP2 PUSH2 0x3041 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x26C4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x26C9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2734 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5452414E534645525F4641494C45440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST POP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2751 PUSH8 0xDE0B6B3A7640000 DUP6 PUSH2 0x31E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2760 PUSH1 0x2 DUP6 PUSH2 0x31D5 JUMP JUMPDEST PUSH2 0x276A SWAP1 DUP4 PUSH2 0x31BD JUMP JUMPDEST SWAP1 POP PUSH2 0x2298 DUP5 DUP3 PUSH2 0x31D5 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x27AB SWAP1 DUP5 SWAP1 PUSH2 0x3226 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x281E SWAP2 SWAP1 PUSH2 0x31BD JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE MLOAD DUP5 DUP2 MSTORE PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 ADD PUSH2 0x2800 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x288A DUP8 DUP7 PUSH2 0x273C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2898 DUP6 DUP9 PUSH2 0x3226 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x28A6 DUP3 DUP10 PUSH2 0x273C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x28C5 DUP3 PUSH2 0x28C0 PUSH8 0xDE0B6B3A7640000 DUP8 PUSH2 0x273C JUMP JUMPDEST PUSH2 0x2A4F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x28D3 DUP3 DUP14 PUSH2 0x2256 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x28E1 DUP3 DUP15 PUSH2 0x3226 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP9 PUSH2 0x28F8 DUP9 PUSH8 0xDE0B6B3A7640000 PUSH2 0x3226 JUMP JUMPDEST PUSH2 0x2902 SWAP2 SWAP1 PUSH2 0x31E9 JUMP JUMPDEST SWAP1 POP PUSH2 0x291A DUP3 PUSH2 0x79C DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x3226 JUMP JUMPDEST SWAP15 SWAP14 POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 GT ISZERO DUP1 ISZERO PUSH2 0x295D JUMPI POP PUSH1 0x1 PUSH2 0x294F PUSH8 0xDE0B6B3A7640000 PUSH1 0x2 PUSH2 0x31E9 JUMP JUMPDEST PUSH2 0x2959 SWAP2 SWAP1 PUSH2 0x3226 JUMP JUMPDEST DUP4 GT ISZERO JUMPDEST PUSH2 0x29C3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F424153450000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x6F9 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x29D8 DUP2 DUP6 PUSH2 0x31D5 JUMP JUMPDEST PUSH2 0x29E2 SWAP2 SWAP1 PUSH2 0x31E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x29F0 DUP3 DUP6 PUSH2 0x3226 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2A0A DUP7 PUSH2 0x28C0 PUSH8 0xDE0B6B3A7640000 DUP7 PUSH2 0x31D5 JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x2A15 JUMPI DUP1 SWAP4 POP JUMPDEST PUSH1 0x0 PUSH2 0x2A38 DUP8 DUP5 PUSH2 0x2A33 PUSH5 0x2540BE400 PUSH8 0xDE0B6B3A7640000 PUSH2 0x31D5 JUMP JUMPDEST PUSH2 0x2ABE JUMP JUMPDEST SWAP1 POP PUSH2 0x2A44 DUP3 DUP3 PUSH2 0x2256 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2A5C PUSH1 0x2 DUP4 PUSH2 0x32A2 JUMP JUMPDEST PUSH2 0x2A6E JUMPI PUSH8 0xDE0B6B3A7640000 PUSH2 0x2A70 JUMP JUMPDEST DUP3 JUMPDEST SWAP1 POP PUSH2 0x2A7D PUSH1 0x2 DUP4 PUSH2 0x31D5 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP2 ISZERO PUSH2 0x2AA4 JUMPI PUSH2 0x2A90 DUP4 DUP1 PUSH2 0x31E9 JUMP JUMPDEST SWAP3 POP PUSH2 0x2A9D PUSH1 0x2 DUP4 PUSH2 0x31D5 JUMP JUMPDEST SWAP2 POP PUSH2 0x2A80 JUMP JUMPDEST PUSH2 0x2AAF PUSH1 0x2 DUP4 PUSH2 0x32A2 JUMP JUMPDEST ISZERO PUSH2 0xAC4 JUMPI PUSH2 0x243D DUP4 DUP3 PUSH2 0x31E9 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 DUP1 PUSH2 0x2AD5 DUP8 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2BAE JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP6 POP SWAP1 SWAP3 POP SWAP1 POP DUP4 PUSH1 0x0 PUSH1 0x1 JUMPDEST DUP8 DUP4 LT PUSH2 0x2BA1 JUMPI PUSH1 0x0 PUSH2 0x2B06 PUSH8 0xDE0B6B3A7640000 DUP4 PUSH2 0x31E9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x2B26 DUP10 PUSH2 0x2B21 PUSH8 0xDE0B6B3A7640000 DUP7 PUSH2 0x3226 JUMP JUMPDEST PUSH2 0x2BAE JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2B38 DUP7 PUSH2 0x79C DUP5 DUP12 PUSH2 0x2256 JUMP JUMPDEST SWAP6 POP PUSH2 0x2B44 DUP7 DUP5 PUSH2 0x273C JUMP JUMPDEST SWAP6 POP DUP6 PUSH2 0x2B53 JUMPI POP POP POP PUSH2 0x2BA1 JUMP JUMPDEST DUP7 ISZERO PUSH2 0x2B5D JUMPI SWAP4 ISZERO SWAP4 JUMPDEST DUP1 ISZERO PUSH2 0x2B67 JUMPI SWAP4 ISZERO SWAP4 JUMPDEST DUP5 ISZERO PUSH2 0x2B7E JUMPI PUSH2 0x2B77 DUP7 DUP12 PUSH2 0x3226 JUMP JUMPDEST SWAP10 POP PUSH2 0x2B8B JUMP JUMPDEST PUSH2 0x2B88 DUP7 DUP12 PUSH2 0x31BD JUMP JUMPDEST SWAP10 POP JUMPDEST POP POP POP DUP1 DUP1 PUSH2 0x2B99 SWAP1 PUSH2 0x3269 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2AEB JUMP JUMPDEST POP POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 LT PUSH2 0x2BC4 JUMPI POP POP DUP1 DUP3 SUB PUSH1 0x0 PUSH2 0x2BCC JUMP JUMPDEST POP POP DUP2 DUP2 SUB PUSH1 0x1 JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2BE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x243D DUP2 PUSH2 0x3372 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2C08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2C13 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x2C23 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x2C33 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x2C43 DUP2 PUSH2 0x3397 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP2 SWAP5 PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x2C6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2C78 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x2C88 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH2 0x2C98 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x2CA8 DUP2 PUSH2 0x3397 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2CCC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP10 ADD SWAP2 POP DUP10 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2CE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2CF2 JUMPI PUSH2 0x2CF2 PUSH2 0x3343 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2D38 JUMPI PUSH2 0x2D38 PUSH2 0x3343 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP13 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x2D51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2D8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2D97 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x2DA7 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH2 0x2DB7 DUP2 PUSH2 0x3397 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP3 SWAP4 PUSH1 0x60 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2DDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2DE7 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2DF7 DUP2 PUSH2 0x3397 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2E26 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2E47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2E52 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2E62 DUP2 PUSH2 0x3372 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2E82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2E8D DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x2DF7 DUP2 PUSH2 0x3372 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x2EB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x2EC3 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x2ED3 DUP2 PUSH2 0x3372 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2EF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 PUSH1 0xA0 DUP5 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 SWAP1 SWAP4 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x243D DUP2 PUSH2 0x3397 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2F44 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2F5C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2F70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x2F7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2F91 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2FB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2FD4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP4 CALLDATALOAD SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP5 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 ADD CALLDATALOAD SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x300F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x323D JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x3053 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x323D JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x30AB JUMPI DUP4 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3079 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x40 SWAP1 DUP2 DUP6 ADD SWAP1 DUP7 DUP5 ADD DUP6 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x310F JUMPI DUP2 MLOAD DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 MSTORE DUP7 ADD MLOAD DUP7 DUP6 ADD MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x30D4 JUMP JUMPDEST POP SWAP2 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x3155 JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3139 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE DUP5 MLOAD DUP1 DUP3 MSTORE DUP6 DUP4 ADD SWAP2 DUP4 ADD SWAP1 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x319D JUMPI DUP4 MLOAD PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x316E JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x243D PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x2FF7 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x31D0 JUMPI PUSH2 0x31D0 PUSH2 0x32B6 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x31E4 JUMPI PUSH2 0x31E4 PUSH2 0x32E5 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x3221 JUMPI PUSH2 0x3221 PUSH2 0x32B6 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x3238 JUMPI PUSH2 0x3238 PUSH2 0x32B6 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3258 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3240 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2736 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0x329B JUMPI PUSH2 0x329B PUSH2 0x32B6 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x32B1 JUMPI PUSH2 0x32B1 PUSH2 0x32E5 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3394 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH24 0x569485F492546CA5F754638FB90B39EAC66A93BF0E16D8F9 0xD4 STOP GASPRICE PUSH27 0xE8851E64736F6C6343000807003300000000000000000000000000 ",
              "sourceMap": "570:15883:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9169:1260;;;;;;:::i;:::-;;:::i;:::-;;;13953:25:64;;;13941:2;13926:18;9169:1260:56;;;;;;;;557:57:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2457:203::-;;;;;;:::i;:::-;;:::i;:::-;;;13780:14:64;;13773:22;13755:41;;13743:2;13728:18;2457:203:57;13615:187:64;884:33:56;;;;;;;;8792:42:64;8780:55;;;8762:74;;8750:2;8735:18;884:33:56;8616:226:64;796:26:57;;;;;;3665:612;;;;;;:::i;:::-;;:::i;705:31::-;;;;;;;;;5631:1082:56;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1120:145:57:-;;1170:95;1120:145;;663:35;;696:2;663:35;;;;;20511:4:64;20499:17;;;20481:36;;20469:2;20454:18;663:35:57;20339:184:64;1336:41:57;;;;;2151::56;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;19773:32:64;19761:45;;;19743:64;;19855:36;19843:49;;;19838:2;19823:18;;19816:77;19716:18;2151:41:56;19569:330:64;15818:101:56;;;;;;:::i;:::-;;:::i;923:30::-;;;;;845:32;;;;;742:23:57;;;;;;;;;7880:1160:56;;;;;;:::i;:::-;;:::i;15277:108::-;;;:::i;:::-;;;;;;;:::i;870:44:57:-;;;;;;:::i;:::-;;;;;;;;;;;;;;4392:1113:56;;;;;;:::i;:::-;;:::i;1440:41:57:-;;;;;;:::i;:::-;;;;;;;;;;;;;;15925:526:56;;;:::i;:::-;;;;;;;;:::i;10487:206::-;;;:::i;:::-;;620:37:57;;;;;;;;;;;;;;;;;;;;;1912:75:56;;;;;15391:421;;;;;;:::i;:::-;;:::i;2900:441:57:-;;;;;;:::i;:::-;;:::i;6888:864:56:-;;;;;;:::i;:::-;;:::i;771:18:57:-;;;;;;;;;;;;1884:21:56;;;;;;959:39;;;;;4757:794:57;;;;;;:::i;:::-;;:::i;975:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;9169:1260:56;9239:17;2059:8;;2071:1;2059:13;2051:32;;;;;;;19093:2:64;2051:32:56;;;19075:21:64;19132:1;19112:18;;;19105:29;19170:8;19150:18;;;19143:36;19196:18;;2051:32:56;;;;;;;;;2104:1;2093:8;:12;9269:15:::1;::::0;;;;;9383:101:::1;::::0;;::::1;9407:4:::0;9383:101:::1;:::i;:::-;9268:216;;;;;;;;;;;;9498:6;;;;;;;;;;;9494:38;;;9506:26;9522:9;9506:15;:26::i;:::-;9568:16;::::0;;::::1;9542:23;9568:16:::0;;;:7:::1;:16;::::0;;;;;9621:17;;::::1;::::0;;;;9674:16;;9669:36:::1;::::0;9674:16:::1;;1741:8;1748:1;1038:6;1741:8;:::i;:::-;9669:4;:36::i;:::-;9657:8;:48;;9649:73;;;::::0;::::1;::::0;;18400:2:64;9649:73:56::1;::::0;::::1;18382:21:64::0;18439:2;18419:18;;;18412:30;18478:14;18458:18;;;18451:42;18510:18;;9649:73:56::1;18198:336:64::0;9649:73:56::1;9769:16:::0;;9804:17;;9745:95:::1;::::0;9759:8;;9769:16:::1;::::0;;::::1;::::0;9787:15:::1;::::0;;;;::::1;::::0;::::1;::::0;9804:17;;::::1;::::0;9823:16;;;::::1;;9745:13;:95::i;:::-;9851:55;::::0;;;;9733:107;;-1:-1:-1;9866:10:56::1;::::0;9851:46:::1;::::0;:55:::1;::::0;9898:7;;9851:55:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;10141:16:56;;::::1;;10130:27:::0;::::1;::::0;-1:-1:-1;10109:17:56::1;::::0;-1:-1:-1;10118:7:56;10109:8:::1;:17::i;:::-;:48;;10101:73;;;::::0;::::1;::::0;;16695:2:64;10101:73:56::1;::::0;::::1;16677:21:64::0;16734:2;16714:18;;;16707:30;16773:14;16753:18;;;16746:42;16805:18;;10101:73:56::1;16493:336:64::0;10101:73:56::1;10188:37:::0;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;;::::0;;10239:39;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;;::::0;;10298:54:::1;10308:8:::0;10268:9;10329;10340:11;10298:9:::1;:54::i;:::-;10392:8;10367:55;;10383:7;10367:55;;10372:9;10367:55;;;10402:8;10412:9;10367:55;;;;;;20260:25:64::0;;;20316:2;20301:18;;20294:34;20248:2;20233:18;;20086:248;10367:55:56::1;;;;;;;;-1:-1:-1::0;;2137:1:56;2126:8;:12;-1:-1:-1;9169:1260:56;;;-1:-1:-1;;;;;;;9169:1260:56:o;2457:203:57:-;2551:10;2525:4;2541:21;;;:9;:21;;;;;;;;;:30;;;;;;;;;;:39;;;2595:37;2525:4;;2541:30;;2595:37;;;;2574:6;13953:25:64;;13941:2;13926:18;;13807:177;2595:37:57;;;;;;;;-1:-1:-1;2649:4:57;2457:203;;;;;:::o;3665:612::-;3806:6;;3786:4;;3806:6;;;;;3802:38;;;3814:26;3830:9;3814:15;:26::i;:::-;3854:17;;;;;;;:9;:17;;;;;;;;3872:10;3854:29;;;;;;;;3887:17;3854:50;3850:120;;3920:17;;;;;;;:9;:17;;;;;;;;3938:10;3920:29;;;;;;;:39;;3953:6;;3920:17;:39;;3953:6;;3920:39;:::i;:::-;;;;-1:-1:-1;;3850:120:57;3979:17;;;;;;;:9;:17;;;;;:27;;4000:6;;3979:17;:27;;4000:6;;3979:27;:::i;:::-;;;;-1:-1:-1;;4159:20:57;;;;;;;;:9;:20;;;;;;;:30;;;;;;4214:35;4159:20;;4214:35;;;;;;;4183:6;13953:25:64;;13941:2;13926:18;;13807:177;4214:35:57;;;;;;;;-1:-1:-1;4266:4:57;3665:612;;;;;:::o;5631:1082:56:-;5696:43;2059:8;;2071:1;2059:13;2051:32;;;;;;;19093:2:64;2051:32:56;;;19075:21:64;19132:1;19112:18;;;19105:29;19170:8;19150:18;;;19143:36;19196:18;;2051:32:56;18891:329:64;2051:32:56;2104:1;2093:8;:12;5752:17:::1;::::0;;5807:42:::1;::::0;;::::1;5818:4:::0;5807:42:::1;:::i;:::-;5751:98;;;;;;5859:26;5875:9;5859:15;:26::i;:::-;5895:13;5911:25;5916:6;5924:11;;5911:4;:25::i;:::-;5984:6;:13:::0;5895:41;;-1:-1:-1;5966:32:56::1;::::0;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;5966:32:56::1;;;;;;;;;;;;;;;;5947:51;;6009:28;6023:4;6030:6;6009:5;:28::i;:::-;6053:9;6048:659;6072:6;:13:::0;6068:17;::::1;6048:659;;;6106:16;6125:6;6132:1;6125:9;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;::::1;;6166:17:::0;;;:7:::1;:17:::0;;;;;;:25;6125:9;;-1:-1:-1;6166:25:56::1;;::::0;6233:20:::1;6238:5:::0;6166:25;6233:4:::1;:20::i;:::-;6205:49:::0;-1:-1:-1;6276:14:56::1;::::0;::::1;6268:35;;;::::0;::::1;::::0;;17036:2:64;6268:35:56::1;::::0;::::1;17018:21:64::0;17075:1;17055:18;;;17048:29;17113:10;17093:18;;;17086:38;17141:18;;6268:35:56::1;16834:331:64::0;6268:35:56::1;6424:17;::::0;::::1;;::::0;;;:7:::1;:17;::::0;;;;:38;;;;::::1;;::::0;;::::1;::::0;;::::1;::::0;::::1;;::::0;;;6490:54:::1;::::0;6424:17;;6490:54;::::1;6521:9:::0;6532:11;6490:9:::1;:54::i;:::-;6580:49;;;;;;;;6600:8;6580:49;;;;;;6618:9;6580:49;;;;::::0;6558:16:::1;6575:1;6558:19;;;;;;;;:::i;:::-;;;;;;:71;;;;6686:9;6648:48;;6653:10;6648:48;;;6665:8;6675:9;6648:48;;;;;;10440:42:64::0;10428:55;;;;10410:74;;10532:32;10520:45;10515:2;10500:18;;10493:73;10398:2;10383:18;;10236:336;6648:48:56::1;;;;;;;;6092:615;;;6087:3;;;;;:::i;:::-;;;;6048:659;;;-1:-1:-1::0;;2137:1:56;2126:8;:12;-1:-1:-1;5631:1082:56;;;-1:-1:-1;;;;5631:1082:56:o;15818:101::-;15885:7;15904:8;;;7880:1160;7945:17;2059:8;;2071:1;2059:13;2051:32;;;;;;;19093:2:64;2051:32:56;;;19075:21:64;19132:1;19112:18;;;19105:29;19170:8;19150:18;;;19143:36;19196:18;;2051:32:56;18891:329:64;2051:32:56;2104:1;2093:8;:12;7975:15:::1;::::0;;;;8067:94:::1;::::0;;::::1;8091:4:::0;8067:94:::1;:::i;:::-;7974:187;;;;;;;;;;8175:6;;;;;;;;;;;8171:38;;;8183:26;8199:9;8183:15;:26::i;:::-;8245:16;::::0;;::::1;8219:23;8245:16:::0;;;:7:::1;:16;::::0;;;;;8298:17;;::::1;::::0;;;;8351:16;;8346:36:::1;::::0;8351:16:::1;;1741:8;1748:1;1038:6;1741:8;:::i;8346:36::-;8334:8;:48;;8326:73;;;::::0;::::1;::::0;;18400:2:64;8326:73:56::1;::::0;::::1;18382:21:64::0;18439:2;18419:18;;;18412:30;18478:14;18458:18;;;18451:42;18510:18;;8326:73:56::1;18198:336:64::0;8326:73:56::1;8446:16:::0;;8481:17;;8422:95:::1;::::0;8436:8;;8446:16:::1;::::0;;::::1;::::0;8464:15:::1;::::0;;;;::::1;::::0;::::1;::::0;8481:17;;::::1;::::0;8500:16;;;::::1;;8422:13;:95::i;:::-;8752:16:::0;;8410:107;;-1:-1:-1;8752:16:56::1;;8741:27:::0;::::1;8720:17;8729:7:::0;8720:8:::1;:17::i;:::-;:48;;8712:73;;;::::0;::::1;::::0;;16695:2:64;8712:73:56::1;::::0;::::1;16677:21:64::0;16734:2;16714:18;;;16707:30;16773:14;16753:18;;;16746:42;16805:18;;8712:73:56::1;16493:336:64::0;8712:73:56::1;8799:37:::0;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;;::::0;;8850:39;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;;::::0;;8909:54:::1;8919:8:::0;8879:9;8940;8951:11;8909:9:::1;:54::i;:::-;9003:8;8978:55;;8994:7;8978:55;;8983:9;8978:55;;;9013:8;9023:9;8978:55;;;;;;20260:25:64::0;;;20316:2;20301:18;;20294:34;20248:2;20233:18;;20086:248;8978:55:56::1;;;;;;;;-1:-1:-1::0;;2137:1:56;2126:8;:12;-1:-1:-1;7880:1160:56;;;-1:-1:-1;;;;;;7880:1160:56:o;15277:108::-;15328:23;15372:6;15363:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15277:108;:::o;4392:1113::-;4457:17;2059:8;;2071:1;2059:13;2051:32;;;;;;;19093:2:64;2051:32:56;;;19075:21:64;19132:1;19112:18;;;19105:29;19170:8;19150:18;;;19143:36;19196:18;;2051:32:56;18891:329:64;2051:32:56;2104:1;2093:8;:12;4487:17:::1;::::0;4524:36:::1;::::0;;::::1;4535:4:::0;4524:36:::1;:::i;:::-;4486:74;;;;4570:26;4586:9;4570:15;:26::i;:::-;4606:13;4630:25;4635:6;4643:11;;4630:4;:25::i;:::-;4606:50;;4672:9;4667:770;4691:6;:13:::0;4687:17;::::1;4667:770;;;4725:15;4743:6;4750:1;4743:9;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;::::1;;4784:16:::0;;;:7:::1;:16:::0;;;;;;:24;4743:9;;-1:-1:-1;4784:24:56::1;;::::0;4911:12;:52:::1;;4958:5;4911:52;;;4934:20;4939:5;4934:20;;4946:7;4934:20;;:4;:20::i;:::-;4892:71:::0;-1:-1:-1;1450:13:56::1;1457:6;1038;1450:13;:::i;:::-;4985:8;:23;;;;4977:47;;;::::0;::::1;::::0;;17372:2:64;4977:47:56::1;::::0;::::1;17354:21:64::0;17411:2;17391:18;;;17384:30;17450:13;17430:18;;;17423:41;17481:18;;4977:47:56::1;17170:335:64::0;4977:47:56::1;5269:7;5258:8;:18;5237:39;;:17;5246:7;5237:8;:17::i;:::-;:39;;5229:64;;;::::0;::::1;::::0;;16695:2:64;5229:64:56::1;::::0;::::1;16677:21:64::0;16734:2;16714:18;;;16707:30;16773:14;16753:18;;;16746:42;16805:18;;5229:64:56::1;16493:336:64::0;5229:64:56::1;5311:16;::::0;;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;;:36;;;;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;;::::0;;;5380:46;;10410:74:64;;;10520:45;;10500:18;;;10493:73;5380:46:56;;::::1;::::0;5385:10:::1;::::0;5380:46:::1;::::0;10383:18:64;5380:46:56::1;;;;;;;4711:726;;;4706:3;;;;;:::i;:::-;;;;4667:770;;;;5446:24;5452:9;5463:6;5446:5;:24::i;:::-;-1:-1:-1::0;2137:1:56;2126:8;:12;5492:6;4392:1113;-1:-1:-1;;;;4392:1113:56:o;15925:526::-;16059:6;:13;15979:25;;;;16059:13;16093:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16093:21:56;;16082:32;;16148:6;16134:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16134:21:56;;16124:31;;16274:9;16269:166;16293:6;16289:1;:10;16269:166;;;16338:7;:18;16346:6;16353:1;16346:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;16338:18;;;;;;;;;;;;:26;16324:11;;16338:26;;;;;16324:8;;16333:1;;16324:11;;;;;;:::i;:::-;;;;;;:40;;;;;16395:7;:18;16403:6;16410:1;16403:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;16395:18;;;;;;;;;;;;:25;16382:10;;16395:25;;;;;;;16382:10;;16390:1;;16382:10;;;;;;:::i;:::-;:38;;;;:10;;;;;;;;;;;:38;16301:3;;16269:166;;;;16032:419;15925:526;;:::o;10487:206::-;10581:55;;;;;;;;;;;;;;;;;;10604:31;10581:55;;;10555:82;;10531:20;;10555:25;:14;:25;;:82;;10581:55;10555:82;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10528:109;;;10667:7;10656:30;;;;;;;;;;;;:::i;:::-;10647:6;:39;-1:-1:-1;10487:206:56:o;15391:421::-;15464:17;;;;;;15615:76;;;;15639:4;15615:76;:::i;:::-;15493:198;;;;;;;;;;15713:92;15727:13;15742:14;15758:13;15773:15;15790:14;15713:13;:92::i;:::-;15701:104;15391:421;-1:-1:-1;;;;;;;;15391:421:56:o;2900:441:57:-;2991:6;;2971:4;;2991:6;;;;;2987:38;;;2999:26;3015:9;2999:15;:26::i;:::-;3045:10;3035:21;;;;:9;:21;;;;;:31;;3060:6;;3035:21;:31;;3060:6;;3035:31;:::i;:::-;;;;-1:-1:-1;;3219:20:57;;;;;;;:9;:20;;;;;;;:30;;;;;;3274:39;3283:10;;3274:39;;;;3243:6;13953:25:64;;13941:2;13926:18;;13807:177;6888:864:56;6959:17;2059:8;;2071:1;2059:13;2051:32;;;;;;;19093:2:64;2051:32:56;;;19075:21:64;19132:1;19112:18;;;19105:29;19170:8;19150:18;;;19143:36;19196:18;;2051:32:56;18891:329:64;2051:32:56;2104:1;2093:8;:12;6989:16:::1;::::0;;;7062:51:::1;::::0;;::::1;7073:4:::0;7062:51:::1;:::i;:::-;6988:125;;;;;;;;7123:26;7139:9;7123:15;:26::i;:::-;7186:17;::::0;::::1;7159:24;7186:17:::0;;;:7:::1;:17;::::0;;;;7255;;7292:11:::1;::::0;7305::::1;::::0;7226:108:::1;::::0;7255:17:::1;::::0;::::1;::::0;7274:16;;;::::1;;::::0;;::::1;::::0;7305:11:::1;7318:6:::0;7326:7:::1;7226:28;:108::i;:::-;7371:17:::0;;7214:120;;-1:-1:-1;7366:38:56::1;::::0;7371:17:::1;;1798:8;1805:1;1038:6;1798:8;:::i;:::-;1797:14;::::0;1810:1:::1;1797:14;:::i;7366:38::-;7353:9;:51;;7345:77;;;::::0;::::1;::::0;;16353:2:64;7345:77:56::1;::::0;::::1;16335:21:64::0;16392:2;16372:18;;;16365:30;16431:15;16411:18;;;16404:43;16464:18;;7345:77:56::1;16151:337:64::0;7345:77:56::1;7531:39:::0;;::::1;::::0;;::::1;::::0;;::::1;;::::0;;;::::1;;::::0;;7590:28:::1;7604:4;7611:6:::0;7590:5:::1;:28::i;:::-;7628:54;7638:8;7648:9;7659;7670:11;7628:9;:54::i;:::-;7697:48;::::0;;::::1;10769:55:64::0;;;10751:74;;10856:2;10841:18;;10834:34;;;7697:48:56;::::1;::::0;7702:10:::1;::::0;7697:48:::1;::::0;10724:18:64;7697:48:56::1;;;;;;;-1:-1:-1::0;;2137:1:56;2126:8;:12;-1:-1:-1;6888:864:56;;;-1:-1:-1;;;;6888:864:56:o;4757:794:57:-;4971:15;4959:8;:27;;4951:63;;;;;;;18741:2:64;4951:63:57;;;18723:21:64;18780:2;18760:18;;;18753:30;18819:25;18799:18;;;18792:53;18862:18;;4951:63:57;18539:347:64;4951:63:57;5222:13;;;5024:14;5222:13;;;:6;:13;;;;;:15;;5126:16;;1170:95;;5198:5;;5205:7;;5214:6;;5024:14;5222:15;;;:::i;:::-;;;;-1:-1:-1;5170:78:57;;;;;;14276:25:64;;;;14320:42;14398:15;;;14378:18;;;14371:43;14450:15;;;;14430:18;;;14423:43;14482:18;;;14475:34;14525:19;;;14518:35;14569:19;;;14562:35;;;14248:19;;5170:78:57;;;;;;;;;;;;5160:89;;;;;;5064:199;;;;;;;;8437:66:64;8425:79;;8529:1;8520:11;;8513:27;;;;8565:2;8556:12;;8549:28;8602:2;8593:12;;8167:444;5064:199:57;;;;;;;;;;;;;;5041:232;;5064:199;5041:232;;;;5283:24;5310:26;;;;;;;;;14835:25:64;;;14908:4;14896:17;;14876:18;;;14869:45;;;;14930:18;;;14923:34;;;14973:18;;;14966:34;;;5041:232:57;;-1:-1:-1;5283:24:57;5310:26;;14807:19:64;;5310:26:57;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5310:26:57;;;;;;-1:-1:-1;;5354:30:57;;;;;;;:59;;;5408:5;5388:25;;:16;:25;;;5354:59;5346:96;;;;;;;15659:2:64;5346:96:57;;;15641:21:64;15698:2;15678:18;;;15671:30;15737:26;15717:18;;;15710:54;15781:18;;5346:96:57;15457:348:64;5346:96:57;5452:27;;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:45;;;5512:32;13953:25:64;;;5452:36:57;;5512:32;;;;;13926:18:64;5512:32:57;;;;;;;4941:610;;4757:794;;;;;;;:::o;1910:238::-;2039:16;:36;;;;;;;;;;;;;;;2085:20;;;;;;;;;;;;;;;2115:26;;;;2137:4;2128:13;;;;;;;;2115:26;1910:238;;;:::o;6330:355::-;6399:25;6428:16;;;6540:8;6469:89;;;6428:16;6540:8;;;6469:89;;;9082:34:64;9152:15;;;9132:18;;;;9125:43;;;;6469:89:57;;;;;;;;;;8994:18:64;;;;6469:89:57;;;;;;;;;6492:46;6469:89;;;6428:140;;:16;;;;;:140;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6396:172;;;6578:16;6608:12;6597:32;;;;;;;;;;;;:::i;:::-;6578:51;;6647:11;6639:39;;;;;;;19427:2:64;6639:39:57;;;19409:21:64;19466:2;19446:18;;;19439:30;19505:17;19485:18;;;19478:45;19540:18;;6639:39:57;19225:339:64;14363:168:56;14422:10;;14457:5;14461:1;14457;:5;:::i;:::-;14444:18;-1:-1:-1;14472:10:56;14491:8;14498:1;1038:6;14491:8;:::i;:::-;14485:15;;:2;:15;:::i;:::-;14472:28;-1:-1:-1;14515:9:56;1038:6;14472:28;14515:9;:::i;:::-;14510:14;14363:168;-1:-1:-1;;;;;14363:168:56:o;10965:695::-;11176:17;11205:19;11227:35;11232:13;11247:14;11227:4;:35::i;:::-;11205:57;;11376:18;11397:37;11402:13;11425:7;1038:6;11418:14;11397:4;:37::i;:::-;11376:58;;11448:9;11460:49;11465:14;11498:10;11481:14;:27;11460:4;:49::i;:::-;11448:61;;11523:9;11535:24;11544:1;11547:11;11535:8;:24::i;:::-;11523:36;-1:-1:-1;1038:6:56;11585:8;;;11619:24;11624:15;11585:8;11619:4;:24::i;:::-;11607:36;10965:695;-1:-1:-1;;;;;;;;;;;10965:695:56:o;10699:260::-;10823:81;;;10806:16;9100:15:64;;;10823:81:56;;;9082:34:64;10898:4:56;9132:18:64;;;;9125:43;;;;10823:81:56;;;;;;;;;;8994:18:64;;;;10823:81:56;;;;;;;;;10846:35;10823:81;;;10806:99;;-1:-1:-1;;;;10806:5:56;:16;;;;:99;;10823:81;10806:99;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10782:123;;;10936:4;10925:27;;;;;;;;;;;;:::i;:::-;10915:37;10699:260;-1:-1:-1;;;10699:260:56:o;14708:563::-;14849:11;14845:420;;;14906:95;;;14895:10;9523:15:64;;;14906:95:56;;;9505:34:64;14980:4:56;9555:18:64;;;9548:43;9627:15;;;9607:18;;;9600:43;-1:-1:-1;9659:18:64;;;9652:45;;;9713:19;;;;9706:35;;;14906:95:56;;;;;;;;;;9416:19:64;;;;14906:95:56;;;;;;;;;14929:34;14906:95;;;14895:107;;:5;:10;;;;:107;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14876:126;;;15024:7;15016:35;;;;;;;17712:2:64;15016:35:56;;;17694:21:64;17751:2;17731:18;;;17724:30;17790:17;17770:18;;;17763:45;17825:18;;15016:35:56;17510:339:64;15016:35:56;14862:200;14845:420;;;15112:92;;;15101:10;10062:15:64;;;15112:92:56;;;10044:34:64;15186:4:56;10094:18:64;;;10087:43;10166:15;;;10146:18;;;10139:43;10198:18;;;;10191:34;;;15112:92:56;;;;;;;;;;9955:19:64;;;;15112:92:56;;;;;;;;;15135:34;15112:92;;;15101:104;;-1:-1:-1;;15101:5:56;:10;;:104;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15082:123;;;15227:7;15219:35;;;;;;;18056:2:64;15219:35:56;;;18038:21:64;18095:2;18075:18;;;18068:30;18134:17;18114:18;;;18107:45;18169:18;;15219:35:56;17854:339:64;15219:35:56;15068:197;14845:420;14708:563;;;;:::o;14537:165::-;14596:10;;14631:8;1038:6;14631:1;:8;:::i;:::-;14618:21;-1:-1:-1;14649:10:56;14668:5;14672:1;14668;:5;:::i;:::-;14662:12;;:2;:12;:::i;:::-;14649:25;-1:-1:-1;14689:6:56;14694:1;14649:25;14689:6;:::i;5907:332:57:-;5973:17;;;;;;;:9;:17;;;;;:27;;5994:6;;5973:17;:27;;5994:6;;5973:27;:::i;:::-;;;;-1:-1:-1;;6150:11:57;:21;;;;;;;6196:36;;13953:25:64;;;-1:-1:-1;;6196:36:57;;;;;;13941:2:64;13926:18;6196:36:57;;;;;;;;5907:332;;:::o;5557:344::-;5641:6;5626:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;5800:20:57;;;;;;;:9;:20;;;;;;;;:30;;;;;;5855:39;13953:25:64;;;5855:39:57;;13926:18:64;5855:39:57;13807:177:64;12146:814:56;12388:17;12417:24;12444:34;12449:14;12465:12;12444:4;:34::i;:::-;12417:61;-1:-1:-1;12488:21:56;12512;12527:6;12512:12;:21;:::i;:::-;12488:45;;12543:17;12563:33;12568:13;12583:12;12563:4;:33::i;:::-;12543:53;;12606:21;12630:45;12635:9;12646:28;1038:6;12657:16;12646:4;:28::i;:::-;12630:4;:45::i;:::-;12606:69;;12685:21;12709:36;12714:13;12729:15;12709:4;:36::i;:::-;12685:60;-1:-1:-1;12755:35:56;12793:31;12685:60;12793:15;:31;:::i;:::-;12755:69;-1:-1:-1;12834:11:56;12876:8;12849:23;12856:16;1038:6;12849:23;:::i;:::-;12848:36;;;;:::i;:::-;12834:50;-1:-1:-1;12906:47:56;12911:27;12941:10;12834:50;1038:6;12941:10;:::i;12906:47::-;12894:59;12146:814;-1:-1:-1;;;;;;;;;;;;;;12146:814:56:o;11666:474::-;11734:14;11784:4;1571:1;11768:20;;:44;;;;-1:-1:-1;1632:1:56;1620:8;1038:6;1620:1;:8;:::i;:::-;1619:14;;;;:::i;:::-;11792:4;:20;;11768:44;11760:69;;;;;;;16012:2:64;11760:69:56;;;15994:21:64;16051:2;16031:18;;;16024:30;16090:14;16070:18;;;16063:42;16122:18;;11760:69:56;15810:336:64;11760:69:56;11840:13;1038:6;11857:10;1038:6;11857:3;:10;:::i;:::-;11856:19;;;;:::i;:::-;11840:35;-1:-1:-1;11885:14:56;11902:11;11840:35;11902:3;:11;:::i;:::-;11885:28;-1:-1:-1;11923:16:56;11942:24;11947:4;11953:12;1038:6;11953:5;:12;:::i;11942:24::-;11923:43;-1:-1:-1;11981:11:56;11977:34;;12003:8;11994:17;;11977:34;12022:21;12046:39;12057:4;12063:6;1681:13;1688:6;1038;1681:13;:::i;:::-;12046:10;:39::i;:::-;12022:63;;12104:29;12109:8;12119:13;12104:4;:29::i;:::-;12095:38;11666:474;-1:-1:-1;;;;;;;11666:474:56:o;12966:215::-;13025:14;13060:5;13064:1;13060;:5;:::i;:::-;:21;;1038:6;13060:21;;;13073:1;13060:21;13051:30;-1:-1:-1;13096:6:56;13101:1;13096:6;;:::i;:::-;;;13091:38;13104:6;;13091:38;;13124:5;13128:1;;13124:5;:::i;:::-;13120:9;-1:-1:-1;13112:6:56;13117:1;13112:6;;:::i;:::-;;;13091:38;;;13143:5;13147:1;13143;:5;:::i;:::-;:10;13139:35;;13164:10;13173:1;13164:6;:10;:::i;13187:791::-;13306:11;13341:3;13306:11;;13379:20;13388:4;1038:6;13379:8;:20::i;:::-;1038:6;;-1:-1:-1;13354:45:56;;-1:-1:-1;13354:45:56;-1:-1:-1;1038:6:56;13409:12;13499:1;13482:490;13510:9;13502:4;:17;13482:490;;13540:12;13555:8;1038:6;13555:1;:8;:::i;:::-;13540:23;-1:-1:-1;13578:9:56;;13602:26;13611:1;13615:11;1038:6;13540:23;13615:11;:::i;:::-;13602:8;:26::i;:::-;13577:51;;;;13649:22;13654:4;13660:10;13665:1;13668;13660:4;:10::i;13649:22::-;13642:29;;13692:16;13697:4;13703;13692;:16::i;:::-;13685:23;-1:-1:-1;13726:9:56;13722:20;;13737:5;;;;;13722:20;13760:4;13756:30;;;13777:9;;;13756:30;13804:4;13800:30;;;13821:9;;;13800:30;13848:8;13844:118;;;13882:10;13888:4;13882:3;:10;:::i;:::-;13876:16;;13844:118;;;13937:10;13943:4;13937:3;:10;:::i;:::-;13931:16;;13844:118;13526:446;;;13521:3;;;;;:::i;:::-;;;;13482:490;;;;13319:659;;;;;13187:791;;;;;:::o;13984:373::-;14047:18;14067:9;14197:1;14192;:6;14188:153;;-1:-1:-1;;14240:5:56;;;14247;14188:153;;;-1:-1:-1;;14314:5:56;;;14321:4;14188:153;13984:373;;;;;:::o;14:247:64:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:758::-;382:6;390;398;406;414;467:3;455:9;446:7;442:23;438:33;435:53;;;484:1;481;474:12;435:53;523:9;510:23;542:31;567:5;542:31;:::i;:::-;592:5;-1:-1:-1;649:2:64;634:18;;621:32;662:33;621:32;662:33;:::i;:::-;714:7;-1:-1:-1;773:2:64;758:18;;745:32;786:33;745:32;786:33;:::i;:::-;838:7;-1:-1:-1;897:2:64;882:18;;869:32;910:30;869:32;910:30;:::i;:::-;266:758;;;;-1:-1:-1;266:758:64;;1013:3;998:19;985:33;;266:758;-1:-1:-1;;266:758:64:o;1029:1627::-;1163:6;1171;1179;1187;1195;1203;1256:3;1244:9;1235:7;1231:23;1227:33;1224:53;;;1273:1;1270;1263:12;1224:53;1312:9;1299:23;1331:31;1356:5;1331:31;:::i;:::-;1381:5;-1:-1:-1;1438:2:64;1423:18;;1410:32;1451:33;1410:32;1451:33;:::i;:::-;1503:7;-1:-1:-1;1562:2:64;1547:18;;1534:32;1575:33;1534:32;1575:33;:::i;:::-;1627:7;-1:-1:-1;1686:2:64;1671:18;;1658:32;1699:30;1658:32;1699:30;:::i;:::-;1748:7;-1:-1:-1;1802:3:64;1787:19;;1774:33;;-1:-1:-1;1858:3:64;1843:19;;1830:33;1882:18;1912:14;;;1909:34;;;1939:1;1936;1929:12;1909:34;1977:6;1966:9;1962:22;1952:32;;2022:7;2015:4;2011:2;2007:13;2003:27;1993:55;;2044:1;2041;2034:12;1993:55;2080:2;2067:16;2102:2;2098;2095:10;2092:36;;;2108:18;;:::i;:::-;2242:2;2236:9;2304:4;2296:13;;2147:66;2292:22;;;2316:2;2288:31;2284:40;2272:53;;;2340:18;;;2360:22;;;2337:46;2334:72;;;2386:18;;:::i;:::-;2426:10;2422:2;2415:22;2461:2;2453:6;2446:18;2501:7;2496:2;2491;2487;2483:11;2479:20;2476:33;2473:53;;;2522:1;2519;2512:12;2473:53;2578:2;2573;2569;2565:11;2560:2;2552:6;2548:15;2535:46;2623:1;2618:2;2613;2605:6;2601:15;2597:24;2590:35;2644:6;2634:16;;;;;;;1029:1627;;;;;;;;:::o;2661:608::-;2760:6;2768;2776;2784;2837:3;2825:9;2816:7;2812:23;2808:33;2805:53;;;2854:1;2851;2844:12;2805:53;2893:9;2880:23;2912:31;2937:5;2912:31;:::i;:::-;2962:5;-1:-1:-1;3019:2:64;3004:18;;2991:32;3032:33;2991:32;3032:33;:::i;:::-;3084:7;-1:-1:-1;3143:2:64;3128:18;;3115:32;3156:30;3115:32;3156:30;:::i;:::-;2661:608;;;;-1:-1:-1;3205:7:64;;3259:2;3244:18;3231:32;;-1:-1:-1;;2661:608:64:o;3274:458::-;3356:6;3364;3372;3425:2;3413:9;3404:7;3400:23;3396:32;3393:52;;;3441:1;3438;3431:12;3393:52;3480:9;3467:23;3499:31;3524:5;3499:31;:::i;:::-;3549:5;-1:-1:-1;3606:2:64;3591:18;;3578:32;3619:30;3578:32;3619:30;:::i;:::-;3274:458;;3668:7;;-1:-1:-1;;;3722:2:64;3707:18;;;;3694:32;;3274:458::o;3737:323::-;3813:6;3821;3874:2;3862:9;3853:7;3849:23;3845:32;3842:52;;;3890:1;3887;3880:12;3842:52;3929:9;3916:23;3948:31;3973:5;3948:31;:::i;:::-;3998:5;4050:2;4035:18;;;;4022:32;;-1:-1:-1;;;3737:323:64:o;4065:388::-;4133:6;4141;4194:2;4182:9;4173:7;4169:23;4165:32;4162:52;;;4210:1;4207;4200:12;4162:52;4249:9;4236:23;4268:31;4293:5;4268:31;:::i;:::-;4318:5;-1:-1:-1;4375:2:64;4360:18;;4347:32;4388:33;4347:32;4388:33;:::i;:::-;4440:7;4430:17;;;4065:388;;;;;:::o;4458:456::-;4535:6;4543;4551;4604:2;4592:9;4583:7;4579:23;4575:32;4572:52;;;4620:1;4617;4610:12;4572:52;4659:9;4646:23;4678:31;4703:5;4678:31;:::i;:::-;4728:5;-1:-1:-1;4785:2:64;4770:18;;4757:32;4798:33;4757:32;4798:33;:::i;4919:829::-;5030:6;5038;5046;5054;5062;5070;5078;5131:3;5119:9;5110:7;5106:23;5102:33;5099:53;;;5148:1;5145;5138:12;5099:53;5187:9;5174:23;5206:31;5231:5;5206:31;:::i;:::-;5256:5;-1:-1:-1;5313:2:64;5298:18;;5285:32;5326:33;5285:32;5326:33;:::i;:::-;5378:7;-1:-1:-1;5432:2:64;5417:18;;5404:32;;-1:-1:-1;5483:2:64;5468:18;;5455:32;;-1:-1:-1;5539:3:64;5524:19;;5511:33;5588:4;5575:18;;5563:31;;5553:59;;5608:1;5605;5598:12;5553:59;4919:829;;;;-1:-1:-1;4919:829:64;;;;5631:7;5685:3;5670:19;;5657:33;;-1:-1:-1;5737:3:64;5722:19;;;5709:33;;4919:829;-1:-1:-1;;4919:829:64:o;6073:245::-;6140:6;6193:2;6181:9;6172:7;6168:23;6164:32;6161:52;;;6209:1;6206;6199:12;6161:52;6241:9;6235:16;6260:28;6282:5;6260:28;:::i;6323:591::-;6393:6;6401;6454:2;6442:9;6433:7;6429:23;6425:32;6422:52;;;6470:1;6467;6460:12;6422:52;6510:9;6497:23;6539:18;6580:2;6572:6;6569:14;6566:34;;;6596:1;6593;6586:12;6566:34;6634:6;6623:9;6619:22;6609:32;;6679:7;6672:4;6668:2;6664:13;6660:27;6650:55;;6701:1;6698;6691:12;6650:55;6741:2;6728:16;6767:2;6759:6;6756:14;6753:34;;;6783:1;6780;6773:12;6753:34;6828:7;6823:2;6814:6;6810:2;6806:15;6802:24;6799:37;6796:57;;;6849:1;6846;6839:12;6796:57;6880:2;6872:11;;;;;6902:6;;-1:-1:-1;6323:591:64;;-1:-1:-1;;;;6323:591:64:o;6919:184::-;6989:6;7042:2;7030:9;7021:7;7017:23;7013:32;7010:52;;;7058:1;7055;7048:12;7010:52;-1:-1:-1;7081:16:64;;6919:184;-1:-1:-1;6919:184:64:o;7108:454::-;7203:6;7211;7219;7227;7235;7288:3;7276:9;7267:7;7263:23;7259:33;7256:53;;;7305:1;7302;7295:12;7256:53;-1:-1:-1;;7328:23:64;;;7398:2;7383:18;;7370:32;;-1:-1:-1;7449:2:64;7434:18;;7421:32;;7500:2;7485:18;;7472:32;;-1:-1:-1;7551:3:64;7536:19;7523:33;;-1:-1:-1;7108:454:64;-1:-1:-1;7108:454:64:o;7567:316::-;7608:3;7646:5;7640:12;7673:6;7668:3;7661:19;7689:63;7745:6;7738:4;7733:3;7729:14;7722:4;7715:5;7711:16;7689:63;:::i;:::-;7797:2;7785:15;7802:66;7781:88;7772:98;;;;7872:4;7768:109;;7567:316;-1:-1:-1;;7567:316:64:o;7888:274::-;8017:3;8055:6;8049:13;8071:53;8117:6;8112:3;8105:4;8097:6;8093:17;8071:53;:::i;:::-;8140:16;;;;;7888:274;-1:-1:-1;;7888:274:64:o;10879:681::-;11050:2;11102:21;;;11172:13;;11075:18;;;11194:22;;;11021:4;;11050:2;11273:15;;;;11247:2;11232:18;;;11021:4;11316:218;11330:6;11327:1;11324:13;11316:218;;;11395:13;;11410:42;11391:62;11379:75;;11509:15;;;;11474:12;;;;11352:1;11345:9;11316:218;;;-1:-1:-1;11551:3:64;;10879:681;-1:-1:-1;;;;;;10879:681:64:o;11565:845::-;11794:2;11846:21;;;11916:13;;11819:18;;;11938:22;;;11765:4;;11794:2;11979;;11997:18;;;;12038:15;;;11765:4;12081:303;12095:6;12092:1;12089:13;12081:303;;;12154:13;;12196:9;;12207:42;12192:58;12180:71;;12291:11;;12285:18;12271:12;;;12264:40;12324:12;;;;12359:15;;;;12117:1;12110:9;12081:303;;;-1:-1:-1;12401:3:64;;11565:845;-1:-1:-1;;;;;;;11565:845:64:o;12415:1195::-;12683:2;12695:21;;;12765:13;;12668:18;;;12787:22;;;12635:4;;12862;;12840:2;12825:18;;;12889:15;;;12635:4;12932:169;12946:6;12943:1;12940:13;12932:169;;;13007:13;;12995:26;;13041:12;;;;13076:15;;;;12968:1;12961:9;12932:169;;;-1:-1:-1;;;13137:19:64;;;13117:18;;;13110:47;13207:13;;13229:21;;;13305:15;;;;13268:12;;;13340:1;13350:232;13366:8;13361:3;13358:17;13350:232;;;13439:15;;13456:36;13435:58;13421:73;;13555:17;;;;13516:14;;;;13394:1;13385:11;13350:232;;;-1:-1:-1;13599:5:64;;12415:1195;-1:-1:-1;;;;;;;12415:1195:64:o;15011:217::-;15158:2;15147:9;15140:21;15121:4;15178:44;15218:2;15207:9;15203:18;15195:6;15178:44;:::i;20528:128::-;20568:3;20599:1;20595:6;20592:1;20589:13;20586:39;;;20605:18;;:::i;:::-;-1:-1:-1;20641:9:64;;20528:128::o;20661:120::-;20701:1;20727;20717:35;;20732:18;;:::i;:::-;-1:-1:-1;20766:9:64;;20661:120::o;20786:228::-;20826:7;20952:1;20884:66;20880:74;20877:1;20874:81;20869:1;20862:9;20855:17;20851:105;20848:131;;;20959:18;;:::i;:::-;-1:-1:-1;20999:9:64;;20786:228::o;21019:125::-;21059:4;21087:1;21084;21081:8;21078:34;;;21092:18;;:::i;:::-;-1:-1:-1;21129:9:64;;21019:125::o;21149:258::-;21221:1;21231:113;21245:6;21242:1;21239:13;21231:113;;;21321:11;;;21315:18;21302:11;;;21295:39;21267:2;21260:10;21231:113;;;21362:6;21359:1;21356:13;21353:48;;;-1:-1:-1;;21397:1:64;21379:16;;21372:27;21149:258::o;21412:195::-;21451:3;21482:66;21475:5;21472:77;21469:103;;;21552:18;;:::i;:::-;-1:-1:-1;21599:1:64;21588:13;;21412:195::o;21612:112::-;21644:1;21670;21660:35;;21675:18;;:::i;:::-;-1:-1:-1;21709:9:64;;21612:112::o;21729:184::-;21781:77;21778:1;21771:88;21878:4;21875:1;21868:15;21902:4;21899:1;21892:15;21918:184;21970:77;21967:1;21960:88;22067:4;22064:1;22057:15;22091:4;22088:1;22081:15;22107:184;22159:77;22156:1;22149:88;22256:4;22253:1;22246:15;22280:4;22277:1;22270:15;22296:184;22348:77;22345:1;22338:88;22445:4;22442:1;22435:15;22469:4;22466:1;22459:15;22485:154;22571:42;22564:5;22560:54;22553:5;22550:65;22540:93;;22629:1;22626;22619:12;22540:93;22485:154;:::o;22644:118::-;22730:5;22723:13;22716:21;22709:5;22706:32;22696:60;;22752:1;22749;22742:12"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "2655000",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "DOMAIN_SEPARATOR()": "infinite",
                "PERMIT_TYPEHASH()": "230",
                "allowance(address,address)": "infinite",
                "approve(address,uint256)": "24561",
                "balanceOf(address)": "2580",
                "barFee()": "2373",
                "barFeeTo()": "infinite",
                "bento()": "infinite",
                "burn(bytes)": "infinite",
                "burnSingle(bytes)": "infinite",
                "decimals()": "272",
                "flashSwap(bytes)": "infinite",
                "getAmountIn(bytes)": "444",
                "getAmountOut(bytes)": "infinite",
                "getAssets()": "infinite",
                "getReservesAndWeights()": "infinite",
                "level2()": "2388",
                "masterDeployer()": "infinite",
                "mint(bytes)": "infinite",
                "name()": "infinite",
                "nonces(address)": "2535",
                "operator()": "2424",
                "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "infinite",
                "poolIdentifier()": "229",
                "records(address)": "2678",
                "swap(bytes)": "infinite",
                "swapFee()": "infinite",
                "symbol()": "infinite",
                "totalSupply()": "2330",
                "transfer(address,uint256)": "infinite",
                "transferFrom(address,address,uint256)": "infinite",
                "updateBarFee()": "infinite",
                "whiteListManager()": "2403"
              },
              "internal": {
                "_balance(address)": "infinite",
                "_compute(uint256,uint256)": "infinite",
                "_computeSingleOutGivenPoolIn(uint256,uint256,uint256,uint256,uint256,uint256)": "infinite",
                "_div(uint256,uint256)": "infinite",
                "_getAmountOut(uint256,uint256,uint256,uint256,uint256)": "infinite",
                "_mul(uint256,uint256)": "infinite",
                "_pow(uint256,uint256)": "infinite",
                "_powApprox(uint256,uint256,uint256)": "infinite",
                "_subFlag(uint256,uint256)": "78",
                "_transfer(address,uint256,address,bool)": "infinite"
              }
            },
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "PERMIT_TYPEHASH()": "30adf81f",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "barFee()": "c14ad802",
              "barFeeTo()": "0c0a0cd2",
              "bento()": "4da31827",
              "burn(bytes)": "2a07b6c7",
              "burnSingle(bytes)": "af8c09bf",
              "decimals()": "313ce567",
              "flashSwap(bytes)": "053da1c8",
              "getAmountIn(bytes)": "499a3c50",
              "getAmountOut(bytes)": "a8f1f52e",
              "getAssets()": "67e4ac2c",
              "getReservesAndWeights()": "8ae45441",
              "level2()": "bc3377d9",
              "masterDeployer()": "cf58879a",
              "mint(bytes)": "7ba0e2e7",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "operator()": "570ca735",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "poolIdentifier()": "a69840a8",
              "records(address)": "469e9067",
              "swap(bytes)": "627dd56a",
              "swapFee()": "54cf2aeb",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "updateBarFee()": "92bc3219",
              "whiteListManager()": "25a93264"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_deployData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_masterDeployer\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"barFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"barFeeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bento\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burn\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IPool.TokenAmount[]\",\"name\":\"withdrawnAmounts\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"burnSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"flashSwap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAssets\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReservesAndWeights\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"reserves\",\"type\":\"uint256[]\"},{\"internalType\":\"uint136[]\",\"name\":\"weights\",\"type\":\"uint136[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"level2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterDeployer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolIdentifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"records\",\"outputs\":[{\"internalType\":\"uint120\",\"name\":\"reserve\",\"type\":\"uint120\"},{\"internalType\":\"uint136\",\"name\":\"weight\",\"type\":\"uint136\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateBarFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"whiteListManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"The reserves are stored as bento shares.      The curve is applied to shares as well. This pool does not care about the underlying amounts.\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"params\":{\"amount\":\"The maximum collective `amount` that `spender` can pull.\",\"spender\":\"Address of the party that can pull tokens from `msg.sender`'s account.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"burn(bytes)\":{\"details\":\"Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\"},\"burnSingle(bytes)\":{\"details\":\"Burns LP tokens sent to this contract and swaps one of the output tokens for another - i.e., the user gets a single token out by burning LP tokens.\"},\"flashSwap(bytes)\":{\"details\":\"Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage.\"},\"getAmountOut(bytes)\":{\"details\":\"The pool does not need to include a trade simulator directly in itself - it can use a library.\",\"params\":{\"data\":\"ABI-encoded params that the pool requires.\"},\"returns\":{\"amountOut\":\"The amount of output tokens that will be sent to the user if the trade is executed.\"}},\"getAssets()\":{\"returns\":{\"assets\":\"An array of tokens supported by the pool.\"}},\"mint(bytes)\":{\"details\":\"Mints LP tokens - should be called via the router after transferring `bento` tokens. The router must ensure that sufficient LP tokens are minted by using the return value.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"amount\":\"The number of tokens that are approved (2^256-1 means infinite).\",\"deadline\":\"The time at which to expire the signature.\",\"owner\":\"The address to approve from.\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"spender\":\"The address to be approved.\",\"v\":\"The recovery byte of the signature.\"}},\"swap(bytes)\":{\"details\":\"Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\"},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The token `amount` to move.\",\"recipient\":\"The address to move tokens to.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The token `amount` to move.\",\"recipient\":\"The address to move tokens to.\",\"sender\":\"Address to pull tokens `from`.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"updateBarFee()\":{\"details\":\"Updates `barFee` for Trident protocol.\"}},\"stateVariables\":{\"poolIdentifier\":{\"return\":\"A unique identifier for the pool type.\",\"returns\":{\"_0\":\"A unique identifier for the pool type.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"The EIP-712 typehash for this contract's domain.\"},\"PERMIT_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for this contract's {permit} struct.\"},\"allowance(address,address)\":{\"notice\":\"owner -> spender -> allowance mapping.\"},\"approve(address,uint256)\":{\"notice\":\"Approves `amount` from `msg.sender` to be spent by `spender`.\"},\"balanceOf(address)\":{\"notice\":\"owner -> balance mapping.\"},\"getAmountOut(bytes)\":{\"notice\":\"Simulates a trade and returns the expected output.\"},\"nonces(address)\":{\"notice\":\"owner -> nonce mapping used in {permit}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Triggers an approval from `owner` to `spender`.\"},\"transfer(address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `msg.sender` to `recipient`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\"}},\"notice\":\"Trident exchange franchised pool template with constant mean formula for swapping among an array of ERC-20 tokens.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/franchised/FranchisedIndexPool.sol\":\"FranchisedIndexPool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentCallee.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool callback interface.\\ninterface ITridentCallee {\\n    function tridentSwapCallback(bytes calldata data) external;\\n\\n    function tridentMintCallback(bytes calldata data) external;\\n}\\n\",\"keccak256\":\"0x256e838362a3064201b37b3b7c08bc1421b173a6fea633176123f0b827b868c9\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IWhiteListManager.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident franchised pool whitelist manager interface.\\ninterface IWhiteListManager {\\n    function whitelistedAccounts(address operator, address account) external returns (bool);\\n}\\n\",\"keccak256\":\"0x8de295afb9c76132947e2fd4f120bc437ee2c6f41fda1db2bcf6074b977d6df8\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/franchised/FranchisedIndexPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../../interfaces/IBentoBoxMinimal.sol\\\";\\nimport \\\"../../interfaces/IMasterDeployer.sol\\\";\\nimport \\\"../../interfaces/IPool.sol\\\";\\nimport \\\"../../interfaces/ITridentCallee.sol\\\";\\nimport \\\"./TridentFranchisedERC20.sol\\\";\\n\\n/// @notice Trident exchange franchised pool template with constant mean formula for swapping among an array of ERC-20 tokens.\\n/// @dev The reserves are stored as bento shares.\\n///      The curve is applied to shares as well. This pool does not care about the underlying amounts.\\ncontract FranchisedIndexPool is IPool, TridentFranchisedERC20 {\\n    event Mint(address indexed sender, address tokenIn, uint256 amountIn, address indexed recipient);\\n    event Burn(address indexed sender, address tokenOut, uint256 amountOut, address indexed recipient);\\n\\n    uint256 public immutable swapFee;\\n\\n    address public immutable barFeeTo;\\n    address public immutable bento;\\n    address public immutable masterDeployer;\\n\\n    uint256 internal constant BASE = 10**18;\\n    uint256 internal constant MIN_TOKENS = 2;\\n    uint256 internal constant MAX_TOKENS = 8;\\n    uint256 internal constant MIN_FEE = BASE / 10**6;\\n    uint256 internal constant MAX_FEE = BASE / 10;\\n    uint256 internal constant MIN_WEIGHT = BASE;\\n    uint256 internal constant MAX_WEIGHT = BASE * 50;\\n    uint256 internal constant MAX_TOTAL_WEIGHT = BASE * 50;\\n    uint256 internal constant MIN_BALANCE = BASE / 10**12;\\n    uint256 internal constant INIT_POOL_SUPPLY = BASE * 100;\\n    uint256 internal constant MIN_POW_BASE = 1;\\n    uint256 internal constant MAX_POW_BASE = (2 * BASE) - 1;\\n    uint256 internal constant POW_PRECISION = BASE / 10**10;\\n    uint256 internal constant MAX_IN_RATIO = BASE / 2;\\n    uint256 internal constant MAX_OUT_RATIO = (BASE / 3) + 1;\\n\\n    uint136 internal totalWeight;\\n    address[] internal tokens;\\n\\n    uint256 public barFee;\\n\\n    bytes32 public constant override poolIdentifier = \\\"Trident:FranchisedIndex\\\";\\n\\n    uint256 internal unlocked;\\n    modifier lock() {\\n        require(unlocked == 1, \\\"LOCKED\\\");\\n        unlocked = 2;\\n        _;\\n        unlocked = 1;\\n    }\\n\\n    mapping(address => Record) public records;\\n    struct Record {\\n        uint120 reserve;\\n        uint136 weight;\\n    }\\n\\n    constructor(bytes memory _deployData, address _masterDeployer) {\\n        (\\n            address[] memory _tokens,\\n            uint136[] memory _weights,\\n            uint256 _swapFee,\\n            address _whiteListManager,\\n            address _operator,\\n            bool _level2\\n        ) = abi.decode(_deployData, (address[], uint136[], uint256, address, address, bool));\\n        // @dev Factory ensures that the tokens are sorted.\\n        require(_tokens.length == _weights.length, \\\"INVALID_ARRAYS\\\");\\n        require(MIN_FEE <= _swapFee && _swapFee <= MAX_FEE, \\\"INVALID_SWAP_FEE\\\");\\n        require(MIN_TOKENS <= _tokens.length && _tokens.length <= MAX_TOKENS, \\\"INVALID_TOKENS_LENGTH\\\");\\n\\n        TridentFranchisedERC20.initialize(_whiteListManager, _operator, _level2);\\n\\n        for (uint256 i = 0; i < _tokens.length; i++) {\\n            require(_tokens[i] != address(0), \\\"ZERO_ADDRESS\\\");\\n            require(MIN_WEIGHT <= _weights[i] && _weights[i] <= MAX_WEIGHT, \\\"INVALID_WEIGHT\\\");\\n            records[_tokens[i]] = Record({reserve: 0, weight: _weights[i]});\\n            tokens.push(_tokens[i]);\\n            totalWeight += _weights[i];\\n        }\\n\\n        require(totalWeight <= MAX_TOTAL_WEIGHT, \\\"MAX_TOTAL_WEIGHT\\\");\\n        // @dev This burns initial LP supply.\\n        _mint(address(0), INIT_POOL_SUPPLY);\\n\\n        (, bytes memory _barFee) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFee.selector));\\n        (, bytes memory _barFeeTo) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFeeTo.selector));\\n        (, bytes memory _bento) = _masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.bento.selector));\\n\\n        swapFee = _swapFee;\\n        barFee = abi.decode(_barFee, (uint256));\\n        barFeeTo = abi.decode(_barFeeTo, (address));\\n        bento = abi.decode(_bento, (address));\\n        masterDeployer = _masterDeployer;\\n        unlocked = 1;\\n    }\\n\\n    /// @dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\\n    /// The router must ensure that sufficient LP tokens are minted by using the return value.\\n    function mint(bytes calldata data) public override lock returns (uint256 liquidity) {\\n        (address recipient, uint256 toMint) = abi.decode(data, (address, uint256));\\n        _checkWhiteList(recipient);\\n        uint120 ratio = uint120(_div(toMint, totalSupply));\\n\\n        for (uint256 i = 0; i < tokens.length; i++) {\\n            address tokenIn = tokens[i];\\n            uint120 reserve = records[tokenIn].reserve;\\n            // @dev If token balance is '0', initialize with `ratio`.\\n            uint120 amountIn = reserve != 0 ? uint120(_mul(ratio, reserve)) : ratio;\\n            require(amountIn >= MIN_BALANCE, \\\"MIN_BALANCE\\\");\\n            // @dev Check Trident router has sent `amountIn` for skim into pool.\\n            unchecked {\\n                // @dev This is safe from overflow - only logged amounts handled.\\n                require(_balance(tokenIn) >= amountIn + reserve, \\\"NOT_RECEIVED\\\");\\n                records[tokenIn].reserve += amountIn;\\n            }\\n            emit Mint(msg.sender, tokenIn, amountIn, recipient);\\n        }\\n        _mint(recipient, toMint);\\n        liquidity = toMint;\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens.\\n    function burn(bytes calldata data) public override lock returns (IPool.TokenAmount[] memory withdrawnAmounts) {\\n        (address recipient, bool unwrapBento, uint256 toBurn) = abi.decode(data, (address, bool, uint256));\\n        _checkWhiteList(recipient);\\n        uint256 ratio = _div(toBurn, totalSupply);\\n\\n        withdrawnAmounts = new TokenAmount[](tokens.length);\\n\\n        _burn(address(this), toBurn);\\n\\n        for (uint256 i = 0; i < tokens.length; i++) {\\n            address tokenOut = tokens[i];\\n            uint256 balance = records[tokenOut].reserve;\\n            uint120 amountOut = uint120(_mul(ratio, balance));\\n            require(amountOut != 0, \\\"ZERO_OUT\\\");\\n            // @dev This is safe from underflow - only logged amounts handled.\\n            unchecked {\\n                records[tokenOut].reserve -= amountOut;\\n            }\\n            _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n            withdrawnAmounts[i] = TokenAmount({token: tokenOut, amount: amountOut});\\n            emit Burn(msg.sender, tokenOut, amountOut, recipient);\\n        }\\n    }\\n\\n    /// @dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\\n    /// - i.e., the user gets a single token out by burning LP tokens.\\n    function burnSingle(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenOut, address recipient, bool unwrapBento, uint256 toBurn) = abi.decode(data, (address, address, bool, uint256));\\n        _checkWhiteList(recipient);\\n        Record storage outRecord = records[tokenOut];\\n\\n        amountOut = _computeSingleOutGivenPoolIn(outRecord.reserve, outRecord.weight, totalSupply, totalWeight, toBurn, swapFee);\\n\\n        require(amountOut <= _mul(outRecord.reserve, MAX_OUT_RATIO), \\\"MAX_OUT_RATIO\\\");\\n        // @dev This is safe from underflow - only logged amounts handled.\\n        unchecked {\\n            outRecord.reserve -= uint120(amountOut);\\n        }\\n        _burn(address(this), toBurn);\\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n        emit Burn(msg.sender, tokenOut, amountOut, recipient);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage.\\n    function swap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address tokenOut, address recipient, bool unwrapBento, uint256 amountIn) = abi.decode(\\n            data,\\n            (address, address, address, bool, uint256)\\n        );\\n        if (level2) _checkWhiteList(recipient);\\n        Record storage inRecord = records[tokenIn];\\n        Record storage outRecord = records[tokenOut];\\n\\n        require(amountIn <= _mul(inRecord.reserve, MAX_IN_RATIO), \\\"MAX_IN_RATIO\\\");\\n\\n        amountOut = _getAmountOut(amountIn, inRecord.reserve, inRecord.weight, outRecord.reserve, outRecord.weight);\\n        // @dev Check Trident router has sent `amountIn` for skim into pool.\\n        unchecked {\\n            // @dev This is safe from under/overflow - only logged amounts handled.\\n            require(_balance(tokenIn) >= amountIn + inRecord.reserve, \\\"NOT_RECEIVED\\\");\\n            inRecord.reserve += uint120(amountIn);\\n            outRecord.reserve -= uint120(amountOut);\\n        }\\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\\n    }\\n\\n    /// @dev Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage.\\n    function flashSwap(bytes calldata data) public override lock returns (uint256 amountOut) {\\n        (address tokenIn, address tokenOut, address recipient, bool unwrapBento, uint256 amountIn, bytes memory context) = abi.decode(\\n            data,\\n            (address, address, address, bool, uint256, bytes)\\n        );\\n        if (level2) _checkWhiteList(recipient);\\n        Record storage inRecord = records[tokenIn];\\n        Record storage outRecord = records[tokenOut];\\n\\n        require(amountIn <= _mul(inRecord.reserve, MAX_IN_RATIO), \\\"MAX_IN_RATIO\\\");\\n\\n        amountOut = _getAmountOut(amountIn, inRecord.reserve, inRecord.weight, outRecord.reserve, outRecord.weight);\\n\\n        ITridentCallee(msg.sender).tridentSwapCallback(context);\\n        // @dev Check Trident router has sent `amountIn` for skim into pool.\\n        unchecked {\\n            // @dev This is safe from under/overflow - only logged amounts handled.\\n            require(_balance(tokenIn) >= amountIn + inRecord.reserve, \\\"NOT_RECEIVED\\\");\\n            inRecord.reserve += uint120(amountIn);\\n            outRecord.reserve -= uint120(amountOut);\\n        }\\n        _transfer(tokenOut, amountOut, recipient, unwrapBento);\\n        emit Swap(recipient, tokenIn, tokenOut, amountIn, amountOut);\\n    }\\n\\n    /// @dev Updates `barFee` for Trident protocol.\\n    function updateBarFee() public {\\n        (, bytes memory _barFee) = masterDeployer.staticcall(abi.encodeWithSelector(IMasterDeployer.barFee.selector));\\n        barFee = abi.decode(_barFee, (uint256));\\n    }\\n\\n    function _balance(address token) internal view returns (uint256 balance) {\\n        (, bytes memory data) = bento.staticcall(abi.encodeWithSelector(IBentoBoxMinimal.balanceOf.selector, token, address(this)));\\n        balance = abi.decode(data, (uint256));\\n    }\\n\\n    function _getAmountOut(\\n        uint256 tokenInAmount,\\n        uint256 tokenInBalance,\\n        uint256 tokenInWeight,\\n        uint256 tokenOutBalance,\\n        uint256 tokenOutWeight\\n    ) internal view returns (uint256 amountOut) {\\n        uint256 weightRatio = _div(tokenInWeight, tokenOutWeight);\\n        // @dev This is safe from under/overflow - only logged amounts handled.\\n        unchecked {\\n            uint256 adjustedIn = _mul(tokenInAmount, (BASE - swapFee));\\n            uint256 a = _div(tokenInBalance, tokenInBalance + adjustedIn);\\n            uint256 b = _compute(a, weightRatio);\\n            uint256 c = BASE - b;\\n            amountOut = _mul(tokenOutBalance, c);\\n        }\\n    }\\n\\n    function _compute(uint256 base, uint256 exp) internal pure returns (uint256 output) {\\n        require(MIN_POW_BASE <= base && base <= MAX_POW_BASE, \\\"INVALID_BASE\\\");\\n\\n        uint256 whole = (exp / BASE) * BASE;\\n        uint256 remain = exp - whole;\\n        uint256 wholePow = _pow(base, whole / BASE);\\n\\n        if (remain == 0) output = wholePow;\\n\\n        uint256 partialResult = _powApprox(base, remain, POW_PRECISION);\\n        output = _mul(wholePow, partialResult);\\n    }\\n\\n    function _computeSingleOutGivenPoolIn(\\n        uint256 tokenOutBalance,\\n        uint256 tokenOutWeight,\\n        uint256 _totalSupply,\\n        uint256 _totalWeight,\\n        uint256 toBurn,\\n        uint256 _swapFee\\n    ) internal pure returns (uint256 amountOut) {\\n        uint256 normalizedWeight = _div(tokenOutWeight, _totalWeight);\\n        uint256 newPoolSupply = _totalSupply - toBurn;\\n        uint256 poolRatio = _div(newPoolSupply, _totalSupply);\\n        uint256 tokenOutRatio = _pow(poolRatio, _div(BASE, normalizedWeight));\\n        uint256 newBalanceOut = _mul(tokenOutRatio, tokenOutBalance);\\n        uint256 tokenAmountOutBeforeSwapFee = tokenOutBalance - newBalanceOut;\\n        uint256 zaz = (BASE - normalizedWeight) * _swapFee;\\n        amountOut = _mul(tokenAmountOutBeforeSwapFee, (BASE - zaz));\\n    }\\n\\n    function _pow(uint256 a, uint256 n) internal pure returns (uint256 output) {\\n        output = n % 2 != 0 ? a : BASE;\\n        for (n /= 2; n != 0; n /= 2) a = a * a;\\n        if (n % 2 != 0) output = output * a;\\n    }\\n\\n    function _powApprox(\\n        uint256 base,\\n        uint256 exp,\\n        uint256 precision\\n    ) internal pure returns (uint256 sum) {\\n        uint256 a = exp;\\n        (uint256 x, bool xneg) = _subFlag(base, BASE);\\n        uint256 term = BASE;\\n        sum = term;\\n        bool negative;\\n\\n        for (uint256 i = 1; term >= precision; i++) {\\n            uint256 bigK = i * BASE;\\n            (uint256 c, bool cneg) = _subFlag(a, (bigK - BASE));\\n            term = _mul(term, _mul(c, x));\\n            term = _div(term, bigK);\\n            if (term == 0) break;\\n            if (xneg) negative = !negative;\\n            if (cneg) negative = !negative;\\n            if (negative) {\\n                sum = sum - term;\\n            } else {\\n                sum = sum + term;\\n            }\\n        }\\n    }\\n\\n    function _subFlag(uint256 a, uint256 b) internal pure returns (uint256 difference, bool flag) {\\n        // @dev This is safe from underflow - if/else flow performs checks.\\n        unchecked {\\n            if (a >= b) {\\n                (difference, flag) = (a - b, false);\\n            } else {\\n                (difference, flag) = (b - a, true);\\n            }\\n        }\\n    }\\n\\n    function _mul(uint256 a, uint256 b) internal pure returns (uint256 c2) {\\n        uint256 c0 = a * b;\\n        uint256 c1 = c0 + (BASE / 2);\\n        c2 = c1 / BASE;\\n    }\\n\\n    function _div(uint256 a, uint256 b) internal pure returns (uint256 c2) {\\n        uint256 c0 = a * BASE;\\n        uint256 c1 = c0 + (b / 2);\\n        c2 = c1 / b;\\n    }\\n\\n    function _transfer(\\n        address token,\\n        uint256 shares,\\n        address to,\\n        bool unwrapBento\\n    ) internal {\\n        if (unwrapBento) {\\n            (bool success, ) = bento.call(abi.encodeWithSelector(IBentoBoxMinimal.withdraw.selector, token, address(this), to, 0, shares));\\n            require(success, \\\"WITHDRAW_FAILED\\\");\\n        } else {\\n            (bool success, ) = bento.call(abi.encodeWithSelector(IBentoBoxMinimal.transfer.selector, token, address(this), to, shares));\\n            require(success, \\\"TRANSFER_FAILED\\\");\\n        }\\n    }\\n\\n    function getAssets() public view override returns (address[] memory assets) {\\n        assets = tokens;\\n    }\\n\\n    function getAmountOut(bytes calldata data) public view override returns (uint256 amountOut) {\\n        (uint256 tokenInAmount, uint256 tokenInBalance, uint256 tokenInWeight, uint256 tokenOutBalance, uint256 tokenOutWeight) = abi\\n            .decode(data, (uint256, uint256, uint256, uint256, uint256));\\n        amountOut = _getAmountOut(tokenInAmount, tokenInBalance, tokenInWeight, tokenOutBalance, tokenOutWeight);\\n    }\\n\\n    function getAmountIn(bytes calldata) public pure override returns (uint256) {\\n        revert();\\n    }\\n\\n    function getReservesAndWeights() public view returns (uint256[] memory reserves, uint136[] memory weights) {\\n        uint256 length = tokens.length;\\n        reserves = new uint256[](length);\\n        weights = new uint136[](length);\\n        // @dev This is safe from overflow - `tokens` `length` is bound to '8'.\\n        unchecked {\\n            for (uint256 i = 0; i < length; i++) {\\n                reserves[i] = records[tokens[i]].reserve;\\n                weights[i] = records[tokens[i]].weight;\\n            }\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf362c78b9e9715287d72c6f9c781af8a5f3a70561de317acd1cf822e95c634e4\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/franchised/TridentFranchisedERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../../interfaces/IWhiteListManager.sol\\\";\\n\\n/// @notice Trident franchised pool ERC-20 with EIP-2612 extension.\\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol,\\n/// License-Identifier: AGPL-3.0-only.\\nabstract contract TridentFranchisedERC20 {\\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\\n    event Transfer(address indexed sender, address indexed recipient, uint256 amount);\\n\\n    string public constant name = \\\"Sushi Franchised LP Token\\\";\\n    string public constant symbol = \\\"SLP\\\";\\n    uint8 public constant decimals = 18;\\n\\n    address public whiteListManager;\\n    address public operator;\\n    bool public level2;\\n\\n    uint256 public totalSupply;\\n    /// @notice owner -> balance mapping.\\n    mapping(address => uint256) public balanceOf;\\n    /// @notice owner -> spender -> allowance mapping.\\n    mapping(address => mapping(address => uint256)) public allowance;\\n\\n    /// @notice The EIP-712 typehash for this contract's {permit} struct.\\n    bytes32 public constant PERMIT_TYPEHASH =\\n        keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n    /// @notice The EIP-712 typehash for this contract's domain.\\n    bytes32 public immutable DOMAIN_SEPARATOR;\\n    /// @notice owner -> nonce mapping used in {permit}.\\n    mapping(address => uint256) public nonces;\\n\\n    constructor() {\\n        DOMAIN_SEPARATOR = keccak256(\\n            abi.encode(\\n                keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"),\\n                keccak256(bytes(name)),\\n                keccak256(bytes(\\\"1\\\")),\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    /// @dev Initializes whitelist settings from pool.\\n    function initialize(\\n        address _whiteListManager,\\n        address _operator,\\n        bool _level2\\n    ) internal {\\n        whiteListManager = _whiteListManager;\\n        operator = _operator;\\n        if (_level2) level2 = true;\\n    }\\n\\n    /// @notice Approves `amount` from `msg.sender` to be spent by `spender`.\\n    /// @param spender Address of the party that can pull tokens from `msg.sender`'s account.\\n    /// @param amount The maximum collective `amount` that `spender` can pull.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function approve(address spender, uint256 amount) external returns (bool) {\\n        allowance[msg.sender][spender] = amount;\\n        emit Approval(msg.sender, spender, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `msg.sender` to `recipient`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transfer(address recipient, uint256 amount) external returns (bool) {\\n        if (level2) _checkWhiteList(recipient);\\n        balanceOf[msg.sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(msg.sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\\n    /// @param sender Address to pull tokens `from`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool) {\\n        if (level2) _checkWhiteList(recipient);\\n        if (allowance[sender][msg.sender] != type(uint256).max) {\\n            allowance[sender][msg.sender] -= amount;\\n        }\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Triggers an approval from `owner` to `spender`.\\n    /// @param owner The address to approve from.\\n    /// @param spender The address to be approved.\\n    /// @param amount The number of tokens that are approved (2^256-1 means infinite).\\n    /// @param deadline The time at which to expire the signature.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        require(deadline >= block.timestamp, \\\"PERMIT_DEADLINE_EXPIRED\\\");\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                \\\"\\\\x19\\\\x01\\\",\\n                DOMAIN_SEPARATOR,\\n                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))\\n            )\\n        );\\n        address recoveredAddress = ecrecover(digest, v, r, s);\\n        require(recoveredAddress != address(0) && recoveredAddress == owner, \\\"INVALID_PERMIT_SIGNATURE\\\");\\n        allowance[recoveredAddress][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    function _mint(address recipient, uint256 amount) internal {\\n        totalSupply += amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(address(0), recipient, amount);\\n    }\\n\\n    function _burn(address sender, uint256 amount) internal {\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from underflow - users won't ever\\n        // have a balance larger than `totalSupply`.\\n        unchecked {\\n            totalSupply -= amount;\\n        }\\n        emit Transfer(sender, address(0), amount);\\n    }\\n\\n    /// @dev Checks `whiteListManager` for pool `operator` and given user `account`.\\n    function _checkWhiteList(address account) internal view {\\n        (, bytes memory _whitelisted) = whiteListManager.staticcall(\\n            abi.encodeWithSelector(IWhiteListManager.whitelistedAccounts.selector, operator, account)\\n        );\\n        bool whitelisted = abi.decode(_whitelisted, (bool));\\n        require(whitelisted, \\\"NOT_WHITELISTED\\\");\\n    }\\n}\\n\",\"keccak256\":\"0x2d3db0ed7c3fb40367a4a3fa8fc5ba3dece956fb319b9963cfe5b63ea1ee3b06\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 23226,
                "contract": "contracts/pool/franchised/FranchisedIndexPool.sol:FranchisedIndexPool",
                "label": "whiteListManager",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 23228,
                "contract": "contracts/pool/franchised/FranchisedIndexPool.sol:FranchisedIndexPool",
                "label": "operator",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              },
              {
                "astId": 23230,
                "contract": "contracts/pool/franchised/FranchisedIndexPool.sol:FranchisedIndexPool",
                "label": "level2",
                "offset": 20,
                "slot": "1",
                "type": "t_bool"
              },
              {
                "astId": 23232,
                "contract": "contracts/pool/franchised/FranchisedIndexPool.sol:FranchisedIndexPool",
                "label": "totalSupply",
                "offset": 0,
                "slot": "2",
                "type": "t_uint256"
              },
              {
                "astId": 23237,
                "contract": "contracts/pool/franchised/FranchisedIndexPool.sol:FranchisedIndexPool",
                "label": "balanceOf",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 23244,
                "contract": "contracts/pool/franchised/FranchisedIndexPool.sol:FranchisedIndexPool",
                "label": "allowance",
                "offset": 0,
                "slot": "4",
                "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
              },
              {
                "astId": 23258,
                "contract": "contracts/pool/franchised/FranchisedIndexPool.sol:FranchisedIndexPool",
                "label": "nonces",
                "offset": 0,
                "slot": "5",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 21534,
                "contract": "contracts/pool/franchised/FranchisedIndexPool.sol:FranchisedIndexPool",
                "label": "totalWeight",
                "offset": 0,
                "slot": "6",
                "type": "t_uint136"
              },
              {
                "astId": 21537,
                "contract": "contracts/pool/franchised/FranchisedIndexPool.sol:FranchisedIndexPool",
                "label": "tokens",
                "offset": 0,
                "slot": "7",
                "type": "t_array(t_address)dyn_storage"
              },
              {
                "astId": 21539,
                "contract": "contracts/pool/franchised/FranchisedIndexPool.sol:FranchisedIndexPool",
                "label": "barFee",
                "offset": 0,
                "slot": "8",
                "type": "t_uint256"
              },
              {
                "astId": 21545,
                "contract": "contracts/pool/franchised/FranchisedIndexPool.sol:FranchisedIndexPool",
                "label": "unlocked",
                "offset": 0,
                "slot": "9",
                "type": "t_uint256"
              },
              {
                "astId": 21569,
                "contract": "contracts/pool/franchised/FranchisedIndexPool.sol:FranchisedIndexPool",
                "label": "records",
                "offset": 0,
                "slot": "10",
                "type": "t_mapping(t_address,t_struct(Record)21574_storage)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_array(t_address)dyn_storage": {
                "base": "t_address",
                "encoding": "dynamic_array",
                "label": "address[]",
                "numberOfBytes": "32"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_mapping(t_address,t_mapping(t_address,t_uint256))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_uint256)"
              },
              "t_mapping(t_address,t_struct(Record)21574_storage)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => struct FranchisedIndexPool.Record)",
                "numberOfBytes": "32",
                "value": "t_struct(Record)21574_storage"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_struct(Record)21574_storage": {
                "encoding": "inplace",
                "label": "struct FranchisedIndexPool.Record",
                "members": [
                  {
                    "astId": 21571,
                    "contract": "contracts/pool/franchised/FranchisedIndexPool.sol:FranchisedIndexPool",
                    "label": "reserve",
                    "offset": 0,
                    "slot": "0",
                    "type": "t_uint120"
                  },
                  {
                    "astId": 21573,
                    "contract": "contracts/pool/franchised/FranchisedIndexPool.sol:FranchisedIndexPool",
                    "label": "weight",
                    "offset": 15,
                    "slot": "0",
                    "type": "t_uint136"
                  }
                ],
                "numberOfBytes": "32"
              },
              "t_uint120": {
                "encoding": "inplace",
                "label": "uint120",
                "numberOfBytes": "15"
              },
              "t_uint136": {
                "encoding": "inplace",
                "label": "uint136",
                "numberOfBytes": "17"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "DOMAIN_SEPARATOR()": {
                "notice": "The EIP-712 typehash for this contract's domain."
              },
              "PERMIT_TYPEHASH()": {
                "notice": "The EIP-712 typehash for this contract's {permit} struct."
              },
              "allowance(address,address)": {
                "notice": "owner -> spender -> allowance mapping."
              },
              "approve(address,uint256)": {
                "notice": "Approves `amount` from `msg.sender` to be spent by `spender`."
              },
              "balanceOf(address)": {
                "notice": "owner -> balance mapping."
              },
              "getAmountOut(bytes)": {
                "notice": "Simulates a trade and returns the expected output."
              },
              "nonces(address)": {
                "notice": "owner -> nonce mapping used in {permit}."
              },
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Triggers an approval from `owner` to `spender`."
              },
              "transfer(address,uint256)": {
                "notice": "Transfers `amount` tokens from `msg.sender` to `recipient`."
              },
              "transferFrom(address,address,uint256)": {
                "notice": "Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`."
              }
            },
            "notice": "Trident exchange franchised pool template with constant mean formula for swapping among an array of ERC-20 tokens.",
            "version": 1
          }
        }
      },
      "contracts/pool/franchised/TridentFranchisedERC20.sol": {
        "TridentFranchisedERC20": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "DOMAIN_SEPARATOR",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "PERMIT_TYPEHASH",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "decimals",
              "outputs": [
                {
                  "internalType": "uint8",
                  "name": "",
                  "type": "uint8"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "level2",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "name": "nonces",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "operator",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permit",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "symbol",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "whiteListManager",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol, License-Identifier: AGPL-3.0-only.",
            "kind": "dev",
            "methods": {
              "approve(address,uint256)": {
                "params": {
                  "amount": "The maximum collective `amount` that `spender` can pull.",
                  "spender": "Address of the party that can pull tokens from `msg.sender`'s account."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "amount": "The number of tokens that are approved (2^256-1 means infinite).",
                  "deadline": "The time at which to expire the signature.",
                  "owner": "The address to approve from.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "spender": "The address to be approved.",
                  "v": "The recovery byte of the signature."
                }
              },
              "transfer(address,uint256)": {
                "params": {
                  "amount": "The token `amount` to move.",
                  "recipient": "The address to move tokens to."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              },
              "transferFrom(address,address,uint256)": {
                "params": {
                  "amount": "The token `amount` to move.",
                  "recipient": "The address to move tokens to.",
                  "sender": "Address to pull tokens `from`."
                },
                "returns": {
                  "_0": "(bool) Returns 'true' if succeeded."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "DOMAIN_SEPARATOR()": "3644e515",
              "PERMIT_TYPEHASH()": "30adf81f",
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decimals()": "313ce567",
              "level2()": "bc3377d9",
              "name()": "06fdde03",
              "nonces(address)": "7ecebe00",
              "operator()": "570ca735",
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf",
              "symbol()": "95d89b41",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd",
              "whiteListManager()": "25a93264"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"level2\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"whiteListManager\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol, License-Identifier: AGPL-3.0-only.\",\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"params\":{\"amount\":\"The maximum collective `amount` that `spender` can pull.\",\"spender\":\"Address of the party that can pull tokens from `msg.sender`'s account.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"amount\":\"The number of tokens that are approved (2^256-1 means infinite).\",\"deadline\":\"The time at which to expire the signature.\",\"owner\":\"The address to approve from.\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"spender\":\"The address to be approved.\",\"v\":\"The recovery byte of the signature.\"}},\"transfer(address,uint256)\":{\"params\":{\"amount\":\"The token `amount` to move.\",\"recipient\":\"The address to move tokens to.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}},\"transferFrom(address,address,uint256)\":{\"params\":{\"amount\":\"The token `amount` to move.\",\"recipient\":\"The address to move tokens to.\",\"sender\":\"Address to pull tokens `from`.\"},\"returns\":{\"_0\":\"(bool) Returns 'true' if succeeded.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"The EIP-712 typehash for this contract's domain.\"},\"PERMIT_TYPEHASH()\":{\"notice\":\"The EIP-712 typehash for this contract's {permit} struct.\"},\"allowance(address,address)\":{\"notice\":\"owner -> spender -> allowance mapping.\"},\"approve(address,uint256)\":{\"notice\":\"Approves `amount` from `msg.sender` to be spent by `spender`.\"},\"balanceOf(address)\":{\"notice\":\"owner -> balance mapping.\"},\"nonces(address)\":{\"notice\":\"owner -> nonce mapping used in {permit}.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Triggers an approval from `owner` to `spender`.\"},\"transfer(address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `msg.sender` to `recipient`.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\"}},\"notice\":\"Trident franchised pool ERC-20 with EIP-2612 extension.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/pool/franchised/TridentFranchisedERC20.sol\":\"TridentFranchisedERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IWhiteListManager.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident franchised pool whitelist manager interface.\\ninterface IWhiteListManager {\\n    function whitelistedAccounts(address operator, address account) external returns (bool);\\n}\\n\",\"keccak256\":\"0x8de295afb9c76132947e2fd4f120bc437ee2c6f41fda1db2bcf6074b977d6df8\",\"license\":\"GPL-3.0-or-later\"},\"contracts/pool/franchised/TridentFranchisedERC20.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../../interfaces/IWhiteListManager.sol\\\";\\n\\n/// @notice Trident franchised pool ERC-20 with EIP-2612 extension.\\n/// @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol,\\n/// License-Identifier: AGPL-3.0-only.\\nabstract contract TridentFranchisedERC20 {\\n    event Approval(address indexed owner, address indexed spender, uint256 amount);\\n    event Transfer(address indexed sender, address indexed recipient, uint256 amount);\\n\\n    string public constant name = \\\"Sushi Franchised LP Token\\\";\\n    string public constant symbol = \\\"SLP\\\";\\n    uint8 public constant decimals = 18;\\n\\n    address public whiteListManager;\\n    address public operator;\\n    bool public level2;\\n\\n    uint256 public totalSupply;\\n    /// @notice owner -> balance mapping.\\n    mapping(address => uint256) public balanceOf;\\n    /// @notice owner -> spender -> allowance mapping.\\n    mapping(address => mapping(address => uint256)) public allowance;\\n\\n    /// @notice The EIP-712 typehash for this contract's {permit} struct.\\n    bytes32 public constant PERMIT_TYPEHASH =\\n        keccak256(\\\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\\\");\\n    /// @notice The EIP-712 typehash for this contract's domain.\\n    bytes32 public immutable DOMAIN_SEPARATOR;\\n    /// @notice owner -> nonce mapping used in {permit}.\\n    mapping(address => uint256) public nonces;\\n\\n    constructor() {\\n        DOMAIN_SEPARATOR = keccak256(\\n            abi.encode(\\n                keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\\\"),\\n                keccak256(bytes(name)),\\n                keccak256(bytes(\\\"1\\\")),\\n                block.chainid,\\n                address(this)\\n            )\\n        );\\n    }\\n\\n    /// @dev Initializes whitelist settings from pool.\\n    function initialize(\\n        address _whiteListManager,\\n        address _operator,\\n        bool _level2\\n    ) internal {\\n        whiteListManager = _whiteListManager;\\n        operator = _operator;\\n        if (_level2) level2 = true;\\n    }\\n\\n    /// @notice Approves `amount` from `msg.sender` to be spent by `spender`.\\n    /// @param spender Address of the party that can pull tokens from `msg.sender`'s account.\\n    /// @param amount The maximum collective `amount` that `spender` can pull.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function approve(address spender, uint256 amount) external returns (bool) {\\n        allowance[msg.sender][spender] = amount;\\n        emit Approval(msg.sender, spender, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `msg.sender` to `recipient`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transfer(address recipient, uint256 amount) external returns (bool) {\\n        if (level2) _checkWhiteList(recipient);\\n        balanceOf[msg.sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(msg.sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\\n    /// @param sender Address to pull tokens `from`.\\n    /// @param recipient The address to move tokens to.\\n    /// @param amount The token `amount` to move.\\n    /// @return (bool) Returns 'true' if succeeded.\\n    function transferFrom(\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) external returns (bool) {\\n        if (level2) _checkWhiteList(recipient);\\n        if (allowance[sender][msg.sender] != type(uint256).max) {\\n            allowance[sender][msg.sender] -= amount;\\n        }\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(sender, recipient, amount);\\n        return true;\\n    }\\n\\n    /// @notice Triggers an approval from `owner` to `spender`.\\n    /// @param owner The address to approve from.\\n    /// @param spender The address to be approved.\\n    /// @param amount The number of tokens that are approved (2^256-1 means infinite).\\n    /// @param deadline The time at which to expire the signature.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permit(\\n        address owner,\\n        address spender,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        require(deadline >= block.timestamp, \\\"PERMIT_DEADLINE_EXPIRED\\\");\\n        bytes32 digest = keccak256(\\n            abi.encodePacked(\\n                \\\"\\\\x19\\\\x01\\\",\\n                DOMAIN_SEPARATOR,\\n                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))\\n            )\\n        );\\n        address recoveredAddress = ecrecover(digest, v, r, s);\\n        require(recoveredAddress != address(0) && recoveredAddress == owner, \\\"INVALID_PERMIT_SIGNATURE\\\");\\n        allowance[recoveredAddress][spender] = amount;\\n        emit Approval(owner, spender, amount);\\n    }\\n\\n    function _mint(address recipient, uint256 amount) internal {\\n        totalSupply += amount;\\n        // @dev This is safe from overflow - the sum of all user\\n        // balances can't exceed 'type(uint256).max'.\\n        unchecked {\\n            balanceOf[recipient] += amount;\\n        }\\n        emit Transfer(address(0), recipient, amount);\\n    }\\n\\n    function _burn(address sender, uint256 amount) internal {\\n        balanceOf[sender] -= amount;\\n        // @dev This is safe from underflow - users won't ever\\n        // have a balance larger than `totalSupply`.\\n        unchecked {\\n            totalSupply -= amount;\\n        }\\n        emit Transfer(sender, address(0), amount);\\n    }\\n\\n    /// @dev Checks `whiteListManager` for pool `operator` and given user `account`.\\n    function _checkWhiteList(address account) internal view {\\n        (, bytes memory _whitelisted) = whiteListManager.staticcall(\\n            abi.encodeWithSelector(IWhiteListManager.whitelistedAccounts.selector, operator, account)\\n        );\\n        bool whitelisted = abi.decode(_whitelisted, (bool));\\n        require(whitelisted, \\\"NOT_WHITELISTED\\\");\\n    }\\n}\\n\",\"keccak256\":\"0x2d3db0ed7c3fb40367a4a3fa8fc5ba3dece956fb319b9963cfe5b63ea1ee3b06\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 23226,
                "contract": "contracts/pool/franchised/TridentFranchisedERC20.sol:TridentFranchisedERC20",
                "label": "whiteListManager",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 23228,
                "contract": "contracts/pool/franchised/TridentFranchisedERC20.sol:TridentFranchisedERC20",
                "label": "operator",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              },
              {
                "astId": 23230,
                "contract": "contracts/pool/franchised/TridentFranchisedERC20.sol:TridentFranchisedERC20",
                "label": "level2",
                "offset": 20,
                "slot": "1",
                "type": "t_bool"
              },
              {
                "astId": 23232,
                "contract": "contracts/pool/franchised/TridentFranchisedERC20.sol:TridentFranchisedERC20",
                "label": "totalSupply",
                "offset": 0,
                "slot": "2",
                "type": "t_uint256"
              },
              {
                "astId": 23237,
                "contract": "contracts/pool/franchised/TridentFranchisedERC20.sol:TridentFranchisedERC20",
                "label": "balanceOf",
                "offset": 0,
                "slot": "3",
                "type": "t_mapping(t_address,t_uint256)"
              },
              {
                "astId": 23244,
                "contract": "contracts/pool/franchised/TridentFranchisedERC20.sol:TridentFranchisedERC20",
                "label": "allowance",
                "offset": 0,
                "slot": "4",
                "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
              },
              {
                "astId": 23258,
                "contract": "contracts/pool/franchised/TridentFranchisedERC20.sol:TridentFranchisedERC20",
                "label": "nonces",
                "offset": 0,
                "slot": "5",
                "type": "t_mapping(t_address,t_uint256)"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              },
              "t_bool": {
                "encoding": "inplace",
                "label": "bool",
                "numberOfBytes": "1"
              },
              "t_mapping(t_address,t_mapping(t_address,t_uint256))": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => mapping(address => uint256))",
                "numberOfBytes": "32",
                "value": "t_mapping(t_address,t_uint256)"
              },
              "t_mapping(t_address,t_uint256)": {
                "encoding": "mapping",
                "key": "t_address",
                "label": "mapping(address => uint256)",
                "numberOfBytes": "32",
                "value": "t_uint256"
              },
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "DOMAIN_SEPARATOR()": {
                "notice": "The EIP-712 typehash for this contract's domain."
              },
              "PERMIT_TYPEHASH()": {
                "notice": "The EIP-712 typehash for this contract's {permit} struct."
              },
              "allowance(address,address)": {
                "notice": "owner -> spender -> allowance mapping."
              },
              "approve(address,uint256)": {
                "notice": "Approves `amount` from `msg.sender` to be spent by `spender`."
              },
              "balanceOf(address)": {
                "notice": "owner -> balance mapping."
              },
              "nonces(address)": {
                "notice": "owner -> nonce mapping used in {permit}."
              },
              "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Triggers an approval from `owner` to `spender`."
              },
              "transfer(address,uint256)": {
                "notice": "Transfers `amount` tokens from `msg.sender` to `recipient`."
              },
              "transferFrom(address,address,uint256)": {
                "notice": "Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`."
              }
            },
            "notice": "Trident franchised pool ERC-20 with EIP-2612 extension.",
            "version": 1
          }
        }
      },
      "contracts/test/TickMathTest.sol": {
        "TickMathTest": {
          "abi": [
            {
              "inputs": [],
              "name": "PriceOutOfBounds",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "TickOutOfBounds",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "int24",
                  "name": "tick",
                  "type": "int24"
                }
              ],
              "name": "getSqrtRatioAtTick",
              "outputs": [
                {
                  "internalType": "uint160",
                  "name": "",
                  "type": "uint160"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint160",
                  "name": "sqrtPriceX96",
                  "type": "uint160"
                }
              ],
              "name": "getTickAtSqrtRatio",
              "outputs": [
                {
                  "internalType": "int24",
                  "name": "",
                  "type": "int24"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5061094f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634f76c0581461003b578063986cfba314610066575b600080fd5b61004e61004936600461080d565b61009e565b60405160029190910b81526020015b60405180910390f35b6100796100743660046107e3565b6100af565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161005d565b60006100a9826100ba565b92915050565b60006100a982610450565b60006401000276a373ffffffffffffffffffffffffffffffffffffffff8316108061010f575073fffd8963efd1fc6a506488495d951d5263988d2673ffffffffffffffffffffffffffffffffffffffff831610155b15610146576040517f6e4ba61d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166fffffffffffffffffffffffffffffffff811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106101f057607f810383901c91506101fa565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc5568101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14610441578873ffffffffffffffffffffffffffffffffffffffff1661041982610450565b73ffffffffffffffffffffffffffffffffffffffff16111561043b5781610443565b80610443565b815b9998505050505050505050565b60008060008360020b12610467578260020b610474565b8260020b61047490610882565b905061049f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618610843565b62ffffff168111156104dd576040517ff87dc40c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600182166104fe57700100000000000000000000000000000000610510565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610544576ffff97272373d413259a46990580e213a0260801c5b6004821615610563576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615610582576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156105a1576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156105c0576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156105df576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156105fe576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561061e576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561063e576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561065e576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561067e576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561069e576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156106be576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156106de576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156106fe576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561071f576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561073f576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561075e576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561077b576b048a170391f7dc42444e8fa20260801c5b60008460020b13156107ba57807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff816107b6576107b66108ea565b0490505b6401000000008106156107ce5760016107d1565b60005b60ff16602082901c0192505050919050565b6000602082840312156107f557600080fd5b81358060020b811461080657600080fd5b9392505050565b60006020828403121561081f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461080657600080fd5b60008160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000811415610879576108796108bb565b60000392915050565b60007f80000000000000000000000000000000000000000000000000000000000000008214156108b4576108b46108bb565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220479c0390abdde78e0efc8ac436bb3bffc5687180220e2f08bcde6b0437354e9764736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x94F DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F76C058 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x986CFBA3 EQ PUSH2 0x66 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x80D JUMP JUMPDEST PUSH2 0x9E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x79 PUSH2 0x74 CALLDATASIZE PUSH1 0x4 PUSH2 0x7E3 JUMP JUMPDEST PUSH2 0xAF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5D JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA9 DUP3 PUSH2 0xBA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA9 DUP3 PUSH2 0x450 JUMP JUMPDEST PUSH1 0x0 PUSH5 0x1000276A3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND LT DUP1 PUSH2 0x10F JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x146 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6E4BA61D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x7 SHL DUP2 DUP2 SHR PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x6 SHL SWAP1 DUP2 SHR PUSH4 0xFFFFFFFF DUP2 GT PUSH1 0x5 SHL SWAP1 DUP2 SHR PUSH2 0xFFFF DUP2 GT PUSH1 0x4 SHL SWAP1 DUP2 SHR PUSH1 0xFF DUP2 GT PUSH1 0x3 SWAP1 DUP2 SHL SWAP2 DUP3 SHR PUSH1 0xF DUP2 GT PUSH1 0x2 SHL SWAP1 DUP2 SHR SWAP2 DUP3 GT PUSH1 0x1 SWAP1 DUP2 SHL SWAP3 DUP4 SHR SWAP8 SWAP1 DUP9 GT SWAP7 OR SWAP1 SWAP5 OR SWAP1 SWAP3 OR OR SWAP1 SWAP2 OR OR OR PUSH1 0x80 DUP2 LT PUSH2 0x1F0 JUMPI PUSH1 0x7F DUP2 SUB DUP4 SWAP1 SHR SWAP2 POP PUSH2 0x1FA JUMP JUMPDEST DUP1 PUSH1 0x7F SUB DUP4 SWAP1 SHL SWAP2 POP JUMPDEST SWAP1 DUP1 MUL PUSH1 0x7F DUP2 DUP2 SHR PUSH1 0xFF DUP4 DUP2 SHR SWAP2 SWAP1 SWAP2 SHR DUP1 MUL DUP1 DUP4 SHR DUP2 DUP4 SHR SHR DUP1 MUL DUP1 DUP5 SHR DUP2 DUP5 SHR SHR DUP1 MUL DUP1 DUP6 SHR DUP2 DUP6 SHR SHR DUP1 MUL DUP1 DUP7 SHR DUP2 DUP7 SHR SHR DUP1 MUL DUP1 DUP8 SHR DUP2 DUP8 SHR SHR DUP1 MUL DUP1 DUP9 SHR DUP2 DUP9 SHR SHR DUP1 MUL DUP1 DUP10 SHR DUP2 DUP10 SHR SHR DUP1 MUL DUP1 DUP11 SHR DUP2 DUP11 SHR SHR DUP1 MUL DUP1 DUP12 SHR DUP2 DUP12 SHR SHR DUP1 MUL DUP1 DUP13 SHR DUP2 DUP13 SHR SHR DUP1 MUL DUP1 DUP14 SHR DUP2 DUP14 SHR SHR DUP1 MUL DUP1 DUP15 SHR SWAP13 DUP2 SWAP1 SHR SWAP13 SWAP1 SWAP13 SHR DUP1 MUL SWAP13 DUP14 SWAP1 SHR SWAP15 SWAP14 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 DUP16 ADD PUSH1 0x40 SHL PUSH1 0xC0 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x8000000000000000 AND OR PUSH1 0xC1 SWAP12 SWAP1 SWAP12 SHR PUSH8 0x4000000000000000 AND SWAP11 SWAP1 SWAP11 OR PUSH1 0xC2 SWAP10 SWAP1 SWAP10 SHR PUSH8 0x2000000000000000 AND SWAP9 SWAP1 SWAP9 OR PUSH1 0xC3 SWAP8 SWAP1 SWAP8 SHR PUSH8 0x1000000000000000 AND SWAP7 SWAP1 SWAP7 OR PUSH1 0xC4 SWAP6 SWAP1 SWAP6 SHR PUSH8 0x800000000000000 AND SWAP5 SWAP1 SWAP5 OR PUSH1 0xC5 SWAP4 SWAP1 SWAP4 SHR PUSH8 0x400000000000000 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0xC6 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x200000000000000 AND OR PUSH1 0xC7 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x100000000000000 AND OR PUSH1 0xC8 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x80000000000000 AND OR PUSH1 0xC9 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x40000000000000 AND OR PUSH1 0xCA SWAP2 SWAP1 SWAP2 SHR PUSH7 0x20000000000000 AND OR PUSH1 0xCB SWAP2 SWAP1 SWAP2 SHR PUSH7 0x10000000000000 AND OR PUSH1 0xCC SWAP2 SWAP1 SWAP2 SHR PUSH7 0x8000000000000 AND OR PUSH1 0xCD SWAP2 SWAP1 SWAP2 SHR PUSH7 0x4000000000000 AND OR PUSH10 0x3627A301D71055774C85 DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD709B7E5480FBA5A50FED5E62FFC556 DUP2 ADD PUSH1 0x80 SWAP1 DUP2 SAR SWAP1 PUSH16 0xDB2DF09E81959A81455E260799A0632F DUP4 ADD SWAP1 SAR PUSH1 0x2 DUP2 DUP2 SIGNEXTEND SWAP1 DUP4 SWAP1 SIGNEXTEND EQ PUSH2 0x441 JUMPI DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x419 DUP3 PUSH2 0x450 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x43B JUMPI DUP2 PUSH2 0x443 JUMP JUMPDEST DUP1 PUSH2 0x443 JUMP JUMPDEST DUP2 JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x467 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x474 JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x474 SWAP1 PUSH2 0x882 JUMP JUMPDEST SWAP1 POP PUSH2 0x49F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x843 JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 GT ISZERO PUSH2 0x4DD JUMPI PUSH1 0x40 MLOAD PUSH32 0xF87DC40C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x4FE JUMPI PUSH17 0x100000000000000000000000000000000 PUSH2 0x510 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x544 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x563 JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x582 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x5A1 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x5C0 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x5DF JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x5FE JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x61E JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x63E JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x65E JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x67E JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x69E JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x6BE JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x6DE JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x6FE JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x71F JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x73F JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x75E JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x77B JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x7BA JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 PUSH2 0x7B6 JUMPI PUSH2 0x7B6 PUSH2 0x8EA JUMP JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x7CE JUMPI PUSH1 0x1 PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x806 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x81F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x806 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000 DUP2 EQ ISZERO PUSH2 0x879 JUMPI PUSH2 0x879 PUSH2 0x8BB JUMP JUMPDEST PUSH1 0x0 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ ISZERO PUSH2 0x8B4 JUMPI PUSH2 0x8B4 PUSH2 0x8BB JUMP JUMPDEST POP PUSH1 0x0 SUB SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFBALANCE SWAP13 SUB SWAP1 0xAB 0xDD 0xE7 DUP15 0xE 0xFC DUP11 0xC4 CALLDATASIZE 0xBB EXTCODESIZE SELFDESTRUCT 0xC5 PUSH9 0x7180220E2F08BCDE6B DIV CALLDATACOPY CALLDATALOAD 0x4E SWAP8 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "119:310:58:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@getSqrtRatioAtTick_23645": {
                  "entryPoint": 175,
                  "id": 23645,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getSqrtRatioAtTick_4077": {
                  "entryPoint": 1104,
                  "id": 4077,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getTickAtSqrtRatio_23658": {
                  "entryPoint": 158,
                  "id": 23658,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getTickAtSqrtRatio_4216": {
                  "entryPoint": 186,
                  "id": 4216,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_int24": {
                  "entryPoint": 2019,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint160": {
                  "entryPoint": 2061,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_int24__to_t_int24__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint160__to_t_uint160__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "negate_t_int24": {
                  "entryPoint": 2115,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "negate_t_int256": {
                  "entryPoint": 2178,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 2235,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x12": {
                  "entryPoint": 2282,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1844:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "82:205:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "128:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "137:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "140:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "130:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "130:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "130:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "103:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "112:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "99:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "99:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "124:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "95:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "95:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "92:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "153:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "179:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "166:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "166:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "157:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "241:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "250:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "253:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "243:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "243:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "243:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "211:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "229:1:64",
                                            "type": "",
                                            "value": "2"
                                          },
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "232:5:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "signextend",
                                          "nodeType": "YulIdentifier",
                                          "src": "218:10:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "218:20:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "208:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "208:31:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "201:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "201:39:64"
                              },
                              "nodeType": "YulIf",
                              "src": "198:59:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "266:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "276:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "266:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_int24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "48:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "59:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "71:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:273:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "362:239:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "408:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "417:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "420:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "410:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "410:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "410:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "383:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "392:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "379:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "379:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "404:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "375:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "375:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "372:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "433:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "459:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "446:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "446:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "437:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "555:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "564:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "567:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "557:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "557:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "557:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "491:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "502:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "509:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "498:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "498:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "488:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "488:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "481:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "481:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "478:93:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "580:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "590:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "580:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint160",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "328:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "339:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "351:6:64",
                            "type": ""
                          }
                        ],
                        "src": "292:309:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "703:91:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "713:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "725:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "736:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "721:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "721:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "713:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "755:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "777:1:64",
                                        "type": "",
                                        "value": "2"
                                      },
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "780:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "signextend",
                                      "nodeType": "YulIdentifier",
                                      "src": "766:10:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "766:21:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "748:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "748:40:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "748:40:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_int24__to_t_int24__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "672:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "683:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "694:4:64",
                            "type": ""
                          }
                        ],
                        "src": "606:188:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "900:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "910:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "922:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "933:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "918:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "918:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "910:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "952:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "967:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "975:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "963:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "963:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "945:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "945:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "945:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint160__to_t_uint160__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "869:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "880:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "891:4:64",
                            "type": ""
                          }
                        ],
                        "src": "799:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1072:196:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1082:35:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1108:1:64",
                                    "type": "",
                                    "value": "2"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1111:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "signextend",
                                  "nodeType": "YulIdentifier",
                                  "src": "1097:10:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1097:20:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1086:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1209:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "1211:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1211:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1211:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1132:7:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1141:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "1129:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1129:79:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1126:105:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1240:22:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1251:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1254:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1247:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1247:15:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "1240:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "negate_t_int24",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1054:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "1064:3:64",
                            "type": ""
                          }
                        ],
                        "src": "1030:238:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1316:148:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1407:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "1409:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1409:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1409:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1332:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1339:66:64",
                                    "type": "",
                                    "value": "0x8000000000000000000000000000000000000000000000000000000000000000"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "1329:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1329:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1326:103:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1438:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1449:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1452:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1445:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1445:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "1438:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "negate_t_int256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1298:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "1308:3:64",
                            "type": ""
                          }
                        ],
                        "src": "1273:191:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1501:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1518:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1521:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1511:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1511:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1511:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1615:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1618:4:64",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1608:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1608:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1608:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1639:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1642:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1632:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1632:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1632:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1469:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1690:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1707:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1710:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1700:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1700:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1700:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1804:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1807:4:64",
                                    "type": "",
                                    "value": "0x12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1797:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1797:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1797:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1828:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1831:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1821:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1821:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1821:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x12",
                        "nodeType": "YulFunctionDefinition",
                        "src": "1658:184:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_int24(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, signextend(2, value))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint160(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_int24__to_t_int24__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, signextend(2, value0))\n    }\n    function abi_encode_tuple_t_uint160__to_t_uint160__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function negate_t_int24(value) -> ret\n    {\n        let value_1 := signextend(2, value)\n        if eq(value_1, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000) { panic_error_0x11() }\n        ret := sub(0, value_1)\n    }\n    function negate_t_int256(value) -> ret\n    {\n        if eq(value, 0x8000000000000000000000000000000000000000000000000000000000000000) { panic_error_0x11() }\n        ret := sub(0, value)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c80634f76c0581461003b578063986cfba314610066575b600080fd5b61004e61004936600461080d565b61009e565b60405160029190910b81526020015b60405180910390f35b6100796100743660046107e3565b6100af565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161005d565b60006100a9826100ba565b92915050565b60006100a982610450565b60006401000276a373ffffffffffffffffffffffffffffffffffffffff8316108061010f575073fffd8963efd1fc6a506488495d951d5263988d2673ffffffffffffffffffffffffffffffffffffffff831610155b15610146576040517f6e4ba61d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166fffffffffffffffffffffffffffffffff811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106101f057607f810383901c91506101fa565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc5568101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14610441578873ffffffffffffffffffffffffffffffffffffffff1661041982610450565b73ffffffffffffffffffffffffffffffffffffffff16111561043b5781610443565b80610443565b815b9998505050505050505050565b60008060008360020b12610467578260020b610474565b8260020b61047490610882565b905061049f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618610843565b62ffffff168111156104dd576040517ff87dc40c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600182166104fe57700100000000000000000000000000000000610510565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610544576ffff97272373d413259a46990580e213a0260801c5b6004821615610563576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615610582576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156105a1576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156105c0576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156105df576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156105fe576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561061e576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561063e576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561065e576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561067e576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561069e576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156106be576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156106de576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156106fe576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561071f576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561073f576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561075e576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561077b576b048a170391f7dc42444e8fa20260801c5b60008460020b13156107ba57807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff816107b6576107b66108ea565b0490505b6401000000008106156107ce5760016107d1565b60005b60ff16602082901c0192505050919050565b6000602082840312156107f557600080fd5b81358060020b811461080657600080fd5b9392505050565b60006020828403121561081f57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461080657600080fd5b60008160020b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000811415610879576108796108bb565b60000392915050565b60007f80000000000000000000000000000000000000000000000000000000000000008214156108b4576108b46108bb565b5060000390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220479c0390abdde78e0efc8ac436bb3bffc5687180220e2f08bcde6b0437354e9764736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F76C058 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x986CFBA3 EQ PUSH2 0x66 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x80D JUMP JUMPDEST PUSH2 0x9E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x79 PUSH2 0x74 CALLDATASIZE PUSH1 0x4 PUSH2 0x7E3 JUMP JUMPDEST PUSH2 0xAF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x5D JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA9 DUP3 PUSH2 0xBA JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA9 DUP3 PUSH2 0x450 JUMP JUMPDEST PUSH1 0x0 PUSH5 0x1000276A3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND LT DUP1 PUSH2 0x10F JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x146 JUMPI PUSH1 0x40 MLOAD PUSH32 0x6E4BA61D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH24 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x7 SHL DUP2 DUP2 SHR PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x6 SHL SWAP1 DUP2 SHR PUSH4 0xFFFFFFFF DUP2 GT PUSH1 0x5 SHL SWAP1 DUP2 SHR PUSH2 0xFFFF DUP2 GT PUSH1 0x4 SHL SWAP1 DUP2 SHR PUSH1 0xFF DUP2 GT PUSH1 0x3 SWAP1 DUP2 SHL SWAP2 DUP3 SHR PUSH1 0xF DUP2 GT PUSH1 0x2 SHL SWAP1 DUP2 SHR SWAP2 DUP3 GT PUSH1 0x1 SWAP1 DUP2 SHL SWAP3 DUP4 SHR SWAP8 SWAP1 DUP9 GT SWAP7 OR SWAP1 SWAP5 OR SWAP1 SWAP3 OR OR SWAP1 SWAP2 OR OR OR PUSH1 0x80 DUP2 LT PUSH2 0x1F0 JUMPI PUSH1 0x7F DUP2 SUB DUP4 SWAP1 SHR SWAP2 POP PUSH2 0x1FA JUMP JUMPDEST DUP1 PUSH1 0x7F SUB DUP4 SWAP1 SHL SWAP2 POP JUMPDEST SWAP1 DUP1 MUL PUSH1 0x7F DUP2 DUP2 SHR PUSH1 0xFF DUP4 DUP2 SHR SWAP2 SWAP1 SWAP2 SHR DUP1 MUL DUP1 DUP4 SHR DUP2 DUP4 SHR SHR DUP1 MUL DUP1 DUP5 SHR DUP2 DUP5 SHR SHR DUP1 MUL DUP1 DUP6 SHR DUP2 DUP6 SHR SHR DUP1 MUL DUP1 DUP7 SHR DUP2 DUP7 SHR SHR DUP1 MUL DUP1 DUP8 SHR DUP2 DUP8 SHR SHR DUP1 MUL DUP1 DUP9 SHR DUP2 DUP9 SHR SHR DUP1 MUL DUP1 DUP10 SHR DUP2 DUP10 SHR SHR DUP1 MUL DUP1 DUP11 SHR DUP2 DUP11 SHR SHR DUP1 MUL DUP1 DUP12 SHR DUP2 DUP12 SHR SHR DUP1 MUL DUP1 DUP13 SHR DUP2 DUP13 SHR SHR DUP1 MUL DUP1 DUP14 SHR DUP2 DUP14 SHR SHR DUP1 MUL DUP1 DUP15 SHR SWAP13 DUP2 SWAP1 SHR SWAP13 SWAP1 SWAP13 SHR DUP1 MUL SWAP13 DUP14 SWAP1 SHR SWAP15 SWAP14 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 DUP16 ADD PUSH1 0x40 SHL PUSH1 0xC0 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x8000000000000000 AND OR PUSH1 0xC1 SWAP12 SWAP1 SWAP12 SHR PUSH8 0x4000000000000000 AND SWAP11 SWAP1 SWAP11 OR PUSH1 0xC2 SWAP10 SWAP1 SWAP10 SHR PUSH8 0x2000000000000000 AND SWAP9 SWAP1 SWAP9 OR PUSH1 0xC3 SWAP8 SWAP1 SWAP8 SHR PUSH8 0x1000000000000000 AND SWAP7 SWAP1 SWAP7 OR PUSH1 0xC4 SWAP6 SWAP1 SWAP6 SHR PUSH8 0x800000000000000 AND SWAP5 SWAP1 SWAP5 OR PUSH1 0xC5 SWAP4 SWAP1 SWAP4 SHR PUSH8 0x400000000000000 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0xC6 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x200000000000000 AND OR PUSH1 0xC7 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x100000000000000 AND OR PUSH1 0xC8 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x80000000000000 AND OR PUSH1 0xC9 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x40000000000000 AND OR PUSH1 0xCA SWAP2 SWAP1 SWAP2 SHR PUSH7 0x20000000000000 AND OR PUSH1 0xCB SWAP2 SWAP1 SWAP2 SHR PUSH7 0x10000000000000 AND OR PUSH1 0xCC SWAP2 SWAP1 SWAP2 SHR PUSH7 0x8000000000000 AND OR PUSH1 0xCD SWAP2 SWAP1 SWAP2 SHR PUSH7 0x4000000000000 AND OR PUSH10 0x3627A301D71055774C85 DUP2 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD709B7E5480FBA5A50FED5E62FFC556 DUP2 ADD PUSH1 0x80 SWAP1 DUP2 SAR SWAP1 PUSH16 0xDB2DF09E81959A81455E260799A0632F DUP4 ADD SWAP1 SAR PUSH1 0x2 DUP2 DUP2 SIGNEXTEND SWAP1 DUP4 SWAP1 SIGNEXTEND EQ PUSH2 0x441 JUMPI DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x419 DUP3 PUSH2 0x450 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND GT ISZERO PUSH2 0x43B JUMPI DUP2 PUSH2 0x443 JUMP JUMPDEST DUP1 PUSH2 0x443 JUMP JUMPDEST DUP2 JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x467 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x474 JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x474 SWAP1 PUSH2 0x882 JUMP JUMPDEST SWAP1 POP PUSH2 0x49F PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27618 PUSH2 0x843 JUMP JUMPDEST PUSH3 0xFFFFFF AND DUP2 GT ISZERO PUSH2 0x4DD JUMPI PUSH1 0x40 MLOAD PUSH32 0xF87DC40C00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x4FE JUMPI PUSH17 0x100000000000000000000000000000000 PUSH2 0x510 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x544 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x563 JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x582 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x5A1 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x5C0 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x5DF JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x5FE JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x61E JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x63E JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x65E JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x67E JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x69E JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x6BE JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x6DE JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x6FE JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x71F JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x73F JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x75E JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x77B JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x7BA JUMPI DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 PUSH2 0x7B6 JUMPI PUSH2 0x7B6 PUSH2 0x8EA JUMP JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x7CE JUMPI PUSH1 0x1 PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x806 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x81F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x806 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF800000 DUP2 EQ ISZERO PUSH2 0x879 JUMPI PUSH2 0x879 PUSH2 0x8BB JUMP JUMPDEST PUSH1 0x0 SUB SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x8000000000000000000000000000000000000000000000000000000000000000 DUP3 EQ ISZERO PUSH2 0x8B4 JUMPI PUSH2 0x8B4 PUSH2 0x8BB JUMP JUMPDEST POP PUSH1 0x0 SUB SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFBALANCE SWAP13 SUB SWAP1 0xAB 0xDD 0xE7 DUP15 0xE 0xFC DUP11 0xC4 CALLDATASIZE 0xBB EXTCODESIZE SELFDESTRUCT 0xC5 PUSH9 0x7180220E2F08BCDE6B DIV CALLDATACOPY CALLDATALOAD 0x4E SWAP8 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "119:310:58:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;282:145;;;;;;:::i;:::-;;:::i;:::-;;;777:1:64;766:21;;;;748:40;;736:2;721:18;282:145:58;;;;;;;;147:129;;;;;;:::i;:::-;;:::i;:::-;;;975:42:64;963:55;;;945:74;;933:2;918:18;147:129:58;799:226:64;282:145:58;355:5;379:41;407:12;379:27;:41::i;:::-;372:48;282:145;-1:-1:-1;;282:145:58:o;147:129::-;210:7;236:33;264:4;236:27;:33::i;4643:4685:28:-;4716:10;886;4842:29;;;;;:63;;-1:-1:-1;1068:49:28;4875:30;;;;;4842:63;4838:94;;;4914:18;;;;;;;;;;;;;;4838:94;4958:27;4983:2;4958:27;;;;5090:34;5084:41;;5081:1;5077:49;5174:9;;;5247:18;5241:25;;5238:1;5234:33;5315:9;;;5388:10;5382:17;;5379:1;5375:25;5448:9;;;5521:6;5515:13;;5512:1;5508:21;5577:9;;;5650:4;5644:11;;5641:1;5637:19;;;5704:9;;;5777:3;5771:10;;5768:1;5764:18;5830:9;;;5897:10;;;5894:1;5890:18;;;5956:9;;;;6016:10;;;5287;;5420;;;5549;;;5676;5802;;;5928;6046;6110:3;6103:10;;6099:83;;6135:3;6129;:9;6119:5;:20;;6115:24;;6099:83;;;6178:3;6172;:9;6162:5;:20;;6158:24;;6099:83;6293:9;;;6288:3;6284:19;;;6329:11;;;;6409:9;;;;6486;;6477:19;;;6522:11;;;6602:9;6679;;6670:19;;;6715:11;;;6795:9;6872;;6863:19;;;6908:11;;;6988:9;7065;;7056:19;;;7101:11;;;7181:9;7258;;7249:19;;;7294:11;;;7374:9;7451;;7442:19;;;7487:11;;;7567:9;7644;;7635:19;;;7680:11;;;7760:9;7837;;7828:19;;;7873:11;;;7953:9;8030;;8021:19;;;8066:11;;;8146:9;8223;;8214:19;;;8259:11;;;8339:9;8416;;8407:19;;;8452:11;;;8532:9;8609;;8600:19;;;8645:11;;;;8725:9;;;;8802;;8793:19;;;;;6293:9;6213:17;;;6235:2;6212:25;6376:10;;;;;;;6366:21;6569:10;;;;;;;6559:21;;;;6762:10;;;;;;;6752:21;;;;6955:10;;;;;;;6945:21;;;;7148:10;;;;;;;7138:21;;;;7341:10;;;;;;;7331:21;;;;7534:10;;;;;;;7524:21;7727:10;;;;;;;7717:21;7920:10;;;;;;;7910:21;8113:10;;;;;;;8103:21;8306:10;;;;;;;8296:21;8499:10;;;;;;;8489:21;8692:10;;;;;;;8682:21;8885:10;;;;;;;8875:21;8955:24;8947:32;;9036:53;;;6227:3;9035:62;;;;9150:39;9134:55;;9133:64;;9220:17;;;;;;;;;:91;;9280:12;9250:42;;:26;9269:6;9250:18;:26::i;:::-;:42;;;;:61;;9304:7;9220:91;;9250:61;9295:6;9220:91;;;9240:7;9220:91;9213:98;4643:4685;-1:-1:-1;;;;;;;;;4643:4685:28:o;1488:2733::-;1551:20;1583:15;1608:1;1601:4;:8;;;:57;;1652:4;1645:12;;1601:57;;;1628:4;1621:12;;1620:13;;;:::i;:::-;1583:75;-1:-1:-1;705:9:28;540:7;705:9;:::i;:::-;1682:25;;1672:7;:35;1668:65;;;1716:17;;;;;;;;;;;;;;1668:65;1767:13;1793:3;1783:13;;:93;;1841:35;1783:93;;;1804:34;1783:93;1767:109;;;-1:-1:-1;1904:3:28;1894:13;;:18;1890:83;;1931:34;1923:42;1970:3;1922:51;1890:83;2001:3;1991:13;;:18;1987:83;;2028:34;2020:42;2067:3;2019:51;1987:83;2098:3;2088:13;;:18;2084:83;;2125:34;2117:42;2164:3;2116:51;2084:83;2195:4;2185:14;;:19;2181:84;;2223:34;2215:42;2262:3;2214:51;2181:84;2293:4;2283:14;;:19;2279:84;;2321:34;2313:42;2360:3;2312:51;2279:84;2391:4;2381:14;;:19;2377:84;;2419:34;2411:42;2458:3;2410:51;2377:84;2489:4;2479:14;;:19;2475:84;;2517:34;2509:42;2556:3;2508:51;2475:84;2587:5;2577:15;;:20;2573:85;;2616:34;2608:42;2655:3;2607:51;2573:85;2686:5;2676:15;;:20;2672:85;;2715:34;2707:42;2754:3;2706:51;2672:85;2785:5;2775:15;;:20;2771:85;;2814:34;2806:42;2853:3;2805:51;2771:85;2884:5;2874:15;;:20;2870:85;;2913:34;2905:42;2952:3;2904:51;2870:85;2983:6;2973:16;;:21;2969:86;;3013:34;3005:42;3052:3;3004:51;2969:86;3083:6;3073:16;;:21;3069:86;;3113:34;3105:42;3152:3;3104:51;3069:86;3183:6;3173:16;;:21;3169:86;;3213:34;3205:42;3252:3;3204:51;3169:86;3283:6;3273:16;;:21;3269:86;;3313:34;3305:42;3352:3;3304:51;3269:86;3383:7;3373:17;;:22;3369:86;;3414:33;3406:41;3452:3;3405:50;3369:86;3483:7;3473:17;;:22;3469:85;;3514:32;3506:40;3551:3;3505:49;3469:85;3582:7;3572:17;;:22;3568:83;;3613:30;3605:38;3648:3;3604:47;3568:83;3679:7;3669:17;;:22;3665:78;;3710:25;3702:33;3740:3;3701:42;3665:78;3769:1;3762:4;:8;;;3758:47;;;3800:5;3780:17;:25;;;;;:::i;:::-;;3772:33;;3758:47;4181:7;4172:5;:17;:22;:30;;4201:1;4172:30;;;4197:1;4172:30;4155:48;;4165:2;4156:5;:11;;4155:48;4132:72;;1743:2472;1573:2648;1488:2733;;;:::o;14:273:64:-;71:6;124:2;112:9;103:7;99:23;95:32;92:52;;;140:1;137;130:12;92:52;179:9;166:23;232:5;229:1;218:20;211:5;208:31;198:59;;253:1;250;243:12;198:59;276:5;14:273;-1:-1:-1;;;14:273:64:o;292:309::-;351:6;404:2;392:9;383:7;379:23;375:32;372:52;;;420:1;417;410:12;372:52;459:9;446:23;509:42;502:5;498:54;491:5;488:65;478:93;;567:1;564;557:12;1030:238;1064:3;1111:5;1108:1;1097:20;1141:66;1132:7;1129:79;1126:105;;;1211:18;;:::i;:::-;1251:1;1247:15;;1030:238;-1:-1:-1;;1030:238:64:o;1273:191::-;1308:3;1339:66;1332:5;1329:77;1326:103;;;1409:18;;:::i;:::-;-1:-1:-1;1449:1:64;1445:13;;1273:191::o;1469:184::-;1521:77;1518:1;1511:88;1618:4;1615:1;1608:15;1642:4;1639:1;1632:15;1658:184;1710:77;1707:1;1700:88;1807:4;1804:1;1797:15;1831:4;1828:1;1821:15"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "476600",
                "executionCost": "511",
                "totalCost": "477111"
              },
              "external": {
                "getSqrtRatioAtTick(int24)": "1553",
                "getTickAtSqrtRatio(uint160)": "2928"
              }
            },
            "methodIdentifiers": {
              "getSqrtRatioAtTick(int24)": "986cfba3",
              "getTickAtSqrtRatio(uint160)": "4f76c058"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PriceOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TickOutOfBounds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"getSqrtRatioAtTick\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"name\":\"getTickAtSqrtRatio\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/TickMathTest.sol\":\"TickMathTest\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/libraries/concentratedPool/TickMath.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-2.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Math library for computing sqrt price for ticks of size 1.0001, i.e., sqrt(1.0001^tick) as fixed point Q64.96 numbers - supports\\n/// prices between 2**-128 and 2**128 - 1.\\n/// @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/TickMath.sol.\\nlibrary TickMath {\\n    /// @dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128.\\n    int24 internal constant MIN_TICK = -887272;\\n    /// @dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128 - 1.\\n    int24 internal constant MAX_TICK = -MIN_TICK;\\n    /// @dev The minimum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MIN_TICK).\\n    uint160 internal constant MIN_SQRT_RATIO = 4295128739;\\n    /// @dev The maximum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MAX_TICK).\\n    uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;\\n\\n    error TickOutOfBounds();\\n    error PriceOutOfBounds();\\n\\n    /// @notice Calculates sqrt(1.0001^tick) * 2^96.\\n    /// @dev Throws if |tick| > max tick.\\n    /// @param tick The input tick for the above formula.\\n    /// @return sqrtPriceX96 Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\\n    /// at the given tick.\\n    function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {\\n        uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));\\n        if (absTick > uint256(uint24(MAX_TICK))) revert TickOutOfBounds();\\n        unchecked {\\n            uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;\\n            if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;\\n            if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;\\n            if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;\\n            if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;\\n            if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;\\n            if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;\\n            if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;\\n            if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;\\n            if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;\\n            if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;\\n            if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;\\n            if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;\\n            if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;\\n            if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;\\n            if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;\\n            if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;\\n            if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;\\n            if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;\\n            if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;\\n\\n            if (tick > 0) ratio = type(uint256).max / ratio;\\n            // This divides by 1<<32 rounding up to go from a Q128.128 to a Q128.96.\\n            // We then downcast because we know the result always fits within 160 bits due to our tick input constraint.\\n            // We round up in the division so getTickAtSqrtRatio of the output price is always consistent.\\n            sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));\\n        }\\n    }\\n\\n    /// @notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio.\\n    /// @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\\n    /// ever return.\\n    /// @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96.\\n    /// @return tick The greatest tick for which the ratio is less than or equal to the input ratio.\\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {\\n        // Second inequality must be < because the price can never reach the price at the max tick.\\n        if (sqrtPriceX96 < MIN_SQRT_RATIO || sqrtPriceX96 >= MAX_SQRT_RATIO) revert PriceOutOfBounds();\\n        uint256 ratio = uint256(sqrtPriceX96) << 32;\\n\\n        uint256 r = ratio;\\n        uint256 msb;\\n\\n        assembly {\\n            let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(5, gt(r, 0xFFFFFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(4, gt(r, 0xFFFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(3, gt(r, 0xFF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(2, gt(r, 0xF))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := shl(1, gt(r, 0x3))\\n            msb := or(msb, f)\\n            r := shr(f, r)\\n        }\\n        assembly {\\n            let f := gt(r, 0x1)\\n            msb := or(msb, f)\\n        }\\n        unchecked {\\n            if (msb >= 128) r = ratio >> (msb - 127);\\n            else r = ratio << (127 - msb);\\n\\n            int256 log_2 = (int256(msb) - 128) << 64;\\n\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(63, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(62, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(61, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(60, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(59, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(58, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(57, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(56, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(55, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(54, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(53, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(52, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(51, f))\\n                r := shr(f, r)\\n            }\\n            assembly {\\n                r := shr(127, mul(r, r))\\n                let f := shr(128, r)\\n                log_2 := or(log_2, shl(50, f))\\n            }\\n\\n            int256 log_sqrt10001 = log_2 * 255738958999603826347141; // 128.128 number.\\n\\n            int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);\\n            int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);\\n\\n            tick = tickLow == tickHi ? tickLow : getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x78121358a23f8c7f267cc4622b3cd0d94970018c637c61a9f2e99a0fa40b7bda\",\"license\":\"GPL-2.0-or-later\"},\"contracts/test/TickMathTest.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity >=0.8.0;\\n\\nimport \\\"../libraries/concentratedPool/TickMath.sol\\\";\\n\\ncontract TickMathTest {\\n    function getSqrtRatioAtTick(int24 tick) external pure returns (uint160) {\\n        return TickMath.getSqrtRatioAtTick(tick);\\n    }\\n\\n    function getTickAtSqrtRatio(uint160 sqrtPriceX96) external pure returns (int24) {\\n        return TickMath.getTickAtSqrtRatio(sqrtPriceX96);\\n    }\\n}\\n\",\"keccak256\":\"0xe1ee43444064e97070809cff8ece748cea75693481e5fe72fd41e3cf7cf06a2c\",\"license\":\"UNLICENSED\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      },
      "contracts/utils/RouterHelper.sol": {
        "RouterHelper": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "_bento",
                  "type": "address"
                },
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "_masterDeployer",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_wETH",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "PermitFailed",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "approveMasterContract",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                }
              ],
              "name": "batch",
              "outputs": [
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "bento",
              "outputs": [
                {
                  "internalType": "contract IBentoBoxMinimal",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "factory",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "deployData",
                  "type": "bytes"
                }
              ],
              "name": "deployPool",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "masterDeployer",
              "outputs": [
                {
                  "internalType": "contract IMasterDeployer",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitThis",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expiry",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitThisAllowed",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "batch(bytes[])": {
                "details": "The `msg.value` should not be trusted for any method callable from this function.Uses a modified version of the batch function - preventing multiple calls of the single input swap functions",
                "params": {
                  "data": "ABI-encoded params for each of the calls to make to this contract."
                },
                "returns": {
                  "results": "The results from each of the calls passed in via `data`."
                }
              },
              "permitThis(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "amount": "Token amount to grant spending right over.",
                  "deadline": "Termination for signed approval (UTC timestamp in seconds).",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "token": "Address of ERC-20 token.",
                  "v": "The recovery byte of the signature."
                }
              },
              "permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "expiry": "Termination for signed approval - UTC timestamp in seconds.",
                  "nonce": "Token owner's nonce - increases at each call to {permit}.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "token": "Address of ERC-20 token.",
                  "v": "The recovery byte of the signature."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_23715": {
                  "entryPoint": null,
                  "id": 23715,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_contract$_IBentoBoxMinimal_$2253t_contract$_IMasterDeployer_$2356t_address_fromMemory": {
                  "entryPoint": 178,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "validator_revert_address": {
                  "entryPoint": 255,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:720:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "178:404:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "224:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "233:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "236:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "226:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "226:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "226:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "199:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "208:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "195:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "195:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "220:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "191:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "191:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "188:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "249:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "268:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "262:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "262:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "253:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "312:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "287:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "287:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "287:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "327:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "337:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "327:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "351:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "376:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "387:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "372:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "372:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "366:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "366:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "355:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "425:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "400:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "400:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "400:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "442:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "452:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "442:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "468:40:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "493:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "504:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "489:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "489:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "483:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "483:25:64"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "472:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "542:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "517:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "517:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "517:33:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "559:17:64",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "569:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "559:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_contract$_IBentoBoxMinimal_$2253t_contract$_IMasterDeployer_$2356t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "128:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "139:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "151:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "159:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "167:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:568:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "632:86:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "696:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "705:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "708:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "698:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "698:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "698:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "655:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "666:5:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "681:3:64",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "686:1:64",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "677:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "677:11:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "690:1:64",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "673:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "673:19:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "662:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "662:31:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "652:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "652:42:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "645:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "645:50:64"
                              },
                              "nodeType": "YulIf",
                              "src": "642:70:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "621:5:64",
                            "type": ""
                          }
                        ],
                        "src": "587:131:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_contract$_IBentoBoxMinimal_$2253t_contract$_IMasterDeployer_$2356t_address_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        let value_2 := mload(add(headStart, 64))\n        validator_revert_address(value_2)\n        value2 := value_2\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60e060405234801561001057600080fd5b50604051610f5f380380610f5f83398101604081905261002f916100b2565b6001600160601b0319606084811b821660805283811b821660a05282901b1660c0526040805163577268d960e11b815290516001600160a01b0385169163aee4d1b291600480830192600092919082900301818387803b15801561009257600080fd5b505af11580156100a6573d6000803e3d6000fd5b50505050505050610117565b6000806000606084860312156100c757600080fd5b83516100d2816100ff565b60208501519093506100e3816100ff565b60408501519092506100f4816100ff565b809150509250925092565b6001600160a01b038116811461011457600080fd5b50565b60805160601c60a05160601c60c05160601c610e066101596000396000505060008181610171015261056501526000818160fd015261064a0152610e066000f3fe6080604052600436106100705760003560e01c80634da318271161004e5780634da31827146100eb578063776319811461011f578063a9b62c231461013f578063cf58879a1461015f57600080fd5b80631e897afb14610075578063250558dc1461009e578063403335a8146100d6575b600080fd5b61008861008336600461096b565b610193565b6040516100959190610bbe565b60405180910390f35b6100b16100ac36600461088c565b610525565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610095565b6100e96100e4366004610aab565b6105f8565b005b3480156100f757600080fd5b506100b17f000000000000000000000000000000000000000000000000000000000000000081565b34801561012b57600080fd5b506100e961013a366004610911565b6106c0565b34801561014b57600080fd5b506100e961015a366004610911565b6107ed565b34801561016b57600080fd5b506100b17f000000000000000000000000000000000000000000000000000000000000000081565b60608167ffffffffffffffff8111156101ae576101ae610d7c565b6040519080825280602002602001820160405280156101e157816020015b60608152602001906001900390816101cc5790505b5090506000805b8381101561051d57600061025386868481811061020757610207610d4d565b90506020028101906102199190610c51565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061084b92505050565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f0f93d4390000000000000000000000000000000000000000000000000000000014806102e657507fffffffff0000000000000000000000000000000000000000000000000000000081167f9fa7449100000000000000000000000000000000000000000000000000000000145b15610361578215610358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f537761702063616c6c656420747769636500000000000000000000000000000060448201526064015b60405180910390fd5b6001925061040d565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f1e897afb00000000000000000000000000000000000000000000000000000000141561040d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e65737465642042617463680000000000000000000000000000000000000000604482015260640161034f565b6000803088888681811061042357610423610d4d565b90506020028101906104359190610c51565b604051610443929190610b28565b600060405180830381855af49150503d806000811461047e576040519150601f19603f3d011682016040523d82523d6000602084013e610483565b606091505b5091509150816104e95760448151101561049c57600080fd5b600481019050808060200190518101906104b691906109e0565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034f9190610c3e565b808685815181106104fc576104fc610d4d565b6020026020010181905250505050808061051590610ced565b9150506101e8565b505092915050565b6040517f250558dc00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063250558dc9061059e90879087908790600401610b54565b602060405180830381600087803b1580156105b857600080fd5b505af11580156105cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f09190610868565b949350505050565b6040517fc0a47c930000000000000000000000000000000000000000000000000000000081523360048201523060248201526001604482015260ff841660648201526084810183905260a481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063c0a47c939060c401600060405180830381600087803b1580156106a357600080fd5b505af11580156106b7573d6000803e3d6000fd5b50505050505050565b6040513360248201523060448201526064810186905260848101859052600160a482015260ff841660c482015260e48101839052610104810182905260009073ffffffffffffffffffffffffffffffffffffffff881690638fcbaf0c90610124015b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516107709190610b38565b6000604051808303816000865af19150503d80600081146107ad576040519150601f19603f3d011682016040523d82523d6000602084013e6107b2565b606091505b50509050806106b7576040517fb78cb0dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051336024820152306044820152606481018690526084810185905260ff841660a482015260c4810183905260e4810182905260009073ffffffffffffffffffffffffffffffffffffffff88169063d505accf9061010401610722565b6020015190565b803560ff8116811461086357600080fd5b919050565b60006020828403121561087a57600080fd5b815161088581610dab565b9392505050565b6000806000604084860312156108a157600080fd5b83356108ac81610dab565b9250602084013567ffffffffffffffff808211156108c957600080fd5b818601915086601f8301126108dd57600080fd5b8135818111156108ec57600080fd5b8760208285010111156108fe57600080fd5b6020830194508093505050509250925092565b60008060008060008060c0878903121561092a57600080fd5b863561093581610dab565b9550602087013594506040870135935061095160608801610852565b92506080870135915060a087013590509295509295509295565b6000806020838503121561097e57600080fd5b823567ffffffffffffffff8082111561099657600080fd5b818501915085601f8301126109aa57600080fd5b8135818111156109b957600080fd5b8660208260051b85010111156109ce57600080fd5b60209290920196919550909350505050565b6000602082840312156109f257600080fd5b815167ffffffffffffffff80821115610a0a57600080fd5b818401915084601f830112610a1e57600080fd5b815181811115610a3057610a30610d7c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a7657610a76610d7c565b81604052828152876020848701011115610a8f57600080fd5b610aa0836020830160208801610cbd565b979650505050505050565b600080600060608486031215610ac057600080fd5b610ac984610852565b95602085013595506040909401359392505050565b60008151808452610af6816020860160208601610cbd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8183823760009101908152919050565b60008251610b4a818460208701610cbd565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610c31577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452610c1f858351610ade565b94509285019290850190600101610be5565b5092979650505050505050565b6020815260006108856020830184610ade565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610c8657600080fd5b83018035915067ffffffffffffffff821115610ca157600080fd5b602001915036819003821315610cb657600080fd5b9250929050565b60005b83811015610cd8578181015183820152602001610cc0565b83811115610ce7576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d46577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610dcd57600080fd5b5056fea26469706673582212200f4c2a7d0487d07cf2b0fcd151b13b05cfead67cbecbb76e3ff9f206e1211f9564736f6c63430008070033",
              "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xF5F CODESIZE SUB DUP1 PUSH2 0xF5F DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xB2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP5 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP4 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xC0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x577268D9 PUSH1 0xE1 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0xAEE4D1B2 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP PUSH2 0x117 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 MLOAD PUSH2 0xD2 DUP2 PUSH2 0xFF JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0xE3 DUP2 PUSH2 0xFF JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0xF4 DUP2 PUSH2 0xFF JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0xE06 PUSH2 0x159 PUSH1 0x0 CODECOPY PUSH1 0x0 POP POP PUSH1 0x0 DUP2 DUP2 PUSH2 0x171 ADD MSTORE PUSH2 0x565 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH1 0xFD ADD MSTORE PUSH2 0x64A ADD MSTORE PUSH2 0xE06 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4DA31827 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0x77631981 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0xA9B62C23 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1E897AFB EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x250558DC EQ PUSH2 0x9E JUMPI DUP1 PUSH4 0x403335A8 EQ PUSH2 0xD6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88 PUSH2 0x83 CALLDATASIZE PUSH1 0x4 PUSH2 0x96B JUMP JUMPDEST PUSH2 0x193 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x95 SWAP2 SWAP1 PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB1 PUSH2 0xAC CALLDATASIZE PUSH1 0x4 PUSH2 0x88C JUMP JUMPDEST PUSH2 0x525 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x95 JUMP JUMPDEST PUSH2 0xE9 PUSH2 0xE4 CALLDATASIZE PUSH1 0x4 PUSH2 0xAAB JUMP JUMPDEST PUSH2 0x5F8 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB1 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE9 PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0x911 JUMP JUMPDEST PUSH2 0x6C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE9 PUSH2 0x15A CALLDATASIZE PUSH1 0x4 PUSH2 0x911 JUMP JUMPDEST PUSH2 0x7ED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB1 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AE JUMPI PUSH2 0x1AE PUSH2 0xD7C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1E1 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1CC JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x51D JUMPI PUSH1 0x0 PUSH2 0x253 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x207 JUMPI PUSH2 0x207 PUSH2 0xD4D JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x219 SWAP2 SWAP1 PUSH2 0xC51 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x84B SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF93D43900000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2E6 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x9FA7449100000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0x361 JUMPI DUP3 ISZERO PUSH2 0x358 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537761702063616C6C6564207477696365000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SWAP3 POP PUSH2 0x40D JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1E897AFB00000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x40D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E65737465642042617463680000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x34F JUMP JUMPDEST PUSH1 0x0 DUP1 ADDRESS DUP9 DUP9 DUP7 DUP2 DUP2 LT PUSH2 0x423 JUMPI PUSH2 0x423 PUSH2 0xD4D JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x435 SWAP2 SWAP1 PUSH2 0xC51 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x443 SWAP3 SWAP2 SWAP1 PUSH2 0xB28 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x47E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x483 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x4E9 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x49C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4B6 SWAP2 SWAP1 PUSH2 0x9E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x34F SWAP2 SWAP1 PUSH2 0xC3E JUMP JUMPDEST DUP1 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x4FC JUMPI PUSH2 0x4FC PUSH2 0xD4D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP POP DUP1 DUP1 PUSH2 0x515 SWAP1 PUSH2 0xCED JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1E8 JUMP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x250558DC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x250558DC SWAP1 PUSH2 0x59E SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0xB54 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5F0 SWAP2 SWAP1 PUSH2 0x868 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC0A47C9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0xFF DUP5 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xC0A47C93 SWAP1 PUSH1 0xC4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xFF DUP5 AND PUSH1 0xC4 DUP3 ADD MSTORE PUSH1 0xE4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH2 0x104 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0x8FCBAF0C SWAP1 PUSH2 0x124 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x770 SWAP2 SWAP1 PUSH2 0xB38 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7AD JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7B2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x6B7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB78CB0DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLER PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xFF DUP5 AND PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xC4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xE4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0x104 ADD PUSH2 0x722 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x863 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x87A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x885 DUP2 PUSH2 0xDAB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x8A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x8AC DUP2 PUSH2 0xDAB JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x8C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x8DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x8EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x8FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x92A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x935 DUP2 PUSH2 0xDAB JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x951 PUSH1 0x60 DUP9 ADD PUSH2 0x852 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x97E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x996 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x9CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xA0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0xA30 JUMPI PUSH2 0xA30 PUSH2 0xD7C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xA76 JUMPI PUSH2 0xA76 PUSH2 0xD7C JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xA8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAA0 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0xCBD JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xAC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAC9 DUP5 PUSH2 0x852 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xAF6 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xB4A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xCBD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x40 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0x60 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0x60 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xC31 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0xC1F DUP6 DUP4 MLOAD PUSH2 0xADE JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xBE5 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x885 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0xC86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xCA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0xCB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCD8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCC0 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xCE7 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xD46 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xDCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF 0x4C 0x2A PUSH30 0x487D07CF2B0FCD151B13B05CFEAD67CBECBB76E3FF9F206E1211F956473 PUSH16 0x6C634300080700330000000000000000 ",
              "sourceMap": "267:6037:59:-:0;;;707:245;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;832:14:59;;;;;;;;856:32;;;;;;;898:12;;;;;;920:25;;;-1:-1:-1;;;920:25:59;;;;-1:-1:-1;;;;;832:14:59;;;920:23;;:25;;;;;;;;;;;;;;;832:14;920:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;707:245;;;267:6037;;14:568:64;151:6;159;167;220:2;208:9;199:7;195:23;191:32;188:52;;;236:1;233;226:12;188:52;268:9;262:16;287:31;312:5;287:31;:::i;:::-;387:2;372:18;;366:25;337:5;;-1:-1:-1;400:33:64;366:25;400:33;:::i;:::-;504:2;489:18;;483:25;452:7;;-1:-1:-1;517:33:64;483:25;517:33;:::i;:::-;569:7;559:17;;;14:568;;;;;:::o;587:131::-;-1:-1:-1;;;;;662:31:64;;652:42;;642:70;;708:1;705;698:12;642:70;587:131;:::o;:::-;267:6037:59;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@approveMasterContract_23877": {
                  "entryPoint": 1528,
                  "id": 23877,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@batch_23835": {
                  "entryPoint": 403,
                  "id": 23835,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@bento_23672": {
                  "entryPoint": null,
                  "id": 23672,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@deployPool_23851": {
                  "entryPoint": 1317,
                  "id": 23851,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@getSelector_24069": {
                  "entryPoint": 2123,
                  "id": 24069,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@masterDeployer_23676": {
                  "entryPoint": null,
                  "id": 23676,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@permitThisAllowed_24372": {
                  "entryPoint": 1728,
                  "id": 24372,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@permitThis_24327": {
                  "entryPoint": 2029,
                  "id": 24327,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 2152,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_bytes_calldata_ptr": {
                  "entryPoint": 2188,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32": {
                  "entryPoint": 2321,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 6
                },
                "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 2411,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_string_memory_ptr_fromMemory": {
                  "entryPoint": 2528,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint8t_bytes32t_bytes32": {
                  "entryPoint": 2731,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_uint8": {
                  "entryPoint": 2130,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_bytes": {
                  "entryPoint": 2782,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 2856,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 2872,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_bool_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_bool_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 7,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 9,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 8,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bytes_calldata_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 2900,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 3006,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 3134,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_ba4a1792a182449048dd70ad064f813fc751bedb907aa87961069a6b2384362e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_dc4063f98f18deb853a7e9314b9d1a8e8fa2d9ff6e9d1a2c4b8c202c936285cd__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "access_calldata_tail_t_bytes_calldata_ptr": {
                  "entryPoint": 3153,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "copy_memory_to_memory": {
                  "entryPoint": 3261,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "increment_t_uint256": {
                  "entryPoint": 3309,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x32": {
                  "entryPoint": 3405,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 3452,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 3499,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:11476:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "61:109:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "71:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "93:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "80:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "80:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "71:5:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "148:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "157:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "160:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "150:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "150:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "150:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "122:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "133:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "140:4:64",
                                            "type": "",
                                            "value": "0xff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "129:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "129:16:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "119:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "119:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "112:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "112:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "109:55:64"
                            }
                          ]
                        },
                        "name": "abi_decode_uint8",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "40:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "51:5:64",
                            "type": ""
                          }
                        ],
                        "src": "14:156:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "256:170:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "302:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "311:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "314:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "304:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "304:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "304:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "277:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "286:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "273:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "273:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "298:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "269:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "269:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "266:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "327:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "346:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "340:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "340:16:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "331:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "390:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "365:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "365:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "365:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "405:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "415:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "405:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "222:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "233:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "245:6:64",
                            "type": ""
                          }
                        ],
                        "src": "175:251:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "537:620:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "583:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "592:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "595:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "585:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "585:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "585:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "558:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "567:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "554:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "554:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "579:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "550:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "550:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "547:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "608:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "634:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "621:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "621:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "612:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "678:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "653:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "653:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "653:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "693:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "703:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "693:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "717:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "748:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "759:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "744:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "744:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "731:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "731:32:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "721:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "772:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "782:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "776:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "827:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "836:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "839:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "829:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "829:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "829:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "815:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "823:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "812:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "812:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "809:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "852:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "866:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "877:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "862:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "862:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "856:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "932:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "941:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "944:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "934:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "934:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "934:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "911:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "915:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "907:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "907:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "922:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "903:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "903:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "896:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "896:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "893:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "957:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "984:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "971:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "971:16:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "961:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1014:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1023:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1026:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1016:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1016:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1016:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1002:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1010:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "999:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "999:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "996:34:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1080:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1089:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1092:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1082:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1082:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1082:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "1053:2:64"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1057:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1049:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1049:15:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1066:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1045:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1045:24:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "1071:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1042:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1042:37:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1039:57:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1105:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1119:2:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1123:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1115:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1115:11:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1105:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1135:16:64",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "1145:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1135:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "487:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "498:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "510:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "518:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "526:6:64",
                            "type": ""
                          }
                        ],
                        "src": "431:726:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1315:439:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1362:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1371:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1374:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1364:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1364:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1364:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1336:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1345:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1332:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1332:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1357:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1328:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1328:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1325:53:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1387:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1413:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1400:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1400:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1391:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1457:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1432:24:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1432:31:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1432:31:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1472:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1482:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1472:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1496:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1523:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1534:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1519:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1519:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1506:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1506:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1496:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1547:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1574:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1585:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1570:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1570:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1557:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1557:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1547:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1598:46:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1629:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1640:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1625:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1625:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint8",
                                  "nodeType": "YulIdentifier",
                                  "src": "1608:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1608:36:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "1598:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1653:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1680:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1691:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1676:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1676:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1663:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1663:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "1653:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1705:43:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1732:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1743:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1728:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1728:19:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1715:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1715:33:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "1705:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1241:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1252:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1264:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1272:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1280:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1288:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1296:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "1304:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1162:592:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1875:510:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1921:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1930:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1933:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1923:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1923:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1923:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1896:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1905:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1892:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1892:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1917:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1888:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1888:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "1885:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1946:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1973:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1960:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1960:23:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1950:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1992:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2002:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1996:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2047:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2056:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2059:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2049:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2049:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2049:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2035:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2043:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2032:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2032:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2029:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2072:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2086:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2097:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2082:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2082:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2076:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2152:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2161:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2164:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2154:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2154:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2154:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2131:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2135:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2127:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2127:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2142:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2123:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2123:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2116:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2116:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2113:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2177:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2204:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2191:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2191:16:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2181:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2234:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2243:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2246:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2236:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2236:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2236:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2222:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2230:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2219:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2219:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2216:34:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2308:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2317:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2320:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2310:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2310:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2310:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2273:2:64"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2281:1:64",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2284:6:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "2277:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2277:14:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2269:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2269:23:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2294:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2265:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2265:32:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2299:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2262:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2262:45:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2259:65:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2333:21:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2347:2:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2351:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2343:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2343:11:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2333:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2363:16:64",
                              "value": {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "2373:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2363:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1833:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1844:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1856:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1864:6:64",
                            "type": ""
                          }
                        ],
                        "src": "1759:626:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2481:852:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2527:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2536:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2539:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2529:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2529:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2529:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2502:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2511:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2498:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2498:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2523:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2494:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2494:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2491:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2552:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2572:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2566:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2566:16:64"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2556:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2591:28:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2601:18:64",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2595:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2646:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2655:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2658:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2648:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2648:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2648:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2634:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2642:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2631:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2631:14:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2628:34:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2671:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2685:9:64"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2696:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2681:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2681:22:64"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2675:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2751:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2760:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2763:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2753:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2753:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2753:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "2730:2:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2734:4:64",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2726:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2726:13:64"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2741:7:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2722:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2722:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2715:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2715:35:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2712:55:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2776:19:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2792:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2786:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2786:9:64"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "2780:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2818:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2820:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2820:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2820:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2810:2:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2814:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2807:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2807:10:64"
                              },
                              "nodeType": "YulIf",
                              "src": "2804:36:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2849:76:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2859:66:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "2853:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2934:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2954:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2948:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2948:9:64"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2938:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2966:71:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2988:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "_3",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3012:2:64"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3016:4:64",
                                                    "type": "",
                                                    "value": "0x1f"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3008:3:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3008:13:64"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "3023:2:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "and",
                                              "nodeType": "YulIdentifier",
                                              "src": "3004:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3004:22:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3028:2:64",
                                            "type": "",
                                            "value": "63"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3000:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3000:31:64"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "3033:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2996:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2996:40:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2984:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2984:53:64"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2970:10:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3096:22:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "3098:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3098:18:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3098:18:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3055:10:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3067:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3052:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3052:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3075:10:64"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3087:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3072:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3072:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "3049:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3049:46:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3046:72:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3134:2:64",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3138:10:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3127:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3127:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3127:22:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3165:6:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3173:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3158:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3158:18:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3158:18:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3222:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3231:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3234:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3224:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3224:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3224:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "3199:2:64"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "3203:2:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3195:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3195:11:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3208:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3191:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3191:20:64"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3213:7:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3188:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3188:33:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3185:53:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3273:2:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3277:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3269:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3269:11:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3286:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3294:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3282:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3282:15:64"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "3299:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3247:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3247:55:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3247:55:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3311:16:64",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "3321:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3311:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2447:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2458:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2470:6:64",
                            "type": ""
                          }
                        ],
                        "src": "2390:943:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3440:216:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3486:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3495:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3498:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3488:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3488:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3488:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3461:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3470:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3457:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3457:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3482:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3453:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3453:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "3450:52:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3511:37:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3538:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_uint8",
                                  "nodeType": "YulIdentifier",
                                  "src": "3521:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3521:27:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3511:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3557:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3584:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3595:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3580:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3580:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3567:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3567:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3557:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3608:42:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3635:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3646:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3631:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3631:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3618:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3618:32:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3608:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint8t_bytes32t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3390:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3401:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3413:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3421:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3429:6:64",
                            "type": ""
                          }
                        ],
                        "src": "3338:318:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3710:267:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3720:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3740:5:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3734:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3734:12:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "3724:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3762:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3767:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3755:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3755:19:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3755:19:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3809:5:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3816:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3805:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3805:16:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3827:3:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3832:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3823:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3823:14:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3839:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "3783:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3783:63:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3783:63:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3855:116:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3870:3:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "3883:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3891:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "3879:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3879:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3896:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3875:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3875:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3866:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3866:98:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3966:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3862:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3862:109:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3855:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3687:5:64",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3694:3:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3702:3:64",
                            "type": ""
                          }
                        ],
                        "src": "3661:316:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4129:124:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4152:3:64"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4157:6:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4165:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "4139:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4139:33:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4139:33:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4181:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4195:3:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4200:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4191:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4191:16:64"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4185:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4223:2:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4227:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4216:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4216:13:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4216:13:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4238:9:64",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "4245:2:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "4238:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4097:3:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4102:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4110:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4121:3:64",
                            "type": ""
                          }
                        ],
                        "src": "3982:271:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4395:137:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4405:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "4425:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4419:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4419:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "4409:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4467:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4475:4:64",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4463:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4463:17:64"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4482:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4487:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "4441:21:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4441:53:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4441:53:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4503:23:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4514:3:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "4519:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4510:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4510:16:64"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "4503:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4371:3:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4376:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4387:3:64",
                            "type": ""
                          }
                        ],
                        "src": "4258:274:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4638:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4648:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4660:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4671:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4656:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4656:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4648:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4690:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4705:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4713:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4701:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4701:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4683:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4683:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4683:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4607:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4618:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4629:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4537:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4999:400:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5009:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5021:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5032:3:64",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5017:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5017:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5009:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5045:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5055:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5049:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5113:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5128:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5136:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5124:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5124:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5106:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5106:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5106:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5160:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5171:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5156:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5156:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5180:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5188:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5176:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5176:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5149:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5149:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5149:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5212:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5223:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5208:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5208:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "5242:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "5235:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5235:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "5228:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5228:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5201:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5201:50:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5201:50:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5271:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5282:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5267:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5267:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value3",
                                        "nodeType": "YulIdentifier",
                                        "src": "5291:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5299:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5287:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5287:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5260:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5260:45:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5260:45:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5325:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5336:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5321:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5321:19:64"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "5342:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5314:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5314:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5314:35:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5369:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5380:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5365:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5365:19:64"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "5386:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5358:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5358:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5358:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_bool_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_bool_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4928:9:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "4939:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "4947:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4955:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4963:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4971:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4979:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4990:4:64",
                            "type": ""
                          }
                        ],
                        "src": "4768:631:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5691:488:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "5701:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5713:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5724:3:64",
                                    "type": "",
                                    "value": "256"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5709:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5709:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "5701:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5737:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5747:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5741:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5805:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "5820:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5828:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5816:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5816:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5798:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5798:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5798:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5852:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5863:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5848:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5848:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5872:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5880:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "5868:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5868:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5841:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5841:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5841:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5904:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5915:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5900:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5900:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5920:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5893:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5893:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5893:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5947:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5958:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5943:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5943:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "5963:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5936:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5936:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5936:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5990:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6001:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5986:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5986:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value4",
                                            "nodeType": "YulIdentifier",
                                            "src": "6021:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "6014:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6014:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "6007:6:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6007:22:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5979:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5979:51:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5979:51:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6050:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6061:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6046:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6046:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value5",
                                        "nodeType": "YulIdentifier",
                                        "src": "6071:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6079:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6067:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6067:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6039:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6039:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6039:46:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6105:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6116:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6101:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6101:19:64"
                                  },
                                  {
                                    "name": "value6",
                                    "nodeType": "YulIdentifier",
                                    "src": "6122:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6094:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6094:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6094:35:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6149:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6160:3:64",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6145:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6145:19:64"
                                  },
                                  {
                                    "name": "value7",
                                    "nodeType": "YulIdentifier",
                                    "src": "6166:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6138:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6138:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6138:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5604:9:64",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "5615:6:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "5623:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "5631:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "5639:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5647:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5655:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5663:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5671:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "5682:4:64",
                            "type": ""
                          }
                        ],
                        "src": "5404:775:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6449:428:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6459:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6471:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6482:3:64",
                                    "type": "",
                                    "value": "224"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6467:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6467:19:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6459:4:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6495:52:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6505:42:64",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6499:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6563:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "6578:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6586:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6574:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6574:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6556:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6556:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6556:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6610:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6621:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6606:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6606:18:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6630:6:64"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6638:2:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6626:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6626:15:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6599:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6599:43:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6599:43:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6662:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6673:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6658:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6658:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6678:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6651:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6651:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6651:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6705:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6716:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6701:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6701:18:64"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "6721:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6694:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6694:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6694:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6748:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6759:3:64",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6744:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6744:19:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "6769:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6777:4:64",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "6765:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6765:17:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6737:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6737:46:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6737:46:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6803:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6814:3:64",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6799:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6799:19:64"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "6820:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6792:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6792:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6792:35:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6847:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6858:3:64",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6843:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6843:19:64"
                                  },
                                  {
                                    "name": "value6",
                                    "nodeType": "YulIdentifier",
                                    "src": "6864:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6836:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6836:35:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6836:35:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6370:9:64",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "6381:6:64",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "6389:6:64",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "6397:6:64",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "6405:6:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6413:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6421:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6429:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "6440:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6184:693:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7039:410:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7056:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "7071:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7079:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7067:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7067:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7049:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7049:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7049:74:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7143:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7154:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7139:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7139:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7159:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7132:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7132:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7132:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7182:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7193:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7178:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7178:18:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7198:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7171:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7171:34:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7171:34:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7231:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7242:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7227:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7227:18:64"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7247:6:64"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7255:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "7214:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7214:48:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7214:48:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7286:9:64"
                                          },
                                          {
                                            "name": "value2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7297:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7282:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7282:22:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7306:2:64",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7278:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7278:31:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7311:1:64",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7271:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7271:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7271:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7322:121:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7338:9:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value2",
                                                "nodeType": "YulIdentifier",
                                                "src": "7357:6:64"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7365:2:64",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "7353:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7353:15:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7370:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "7349:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7349:88:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7334:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7334:104:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7440:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7330:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7330:113:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7322:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bytes_calldata_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6992:9:64",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7003:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7011:6:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7019:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7030:4:64",
                            "type": ""
                          }
                        ],
                        "src": "6882:567:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7623:690:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7633:12:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7643:2:64",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7637:2:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7654:32:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7672:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7683:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7668:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7668:18:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7658:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7702:9:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7713:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7695:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7695:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7695:21:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7725:17:64",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "7736:6:64"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "7729:3:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7751:27:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7771:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7765:5:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7765:13:64"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "7755:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7794:6:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7802:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7787:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7787:22:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7787:22:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7818:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7829:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7840:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7825:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7825:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "7818:3:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7852:53:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7874:9:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7889:1:64",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "7892:6:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "7885:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7885:14:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7870:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7870:30:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7902:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7866:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7866:39:64"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "7856:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7914:29:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7932:6:64"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7940:2:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7928:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7928:15:64"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7918:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7952:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7961:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "7956:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8020:264:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "8041:3:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "tail_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "8054:6:64"
                                                },
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "8062:9:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "8050:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "8050:22:64"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "8074:66:64",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "8046:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "8046:95:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "8034:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8034:108:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8034:108:64"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8155:49:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "8188:6:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "8182:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "8182:13:64"
                                        },
                                        {
                                          "name": "tail_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "8197:6:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_bytes",
                                        "nodeType": "YulIdentifier",
                                        "src": "8165:16:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8165:39:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8155:6:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8217:25:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "8231:6:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "8239:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "8227:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8227:15:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8217:6:64"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8255:19:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "8266:3:64"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "8271:2:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "8262:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8262:12:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "8255:3:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7982:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7985:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7979:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7979:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "7993:18:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7995:14:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "8004:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8007:1:64",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "8000:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8000:9:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "7995:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "7975:3:64",
                                "statements": []
                              },
                              "src": "7971:313:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8293:14:64",
                              "value": {
                                "name": "tail_2",
                                "nodeType": "YulIdentifier",
                                "src": "8301:6:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8293:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7592:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7603:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7614:4:64",
                            "type": ""
                          }
                        ],
                        "src": "7454:859:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8444:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8454:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8466:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8477:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8462:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8462:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8454:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8496:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8511:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8519:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8507:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8507:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8489:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8489:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8489:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8413:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8424:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8435:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8318:251:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8699:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8709:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8721:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8732:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8717:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8717:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8709:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8751:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8766:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8774:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8762:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8762:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8744:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8744:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8744:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8668:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8679:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8690:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8574:250:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8950:98:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8967:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8978:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8960:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8960:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8960:21:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8990:52:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9015:6:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9027:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9038:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9023:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9023:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "8998:16:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8998:44:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8990:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8919:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8930:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8941:4:64",
                            "type": ""
                          }
                        ],
                        "src": "8829:219:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9227:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9244:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9255:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9237:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9237:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9237:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9278:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9289:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9274:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9274:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9294:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9267:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9267:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9267:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9317:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9328:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9313:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9313:18:64"
                                  },
                                  {
                                    "hexValue": "4e6573746564204261746368",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9333:14:64",
                                    "type": "",
                                    "value": "Nested Batch"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9306:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9306:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9306:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9357:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9369:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9380:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9365:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9365:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9357:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ba4a1792a182449048dd70ad064f813fc751bedb907aa87961069a6b2384362e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9204:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9218:4:64",
                            "type": ""
                          }
                        ],
                        "src": "9053:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9568:167:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9585:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9596:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9578:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9578:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9578:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9619:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9630:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9615:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9615:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9635:2:64",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9608:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9608:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9608:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9658:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9669:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9654:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9654:18:64"
                                  },
                                  {
                                    "hexValue": "537761702063616c6c6564207477696365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "9674:19:64",
                                    "type": "",
                                    "value": "Swap called twice"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9647:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9647:47:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9647:47:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9703:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9715:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9726:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9711:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9711:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9703:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dc4063f98f18deb853a7e9314b9d1a8e8fa2d9ff6e9d1a2c4b8c202c936285cd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9545:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9559:4:64",
                            "type": ""
                          }
                        ],
                        "src": "9394:341:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9834:486:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9844:51:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "9883:11:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9870:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9870:25:64"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "9848:18:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10043:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10052:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10055:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10045:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10045:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10045:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "9918:18:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9946:12:64"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9946:14:64"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "9962:8:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "9942:3:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "9942:29:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9973:66:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9938:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9938:102:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "9914:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9914:127:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "9907:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9907:135:64"
                              },
                              "nodeType": "YulIf",
                              "src": "9904:155:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10068:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "10086:8:64"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "10096:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10082:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10082:33:64"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10072:6:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10124:30:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10147:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10134:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10134:20:64"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "10124:6:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10197:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10206:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10209:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10199:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10199:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10199:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10169:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10177:18:64",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10166:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10166:30:64"
                              },
                              "nodeType": "YulIf",
                              "src": "10163:50:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10222:25:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10234:6:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10242:4:64",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10230:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10230:17:64"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "10222:4:64"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10298:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10307:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10310:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10300:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10300:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10300:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "10263:4:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "10273:12:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10273:14:64"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "10289:6:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10269:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10269:27:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10259:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10259:38:64"
                              },
                              "nodeType": "YulIf",
                              "src": "10256:58:64"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "9791:8:64",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "9801:11:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "9817:4:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "9823:6:64",
                            "type": ""
                          }
                        ],
                        "src": "9740:580:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10378:205:64",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10388:10:64",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10397:1:64",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "10392:1:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10457:63:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "10482:3:64"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "10487:1:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "10478:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10478:11:64"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10501:3:64"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10506:1:64"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "10497:3:64"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "10497:11:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "10491:5:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10491:18:64"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10471:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10471:39:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10471:39:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "10418:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10421:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10415:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10415:13:64"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "10429:19:64",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10431:15:64",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "10440:1:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10443:2:64",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10436:3:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10436:10:64"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "10431:1:64"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "10411:3:64",
                                "statements": []
                              },
                              "src": "10407:113:64"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10546:31:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "10559:3:64"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "10564:6:64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "10555:3:64"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10555:16:64"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10573:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10548:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10548:27:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10548:27:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "10535:1:64"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10538:6:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10532:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10532:13:64"
                              },
                              "nodeType": "YulIf",
                              "src": "10529:48:64"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "10356:3:64",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "10361:3:64",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "10366:6:64",
                            "type": ""
                          }
                        ],
                        "src": "10325:258:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10635:302:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10734:168:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10755:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10758:77:64",
                                          "type": "",
                                          "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10748:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10748:88:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10748:88:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10856:1:64",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10859:4:64",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10849:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10849:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10849:15:64"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10884:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10887:4:64",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10877:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10877:15:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10877:15:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10651:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10658:66:64",
                                    "type": "",
                                    "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "10648:2:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10648:77:64"
                              },
                              "nodeType": "YulIf",
                              "src": "10645:257:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10911:20:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10922:5:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10929:1:64",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10918:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10918:13:64"
                              },
                              "variableNames": [
                                {
                                  "name": "ret",
                                  "nodeType": "YulIdentifier",
                                  "src": "10911:3:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "increment_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "10617:5:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "ret",
                            "nodeType": "YulTypedName",
                            "src": "10627:3:64",
                            "type": ""
                          }
                        ],
                        "src": "10588:349:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10974:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10991:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10994:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10984:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10984:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10984:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11088:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11091:4:64",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11081:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11081:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11081:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11112:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11115:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "11105:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11105:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11105:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "10942:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11163:152:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11180:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11183:77:64",
                                    "type": "",
                                    "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11173:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11173:88:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11173:88:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11277:1:64",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11280:4:64",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11270:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11270:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11270:15:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11301:1:64",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11304:4:64",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "11294:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11294:15:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11294:15:64"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "11131:184:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11365:109:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11452:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11461:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11464:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11454:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11454:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11454:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "11388:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "11399:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "11406:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "11395:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11395:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "11385:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11385:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "11378:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11378:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "11375:93:64"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "11354:5:64",
                            "type": ""
                          }
                        ],
                        "src": "11320:154:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_uint8(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, length), 32), dataEnd) { revert(0, 0) }\n        value1 := add(_2, 32)\n        value2 := length\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := abi_decode_uint8(add(headStart, 96))\n        value4 := calldataload(add(headStart, 128))\n        value5 := calldataload(add(headStart, 160))\n    }\n    function abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_2, 32), add(memPtr, 32), _3)\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_uint8t_bytes32t_bytes32(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_uint8(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address_t_bool_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_bool_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), iszero(iszero(value2)))\n        mstore(add(headStart, 96), and(value3, 0xff))\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_bool_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 256)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), iszero(iszero(value4)))\n        mstore(add(headStart, 160), and(value5, 0xff))\n        mstore(add(headStart, 192), value6)\n        mstore(add(headStart, 224), value7)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__to_t_address_t_address_t_uint256_t_uint256_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 224)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, 0xff))\n        mstore(add(headStart, 160), value5)\n        mstore(add(headStart, 192), value6)\n    }\n    function abi_encode_tuple_t_address_t_bytes_calldata_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), 64)\n        mstore(add(headStart, 64), value2)\n        calldatacopy(add(headStart, 96), value1, value2)\n        mstore(add(add(headStart, value2), 96), 0)\n        tail := add(add(headStart, and(add(value2, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 96)\n    }\n    function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, shl(5, length)), 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0))\n            tail_2 := abi_encode_bytes(mload(srcPtr), tail_2)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_contract$_IBentoBoxMinimal_$2253__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_contract$_IMasterDeployer_$2356__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_ba4a1792a182449048dd70ad064f813fc751bedb907aa87961069a6b2384362e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"Nested Batch\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_dc4063f98f18deb853a7e9314b9d1a8e8fa2d9ff6e9d1a2c4b8c202c936285cd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"Swap called twice\")\n        tail := add(headStart, 96)\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        ret := add(value, 1)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "23672": [
                  {
                    "length": 32,
                    "start": 253
                  },
                  {
                    "length": 32,
                    "start": 1610
                  }
                ],
                "23676": [
                  {
                    "length": 32,
                    "start": 369
                  },
                  {
                    "length": 32,
                    "start": 1381
                  }
                ]
              },
              "linkReferences": {},
              "object": "6080604052600436106100705760003560e01c80634da318271161004e5780634da31827146100eb578063776319811461011f578063a9b62c231461013f578063cf58879a1461015f57600080fd5b80631e897afb14610075578063250558dc1461009e578063403335a8146100d6575b600080fd5b61008861008336600461096b565b610193565b6040516100959190610bbe565b60405180910390f35b6100b16100ac36600461088c565b610525565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610095565b6100e96100e4366004610aab565b6105f8565b005b3480156100f757600080fd5b506100b17f000000000000000000000000000000000000000000000000000000000000000081565b34801561012b57600080fd5b506100e961013a366004610911565b6106c0565b34801561014b57600080fd5b506100e961015a366004610911565b6107ed565b34801561016b57600080fd5b506100b17f000000000000000000000000000000000000000000000000000000000000000081565b60608167ffffffffffffffff8111156101ae576101ae610d7c565b6040519080825280602002602001820160405280156101e157816020015b60608152602001906001900390816101cc5790505b5090506000805b8381101561051d57600061025386868481811061020757610207610d4d565b90506020028101906102199190610c51565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061084b92505050565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167f0f93d4390000000000000000000000000000000000000000000000000000000014806102e657507fffffffff0000000000000000000000000000000000000000000000000000000081167f9fa7449100000000000000000000000000000000000000000000000000000000145b15610361578215610358576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f537761702063616c6c656420747769636500000000000000000000000000000060448201526064015b60405180910390fd5b6001925061040d565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f1e897afb00000000000000000000000000000000000000000000000000000000141561040d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e65737465642042617463680000000000000000000000000000000000000000604482015260640161034f565b6000803088888681811061042357610423610d4d565b90506020028101906104359190610c51565b604051610443929190610b28565b600060405180830381855af49150503d806000811461047e576040519150601f19603f3d011682016040523d82523d6000602084013e610483565b606091505b5091509150816104e95760448151101561049c57600080fd5b600481019050808060200190518101906104b691906109e0565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034f9190610c3e565b808685815181106104fc576104fc610d4d565b6020026020010181905250505050808061051590610ced565b9150506101e8565b505092915050565b6040517f250558dc00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063250558dc9061059e90879087908790600401610b54565b602060405180830381600087803b1580156105b857600080fd5b505af11580156105cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f09190610868565b949350505050565b6040517fc0a47c930000000000000000000000000000000000000000000000000000000081523360048201523060248201526001604482015260ff841660648201526084810183905260a481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063c0a47c939060c401600060405180830381600087803b1580156106a357600080fd5b505af11580156106b7573d6000803e3d6000fd5b50505050505050565b6040513360248201523060448201526064810186905260848101859052600160a482015260ff841660c482015260e48101839052610104810182905260009073ffffffffffffffffffffffffffffffffffffffff881690638fcbaf0c90610124015b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516107709190610b38565b6000604051808303816000865af19150503d80600081146107ad576040519150601f19603f3d011682016040523d82523d6000602084013e6107b2565b606091505b50509050806106b7576040517fb78cb0dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051336024820152306044820152606481018690526084810185905260ff841660a482015260c4810183905260e4810182905260009073ffffffffffffffffffffffffffffffffffffffff88169063d505accf9061010401610722565b6020015190565b803560ff8116811461086357600080fd5b919050565b60006020828403121561087a57600080fd5b815161088581610dab565b9392505050565b6000806000604084860312156108a157600080fd5b83356108ac81610dab565b9250602084013567ffffffffffffffff808211156108c957600080fd5b818601915086601f8301126108dd57600080fd5b8135818111156108ec57600080fd5b8760208285010111156108fe57600080fd5b6020830194508093505050509250925092565b60008060008060008060c0878903121561092a57600080fd5b863561093581610dab565b9550602087013594506040870135935061095160608801610852565b92506080870135915060a087013590509295509295509295565b6000806020838503121561097e57600080fd5b823567ffffffffffffffff8082111561099657600080fd5b818501915085601f8301126109aa57600080fd5b8135818111156109b957600080fd5b8660208260051b85010111156109ce57600080fd5b60209290920196919550909350505050565b6000602082840312156109f257600080fd5b815167ffffffffffffffff80821115610a0a57600080fd5b818401915084601f830112610a1e57600080fd5b815181811115610a3057610a30610d7c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610a7657610a76610d7c565b81604052828152876020848701011115610a8f57600080fd5b610aa0836020830160208801610cbd565b979650505050505050565b600080600060608486031215610ac057600080fd5b610ac984610852565b95602085013595506040909401359392505050565b60008151808452610af6816020860160208601610cbd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8183823760009101908152919050565b60008251610b4a818460208701610cbd565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff8416815260406020820152816040820152818360608301376000818301606090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016010192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015610c31577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452610c1f858351610ade565b94509285019290850190600101610be5565b5092979650505050505050565b6020815260006108856020830184610ade565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610c8657600080fd5b83018035915067ffffffffffffffff821115610ca157600080fd5b602001915036819003821315610cb657600080fd5b9250929050565b60005b83811015610cd8578181015183820152602001610cc0565b83811115610ce7576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d46577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610dcd57600080fd5b5056fea26469706673582212200f4c2a7d0487d07cf2b0fcd151b13b05cfead67cbecbb76e3ff9f206e1211f9564736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4DA31827 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x4DA31827 EQ PUSH2 0xEB JUMPI DUP1 PUSH4 0x77631981 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0xA9B62C23 EQ PUSH2 0x13F JUMPI DUP1 PUSH4 0xCF58879A EQ PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1E897AFB EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x250558DC EQ PUSH2 0x9E JUMPI DUP1 PUSH4 0x403335A8 EQ PUSH2 0xD6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88 PUSH2 0x83 CALLDATASIZE PUSH1 0x4 PUSH2 0x96B JUMP JUMPDEST PUSH2 0x193 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x95 SWAP2 SWAP1 PUSH2 0xBBE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB1 PUSH2 0xAC CALLDATASIZE PUSH1 0x4 PUSH2 0x88C JUMP JUMPDEST PUSH2 0x525 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x95 JUMP JUMPDEST PUSH2 0xE9 PUSH2 0xE4 CALLDATASIZE PUSH1 0x4 PUSH2 0xAAB JUMP JUMPDEST PUSH2 0x5F8 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB1 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE9 PUSH2 0x13A CALLDATASIZE PUSH1 0x4 PUSH2 0x911 JUMP JUMPDEST PUSH2 0x6C0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xE9 PUSH2 0x15A CALLDATASIZE PUSH1 0x4 PUSH2 0x911 JUMP JUMPDEST PUSH2 0x7ED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB1 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AE JUMPI PUSH2 0x1AE PUSH2 0xD7C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1E1 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1CC JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x51D JUMPI PUSH1 0x0 PUSH2 0x253 DUP7 DUP7 DUP5 DUP2 DUP2 LT PUSH2 0x207 JUMPI PUSH2 0x207 PUSH2 0xD4D JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x219 SWAP2 SWAP1 PUSH2 0xC51 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x84B SWAP3 POP POP POP JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF93D43900000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2E6 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x9FA7449100000000000000000000000000000000000000000000000000000000 EQ JUMPDEST ISZERO PUSH2 0x361 JUMPI DUP3 ISZERO PUSH2 0x358 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x537761702063616C6C6564207477696365000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SWAP3 POP PUSH2 0x40D JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1E897AFB00000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x40D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E65737465642042617463680000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x34F JUMP JUMPDEST PUSH1 0x0 DUP1 ADDRESS DUP9 DUP9 DUP7 DUP2 DUP2 LT PUSH2 0x423 JUMPI PUSH2 0x423 PUSH2 0xD4D JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x435 SWAP2 SWAP1 PUSH2 0xC51 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x443 SWAP3 SWAP2 SWAP1 PUSH2 0xB28 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x47E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x483 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x4E9 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x49C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x4B6 SWAP2 SWAP1 PUSH2 0x9E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x34F SWAP2 SWAP1 PUSH2 0xC3E JUMP JUMPDEST DUP1 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x4FC JUMPI PUSH2 0x4FC PUSH2 0xD4D JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP POP DUP1 DUP1 PUSH2 0x515 SWAP1 PUSH2 0xCED JUMP JUMPDEST SWAP2 POP POP PUSH2 0x1E8 JUMP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x250558DC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x250558DC SWAP1 PUSH2 0x59E SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0xB54 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x5F0 SWAP2 SWAP1 PUSH2 0x868 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xC0A47C9300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0xFF DUP5 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH4 0xC0A47C93 SWAP1 PUSH1 0xC4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xFF DUP5 AND PUSH1 0xC4 DUP3 ADD MSTORE PUSH1 0xE4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH2 0x104 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0x8FCBAF0C SWAP1 PUSH2 0x124 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x770 SWAP2 SWAP1 PUSH2 0xB38 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7AD JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7B2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x6B7 JUMPI PUSH1 0x40 MLOAD PUSH32 0xB78CB0DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD CALLER PUSH1 0x24 DUP3 ADD MSTORE ADDRESS PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x84 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xFF DUP5 AND PUSH1 0xA4 DUP3 ADD MSTORE PUSH1 0xC4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xE4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0x104 ADD PUSH2 0x722 JUMP JUMPDEST PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x863 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x87A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x885 DUP2 PUSH2 0xDAB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x8A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x8AC DUP2 PUSH2 0xDAB JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x8C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP7 ADD SWAP2 POP DUP7 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x8DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x8EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x8FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 POP DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x92A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x935 DUP2 PUSH2 0xDAB JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH2 0x951 PUSH1 0x60 DUP9 ADD PUSH2 0x852 JUMP JUMPDEST SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x97E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x996 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x9CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x9F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xA0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xA1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0xA30 JUMPI PUSH2 0xA30 PUSH2 0xD7C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xA76 JUMPI PUSH2 0xA76 PUSH2 0xD7C JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xA8F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAA0 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0xCBD JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xAC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAC9 DUP5 PUSH2 0x852 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xAF6 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xB4A DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xCBD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE DUP2 PUSH1 0x40 DUP3 ADD MSTORE DUP2 DUP4 PUSH1 0x60 DUP4 ADD CALLDATACOPY PUSH1 0x0 DUP2 DUP4 ADD PUSH1 0x60 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND ADD ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xC31 JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0xC1F DUP6 DUP4 MLOAD PUSH2 0xADE JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0xBE5 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x885 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xADE JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0xC86 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xCA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0xCB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCD8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCC0 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0xCE7 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 EQ ISZERO PUSH2 0xD46 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xDCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF 0x4C 0x2A PUSH30 0x487D07CF2B0FCD151B13B05CFEAD67CBECBB76E3FF9F206E1211F956473 PUSH16 0x6C634300080700330000000000000000 ",
              "sourceMap": "267:6037:59:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1613:1295;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2914:169;;;;;;:::i;:::-;;:::i;:::-;;;4713:42:64;4701:55;;;4683:74;;4671:2;4656:18;2914:169:59;4537:226:64;3227:199:59;;;;;;:::i;:::-;;:::i;:::-;;350:39;;;;;;;;;;;;;;;1512:422:62;;;;;;;;;;-1:-1:-1;1512:422:62;;;;;:::i;:::-;;:::i;641:410::-;;;;;;;;;;-1:-1:-1;641:410:62;;;;;:::i;:::-;;:::i;449:47:59:-;;;;;;;;;;;;;;;1613:1295;1677:22;1733:4;1721:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1711:34:59;-1:-1:-1;1987:15:59;;2012:890;2032:15;;;2012:890;;;2068:15;2086:20;2098:4;;2103:1;2098:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2086:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2086:11:59;;-1:-1:-1;;;2086:20:59:i;:::-;2068:38;-1:-1:-1;2124:51:59;;;2136:39;2124:51;;:121;;-1:-1:-1;2179:66:59;;;2191:54;2179:66;2124:121;2120:331;;;2274:10;2273:11;2265:41;;;;;;;9596:2:64;2265:41:59;;;9578:21:64;9635:2;9615:18;;;9608:30;9674:19;9654:18;;;9647:47;9711:18;;2265:41:59;;;;;;;;;2337:4;2324:17;;2120:331;;;2388:31;;;2400:19;2388:31;;2380:56;;;;;;;9255:2:64;2380:56:59;;;9237:21:64;9294:2;9274:18;;;9267:30;9333:14;9313:18;;;9306:42;9365:18;;2380:56:59;9053:336:64;2380:56:59;2466:12;;2511:4;2530;;2535:1;2530:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2503:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2465:73;;;;2557:7;2552:307;;2685:2;2669:6;:13;:18;2665:32;;;2689:8;;;2665:32;2768:4;2760:6;2756:17;2746:27;;2826:6;2815:28;;;;;;;;;;;;:::i;:::-;2808:36;;;;;;;;;;;:::i;2552:307::-;2885:6;2872:7;2880:1;2872:10;;;;;;;;:::i;:::-;;;;;;:19;;;;2054:848;;;2049:3;;;;;:::i;:::-;;;;2012:890;;;;1701:1207;1613:1295;;;;:::o;2914:169::-;3030:46;;;;;3004:7;;3030:25;:14;:25;;;;:46;;3056:7;;3065:10;;;;3030:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3023:53;2914:169;-1:-1:-1;;;;2914:169:59:o;3227:199::-;3346:73;;;;;3378:10;3346:73;;;5106:34:64;3398:4:59;5156:18:64;;;5149:43;3405:4:59;5208:18:64;;;5201:50;5299:4;5287:17;;5267:18;;;5260:45;5321:19;;;5314:35;;;5365:19;;;5358:35;;;3346:5:59;:31;;;;;5017:19:64;;3346:73:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3227:199;;;:::o;1512:422:62:-;1719:91;;1754:10;1719:91;;;5798:34:64;1774:4:62;5848:18:64;;;5841:43;5900:18;;;5893:34;;;5943:18;;;5936:34;;;1796:4:62;5986:19:64;;;5979:51;6079:4;6067:17;;6046:19;;;6039:46;6101:19;;;6094:35;;;6145:19;;;6138:35;;;1690:12:62;;1708:10;;;;1742;;5709:19:64;;1719:91:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1708:103;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1689:122;;;1897:7;1892:35;;1913:14;;;;;;;;;;;;;;641:410;844:88;;879:10;844:88;;;6556:34:64;899:4:62;6606:18:64;;;6599:43;6658:18;;;6651:34;;;6701:18;;;6694:34;;;6777:4;6765:17;;6744:19;;;6737:46;6799:19;;;6792:35;;;6843:19;;;6836:35;;;815:12:62;;833:10;;;;867;;6467:19:64;;844:88:62;6184:693:64;6149:153:59;6282:2;6271:14;6265:21;;6149:153::o;14:156:64:-;80:20;;140:4;129:16;;119:27;;109:55;;160:1;157;150:12;109:55;14:156;;;:::o;175:251::-;245:6;298:2;286:9;277:7;273:23;269:32;266:52;;;314:1;311;304:12;266:52;346:9;340:16;365:31;390:5;365:31;:::i;:::-;415:5;175:251;-1:-1:-1;;;175:251:64:o;431:726::-;510:6;518;526;579:2;567:9;558:7;554:23;550:32;547:52;;;595:1;592;585:12;547:52;634:9;621:23;653:31;678:5;653:31;:::i;:::-;703:5;-1:-1:-1;759:2:64;744:18;;731:32;782:18;812:14;;;809:34;;;839:1;836;829:12;809:34;877:6;866:9;862:22;852:32;;922:7;915:4;911:2;907:13;903:27;893:55;;944:1;941;934:12;893:55;984:2;971:16;1010:2;1002:6;999:14;996:34;;;1026:1;1023;1016:12;996:34;1071:7;1066:2;1057:6;1053:2;1049:15;1045:24;1042:37;1039:57;;;1092:1;1089;1082:12;1039:57;1123:2;1119;1115:11;1105:21;;1145:6;1135:16;;;;;431:726;;;;;:::o;1162:592::-;1264:6;1272;1280;1288;1296;1304;1357:3;1345:9;1336:7;1332:23;1328:33;1325:53;;;1374:1;1371;1364:12;1325:53;1413:9;1400:23;1432:31;1457:5;1432:31;:::i;:::-;1482:5;-1:-1:-1;1534:2:64;1519:18;;1506:32;;-1:-1:-1;1585:2:64;1570:18;;1557:32;;-1:-1:-1;1608:36:64;1640:2;1625:18;;1608:36;:::i;:::-;1598:46;;1691:3;1680:9;1676:19;1663:33;1653:43;;1743:3;1732:9;1728:19;1715:33;1705:43;;1162:592;;;;;;;;:::o;1759:626::-;1856:6;1864;1917:2;1905:9;1896:7;1892:23;1888:32;1885:52;;;1933:1;1930;1923:12;1885:52;1973:9;1960:23;2002:18;2043:2;2035:6;2032:14;2029:34;;;2059:1;2056;2049:12;2029:34;2097:6;2086:9;2082:22;2072:32;;2142:7;2135:4;2131:2;2127:13;2123:27;2113:55;;2164:1;2161;2154:12;2113:55;2204:2;2191:16;2230:2;2222:6;2219:14;2216:34;;;2246:1;2243;2236:12;2216:34;2299:7;2294:2;2284:6;2281:1;2277:14;2273:2;2269:23;2265:32;2262:45;2259:65;;;2320:1;2317;2310:12;2259:65;2351:2;2343:11;;;;;2373:6;;-1:-1:-1;1759:626:64;;-1:-1:-1;;;;1759:626:64:o;2390:943::-;2470:6;2523:2;2511:9;2502:7;2498:23;2494:32;2491:52;;;2539:1;2536;2529:12;2491:52;2572:9;2566:16;2601:18;2642:2;2634:6;2631:14;2628:34;;;2658:1;2655;2648:12;2628:34;2696:6;2685:9;2681:22;2671:32;;2741:7;2734:4;2730:2;2726:13;2722:27;2712:55;;2763:1;2760;2753:12;2712:55;2792:2;2786:9;2814:2;2810;2807:10;2804:36;;;2820:18;;:::i;:::-;2954:2;2948:9;3016:4;3008:13;;2859:66;3004:22;;;3028:2;3000:31;2996:40;2984:53;;;3052:18;;;3072:22;;;3049:46;3046:72;;;3098:18;;:::i;:::-;3138:10;3134:2;3127:22;3173:2;3165:6;3158:18;3213:7;3208:2;3203;3199;3195:11;3191:20;3188:33;3185:53;;;3234:1;3231;3224:12;3185:53;3247:55;3299:2;3294;3286:6;3282:15;3277:2;3273;3269:11;3247:55;:::i;:::-;3321:6;2390:943;-1:-1:-1;;;;;;;2390:943:64:o;3338:318::-;3413:6;3421;3429;3482:2;3470:9;3461:7;3457:23;3453:32;3450:52;;;3498:1;3495;3488:12;3450:52;3521:27;3538:9;3521:27;:::i;:::-;3511:37;3595:2;3580:18;;3567:32;;-1:-1:-1;3646:2:64;3631:18;;;3618:32;;3338:318;-1:-1:-1;;;3338:318:64:o;3661:316::-;3702:3;3740:5;3734:12;3767:6;3762:3;3755:19;3783:63;3839:6;3832:4;3827:3;3823:14;3816:4;3809:5;3805:16;3783:63;:::i;:::-;3891:2;3879:15;3896:66;3875:88;3866:98;;;;3966:4;3862:109;;3661:316;-1:-1:-1;;3661:316:64:o;3982:271::-;4165:6;4157;4152:3;4139:33;4121:3;4191:16;;4216:13;;;4191:16;3982:271;-1:-1:-1;3982:271:64:o;4258:274::-;4387:3;4425:6;4419:13;4441:53;4487:6;4482:3;4475:4;4467:6;4463:17;4441:53;:::i;:::-;4510:16;;;;;4258:274;-1:-1:-1;;4258:274:64:o;6882:567::-;7079:42;7071:6;7067:55;7056:9;7049:74;7159:2;7154;7143:9;7139:18;7132:30;7198:6;7193:2;7182:9;7178:18;7171:34;7255:6;7247;7242:2;7231:9;7227:18;7214:48;7311:1;7282:22;;;7306:2;7278:31;;;7271:42;;;;7365:2;7353:15;;;7370:66;7349:88;7334:104;7330:113;;6882:567;-1:-1:-1;;6882:567:64:o;7454:859::-;7614:4;7643:2;7683;7672:9;7668:18;7713:2;7702:9;7695:21;7736:6;7771;7765:13;7802:6;7794;7787:22;7840:2;7829:9;7825:18;7818:25;;7902:2;7892:6;7889:1;7885:14;7874:9;7870:30;7866:39;7852:53;;7940:2;7932:6;7928:15;7961:1;7971:313;7985:6;7982:1;7979:13;7971:313;;;8074:66;8062:9;8054:6;8050:22;8046:95;8041:3;8034:108;8165:39;8197:6;8188;8182:13;8165:39;:::i;:::-;8155:49;-1:-1:-1;8262:12:64;;;;8227:15;;;;8007:1;8000:9;7971:313;;;-1:-1:-1;8301:6:64;;7454:859;-1:-1:-1;;;;;;;7454:859:64:o;8829:219::-;8978:2;8967:9;8960:21;8941:4;8998:44;9038:2;9027:9;9023:18;9015:6;8998:44;:::i;9740:580::-;9817:4;9823:6;9883:11;9870:25;9973:66;9962:8;9946:14;9942:29;9938:102;9918:18;9914:127;9904:155;;10055:1;10052;10045:12;9904:155;10082:33;;10134:20;;;-1:-1:-1;10177:18:64;10166:30;;10163:50;;;10209:1;10206;10199:12;10163:50;10242:4;10230:17;;-1:-1:-1;10273:14:64;10269:27;;;10259:38;;10256:58;;;10310:1;10307;10300:12;10256:58;9740:580;;;;;:::o;10325:258::-;10397:1;10407:113;10421:6;10418:1;10415:13;10407:113;;;10497:11;;;10491:18;10478:11;;;10471:39;10443:2;10436:10;10407:113;;;10538:6;10535:1;10532:13;10529:48;;;10573:1;10564:6;10559:3;10555:16;10548:27;10529:48;;10325:258;;;:::o;10588:349::-;10627:3;10658:66;10651:5;10648:77;10645:257;;;10758:77;10755:1;10748:88;10859:4;10856:1;10849:15;10887:4;10884:1;10877:15;10645:257;-1:-1:-1;10929:1:64;10918:13;;10588:349::o;10942:184::-;10994:77;10991:1;10984:88;11091:4;11088:1;11081:15;11115:4;11112:1;11105:15;11131:184;11183:77;11180:1;11173:88;11280:4;11277:1;11270:15;11304:4;11301:1;11294:15;11320:154;11406:42;11399:5;11395:54;11388:5;11385:65;11375:93;;11464:1;11461;11454:12;11375:93;11320:154;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "718000",
                "executionCost": "infinite",
                "totalCost": "infinite"
              },
              "external": {
                "approveMasterContract(uint8,bytes32,bytes32)": "infinite",
                "batch(bytes[])": "infinite",
                "bento()": "infinite",
                "deployPool(address,bytes)": "infinite",
                "masterDeployer()": "infinite",
                "permitThis(address,uint256,uint256,uint8,bytes32,bytes32)": "infinite",
                "permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)": "infinite"
              },
              "internal": {
                "balanceOfThis(address)": "infinite",
                "getSelector(bytes memory)": "infinite",
                "safeTransfer(address,address,uint256)": "infinite",
                "safeTransferETH(address,uint256)": "infinite",
                "safeTransferFrom(address,address,address,uint256)": "infinite",
                "withdrawFromWETH(uint256)": "infinite"
              }
            },
            "methodIdentifiers": {
              "approveMasterContract(uint8,bytes32,bytes32)": "403335a8",
              "batch(bytes[])": "1e897afb",
              "bento()": "4da31827",
              "deployPool(address,bytes)": "250558dc",
              "masterDeployer()": "cf58879a",
              "permitThis(address,uint256,uint256,uint8,bytes32,bytes32)": "a9b62c23",
              "permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)": "77631981"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IBentoBoxMinimal\",\"name\":\"_bento\",\"type\":\"address\"},{\"internalType\":\"contract IMasterDeployer\",\"name\":\"_masterDeployer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_wETH\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"PermitFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"approveMasterContract\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"batch\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bento\",\"outputs\":[{\"internalType\":\"contract IBentoBoxMinimal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"deployData\",\"type\":\"bytes\"}],\"name\":\"deployPool\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"masterDeployer\",\"outputs\":[{\"internalType\":\"contract IMasterDeployer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permitThis\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permitThisAllowed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"batch(bytes[])\":{\"details\":\"The `msg.value` should not be trusted for any method callable from this function.Uses a modified version of the batch function - preventing multiple calls of the single input swap functions\",\"params\":{\"data\":\"ABI-encoded params for each of the calls to make to this contract.\"},\"returns\":{\"results\":\"The results from each of the calls passed in via `data`.\"}},\"permitThis(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"amount\":\"Token amount to grant spending right over.\",\"deadline\":\"Termination for signed approval (UTC timestamp in seconds).\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"token\":\"Address of ERC-20 token.\",\"v\":\"The recovery byte of the signature.\"}},\"permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"expiry\":\"Termination for signed approval - UTC timestamp in seconds.\",\"nonce\":\"Token owner's nonce - increases at each call to {permit}.\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"token\":\"Address of ERC-20 token.\",\"v\":\"The recovery byte of the signature.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approveMasterContract(uint8,bytes32,bytes32)\":{\"notice\":\"Helper function to allow batching of BentoBox master contract approvals so the first trade can happen in one transaction.\"},\"batch(bytes[])\":{\"notice\":\"Provides batch function calls for this contract and returns the data from all of them if they all succeed. Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\"},\"bento()\":{\"notice\":\"BentoBox token vault.\"},\"masterDeployer()\":{\"notice\":\"Trident AMM master deployer contract.\"},\"permitThis(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Provides EIP-2612 signed approval for this contract to spend user tokens.\"},\"permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Provides DAI-derived signed approval for this contract to spend user tokens.\"}},\"notice\":\"Trident router helper contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/RouterHelper.sol\":\"RouterHelper\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/TridentRouter.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"./interfaces/IPool.sol\\\";\\nimport \\\"./interfaces/ITridentRouter.sol\\\";\\nimport \\\"./utils/RouterHelper.sol\\\";\\n\\n/// @notice Router contract that helps in swapping across Trident pools.\\ncontract TridentRouter is ITridentRouter, RouterHelper {\\n    /// @dev Used to ensure that `tridentSwapCallback` is called only by the authorized address.\\n    /// These are set when someone calls a flash swap and reset afterwards.\\n    address internal cachedMsgSender;\\n    address internal cachedPool;\\n\\n    mapping(address => bool) internal whitelistedPools;\\n\\n    constructor(\\n        IBentoBoxMinimal bento,\\n        IMasterDeployer masterDeployer,\\n        address wETH\\n    ) RouterHelper(bento, masterDeployer, wETH) {}\\n\\n    receive() external payable {\\n        require(msg.sender == wETH);\\n    }\\n\\n    /// @notice Swaps token A to token B directly. Swaps are done on `bento` tokens.\\n    /// @param params This includes the address of token A, pool, amount of token A to swap,\\n    /// minimum amount of token B after the swap and data required by the pool for the swap.\\n    /// @dev Ensure that the pool is trusted before calling this function. The pool can steal users' tokens.\\n    function exactInputSingle(ExactInputSingleParams calldata params) public payable returns (uint256 amountOut) {\\n        // @dev Prefund the pool with token A.\\n        bento.transfer(params.tokenIn, msg.sender, params.pool, params.amountIn);\\n        // @dev Trigger the swap in the pool.\\n        amountOut = IPool(params.pool).swap(params.data);\\n        // @dev Ensure that the slippage wasn't too much. This assumes that the pool is honest.\\n        require(amountOut >= params.amountOutMinimum, \\\"TOO_LITTLE_RECEIVED\\\");\\n    }\\n\\n    /// @notice Swaps token A to token B indirectly by using multiple hops.\\n    /// @param params This includes the addresses of the tokens, pools, amount of token A to swap,\\n    /// minimum amount of token B after the swap and data required by the pools for the swaps.\\n    /// @dev Ensure that the pools are trusted before calling this function. The pools can steal users' tokens.\\n    function exactInput(ExactInputParams calldata params) public payable returns (uint256 amountOut) {\\n        // @dev Pay the first pool directly.\\n        bento.transfer(params.tokenIn, msg.sender, params.path[0].pool, params.amountIn);\\n        // @dev Call every pool in the path.\\n        // Pool `N` should transfer its output tokens to pool `N+1` directly.\\n        // The last pool should transfer its output tokens to the user.\\n        // If the user wants to unwrap `wETH`, the final destination should be this contract and\\n        // a batch call should be made to `unwrapWETH`.\\n        for (uint256 i; i < params.path.length; i++) {\\n            // We don't necessarily need this check but saving users from themselves.\\n            isWhiteListed(params.path[i].pool);\\n            amountOut = IPool(params.path[i].pool).swap(params.path[i].data);\\n        }\\n        // @dev Ensure that the slippage wasn't too much. This assumes that the pool is honest.\\n        require(amountOut >= params.amountOutMinimum, \\\"TOO_LITTLE_RECEIVED\\\");\\n    }\\n\\n    /// @notice Swaps token A to token B by using callbacks.\\n    /// @param path Addresses of the pools and data required by the pools for the swaps.\\n    /// @param amountOutMinimum Minimum amount of token B after the swap.\\n    /// @dev Ensure that the pools are trusted before calling this function. The pools can steal users' tokens.\\n    /// This function will unlikely be used in production but it shows how to use callbacks. One use case will be arbitrage.\\n    function exactInputLazy(uint256 amountOutMinimum, Path[] calldata path) public payable returns (uint256 amountOut) {\\n        // @dev Call every pool in the path.\\n        // Pool `N` should transfer its output tokens to pool `N+1` directly.\\n        // The last pool should transfer its output tokens to the user.\\n        for (uint256 i; i < path.length; i++) {\\n            isWhiteListed(path[i].pool);\\n            // @dev The cached `msg.sender` is used as the funder when the callback happens.\\n            cachedMsgSender = msg.sender;\\n            // @dev The cached pool must be the address that calls the callback.\\n            cachedPool = path[i].pool;\\n            amountOut = IPool(path[i].pool).flashSwap(path[i].data);\\n        }\\n        // @dev Resets the `cachedPool` to get a refund.\\n        // `1` is used as the default value to avoid the storage slot being released.\\n        cachedMsgSender = address(1);\\n        cachedPool = address(1);\\n        require(amountOut >= amountOutMinimum, \\\"TOO_LITTLE_RECEIVED\\\");\\n    }\\n\\n    /// @notice Swaps token A to token B directly. It's the same as `exactInputSingle` except\\n    /// it takes raw ERC-20 tokens from the users and deposits them into `bento`.\\n    /// @param params This includes the address of token A, pool, amount of token A to swap,\\n    /// minimum amount of token B after the swap and data required by the pool for the swap.\\n    /// @dev Ensure that the pool is trusted before calling this function. The pool can steal users' tokens.\\n    function exactInputSingleWithNativeToken(ExactInputSingleParams calldata params) public payable returns (uint256 amountOut) {\\n        // @dev Deposits the native ERC-20 token from the user into the pool's `bento`.\\n        _depositToBentoBox(params.tokenIn, params.pool, params.amountIn);\\n        // @dev Trigger the swap in the pool.\\n        amountOut = IPool(params.pool).swap(params.data);\\n        // @dev Ensure that the slippage wasn't too much. This assumes that the pool is honest.\\n        require(amountOut >= params.amountOutMinimum, \\\"TOO_LITTLE_RECEIVED\\\");\\n    }\\n\\n    /// @notice Swaps token A to token B indirectly by using multiple hops. It's the same as `exactInput` except\\n    /// it takes raw ERC-20 tokens from the users and deposits them into `bento`.\\n    /// @param params This includes the addresses of the tokens, pools, amount of token A to swap,\\n    /// minimum amount of token B after the swap and data required by the pools for the swaps.\\n    /// @dev Ensure that the pools are trusted before calling this function. The pools can steal users' tokens.\\n    function exactInputWithNativeToken(ExactInputParams calldata params) public payable returns (uint256 amountOut) {\\n        // @dev Deposits the native ERC-20 token from the user into the pool's `bento`.\\n        _depositToBentoBox(params.tokenIn, params.path[0].pool, params.amountIn);\\n        // @dev Call every pool in the path.\\n        // Pool `N` should transfer its output tokens to pool `N+1` directly.\\n        // The last pool should transfer its output tokens to the user.\\n        for (uint256 i; i < params.path.length; i++) {\\n            isWhiteListed(params.path[i].pool);\\n            amountOut = IPool(params.path[i].pool).swap(params.path[i].data);\\n        }\\n        // @dev Ensure that the slippage wasn't too much. This assumes that the pool is honest.\\n        require(amountOut >= params.amountOutMinimum, \\\"TOO_LITTLE_RECEIVED\\\");\\n    }\\n\\n    /// @notice Swaps multiple input tokens to multiple output tokens using multiple paths, in different percentages.\\n    /// For example, you can swap 50 DAI + 100 USDC into 60% ETH and 40% BTC.\\n    /// @param params This includes everything needed for the swap. Look at the `ComplexPathParams` struct for more details.\\n    /// @dev This function is not optimized for single swaps and should only be used in complex cases where\\n    /// the amounts are large enough that minimizing slippage by using multiple paths is worth the extra gas.\\n    function complexPath(ComplexPathParams calldata params) public payable {\\n        // @dev Deposit all initial tokens to respective pools and initiate the swaps.\\n        // Input tokens come from the user - output goes to following pools.\\n        for (uint256 i; i < params.initialPath.length; i++) {\\n            if (params.initialPath[i].native) {\\n                _depositToBentoBox(params.initialPath[i].tokenIn, params.initialPath[i].pool, params.initialPath[i].amount);\\n            } else {\\n                bento.transfer(params.initialPath[i].tokenIn, msg.sender, params.initialPath[i].pool, params.initialPath[i].amount);\\n            }\\n            isWhiteListed(params.initialPath[i].pool);\\n            IPool(params.initialPath[i].pool).swap(params.initialPath[i].data);\\n        }\\n        // @dev Do all the middle swaps. Input comes from previous pools - output goes to following pools.\\n        for (uint256 i; i < params.percentagePath.length; i++) {\\n            uint256 balanceShares = bento.balanceOf(params.percentagePath[i].tokenIn, address(this));\\n            uint256 transferShares = (balanceShares * params.percentagePath[i].balancePercentage) / uint256(10)**8;\\n            bento.transfer(params.percentagePath[i].tokenIn, address(this), params.percentagePath[i].pool, transferShares);\\n            isWhiteListed(params.percentagePath[i].pool);\\n            IPool(params.percentagePath[i].pool).swap(params.percentagePath[i].data);\\n        }\\n        // @dev Do all the final swaps. Input comes from previous pools - output goes to the user.\\n        for (uint256 i; i < params.output.length; i++) {\\n            uint256 balanceShares = bento.balanceOf(params.output[i].token, address(this));\\n            require(balanceShares >= params.output[i].minAmount, \\\"TOO_LITTLE_RECEIVED\\\");\\n            if (params.output[i].unwrapBento) {\\n                bento.withdraw(params.output[i].token, address(this), params.output[i].to, 0, balanceShares);\\n            } else {\\n                bento.transfer(params.output[i].token, address(this), params.output[i].to, balanceShares);\\n            }\\n        }\\n    }\\n\\n    /// @notice Add liquidity to a pool.\\n    /// @param tokenInput Token address and amount to add as liquidity.\\n    /// @param pool Pool address to add liquidity to.\\n    /// @param minLiquidity Minimum output liquidity - caps slippage.\\n    /// @param data Data required by the pool to add liquidity.\\n    function addLiquidity(\\n        TokenInput[] memory tokenInput,\\n        address pool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) public payable returns (uint256 liquidity) {\\n        isWhiteListed(pool);\\n        // @dev Send all input tokens to the pool.\\n        for (uint256 i; i < tokenInput.length; i++) {\\n            if (tokenInput[i].native) {\\n                _depositToBentoBox(tokenInput[i].token, pool, tokenInput[i].amount);\\n            } else {\\n                bento.transfer(tokenInput[i].token, msg.sender, pool, tokenInput[i].amount);\\n            }\\n        }\\n        liquidity = IPool(pool).mint(data);\\n        require(liquidity >= minLiquidity, \\\"NOT_ENOUGH_LIQUIDITY_MINTED\\\");\\n    }\\n\\n    /// @notice Add liquidity to a pool using callbacks - same as `addLiquidity`, but now with callbacks.\\n    /// @dev The input tokens are sent to the pool during the callback.\\n    function addLiquidityLazy(\\n        address pool,\\n        uint256 minLiquidity,\\n        bytes calldata data\\n    ) public payable returns (uint256 liquidity) {\\n        isWhiteListed(pool);\\n        cachedMsgSender = msg.sender;\\n        cachedPool = pool;\\n        liquidity = IPool(pool).mint(data);\\n        cachedMsgSender = address(1);\\n        cachedPool = address(1);\\n        require(liquidity >= minLiquidity, \\\"NOT_ENOUGH_LIQUIDITY_MINTED\\\");\\n    }\\n\\n    /// @notice Burn liquidity tokens to get back `bento` tokens.\\n    /// @param pool Pool address.\\n    /// @param liquidity Amount of liquidity tokens to burn.\\n    /// @param data Data required by the pool to burn liquidity.\\n    /// @param minWithdrawals Minimum amount of `bento` tokens to be returned.\\n    function burnLiquidity(\\n        address pool,\\n        uint256 liquidity,\\n        bytes calldata data,\\n        IPool.TokenAmount[] memory minWithdrawals\\n    ) public {\\n        isWhiteListed(pool);\\n        safeTransferFrom(pool, msg.sender, pool, liquidity);\\n        IPool.TokenAmount[] memory withdrawnLiquidity = IPool(pool).burn(data);\\n        for (uint256 i; i < minWithdrawals.length; i++) {\\n            uint256 j;\\n            for (; j < withdrawnLiquidity.length; j++) {\\n                if (withdrawnLiquidity[j].token == minWithdrawals[i].token) {\\n                    require(withdrawnLiquidity[j].amount >= minWithdrawals[i].amount, \\\"TOO_LITTLE_RECEIVED\\\");\\n                    break;\\n                }\\n            }\\n            // @dev A token that is present in `minWithdrawals` is missing from `withdrawnLiquidity`.\\n            require(j < withdrawnLiquidity.length, \\\"INCORRECT_TOKEN_WITHDRAWN\\\");\\n        }\\n    }\\n\\n    /// @notice Burn liquidity tokens to get back `bento` tokens.\\n    /// @dev The tokens are swapped automatically and the output is in a single token.\\n    /// @param pool Pool address.\\n    /// @param liquidity Amount of liquidity tokens to burn.\\n    /// @param data Data required by the pool to burn liquidity.\\n    /// @param minWithdrawal Minimum amount of tokens to be returned.\\n    function burnLiquiditySingle(\\n        address pool,\\n        uint256 liquidity,\\n        bytes calldata data,\\n        uint256 minWithdrawal\\n    ) public {\\n        isWhiteListed(pool);\\n        // @dev Use 'liquidity = 0' for prefunding.\\n        safeTransferFrom(pool, msg.sender, pool, liquidity);\\n        uint256 withdrawn = IPool(pool).burnSingle(data);\\n        require(withdrawn >= minWithdrawal, \\\"TOO_LITTLE_RECEIVED\\\");\\n    }\\n\\n    /// @notice Used by the pool 'flashSwap' functionality to take input tokens from the user.\\n    function tridentSwapCallback(bytes calldata data) external {\\n        require(msg.sender == cachedPool, \\\"UNAUTHORIZED_CALLBACK\\\");\\n        TokenInput memory tokenInput = abi.decode(data, (TokenInput));\\n        // @dev Transfer the requested tokens to the pool.\\n        if (tokenInput.native) {\\n            _depositFromUserToBentoBox(tokenInput.token, cachedMsgSender, msg.sender, tokenInput.amount);\\n        } else {\\n            bento.transfer(tokenInput.token, cachedMsgSender, msg.sender, tokenInput.amount);\\n        }\\n        // @dev Resets the `msg.sender`'s authorization.\\n        cachedMsgSender = address(1);\\n    }\\n\\n    /// @notice Can be used by the pool 'mint' functionality to take tokens from the user.\\n    function tridentMintCallback(bytes calldata data) external {\\n        require(msg.sender == cachedPool, \\\"UNAUTHORIZED_CALLBACK\\\");\\n        TokenInput[] memory tokenInput = abi.decode(data, (TokenInput[]));\\n        // @dev Transfer the requested tokens to the pool.\\n        for (uint256 i; i < tokenInput.length; i++) {\\n            if (tokenInput[i].native) {\\n                _depositFromUserToBentoBox(tokenInput[i].token, cachedMsgSender, msg.sender, tokenInput[i].amount);\\n            } else {\\n                bento.transfer(tokenInput[i].token, cachedMsgSender, msg.sender, tokenInput[i].amount);\\n            }\\n        }\\n        // @dev Resets the `msg.sender`'s authorization.\\n        cachedMsgSender = address(1);\\n    }\\n\\n    /// @notice Recover mistakenly sent `bento` tokens.\\n    function sweepBentoBoxToken(\\n        address token,\\n        uint256 amount,\\n        address recipient\\n    ) external {\\n        bento.transfer(token, address(this), recipient, amount);\\n    }\\n\\n    /// @notice Recover mistakenly sent ERC-20 tokens.\\n    function sweepNativeToken(\\n        address token,\\n        uint256 amount,\\n        address recipient\\n    ) external {\\n        safeTransfer(token, recipient, amount);\\n    }\\n\\n    /// @notice Recover mistakenly sent ETH.\\n    function refundETH() external payable {\\n        if (address(this).balance != 0) safeTransferETH(msg.sender, address(this).balance);\\n    }\\n\\n    /// @notice Unwrap this contract's `wETH` into ETH\\n    function unwrapWETH(uint256 amountMinimum, address recipient) external {\\n        uint256 balanceWETH = balanceOfThis(wETH);\\n        require(balanceWETH >= amountMinimum, \\\"INSUFFICIENT_WETH\\\");\\n        if (balanceWETH != 0) {\\n            withdrawFromWETH(balanceWETH);\\n            safeTransferETH(recipient, balanceWETH);\\n        }\\n    }\\n\\n    /// @notice Deposit from the user's wallet into BentoBox.\\n    /// @dev Amount is the native token amount. We let BentoBox do the conversion into shares.\\n    function _depositToBentoBox(\\n        address token,\\n        address recipient,\\n        uint256 amount\\n    ) internal {\\n        bento.deposit{value: token == USE_ETHEREUM ? amount : 0}(token, msg.sender, recipient, amount, 0);\\n    }\\n\\n    /// @notice Same effect as _depositToBentoBox() but with a sender parameter.\\n    function _depositFromUserToBentoBox(\\n        address token,\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) internal {\\n        bento.deposit{value: token == USE_ETHEREUM ? amount : 0}(token, sender, recipient, amount, 0);\\n    }\\n\\n    function isWhiteListed(address pool) internal {\\n        if (!whitelistedPools[pool]) {\\n            require(masterDeployer.pools(pool), \\\"INVALID POOL\\\");\\n            whitelistedPools[pool] = true;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xf0fa741d0702a72762d9b01ad821b53d2d8a6d44673f94f1f53f93906622ea7a\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IBentoBoxMinimal.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\nimport \\\"../libraries/RebaseLibrary.sol\\\";\\n\\n/// @notice Minimal BentoBox vault interface.\\n/// @dev `token` is aliased as `address` from `IERC20` for simplicity.\\ninterface IBentoBoxMinimal {\\n    /// @notice Balance per ERC-20 token per account in shares.\\n    function balanceOf(address, address) external view returns (uint256);\\n\\n    /// @dev Helper function to represent an `amount` of `token` in shares.\\n    /// @param token The ERC-20 token.\\n    /// @param amount The `token` amount.\\n    /// @param roundUp If the result `share` should be rounded up.\\n    /// @return share The token amount represented in shares.\\n    function toShare(\\n        address token,\\n        uint256 amount,\\n        bool roundUp\\n    ) external view returns (uint256 share);\\n\\n    /// @dev Helper function to represent shares back into the `token` amount.\\n    /// @param token The ERC-20 token.\\n    /// @param share The amount of shares.\\n    /// @param roundUp If the result should be rounded up.\\n    /// @return amount The share amount back into native representation.\\n    function toAmount(\\n        address token,\\n        uint256 share,\\n        bool roundUp\\n    ) external view returns (uint256 amount);\\n\\n    /// @notice Registers this contract so that users can approve it for BentoBox.\\n    function registerProtocol() external;\\n\\n    /// @notice Deposit an amount of `token` represented in either `amount` or `share`.\\n    /// @param token The ERC-20 token to deposit.\\n    /// @param from which account to pull the tokens.\\n    /// @param to which account to push the tokens.\\n    /// @param amount Token amount in native representation to deposit.\\n    /// @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\\n    /// @return amountOut The amount deposited.\\n    /// @return shareOut The deposited amount represented in shares.\\n    function deposit(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external payable returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Withdraws an amount of `token` from a user account.\\n    /// @param token_ The ERC-20 token to withdraw.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\\n    /// @param share Like above, but `share` takes precedence over `amount`.\\n    function withdraw(\\n        address token_,\\n        address from,\\n        address to,\\n        uint256 amount,\\n        uint256 share\\n    ) external returns (uint256 amountOut, uint256 shareOut);\\n\\n    /// @notice Transfer shares from a user account to another one.\\n    /// @param token The ERC-20 token to transfer.\\n    /// @param from which user to pull the tokens.\\n    /// @param to which user to push the tokens.\\n    /// @param share The amount of `token` in shares.\\n    function transfer(\\n        address token,\\n        address from,\\n        address to,\\n        uint256 share\\n    ) external;\\n\\n    /// @dev Reads the Rebase `totals`from storage for a given token\\n    function totals(address token) external view returns (Rebase memory total);\\n\\n    /// @dev Approves users' BentoBox assets to a \\\"master\\\" contract.\\n    function setMasterContractApproval(\\n        address user,\\n        address masterContract,\\n        bool approved,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external;\\n}\\n\",\"keccak256\":\"0x80ef2859d876a6b464e28dcaa03b4b0e8d1f81a946e3b3875d4fba66314dc369\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IMasterDeployer.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool deployer interface.\\ninterface IMasterDeployer {\\n    function barFee() external view returns (uint256);\\n\\n    function barFeeTo() external view returns (address);\\n\\n    function bento() external view returns (address);\\n\\n    function migrator() external view returns (address);\\n\\n    function pools(address pool) external view returns (bool);\\n\\n    function deployPool(address factory, bytes calldata deployData) external returns (address);\\n}\\n\",\"keccak256\":\"0x91c23deb7e4372faa35a0ae4ef6ccd684049aea7b2c75cf63009b28591b91cbc\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/IPool.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.5.0;\\npragma experimental ABIEncoderV2;\\n\\n/// @notice Trident pool interface.\\ninterface IPool {\\n    /// @notice Executes a swap from one token to another.\\n    /// @dev The input tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function swap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Executes a swap from one token to another with a callback.\\n    /// @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that were sent to the user.\\n    function flashSwap(bytes calldata data) external returns (uint256 finalAmountOut);\\n\\n    /// @notice Mints liquidity tokens.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return liquidity The amount of liquidity tokens that were minted for the user.\\n    function mint(bytes calldata data) external returns (uint256 liquidity);\\n\\n    /// @notice Burns liquidity tokens.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return withdrawnAmounts The amount of various output tokens that were sent to the user.\\n    function burn(bytes calldata data) external returns (TokenAmount[] memory withdrawnAmounts);\\n\\n    /// @notice Burns liquidity tokens for a single output token.\\n    /// @dev The input LP tokens must've already been sent to the pool.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return amountOut The amount of output tokens that were sent to the user.\\n    function burnSingle(bytes calldata data) external returns (uint256 amountOut);\\n\\n    /// @return A unique identifier for the pool type.\\n    function poolIdentifier() external pure returns (bytes32);\\n\\n    /// @return An array of tokens supported by the pool.\\n    function getAssets() external view returns (address[] memory);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed.\\n    function getAmountOut(bytes calldata data) external view returns (uint256 finalAmountOut);\\n\\n    /// @notice Simulates a trade and returns the expected output.\\n    /// @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\\n    /// @param data ABI-encoded params that the pool requires.\\n    /// @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed.\\n    function getAmountIn(bytes calldata data) external view returns (uint256 finalAmountIn);\\n\\n    /// @dev This event must be emitted on all swaps.\\n    event Swap(address indexed recipient, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut);\\n\\n    /// @dev This struct frames output tokens for burns.\\n    struct TokenAmount {\\n        address token;\\n        uint256 amount;\\n    }\\n}\\n\",\"keccak256\":\"0xa6f92ccb525b018c0c209819640e8d746f1134b4c4d9acd4f22d3e170323f1fa\",\"license\":\"GPL-3.0-or-later\"},\"contracts/interfaces/ITridentRouter.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident pool router interface.\\ninterface ITridentRouter {\\n    struct Path {\\n        address pool;\\n        bytes data;\\n    }\\n\\n    struct ExactInputSingleParams {\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n        address pool;\\n        address tokenIn;\\n        bytes data;\\n    }\\n\\n    struct ExactInputParams {\\n        address tokenIn;\\n        uint256 amountIn;\\n        uint256 amountOutMinimum;\\n        Path[] path;\\n    }\\n\\n    struct TokenInput {\\n        address token;\\n        bool native;\\n        uint256 amount;\\n    }\\n\\n    struct InitialPath {\\n        address tokenIn;\\n        address pool;\\n        bool native;\\n        uint256 amount;\\n        bytes data;\\n    }\\n\\n    struct PercentagePath {\\n        address tokenIn;\\n        address pool;\\n        uint64 balancePercentage; // Multiplied by 10^6. 100% = 100_000_000\\n        bytes data;\\n    }\\n\\n    struct Output {\\n        address token;\\n        address to;\\n        bool unwrapBento;\\n        uint256 minAmount;\\n    }\\n\\n    struct ComplexPathParams {\\n        InitialPath[] initialPath;\\n        PercentagePath[] percentagePath;\\n        Output[] output;\\n    }\\n}\\n\",\"keccak256\":\"0x40f1af6b213ff8827d515460f9057eb87ddc35d8020501f727d229ea239cbf24\",\"license\":\"GPL-3.0-or-later\"},\"contracts/libraries/RebaseLibrary.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity ^0.8;\\n\\nstruct Rebase {\\n    uint128 elastic;\\n    uint128 base;\\n}\\n\\n/// @notice A rebasing library\\nlibrary RebaseLibrary {\\n    /// @notice Calculates the base value in relationship to `elastic` and `total`.\\n    function toBase(Rebase memory total, uint256 elastic) internal pure returns (uint256 base) {\\n        if (total.elastic == 0) {\\n            base = elastic;\\n        } else {\\n            base = (elastic * total.base) / total.elastic;\\n        }\\n    }\\n\\n    /// @notice Calculates the elastic value in relationship to `base` and `total`.\\n    function toElastic(Rebase memory total, uint256 base) internal pure returns (uint256 elastic) {\\n        if (total.base == 0) {\\n            elastic = base;\\n        } else {\\n            elastic = (base * total.elastic) / total.base;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xa83360497e7e2a04332211832a8ceb41ef0301892fcf1b17174d7d4466782d44\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/RouterHelper.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\nimport \\\"../interfaces/IBentoBoxMinimal.sol\\\";\\nimport \\\"../interfaces/IMasterDeployer.sol\\\";\\nimport \\\"../TridentRouter.sol\\\";\\nimport \\\"./TridentPermit.sol\\\";\\n\\n/// @notice Trident router helper contract.\\ncontract RouterHelper is TridentPermit {\\n    /// @notice BentoBox token vault.\\n    IBentoBoxMinimal public immutable bento;\\n    /// @notice Trident AMM master deployer contract.\\n    IMasterDeployer public immutable masterDeployer;\\n    /// @notice ERC-20 token for wrapped ETH (v9).\\n    address internal immutable wETH;\\n    /// @notice The user should use 0x0 if they want to deposit ETH\\n    address constant USE_ETHEREUM = address(0);\\n\\n    constructor(\\n        IBentoBoxMinimal _bento,\\n        IMasterDeployer _masterDeployer,\\n        address _wETH\\n    ) {\\n        bento = _bento;\\n        masterDeployer = _masterDeployer;\\n        wETH = _wETH;\\n        _bento.registerProtocol();\\n    }\\n\\n    /// @notice Provides batch function calls for this contract and returns the data from all of them if they all succeed.\\n    /// Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\\n    /// @dev The `msg.value` should not be trusted for any method callable from this function.\\n    /// @dev Uses a modified version of the batch function - preventing multiple calls of the single input swap functions\\n    /// @param data ABI-encoded params for each of the calls to make to this contract.\\n    /// @return results The results from each of the calls passed in via `data`.\\n    function batch(bytes[] calldata data) external payable returns (bytes[] memory results) {\\n        results = new bytes[](data.length);\\n        // We only allow one exactInputSingle call to be made in a single batch call.\\n        // This is not really needed but we want to save users from signing malicious payloads.\\n        // We also don't want nested batch calls.\\n        bool swapCalled;\\n        for (uint256 i = 0; i < data.length; i++) {\\n            bytes4 selector = getSelector(data[i]);\\n            if (selector == TridentRouter.exactInputSingle.selector || selector == TridentRouter.exactInputSingleWithNativeToken.selector) {\\n                require(!swapCalled, \\\"Swap called twice\\\");\\n                swapCalled = true;\\n            } else {\\n                require(selector != this.batch.selector, \\\"Nested Batch\\\");\\n            }\\n\\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\\n            if (!success) {\\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577.\\n                if (result.length < 68) revert();\\n                assembly {\\n                    result := add(result, 0x04)\\n                }\\n                revert(abi.decode(result, (string)));\\n            }\\n            results[i] = result;\\n        }\\n    }\\n\\n    function deployPool(address factory, bytes calldata deployData) external payable returns (address) {\\n        return masterDeployer.deployPool(factory, deployData);\\n    }\\n\\n    /// @notice Helper function to allow batching of BentoBox master contract approvals so the first trade can happen in one transaction.\\n    function approveMasterContract(\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external payable {\\n        bento.setMasterContractApproval(msg.sender, address(this), true, v, r, s);\\n    }\\n\\n    /// @notice Provides gas-optimized balance check on this contract to avoid redundant extcodesize check in addition to returndatasize check.\\n    /// @param token Address of ERC-20 token.\\n    /// @return balance Token amount held by this contract.\\n    function balanceOfThis(address token) internal view returns (uint256 balance) {\\n        (bool success, bytes memory data) = token.staticcall(abi.encodeWithSelector(0x70a08231, address(this))); // @dev balanceOf(address).\\n        require(success && data.length >= 32, \\\"BALANCE_OF_FAILED\\\");\\n        balance = abi.decode(data, (uint256));\\n    }\\n\\n    /// @notice Provides 'safe' ERC-20 {transfer} for tokens that don't consistently return true/false.\\n    /// @param token Address of ERC-20 token.\\n    /// @param recipient Account to send tokens to.\\n    /// @param amount Token amount to send.\\n    function safeTransfer(\\n        address token,\\n        address recipient,\\n        uint256 amount\\n    ) internal {\\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, recipient, amount)); // @dev transfer(address,uint256).\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"TRANSFER_FAILED\\\");\\n    }\\n\\n    /// @notice Provides 'safe' ERC-20 {transferFrom} for tokens that don't consistently return true/false.\\n    /// @param token Address of ERC-20 token.\\n    /// @param sender Account to send tokens from.\\n    /// @param recipient Account to send tokens to.\\n    /// @param amount Token amount to send.\\n    function safeTransferFrom(\\n        address token,\\n        address sender,\\n        address recipient,\\n        uint256 amount\\n    ) internal {\\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, sender, recipient, amount)); // @dev transferFrom(address,address,uint256).\\n        require(success && (data.length == 0 || abi.decode(data, (bool))), \\\"TRANSFER_FROM_FAILED\\\");\\n    }\\n\\n    /// @notice Provides low-level `wETH` {withdraw}.\\n    /// @param amount Token amount to unwrap into ETH.\\n    function withdrawFromWETH(uint256 amount) internal {\\n        (bool success, ) = wETH.call(abi.encodeWithSelector(0x2e1a7d4d, amount)); // @dev withdraw(uint256).\\n        require(success, \\\"WITHDRAW_FROM_WETH_FAILED\\\");\\n    }\\n\\n    /// @notice Provides 'safe' ETH transfer.\\n    /// @param recipient Account to send ETH to.\\n    /// @param amount ETH amount to send.\\n    function safeTransferETH(address recipient, uint256 amount) internal {\\n        (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n        require(success, \\\"ETH_TRANSFER_FAILED\\\");\\n    }\\n\\n    /**\\n     * @notice function to extract the selector of a bytes calldata\\n     * @param _data the calldata bytes\\n     */\\n    function getSelector(bytes memory _data) internal pure returns (bytes4 sig) {\\n        assembly {\\n            sig := mload(add(_data, 32))\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x6ba7ef30206daf568f31c0c315f2da991f5425ba76aa97ec3faf5c80af4e6592\",\"license\":\"GPL-3.0-or-later\"},\"contracts/utils/TridentPermit.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Generic contract exposing the permit functionality.\\nabstract contract TridentPermit {\\n    error PermitFailed();\\n\\n    /// @notice Provides EIP-2612 signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param amount Token amount to grant spending right over.\\n    /// @param deadline Termination for signed approval (UTC timestamp in seconds).\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThis(\\n        address token,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0xd505accf, msg.sender, address(this), amount, deadline, v, r, s)); // permit(address,address,uint256,uint256,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n\\n    /// @notice Provides DAI-derived signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param nonce Token owner's nonce - increases at each call to {permit}.\\n    /// @param expiry Termination for signed approval - UTC timestamp in seconds.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThisAllowed(\\n        address token,\\n        uint256 nonce,\\n        uint256 expiry,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0x8fcbaf0c, msg.sender, address(this), nonce, expiry, true, v, r, s)); // permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n}\\n\",\"keccak256\":\"0x41a005fbeccd614c4d0027c168c7fb6ba7689504356ff9040c50d2a3c53d0ec6\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "approveMasterContract(uint8,bytes32,bytes32)": {
                "notice": "Helper function to allow batching of BentoBox master contract approvals so the first trade can happen in one transaction."
              },
              "batch(bytes[])": {
                "notice": "Provides batch function calls for this contract and returns the data from all of them if they all succeed. Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later."
              },
              "bento()": {
                "notice": "BentoBox token vault."
              },
              "masterDeployer()": {
                "notice": "Trident AMM master deployer contract."
              },
              "permitThis(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Provides EIP-2612 signed approval for this contract to spend user tokens."
              },
              "permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Provides DAI-derived signed approval for this contract to spend user tokens."
              }
            },
            "notice": "Trident router helper contract.",
            "version": 1
          }
        }
      },
      "contracts/utils/TridentBatchable.sol": {
        "TridentBatchable": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes[]",
                  "name": "data",
                  "type": "bytes[]"
                }
              ],
              "name": "batch",
              "outputs": [
                {
                  "internalType": "bytes[]",
                  "name": "results",
                  "type": "bytes[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "batch(bytes[])": {
                "details": "The `msg.value` should not be trusted for any method callable from this function.",
                "params": {
                  "data": "ABI-encoded params for each of the calls to make to this contract."
                },
                "returns": {
                  "results": "The results from each of the calls passed in via `data`."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "batch(bytes[])": "1e897afb"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"batch\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"batch(bytes[])\":{\"details\":\"The `msg.value` should not be trusted for any method callable from this function.\",\"params\":{\"data\":\"ABI-encoded params for each of the calls to make to this contract.\"},\"returns\":{\"results\":\"The results from each of the calls passed in via `data`.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"batch(bytes[])\":{\"notice\":\"Provides batch function calls for this contract and returns the data from all of them if they all succeed. Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\"}},\"notice\":\"Generic contract exposing the batch call functionality.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/TridentBatchable.sol\":\"TridentBatchable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/utils/TridentBatchable.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Generic contract exposing the batch call functionality.\\nabstract contract TridentBatchable {\\n    /// @notice Provides batch function calls for this contract and returns the data from all of them if they all succeed.\\n    /// Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\\n    /// @dev The `msg.value` should not be trusted for any method callable from this function.\\n    /// @param data ABI-encoded params for each of the calls to make to this contract.\\n    /// @return results The results from each of the calls passed in via `data`.\\n    function batch(bytes[] calldata data) external payable returns (bytes[] memory results) {\\n        results = new bytes[](data.length);\\n\\n        for (uint256 i = 0; i < data.length; i++) {\\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\\n\\n            if (!success) {\\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577\\n                if (result.length < 68) revert();\\n                assembly {\\n                    result := add(result, 0x04)\\n                }\\n                revert(abi.decode(result, (string)));\\n            }\\n\\n            results[i] = result;\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0xba62b6a107dfc9673c0fa801b84ef151459cd62169ca88949a597d910d549659\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "batch(bytes[])": {
                "notice": "Provides batch function calls for this contract and returns the data from all of them if they all succeed. Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later."
              }
            },
            "notice": "Generic contract exposing the batch call functionality.",
            "version": 1
          }
        }
      },
      "contracts/utils/TridentOwnable.sol": {
        "TridentOwnable": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "TransferOwner",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                }
              ],
              "name": "TransferOwnerClaim",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "claimOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "owner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "pendingOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "direct",
                  "type": "bool"
                }
              ],
              "name": "transferOwner",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "author": "Adapted from https://github.com/boringcrypto/BoringSolidity/blob/master/contracts/BoringOwnable.sol, License-Identifier: MIT.",
            "kind": "dev",
            "methods": {
              "transferOwner(address,bool)": {
                "params": {
                  "direct": "If 'true', ownership is directly transferred.",
                  "recipient": "Account granted `owner` access control."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_24188": {
                  "entryPoint": null,
                  "id": 24188,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600080546001600160a01b0319163390811782556040519091907f5bb496b3f951b55d3a1d8e479725a4d25bdc7644fc355f0b71c540354820a1c5908290a361044e8061005f6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80633bd1adec146100515780638da5cb5b1461005b578063cf81afaa146100a4578063e30c3978146100b7575b600080fd5b6100596100d7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b23660046103c1565b6101da565b60015461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461015d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e4f545f50454e44494e475f4f574e455200000000000000000000000000000060448201526064015b60405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917f5bb496b3f951b55d3a1d8e479725a4d25bdc7644fc355f0b71c540354820a1c591a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600180549091169055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461025b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e455200000000000000000000000000000000000000000000006044820152606401610154565b73ffffffffffffffffffffffffffffffffffffffff82166102d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610154565b801561034f57600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081178255604051909133917f5bb496b3f951b55d3a1d8e479725a4d25bdc7644fc355f0b71c540354820a1c59190a35050565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560405133907f87f5c8846f4c51400fa448cfb84edcec5cc0f333b6d20a5b903e050823dcb66790600090a35050565b600080604083850312156103d457600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146103f857600080fd5b91506020830135801515811461040d57600080fd5b80915050925092905056fea2646970667358221220678793bd5881b5a762e9e522660141c801298b8f99d7b458e553a900694a5faf64736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 SWAP1 PUSH32 0x5BB496B3F951B55D3A1D8E479725A4D25BDC7644FC355F0B71C540354820A1C5 SWAP1 DUP3 SWAP1 LOG3 PUSH2 0x44E DUP1 PUSH2 0x5F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3BD1ADEC EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0xCF81AFAA EQ PUSH2 0xA4 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0xB7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xD7 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x7B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0xB2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C1 JUMP JUMPDEST PUSH2 0x1DA JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x7B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x15D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F50454E44494E475F4F574E4552000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD CALLER SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH32 0x5BB496B3F951B55D3A1D8E479725A4D25BDC7644FC355F0B71C540354820A1C5 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND CALLER OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x25B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4F574E45520000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x154 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x2D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5A45524F5F414444524553530000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x154 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 CALLER SWAP2 PUSH32 0x5BB496B3F951B55D3A1D8E479725A4D25BDC7644FC355F0B71C540354820A1C5 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x87F5C8846F4C51400FA448CFB84EDCEC5CC0F333B6D20A5B903E050823DCB667 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH8 0x8793BD5881B5A762 0xE9 0xE5 0x22 PUSH7 0x141C801298B8F SWAP10 0xD7 0xB4 PC 0xE5 MSTORE8 0xA9 STOP PUSH10 0x4A5FAF64736F6C634300 ADDMOD SMOD STOP CALLER ",
              "sourceMap": "255:1473:61:-:0;;;593:101;;;;;;;;;-1:-1:-1;617:5:61;:18;;-1:-1:-1;;;;;;617:18:61;625:10;617:18;;;;;650:37;;625:10;;617:5;650:37;;617:5;;650:37;255:1473;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@claimOwner_24232": {
                  "entryPoint": 215,
                  "id": 24232,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@owner_24155": {
                  "entryPoint": null,
                  "id": 24155,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@pendingOwner_24157": {
                  "entryPoint": null,
                  "id": 24157,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@transferOwner_24277": {
                  "entryPoint": 474,
                  "id": 24277,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 961,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_c32fed941c8f9b2ff93bcaccab829b817fd09f04d9a6a923a1aca58967f5cc49__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1749:64",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:64",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "98:394:64",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "144:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "156:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "146:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "146:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "146:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "119:7:64"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "128:9:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "115:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "115:23:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "140:2:64",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "111:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "111:32:64"
                              },
                              "nodeType": "YulIf",
                              "src": "108:52:64"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "169:36:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "195:9:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "182:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "182:23:64"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "173:5:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "291:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "300:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "303:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "293:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "293:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "293:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "227:5:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "238:5:64"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "245:42:64",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "234:3:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "234:54:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "224:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "224:65:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "217:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "217:73:64"
                              },
                              "nodeType": "YulIf",
                              "src": "214:93:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "316:15:64",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "326:5:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "316:6:64"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "340:47:64",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "372:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "383:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "368:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "368:18:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "355:12:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "355:32:64"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "344:7:64",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "444:16:64",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "453:1:64",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "456:1:64",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "446:6:64"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "446:12:64"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "446:12:64"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "409:7:64"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "432:7:64"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "425:6:64"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "425:15:64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "418:6:64"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "418:23:64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "406:2:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "406:36:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "399:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "399:44:64"
                              },
                              "nodeType": "YulIf",
                              "src": "396:64:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "469:17:64",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "479:7:64"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "469:6:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "56:9:64",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "67:7:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "79:6:64",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "87:6:64",
                            "type": ""
                          }
                        ],
                        "src": "14:478:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "598:125:64",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "608:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "620:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "631:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "616:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "616:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "608:4:64"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "650:9:64"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "665:6:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "673:42:64",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "661:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "661:55:64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "643:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "643:74:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "643:74:64"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "567:9:64",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "578:6:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "589:4:64",
                            "type": ""
                          }
                        ],
                        "src": "497:226:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "902:162:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "919:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "930:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "912:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "912:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "912:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "953:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "964:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "949:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "949:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "969:2:64",
                                    "type": "",
                                    "value": "12"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "942:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "942:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "942:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "992:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1003:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "988:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "988:18:64"
                                  },
                                  {
                                    "hexValue": "5a45524f5f41444452455353",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1008:14:64",
                                    "type": "",
                                    "value": "ZERO_ADDRESS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "981:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "981:42:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "981:42:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1032:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1044:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1055:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1040:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1040:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1032:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "879:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "893:4:64",
                            "type": ""
                          }
                        ],
                        "src": "728:336:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1243:167:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1260:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1271:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1253:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1253:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1253:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1294:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1305:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1290:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1290:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1310:2:64",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1283:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1283:30:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1283:30:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1333:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1344:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1329:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1329:18:64"
                                  },
                                  {
                                    "hexValue": "4e4f545f50454e44494e475f4f574e4552",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1349:19:64",
                                    "type": "",
                                    "value": "NOT_PENDING_OWNER"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1322:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1322:47:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1322:47:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1378:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1390:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1401:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1386:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1386:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1378:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c32fed941c8f9b2ff93bcaccab829b817fd09f04d9a6a923a1aca58967f5cc49__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1220:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1234:4:64",
                            "type": ""
                          }
                        ],
                        "src": "1069:341:64"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1589:158:64",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1606:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1617:2:64",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1599:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1599:21:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1599:21:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1640:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1651:2:64",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1636:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1636:18:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1656:1:64",
                                    "type": "",
                                    "value": "9"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1629:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1629:29:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1629:29:64"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1678:9:64"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1689:2:64",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1674:3:64"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1674:18:64"
                                  },
                                  {
                                    "hexValue": "4e4f545f4f574e4552",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1694:11:64",
                                    "type": "",
                                    "value": "NOT_OWNER"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1667:6:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1667:39:64"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1667:39:64"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1715:26:64",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1727:9:64"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1738:2:64",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1723:3:64"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1723:18:64"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1715:4:64"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1566:9:64",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1580:4:64",
                            "type": ""
                          }
                        ],
                        "src": "1415:332:64"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"ZERO_ADDRESS\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_c32fed941c8f9b2ff93bcaccab829b817fd09f04d9a6a923a1aca58967f5cc49__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"NOT_PENDING_OWNER\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 9)\n        mstore(add(headStart, 64), \"NOT_OWNER\")\n        tail := add(headStart, 96)\n    }\n}",
                  "id": 64,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c80633bd1adec146100515780638da5cb5b1461005b578063cf81afaa146100a4578063e30c3978146100b7575b600080fd5b6100596100d7565b005b60005461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100596100b23660046103c1565b6101da565b60015461007b9073ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461015d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e4f545f50454e44494e475f4f574e455200000000000000000000000000000060448201526064015b60405180910390fd5b60008054604051339273ffffffffffffffffffffffffffffffffffffffff909216917f5bb496b3f951b55d3a1d8e479725a4d25bdc7644fc355f0b71c540354820a1c591a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600180549091169055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461025b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e4f545f4f574e455200000000000000000000000000000000000000000000006044820152606401610154565b73ffffffffffffffffffffffffffffffffffffffff82166102d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610154565b801561034f57600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081178255604051909133917f5bb496b3f951b55d3a1d8e479725a4d25bdc7644fc355f0b71c540354820a1c59190a35050565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915560405133907f87f5c8846f4c51400fa448cfb84edcec5cc0f333b6d20a5b903e050823dcb66790600090a35050565b600080604083850312156103d457600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146103f857600080fd5b91506020830135801515811461040d57600080fd5b80915050925092905056fea2646970667358221220678793bd5881b5a762e9e522660141c801298b8f99d7b458e553a900694a5faf64736f6c63430008070033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3BD1ADEC EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x5B JUMPI DUP1 PUSH4 0xCF81AFAA EQ PUSH2 0xA4 JUMPI DUP1 PUSH4 0xE30C3978 EQ PUSH2 0xB7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xD7 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x7B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x59 PUSH2 0xB2 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C1 JUMP JUMPDEST PUSH2 0x1DA JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x7B SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x15D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F50454E44494E475F4F574E4552000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD CALLER SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH32 0x5BB496B3F951B55D3A1D8E479725A4D25BDC7644FC355F0B71C540354820A1C5 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND CALLER OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x25B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E4F545F4F574E45520000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x154 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x2D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5A45524F5F414444524553530000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x154 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 CALLER SWAP2 PUSH32 0x5BB496B3F951B55D3A1D8E479725A4D25BDC7644FC355F0B71C540354820A1C5 SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD CALLER SWAP1 PUSH32 0x87F5C8846F4C51400FA448CFB84EDCEC5CC0F333B6D20A5B903E050823DCB667 SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x40D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH8 0x8793BD5881B5A762 0xE9 0xE5 0x22 PUSH7 0x141C801298B8F SWAP10 0xD7 0xB4 PC 0xE5 MSTORE8 0xA9 STOP PUSH10 0x4A5FAF64736F6C634300 ADDMOD SMOD STOP CALLER ",
              "sourceMap": "255:1473:61:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;959:214;;;:::i;:::-;;285:20;;;;;;;;;;;;673:42:64;661:55;;;643:74;;631:2;616:18;285:20:61;;;;;;;1354:372;;;;;;:::i;:::-;;:::i;311:27::-;;;;;;;;;959:214;1022:12;;;;1008:10;:26;1000:56;;;;;;;1271:2:64;1000:56:61;;;1253:21:64;1310:2;1290:18;;;1283:30;1349:19;1329:18;;;1322:47;1386:18;;1000:56:61;;;;;;;;;1085:5;;;1071:32;;1092:10;;1071:32;1085:5;;;;1071:32;;;1113:5;:18;;;;;;1121:10;1113:18;;;;;1141:25;;;;;;;959:214::o;1354:372::-;858:5;;;;844:10;:19;836:41;;;;;;;1617:2:64;836:41:61;;;1599:21:64;1656:1;1636:18;;;1629:29;1694:11;1674:18;;;1667:39;1723:18;;836:41:61;1415:332:64;836:41:61;1446:23:::1;::::0;::::1;1438:48;;;::::0;::::1;::::0;;930:2:64;1438:48:61::1;::::0;::::1;912:21:64::0;969:2;949:18;;;942:30;1008:14;988:18;;;981:42;1040:18;;1438:48:61::1;728:336:64::0;1438:48:61::1;1500:6;1496:224;;;1522:5;:17:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;1558:36:::1;::::0;1522:17;;1572:10:::1;::::0;1558:36:::1;::::0;1522:5;1558:36:::1;1354:372:::0;;:::o;1496:224::-:1;1625:12;:24:::0;;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;1668:41:::1;::::0;1687:10:::1;::::0;1668:41:::1;::::0;-1:-1:-1;;1668:41:61::1;1354:372:::0;;:::o;14:478:64:-;79:6;87;140:2;128:9;119:7;115:23;111:32;108:52;;;156:1;153;146:12;108:52;195:9;182:23;245:42;238:5;234:54;227:5;224:65;214:93;;303:1;300;293:12;214:93;326:5;-1:-1:-1;383:2:64;368:18;;355:32;425:15;;418:23;406:36;;396:64;;456:1;453;446:12;396:64;479:7;469:17;;;14:478;;;;;:::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "220400",
                "executionCost": "26031",
                "totalCost": "246431"
              },
              "external": {
                "claimOwner()": "54335",
                "owner()": "2301",
                "pendingOwner()": "2345",
                "transferOwner(address,bool)": "28271"
              }
            },
            "methodIdentifiers": {
              "claimOwner()": "3bd1adec",
              "owner()": "8da5cb5b",
              "pendingOwner()": "e30c3978",
              "transferOwner(address,bool)": "cf81afaa"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"TransferOwner\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"TransferOwnerClaim\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"claimOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"direct\",\"type\":\"bool\"}],\"name\":\"transferOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Adapted from https://github.com/boringcrypto/BoringSolidity/blob/master/contracts/BoringOwnable.sol, License-Identifier: MIT.\",\"kind\":\"dev\",\"methods\":{\"transferOwner(address,bool)\":{\"params\":{\"direct\":\"If 'true', ownership is directly transferred.\",\"recipient\":\"Account granted `owner` access control.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"claimOwner()\":{\"notice\":\"`pendingOwner` can claim `owner` account.\"},\"constructor\":{\"notice\":\"Initialize and grant deployer account (`msg.sender`) `owner` access role.\"},\"transferOwner(address,bool)\":{\"notice\":\"Transfer `owner` account.\"}},\"notice\":\"Trident access control contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/TridentOwnable.sol\":\"TridentOwnable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/utils/TridentOwnable.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Trident access control contract.\\n/// @author Adapted from https://github.com/boringcrypto/BoringSolidity/blob/master/contracts/BoringOwnable.sol, License-Identifier: MIT.\\ncontract TridentOwnable {\\n    address public owner;\\n    address public pendingOwner;\\n\\n    event TransferOwner(address indexed sender, address indexed recipient);\\n    event TransferOwnerClaim(address indexed sender, address indexed recipient);\\n\\n    /// @notice Initialize and grant deployer account (`msg.sender`) `owner` access role.\\n    constructor() {\\n        owner = msg.sender;\\n        emit TransferOwner(address(0), msg.sender);\\n    }\\n\\n    /// @notice Access control modifier that requires modified function to be called by `owner` account.\\n    modifier onlyOwner() {\\n        require(msg.sender == owner, \\\"NOT_OWNER\\\");\\n        _;\\n    }\\n\\n    /// @notice `pendingOwner` can claim `owner` account.\\n    function claimOwner() external {\\n        require(msg.sender == pendingOwner, \\\"NOT_PENDING_OWNER\\\");\\n        emit TransferOwner(owner, msg.sender);\\n        owner = msg.sender;\\n        pendingOwner = address(0);\\n    }\\n\\n    /// @notice Transfer `owner` account.\\n    /// @param recipient Account granted `owner` access control.\\n    /// @param direct If 'true', ownership is directly transferred.\\n    function transferOwner(address recipient, bool direct) external onlyOwner {\\n        require(recipient != address(0), \\\"ZERO_ADDRESS\\\");\\n        if (direct) {\\n            owner = recipient;\\n            emit TransferOwner(msg.sender, recipient);\\n        } else {\\n            pendingOwner = recipient;\\n            emit TransferOwnerClaim(msg.sender, recipient);\\n        }\\n    }\\n}\\n\",\"keccak256\":\"0x5bb04352352b77289553cf278a61c75206e2b14477f0e1d61e7ce648c2306b46\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 24155,
                "contract": "contracts/utils/TridentOwnable.sol:TridentOwnable",
                "label": "owner",
                "offset": 0,
                "slot": "0",
                "type": "t_address"
              },
              {
                "astId": 24157,
                "contract": "contracts/utils/TridentOwnable.sol:TridentOwnable",
                "label": "pendingOwner",
                "offset": 0,
                "slot": "1",
                "type": "t_address"
              }
            ],
            "types": {
              "t_address": {
                "encoding": "inplace",
                "label": "address",
                "numberOfBytes": "20"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "claimOwner()": {
                "notice": "`pendingOwner` can claim `owner` account."
              },
              "constructor": {
                "notice": "Initialize and grant deployer account (`msg.sender`) `owner` access role."
              },
              "transferOwner(address,bool)": {
                "notice": "Transfer `owner` account."
              }
            },
            "notice": "Trident access control contract.",
            "version": 1
          }
        }
      },
      "contracts/utils/TridentPermit.sol": {
        "TridentPermit": {
          "abi": [
            {
              "inputs": [],
              "name": "PermitFailed",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "deadline",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitThis",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "expiry",
                  "type": "uint256"
                },
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "internalType": "bytes32",
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "permitThisAllowed",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {
              "permitThis(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "amount": "Token amount to grant spending right over.",
                  "deadline": "Termination for signed approval (UTC timestamp in seconds).",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "token": "Address of ERC-20 token.",
                  "v": "The recovery byte of the signature."
                }
              },
              "permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "params": {
                  "expiry": "Termination for signed approval - UTC timestamp in seconds.",
                  "nonce": "Token owner's nonce - increases at each call to {permit}.",
                  "r": "Half of the ECDSA signature pair.",
                  "s": "Half of the ECDSA signature pair.",
                  "token": "Address of ERC-20 token.",
                  "v": "The recovery byte of the signature."
                }
              }
            },
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "gasEstimates": null,
            "methodIdentifiers": {
              "permitThis(address,uint256,uint256,uint8,bytes32,bytes32)": "a9b62c23",
              "permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)": "77631981"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PermitFailed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permitThis\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permitThisAllowed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"permitThis(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"amount\":\"Token amount to grant spending right over.\",\"deadline\":\"Termination for signed approval (UTC timestamp in seconds).\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"token\":\"Address of ERC-20 token.\",\"v\":\"The recovery byte of the signature.\"}},\"permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"params\":{\"expiry\":\"Termination for signed approval - UTC timestamp in seconds.\",\"nonce\":\"Token owner's nonce - increases at each call to {permit}.\",\"r\":\"Half of the ECDSA signature pair.\",\"s\":\"Half of the ECDSA signature pair.\",\"token\":\"Address of ERC-20 token.\",\"v\":\"The recovery byte of the signature.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"permitThis(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Provides EIP-2612 signed approval for this contract to spend user tokens.\"},\"permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"notice\":\"Provides DAI-derived signed approval for this contract to spend user tokens.\"}},\"notice\":\"Generic contract exposing the permit functionality.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/TridentPermit.sol\":\"TridentPermit\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"contracts/utils/TridentPermit.sol\":{\"content\":\"// SPDX-License-Identifier: GPL-3.0-or-later\\n\\npragma solidity >=0.8.0;\\n\\n/// @notice Generic contract exposing the permit functionality.\\nabstract contract TridentPermit {\\n    error PermitFailed();\\n\\n    /// @notice Provides EIP-2612 signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param amount Token amount to grant spending right over.\\n    /// @param deadline Termination for signed approval (UTC timestamp in seconds).\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThis(\\n        address token,\\n        uint256 amount,\\n        uint256 deadline,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0xd505accf, msg.sender, address(this), amount, deadline, v, r, s)); // permit(address,address,uint256,uint256,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n\\n    /// @notice Provides DAI-derived signed approval for this contract to spend user tokens.\\n    /// @param token Address of ERC-20 token.\\n    /// @param nonce Token owner's nonce - increases at each call to {permit}.\\n    /// @param expiry Termination for signed approval - UTC timestamp in seconds.\\n    /// @param v The recovery byte of the signature.\\n    /// @param r Half of the ECDSA signature pair.\\n    /// @param s Half of the ECDSA signature pair.\\n    function permitThisAllowed(\\n        address token,\\n        uint256 nonce,\\n        uint256 expiry,\\n        uint8 v,\\n        bytes32 r,\\n        bytes32 s\\n    ) external {\\n        (bool success, ) = token.call(abi.encodeWithSelector(0x8fcbaf0c, msg.sender, address(this), nonce, expiry, true, v, r, s)); // permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32).\\n        if (!success) revert PermitFailed();\\n    }\\n}\\n\",\"keccak256\":\"0x41a005fbeccd614c4d0027c168c7fb6ba7689504356ff9040c50d2a3c53d0ec6\",\"license\":\"GPL-3.0-or-later\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {
              "permitThis(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Provides EIP-2612 signed approval for this contract to spend user tokens."
              },
              "permitThisAllowed(address,uint256,uint256,uint8,bytes32,bytes32)": {
                "notice": "Provides DAI-derived signed approval for this contract to spend user tokens."
              }
            },
            "notice": "Generic contract exposing the permit functionality.",
            "version": 1
          }
        }
      },
      "hardhat/console.sol": {
        "console": {
          "abi": [],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d781d879262c199d7e9865cb691857086812aa8c9d19f45bded1ef381d09606364736f6c63430008070033",
              "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD7 DUP2 0xD8 PUSH26 0x262C199D7E9865CB691857086812AA8C9D19F45BDED1EF381D09 PUSH1 0x63 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "67:61980:63:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;67:61980:63;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d781d879262c199d7e9865cb691857086812aa8c9d19f45bded1ef381d09606364736f6c63430008070033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD7 DUP2 0xD8 PUSH26 0x262C199D7E9865CB691857086812AA8C9D19F45BDED1EF381D09 PUSH1 0x63 PUSH5 0x736F6C6343 STOP ADDMOD SMOD STOP CALLER ",
              "sourceMap": "67:61980:63:-:0;;;;;;;;"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "17200",
                "executionCost": "103",
                "totalCost": "17303"
              },
              "internal": {
                "_sendLogPayload(bytes memory)": "infinite",
                "log()": "infinite",
                "log(address)": "infinite",
                "log(address,address)": "infinite",
                "log(address,address,address)": "infinite",
                "log(address,address,address,address)": "infinite",
                "log(address,address,address,bool)": "infinite",
                "log(address,address,address,string memory)": "infinite",
                "log(address,address,address,uint256)": "infinite",
                "log(address,address,bool)": "infinite",
                "log(address,address,bool,address)": "infinite",
                "log(address,address,bool,bool)": "infinite",
                "log(address,address,bool,string memory)": "infinite",
                "log(address,address,bool,uint256)": "infinite",
                "log(address,address,string memory)": "infinite",
                "log(address,address,string memory,address)": "infinite",
                "log(address,address,string memory,bool)": "infinite",
                "log(address,address,string memory,string memory)": "infinite",
                "log(address,address,string memory,uint256)": "infinite",
                "log(address,address,uint256)": "infinite",
                "log(address,address,uint256,address)": "infinite",
                "log(address,address,uint256,bool)": "infinite",
                "log(address,address,uint256,string memory)": "infinite",
                "log(address,address,uint256,uint256)": "infinite",
                "log(address,bool)": "infinite",
                "log(address,bool,address)": "infinite",
                "log(address,bool,address,address)": "infinite",
                "log(address,bool,address,bool)": "infinite",
                "log(address,bool,address,string memory)": "infinite",
                "log(address,bool,address,uint256)": "infinite",
                "log(address,bool,bool)": "infinite",
                "log(address,bool,bool,address)": "infinite",
                "log(address,bool,bool,bool)": "infinite",
                "log(address,bool,bool,string memory)": "infinite",
                "log(address,bool,bool,uint256)": "infinite",
                "log(address,bool,string memory)": "infinite",
                "log(address,bool,string memory,address)": "infinite",
                "log(address,bool,string memory,bool)": "infinite",
                "log(address,bool,string memory,string memory)": "infinite",
                "log(address,bool,string memory,uint256)": "infinite",
                "log(address,bool,uint256)": "infinite",
                "log(address,bool,uint256,address)": "infinite",
                "log(address,bool,uint256,bool)": "infinite",
                "log(address,bool,uint256,string memory)": "infinite",
                "log(address,bool,uint256,uint256)": "infinite",
                "log(address,string memory)": "infinite",
                "log(address,string memory,address)": "infinite",
                "log(address,string memory,address,address)": "infinite",
                "log(address,string memory,address,bool)": "infinite",
                "log(address,string memory,address,string memory)": "infinite",
                "log(address,string memory,address,uint256)": "infinite",
                "log(address,string memory,bool)": "infinite",
                "log(address,string memory,bool,address)": "infinite",
                "log(address,string memory,bool,bool)": "infinite",
                "log(address,string memory,bool,string memory)": "infinite",
                "log(address,string memory,bool,uint256)": "infinite",
                "log(address,string memory,string memory)": "infinite",
                "log(address,string memory,string memory,address)": "infinite",
                "log(address,string memory,string memory,bool)": "infinite",
                "log(address,string memory,string memory,string memory)": "infinite",
                "log(address,string memory,string memory,uint256)": "infinite",
                "log(address,string memory,uint256)": "infinite",
                "log(address,string memory,uint256,address)": "infinite",
                "log(address,string memory,uint256,bool)": "infinite",
                "log(address,string memory,uint256,string memory)": "infinite",
                "log(address,string memory,uint256,uint256)": "infinite",
                "log(address,uint256)": "infinite",
                "log(address,uint256,address)": "infinite",
                "log(address,uint256,address,address)": "infinite",
                "log(address,uint256,address,bool)": "infinite",
                "log(address,uint256,address,string memory)": "infinite",
                "log(address,uint256,address,uint256)": "infinite",
                "log(address,uint256,bool)": "infinite",
                "log(address,uint256,bool,address)": "infinite",
                "log(address,uint256,bool,bool)": "infinite",
                "log(address,uint256,bool,string memory)": "infinite",
                "log(address,uint256,bool,uint256)": "infinite",
                "log(address,uint256,string memory)": "infinite",
                "log(address,uint256,string memory,address)": "infinite",
                "log(address,uint256,string memory,bool)": "infinite",
                "log(address,uint256,string memory,string memory)": "infinite",
                "log(address,uint256,string memory,uint256)": "infinite",
                "log(address,uint256,uint256)": "infinite",
                "log(address,uint256,uint256,address)": "infinite",
                "log(address,uint256,uint256,bool)": "infinite",
                "log(address,uint256,uint256,string memory)": "infinite",
                "log(address,uint256,uint256,uint256)": "infinite",
                "log(bool)": "infinite",
                "log(bool,address)": "infinite",
                "log(bool,address,address)": "infinite",
                "log(bool,address,address,address)": "infinite",
                "log(bool,address,address,bool)": "infinite",
                "log(bool,address,address,string memory)": "infinite",
                "log(bool,address,address,uint256)": "infinite",
                "log(bool,address,bool)": "infinite",
                "log(bool,address,bool,address)": "infinite",
                "log(bool,address,bool,bool)": "infinite",
                "log(bool,address,bool,string memory)": "infinite",
                "log(bool,address,bool,uint256)": "infinite",
                "log(bool,address,string memory)": "infinite",
                "log(bool,address,string memory,address)": "infinite",
                "log(bool,address,string memory,bool)": "infinite",
                "log(bool,address,string memory,string memory)": "infinite",
                "log(bool,address,string memory,uint256)": "infinite",
                "log(bool,address,uint256)": "infinite",
                "log(bool,address,uint256,address)": "infinite",
                "log(bool,address,uint256,bool)": "infinite",
                "log(bool,address,uint256,string memory)": "infinite",
                "log(bool,address,uint256,uint256)": "infinite",
                "log(bool,bool)": "infinite",
                "log(bool,bool,address)": "infinite",
                "log(bool,bool,address,address)": "infinite",
                "log(bool,bool,address,bool)": "infinite",
                "log(bool,bool,address,string memory)": "infinite",
                "log(bool,bool,address,uint256)": "infinite",
                "log(bool,bool,bool)": "infinite",
                "log(bool,bool,bool,address)": "infinite",
                "log(bool,bool,bool,bool)": "infinite",
                "log(bool,bool,bool,string memory)": "infinite",
                "log(bool,bool,bool,uint256)": "infinite",
                "log(bool,bool,string memory)": "infinite",
                "log(bool,bool,string memory,address)": "infinite",
                "log(bool,bool,string memory,bool)": "infinite",
                "log(bool,bool,string memory,string memory)": "infinite",
                "log(bool,bool,string memory,uint256)": "infinite",
                "log(bool,bool,uint256)": "infinite",
                "log(bool,bool,uint256,address)": "infinite",
                "log(bool,bool,uint256,bool)": "infinite",
                "log(bool,bool,uint256,string memory)": "infinite",
                "log(bool,bool,uint256,uint256)": "infinite",
                "log(bool,string memory)": "infinite",
                "log(bool,string memory,address)": "infinite",
                "log(bool,string memory,address,address)": "infinite",
                "log(bool,string memory,address,bool)": "infinite",
                "log(bool,string memory,address,string memory)": "infinite",
                "log(bool,string memory,address,uint256)": "infinite",
                "log(bool,string memory,bool)": "infinite",
                "log(bool,string memory,bool,address)": "infinite",
                "log(bool,string memory,bool,bool)": "infinite",
                "log(bool,string memory,bool,string memory)": "infinite",
                "log(bool,string memory,bool,uint256)": "infinite",
                "log(bool,string memory,string memory)": "infinite",
                "log(bool,string memory,string memory,address)": "infinite",
                "log(bool,string memory,string memory,bool)": "infinite",
                "log(bool,string memory,string memory,string memory)": "infinite",
                "log(bool,string memory,string memory,uint256)": "infinite",
                "log(bool,string memory,uint256)": "infinite",
                "log(bool,string memory,uint256,address)": "infinite",
                "log(bool,string memory,uint256,bool)": "infinite",
                "log(bool,string memory,uint256,string memory)": "infinite",
                "log(bool,string memory,uint256,uint256)": "infinite",
                "log(bool,uint256)": "infinite",
                "log(bool,uint256,address)": "infinite",
                "log(bool,uint256,address,address)": "infinite",
                "log(bool,uint256,address,bool)": "infinite",
                "log(bool,uint256,address,string memory)": "infinite",
                "log(bool,uint256,address,uint256)": "infinite",
                "log(bool,uint256,bool)": "infinite",
                "log(bool,uint256,bool,address)": "infinite",
                "log(bool,uint256,bool,bool)": "infinite",
                "log(bool,uint256,bool,string memory)": "infinite",
                "log(bool,uint256,bool,uint256)": "infinite",
                "log(bool,uint256,string memory)": "infinite",
                "log(bool,uint256,string memory,address)": "infinite",
                "log(bool,uint256,string memory,bool)": "infinite",
                "log(bool,uint256,string memory,string memory)": "infinite",
                "log(bool,uint256,string memory,uint256)": "infinite",
                "log(bool,uint256,uint256)": "infinite",
                "log(bool,uint256,uint256,address)": "infinite",
                "log(bool,uint256,uint256,bool)": "infinite",
                "log(bool,uint256,uint256,string memory)": "infinite",
                "log(bool,uint256,uint256,uint256)": "infinite",
                "log(string memory)": "infinite",
                "log(string memory,address)": "infinite",
                "log(string memory,address,address)": "infinite",
                "log(string memory,address,address,address)": "infinite",
                "log(string memory,address,address,bool)": "infinite",
                "log(string memory,address,address,string memory)": "infinite",
                "log(string memory,address,address,uint256)": "infinite",
                "log(string memory,address,bool)": "infinite",
                "log(string memory,address,bool,address)": "infinite",
                "log(string memory,address,bool,bool)": "infinite",
                "log(string memory,address,bool,string memory)": "infinite",
                "log(string memory,address,bool,uint256)": "infinite",
                "log(string memory,address,string memory)": "infinite",
                "log(string memory,address,string memory,address)": "infinite",
                "log(string memory,address,string memory,bool)": "infinite",
                "log(string memory,address,string memory,string memory)": "infinite",
                "log(string memory,address,string memory,uint256)": "infinite",
                "log(string memory,address,uint256)": "infinite",
                "log(string memory,address,uint256,address)": "infinite",
                "log(string memory,address,uint256,bool)": "infinite",
                "log(string memory,address,uint256,string memory)": "infinite",
                "log(string memory,address,uint256,uint256)": "infinite",
                "log(string memory,bool)": "infinite",
                "log(string memory,bool,address)": "infinite",
                "log(string memory,bool,address,address)": "infinite",
                "log(string memory,bool,address,bool)": "infinite",
                "log(string memory,bool,address,string memory)": "infinite",
                "log(string memory,bool,address,uint256)": "infinite",
                "log(string memory,bool,bool)": "infinite",
                "log(string memory,bool,bool,address)": "infinite",
                "log(string memory,bool,bool,bool)": "infinite",
                "log(string memory,bool,bool,string memory)": "infinite",
                "log(string memory,bool,bool,uint256)": "infinite",
                "log(string memory,bool,string memory)": "infinite",
                "log(string memory,bool,string memory,address)": "infinite",
                "log(string memory,bool,string memory,bool)": "infinite",
                "log(string memory,bool,string memory,string memory)": "infinite",
                "log(string memory,bool,string memory,uint256)": "infinite",
                "log(string memory,bool,uint256)": "infinite",
                "log(string memory,bool,uint256,address)": "infinite",
                "log(string memory,bool,uint256,bool)": "infinite",
                "log(string memory,bool,uint256,string memory)": "infinite",
                "log(string memory,bool,uint256,uint256)": "infinite",
                "log(string memory,string memory)": "infinite",
                "log(string memory,string memory,address)": "infinite",
                "log(string memory,string memory,address,address)": "infinite",
                "log(string memory,string memory,address,bool)": "infinite",
                "log(string memory,string memory,address,string memory)": "infinite",
                "log(string memory,string memory,address,uint256)": "infinite",
                "log(string memory,string memory,bool)": "infinite",
                "log(string memory,string memory,bool,address)": "infinite",
                "log(string memory,string memory,bool,bool)": "infinite",
                "log(string memory,string memory,bool,string memory)": "infinite",
                "log(string memory,string memory,bool,uint256)": "infinite",
                "log(string memory,string memory,string memory)": "infinite",
                "log(string memory,string memory,string memory,address)": "infinite",
                "log(string memory,string memory,string memory,bool)": "infinite",
                "log(string memory,string memory,string memory,string memory)": "infinite",
                "log(string memory,string memory,string memory,uint256)": "infinite",
                "log(string memory,string memory,uint256)": "infinite",
                "log(string memory,string memory,uint256,address)": "infinite",
                "log(string memory,string memory,uint256,bool)": "infinite",
                "log(string memory,string memory,uint256,string memory)": "infinite",
                "log(string memory,string memory,uint256,uint256)": "infinite",
                "log(string memory,uint256)": "infinite",
                "log(string memory,uint256,address)": "infinite",
                "log(string memory,uint256,address,address)": "infinite",
                "log(string memory,uint256,address,bool)": "infinite",
                "log(string memory,uint256,address,string memory)": "infinite",
                "log(string memory,uint256,address,uint256)": "infinite",
                "log(string memory,uint256,bool)": "infinite",
                "log(string memory,uint256,bool,address)": "infinite",
                "log(string memory,uint256,bool,bool)": "infinite",
                "log(string memory,uint256,bool,string memory)": "infinite",
                "log(string memory,uint256,bool,uint256)": "infinite",
                "log(string memory,uint256,string memory)": "infinite",
                "log(string memory,uint256,string memory,address)": "infinite",
                "log(string memory,uint256,string memory,bool)": "infinite",
                "log(string memory,uint256,string memory,string memory)": "infinite",
                "log(string memory,uint256,string memory,uint256)": "infinite",
                "log(string memory,uint256,uint256)": "infinite",
                "log(string memory,uint256,uint256,address)": "infinite",
                "log(string memory,uint256,uint256,bool)": "infinite",
                "log(string memory,uint256,uint256,string memory)": "infinite",
                "log(string memory,uint256,uint256,uint256)": "infinite",
                "log(uint256)": "infinite",
                "log(uint256,address)": "infinite",
                "log(uint256,address,address)": "infinite",
                "log(uint256,address,address,address)": "infinite",
                "log(uint256,address,address,bool)": "infinite",
                "log(uint256,address,address,string memory)": "infinite",
                "log(uint256,address,address,uint256)": "infinite",
                "log(uint256,address,bool)": "infinite",
                "log(uint256,address,bool,address)": "infinite",
                "log(uint256,address,bool,bool)": "infinite",
                "log(uint256,address,bool,string memory)": "infinite",
                "log(uint256,address,bool,uint256)": "infinite",
                "log(uint256,address,string memory)": "infinite",
                "log(uint256,address,string memory,address)": "infinite",
                "log(uint256,address,string memory,bool)": "infinite",
                "log(uint256,address,string memory,string memory)": "infinite",
                "log(uint256,address,string memory,uint256)": "infinite",
                "log(uint256,address,uint256)": "infinite",
                "log(uint256,address,uint256,address)": "infinite",
                "log(uint256,address,uint256,bool)": "infinite",
                "log(uint256,address,uint256,string memory)": "infinite",
                "log(uint256,address,uint256,uint256)": "infinite",
                "log(uint256,bool)": "infinite",
                "log(uint256,bool,address)": "infinite",
                "log(uint256,bool,address,address)": "infinite",
                "log(uint256,bool,address,bool)": "infinite",
                "log(uint256,bool,address,string memory)": "infinite",
                "log(uint256,bool,address,uint256)": "infinite",
                "log(uint256,bool,bool)": "infinite",
                "log(uint256,bool,bool,address)": "infinite",
                "log(uint256,bool,bool,bool)": "infinite",
                "log(uint256,bool,bool,string memory)": "infinite",
                "log(uint256,bool,bool,uint256)": "infinite",
                "log(uint256,bool,string memory)": "infinite",
                "log(uint256,bool,string memory,address)": "infinite",
                "log(uint256,bool,string memory,bool)": "infinite",
                "log(uint256,bool,string memory,string memory)": "infinite",
                "log(uint256,bool,string memory,uint256)": "infinite",
                "log(uint256,bool,uint256)": "infinite",
                "log(uint256,bool,uint256,address)": "infinite",
                "log(uint256,bool,uint256,bool)": "infinite",
                "log(uint256,bool,uint256,string memory)": "infinite",
                "log(uint256,bool,uint256,uint256)": "infinite",
                "log(uint256,string memory)": "infinite",
                "log(uint256,string memory,address)": "infinite",
                "log(uint256,string memory,address,address)": "infinite",
                "log(uint256,string memory,address,bool)": "infinite",
                "log(uint256,string memory,address,string memory)": "infinite",
                "log(uint256,string memory,address,uint256)": "infinite",
                "log(uint256,string memory,bool)": "infinite",
                "log(uint256,string memory,bool,address)": "infinite",
                "log(uint256,string memory,bool,bool)": "infinite",
                "log(uint256,string memory,bool,string memory)": "infinite",
                "log(uint256,string memory,bool,uint256)": "infinite",
                "log(uint256,string memory,string memory)": "infinite",
                "log(uint256,string memory,string memory,address)": "infinite",
                "log(uint256,string memory,string memory,bool)": "infinite",
                "log(uint256,string memory,string memory,string memory)": "infinite",
                "log(uint256,string memory,string memory,uint256)": "infinite",
                "log(uint256,string memory,uint256)": "infinite",
                "log(uint256,string memory,uint256,address)": "infinite",
                "log(uint256,string memory,uint256,bool)": "infinite",
                "log(uint256,string memory,uint256,string memory)": "infinite",
                "log(uint256,string memory,uint256,uint256)": "infinite",
                "log(uint256,uint256)": "infinite",
                "log(uint256,uint256,address)": "infinite",
                "log(uint256,uint256,address,address)": "infinite",
                "log(uint256,uint256,address,bool)": "infinite",
                "log(uint256,uint256,address,string memory)": "infinite",
                "log(uint256,uint256,address,uint256)": "infinite",
                "log(uint256,uint256,bool)": "infinite",
                "log(uint256,uint256,bool,address)": "infinite",
                "log(uint256,uint256,bool,bool)": "infinite",
                "log(uint256,uint256,bool,string memory)": "infinite",
                "log(uint256,uint256,bool,uint256)": "infinite",
                "log(uint256,uint256,string memory)": "infinite",
                "log(uint256,uint256,string memory,address)": "infinite",
                "log(uint256,uint256,string memory,bool)": "infinite",
                "log(uint256,uint256,string memory,string memory)": "infinite",
                "log(uint256,uint256,string memory,uint256)": "infinite",
                "log(uint256,uint256,uint256)": "infinite",
                "log(uint256,uint256,uint256,address)": "infinite",
                "log(uint256,uint256,uint256,bool)": "infinite",
                "log(uint256,uint256,uint256,string memory)": "infinite",
                "log(uint256,uint256,uint256,uint256)": "infinite",
                "logAddress(address)": "infinite",
                "logBool(bool)": "infinite",
                "logBytes(bytes memory)": "infinite",
                "logBytes1(bytes1)": "infinite",
                "logBytes10(bytes10)": "infinite",
                "logBytes11(bytes11)": "infinite",
                "logBytes12(bytes12)": "infinite",
                "logBytes13(bytes13)": "infinite",
                "logBytes14(bytes14)": "infinite",
                "logBytes15(bytes15)": "infinite",
                "logBytes16(bytes16)": "infinite",
                "logBytes17(bytes17)": "infinite",
                "logBytes18(bytes18)": "infinite",
                "logBytes19(bytes19)": "infinite",
                "logBytes2(bytes2)": "infinite",
                "logBytes20(bytes20)": "infinite",
                "logBytes21(bytes21)": "infinite",
                "logBytes22(bytes22)": "infinite",
                "logBytes23(bytes23)": "infinite",
                "logBytes24(bytes24)": "infinite",
                "logBytes25(bytes25)": "infinite",
                "logBytes26(bytes26)": "infinite",
                "logBytes27(bytes27)": "infinite",
                "logBytes28(bytes28)": "infinite",
                "logBytes29(bytes29)": "infinite",
                "logBytes3(bytes3)": "infinite",
                "logBytes30(bytes30)": "infinite",
                "logBytes31(bytes31)": "infinite",
                "logBytes32(bytes32)": "infinite",
                "logBytes4(bytes4)": "infinite",
                "logBytes5(bytes5)": "infinite",
                "logBytes6(bytes6)": "infinite",
                "logBytes7(bytes7)": "infinite",
                "logBytes8(bytes8)": "infinite",
                "logBytes9(bytes9)": "infinite",
                "logInt(int256)": "infinite",
                "logString(string memory)": "infinite",
                "logUint(uint256)": "infinite"
              }
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"hardhat/console.sol\":\"console\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":99999},\"remappings\":[]},\"sources\":{\"hardhat/console.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity >= 0.4.22 <0.9.0;\\n\\nlibrary console {\\n\\taddress constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67);\\n\\n\\tfunction _sendLogPayload(bytes memory payload) private view {\\n\\t\\tuint256 payloadLength = payload.length;\\n\\t\\taddress consoleAddress = CONSOLE_ADDRESS;\\n\\t\\tassembly {\\n\\t\\t\\tlet payloadStart := add(payload, 32)\\n\\t\\t\\tlet r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0)\\n\\t\\t}\\n\\t}\\n\\n\\tfunction log() internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log()\\\"));\\n\\t}\\n\\n\\tfunction logInt(int p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(int)\\\", p0));\\n\\t}\\n\\n\\tfunction logUint(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction logString(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction logBool(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction logAddress(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes(bytes memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes1(bytes1 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes1)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes2(bytes2 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes2)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes3(bytes3 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes3)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes4(bytes4 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes4)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes5(bytes5 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes5)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes6(bytes6 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes6)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes7(bytes7 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes7)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes8(bytes8 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes8)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes9(bytes9 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes9)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes10(bytes10 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes10)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes11(bytes11 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes11)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes12(bytes12 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes12)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes13(bytes13 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes13)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes14(bytes14 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes14)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes15(bytes15 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes15)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes16(bytes16 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes16)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes17(bytes17 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes17)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes18(bytes18 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes18)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes19(bytes19 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes19)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes20(bytes20 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes20)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes21(bytes21 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes21)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes22(bytes22 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes22)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes23(bytes23 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes23)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes24(bytes24 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes24)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes25(bytes25 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes25)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes26(bytes26 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes26)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes27(bytes27 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes27)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes28(bytes28 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes28)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes29(bytes29 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes29)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes30(bytes30 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes30)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes31(bytes31 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes31)\\\", p0));\\n\\t}\\n\\n\\tfunction logBytes32(bytes32 p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bytes32)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint)\\\", p0));\\n\\t}\\n\\n\\tfunction log(string memory p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string)\\\", p0));\\n\\t}\\n\\n\\tfunction log(bool p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool)\\\", p0));\\n\\t}\\n\\n\\tfunction log(address p0) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address)\\\", p0));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(address p0, address p1) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address)\\\", p0, p1));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address)\\\", p0, p1, p2));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(uint p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(uint,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(string memory p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(string,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(bool p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(bool,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, uint p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,uint,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, string memory p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,string,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, bool p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,bool,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, uint p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,uint,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, string memory p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,string,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, bool p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,bool,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, uint p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,uint)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, string memory p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,string)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, bool p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,bool)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n\\tfunction log(address p0, address p1, address p2, address p3) internal view {\\n\\t\\t_sendLogPayload(abi.encodeWithSignature(\\\"log(address,address,address,address)\\\", p0, p1, p2, p3));\\n\\t}\\n\\n}\\n\",\"keccak256\":\"0x72b6a1d297cd3b033d7c2e4a7e7864934bb767db6453623f1c3082c6534547f4\",\"license\":\"MIT\"}},\"version\":1}",
          "storageLayout": {
            "storage": [],
            "types": null
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      }
    },
    "sources": {
      "@openzeppelin/contracts/token/ERC20/ERC20.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
          "exportedSymbols": {
            "Context": [
              670
            ],
            "ERC20": [
              545
            ],
            "IERC20": [
              623
            ],
            "IERC20Metadata": [
              648
            ]
          },
          "id": 546,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:0"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
              "file": "./IERC20.sol",
              "id": 2,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 546,
              "sourceUnit": 624,
              "src": "58:22:0",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
              "file": "./extensions/IERC20Metadata.sol",
              "id": 3,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 546,
              "sourceUnit": 649,
              "src": "81:41:0",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
              "file": "../../utils/Context.sol",
              "id": 4,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 546,
              "sourceUnit": 671,
              "src": "123:33:0",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 6,
                    "name": "Context",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 670,
                    "src": "1349:7:0"
                  },
                  "id": 7,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1349:7:0"
                },
                {
                  "baseName": {
                    "id": 8,
                    "name": "IERC20",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 623,
                    "src": "1358:6:0"
                  },
                  "id": 9,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1358:6:0"
                },
                {
                  "baseName": {
                    "id": 10,
                    "name": "IERC20Metadata",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 648,
                    "src": "1366:14:0"
                  },
                  "id": 11,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1366:14:0"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 5,
                "nodeType": "StructuredDocumentation",
                "src": "158:1172:0",
                "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC20\n applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."
              },
              "fullyImplemented": true,
              "id": 545,
              "linearizedBaseContracts": [
                545,
                648,
                623,
                670
              ],
              "name": "ERC20",
              "nameLocation": "1340:5:0",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 15,
                  "mutability": "mutable",
                  "name": "_balances",
                  "nameLocation": "1423:9:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 545,
                  "src": "1387:45:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 14,
                    "keyType": {
                      "id": 12,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1395:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1387:27:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 13,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1406:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 21,
                  "mutability": "mutable",
                  "name": "_allowances",
                  "nameLocation": "1495:11:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 545,
                  "src": "1439:67:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 20,
                    "keyType": {
                      "id": 16,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1447:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1439:47:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 19,
                      "keyType": {
                        "id": 17,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1466:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1458:27:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 18,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1477:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 23,
                  "mutability": "mutable",
                  "name": "_totalSupply",
                  "nameLocation": "1529:12:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 545,
                  "src": "1513:28:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 22,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1513:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 25,
                  "mutability": "mutable",
                  "name": "_name",
                  "nameLocation": "1563:5:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 545,
                  "src": "1548:20:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 24,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1548:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 27,
                  "mutability": "mutable",
                  "name": "_symbol",
                  "nameLocation": "1589:7:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 545,
                  "src": "1574:22:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 26,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1574:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 43,
                    "nodeType": "Block",
                    "src": "1962:57:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 37,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 35,
                            "name": "_name",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 25,
                            "src": "1972:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 36,
                            "name": "name_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 30,
                            "src": "1980:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1972:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 38,
                        "nodeType": "ExpressionStatement",
                        "src": "1972:13:0"
                      },
                      {
                        "expression": {
                          "id": 41,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 39,
                            "name": "_symbol",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 27,
                            "src": "1995:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 40,
                            "name": "symbol_",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 32,
                            "src": "2005:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1995:17:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 42,
                        "nodeType": "ExpressionStatement",
                        "src": "1995:17:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 28,
                    "nodeType": "StructuredDocumentation",
                    "src": "1603:298:0",
                    "text": " @dev Sets the values for {name} and {symbol}.\n The default value of {decimals} is 18. To select a different value for\n {decimals} you should overload it.\n All two of these values are immutable: they can only be set once during\n construction."
                  },
                  "id": 44,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 33,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30,
                        "mutability": "mutable",
                        "name": "name_",
                        "nameLocation": "1932:5:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 44,
                        "src": "1918:19:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1918:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32,
                        "mutability": "mutable",
                        "name": "symbol_",
                        "nameLocation": "1953:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 44,
                        "src": "1939:21:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1939:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1917:44:0"
                  },
                  "returnParameters": {
                    "id": 34,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1962:0:0"
                  },
                  "scope": 545,
                  "src": "1906:113:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    635
                  ],
                  "body": {
                    "id": 53,
                    "nodeType": "Block",
                    "src": "2153:29:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 51,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 25,
                          "src": "2170:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 50,
                        "id": 52,
                        "nodeType": "Return",
                        "src": "2163:12:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 45,
                    "nodeType": "StructuredDocumentation",
                    "src": "2025:54:0",
                    "text": " @dev Returns the name of the token."
                  },
                  "functionSelector": "06fdde03",
                  "id": 54,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "2093:4:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 47,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2120:8:0"
                  },
                  "parameters": {
                    "id": 46,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2097:2:0"
                  },
                  "returnParameters": {
                    "id": 50,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 49,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 54,
                        "src": "2138:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 48,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2138:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2137:15:0"
                  },
                  "scope": 545,
                  "src": "2084:98:0",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    641
                  ],
                  "body": {
                    "id": 63,
                    "nodeType": "Block",
                    "src": "2366:31:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 61,
                          "name": "_symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27,
                          "src": "2383:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "functionReturnParameters": 60,
                        "id": 62,
                        "nodeType": "Return",
                        "src": "2376:14:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 55,
                    "nodeType": "StructuredDocumentation",
                    "src": "2188:102:0",
                    "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name."
                  },
                  "functionSelector": "95d89b41",
                  "id": 64,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nameLocation": "2304:6:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 57,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2333:8:0"
                  },
                  "parameters": {
                    "id": 56,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2310:2:0"
                  },
                  "returnParameters": {
                    "id": 60,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 59,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 64,
                        "src": "2351:13:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 58,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2351:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2350:15:0"
                  },
                  "scope": 545,
                  "src": "2295:102:0",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    647
                  ],
                  "body": {
                    "id": 73,
                    "nodeType": "Block",
                    "src": "3086:26:0",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "3138",
                          "id": 71,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3103:2:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_18_by_1",
                            "typeString": "int_const 18"
                          },
                          "value": "18"
                        },
                        "functionReturnParameters": 70,
                        "id": 72,
                        "nodeType": "Return",
                        "src": "3096:9:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 65,
                    "nodeType": "StructuredDocumentation",
                    "src": "2403:613:0",
                    "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless this function is\n overridden;\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."
                  },
                  "functionSelector": "313ce567",
                  "id": 74,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nameLocation": "3030:8:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 67,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3061:8:0"
                  },
                  "parameters": {
                    "id": 66,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3038:2:0"
                  },
                  "returnParameters": {
                    "id": 70,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 69,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 74,
                        "src": "3079:5:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 68,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "3079:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3078:7:0"
                  },
                  "scope": 545,
                  "src": "3021:91:0",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    554
                  ],
                  "body": {
                    "id": 83,
                    "nodeType": "Block",
                    "src": "3242:36:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 81,
                          "name": "_totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23,
                          "src": "3259:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 80,
                        "id": 82,
                        "nodeType": "Return",
                        "src": "3252:19:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 75,
                    "nodeType": "StructuredDocumentation",
                    "src": "3118:49:0",
                    "text": " @dev See {IERC20-totalSupply}."
                  },
                  "functionSelector": "18160ddd",
                  "id": 84,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "3181:11:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 77,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3215:8:0"
                  },
                  "parameters": {
                    "id": 76,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3192:2:0"
                  },
                  "returnParameters": {
                    "id": 80,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 79,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 84,
                        "src": "3233:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 78,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3233:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3232:9:0"
                  },
                  "scope": 545,
                  "src": "3172:106:0",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    562
                  ],
                  "body": {
                    "id": 97,
                    "nodeType": "Block",
                    "src": "3419:42:0",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 93,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15,
                            "src": "3436:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 95,
                          "indexExpression": {
                            "id": 94,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 87,
                            "src": "3446:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3436:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 92,
                        "id": 96,
                        "nodeType": "Return",
                        "src": "3429:25:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 85,
                    "nodeType": "StructuredDocumentation",
                    "src": "3284:47:0",
                    "text": " @dev See {IERC20-balanceOf}."
                  },
                  "functionSelector": "70a08231",
                  "id": 98,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "3345:9:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 89,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3392:8:0"
                  },
                  "parameters": {
                    "id": 88,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 87,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "3363:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 98,
                        "src": "3355:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 86,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3355:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3354:17:0"
                  },
                  "returnParameters": {
                    "id": 92,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 91,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 98,
                        "src": "3410:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 90,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3410:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3409:9:0"
                  },
                  "scope": 545,
                  "src": "3336:125:0",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    572
                  ],
                  "body": {
                    "id": 118,
                    "nodeType": "Block",
                    "src": "3756:80:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 110,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 660,
                                "src": "3776:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 111,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3776:12:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 112,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 101,
                              "src": "3790:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 113,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 103,
                              "src": "3801:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 109,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 349,
                            "src": "3766:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3766:42:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 115,
                        "nodeType": "ExpressionStatement",
                        "src": "3766:42:0"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 116,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3825:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 108,
                        "id": 117,
                        "nodeType": "Return",
                        "src": "3818:11:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 99,
                    "nodeType": "StructuredDocumentation",
                    "src": "3467:192:0",
                    "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`."
                  },
                  "functionSelector": "a9059cbb",
                  "id": 119,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nameLocation": "3673:8:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 105,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3732:8:0"
                  },
                  "parameters": {
                    "id": 104,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 101,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "3690:9:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 119,
                        "src": "3682:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 100,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3682:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 103,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "3709:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 119,
                        "src": "3701:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 102,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3701:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3681:35:0"
                  },
                  "returnParameters": {
                    "id": 108,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 107,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 119,
                        "src": "3750:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 106,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3750:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3749:6:0"
                  },
                  "scope": 545,
                  "src": "3664:172:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    582
                  ],
                  "body": {
                    "id": 136,
                    "nodeType": "Block",
                    "src": "3992:51:0",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 130,
                              "name": "_allowances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21,
                              "src": "4009:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 132,
                            "indexExpression": {
                              "id": 131,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 122,
                              "src": "4021:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4009:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 134,
                          "indexExpression": {
                            "id": 133,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 124,
                            "src": "4028:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4009:27:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 129,
                        "id": 135,
                        "nodeType": "Return",
                        "src": "4002:34:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 120,
                    "nodeType": "StructuredDocumentation",
                    "src": "3842:47:0",
                    "text": " @dev See {IERC20-allowance}."
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 137,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nameLocation": "3903:9:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 126,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3965:8:0"
                  },
                  "parameters": {
                    "id": 125,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 122,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "3921:5:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 137,
                        "src": "3913:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 121,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3913:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 124,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "3936:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 137,
                        "src": "3928:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 123,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3928:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3912:32:0"
                  },
                  "returnParameters": {
                    "id": 129,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 128,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 137,
                        "src": "3983:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 127,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3983:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3982:9:0"
                  },
                  "scope": 545,
                  "src": "3894:149:0",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    592
                  ],
                  "body": {
                    "id": 157,
                    "nodeType": "Block",
                    "src": "4270:77:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 149,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 660,
                                "src": "4289:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4289:12:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 151,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 140,
                              "src": "4303:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 152,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 142,
                              "src": "4312:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 148,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 522,
                            "src": "4280:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 153,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4280:39:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 154,
                        "nodeType": "ExpressionStatement",
                        "src": "4280:39:0"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 155,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4336:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 147,
                        "id": 156,
                        "nodeType": "Return",
                        "src": "4329:11:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 138,
                    "nodeType": "StructuredDocumentation",
                    "src": "4049:127:0",
                    "text": " @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 158,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "4190:7:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 144,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4246:8:0"
                  },
                  "parameters": {
                    "id": 143,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 140,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "4206:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 158,
                        "src": "4198:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 139,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4198:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 142,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "4223:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 158,
                        "src": "4215:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 141,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4215:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4197:33:0"
                  },
                  "returnParameters": {
                    "id": 147,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 146,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 158,
                        "src": "4264:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 145,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4264:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4263:6:0"
                  },
                  "scope": 545,
                  "src": "4181:166:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    604
                  ],
                  "body": {
                    "id": 205,
                    "nodeType": "Block",
                    "src": "4956:336:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 172,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 161,
                              "src": "4976:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 173,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 163,
                              "src": "4984:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 174,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 165,
                              "src": "4995:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 171,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 349,
                            "src": "4966:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4966:36:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 176,
                        "nodeType": "ExpressionStatement",
                        "src": "4966:36:0"
                      },
                      {
                        "assignments": [
                          178
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 178,
                            "mutability": "mutable",
                            "name": "currentAllowance",
                            "nameLocation": "5021:16:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 205,
                            "src": "5013:24:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 177,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5013:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 185,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 179,
                              "name": "_allowances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21,
                              "src": "5040:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 181,
                            "indexExpression": {
                              "id": 180,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 161,
                              "src": "5052:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5040:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 184,
                          "indexExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 182,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 660,
                              "src": "5060:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 183,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5060:12:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5040:33:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5013:60:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 187,
                                "name": "currentAllowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 178,
                                "src": "5091:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 188,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 165,
                                "src": "5111:6:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5091:26:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365",
                              "id": 190,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5119:42:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                              },
                              "value": "ERC20: transfer amount exceeds allowance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                              }
                            ],
                            "id": 186,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5083:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5083:79:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 192,
                        "nodeType": "ExpressionStatement",
                        "src": "5083:79:0"
                      },
                      {
                        "id": 202,
                        "nodeType": "UncheckedBlock",
                        "src": "5172:92:0",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 194,
                                  "name": "sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 161,
                                  "src": "5205:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 195,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 660,
                                    "src": "5213:10:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 196,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5213:12:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 199,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 197,
                                    "name": "currentAllowance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 178,
                                    "src": "5227:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 198,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 165,
                                    "src": "5246:6:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5227:25:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 193,
                                "name": "_approve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 522,
                                "src": "5196:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,uint256)"
                                }
                              },
                              "id": 200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5196:57:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 201,
                            "nodeType": "ExpressionStatement",
                            "src": "5196:57:0"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5281:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 170,
                        "id": 204,
                        "nodeType": "Return",
                        "src": "5274:11:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 159,
                    "nodeType": "StructuredDocumentation",
                    "src": "4353:456:0",
                    "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`."
                  },
                  "functionSelector": "23b872dd",
                  "id": 206,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "4823:12:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 167,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4932:8:0"
                  },
                  "parameters": {
                    "id": 166,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 161,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "4853:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 206,
                        "src": "4845:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 160,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4845:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 163,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "4877:9:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 206,
                        "src": "4869:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 162,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4869:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 165,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "4904:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 206,
                        "src": "4896:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 164,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4896:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4835:81:0"
                  },
                  "returnParameters": {
                    "id": 170,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 169,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 206,
                        "src": "4950:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 168,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4950:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4949:6:0"
                  },
                  "scope": 545,
                  "src": "4814:478:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 232,
                    "nodeType": "Block",
                    "src": "5781:118:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 217,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 660,
                                "src": "5800:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 218,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5800:12:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 219,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 209,
                              "src": "5814:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 227,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 220,
                                    "name": "_allowances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21,
                                    "src": "5823:11:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 223,
                                  "indexExpression": {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 221,
                                      "name": "_msgSender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 660,
                                      "src": "5835:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                        "typeString": "function () view returns (address)"
                                      }
                                    },
                                    "id": 222,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5835:12:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5823:25:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 225,
                                "indexExpression": {
                                  "id": 224,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 209,
                                  "src": "5849:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5823:34:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "id": 226,
                                "name": "addedValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 211,
                                "src": "5860:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5823:47:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 216,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 522,
                            "src": "5791:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5791:80:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 229,
                        "nodeType": "ExpressionStatement",
                        "src": "5791:80:0"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5888:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 215,
                        "id": 231,
                        "nodeType": "Return",
                        "src": "5881:11:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 207,
                    "nodeType": "StructuredDocumentation",
                    "src": "5298:384:0",
                    "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."
                  },
                  "functionSelector": "39509351",
                  "id": 233,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "increaseAllowance",
                  "nameLocation": "5696:17:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 212,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 209,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "5722:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 233,
                        "src": "5714:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 208,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5714:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 211,
                        "mutability": "mutable",
                        "name": "addedValue",
                        "nameLocation": "5739:10:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 233,
                        "src": "5731:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 210,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5731:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5713:37:0"
                  },
                  "returnParameters": {
                    "id": 215,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 214,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 233,
                        "src": "5775:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 213,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5775:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5774:6:0"
                  },
                  "scope": 545,
                  "src": "5687:212:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 271,
                    "nodeType": "Block",
                    "src": "6485:306:0",
                    "statements": [
                      {
                        "assignments": [
                          244
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 244,
                            "mutability": "mutable",
                            "name": "currentAllowance",
                            "nameLocation": "6503:16:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 271,
                            "src": "6495:24:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 243,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6495:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 251,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 245,
                              "name": "_allowances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21,
                              "src": "6522:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 248,
                            "indexExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 246,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 660,
                                "src": "6534:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 247,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6534:12:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6522:25:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 250,
                          "indexExpression": {
                            "id": 249,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 236,
                            "src": "6548:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6522:34:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6495:61:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 255,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 253,
                                "name": "currentAllowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 244,
                                "src": "6574:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 254,
                                "name": "subtractedValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 238,
                                "src": "6594:15:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6574:35:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
                              "id": 256,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6611:39:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                              },
                              "value": "ERC20: decreased allowance below zero"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                              }
                            ],
                            "id": 252,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6566:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 257,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6566:85:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 258,
                        "nodeType": "ExpressionStatement",
                        "src": "6566:85:0"
                      },
                      {
                        "id": 268,
                        "nodeType": "UncheckedBlock",
                        "src": "6661:102:0",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 260,
                                    "name": "_msgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 660,
                                    "src": "6694:10:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                      "typeString": "function () view returns (address)"
                                    }
                                  },
                                  "id": 261,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6694:12:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 262,
                                  "name": "spender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 236,
                                  "src": "6708:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 265,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 263,
                                    "name": "currentAllowance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 244,
                                    "src": "6717:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 264,
                                    "name": "subtractedValue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 238,
                                    "src": "6736:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6717:34:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 259,
                                "name": "_approve",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 522,
                                "src": "6685:8:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,uint256)"
                                }
                              },
                              "id": 266,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6685:67:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 267,
                            "nodeType": "ExpressionStatement",
                            "src": "6685:67:0"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6780:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 242,
                        "id": 270,
                        "nodeType": "Return",
                        "src": "6773:11:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 234,
                    "nodeType": "StructuredDocumentation",
                    "src": "5905:476:0",
                    "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."
                  },
                  "functionSelector": "a457c2d7",
                  "id": 272,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decreaseAllowance",
                  "nameLocation": "6395:17:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 239,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 236,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "6421:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 272,
                        "src": "6413:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 235,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6413:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 238,
                        "mutability": "mutable",
                        "name": "subtractedValue",
                        "nameLocation": "6438:15:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 272,
                        "src": "6430:23:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 237,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6430:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6412:42:0"
                  },
                  "returnParameters": {
                    "id": 242,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 241,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 272,
                        "src": "6479:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 240,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6479:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6478:6:0"
                  },
                  "scope": 545,
                  "src": "6386:405:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 348,
                    "nodeType": "Block",
                    "src": "7382:596:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 288,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 283,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 275,
                                "src": "7400:6:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 286,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7418:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 285,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7410:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 284,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7410:7:0",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 287,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7410:10:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7400:20:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373",
                              "id": 289,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7422:39:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                                "typeString": "literal_string \"ERC20: transfer from the zero address\""
                              },
                              "value": "ERC20: transfer from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                                "typeString": "literal_string \"ERC20: transfer from the zero address\""
                              }
                            ],
                            "id": 282,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7392:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7392:70:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 291,
                        "nodeType": "ExpressionStatement",
                        "src": "7392:70:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 298,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 293,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 277,
                                "src": "7480:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 296,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7501:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 295,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7493:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 294,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7493:7:0",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 297,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7493:10:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7480:23:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373",
                              "id": 299,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7505:37:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                                "typeString": "literal_string \"ERC20: transfer to the zero address\""
                              },
                              "value": "ERC20: transfer to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                                "typeString": "literal_string \"ERC20: transfer to the zero address\""
                              }
                            ],
                            "id": 292,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7472:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 300,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7472:71:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 301,
                        "nodeType": "ExpressionStatement",
                        "src": "7472:71:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 303,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 275,
                              "src": "7575:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 304,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 277,
                              "src": "7583:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 305,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 279,
                              "src": "7594:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 302,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 533,
                            "src": "7554:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7554:47:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 307,
                        "nodeType": "ExpressionStatement",
                        "src": "7554:47:0"
                      },
                      {
                        "assignments": [
                          309
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 309,
                            "mutability": "mutable",
                            "name": "senderBalance",
                            "nameLocation": "7620:13:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 348,
                            "src": "7612:21:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 308,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7612:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 313,
                        "initialValue": {
                          "baseExpression": {
                            "id": 310,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15,
                            "src": "7636:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 312,
                          "indexExpression": {
                            "id": 311,
                            "name": "sender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 275,
                            "src": "7646:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7636:17:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7612:41:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 317,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 315,
                                "name": "senderBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 309,
                                "src": "7671:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 316,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 279,
                                "src": "7688:6:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7671:23:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365",
                              "id": 318,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7696:40:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                              },
                              "value": "ERC20: transfer amount exceeds balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                              }
                            ],
                            "id": 314,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7663:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7663:74:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 320,
                        "nodeType": "ExpressionStatement",
                        "src": "7663:74:0"
                      },
                      {
                        "id": 329,
                        "nodeType": "UncheckedBlock",
                        "src": "7747:77:0",
                        "statements": [
                          {
                            "expression": {
                              "id": 327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 321,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15,
                                  "src": "7771:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 323,
                                "indexExpression": {
                                  "id": 322,
                                  "name": "sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 275,
                                  "src": "7781:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "7771:17:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 326,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 324,
                                  "name": "senderBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 309,
                                  "src": "7791:13:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 325,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 279,
                                  "src": "7807:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7791:22:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7771:42:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 328,
                            "nodeType": "ExpressionStatement",
                            "src": "7771:42:0"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 330,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15,
                              "src": "7833:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 332,
                            "indexExpression": {
                              "id": 331,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 277,
                              "src": "7843:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "7833:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 333,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 279,
                            "src": "7857:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7833:30:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 335,
                        "nodeType": "ExpressionStatement",
                        "src": "7833:30:0"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 337,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 275,
                              "src": "7888:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 338,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 277,
                              "src": "7896:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 339,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 279,
                              "src": "7907:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 336,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 613,
                            "src": "7879:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7879:35:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 341,
                        "nodeType": "EmitStatement",
                        "src": "7874:40:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 343,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 275,
                              "src": "7945:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 344,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 277,
                              "src": "7953:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 345,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 279,
                              "src": "7964:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 342,
                            "name": "_afterTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 544,
                            "src": "7925:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7925:46:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 347,
                        "nodeType": "ExpressionStatement",
                        "src": "7925:46:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 273,
                    "nodeType": "StructuredDocumentation",
                    "src": "6797:463:0",
                    "text": " @dev Moves `amount` of tokens from `sender` to `recipient`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`."
                  },
                  "id": 349,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nameLocation": "7274:9:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 280,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 275,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "7301:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 349,
                        "src": "7293:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 274,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7293:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 277,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "7325:9:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 349,
                        "src": "7317:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 276,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7317:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 279,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "7352:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 349,
                        "src": "7344:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 278,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7344:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7283:81:0"
                  },
                  "returnParameters": {
                    "id": 281,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7382:0:0"
                  },
                  "scope": 545,
                  "src": "7265:713:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 404,
                    "nodeType": "Block",
                    "src": "8319:324:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 363,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 358,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 352,
                                "src": "8337:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 361,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8356:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 360,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8348:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 359,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8348:7:0",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 362,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8348:10:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "8337:21:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
                              "id": 364,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8360:33:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                                "typeString": "literal_string \"ERC20: mint to the zero address\""
                              },
                              "value": "ERC20: mint to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                                "typeString": "literal_string \"ERC20: mint to the zero address\""
                              }
                            ],
                            "id": 357,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8329:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8329:65:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 366,
                        "nodeType": "ExpressionStatement",
                        "src": "8329:65:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 370,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8434:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 369,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8426:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 368,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8426:7:0",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 371,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8426:10:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 372,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 352,
                              "src": "8438:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 373,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 354,
                              "src": "8447:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 367,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 533,
                            "src": "8405:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8405:49:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 375,
                        "nodeType": "ExpressionStatement",
                        "src": "8405:49:0"
                      },
                      {
                        "expression": {
                          "id": 378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 376,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23,
                            "src": "8465:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 377,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 354,
                            "src": "8481:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8465:22:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 379,
                        "nodeType": "ExpressionStatement",
                        "src": "8465:22:0"
                      },
                      {
                        "expression": {
                          "id": 384,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 380,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15,
                              "src": "8497:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 382,
                            "indexExpression": {
                              "id": 381,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 352,
                              "src": "8507:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8497:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 383,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 354,
                            "src": "8519:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8497:28:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 385,
                        "nodeType": "ExpressionStatement",
                        "src": "8497:28:0"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 389,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8557:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 388,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8549:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 387,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8549:7:0",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 390,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8549:10:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 391,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 352,
                              "src": "8561:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 392,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 354,
                              "src": "8570:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 386,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 613,
                            "src": "8540:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8540:37:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 394,
                        "nodeType": "EmitStatement",
                        "src": "8535:42:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 398,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8616:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 397,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8608:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 396,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8608:7:0",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 399,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8608:10:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 400,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 352,
                              "src": "8620:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 401,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 354,
                              "src": "8629:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 395,
                            "name": "_afterTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 544,
                            "src": "8588:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8588:48:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 403,
                        "nodeType": "ExpressionStatement",
                        "src": "8588:48:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 350,
                    "nodeType": "StructuredDocumentation",
                    "src": "7984:265:0",
                    "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `account` cannot be the zero address."
                  },
                  "id": 405,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nameLocation": "8263:5:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 355,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 352,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "8277:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 405,
                        "src": "8269:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 351,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8269:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 354,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "8294:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 405,
                        "src": "8286:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 353,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8286:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8268:33:0"
                  },
                  "returnParameters": {
                    "id": 356,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8319:0:0"
                  },
                  "scope": 545,
                  "src": "8254:389:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 476,
                    "nodeType": "Block",
                    "src": "9028:511:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 419,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 414,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 408,
                                "src": "9046:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 417,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9065:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 416,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9057:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 415,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9057:7:0",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 418,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9057:10:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "9046:21:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373",
                              "id": 420,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9069:35:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                                "typeString": "literal_string \"ERC20: burn from the zero address\""
                              },
                              "value": "ERC20: burn from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                                "typeString": "literal_string \"ERC20: burn from the zero address\""
                              }
                            ],
                            "id": 413,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9038:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9038:67:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 422,
                        "nodeType": "ExpressionStatement",
                        "src": "9038:67:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 424,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 408,
                              "src": "9137:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 427,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9154:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 426,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9146:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 425,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9146:7:0",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 428,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9146:10:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 429,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 410,
                              "src": "9158:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 423,
                            "name": "_beforeTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 533,
                            "src": "9116:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9116:49:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 431,
                        "nodeType": "ExpressionStatement",
                        "src": "9116:49:0"
                      },
                      {
                        "assignments": [
                          433
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 433,
                            "mutability": "mutable",
                            "name": "accountBalance",
                            "nameLocation": "9184:14:0",
                            "nodeType": "VariableDeclaration",
                            "scope": 476,
                            "src": "9176:22:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 432,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9176:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 437,
                        "initialValue": {
                          "baseExpression": {
                            "id": 434,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15,
                            "src": "9201:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 436,
                          "indexExpression": {
                            "id": 435,
                            "name": "account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 408,
                            "src": "9211:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9201:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9176:43:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 441,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 439,
                                "name": "accountBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 433,
                                "src": "9237:14:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 440,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 410,
                                "src": "9255:6:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9237:24:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365",
                              "id": 442,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9263:36:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                                "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                              },
                              "value": "ERC20: burn amount exceeds balance"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                                "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                              }
                            ],
                            "id": 438,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9229:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9229:71:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 444,
                        "nodeType": "ExpressionStatement",
                        "src": "9229:71:0"
                      },
                      {
                        "id": 453,
                        "nodeType": "UncheckedBlock",
                        "src": "9310:79:0",
                        "statements": [
                          {
                            "expression": {
                              "id": 451,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 445,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15,
                                  "src": "9334:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 447,
                                "indexExpression": {
                                  "id": 446,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 408,
                                  "src": "9344:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "9334:18:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 450,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 448,
                                  "name": "accountBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 433,
                                  "src": "9355:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 449,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 410,
                                  "src": "9372:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9355:23:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9334:44:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 452,
                            "nodeType": "ExpressionStatement",
                            "src": "9334:44:0"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 456,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 454,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23,
                            "src": "9398:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 455,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 410,
                            "src": "9414:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9398:22:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 457,
                        "nodeType": "ExpressionStatement",
                        "src": "9398:22:0"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 459,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 408,
                              "src": "9445:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 462,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9462:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 461,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9454:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 460,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9454:7:0",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 463,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9454:10:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 464,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 410,
                              "src": "9466:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 458,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 613,
                            "src": "9436:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9436:37:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 466,
                        "nodeType": "EmitStatement",
                        "src": "9431:42:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 468,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 408,
                              "src": "9504:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 471,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9521:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 470,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9513:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 469,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9513:7:0",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9513:10:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 473,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 410,
                              "src": "9525:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 467,
                            "name": "_afterTokenTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 544,
                            "src": "9484:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9484:48:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 475,
                        "nodeType": "ExpressionStatement",
                        "src": "9484:48:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 406,
                    "nodeType": "StructuredDocumentation",
                    "src": "8649:309:0",
                    "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."
                  },
                  "id": 477,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nameLocation": "8972:5:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 411,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 408,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "8986:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 477,
                        "src": "8978:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 407,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8978:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 410,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "9003:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 477,
                        "src": "8995:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 409,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8995:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8977:33:0"
                  },
                  "returnParameters": {
                    "id": 412,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9028:0:0"
                  },
                  "scope": 545,
                  "src": "8963:576:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 521,
                    "nodeType": "Block",
                    "src": "10075:257:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 488,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 480,
                                "src": "10093:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 491,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10110:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 490,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10102:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 489,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10102:7:0",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 492,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10102:10:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10093:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373",
                              "id": 494,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10114:38:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                                "typeString": "literal_string \"ERC20: approve from the zero address\""
                              },
                              "value": "ERC20: approve from the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                                "typeString": "literal_string \"ERC20: approve from the zero address\""
                              }
                            ],
                            "id": 487,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10085:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 495,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10085:68:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 496,
                        "nodeType": "ExpressionStatement",
                        "src": "10085:68:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 503,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 498,
                                "name": "spender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 482,
                                "src": "10171:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 501,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10190:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 500,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10182:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 499,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10182:7:0",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 502,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10182:10:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10171:21:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373",
                              "id": 504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10194:36:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                                "typeString": "literal_string \"ERC20: approve to the zero address\""
                              },
                              "value": "ERC20: approve to the zero address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                                "typeString": "literal_string \"ERC20: approve to the zero address\""
                              }
                            ],
                            "id": 497,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10163:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10163:68:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 506,
                        "nodeType": "ExpressionStatement",
                        "src": "10163:68:0"
                      },
                      {
                        "expression": {
                          "id": 513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 507,
                                "name": "_allowances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21,
                                "src": "10242:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 510,
                              "indexExpression": {
                                "id": 508,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 480,
                                "src": "10254:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10242:18:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 511,
                            "indexExpression": {
                              "id": 509,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 482,
                              "src": "10261:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10242:27:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 512,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 484,
                            "src": "10272:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10242:36:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 514,
                        "nodeType": "ExpressionStatement",
                        "src": "10242:36:0"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 516,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 480,
                              "src": "10302:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 517,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 482,
                              "src": "10309:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 518,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 484,
                              "src": "10318:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 515,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 622,
                            "src": "10293:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 519,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10293:32:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 520,
                        "nodeType": "EmitStatement",
                        "src": "10288:37:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 478,
                    "nodeType": "StructuredDocumentation",
                    "src": "9545:412:0",
                    "text": " @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."
                  },
                  "id": 522,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_approve",
                  "nameLocation": "9971:8:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 485,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 480,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "9997:5:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 522,
                        "src": "9989:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 479,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9989:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 482,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "10020:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 522,
                        "src": "10012:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 481,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10012:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 484,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "10045:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 522,
                        "src": "10037:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 483,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10037:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9979:78:0"
                  },
                  "returnParameters": {
                    "id": 486,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10075:0:0"
                  },
                  "scope": 545,
                  "src": "9962:370:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 532,
                    "nodeType": "Block",
                    "src": "11035:2:0",
                    "statements": []
                  },
                  "documentation": {
                    "id": 523,
                    "nodeType": "StructuredDocumentation",
                    "src": "10338:573:0",
                    "text": " @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
                  },
                  "id": 533,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_beforeTokenTransfer",
                  "nameLocation": "10925:20:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 530,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 525,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "10963:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 533,
                        "src": "10955:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 524,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10955:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 527,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "10985:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 533,
                        "src": "10977:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 526,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10977:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 529,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "11005:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 533,
                        "src": "10997:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 528,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10997:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10945:72:0"
                  },
                  "returnParameters": {
                    "id": 531,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11035:0:0"
                  },
                  "scope": 545,
                  "src": "10916:121:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 543,
                    "nodeType": "Block",
                    "src": "11743:2:0",
                    "statements": []
                  },
                  "documentation": {
                    "id": 534,
                    "nodeType": "StructuredDocumentation",
                    "src": "11043:577:0",
                    "text": " @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n has been transferred to `to`.\n - when `from` is zero, `amount` tokens have been minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens have been burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
                  },
                  "id": 544,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_afterTokenTransfer",
                  "nameLocation": "11634:19:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 541,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 536,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "11671:4:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 544,
                        "src": "11663:12:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 535,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11663:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 538,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "11693:2:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 544,
                        "src": "11685:10:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 537,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11685:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 540,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "11713:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 544,
                        "src": "11705:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 539,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11705:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11653:72:0"
                  },
                  "returnParameters": {
                    "id": 542,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11743:0:0"
                  },
                  "scope": 545,
                  "src": "11625:120:0",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 546,
              "src": "1331:10416:0",
              "usedErrors": []
            }
          ],
          "src": "33:11715:0"
        },
        "id": 0
      },
      "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
          "exportedSymbols": {
            "IERC20": [
              623
            ]
          },
          "id": 624,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 547,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:1"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 548,
                "nodeType": "StructuredDocumentation",
                "src": "58:70:1",
                "text": " @dev Interface of the ERC20 standard as defined in the EIP."
              },
              "fullyImplemented": false,
              "id": 623,
              "linearizedBaseContracts": [
                623
              ],
              "name": "IERC20",
              "nameLocation": "139:6:1",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 549,
                    "nodeType": "StructuredDocumentation",
                    "src": "152:66:1",
                    "text": " @dev Returns the amount of tokens in existence."
                  },
                  "functionSelector": "18160ddd",
                  "id": 554,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "232:11:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 550,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "243:2:1"
                  },
                  "returnParameters": {
                    "id": 553,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 552,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 554,
                        "src": "269:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 551,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "269:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "268:9:1"
                  },
                  "scope": 623,
                  "src": "223:55:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 555,
                    "nodeType": "StructuredDocumentation",
                    "src": "284:72:1",
                    "text": " @dev Returns the amount of tokens owned by `account`."
                  },
                  "functionSelector": "70a08231",
                  "id": 562,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "370:9:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 558,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 557,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "388:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 562,
                        "src": "380:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 556,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "380:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "379:17:1"
                  },
                  "returnParameters": {
                    "id": 561,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 560,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 562,
                        "src": "420:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 559,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "420:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "419:9:1"
                  },
                  "scope": 623,
                  "src": "361:68:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 563,
                    "nodeType": "StructuredDocumentation",
                    "src": "435:209:1",
                    "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "a9059cbb",
                  "id": 572,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nameLocation": "658:8:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 568,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 565,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "675:9:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 572,
                        "src": "667:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 564,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "667:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 567,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "694:6:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 572,
                        "src": "686:14:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 566,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "686:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "666:35:1"
                  },
                  "returnParameters": {
                    "id": 571,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 570,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 572,
                        "src": "720:4:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 569,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "720:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "719:6:1"
                  },
                  "scope": 623,
                  "src": "649:77:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 573,
                    "nodeType": "StructuredDocumentation",
                    "src": "732:264:1",
                    "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 582,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nameLocation": "1010:9:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 578,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 575,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1028:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 582,
                        "src": "1020:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 574,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1020:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 577,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "1043:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 582,
                        "src": "1035:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 576,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1035:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1019:32:1"
                  },
                  "returnParameters": {
                    "id": 581,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 580,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 582,
                        "src": "1075:7:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 579,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1075:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1074:9:1"
                  },
                  "scope": 623,
                  "src": "1001:83:1",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 583,
                    "nodeType": "StructuredDocumentation",
                    "src": "1090:642:1",
                    "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 592,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "1746:7:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 588,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 585,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "1762:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 592,
                        "src": "1754:15:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 584,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1754:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 587,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1779:6:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 592,
                        "src": "1771:14:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 586,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1771:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1753:33:1"
                  },
                  "returnParameters": {
                    "id": 591,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 590,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 592,
                        "src": "1805:4:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 589,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1805:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1804:6:1"
                  },
                  "scope": 623,
                  "src": "1737:74:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 593,
                    "nodeType": "StructuredDocumentation",
                    "src": "1817:296:1",
                    "text": " @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                  },
                  "functionSelector": "23b872dd",
                  "id": 604,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "2127:12:1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 600,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 595,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "2157:6:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 604,
                        "src": "2149:14:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 594,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2149:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 597,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "2181:9:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 604,
                        "src": "2173:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 596,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2173:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 599,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2208:6:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 604,
                        "src": "2200:14:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 598,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2200:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2139:81:1"
                  },
                  "returnParameters": {
                    "id": 603,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 602,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 604,
                        "src": "2239:4:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 601,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2239:4:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2238:6:1"
                  },
                  "scope": 623,
                  "src": "2118:127:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 605,
                    "nodeType": "StructuredDocumentation",
                    "src": "2251:158:1",
                    "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."
                  },
                  "id": 613,
                  "name": "Transfer",
                  "nameLocation": "2420:8:1",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 612,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 607,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2445:4:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 613,
                        "src": "2429:20:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 606,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2429:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 609,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2467:2:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 613,
                        "src": "2451:18:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 608,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2451:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 611,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2479:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 613,
                        "src": "2471:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 610,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2471:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2428:57:1"
                  },
                  "src": "2414:72:1"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 614,
                    "nodeType": "StructuredDocumentation",
                    "src": "2492:148:1",
                    "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."
                  },
                  "id": 622,
                  "name": "Approval",
                  "nameLocation": "2651:8:1",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 621,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 616,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "2676:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 622,
                        "src": "2660:21:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 615,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2660:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 618,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "2699:7:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 622,
                        "src": "2683:23:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 617,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2683:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 620,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "2716:5:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 622,
                        "src": "2708:13:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 619,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2708:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2659:63:1"
                  },
                  "src": "2645:78:1"
                }
              ],
              "scope": 624,
              "src": "129:2596:1",
              "usedErrors": []
            }
          ],
          "src": "33:2693:1"
        },
        "id": 1
      },
      "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
          "exportedSymbols": {
            "IERC20": [
              623
            ],
            "IERC20Metadata": [
              648
            ]
          },
          "id": 649,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 625,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:2"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
              "file": "../IERC20.sol",
              "id": 626,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 649,
              "sourceUnit": 624,
              "src": "58:23:2",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 628,
                    "name": "IERC20",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 623,
                    "src": "228:6:2"
                  },
                  "id": 629,
                  "nodeType": "InheritanceSpecifier",
                  "src": "228:6:2"
                }
              ],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 627,
                "nodeType": "StructuredDocumentation",
                "src": "83:116:2",
                "text": " @dev Interface for the optional metadata functions from the ERC20 standard.\n _Available since v4.1._"
              },
              "fullyImplemented": false,
              "id": 648,
              "linearizedBaseContracts": [
                648,
                623
              ],
              "name": "IERC20Metadata",
              "nameLocation": "210:14:2",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 630,
                    "nodeType": "StructuredDocumentation",
                    "src": "241:54:2",
                    "text": " @dev Returns the name of the token."
                  },
                  "functionSelector": "06fdde03",
                  "id": 635,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "309:4:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 631,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "313:2:2"
                  },
                  "returnParameters": {
                    "id": 634,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 633,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 635,
                        "src": "339:13:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 632,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "339:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "338:15:2"
                  },
                  "scope": 648,
                  "src": "300:54:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 636,
                    "nodeType": "StructuredDocumentation",
                    "src": "360:56:2",
                    "text": " @dev Returns the symbol of the token."
                  },
                  "functionSelector": "95d89b41",
                  "id": 641,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "symbol",
                  "nameLocation": "430:6:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 637,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "436:2:2"
                  },
                  "returnParameters": {
                    "id": 640,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 639,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 641,
                        "src": "462:13:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 638,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "462:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "461:15:2"
                  },
                  "scope": 648,
                  "src": "421:56:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 642,
                    "nodeType": "StructuredDocumentation",
                    "src": "483:65:2",
                    "text": " @dev Returns the decimals places of the token."
                  },
                  "functionSelector": "313ce567",
                  "id": 647,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decimals",
                  "nameLocation": "562:8:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 643,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "570:2:2"
                  },
                  "returnParameters": {
                    "id": 646,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 645,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 647,
                        "src": "596:5:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 644,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "596:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "595:7:2"
                  },
                  "scope": 648,
                  "src": "553:50:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 649,
              "src": "200:405:2",
              "usedErrors": []
            }
          ],
          "src": "33:573:2"
        },
        "id": 2
      },
      "@openzeppelin/contracts/utils/Context.sol": {
        "ast": {
          "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
          "exportedSymbols": {
            "Context": [
              670
            ]
          },
          "id": 671,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 650,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:23:3"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 651,
                "nodeType": "StructuredDocumentation",
                "src": "58:496:3",
                "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."
              },
              "fullyImplemented": true,
              "id": 670,
              "linearizedBaseContracts": [
                670
              ],
              "name": "Context",
              "nameLocation": "573:7:3",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 659,
                    "nodeType": "Block",
                    "src": "649:34:3",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 656,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "666:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "666:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 655,
                        "id": 658,
                        "nodeType": "Return",
                        "src": "659:17:3"
                      }
                    ]
                  },
                  "id": 660,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgSender",
                  "nameLocation": "596:10:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 652,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "606:2:3"
                  },
                  "returnParameters": {
                    "id": 655,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 654,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 660,
                        "src": "640:7:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 653,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "640:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "639:9:3"
                  },
                  "scope": 670,
                  "src": "587:96:3",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 668,
                    "nodeType": "Block",
                    "src": "756:32:3",
                    "statements": [
                      {
                        "expression": {
                          "expression": {
                            "id": 665,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "773:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "src": "773:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_calldata_ptr",
                            "typeString": "bytes calldata"
                          }
                        },
                        "functionReturnParameters": 664,
                        "id": 667,
                        "nodeType": "Return",
                        "src": "766:15:3"
                      }
                    ]
                  },
                  "id": 669,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_msgData",
                  "nameLocation": "698:8:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 661,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "706:2:3"
                  },
                  "returnParameters": {
                    "id": 664,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 663,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 669,
                        "src": "740:14:3",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 662,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "740:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "739:16:3"
                  },
                  "scope": 670,
                  "src": "689:99:3",
                  "stateMutability": "view",
                  "virtual": true,
                  "visibility": "internal"
                }
              ],
              "scope": 671,
              "src": "555:235:3",
              "usedErrors": []
            }
          ],
          "src": "33:758:3"
        },
        "id": 3
      },
      "contracts/TridentRouter.sol": {
        "ast": {
          "absolutePath": "contracts/TridentRouter.sol",
          "exportedSymbols": {
            "IBentoBoxMinimal": [
              2253
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "ITridentRouter": [
              2573
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "RouterHelper": [
              24070
            ],
            "TridentPermit": [
              24373
            ],
            "TridentRouter": [
              1892
            ]
          },
          "id": 1893,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 672,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:4"
            },
            {
              "absolutePath": "contracts/interfaces/IPool.sol",
              "file": "./interfaces/IPool.sol",
              "id": 673,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1893,
              "sourceUnit": 2451,
              "src": "72:32:4",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ITridentRouter.sol",
              "file": "./interfaces/ITridentRouter.sol",
              "id": 674,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1893,
              "sourceUnit": 2574,
              "src": "105:41:4",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/utils/RouterHelper.sol",
              "file": "./utils/RouterHelper.sol",
              "id": 675,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1893,
              "sourceUnit": 24071,
              "src": "147:34:4",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 677,
                    "name": "ITridentRouter",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2573,
                    "src": "282:14:4"
                  },
                  "id": 678,
                  "nodeType": "InheritanceSpecifier",
                  "src": "282:14:4"
                },
                {
                  "baseName": {
                    "id": 679,
                    "name": "RouterHelper",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 24070,
                    "src": "298:12:4"
                  },
                  "id": 680,
                  "nodeType": "InheritanceSpecifier",
                  "src": "298:12:4"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 676,
                "nodeType": "StructuredDocumentation",
                "src": "183:73:4",
                "text": "@notice Router contract that helps in swapping across Trident pools."
              },
              "fullyImplemented": true,
              "id": 1892,
              "linearizedBaseContracts": [
                1892,
                24070,
                24373,
                2573
              ],
              "name": "TridentRouter",
              "nameLocation": "265:13:4",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "documentation": {
                    "id": 681,
                    "nodeType": "StructuredDocumentation",
                    "src": "317:168:4",
                    "text": "@dev Used to ensure that `tridentSwapCallback` is called only by the authorized address.\n These are set when someone calls a flash swap and reset afterwards."
                  },
                  "id": 683,
                  "mutability": "mutable",
                  "name": "cachedMsgSender",
                  "nameLocation": "507:15:4",
                  "nodeType": "VariableDeclaration",
                  "scope": 1892,
                  "src": "490:32:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 682,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "490:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 685,
                  "mutability": "mutable",
                  "name": "cachedPool",
                  "nameLocation": "545:10:4",
                  "nodeType": "VariableDeclaration",
                  "scope": 1892,
                  "src": "528:27:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 684,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "528:7:4",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 689,
                  "mutability": "mutable",
                  "name": "whitelistedPools",
                  "nameLocation": "596:16:4",
                  "nodeType": "VariableDeclaration",
                  "scope": 1892,
                  "src": "562:50:4",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 688,
                    "keyType": {
                      "id": 686,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "570:7:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "562:24:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 687,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "581:4:4",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 705,
                    "nodeType": "Block",
                    "src": "773:2:4",
                    "statements": []
                  },
                  "id": 706,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 700,
                          "name": "bento",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 692,
                          "src": "744:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        {
                          "id": 701,
                          "name": "masterDeployer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 695,
                          "src": "751:14:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                            "typeString": "contract IMasterDeployer"
                          }
                        },
                        {
                          "id": 702,
                          "name": "wETH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 697,
                          "src": "767:4:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 703,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 699,
                        "name": "RouterHelper",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 24070,
                        "src": "731:12:4"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "731:41:4"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 698,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 692,
                        "mutability": "mutable",
                        "name": "bento",
                        "nameLocation": "657:5:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 706,
                        "src": "640:22:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                          "typeString": "contract IBentoBoxMinimal"
                        },
                        "typeName": {
                          "id": 691,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 690,
                            "name": "IBentoBoxMinimal",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2253,
                            "src": "640:16:4"
                          },
                          "referencedDeclaration": 2253,
                          "src": "640:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 695,
                        "mutability": "mutable",
                        "name": "masterDeployer",
                        "nameLocation": "688:14:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 706,
                        "src": "672:30:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                          "typeString": "contract IMasterDeployer"
                        },
                        "typeName": {
                          "id": 694,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 693,
                            "name": "IMasterDeployer",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2356,
                            "src": "672:15:4"
                          },
                          "referencedDeclaration": 2356,
                          "src": "672:15:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                            "typeString": "contract IMasterDeployer"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 697,
                        "mutability": "mutable",
                        "name": "wETH",
                        "nameLocation": "720:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 706,
                        "src": "712:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 696,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "712:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "630:100:4"
                  },
                  "returnParameters": {
                    "id": 704,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "773:0:4"
                  },
                  "scope": 1892,
                  "src": "619:156:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 716,
                    "nodeType": "Block",
                    "src": "808:44:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 713,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 710,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "826:3:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 711,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "826:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 712,
                                "name": "wETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23679,
                                "src": "840:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "826:18:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 709,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "818:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 714,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "818:27:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 715,
                        "nodeType": "ExpressionStatement",
                        "src": "818:27:4"
                      }
                    ]
                  },
                  "id": 717,
                  "implemented": true,
                  "kind": "receive",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 707,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "788:2:4"
                  },
                  "returnParameters": {
                    "id": 708,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "808:0:4"
                  },
                  "scope": 1892,
                  "src": "781:71:4",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 758,
                    "nodeType": "Block",
                    "src": "1347:414:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 729,
                                "name": "params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 721,
                                "src": "1419:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExactInputSingleParams_$2512_calldata_ptr",
                                  "typeString": "struct ITridentRouter.ExactInputSingleParams calldata"
                                }
                              },
                              "id": 730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tokenIn",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2509,
                              "src": "1419:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 731,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1435:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 732,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1435:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 733,
                                "name": "params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 721,
                                "src": "1447:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExactInputSingleParams_$2512_calldata_ptr",
                                  "typeString": "struct ITridentRouter.ExactInputSingleParams calldata"
                                }
                              },
                              "id": 734,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pool",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2507,
                              "src": "1447:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 735,
                                "name": "params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 721,
                                "src": "1460:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExactInputSingleParams_$2512_calldata_ptr",
                                  "typeString": "struct ITridentRouter.ExactInputSingleParams calldata"
                                }
                              },
                              "id": 736,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "amountIn",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2503,
                              "src": "1460:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 726,
                              "name": "bento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23672,
                              "src": "1404:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                "typeString": "contract IBentoBoxMinimal"
                              }
                            },
                            "id": 728,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2227,
                            "src": "1404:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256) external"
                            }
                          },
                          "id": 737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1404:72:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 738,
                        "nodeType": "ExpressionStatement",
                        "src": "1404:72:4"
                      },
                      {
                        "expression": {
                          "id": 748,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 739,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 724,
                            "src": "1532:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 745,
                                  "name": "params",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 721,
                                  "src": "1568:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ExactInputSingleParams_$2512_calldata_ptr",
                                    "typeString": "struct ITridentRouter.ExactInputSingleParams calldata"
                                  }
                                },
                                "id": 746,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "data",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2511,
                                "src": "1568:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 741,
                                      "name": "params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 721,
                                      "src": "1550:6:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ExactInputSingleParams_$2512_calldata_ptr",
                                        "typeString": "struct ITridentRouter.ExactInputSingleParams calldata"
                                      }
                                    },
                                    "id": 742,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "pool",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2507,
                                    "src": "1550:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 740,
                                  "name": "IPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2450,
                                  "src": "1544:5:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IPool_$2450_$",
                                    "typeString": "type(contract IPool)"
                                  }
                                },
                                "id": 743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1544:18:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPool_$2450",
                                  "typeString": "contract IPool"
                                }
                              },
                              "id": 744,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "swap",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2368,
                              "src": "1544:23:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                                "typeString": "function (bytes memory) external returns (uint256)"
                              }
                            },
                            "id": 747,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1544:36:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1532:48:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 749,
                        "nodeType": "ExpressionStatement",
                        "src": "1532:48:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 751,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 724,
                                "src": "1694:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "expression": {
                                  "id": 752,
                                  "name": "params",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 721,
                                  "src": "1707:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ExactInputSingleParams_$2512_calldata_ptr",
                                    "typeString": "struct ITridentRouter.ExactInputSingleParams calldata"
                                  }
                                },
                                "id": 753,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amountOutMinimum",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2505,
                                "src": "1707:23:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1694:36:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "544f4f5f4c4954544c455f5245434549564544",
                              "id": 755,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1732:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_44e24cda2f2a44ef400059021a7190502b0aa1c810f902f32158234f399cf38a",
                                "typeString": "literal_string \"TOO_LITTLE_RECEIVED\""
                              },
                              "value": "TOO_LITTLE_RECEIVED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_44e24cda2f2a44ef400059021a7190502b0aa1c810f902f32158234f399cf38a",
                                "typeString": "literal_string \"TOO_LITTLE_RECEIVED\""
                              }
                            ],
                            "id": 750,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1686:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 756,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1686:68:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 757,
                        "nodeType": "ExpressionStatement",
                        "src": "1686:68:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 718,
                    "nodeType": "StructuredDocumentation",
                    "src": "858:375:4",
                    "text": "@notice Swaps token A to token B directly. Swaps are done on `bento` tokens.\n @param params This includes the address of token A, pool, amount of token A to swap,\n minimum amount of token B after the swap and data required by the pool for the swap.\n @dev Ensure that the pool is trusted before calling this function. The pool can steal users' tokens."
                  },
                  "functionSelector": "0f93d439",
                  "id": 759,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "exactInputSingle",
                  "nameLocation": "1247:16:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 722,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 721,
                        "mutability": "mutable",
                        "name": "params",
                        "nameLocation": "1296:6:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 759,
                        "src": "1264:38:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExactInputSingleParams_$2512_calldata_ptr",
                          "typeString": "struct ITridentRouter.ExactInputSingleParams"
                        },
                        "typeName": {
                          "id": 720,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 719,
                            "name": "ExactInputSingleParams",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2512,
                            "src": "1264:22:4"
                          },
                          "referencedDeclaration": 2512,
                          "src": "1264:22:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExactInputSingleParams_$2512_storage_ptr",
                            "typeString": "struct ITridentRouter.ExactInputSingleParams"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1263:40:4"
                  },
                  "returnParameters": {
                    "id": 725,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 724,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "1336:9:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 759,
                        "src": "1328:17:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 723,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1328:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1327:19:4"
                  },
                  "scope": 1892,
                  "src": "1238:523:4",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 830,
                    "nodeType": "Block",
                    "src": "2246:941:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 771,
                                "name": "params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 763,
                                "src": "2316:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExactInputParams_$2523_calldata_ptr",
                                  "typeString": "struct ITridentRouter.ExactInputParams calldata"
                                }
                              },
                              "id": 772,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tokenIn",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2514,
                              "src": "2316:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 773,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2332:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 774,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2332:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "baseExpression": {
                                  "expression": {
                                    "id": 775,
                                    "name": "params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 763,
                                    "src": "2344:6:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ExactInputParams_$2523_calldata_ptr",
                                      "typeString": "struct ITridentRouter.ExactInputParams calldata"
                                    }
                                  },
                                  "id": 776,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "path",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2522,
                                  "src": "2344:11:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct ITridentRouter.Path calldata[] calldata"
                                  }
                                },
                                "id": 778,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 777,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2356:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2344:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Path_$2501_calldata_ptr",
                                  "typeString": "struct ITridentRouter.Path calldata"
                                }
                              },
                              "id": 779,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pool",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2498,
                              "src": "2344:19:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 780,
                                "name": "params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 763,
                                "src": "2365:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExactInputParams_$2523_calldata_ptr",
                                  "typeString": "struct ITridentRouter.ExactInputParams calldata"
                                }
                              },
                              "id": 781,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "amountIn",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2516,
                              "src": "2365:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 768,
                              "name": "bento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23672,
                              "src": "2301:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                "typeString": "contract IBentoBoxMinimal"
                              }
                            },
                            "id": 770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2227,
                            "src": "2301:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256) external"
                            }
                          },
                          "id": 782,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2301:80:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 783,
                        "nodeType": "ExpressionStatement",
                        "src": "2301:80:4"
                      },
                      {
                        "body": {
                          "id": 820,
                          "nodeType": "Block",
                          "src": "2784:223:4",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "baseExpression": {
                                        "expression": {
                                          "id": 796,
                                          "name": "params",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 763,
                                          "src": "2898:6:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ExactInputParams_$2523_calldata_ptr",
                                            "typeString": "struct ITridentRouter.ExactInputParams calldata"
                                          }
                                        },
                                        "id": 797,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "path",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2522,
                                        "src": "2898:11:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct ITridentRouter.Path calldata[] calldata"
                                        }
                                      },
                                      "id": 799,
                                      "indexExpression": {
                                        "id": 798,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 785,
                                        "src": "2910:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2898:14:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Path_$2501_calldata_ptr",
                                        "typeString": "struct ITridentRouter.Path calldata"
                                      }
                                    },
                                    "id": 800,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "pool",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2498,
                                    "src": "2898:19:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 795,
                                  "name": "isWhiteListed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1891,
                                  "src": "2884:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 801,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2884:34:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 802,
                              "nodeType": "ExpressionStatement",
                              "src": "2884:34:4"
                            },
                            {
                              "expression": {
                                "id": 818,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 803,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 766,
                                  "src": "2932:9:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "baseExpression": {
                                          "expression": {
                                            "id": 812,
                                            "name": "params",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 763,
                                            "src": "2976:6:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ExactInputParams_$2523_calldata_ptr",
                                              "typeString": "struct ITridentRouter.ExactInputParams calldata"
                                            }
                                          },
                                          "id": 813,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "path",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2522,
                                          "src": "2976:11:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr",
                                            "typeString": "struct ITridentRouter.Path calldata[] calldata"
                                          }
                                        },
                                        "id": 815,
                                        "indexExpression": {
                                          "id": 814,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 785,
                                          "src": "2988:1:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "2976:14:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Path_$2501_calldata_ptr",
                                          "typeString": "struct ITridentRouter.Path calldata"
                                        }
                                      },
                                      "id": 816,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "data",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2500,
                                      "src": "2976:19:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "expression": {
                                                "id": 805,
                                                "name": "params",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 763,
                                                "src": "2950:6:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ExactInputParams_$2523_calldata_ptr",
                                                  "typeString": "struct ITridentRouter.ExactInputParams calldata"
                                                }
                                              },
                                              "id": 806,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "path",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2522,
                                              "src": "2950:11:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct ITridentRouter.Path calldata[] calldata"
                                              }
                                            },
                                            "id": 808,
                                            "indexExpression": {
                                              "id": 807,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 785,
                                              "src": "2962:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "2950:14:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Path_$2501_calldata_ptr",
                                              "typeString": "struct ITridentRouter.Path calldata"
                                            }
                                          },
                                          "id": 809,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "pool",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2498,
                                          "src": "2950:19:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 804,
                                        "name": "IPool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2450,
                                        "src": "2944:5:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IPool_$2450_$",
                                          "typeString": "type(contract IPool)"
                                        }
                                      },
                                      "id": 810,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2944:26:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPool_$2450",
                                        "typeString": "contract IPool"
                                      }
                                    },
                                    "id": 811,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "swap",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2368,
                                    "src": "2944:31:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                                      "typeString": "function (bytes memory) external returns (uint256)"
                                    }
                                  },
                                  "id": 817,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2944:52:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2932:64:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 819,
                              "nodeType": "ExpressionStatement",
                              "src": "2932:64:4"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 787,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 785,
                            "src": "2755:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 788,
                                "name": "params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 763,
                                "src": "2759:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExactInputParams_$2523_calldata_ptr",
                                  "typeString": "struct ITridentRouter.ExactInputParams calldata"
                                }
                              },
                              "id": 789,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "path",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2522,
                              "src": "2759:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct ITridentRouter.Path calldata[] calldata"
                              }
                            },
                            "id": 790,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "2759:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2755:22:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 821,
                        "initializationExpression": {
                          "assignments": [
                            785
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 785,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "2752:1:4",
                              "nodeType": "VariableDeclaration",
                              "scope": 821,
                              "src": "2744:9:4",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 784,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2744:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 786,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2744:9:4"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 793,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2779:3:4",
                            "subExpression": {
                              "id": 792,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 785,
                              "src": "2779:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 794,
                          "nodeType": "ExpressionStatement",
                          "src": "2779:3:4"
                        },
                        "nodeType": "ForStatement",
                        "src": "2739:268:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 826,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 823,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 766,
                                "src": "3120:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "expression": {
                                  "id": 824,
                                  "name": "params",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 763,
                                  "src": "3133:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ExactInputParams_$2523_calldata_ptr",
                                    "typeString": "struct ITridentRouter.ExactInputParams calldata"
                                  }
                                },
                                "id": 825,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amountOutMinimum",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2518,
                                "src": "3133:23:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3120:36:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "544f4f5f4c4954544c455f5245434549564544",
                              "id": 827,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3158:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_44e24cda2f2a44ef400059021a7190502b0aa1c810f902f32158234f399cf38a",
                                "typeString": "literal_string \"TOO_LITTLE_RECEIVED\""
                              },
                              "value": "TOO_LITTLE_RECEIVED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_44e24cda2f2a44ef400059021a7190502b0aa1c810f902f32158234f399cf38a",
                                "typeString": "literal_string \"TOO_LITTLE_RECEIVED\""
                              }
                            ],
                            "id": 822,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3112:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3112:68:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 829,
                        "nodeType": "ExpressionStatement",
                        "src": "3112:68:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 760,
                    "nodeType": "StructuredDocumentation",
                    "src": "1767:377:4",
                    "text": "@notice Swaps token A to token B indirectly by using multiple hops.\n @param params This includes the addresses of the tokens, pools, amount of token A to swap,\n minimum amount of token B after the swap and data required by the pools for the swaps.\n @dev Ensure that the pools are trusted before calling this function. The pools can steal users' tokens."
                  },
                  "functionSelector": "2c0d9a01",
                  "id": 831,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "exactInput",
                  "nameLocation": "2158:10:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 764,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 763,
                        "mutability": "mutable",
                        "name": "params",
                        "nameLocation": "2195:6:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 831,
                        "src": "2169:32:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExactInputParams_$2523_calldata_ptr",
                          "typeString": "struct ITridentRouter.ExactInputParams"
                        },
                        "typeName": {
                          "id": 762,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 761,
                            "name": "ExactInputParams",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2523,
                            "src": "2169:16:4"
                          },
                          "referencedDeclaration": 2523,
                          "src": "2169:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExactInputParams_$2523_storage_ptr",
                            "typeString": "struct ITridentRouter.ExactInputParams"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2168:34:4"
                  },
                  "returnParameters": {
                    "id": 767,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 766,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "2235:9:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 831,
                        "src": "2227:17:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 765,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2227:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2226:19:4"
                  },
                  "scope": 1892,
                  "src": "2149:1038:4",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 910,
                    "nodeType": "Block",
                    "src": "3769:910:4",
                    "statements": [
                      {
                        "body": {
                          "id": 887,
                          "nodeType": "Block",
                          "src": "4012:376:4",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 854,
                                        "name": "path",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 838,
                                        "src": "4040:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct ITridentRouter.Path calldata[] calldata"
                                        }
                                      },
                                      "id": 856,
                                      "indexExpression": {
                                        "id": 855,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 844,
                                        "src": "4045:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4040:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Path_$2501_calldata_ptr",
                                        "typeString": "struct ITridentRouter.Path calldata"
                                      }
                                    },
                                    "id": 857,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "pool",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2498,
                                    "src": "4040:12:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 853,
                                  "name": "isWhiteListed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1891,
                                  "src": "4026:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 858,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4026:27:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 859,
                              "nodeType": "ExpressionStatement",
                              "src": "4026:27:4"
                            },
                            {
                              "expression": {
                                "id": 863,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 860,
                                  "name": "cachedMsgSender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 683,
                                  "src": "4160:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 861,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "4178:3:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 862,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "4178:10:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4160:28:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 864,
                              "nodeType": "ExpressionStatement",
                              "src": "4160:28:4"
                            },
                            {
                              "expression": {
                                "id": 870,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 865,
                                  "name": "cachedPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 685,
                                  "src": "4283:10:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 866,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 838,
                                      "src": "4296:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "struct ITridentRouter.Path calldata[] calldata"
                                      }
                                    },
                                    "id": 868,
                                    "indexExpression": {
                                      "id": 867,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 844,
                                      "src": "4301:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4296:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Path_$2501_calldata_ptr",
                                      "typeString": "struct ITridentRouter.Path calldata"
                                    }
                                  },
                                  "id": 869,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pool",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2498,
                                  "src": "4296:12:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4283:25:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 871,
                              "nodeType": "ExpressionStatement",
                              "src": "4283:25:4"
                            },
                            {
                              "expression": {
                                "id": 885,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 872,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 841,
                                  "src": "4322:9:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 880,
                                          "name": "path",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 838,
                                          "src": "4364:4:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr",
                                            "typeString": "struct ITridentRouter.Path calldata[] calldata"
                                          }
                                        },
                                        "id": 882,
                                        "indexExpression": {
                                          "id": 881,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 844,
                                          "src": "4369:1:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4364:7:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Path_$2501_calldata_ptr",
                                          "typeString": "struct ITridentRouter.Path calldata"
                                        }
                                      },
                                      "id": 883,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "data",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2500,
                                      "src": "4364:12:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "id": 874,
                                              "name": "path",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 838,
                                              "src": "4340:4:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct ITridentRouter.Path calldata[] calldata"
                                              }
                                            },
                                            "id": 876,
                                            "indexExpression": {
                                              "id": 875,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 844,
                                              "src": "4345:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "4340:7:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Path_$2501_calldata_ptr",
                                              "typeString": "struct ITridentRouter.Path calldata"
                                            }
                                          },
                                          "id": 877,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "pool",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2498,
                                          "src": "4340:12:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 873,
                                        "name": "IPool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2450,
                                        "src": "4334:5:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IPool_$2450_$",
                                          "typeString": "type(contract IPool)"
                                        }
                                      },
                                      "id": 878,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4334:19:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPool_$2450",
                                        "typeString": "contract IPool"
                                      }
                                    },
                                    "id": 879,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "flashSwap",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2376,
                                    "src": "4334:29:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                                      "typeString": "function (bytes memory) external returns (uint256)"
                                    }
                                  },
                                  "id": 884,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4334:43:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4322:55:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 886,
                              "nodeType": "ExpressionStatement",
                              "src": "4322:55:4"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 849,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 846,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 844,
                            "src": "3990:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 847,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 838,
                              "src": "3994:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct ITridentRouter.Path calldata[] calldata"
                              }
                            },
                            "id": 848,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "3994:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3990:15:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 888,
                        "initializationExpression": {
                          "assignments": [
                            844
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 844,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "3987:1:4",
                              "nodeType": "VariableDeclaration",
                              "scope": 888,
                              "src": "3979:9:4",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 843,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3979:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 845,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3979:9:4"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 851,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4007:3:4",
                            "subExpression": {
                              "id": 850,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 844,
                              "src": "4007:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 852,
                          "nodeType": "ExpressionStatement",
                          "src": "4007:3:4"
                        },
                        "nodeType": "ForStatement",
                        "src": "3974:414:4"
                      },
                      {
                        "expression": {
                          "id": 894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 889,
                            "name": "cachedMsgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "4540:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "31",
                                "id": 892,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4566:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "id": 891,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4558:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 890,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4558:7:4",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 893,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4558:10:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4540:28:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 895,
                        "nodeType": "ExpressionStatement",
                        "src": "4540:28:4"
                      },
                      {
                        "expression": {
                          "id": 901,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 896,
                            "name": "cachedPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 685,
                            "src": "4578:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "31",
                                "id": 899,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4599:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "id": 898,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4591:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 897,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4591:7:4",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 900,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4591:10:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4578:23:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 902,
                        "nodeType": "ExpressionStatement",
                        "src": "4578:23:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 906,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 904,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 841,
                                "src": "4619:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 905,
                                "name": "amountOutMinimum",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 834,
                                "src": "4632:16:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4619:29:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "544f4f5f4c4954544c455f5245434549564544",
                              "id": 907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4650:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_44e24cda2f2a44ef400059021a7190502b0aa1c810f902f32158234f399cf38a",
                                "typeString": "literal_string \"TOO_LITTLE_RECEIVED\""
                              },
                              "value": "TOO_LITTLE_RECEIVED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_44e24cda2f2a44ef400059021a7190502b0aa1c810f902f32158234f399cf38a",
                                "typeString": "literal_string \"TOO_LITTLE_RECEIVED\""
                              }
                            ],
                            "id": 903,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4611:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4611:61:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 909,
                        "nodeType": "ExpressionStatement",
                        "src": "4611:61:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 832,
                    "nodeType": "StructuredDocumentation",
                    "src": "3193:456:4",
                    "text": "@notice Swaps token A to token B by using callbacks.\n @param path Addresses of the pools and data required by the pools for the swaps.\n @param amountOutMinimum Minimum amount of token B after the swap.\n @dev Ensure that the pools are trusted before calling this function. The pools can steal users' tokens.\n This function will unlikely be used in production but it shows how to use callbacks. One use case will be arbitrage."
                  },
                  "functionSelector": "1ab5d6c8",
                  "id": 911,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "exactInputLazy",
                  "nameLocation": "3663:14:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 839,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 834,
                        "mutability": "mutable",
                        "name": "amountOutMinimum",
                        "nameLocation": "3686:16:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 911,
                        "src": "3678:24:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 833,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3678:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 838,
                        "mutability": "mutable",
                        "name": "path",
                        "nameLocation": "3720:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 911,
                        "src": "3704:20:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct ITridentRouter.Path[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 836,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 835,
                              "name": "Path",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2501,
                              "src": "3704:4:4"
                            },
                            "referencedDeclaration": 2501,
                            "src": "3704:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Path_$2501_storage_ptr",
                              "typeString": "struct ITridentRouter.Path"
                            }
                          },
                          "id": 837,
                          "nodeType": "ArrayTypeName",
                          "src": "3704:6:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Path_$2501_storage_$dyn_storage_ptr",
                            "typeString": "struct ITridentRouter.Path[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3677:48:4"
                  },
                  "returnParameters": {
                    "id": 842,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 841,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "3758:9:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 911,
                        "src": "3750:17:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 840,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3750:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3749:19:4"
                  },
                  "scope": 1892,
                  "src": "3654:1025:4",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 948,
                    "nodeType": "Block",
                    "src": "5280:447:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 921,
                                "name": "params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 915,
                                "src": "5397:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExactInputSingleParams_$2512_calldata_ptr",
                                  "typeString": "struct ITridentRouter.ExactInputSingleParams calldata"
                                }
                              },
                              "id": 922,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tokenIn",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2509,
                              "src": "5397:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 923,
                                "name": "params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 915,
                                "src": "5413:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExactInputSingleParams_$2512_calldata_ptr",
                                  "typeString": "struct ITridentRouter.ExactInputSingleParams calldata"
                                }
                              },
                              "id": 924,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pool",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2507,
                              "src": "5413:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 925,
                                "name": "params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 915,
                                "src": "5426:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExactInputSingleParams_$2512_calldata_ptr",
                                  "typeString": "struct ITridentRouter.ExactInputSingleParams calldata"
                                }
                              },
                              "id": 926,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "amountIn",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2503,
                              "src": "5426:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 920,
                            "name": "_depositToBentoBox",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1835,
                            "src": "5378:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5378:64:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 928,
                        "nodeType": "ExpressionStatement",
                        "src": "5378:64:4"
                      },
                      {
                        "expression": {
                          "id": 938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 929,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 918,
                            "src": "5498:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 935,
                                  "name": "params",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 915,
                                  "src": "5534:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ExactInputSingleParams_$2512_calldata_ptr",
                                    "typeString": "struct ITridentRouter.ExactInputSingleParams calldata"
                                  }
                                },
                                "id": 936,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "data",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2511,
                                "src": "5534:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 931,
                                      "name": "params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 915,
                                      "src": "5516:6:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ExactInputSingleParams_$2512_calldata_ptr",
                                        "typeString": "struct ITridentRouter.ExactInputSingleParams calldata"
                                      }
                                    },
                                    "id": 932,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "pool",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2507,
                                    "src": "5516:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 930,
                                  "name": "IPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2450,
                                  "src": "5510:5:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IPool_$2450_$",
                                    "typeString": "type(contract IPool)"
                                  }
                                },
                                "id": 933,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5510:18:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPool_$2450",
                                  "typeString": "contract IPool"
                                }
                              },
                              "id": 934,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "swap",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2368,
                              "src": "5510:23:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                                "typeString": "function (bytes memory) external returns (uint256)"
                              }
                            },
                            "id": 937,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5510:36:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5498:48:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 939,
                        "nodeType": "ExpressionStatement",
                        "src": "5498:48:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 944,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 941,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 918,
                                "src": "5660:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "expression": {
                                  "id": 942,
                                  "name": "params",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 915,
                                  "src": "5673:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ExactInputSingleParams_$2512_calldata_ptr",
                                    "typeString": "struct ITridentRouter.ExactInputSingleParams calldata"
                                  }
                                },
                                "id": 943,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amountOutMinimum",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2505,
                                "src": "5673:23:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5660:36:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "544f4f5f4c4954544c455f5245434549564544",
                              "id": 945,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5698:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_44e24cda2f2a44ef400059021a7190502b0aa1c810f902f32158234f399cf38a",
                                "typeString": "literal_string \"TOO_LITTLE_RECEIVED\""
                              },
                              "value": "TOO_LITTLE_RECEIVED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_44e24cda2f2a44ef400059021a7190502b0aa1c810f902f32158234f399cf38a",
                                "typeString": "literal_string \"TOO_LITTLE_RECEIVED\""
                              }
                            ],
                            "id": 940,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5652:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 946,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5652:68:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 947,
                        "nodeType": "ExpressionStatement",
                        "src": "5652:68:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 912,
                    "nodeType": "StructuredDocumentation",
                    "src": "4685:466:4",
                    "text": "@notice Swaps token A to token B directly. It's the same as `exactInputSingle` except\n it takes raw ERC-20 tokens from the users and deposits them into `bento`.\n @param params This includes the address of token A, pool, amount of token A to swap,\n minimum amount of token B after the swap and data required by the pool for the swap.\n @dev Ensure that the pool is trusted before calling this function. The pool can steal users' tokens."
                  },
                  "functionSelector": "9fa74491",
                  "id": 949,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "exactInputSingleWithNativeToken",
                  "nameLocation": "5165:31:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 916,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 915,
                        "mutability": "mutable",
                        "name": "params",
                        "nameLocation": "5229:6:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 949,
                        "src": "5197:38:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExactInputSingleParams_$2512_calldata_ptr",
                          "typeString": "struct ITridentRouter.ExactInputSingleParams"
                        },
                        "typeName": {
                          "id": 914,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 913,
                            "name": "ExactInputSingleParams",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2512,
                            "src": "5197:22:4"
                          },
                          "referencedDeclaration": 2512,
                          "src": "5197:22:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExactInputSingleParams_$2512_storage_ptr",
                            "typeString": "struct ITridentRouter.ExactInputSingleParams"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5196:40:4"
                  },
                  "returnParameters": {
                    "id": 919,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 918,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "5269:9:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 949,
                        "src": "5261:17:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 917,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5261:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5260:19:4"
                  },
                  "scope": 1892,
                  "src": "5156:571:4",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1016,
                    "nodeType": "Block",
                    "src": "6346:737:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 959,
                                "name": "params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 953,
                                "src": "6463:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExactInputParams_$2523_calldata_ptr",
                                  "typeString": "struct ITridentRouter.ExactInputParams calldata"
                                }
                              },
                              "id": 960,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tokenIn",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2514,
                              "src": "6463:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "baseExpression": {
                                  "expression": {
                                    "id": 961,
                                    "name": "params",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 953,
                                    "src": "6479:6:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ExactInputParams_$2523_calldata_ptr",
                                      "typeString": "struct ITridentRouter.ExactInputParams calldata"
                                    }
                                  },
                                  "id": 962,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "path",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2522,
                                  "src": "6479:11:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct ITridentRouter.Path calldata[] calldata"
                                  }
                                },
                                "id": 964,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 963,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6491:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6479:14:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Path_$2501_calldata_ptr",
                                  "typeString": "struct ITridentRouter.Path calldata"
                                }
                              },
                              "id": 965,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pool",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2498,
                              "src": "6479:19:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 966,
                                "name": "params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 953,
                                "src": "6500:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExactInputParams_$2523_calldata_ptr",
                                  "typeString": "struct ITridentRouter.ExactInputParams calldata"
                                }
                              },
                              "id": 967,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "amountIn",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2516,
                              "src": "6500:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 958,
                            "name": "_depositToBentoBox",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1835,
                            "src": "6444:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 968,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6444:72:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 969,
                        "nodeType": "ExpressionStatement",
                        "src": "6444:72:4"
                      },
                      {
                        "body": {
                          "id": 1006,
                          "nodeType": "Block",
                          "src": "6766:137:4",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "baseExpression": {
                                        "expression": {
                                          "id": 982,
                                          "name": "params",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 953,
                                          "src": "6794:6:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ExactInputParams_$2523_calldata_ptr",
                                            "typeString": "struct ITridentRouter.ExactInputParams calldata"
                                          }
                                        },
                                        "id": 983,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "path",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2522,
                                        "src": "6794:11:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct ITridentRouter.Path calldata[] calldata"
                                        }
                                      },
                                      "id": 985,
                                      "indexExpression": {
                                        "id": 984,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 971,
                                        "src": "6806:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6794:14:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Path_$2501_calldata_ptr",
                                        "typeString": "struct ITridentRouter.Path calldata"
                                      }
                                    },
                                    "id": 986,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "pool",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2498,
                                    "src": "6794:19:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 981,
                                  "name": "isWhiteListed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1891,
                                  "src": "6780:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 987,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6780:34:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 988,
                              "nodeType": "ExpressionStatement",
                              "src": "6780:34:4"
                            },
                            {
                              "expression": {
                                "id": 1004,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 989,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 956,
                                  "src": "6828:9:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "baseExpression": {
                                          "expression": {
                                            "id": 998,
                                            "name": "params",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 953,
                                            "src": "6872:6:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ExactInputParams_$2523_calldata_ptr",
                                              "typeString": "struct ITridentRouter.ExactInputParams calldata"
                                            }
                                          },
                                          "id": 999,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "path",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2522,
                                          "src": "6872:11:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr",
                                            "typeString": "struct ITridentRouter.Path calldata[] calldata"
                                          }
                                        },
                                        "id": 1001,
                                        "indexExpression": {
                                          "id": 1000,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 971,
                                          "src": "6884:1:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6872:14:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Path_$2501_calldata_ptr",
                                          "typeString": "struct ITridentRouter.Path calldata"
                                        }
                                      },
                                      "id": 1002,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "data",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2500,
                                      "src": "6872:19:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes calldata"
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "expression": {
                                                "id": 991,
                                                "name": "params",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 953,
                                                "src": "6846:6:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ExactInputParams_$2523_calldata_ptr",
                                                  "typeString": "struct ITridentRouter.ExactInputParams calldata"
                                                }
                                              },
                                              "id": 992,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "path",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2522,
                                              "src": "6846:11:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct ITridentRouter.Path calldata[] calldata"
                                              }
                                            },
                                            "id": 994,
                                            "indexExpression": {
                                              "id": 993,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 971,
                                              "src": "6858:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "6846:14:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Path_$2501_calldata_ptr",
                                              "typeString": "struct ITridentRouter.Path calldata"
                                            }
                                          },
                                          "id": 995,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "pool",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2498,
                                          "src": "6846:19:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 990,
                                        "name": "IPool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2450,
                                        "src": "6840:5:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IPool_$2450_$",
                                          "typeString": "type(contract IPool)"
                                        }
                                      },
                                      "id": 996,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6840:26:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IPool_$2450",
                                        "typeString": "contract IPool"
                                      }
                                    },
                                    "id": 997,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "swap",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2368,
                                    "src": "6840:31:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                                      "typeString": "function (bytes memory) external returns (uint256)"
                                    }
                                  },
                                  "id": 1003,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6840:52:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6828:64:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1005,
                              "nodeType": "ExpressionStatement",
                              "src": "6828:64:4"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 977,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 973,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 971,
                            "src": "6737:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 974,
                                "name": "params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 953,
                                "src": "6741:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ExactInputParams_$2523_calldata_ptr",
                                  "typeString": "struct ITridentRouter.ExactInputParams calldata"
                                }
                              },
                              "id": 975,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "path",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2522,
                              "src": "6741:11:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Path_$2501_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct ITridentRouter.Path calldata[] calldata"
                              }
                            },
                            "id": 976,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "6741:18:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6737:22:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1007,
                        "initializationExpression": {
                          "assignments": [
                            971
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 971,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "6734:1:4",
                              "nodeType": "VariableDeclaration",
                              "scope": 1007,
                              "src": "6726:9:4",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 970,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6726:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 972,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "6726:9:4"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 979,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "6761:3:4",
                            "subExpression": {
                              "id": 978,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 971,
                              "src": "6761:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 980,
                          "nodeType": "ExpressionStatement",
                          "src": "6761:3:4"
                        },
                        "nodeType": "ForStatement",
                        "src": "6721:182:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1012,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1009,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 956,
                                "src": "7016:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "expression": {
                                  "id": 1010,
                                  "name": "params",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 953,
                                  "src": "7029:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ExactInputParams_$2523_calldata_ptr",
                                    "typeString": "struct ITridentRouter.ExactInputParams calldata"
                                  }
                                },
                                "id": 1011,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amountOutMinimum",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2518,
                                "src": "7029:23:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7016:36:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "544f4f5f4c4954544c455f5245434549564544",
                              "id": 1013,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7054:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_44e24cda2f2a44ef400059021a7190502b0aa1c810f902f32158234f399cf38a",
                                "typeString": "literal_string \"TOO_LITTLE_RECEIVED\""
                              },
                              "value": "TOO_LITTLE_RECEIVED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_44e24cda2f2a44ef400059021a7190502b0aa1c810f902f32158234f399cf38a",
                                "typeString": "literal_string \"TOO_LITTLE_RECEIVED\""
                              }
                            ],
                            "id": 1008,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7008:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1014,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7008:68:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1015,
                        "nodeType": "ExpressionStatement",
                        "src": "7008:68:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 950,
                    "nodeType": "StructuredDocumentation",
                    "src": "5733:496:4",
                    "text": "@notice Swaps token A to token B indirectly by using multiple hops. It's the same as `exactInput` except\n it takes raw ERC-20 tokens from the users and deposits them into `bento`.\n @param params This includes the addresses of the tokens, pools, amount of token A to swap,\n minimum amount of token B after the swap and data required by the pools for the swaps.\n @dev Ensure that the pools are trusted before calling this function. The pools can steal users' tokens."
                  },
                  "functionSelector": "0b0d1b1e",
                  "id": 1017,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "exactInputWithNativeToken",
                  "nameLocation": "6243:25:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 954,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 953,
                        "mutability": "mutable",
                        "name": "params",
                        "nameLocation": "6295:6:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1017,
                        "src": "6269:32:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExactInputParams_$2523_calldata_ptr",
                          "typeString": "struct ITridentRouter.ExactInputParams"
                        },
                        "typeName": {
                          "id": 952,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 951,
                            "name": "ExactInputParams",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2523,
                            "src": "6269:16:4"
                          },
                          "referencedDeclaration": 2523,
                          "src": "6269:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExactInputParams_$2523_storage_ptr",
                            "typeString": "struct ITridentRouter.ExactInputParams"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6268:34:4"
                  },
                  "returnParameters": {
                    "id": 957,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 956,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "6335:9:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1017,
                        "src": "6327:17:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 955,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6327:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6326:19:4"
                  },
                  "scope": 1892,
                  "src": "6234:849:4",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1285,
                    "nodeType": "Block",
                    "src": "7699:2034:4",
                    "statements": [
                      {
                        "body": {
                          "id": 1106,
                          "nodeType": "Block",
                          "src": "7925:487:4",
                          "statements": [
                            {
                              "condition": {
                                "expression": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 1035,
                                      "name": "params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1021,
                                      "src": "7943:6:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                        "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                      }
                                    },
                                    "id": 1036,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "initialPath",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2563,
                                    "src": "7943:18:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_InitialPath_$2541_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "struct ITridentRouter.InitialPath calldata[] calldata"
                                    }
                                  },
                                  "id": 1038,
                                  "indexExpression": {
                                    "id": 1037,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1025,
                                    "src": "7962:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7943:21:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_InitialPath_$2541_calldata_ptr",
                                    "typeString": "struct ITridentRouter.InitialPath calldata"
                                  }
                                },
                                "id": 1039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "native",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2536,
                                "src": "7943:28:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 1081,
                                "nodeType": "Block",
                                "src": "8119:148:4",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "expression": {
                                                "id": 1062,
                                                "name": "params",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1021,
                                                "src": "8152:6:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                                  "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                                }
                                              },
                                              "id": 1063,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "initialPath",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2563,
                                              "src": "8152:18:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_InitialPath_$2541_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct ITridentRouter.InitialPath calldata[] calldata"
                                              }
                                            },
                                            "id": 1065,
                                            "indexExpression": {
                                              "id": 1064,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1025,
                                              "src": "8171:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8152:21:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_InitialPath_$2541_calldata_ptr",
                                              "typeString": "struct ITridentRouter.InitialPath calldata"
                                            }
                                          },
                                          "id": 1066,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "tokenIn",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2532,
                                          "src": "8152:29:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 1067,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "8183:3:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 1068,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "src": "8183:10:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "expression": {
                                                "id": 1069,
                                                "name": "params",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1021,
                                                "src": "8195:6:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                                  "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                                }
                                              },
                                              "id": 1070,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "initialPath",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2563,
                                              "src": "8195:18:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_InitialPath_$2541_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct ITridentRouter.InitialPath calldata[] calldata"
                                              }
                                            },
                                            "id": 1072,
                                            "indexExpression": {
                                              "id": 1071,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1025,
                                              "src": "8214:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8195:21:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_InitialPath_$2541_calldata_ptr",
                                              "typeString": "struct ITridentRouter.InitialPath calldata"
                                            }
                                          },
                                          "id": 1073,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "pool",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2534,
                                          "src": "8195:26:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "expression": {
                                                "id": 1074,
                                                "name": "params",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1021,
                                                "src": "8223:6:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                                  "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                                }
                                              },
                                              "id": 1075,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "initialPath",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2563,
                                              "src": "8223:18:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_InitialPath_$2541_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct ITridentRouter.InitialPath calldata[] calldata"
                                              }
                                            },
                                            "id": 1077,
                                            "indexExpression": {
                                              "id": 1076,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1025,
                                              "src": "8242:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8223:21:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_InitialPath_$2541_calldata_ptr",
                                              "typeString": "struct ITridentRouter.InitialPath calldata"
                                            }
                                          },
                                          "id": 1078,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "amount",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2538,
                                          "src": "8223:28:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 1059,
                                          "name": "bento",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23672,
                                          "src": "8137:5:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                            "typeString": "contract IBentoBoxMinimal"
                                          }
                                        },
                                        "id": 1061,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "transfer",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2227,
                                        "src": "8137:14:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,address,uint256) external"
                                        }
                                      },
                                      "id": 1079,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8137:115:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1080,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8137:115:4"
                                  }
                                ]
                              },
                              "id": 1082,
                              "nodeType": "IfStatement",
                              "src": "7939:328:4",
                              "trueBody": {
                                "id": 1058,
                                "nodeType": "Block",
                                "src": "7973:140:4",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "expression": {
                                                "id": 1041,
                                                "name": "params",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1021,
                                                "src": "8010:6:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                                  "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                                }
                                              },
                                              "id": 1042,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "initialPath",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2563,
                                              "src": "8010:18:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_InitialPath_$2541_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct ITridentRouter.InitialPath calldata[] calldata"
                                              }
                                            },
                                            "id": 1044,
                                            "indexExpression": {
                                              "id": 1043,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1025,
                                              "src": "8029:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8010:21:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_InitialPath_$2541_calldata_ptr",
                                              "typeString": "struct ITridentRouter.InitialPath calldata"
                                            }
                                          },
                                          "id": 1045,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "tokenIn",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2532,
                                          "src": "8010:29:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "expression": {
                                                "id": 1046,
                                                "name": "params",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1021,
                                                "src": "8041:6:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                                  "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                                }
                                              },
                                              "id": 1047,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "initialPath",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2563,
                                              "src": "8041:18:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_InitialPath_$2541_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct ITridentRouter.InitialPath calldata[] calldata"
                                              }
                                            },
                                            "id": 1049,
                                            "indexExpression": {
                                              "id": 1048,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1025,
                                              "src": "8060:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8041:21:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_InitialPath_$2541_calldata_ptr",
                                              "typeString": "struct ITridentRouter.InitialPath calldata"
                                            }
                                          },
                                          "id": 1050,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "pool",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2534,
                                          "src": "8041:26:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "expression": {
                                                "id": 1051,
                                                "name": "params",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1021,
                                                "src": "8069:6:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                                  "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                                }
                                              },
                                              "id": 1052,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "initialPath",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2563,
                                              "src": "8069:18:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_InitialPath_$2541_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct ITridentRouter.InitialPath calldata[] calldata"
                                              }
                                            },
                                            "id": 1054,
                                            "indexExpression": {
                                              "id": 1053,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1025,
                                              "src": "8088:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "8069:21:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_InitialPath_$2541_calldata_ptr",
                                              "typeString": "struct ITridentRouter.InitialPath calldata"
                                            }
                                          },
                                          "id": 1055,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "amount",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2538,
                                          "src": "8069:28:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 1040,
                                        "name": "_depositToBentoBox",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1835,
                                        "src": "7991:18:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,uint256)"
                                        }
                                      },
                                      "id": 1056,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7991:107:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1057,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7991:107:4"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "baseExpression": {
                                        "expression": {
                                          "id": 1084,
                                          "name": "params",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1021,
                                          "src": "8294:6:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                            "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                          }
                                        },
                                        "id": 1085,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "initialPath",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2563,
                                        "src": "8294:18:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_InitialPath_$2541_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct ITridentRouter.InitialPath calldata[] calldata"
                                        }
                                      },
                                      "id": 1087,
                                      "indexExpression": {
                                        "id": 1086,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1025,
                                        "src": "8313:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "8294:21:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_InitialPath_$2541_calldata_ptr",
                                        "typeString": "struct ITridentRouter.InitialPath calldata"
                                      }
                                    },
                                    "id": 1088,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "pool",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2534,
                                    "src": "8294:26:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1083,
                                  "name": "isWhiteListed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1891,
                                  "src": "8280:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 1089,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8280:41:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1090,
                              "nodeType": "ExpressionStatement",
                              "src": "8280:41:4"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "baseExpression": {
                                        "expression": {
                                          "id": 1099,
                                          "name": "params",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1021,
                                          "src": "8374:6:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                            "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                          }
                                        },
                                        "id": 1100,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "initialPath",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2563,
                                        "src": "8374:18:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_InitialPath_$2541_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct ITridentRouter.InitialPath calldata[] calldata"
                                        }
                                      },
                                      "id": 1102,
                                      "indexExpression": {
                                        "id": 1101,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1025,
                                        "src": "8393:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "8374:21:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_InitialPath_$2541_calldata_ptr",
                                        "typeString": "struct ITridentRouter.InitialPath calldata"
                                      }
                                    },
                                    "id": 1103,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2540,
                                    "src": "8374:26:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "baseExpression": {
                                            "expression": {
                                              "id": 1092,
                                              "name": "params",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1021,
                                              "src": "8341:6:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                                "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                              }
                                            },
                                            "id": 1093,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "initialPath",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2563,
                                            "src": "8341:18:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_InitialPath_$2541_calldata_ptr_$dyn_calldata_ptr",
                                              "typeString": "struct ITridentRouter.InitialPath calldata[] calldata"
                                            }
                                          },
                                          "id": 1095,
                                          "indexExpression": {
                                            "id": 1094,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1025,
                                            "src": "8360:1:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "8341:21:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_InitialPath_$2541_calldata_ptr",
                                            "typeString": "struct ITridentRouter.InitialPath calldata"
                                          }
                                        },
                                        "id": 1096,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "pool",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2534,
                                        "src": "8341:26:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1091,
                                      "name": "IPool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2450,
                                      "src": "8335:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IPool_$2450_$",
                                        "typeString": "type(contract IPool)"
                                      }
                                    },
                                    "id": 1097,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8335:33:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IPool_$2450",
                                      "typeString": "contract IPool"
                                    }
                                  },
                                  "id": 1098,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "swap",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2368,
                                  "src": "8335:38:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                                    "typeString": "function (bytes memory) external returns (uint256)"
                                  }
                                },
                                "id": 1104,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8335:66:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1105,
                              "nodeType": "ExpressionStatement",
                              "src": "8335:66:4"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1027,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1025,
                            "src": "7889:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 1028,
                                "name": "params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1021,
                                "src": "7893:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                  "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                }
                              },
                              "id": 1029,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "initialPath",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2563,
                              "src": "7893:18:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_InitialPath_$2541_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct ITridentRouter.InitialPath calldata[] calldata"
                              }
                            },
                            "id": 1030,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "7893:25:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7889:29:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1107,
                        "initializationExpression": {
                          "assignments": [
                            1025
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1025,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "7886:1:4",
                              "nodeType": "VariableDeclaration",
                              "scope": 1107,
                              "src": "7878:9:4",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1024,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7878:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1026,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7878:9:4"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 1033,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "7920:3:4",
                            "subExpression": {
                              "id": 1032,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1025,
                              "src": "7920:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1034,
                          "nodeType": "ExpressionStatement",
                          "src": "7920:3:4"
                        },
                        "nodeType": "ForStatement",
                        "src": "7873:539:4"
                      },
                      {
                        "body": {
                          "id": 1195,
                          "nodeType": "Block",
                          "src": "8583:497:4",
                          "statements": [
                            {
                              "assignments": [
                                1120
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1120,
                                  "mutability": "mutable",
                                  "name": "balanceShares",
                                  "nameLocation": "8605:13:4",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1195,
                                  "src": "8597:21:4",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1119,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8597:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1133,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "baseExpression": {
                                        "expression": {
                                          "id": 1123,
                                          "name": "params",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1021,
                                          "src": "8637:6:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                            "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                          }
                                        },
                                        "id": 1124,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "percentagePath",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2567,
                                        "src": "8637:21:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_PercentagePath_$2550_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct ITridentRouter.PercentagePath calldata[] calldata"
                                        }
                                      },
                                      "id": 1126,
                                      "indexExpression": {
                                        "id": 1125,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1109,
                                        "src": "8659:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "8637:24:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PercentagePath_$2550_calldata_ptr",
                                        "typeString": "struct ITridentRouter.PercentagePath calldata"
                                      }
                                    },
                                    "id": 1127,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "tokenIn",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2543,
                                    "src": "8637:32:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 1130,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "8679:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_TridentRouter_$1892",
                                          "typeString": "contract TridentRouter"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_TridentRouter_$1892",
                                          "typeString": "contract TridentRouter"
                                        }
                                      ],
                                      "id": 1129,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8671:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1128,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8671:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1131,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8671:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1121,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23672,
                                    "src": "8621:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 1122,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2151,
                                  "src": "8621:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address,address) view external returns (uint256)"
                                  }
                                },
                                "id": 1132,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8621:64:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8597:88:4"
                            },
                            {
                              "assignments": [
                                1135
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1135,
                                  "mutability": "mutable",
                                  "name": "transferShares",
                                  "nameLocation": "8707:14:4",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1195,
                                  "src": "8699:22:4",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1134,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8699:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1151,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 1142,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 1136,
                                        "name": "balanceShares",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1120,
                                        "src": "8725:13:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "expression": {
                                          "baseExpression": {
                                            "expression": {
                                              "id": 1137,
                                              "name": "params",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1021,
                                              "src": "8741:6:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                                "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                              }
                                            },
                                            "id": 1138,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "percentagePath",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2567,
                                            "src": "8741:21:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_PercentagePath_$2550_calldata_ptr_$dyn_calldata_ptr",
                                              "typeString": "struct ITridentRouter.PercentagePath calldata[] calldata"
                                            }
                                          },
                                          "id": 1140,
                                          "indexExpression": {
                                            "id": 1139,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1109,
                                            "src": "8763:1:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "8741:24:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PercentagePath_$2550_calldata_ptr",
                                            "typeString": "struct ITridentRouter.PercentagePath calldata"
                                          }
                                        },
                                        "id": 1141,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "balancePercentage",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2547,
                                        "src": "8741:42:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        }
                                      },
                                      "src": "8725:58:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 1143,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "8724:60:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 1149,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "3130",
                                        "id": 1146,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8795:2:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        }
                                      ],
                                      "id": 1145,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8787:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 1144,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8787:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1147,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8787:11:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "**",
                                  "rightExpression": {
                                    "hexValue": "38",
                                    "id": 1148,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8800:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_8_by_1",
                                      "typeString": "int_const 8"
                                    },
                                    "value": "8"
                                  },
                                  "src": "8787:14:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8724:77:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8699:102:4"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "baseExpression": {
                                        "expression": {
                                          "id": 1155,
                                          "name": "params",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1021,
                                          "src": "8830:6:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                            "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                          }
                                        },
                                        "id": 1156,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "percentagePath",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2567,
                                        "src": "8830:21:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_PercentagePath_$2550_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct ITridentRouter.PercentagePath calldata[] calldata"
                                        }
                                      },
                                      "id": 1158,
                                      "indexExpression": {
                                        "id": 1157,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1109,
                                        "src": "8852:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "8830:24:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PercentagePath_$2550_calldata_ptr",
                                        "typeString": "struct ITridentRouter.PercentagePath calldata"
                                      }
                                    },
                                    "id": 1159,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "tokenIn",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2543,
                                    "src": "8830:32:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 1162,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "8872:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_TridentRouter_$1892",
                                          "typeString": "contract TridentRouter"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_TridentRouter_$1892",
                                          "typeString": "contract TridentRouter"
                                        }
                                      ],
                                      "id": 1161,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8864:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1160,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8864:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1163,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8864:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "baseExpression": {
                                        "expression": {
                                          "id": 1164,
                                          "name": "params",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1021,
                                          "src": "8879:6:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                            "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                          }
                                        },
                                        "id": 1165,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "percentagePath",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2567,
                                        "src": "8879:21:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_PercentagePath_$2550_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct ITridentRouter.PercentagePath calldata[] calldata"
                                        }
                                      },
                                      "id": 1167,
                                      "indexExpression": {
                                        "id": 1166,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1109,
                                        "src": "8901:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "8879:24:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PercentagePath_$2550_calldata_ptr",
                                        "typeString": "struct ITridentRouter.PercentagePath calldata"
                                      }
                                    },
                                    "id": 1168,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "pool",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2545,
                                    "src": "8879:29:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1169,
                                    "name": "transferShares",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1135,
                                    "src": "8910:14:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1152,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23672,
                                    "src": "8815:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 1154,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2227,
                                  "src": "8815:14:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,uint256) external"
                                  }
                                },
                                "id": 1170,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8815:110:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1171,
                              "nodeType": "ExpressionStatement",
                              "src": "8815:110:4"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "baseExpression": {
                                        "expression": {
                                          "id": 1173,
                                          "name": "params",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1021,
                                          "src": "8953:6:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                            "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                          }
                                        },
                                        "id": 1174,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "percentagePath",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2567,
                                        "src": "8953:21:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_PercentagePath_$2550_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct ITridentRouter.PercentagePath calldata[] calldata"
                                        }
                                      },
                                      "id": 1176,
                                      "indexExpression": {
                                        "id": 1175,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1109,
                                        "src": "8975:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "8953:24:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PercentagePath_$2550_calldata_ptr",
                                        "typeString": "struct ITridentRouter.PercentagePath calldata"
                                      }
                                    },
                                    "id": 1177,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "pool",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2545,
                                    "src": "8953:29:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1172,
                                  "name": "isWhiteListed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1891,
                                  "src": "8939:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 1178,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8939:44:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1179,
                              "nodeType": "ExpressionStatement",
                              "src": "8939:44:4"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "baseExpression": {
                                        "expression": {
                                          "id": 1188,
                                          "name": "params",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1021,
                                          "src": "9039:6:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                            "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                          }
                                        },
                                        "id": 1189,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "percentagePath",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2567,
                                        "src": "9039:21:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_PercentagePath_$2550_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct ITridentRouter.PercentagePath calldata[] calldata"
                                        }
                                      },
                                      "id": 1191,
                                      "indexExpression": {
                                        "id": 1190,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1109,
                                        "src": "9061:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "9039:24:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PercentagePath_$2550_calldata_ptr",
                                        "typeString": "struct ITridentRouter.PercentagePath calldata"
                                      }
                                    },
                                    "id": 1192,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "data",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2549,
                                    "src": "9039:29:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "baseExpression": {
                                            "expression": {
                                              "id": 1181,
                                              "name": "params",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1021,
                                              "src": "9003:6:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                                "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                              }
                                            },
                                            "id": 1182,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "percentagePath",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2567,
                                            "src": "9003:21:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_PercentagePath_$2550_calldata_ptr_$dyn_calldata_ptr",
                                              "typeString": "struct ITridentRouter.PercentagePath calldata[] calldata"
                                            }
                                          },
                                          "id": 1184,
                                          "indexExpression": {
                                            "id": 1183,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1109,
                                            "src": "9025:1:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "9003:24:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_PercentagePath_$2550_calldata_ptr",
                                            "typeString": "struct ITridentRouter.PercentagePath calldata"
                                          }
                                        },
                                        "id": 1185,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "pool",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2545,
                                        "src": "9003:29:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 1180,
                                      "name": "IPool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2450,
                                      "src": "8997:5:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IPool_$2450_$",
                                        "typeString": "type(contract IPool)"
                                      }
                                    },
                                    "id": 1186,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8997:36:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IPool_$2450",
                                      "typeString": "contract IPool"
                                    }
                                  },
                                  "id": 1187,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "swap",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2368,
                                  "src": "8997:41:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                                    "typeString": "function (bytes memory) external returns (uint256)"
                                  }
                                },
                                "id": 1193,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8997:72:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1194,
                              "nodeType": "ExpressionStatement",
                              "src": "8997:72:4"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1111,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1109,
                            "src": "8544:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 1112,
                                "name": "params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1021,
                                "src": "8548:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                  "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                }
                              },
                              "id": 1113,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "percentagePath",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2567,
                              "src": "8548:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_PercentagePath_$2550_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct ITridentRouter.PercentagePath calldata[] calldata"
                              }
                            },
                            "id": 1114,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "8548:28:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8544:32:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1196,
                        "initializationExpression": {
                          "assignments": [
                            1109
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1109,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "8541:1:4",
                              "nodeType": "VariableDeclaration",
                              "scope": 1196,
                              "src": "8533:9:4",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1108,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "8533:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1110,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "8533:9:4"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 1117,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "8578:3:4",
                            "subExpression": {
                              "id": 1116,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1109,
                              "src": "8578:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1118,
                          "nodeType": "ExpressionStatement",
                          "src": "8578:3:4"
                        },
                        "nodeType": "ForStatement",
                        "src": "8528:552:4"
                      },
                      {
                        "body": {
                          "id": 1283,
                          "nodeType": "Block",
                          "src": "9235:492:4",
                          "statements": [
                            {
                              "assignments": [
                                1209
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1209,
                                  "mutability": "mutable",
                                  "name": "balanceShares",
                                  "nameLocation": "9257:13:4",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1283,
                                  "src": "9249:21:4",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1208,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9249:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1222,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "baseExpression": {
                                        "expression": {
                                          "id": 1212,
                                          "name": "params",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1021,
                                          "src": "9289:6:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                            "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                          }
                                        },
                                        "id": 1213,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "output",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2571,
                                        "src": "9289:13:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_Output_$2559_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct ITridentRouter.Output calldata[] calldata"
                                        }
                                      },
                                      "id": 1215,
                                      "indexExpression": {
                                        "id": 1214,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1198,
                                        "src": "9303:1:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "9289:16:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Output_$2559_calldata_ptr",
                                        "typeString": "struct ITridentRouter.Output calldata"
                                      }
                                    },
                                    "id": 1216,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "token",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2552,
                                    "src": "9289:22:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 1219,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "9321:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_TridentRouter_$1892",
                                          "typeString": "contract TridentRouter"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_TridentRouter_$1892",
                                          "typeString": "contract TridentRouter"
                                        }
                                      ],
                                      "id": 1218,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9313:7:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1217,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9313:7:4",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1220,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9313:13:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1210,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23672,
                                    "src": "9273:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 1211,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2151,
                                  "src": "9273:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address,address) view external returns (uint256)"
                                  }
                                },
                                "id": 1221,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9273:54:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9249:78:4"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1230,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 1224,
                                      "name": "balanceShares",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1209,
                                      "src": "9349:13:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "expression": {
                                        "baseExpression": {
                                          "expression": {
                                            "id": 1225,
                                            "name": "params",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1021,
                                            "src": "9366:6:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                              "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                            }
                                          },
                                          "id": 1226,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "output",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2571,
                                          "src": "9366:13:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_Output_$2559_calldata_ptr_$dyn_calldata_ptr",
                                            "typeString": "struct ITridentRouter.Output calldata[] calldata"
                                          }
                                        },
                                        "id": 1228,
                                        "indexExpression": {
                                          "id": 1227,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1198,
                                          "src": "9380:1:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "9366:16:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Output_$2559_calldata_ptr",
                                          "typeString": "struct ITridentRouter.Output calldata"
                                        }
                                      },
                                      "id": 1229,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "minAmount",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2558,
                                      "src": "9366:26:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9349:43:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "544f4f5f4c4954544c455f5245434549564544",
                                    "id": 1231,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9394:21:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_44e24cda2f2a44ef400059021a7190502b0aa1c810f902f32158234f399cf38a",
                                      "typeString": "literal_string \"TOO_LITTLE_RECEIVED\""
                                    },
                                    "value": "TOO_LITTLE_RECEIVED"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_44e24cda2f2a44ef400059021a7190502b0aa1c810f902f32158234f399cf38a",
                                      "typeString": "literal_string \"TOO_LITTLE_RECEIVED\""
                                    }
                                  ],
                                  "id": 1223,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "9341:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 1232,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9341:75:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1233,
                              "nodeType": "ExpressionStatement",
                              "src": "9341:75:4"
                            },
                            {
                              "condition": {
                                "expression": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 1234,
                                      "name": "params",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1021,
                                      "src": "9434:6:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                        "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                      }
                                    },
                                    "id": 1235,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "output",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2571,
                                    "src": "9434:13:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_Output_$2559_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "struct ITridentRouter.Output calldata[] calldata"
                                    }
                                  },
                                  "id": 1237,
                                  "indexExpression": {
                                    "id": 1236,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1198,
                                    "src": "9448:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "9434:16:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Output_$2559_calldata_ptr",
                                    "typeString": "struct ITridentRouter.Output calldata"
                                  }
                                },
                                "id": 1238,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "unwrapBento",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2556,
                                "src": "9434:28:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 1281,
                                "nodeType": "Block",
                                "src": "9595:122:4",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "expression": {
                                                "id": 1264,
                                                "name": "params",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1021,
                                                "src": "9628:6:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                                  "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                                }
                                              },
                                              "id": 1265,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "output",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2571,
                                              "src": "9628:13:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_Output_$2559_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct ITridentRouter.Output calldata[] calldata"
                                              }
                                            },
                                            "id": 1267,
                                            "indexExpression": {
                                              "id": 1266,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1198,
                                              "src": "9642:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "9628:16:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Output_$2559_calldata_ptr",
                                              "typeString": "struct ITridentRouter.Output calldata"
                                            }
                                          },
                                          "id": 1268,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "token",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2552,
                                          "src": "9628:22:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "id": 1271,
                                              "name": "this",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -28,
                                              "src": "9660:4:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_TridentRouter_$1892",
                                                "typeString": "contract TridentRouter"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_TridentRouter_$1892",
                                                "typeString": "contract TridentRouter"
                                              }
                                            ],
                                            "id": 1270,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "9652:7:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 1269,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "9652:7:4",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 1272,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "9652:13:4",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "expression": {
                                                "id": 1273,
                                                "name": "params",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1021,
                                                "src": "9667:6:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                                  "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                                }
                                              },
                                              "id": 1274,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "output",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2571,
                                              "src": "9667:13:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_Output_$2559_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct ITridentRouter.Output calldata[] calldata"
                                              }
                                            },
                                            "id": 1276,
                                            "indexExpression": {
                                              "id": 1275,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1198,
                                              "src": "9681:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "9667:16:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Output_$2559_calldata_ptr",
                                              "typeString": "struct ITridentRouter.Output calldata"
                                            }
                                          },
                                          "id": 1277,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "to",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2554,
                                          "src": "9667:19:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 1278,
                                          "name": "balanceShares",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1209,
                                          "src": "9688:13:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 1261,
                                          "name": "bento",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23672,
                                          "src": "9613:5:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                            "typeString": "contract IBentoBoxMinimal"
                                          }
                                        },
                                        "id": 1263,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "transfer",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2227,
                                        "src": "9613:14:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,address,uint256) external"
                                        }
                                      },
                                      "id": 1279,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9613:89:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1280,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9613:89:4"
                                  }
                                ]
                              },
                              "id": 1282,
                              "nodeType": "IfStatement",
                              "src": "9430:287:4",
                              "trueBody": {
                                "id": 1260,
                                "nodeType": "Block",
                                "src": "9464:125:4",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "expression": {
                                                "id": 1242,
                                                "name": "params",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1021,
                                                "src": "9497:6:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                                  "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                                }
                                              },
                                              "id": 1243,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "output",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2571,
                                              "src": "9497:13:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_Output_$2559_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct ITridentRouter.Output calldata[] calldata"
                                              }
                                            },
                                            "id": 1245,
                                            "indexExpression": {
                                              "id": 1244,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1198,
                                              "src": "9511:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "9497:16:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Output_$2559_calldata_ptr",
                                              "typeString": "struct ITridentRouter.Output calldata"
                                            }
                                          },
                                          "id": 1246,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "token",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2552,
                                          "src": "9497:22:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "id": 1249,
                                              "name": "this",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -28,
                                              "src": "9529:4:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_TridentRouter_$1892",
                                                "typeString": "contract TridentRouter"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_TridentRouter_$1892",
                                                "typeString": "contract TridentRouter"
                                              }
                                            ],
                                            "id": 1248,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "9521:7:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 1247,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "9521:7:4",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 1250,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "9521:13:4",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "expression": {
                                                "id": 1251,
                                                "name": "params",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1021,
                                                "src": "9536:6:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                                  "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                                }
                                              },
                                              "id": 1252,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "output",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 2571,
                                              "src": "9536:13:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_Output_$2559_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct ITridentRouter.Output calldata[] calldata"
                                              }
                                            },
                                            "id": 1254,
                                            "indexExpression": {
                                              "id": 1253,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1198,
                                              "src": "9550:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "9536:16:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Output_$2559_calldata_ptr",
                                              "typeString": "struct ITridentRouter.Output calldata"
                                            }
                                          },
                                          "id": 1255,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "to",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2554,
                                          "src": "9536:19:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "hexValue": "30",
                                          "id": 1256,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "9557:1:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        {
                                          "id": 1257,
                                          "name": "balanceShares",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1209,
                                          "src": "9560:13:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 1239,
                                          "name": "bento",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23672,
                                          "src": "9482:5:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                            "typeString": "contract IBentoBoxMinimal"
                                          }
                                        },
                                        "id": 1241,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "withdraw",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2215,
                                        "src": "9482:14:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                          "typeString": "function (address,address,address,uint256,uint256) external returns (uint256,uint256)"
                                        }
                                      },
                                      "id": 1258,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9482:92:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "id": 1259,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9482:92:4"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1200,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1198,
                            "src": "9204:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 1201,
                                "name": "params",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1021,
                                "src": "9208:6:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                                  "typeString": "struct ITridentRouter.ComplexPathParams calldata"
                                }
                              },
                              "id": 1202,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "output",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2571,
                              "src": "9208:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Output_$2559_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct ITridentRouter.Output calldata[] calldata"
                              }
                            },
                            "id": 1203,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "9208:20:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9204:24:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1284,
                        "initializationExpression": {
                          "assignments": [
                            1198
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1198,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "9201:1:4",
                              "nodeType": "VariableDeclaration",
                              "scope": 1284,
                              "src": "9193:9:4",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1197,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9193:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1199,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "9193:9:4"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 1206,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "9230:3:4",
                            "subExpression": {
                              "id": 1205,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1198,
                              "src": "9230:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1207,
                          "nodeType": "ExpressionStatement",
                          "src": "9230:3:4"
                        },
                        "nodeType": "ForStatement",
                        "src": "9188:539:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1018,
                    "nodeType": "StructuredDocumentation",
                    "src": "7089:534:4",
                    "text": "@notice Swaps multiple input tokens to multiple output tokens using multiple paths, in different percentages.\n For example, you can swap 50 DAI + 100 USDC into 60% ETH and 40% BTC.\n @param params This includes everything needed for the swap. Look at the `ComplexPathParams` struct for more details.\n @dev This function is not optimized for single swaps and should only be used in complex cases where\n the amounts are large enough that minimizing slippage by using multiple paths is worth the extra gas."
                  },
                  "functionSelector": "b96c5c0e",
                  "id": 1286,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "complexPath",
                  "nameLocation": "7637:11:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1022,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1021,
                        "mutability": "mutable",
                        "name": "params",
                        "nameLocation": "7676:6:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1286,
                        "src": "7649:33:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ComplexPathParams_$2572_calldata_ptr",
                          "typeString": "struct ITridentRouter.ComplexPathParams"
                        },
                        "typeName": {
                          "id": 1020,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 1019,
                            "name": "ComplexPathParams",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2572,
                            "src": "7649:17:4"
                          },
                          "referencedDeclaration": 2572,
                          "src": "7649:17:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ComplexPathParams_$2572_storage_ptr",
                            "typeString": "struct ITridentRouter.ComplexPathParams"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7648:35:4"
                  },
                  "returnParameters": {
                    "id": 1023,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7699:0:4"
                  },
                  "scope": 1892,
                  "src": "7628:2105:4",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1369,
                    "nodeType": "Block",
                    "src": "10232:523:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1303,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1293,
                              "src": "10256:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1302,
                            "name": "isWhiteListed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1891,
                            "src": "10242:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 1304,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10242:19:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1305,
                        "nodeType": "ExpressionStatement",
                        "src": "10242:19:4"
                      },
                      {
                        "body": {
                          "id": 1351,
                          "nodeType": "Block",
                          "src": "10366:264:4",
                          "statements": [
                            {
                              "condition": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 1316,
                                    "name": "tokenInput",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1291,
                                    "src": "10384:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct ITridentRouter.TokenInput memory[] memory"
                                    }
                                  },
                                  "id": 1318,
                                  "indexExpression": {
                                    "id": 1317,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1307,
                                    "src": "10395:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "10384:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                    "typeString": "struct ITridentRouter.TokenInput memory"
                                  }
                                },
                                "id": 1319,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "native",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2527,
                                "src": "10384:20:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 1349,
                                "nodeType": "Block",
                                "src": "10512:108:4",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "id": 1336,
                                              "name": "tokenInput",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1291,
                                              "src": "10545:10:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct ITridentRouter.TokenInput memory[] memory"
                                              }
                                            },
                                            "id": 1338,
                                            "indexExpression": {
                                              "id": 1337,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1307,
                                              "src": "10556:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "10545:13:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                              "typeString": "struct ITridentRouter.TokenInput memory"
                                            }
                                          },
                                          "id": 1339,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "token",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2525,
                                          "src": "10545:19:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 1340,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "10566:3:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 1341,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "src": "10566:10:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 1342,
                                          "name": "pool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1293,
                                          "src": "10578:4:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "id": 1343,
                                              "name": "tokenInput",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1291,
                                              "src": "10584:10:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct ITridentRouter.TokenInput memory[] memory"
                                              }
                                            },
                                            "id": 1345,
                                            "indexExpression": {
                                              "id": 1344,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1307,
                                              "src": "10595:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "10584:13:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                              "typeString": "struct ITridentRouter.TokenInput memory"
                                            }
                                          },
                                          "id": 1346,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "amount",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2529,
                                          "src": "10584:20:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 1333,
                                          "name": "bento",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23672,
                                          "src": "10530:5:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                            "typeString": "contract IBentoBoxMinimal"
                                          }
                                        },
                                        "id": 1335,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "transfer",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2227,
                                        "src": "10530:14:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,address,uint256) external"
                                        }
                                      },
                                      "id": 1347,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10530:75:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1348,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10530:75:4"
                                  }
                                ]
                              },
                              "id": 1350,
                              "nodeType": "IfStatement",
                              "src": "10380:240:4",
                              "trueBody": {
                                "id": 1332,
                                "nodeType": "Block",
                                "src": "10406:100:4",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "id": 1321,
                                              "name": "tokenInput",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1291,
                                              "src": "10443:10:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct ITridentRouter.TokenInput memory[] memory"
                                              }
                                            },
                                            "id": 1323,
                                            "indexExpression": {
                                              "id": 1322,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1307,
                                              "src": "10454:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "10443:13:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                              "typeString": "struct ITridentRouter.TokenInput memory"
                                            }
                                          },
                                          "id": 1324,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "token",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2525,
                                          "src": "10443:19:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 1325,
                                          "name": "pool",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1293,
                                          "src": "10464:4:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "id": 1326,
                                              "name": "tokenInput",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1291,
                                              "src": "10470:10:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct ITridentRouter.TokenInput memory[] memory"
                                              }
                                            },
                                            "id": 1328,
                                            "indexExpression": {
                                              "id": 1327,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1307,
                                              "src": "10481:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "10470:13:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                              "typeString": "struct ITridentRouter.TokenInput memory"
                                            }
                                          },
                                          "id": 1329,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "amount",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2529,
                                          "src": "10470:20:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 1320,
                                        "name": "_depositToBentoBox",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1835,
                                        "src": "10424:18:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,uint256)"
                                        }
                                      },
                                      "id": 1330,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10424:67:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1331,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10424:67:4"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1309,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1307,
                            "src": "10338:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 1310,
                              "name": "tokenInput",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1291,
                              "src": "10342:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct ITridentRouter.TokenInput memory[] memory"
                              }
                            },
                            "id": 1311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "10342:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10338:21:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1352,
                        "initializationExpression": {
                          "assignments": [
                            1307
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1307,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "10335:1:4",
                              "nodeType": "VariableDeclaration",
                              "scope": 1352,
                              "src": "10327:9:4",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1306,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "10327:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1308,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "10327:9:4"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 1314,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "10361:3:4",
                            "subExpression": {
                              "id": 1313,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1307,
                              "src": "10361:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1315,
                          "nodeType": "ExpressionStatement",
                          "src": "10361:3:4"
                        },
                        "nodeType": "ForStatement",
                        "src": "10322:308:4"
                      },
                      {
                        "expression": {
                          "id": 1360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1353,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1300,
                            "src": "10639:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 1358,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1297,
                                "src": "10668:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1355,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1293,
                                    "src": "10657:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1354,
                                  "name": "IPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2450,
                                  "src": "10651:5:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IPool_$2450_$",
                                    "typeString": "type(contract IPool)"
                                  }
                                },
                                "id": 1356,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10651:11:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPool_$2450",
                                  "typeString": "contract IPool"
                                }
                              },
                              "id": 1357,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mint",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2384,
                              "src": "10651:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                                "typeString": "function (bytes memory) external returns (uint256)"
                              }
                            },
                            "id": 1359,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10651:22:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10639:34:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1361,
                        "nodeType": "ExpressionStatement",
                        "src": "10639:34:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1365,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1363,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1300,
                                "src": "10691:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 1364,
                                "name": "minLiquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1295,
                                "src": "10704:12:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10691:25:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e4f545f454e4f5547485f4c49515549444954595f4d494e544544",
                              "id": 1366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10718:29:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_73a58d3096665cdb3d9ecc032123f5a7ad88bd17cf83311559ff7dc040a3dc97",
                                "typeString": "literal_string \"NOT_ENOUGH_LIQUIDITY_MINTED\""
                              },
                              "value": "NOT_ENOUGH_LIQUIDITY_MINTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_73a58d3096665cdb3d9ecc032123f5a7ad88bd17cf83311559ff7dc040a3dc97",
                                "typeString": "literal_string \"NOT_ENOUGH_LIQUIDITY_MINTED\""
                              }
                            ],
                            "id": 1362,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10683:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10683:65:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1368,
                        "nodeType": "ExpressionStatement",
                        "src": "10683:65:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1287,
                    "nodeType": "StructuredDocumentation",
                    "src": "9739:296:4",
                    "text": "@notice Add liquidity to a pool.\n @param tokenInput Token address and amount to add as liquidity.\n @param pool Pool address to add liquidity to.\n @param minLiquidity Minimum output liquidity - caps slippage.\n @param data Data required by the pool to add liquidity."
                  },
                  "functionSelector": "2cfcb94f",
                  "id": 1370,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addLiquidity",
                  "nameLocation": "10049:12:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1298,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1291,
                        "mutability": "mutable",
                        "name": "tokenInput",
                        "nameLocation": "10091:10:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1370,
                        "src": "10071:30:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct ITridentRouter.TokenInput[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1289,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 1288,
                              "name": "TokenInput",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2530,
                              "src": "10071:10:4"
                            },
                            "referencedDeclaration": 2530,
                            "src": "10071:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenInput_$2530_storage_ptr",
                              "typeString": "struct ITridentRouter.TokenInput"
                            }
                          },
                          "id": 1290,
                          "nodeType": "ArrayTypeName",
                          "src": "10071:12:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_storage_$dyn_storage_ptr",
                            "typeString": "struct ITridentRouter.TokenInput[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1293,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "10119:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1370,
                        "src": "10111:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1292,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10111:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1295,
                        "mutability": "mutable",
                        "name": "minLiquidity",
                        "nameLocation": "10141:12:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1370,
                        "src": "10133:20:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1294,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10133:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1297,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "10178:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1370,
                        "src": "10163:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1296,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10163:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10061:127:4"
                  },
                  "returnParameters": {
                    "id": 1301,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1300,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "10221:9:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1370,
                        "src": "10213:17:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1299,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10213:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10212:19:4"
                  },
                  "scope": 1892,
                  "src": "10040:715:4",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1425,
                    "nodeType": "Block",
                    "src": "11095:291:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1383,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1373,
                              "src": "11119:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1382,
                            "name": "isWhiteListed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1891,
                            "src": "11105:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 1384,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11105:19:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1385,
                        "nodeType": "ExpressionStatement",
                        "src": "11105:19:4"
                      },
                      {
                        "expression": {
                          "id": 1389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1386,
                            "name": "cachedMsgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "11134:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 1387,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "11152:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1388,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "11152:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11134:28:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1390,
                        "nodeType": "ExpressionStatement",
                        "src": "11134:28:4"
                      },
                      {
                        "expression": {
                          "id": 1393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1391,
                            "name": "cachedPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 685,
                            "src": "11172:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1392,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1373,
                            "src": "11185:4:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11172:17:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1394,
                        "nodeType": "ExpressionStatement",
                        "src": "11172:17:4"
                      },
                      {
                        "expression": {
                          "id": 1402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1395,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1380,
                            "src": "11199:9:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 1400,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1377,
                                "src": "11228:4:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1397,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1373,
                                    "src": "11217:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1396,
                                  "name": "IPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2450,
                                  "src": "11211:5:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IPool_$2450_$",
                                    "typeString": "type(contract IPool)"
                                  }
                                },
                                "id": 1398,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11211:11:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPool_$2450",
                                  "typeString": "contract IPool"
                                }
                              },
                              "id": 1399,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mint",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2384,
                              "src": "11211:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                                "typeString": "function (bytes memory) external returns (uint256)"
                              }
                            },
                            "id": 1401,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11211:22:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11199:34:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1403,
                        "nodeType": "ExpressionStatement",
                        "src": "11199:34:4"
                      },
                      {
                        "expression": {
                          "id": 1409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1404,
                            "name": "cachedMsgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "11243:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "31",
                                "id": 1407,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11269:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "id": 1406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11261:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1405,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "11261:7:4",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11261:10:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11243:28:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1410,
                        "nodeType": "ExpressionStatement",
                        "src": "11243:28:4"
                      },
                      {
                        "expression": {
                          "id": 1416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1411,
                            "name": "cachedPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 685,
                            "src": "11281:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "31",
                                "id": 1414,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11302:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "id": 1413,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11294:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1412,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "11294:7:4",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1415,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11294:10:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11281:23:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1417,
                        "nodeType": "ExpressionStatement",
                        "src": "11281:23:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1421,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1419,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1380,
                                "src": "11322:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 1420,
                                "name": "minLiquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1375,
                                "src": "11335:12:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11322:25:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e4f545f454e4f5547485f4c49515549444954595f4d494e544544",
                              "id": 1422,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11349:29:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_73a58d3096665cdb3d9ecc032123f5a7ad88bd17cf83311559ff7dc040a3dc97",
                                "typeString": "literal_string \"NOT_ENOUGH_LIQUIDITY_MINTED\""
                              },
                              "value": "NOT_ENOUGH_LIQUIDITY_MINTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_73a58d3096665cdb3d9ecc032123f5a7ad88bd17cf83311559ff7dc040a3dc97",
                                "typeString": "literal_string \"NOT_ENOUGH_LIQUIDITY_MINTED\""
                              }
                            ],
                            "id": 1418,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11314:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11314:65:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1424,
                        "nodeType": "ExpressionStatement",
                        "src": "11314:65:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1371,
                    "nodeType": "StructuredDocumentation",
                    "src": "10761:173:4",
                    "text": "@notice Add liquidity to a pool using callbacks - same as `addLiquidity`, but now with callbacks.\n @dev The input tokens are sent to the pool during the callback."
                  },
                  "functionSelector": "98a691de",
                  "id": 1426,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addLiquidityLazy",
                  "nameLocation": "10948:16:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1378,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1373,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "10982:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1426,
                        "src": "10974:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1372,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10974:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1375,
                        "mutability": "mutable",
                        "name": "minLiquidity",
                        "nameLocation": "11004:12:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1426,
                        "src": "10996:20:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1374,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10996:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1377,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "11041:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1426,
                        "src": "11026:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1376,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "11026:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10964:87:4"
                  },
                  "returnParameters": {
                    "id": 1381,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1380,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "11084:9:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1426,
                        "src": "11076:17:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1379,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11076:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11075:19:4"
                  },
                  "scope": 1892,
                  "src": "10939:447:4",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1522,
                    "nodeType": "Block",
                    "src": "11862:755:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1441,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1429,
                              "src": "11886:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1440,
                            "name": "isWhiteListed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1891,
                            "src": "11872:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 1442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11872:19:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1443,
                        "nodeType": "ExpressionStatement",
                        "src": "11872:19:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1445,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1429,
                              "src": "11918:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 1446,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "11924:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1447,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "11924:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1448,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1429,
                              "src": "11936:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1449,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1431,
                              "src": "11942:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1444,
                            "name": "safeTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24013,
                            "src": "11901:16:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 1450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11901:51:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1451,
                        "nodeType": "ExpressionStatement",
                        "src": "11901:51:4"
                      },
                      {
                        "assignments": [
                          1457
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1457,
                            "mutability": "mutable",
                            "name": "withdrawnLiquidity",
                            "nameLocation": "11989:18:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 1522,
                            "src": "11962:45:4",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct IPool.TokenAmount[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1455,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 1454,
                                  "name": "IPool.TokenAmount",
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 2449,
                                  "src": "11962:17:4"
                                },
                                "referencedDeclaration": 2449,
                                "src": "11962:17:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                                  "typeString": "struct IPool.TokenAmount"
                                }
                              },
                              "id": 1456,
                              "nodeType": "ArrayTypeName",
                              "src": "11962:19:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                                "typeString": "struct IPool.TokenAmount[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1464,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1462,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1433,
                              "src": "12027:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 1459,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1429,
                                  "src": "12016:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1458,
                                "name": "IPool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2450,
                                "src": "12010:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPool_$2450_$",
                                  "typeString": "type(contract IPool)"
                                }
                              },
                              "id": 1460,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12010:11:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPool_$2450",
                                "typeString": "contract IPool"
                              }
                            },
                            "id": 1461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "burn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2394,
                            "src": "12010:16:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (bytes memory) external returns (struct IPool.TokenAmount memory[] memory)"
                            }
                          },
                          "id": 1463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12010:22:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct IPool.TokenAmount memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11962:70:4"
                      },
                      {
                        "body": {
                          "id": 1520,
                          "nodeType": "Block",
                          "src": "12090:521:4",
                          "statements": [
                            {
                              "assignments": [
                                1476
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1476,
                                  "mutability": "mutable",
                                  "name": "j",
                                  "nameLocation": "12112:1:4",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1520,
                                  "src": "12104:9:4",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1475,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12104:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1477,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12104:9:4"
                            },
                            {
                              "body": {
                                "id": 1510,
                                "nodeType": "Block",
                                "src": "12170:248:4",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 1493,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "baseExpression": {
                                            "id": 1485,
                                            "name": "withdrawnLiquidity",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1457,
                                            "src": "12192:18:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                              "typeString": "struct IPool.TokenAmount memory[] memory"
                                            }
                                          },
                                          "id": 1487,
                                          "indexExpression": {
                                            "id": 1486,
                                            "name": "j",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1476,
                                            "src": "12211:1:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "12192:21:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                            "typeString": "struct IPool.TokenAmount memory"
                                          }
                                        },
                                        "id": 1488,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "token",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2446,
                                        "src": "12192:27:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "expression": {
                                          "baseExpression": {
                                            "id": 1489,
                                            "name": "minWithdrawals",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1437,
                                            "src": "12223:14:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                              "typeString": "struct IPool.TokenAmount memory[] memory"
                                            }
                                          },
                                          "id": 1491,
                                          "indexExpression": {
                                            "id": 1490,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1466,
                                            "src": "12238:1:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "12223:17:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                            "typeString": "struct IPool.TokenAmount memory"
                                          }
                                        },
                                        "id": 1492,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "token",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2446,
                                        "src": "12223:23:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "12192:54:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 1509,
                                    "nodeType": "IfStatement",
                                    "src": "12188:216:4",
                                    "trueBody": {
                                      "id": 1508,
                                      "nodeType": "Block",
                                      "src": "12248:156:4",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 1503,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "expression": {
                                                    "baseExpression": {
                                                      "id": 1495,
                                                      "name": "withdrawnLiquidity",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1457,
                                                      "src": "12278:18:4",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                                        "typeString": "struct IPool.TokenAmount memory[] memory"
                                                      }
                                                    },
                                                    "id": 1497,
                                                    "indexExpression": {
                                                      "id": 1496,
                                                      "name": "j",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1476,
                                                      "src": "12297:1:4",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "12278:21:4",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                                      "typeString": "struct IPool.TokenAmount memory"
                                                    }
                                                  },
                                                  "id": 1498,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "amount",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 2448,
                                                  "src": "12278:28:4",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": ">=",
                                                "rightExpression": {
                                                  "expression": {
                                                    "baseExpression": {
                                                      "id": 1499,
                                                      "name": "minWithdrawals",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1437,
                                                      "src": "12310:14:4",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                                        "typeString": "struct IPool.TokenAmount memory[] memory"
                                                      }
                                                    },
                                                    "id": 1501,
                                                    "indexExpression": {
                                                      "id": 1500,
                                                      "name": "i",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1466,
                                                      "src": "12325:1:4",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "12310:17:4",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                                      "typeString": "struct IPool.TokenAmount memory"
                                                    }
                                                  },
                                                  "id": 1502,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "amount",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 2448,
                                                  "src": "12310:24:4",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "12278:56:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              },
                                              {
                                                "hexValue": "544f4f5f4c4954544c455f5245434549564544",
                                                "id": 1504,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "12336:21:4",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_stringliteral_44e24cda2f2a44ef400059021a7190502b0aa1c810f902f32158234f399cf38a",
                                                  "typeString": "literal_string \"TOO_LITTLE_RECEIVED\""
                                                },
                                                "value": "TOO_LITTLE_RECEIVED"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                },
                                                {
                                                  "typeIdentifier": "t_stringliteral_44e24cda2f2a44ef400059021a7190502b0aa1c810f902f32158234f399cf38a",
                                                  "typeString": "literal_string \"TOO_LITTLE_RECEIVED\""
                                                }
                                              ],
                                              "id": 1494,
                                              "name": "require",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [
                                                -18,
                                                -18
                                              ],
                                              "referencedDeclaration": -18,
                                              "src": "12270:7:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                              }
                                            },
                                            "id": 1505,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "12270:88:4",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 1506,
                                          "nodeType": "ExpressionStatement",
                                          "src": "12270:88:4"
                                        },
                                        {
                                          "id": 1507,
                                          "nodeType": "Break",
                                          "src": "12380:5:4"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1481,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1478,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1476,
                                  "src": "12134:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "expression": {
                                    "id": 1479,
                                    "name": "withdrawnLiquidity",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1457,
                                    "src": "12138:18:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct IPool.TokenAmount memory[] memory"
                                    }
                                  },
                                  "id": 1480,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "12138:25:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12134:29:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1511,
                              "loopExpression": {
                                "expression": {
                                  "id": 1483,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "12165:3:4",
                                  "subExpression": {
                                    "id": 1482,
                                    "name": "j",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1476,
                                    "src": "12165:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1484,
                                "nodeType": "ExpressionStatement",
                                "src": "12165:3:4"
                              },
                              "nodeType": "ForStatement",
                              "src": "12127:291:4"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1516,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 1513,
                                      "name": "j",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1476,
                                      "src": "12541:1:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 1514,
                                        "name": "withdrawnLiquidity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1457,
                                        "src": "12545:18:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct IPool.TokenAmount memory[] memory"
                                        }
                                      },
                                      "id": 1515,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "12545:25:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "12541:29:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e434f52524543545f544f4b454e5f57495448445241574e",
                                    "id": 1517,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12572:27:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_814a50f1a3828c43ae18c528db69f16334eb614f36232428b94a1dbdc9450251",
                                      "typeString": "literal_string \"INCORRECT_TOKEN_WITHDRAWN\""
                                    },
                                    "value": "INCORRECT_TOKEN_WITHDRAWN"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_814a50f1a3828c43ae18c528db69f16334eb614f36232428b94a1dbdc9450251",
                                      "typeString": "literal_string \"INCORRECT_TOKEN_WITHDRAWN\""
                                    }
                                  ],
                                  "id": 1512,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "12533:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 1518,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12533:67:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1519,
                              "nodeType": "ExpressionStatement",
                              "src": "12533:67:4"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1468,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1466,
                            "src": "12058:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 1469,
                              "name": "minWithdrawals",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1437,
                              "src": "12062:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IPool.TokenAmount memory[] memory"
                              }
                            },
                            "id": 1470,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "12062:21:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12058:25:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1521,
                        "initializationExpression": {
                          "assignments": [
                            1466
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1466,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "12055:1:4",
                              "nodeType": "VariableDeclaration",
                              "scope": 1521,
                              "src": "12047:9:4",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1465,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "12047:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1467,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "12047:9:4"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 1473,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "12085:3:4",
                            "subExpression": {
                              "id": 1472,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1466,
                              "src": "12085:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1474,
                          "nodeType": "ExpressionStatement",
                          "src": "12085:3:4"
                        },
                        "nodeType": "ForStatement",
                        "src": "12042:569:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1427,
                    "nodeType": "StructuredDocumentation",
                    "src": "11392:300:4",
                    "text": "@notice Burn liquidity tokens to get back `bento` tokens.\n @param pool Pool address.\n @param liquidity Amount of liquidity tokens to burn.\n @param data Data required by the pool to burn liquidity.\n @param minWithdrawals Minimum amount of `bento` tokens to be returned."
                  },
                  "functionSelector": "783312d9",
                  "id": 1523,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnLiquidity",
                  "nameLocation": "11706:13:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1438,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1429,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "11737:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1523,
                        "src": "11729:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1428,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11729:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1431,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "11759:9:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1523,
                        "src": "11751:17:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1430,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11751:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1433,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "11793:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1523,
                        "src": "11778:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1432,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "11778:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1437,
                        "mutability": "mutable",
                        "name": "minWithdrawals",
                        "nameLocation": "11834:14:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1523,
                        "src": "11807:41:4",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IPool.TokenAmount[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1435,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 1434,
                              "name": "IPool.TokenAmount",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2449,
                              "src": "11807:17:4"
                            },
                            "referencedDeclaration": 2449,
                            "src": "11807:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                              "typeString": "struct IPool.TokenAmount"
                            }
                          },
                          "id": 1436,
                          "nodeType": "ArrayTypeName",
                          "src": "11807:19:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                            "typeString": "struct IPool.TokenAmount[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11719:135:4"
                  },
                  "returnParameters": {
                    "id": 1439,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11862:0:4"
                  },
                  "scope": 1892,
                  "src": "11697:920:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1563,
                    "nodeType": "Block",
                    "src": "13157:275:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1536,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1526,
                              "src": "13181:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1535,
                            "name": "isWhiteListed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1891,
                            "src": "13167:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 1537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13167:19:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1538,
                        "nodeType": "ExpressionStatement",
                        "src": "13167:19:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1540,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1526,
                              "src": "13265:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 1541,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "13271:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1542,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "13271:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1543,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1526,
                              "src": "13283:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1544,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1528,
                              "src": "13289:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1539,
                            "name": "safeTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24013,
                            "src": "13248:16:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256)"
                            }
                          },
                          "id": 1545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13248:51:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1546,
                        "nodeType": "ExpressionStatement",
                        "src": "13248:51:4"
                      },
                      {
                        "assignments": [
                          1548
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1548,
                            "mutability": "mutable",
                            "name": "withdrawn",
                            "nameLocation": "13317:9:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 1563,
                            "src": "13309:17:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1547,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13309:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1555,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1553,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1530,
                              "src": "13352:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 1550,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1526,
                                  "src": "13335:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1549,
                                "name": "IPool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2450,
                                "src": "13329:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IPool_$2450_$",
                                  "typeString": "type(contract IPool)"
                                }
                              },
                              "id": 1551,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13329:11:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPool_$2450",
                                "typeString": "contract IPool"
                              }
                            },
                            "id": 1552,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "burnSingle",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2402,
                            "src": "13329:22:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (bytes memory) external returns (uint256)"
                            }
                          },
                          "id": 1554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13329:28:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13309:48:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1559,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1557,
                                "name": "withdrawn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1548,
                                "src": "13375:9:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 1558,
                                "name": "minWithdrawal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1532,
                                "src": "13388:13:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13375:26:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "544f4f5f4c4954544c455f5245434549564544",
                              "id": 1560,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13403:21:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_44e24cda2f2a44ef400059021a7190502b0aa1c810f902f32158234f399cf38a",
                                "typeString": "literal_string \"TOO_LITTLE_RECEIVED\""
                              },
                              "value": "TOO_LITTLE_RECEIVED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_44e24cda2f2a44ef400059021a7190502b0aa1c810f902f32158234f399cf38a",
                                "typeString": "literal_string \"TOO_LITTLE_RECEIVED\""
                              }
                            ],
                            "id": 1556,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13367:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13367:58:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1562,
                        "nodeType": "ExpressionStatement",
                        "src": "13367:58:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1524,
                    "nodeType": "StructuredDocumentation",
                    "src": "12623:378:4",
                    "text": "@notice Burn liquidity tokens to get back `bento` tokens.\n @dev The tokens are swapped automatically and the output is in a single token.\n @param pool Pool address.\n @param liquidity Amount of liquidity tokens to burn.\n @param data Data required by the pool to burn liquidity.\n @param minWithdrawal Minimum amount of tokens to be returned."
                  },
                  "functionSelector": "1aa349a8",
                  "id": 1564,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnLiquiditySingle",
                  "nameLocation": "13015:19:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1533,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1526,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "13052:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1564,
                        "src": "13044:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1525,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13044:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1528,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "13074:9:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1564,
                        "src": "13066:17:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1527,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13066:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1530,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "13108:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1564,
                        "src": "13093:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1529,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "13093:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1532,
                        "mutability": "mutable",
                        "name": "minWithdrawal",
                        "nameLocation": "13130:13:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1564,
                        "src": "13122:21:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1531,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13122:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13034:115:4"
                  },
                  "returnParameters": {
                    "id": 1534,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13157:0:4"
                  },
                  "scope": 1892,
                  "src": "13006:426:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1622,
                    "nodeType": "Block",
                    "src": "13592:560:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1574,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 1571,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "13610:3:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 1572,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "13610:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 1573,
                                "name": "cachedPool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 685,
                                "src": "13624:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "13610:24:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "554e415554484f52495a45445f43414c4c4241434b",
                              "id": 1575,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13636:23:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c7794b7baa0098f77f3fbdd0bb4bf412ca5eba33792029833fad4b51094ad4d3",
                                "typeString": "literal_string \"UNAUTHORIZED_CALLBACK\""
                              },
                              "value": "UNAUTHORIZED_CALLBACK"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c7794b7baa0098f77f3fbdd0bb4bf412ca5eba33792029833fad4b51094ad4d3",
                                "typeString": "literal_string \"UNAUTHORIZED_CALLBACK\""
                              }
                            ],
                            "id": 1570,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13602:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13602:58:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1577,
                        "nodeType": "ExpressionStatement",
                        "src": "13602:58:4"
                      },
                      {
                        "assignments": [
                          1580
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1580,
                            "mutability": "mutable",
                            "name": "tokenInput",
                            "nameLocation": "13688:10:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 1622,
                            "src": "13670:28:4",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                              "typeString": "struct ITridentRouter.TokenInput"
                            },
                            "typeName": {
                              "id": 1579,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 1578,
                                "name": "TokenInput",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2530,
                                "src": "13670:10:4"
                              },
                              "referencedDeclaration": 2530,
                              "src": "13670:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_TokenInput_$2530_storage_ptr",
                                "typeString": "struct ITridentRouter.TokenInput"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1587,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1583,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1567,
                              "src": "13712:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 1584,
                                  "name": "TokenInput",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2530,
                                  "src": "13719:10:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_struct$_TokenInput_$2530_storage_ptr_$",
                                    "typeString": "type(struct ITridentRouter.TokenInput storage pointer)"
                                  }
                                }
                              ],
                              "id": 1585,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "13718:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_TokenInput_$2530_storage_ptr_$",
                                "typeString": "type(struct ITridentRouter.TokenInput storage pointer)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_type$_t_struct$_TokenInput_$2530_storage_ptr_$",
                                "typeString": "type(struct ITridentRouter.TokenInput storage pointer)"
                              }
                            ],
                            "expression": {
                              "id": 1581,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "13701:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 1582,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "13701:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 1586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13701:30:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                            "typeString": "struct ITridentRouter.TokenInput memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13670:61:4"
                      },
                      {
                        "condition": {
                          "expression": {
                            "id": 1588,
                            "name": "tokenInput",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1580,
                            "src": "13804:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                              "typeString": "struct ITridentRouter.TokenInput memory"
                            }
                          },
                          "id": 1589,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "native",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2527,
                          "src": "13804:17:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1613,
                          "nodeType": "Block",
                          "src": "13946:105:4",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 1604,
                                      "name": "tokenInput",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1580,
                                      "src": "13975:10:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                        "typeString": "struct ITridentRouter.TokenInput memory"
                                      }
                                    },
                                    "id": 1605,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "token",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2525,
                                    "src": "13975:16:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1606,
                                    "name": "cachedMsgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 683,
                                    "src": "13993:15:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 1607,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "14010:3:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 1608,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "14010:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 1609,
                                      "name": "tokenInput",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1580,
                                      "src": "14022:10:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                        "typeString": "struct ITridentRouter.TokenInput memory"
                                      }
                                    },
                                    "id": 1610,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2529,
                                    "src": "14022:17:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1601,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23672,
                                    "src": "13960:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 1603,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2227,
                                  "src": "13960:14:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,uint256) external"
                                  }
                                },
                                "id": 1611,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13960:80:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1612,
                              "nodeType": "ExpressionStatement",
                              "src": "13960:80:4"
                            }
                          ]
                        },
                        "id": 1614,
                        "nodeType": "IfStatement",
                        "src": "13800:251:4",
                        "trueBody": {
                          "id": 1600,
                          "nodeType": "Block",
                          "src": "13823:117:4",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 1591,
                                      "name": "tokenInput",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1580,
                                      "src": "13864:10:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                        "typeString": "struct ITridentRouter.TokenInput memory"
                                      }
                                    },
                                    "id": 1592,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "token",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2525,
                                    "src": "13864:16:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1593,
                                    "name": "cachedMsgSender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 683,
                                    "src": "13882:15:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 1594,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "13899:3:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 1595,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "13899:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 1596,
                                      "name": "tokenInput",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1580,
                                      "src": "13911:10:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                        "typeString": "struct ITridentRouter.TokenInput memory"
                                      }
                                    },
                                    "id": 1597,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2529,
                                    "src": "13911:17:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1590,
                                  "name": "_depositFromUserToBentoBox",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1865,
                                  "src": "13837:26:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,uint256)"
                                  }
                                },
                                "id": 1598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13837:92:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1599,
                              "nodeType": "ExpressionStatement",
                              "src": "13837:92:4"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 1620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1615,
                            "name": "cachedMsgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "14117:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "31",
                                "id": 1618,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14143:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "id": 1617,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14135:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1616,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "14135:7:4",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14135:10:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "14117:28:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1621,
                        "nodeType": "ExpressionStatement",
                        "src": "14117:28:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1565,
                    "nodeType": "StructuredDocumentation",
                    "src": "13438:90:4",
                    "text": "@notice Used by the pool 'flashSwap' functionality to take input tokens from the user."
                  },
                  "functionSelector": "bd50c7b1",
                  "id": 1623,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tridentSwapCallback",
                  "nameLocation": "13542:19:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1568,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1567,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "13577:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1623,
                        "src": "13562:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1566,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "13562:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13561:21:4"
                  },
                  "returnParameters": {
                    "id": 1569,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13592:0:4"
                  },
                  "scope": 1892,
                  "src": "13533:619:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1706,
                    "nodeType": "Block",
                    "src": "14308:663:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1633,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 1630,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "14326:3:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 1631,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "14326:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 1632,
                                "name": "cachedPool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 685,
                                "src": "14340:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "14326:24:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "554e415554484f52495a45445f43414c4c4241434b",
                              "id": 1634,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14352:23:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c7794b7baa0098f77f3fbdd0bb4bf412ca5eba33792029833fad4b51094ad4d3",
                                "typeString": "literal_string \"UNAUTHORIZED_CALLBACK\""
                              },
                              "value": "UNAUTHORIZED_CALLBACK"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c7794b7baa0098f77f3fbdd0bb4bf412ca5eba33792029833fad4b51094ad4d3",
                                "typeString": "literal_string \"UNAUTHORIZED_CALLBACK\""
                              }
                            ],
                            "id": 1629,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "14318:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1635,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14318:58:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1636,
                        "nodeType": "ExpressionStatement",
                        "src": "14318:58:4"
                      },
                      {
                        "assignments": [
                          1641
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1641,
                            "mutability": "mutable",
                            "name": "tokenInput",
                            "nameLocation": "14406:10:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 1706,
                            "src": "14386:30:4",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct ITridentRouter.TokenInput[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1639,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 1638,
                                  "name": "TokenInput",
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 2530,
                                  "src": "14386:10:4"
                                },
                                "referencedDeclaration": 2530,
                                "src": "14386:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenInput_$2530_storage_ptr",
                                  "typeString": "struct ITridentRouter.TokenInput"
                                }
                              },
                              "id": 1640,
                              "nodeType": "ArrayTypeName",
                              "src": "14386:12:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_storage_$dyn_storage_ptr",
                                "typeString": "struct ITridentRouter.TokenInput[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1649,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1644,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1626,
                              "src": "14430:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "baseExpression": {
                                    "id": 1645,
                                    "name": "TokenInput",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2530,
                                    "src": "14437:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_TokenInput_$2530_storage_ptr_$",
                                      "typeString": "type(struct ITridentRouter.TokenInput storage pointer)"
                                    }
                                  },
                                  "id": 1646,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14437:12:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr_$",
                                    "typeString": "type(struct ITridentRouter.TokenInput memory[] memory)"
                                  }
                                }
                              ],
                              "id": 1647,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "14436:14:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "type(struct ITridentRouter.TokenInput memory[] memory)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_type$_t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "type(struct ITridentRouter.TokenInput memory[] memory)"
                              }
                            ],
                            "expression": {
                              "id": 1642,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "14419:3:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 1643,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "14419:10:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 1648,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14419:32:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct ITridentRouter.TokenInput memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14386:65:4"
                      },
                      {
                        "body": {
                          "id": 1697,
                          "nodeType": "Block",
                          "src": "14564:306:4",
                          "statements": [
                            {
                              "condition": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 1660,
                                    "name": "tokenInput",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1641,
                                    "src": "14582:10:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct ITridentRouter.TokenInput memory[] memory"
                                    }
                                  },
                                  "id": 1662,
                                  "indexExpression": {
                                    "id": 1661,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1651,
                                    "src": "14593:1:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14582:13:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                    "typeString": "struct ITridentRouter.TokenInput memory"
                                  }
                                },
                                "id": 1663,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "native",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2527,
                                "src": "14582:20:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 1695,
                                "nodeType": "Block",
                                "src": "14741:119:4",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "id": 1682,
                                              "name": "tokenInput",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1641,
                                              "src": "14774:10:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct ITridentRouter.TokenInput memory[] memory"
                                              }
                                            },
                                            "id": 1684,
                                            "indexExpression": {
                                              "id": 1683,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1651,
                                              "src": "14785:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "14774:13:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                              "typeString": "struct ITridentRouter.TokenInput memory"
                                            }
                                          },
                                          "id": 1685,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "token",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2525,
                                          "src": "14774:19:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 1686,
                                          "name": "cachedMsgSender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 683,
                                          "src": "14795:15:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 1687,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "14812:3:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 1688,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "src": "14812:10:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "id": 1689,
                                              "name": "tokenInput",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1641,
                                              "src": "14824:10:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct ITridentRouter.TokenInput memory[] memory"
                                              }
                                            },
                                            "id": 1691,
                                            "indexExpression": {
                                              "id": 1690,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1651,
                                              "src": "14835:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "14824:13:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                              "typeString": "struct ITridentRouter.TokenInput memory"
                                            }
                                          },
                                          "id": 1692,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "amount",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2529,
                                          "src": "14824:20:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 1679,
                                          "name": "bento",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23672,
                                          "src": "14759:5:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                            "typeString": "contract IBentoBoxMinimal"
                                          }
                                        },
                                        "id": 1681,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "transfer",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2227,
                                        "src": "14759:14:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,address,uint256) external"
                                        }
                                      },
                                      "id": 1693,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14759:86:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1694,
                                    "nodeType": "ExpressionStatement",
                                    "src": "14759:86:4"
                                  }
                                ]
                              },
                              "id": 1696,
                              "nodeType": "IfStatement",
                              "src": "14578:282:4",
                              "trueBody": {
                                "id": 1678,
                                "nodeType": "Block",
                                "src": "14604:131:4",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "id": 1665,
                                              "name": "tokenInput",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1641,
                                              "src": "14649:10:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct ITridentRouter.TokenInput memory[] memory"
                                              }
                                            },
                                            "id": 1667,
                                            "indexExpression": {
                                              "id": 1666,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1651,
                                              "src": "14660:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "14649:13:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                              "typeString": "struct ITridentRouter.TokenInput memory"
                                            }
                                          },
                                          "id": 1668,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "token",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2525,
                                          "src": "14649:19:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 1669,
                                          "name": "cachedMsgSender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 683,
                                          "src": "14670:15:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 1670,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "14687:3:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 1671,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "src": "14687:10:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "baseExpression": {
                                              "id": 1672,
                                              "name": "tokenInput",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1641,
                                              "src": "14699:10:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct ITridentRouter.TokenInput memory[] memory"
                                              }
                                            },
                                            "id": 1674,
                                            "indexExpression": {
                                              "id": 1673,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1651,
                                              "src": "14710:1:4",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "14699:13:4",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                              "typeString": "struct ITridentRouter.TokenInput memory"
                                            }
                                          },
                                          "id": 1675,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "amount",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2529,
                                          "src": "14699:20:4",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 1664,
                                        "name": "_depositFromUserToBentoBox",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1865,
                                        "src": "14622:26:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,address,uint256)"
                                        }
                                      },
                                      "id": 1676,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14622:98:4",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1677,
                                    "nodeType": "ExpressionStatement",
                                    "src": "14622:98:4"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1656,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1653,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1651,
                            "src": "14536:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 1654,
                              "name": "tokenInput",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1641,
                              "src": "14540:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct ITridentRouter.TokenInput memory[] memory"
                              }
                            },
                            "id": 1655,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "14540:17:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14536:21:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1698,
                        "initializationExpression": {
                          "assignments": [
                            1651
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1651,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "14533:1:4",
                              "nodeType": "VariableDeclaration",
                              "scope": 1698,
                              "src": "14525:9:4",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1650,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "14525:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1652,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "14525:9:4"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 1658,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "14559:3:4",
                            "subExpression": {
                              "id": 1657,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1651,
                              "src": "14559:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1659,
                          "nodeType": "ExpressionStatement",
                          "src": "14559:3:4"
                        },
                        "nodeType": "ForStatement",
                        "src": "14520:350:4"
                      },
                      {
                        "expression": {
                          "id": 1704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1699,
                            "name": "cachedMsgSender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 683,
                            "src": "14936:15:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "31",
                                "id": 1702,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14962:1:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "id": 1701,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14954:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1700,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "14954:7:4",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1703,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14954:10:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "14936:28:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1705,
                        "nodeType": "ExpressionStatement",
                        "src": "14936:28:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1624,
                    "nodeType": "StructuredDocumentation",
                    "src": "14158:86:4",
                    "text": "@notice Can be used by the pool 'mint' functionality to take tokens from the user."
                  },
                  "functionSelector": "ced10b49",
                  "id": 1707,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tridentMintCallback",
                  "nameLocation": "14258:19:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1627,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1626,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "14293:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1707,
                        "src": "14278:19:4",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1625,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "14278:5:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14277:21:4"
                  },
                  "returnParameters": {
                    "id": 1628,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14308:0:4"
                  },
                  "scope": 1892,
                  "src": "14249:722:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1729,
                    "nodeType": "Block",
                    "src": "15150:72:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1720,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1710,
                              "src": "15175:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 1723,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "15190:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_TridentRouter_$1892",
                                    "typeString": "contract TridentRouter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_TridentRouter_$1892",
                                    "typeString": "contract TridentRouter"
                                  }
                                ],
                                "id": 1722,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "15182:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1721,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "15182:7:4",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1724,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15182:13:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1725,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1714,
                              "src": "15197:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1726,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1712,
                              "src": "15208:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 1717,
                              "name": "bento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23672,
                              "src": "15160:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                "typeString": "contract IBentoBoxMinimal"
                              }
                            },
                            "id": 1719,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2227,
                            "src": "15160:14:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256) external"
                            }
                          },
                          "id": 1727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15160:55:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1728,
                        "nodeType": "ExpressionStatement",
                        "src": "15160:55:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1708,
                    "nodeType": "StructuredDocumentation",
                    "src": "14977:51:4",
                    "text": "@notice Recover mistakenly sent `bento` tokens."
                  },
                  "functionSelector": "9128efda",
                  "id": 1730,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sweepBentoBoxToken",
                  "nameLocation": "15042:18:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1715,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1710,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "15078:5:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1730,
                        "src": "15070:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1709,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15070:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1712,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "15101:6:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1730,
                        "src": "15093:14:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1711,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15093:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1714,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "15125:9:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1730,
                        "src": "15117:17:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1713,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15117:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15060:80:4"
                  },
                  "returnParameters": {
                    "id": 1716,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15150:0:4"
                  },
                  "scope": 1892,
                  "src": "15033:189:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1746,
                    "nodeType": "Block",
                    "src": "15398:55:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1741,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1733,
                              "src": "15421:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1742,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1737,
                              "src": "15428:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1743,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1735,
                              "src": "15439:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1740,
                            "name": "safeTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23966,
                            "src": "15408:12:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 1744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15408:38:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1745,
                        "nodeType": "ExpressionStatement",
                        "src": "15408:38:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1731,
                    "nodeType": "StructuredDocumentation",
                    "src": "15228:50:4",
                    "text": "@notice Recover mistakenly sent ERC-20 tokens."
                  },
                  "functionSelector": "94ae4ab2",
                  "id": 1747,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sweepNativeToken",
                  "nameLocation": "15292:16:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1738,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1733,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "15326:5:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1747,
                        "src": "15318:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1732,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15318:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1735,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "15349:6:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1747,
                        "src": "15341:14:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1734,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15341:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1737,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "15373:9:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1747,
                        "src": "15365:17:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1736,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15365:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15308:80:4"
                  },
                  "returnParameters": {
                    "id": 1739,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15398:0:4"
                  },
                  "scope": 1892,
                  "src": "15283:170:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1769,
                    "nodeType": "Block",
                    "src": "15542:99:4",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 1753,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "15564:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_TridentRouter_$1892",
                                    "typeString": "contract TridentRouter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_TridentRouter_$1892",
                                    "typeString": "contract TridentRouter"
                                  }
                                ],
                                "id": 1752,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "15556:7:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1751,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "15556:7:4",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15556:13:4",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 1755,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balance",
                            "nodeType": "MemberAccess",
                            "src": "15556:21:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1756,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15581:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "15556:26:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1768,
                        "nodeType": "IfStatement",
                        "src": "15552:82:4",
                        "trueBody": {
                          "expression": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 1759,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "15600:3:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 1760,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "15600:10:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 1763,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "15620:4:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_TridentRouter_$1892",
                                        "typeString": "contract TridentRouter"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_TridentRouter_$1892",
                                        "typeString": "contract TridentRouter"
                                      }
                                    ],
                                    "id": 1762,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "15612:7:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 1761,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "15612:7:4",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 1764,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "15612:13:4",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 1765,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balance",
                                "nodeType": "MemberAccess",
                                "src": "15612:21:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1758,
                              "name": "safeTransferETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24059,
                              "src": "15584:15:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                "typeString": "function (address,uint256)"
                              }
                            },
                            "id": 1766,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15584:50:4",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 1767,
                          "nodeType": "ExpressionStatement",
                          "src": "15584:50:4"
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1748,
                    "nodeType": "StructuredDocumentation",
                    "src": "15459:40:4",
                    "text": "@notice Recover mistakenly sent ETH."
                  },
                  "functionSelector": "12210e8a",
                  "id": 1770,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "refundETH",
                  "nameLocation": "15513:9:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1749,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15522:2:4"
                  },
                  "returnParameters": {
                    "id": 1750,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15542:0:4"
                  },
                  "scope": 1892,
                  "src": "15504:137:4",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1805,
                    "nodeType": "Block",
                    "src": "15773:264:4",
                    "statements": [
                      {
                        "assignments": [
                          1779
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1779,
                            "mutability": "mutable",
                            "name": "balanceWETH",
                            "nameLocation": "15791:11:4",
                            "nodeType": "VariableDeclaration",
                            "scope": 1805,
                            "src": "15783:19:4",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1778,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15783:7:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1783,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1781,
                              "name": "wETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23679,
                              "src": "15819:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1780,
                            "name": "balanceOfThis",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23922,
                            "src": "15805:13:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 1782,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15805:19:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15783:41:4"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1787,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1785,
                                "name": "balanceWETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1779,
                                "src": "15842:11:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 1786,
                                "name": "amountMinimum",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1773,
                                "src": "15857:13:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "15842:28:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e53554646494349454e545f57455448",
                              "id": 1788,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15872:19:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f532690656a5e61a759e1ffcd965f0329a3e96351a84493b6923cb9fbae96245",
                                "typeString": "literal_string \"INSUFFICIENT_WETH\""
                              },
                              "value": "INSUFFICIENT_WETH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f532690656a5e61a759e1ffcd965f0329a3e96351a84493b6923cb9fbae96245",
                                "typeString": "literal_string \"INSUFFICIENT_WETH\""
                              }
                            ],
                            "id": 1784,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "15834:7:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15834:58:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1790,
                        "nodeType": "ExpressionStatement",
                        "src": "15834:58:4"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1793,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1791,
                            "name": "balanceWETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1779,
                            "src": "15906:11:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 1792,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15921:1:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "15906:16:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1804,
                        "nodeType": "IfStatement",
                        "src": "15902:129:4",
                        "trueBody": {
                          "id": 1803,
                          "nodeType": "Block",
                          "src": "15924:107:4",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1795,
                                    "name": "balanceWETH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1779,
                                    "src": "15955:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1794,
                                  "name": "withdrawFromWETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24036,
                                  "src": "15938:16:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256)"
                                  }
                                },
                                "id": 1796,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15938:29:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1797,
                              "nodeType": "ExpressionStatement",
                              "src": "15938:29:4"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1799,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1775,
                                    "src": "15997:9:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1800,
                                    "name": "balanceWETH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1779,
                                    "src": "16008:11:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1798,
                                  "name": "safeTransferETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24059,
                                  "src": "15981:15:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 1801,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15981:39:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1802,
                              "nodeType": "ExpressionStatement",
                              "src": "15981:39:4"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1771,
                    "nodeType": "StructuredDocumentation",
                    "src": "15647:50:4",
                    "text": "@notice Unwrap this contract's `wETH` into ETH"
                  },
                  "functionSelector": "e16d9ce5",
                  "id": 1806,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "unwrapWETH",
                  "nameLocation": "15711:10:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1776,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1773,
                        "mutability": "mutable",
                        "name": "amountMinimum",
                        "nameLocation": "15730:13:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1806,
                        "src": "15722:21:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1772,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15722:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1775,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "15753:9:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1806,
                        "src": "15745:17:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1774,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15745:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15721:42:4"
                  },
                  "returnParameters": {
                    "id": 1777,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15773:0:4"
                  },
                  "scope": 1892,
                  "src": "15702:335:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1834,
                    "nodeType": "Block",
                    "src": "16317:114:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1826,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1809,
                              "src": "16384:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 1827,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "16391:3:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1828,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "16391:10:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1829,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1811,
                              "src": "16403:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1830,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1813,
                              "src": "16414:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 1831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16422:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "expression": {
                                "id": 1816,
                                "name": "bento",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23672,
                                "src": "16327:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                  "typeString": "contract IBentoBoxMinimal"
                                }
                              },
                              "id": 1818,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "deposit",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2197,
                              "src": "16327:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_payable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,address,address,uint256,uint256) payable external returns (uint256,uint256)"
                              }
                            },
                            "id": 1825,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 1821,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 1819,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1809,
                                    "src": "16348:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 1820,
                                    "name": "USE_ETHEREUM",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23686,
                                    "src": "16357:12:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "16348:21:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "hexValue": "30",
                                  "id": 1823,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16381:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "id": 1824,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "16348:34:4",
                                "trueExpression": {
                                  "id": 1822,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1813,
                                  "src": "16372:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "16327:56:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$value",
                              "typeString": "function (address,address,address,uint256,uint256) payable external returns (uint256,uint256)"
                            }
                          },
                          "id": 1832,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16327:97:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "id": 1833,
                        "nodeType": "ExpressionStatement",
                        "src": "16327:97:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1807,
                    "nodeType": "StructuredDocumentation",
                    "src": "16043:152:4",
                    "text": "@notice Deposit from the user's wallet into BentoBox.\n @dev Amount is the native token amount. We let BentoBox do the conversion into shares."
                  },
                  "id": 1835,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_depositToBentoBox",
                  "nameLocation": "16209:18:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1814,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1809,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "16245:5:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1835,
                        "src": "16237:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1808,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16237:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1811,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "16268:9:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1835,
                        "src": "16260:17:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1810,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16260:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1813,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "16295:6:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1835,
                        "src": "16287:14:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1812,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16287:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16227:80:4"
                  },
                  "returnParameters": {
                    "id": 1815,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16317:0:4"
                  },
                  "scope": 1892,
                  "src": "16200:231:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1864,
                    "nodeType": "Block",
                    "src": "16667:110:4",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1857,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1838,
                              "src": "16734:5:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1858,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1840,
                              "src": "16741:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1859,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1842,
                              "src": "16749:9:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1860,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1844,
                              "src": "16760:6:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 1861,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16768:1:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "expression": {
                                "id": 1847,
                                "name": "bento",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23672,
                                "src": "16677:5:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                  "typeString": "contract IBentoBoxMinimal"
                                }
                              },
                              "id": 1849,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "deposit",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2197,
                              "src": "16677:13:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_payable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,address,address,uint256,uint256) payable external returns (uint256,uint256)"
                              }
                            },
                            "id": 1856,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 1852,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 1850,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1838,
                                    "src": "16698:5:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 1851,
                                    "name": "USE_ETHEREUM",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23686,
                                    "src": "16707:12:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "16698:21:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "hexValue": "30",
                                  "id": 1854,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16731:1:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "id": 1855,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "16698:34:4",
                                "trueExpression": {
                                  "id": 1853,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1844,
                                  "src": "16722:6:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "16677:56:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$value",
                              "typeString": "function (address,address,address,uint256,uint256) payable external returns (uint256,uint256)"
                            }
                          },
                          "id": 1862,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16677:93:4",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "id": 1863,
                        "nodeType": "ExpressionStatement",
                        "src": "16677:93:4"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1836,
                    "nodeType": "StructuredDocumentation",
                    "src": "16437:76:4",
                    "text": "@notice Same effect as _depositToBentoBox() but with a sender parameter."
                  },
                  "id": 1865,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_depositFromUserToBentoBox",
                  "nameLocation": "16527:26:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1845,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1838,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "16571:5:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1865,
                        "src": "16563:13:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1837,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16563:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1840,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "16594:6:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1865,
                        "src": "16586:14:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1839,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16586:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1842,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "16618:9:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1865,
                        "src": "16610:17:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1841,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16610:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1844,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "16645:6:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1865,
                        "src": "16637:14:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1843,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16637:7:4",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16553:104:4"
                  },
                  "returnParameters": {
                    "id": 1846,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16667:0:4"
                  },
                  "scope": 1892,
                  "src": "16518:259:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1890,
                    "nodeType": "Block",
                    "src": "16829:164:4",
                    "statements": [
                      {
                        "condition": {
                          "id": 1873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "16843:23:4",
                          "subExpression": {
                            "baseExpression": {
                              "id": 1870,
                              "name": "whitelistedPools",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 689,
                              "src": "16844:16:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 1872,
                            "indexExpression": {
                              "id": 1871,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1867,
                              "src": "16861:4:4",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "16844:22:4",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1889,
                        "nodeType": "IfStatement",
                        "src": "16839:148:4",
                        "trueBody": {
                          "id": 1888,
                          "nodeType": "Block",
                          "src": "16868:119:4",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 1877,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1867,
                                        "src": "16911:4:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "id": 1875,
                                        "name": "masterDeployer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23676,
                                        "src": "16890:14:4",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                          "typeString": "contract IMasterDeployer"
                                        }
                                      },
                                      "id": 1876,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "pools",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2346,
                                      "src": "16890:20:4",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                                        "typeString": "function (address) view external returns (bool)"
                                      }
                                    },
                                    "id": 1878,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16890:26:4",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e56414c494420504f4f4c",
                                    "id": 1879,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16918:14:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_a3ad46e55234c5408e3a1ea5ffe5dc518659762aab3470916c3f62b1468b09f3",
                                      "typeString": "literal_string \"INVALID POOL\""
                                    },
                                    "value": "INVALID POOL"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_a3ad46e55234c5408e3a1ea5ffe5dc518659762aab3470916c3f62b1468b09f3",
                                      "typeString": "literal_string \"INVALID POOL\""
                                    }
                                  ],
                                  "id": 1874,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "16882:7:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 1880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16882:51:4",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1881,
                              "nodeType": "ExpressionStatement",
                              "src": "16882:51:4"
                            },
                            {
                              "expression": {
                                "id": 1886,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1882,
                                    "name": "whitelistedPools",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 689,
                                    "src": "16947:16:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                      "typeString": "mapping(address => bool)"
                                    }
                                  },
                                  "id": 1884,
                                  "indexExpression": {
                                    "id": 1883,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1867,
                                    "src": "16964:4:4",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "16947:22:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "74727565",
                                  "id": 1885,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16972:4:4",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "16947:29:4",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1887,
                              "nodeType": "ExpressionStatement",
                              "src": "16947:29:4"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 1891,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isWhiteListed",
                  "nameLocation": "16792:13:4",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1868,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1867,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "16814:4:4",
                        "nodeType": "VariableDeclaration",
                        "scope": 1891,
                        "src": "16806:12:4",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1866,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16806:7:4",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16805:14:4"
                  },
                  "returnParameters": {
                    "id": 1869,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16829:0:4"
                  },
                  "scope": 1892,
                  "src": "16783:210:4",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 1893,
              "src": "256:16739:4",
              "usedErrors": [
                24283
              ]
            }
          ],
          "src": "46:16950:4"
        },
        "id": 4
      },
      "contracts/deployer/MasterDeployer.sol": {
        "ast": {
          "absolutePath": "contracts/deployer/MasterDeployer.sol",
          "exportedSymbols": {
            "IPoolFactory": [
              2468
            ],
            "MasterDeployer": [
              2083
            ],
            "TridentOwnable": [
              24278
            ]
          },
          "id": 2084,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1894,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:5"
            },
            {
              "absolutePath": "contracts/interfaces/IPoolFactory.sol",
              "file": "../interfaces/IPoolFactory.sol",
              "id": 1895,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2084,
              "sourceUnit": 2469,
              "src": "72:40:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/utils/TridentOwnable.sol",
              "file": "../utils/TridentOwnable.sol",
              "id": 1896,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2084,
              "sourceUnit": 24279,
              "src": "113:37:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1898,
                    "name": "TridentOwnable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 24278,
                    "src": "280:14:5"
                  },
                  "id": 1899,
                  "nodeType": "InheritanceSpecifier",
                  "src": "280:14:5"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 1897,
                "nodeType": "StructuredDocumentation",
                "src": "152:101:5",
                "text": "@notice Trident pool deployer contract with template factory whitelist.\n @author Mudit Gupta."
              },
              "fullyImplemented": true,
              "id": 2083,
              "linearizedBaseContracts": [
                2083,
                24278
              ],
              "name": "MasterDeployer",
              "nameLocation": "262:14:5",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 1907,
                  "name": "DeployPool",
                  "nameLocation": "307:10:5",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1906,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1901,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "factory",
                        "nameLocation": "334:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1907,
                        "src": "318:23:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1900,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "318:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1903,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "359:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1907,
                        "src": "343:20:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1902,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "343:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1905,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "deployData",
                        "nameLocation": "371:10:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1907,
                        "src": "365:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1904,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "365:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "317:65:5"
                  },
                  "src": "301:82:5"
                },
                {
                  "anonymous": false,
                  "id": 1911,
                  "name": "AddToWhitelist",
                  "nameLocation": "394:14:5",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1910,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1909,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "factory",
                        "nameLocation": "425:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1911,
                        "src": "409:23:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1908,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "409:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "408:25:5"
                  },
                  "src": "388:46:5"
                },
                {
                  "anonymous": false,
                  "id": 1915,
                  "name": "RemoveFromWhitelist",
                  "nameLocation": "445:19:5",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1914,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1913,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "factory",
                        "nameLocation": "481:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1915,
                        "src": "465:23:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1912,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "465:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "464:25:5"
                  },
                  "src": "439:51:5"
                },
                {
                  "anonymous": false,
                  "id": 1919,
                  "name": "BarFeeUpdated",
                  "nameLocation": "501:13:5",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1918,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1917,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "barFee",
                        "nameLocation": "531:6:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1919,
                        "src": "515:22:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1916,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "515:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "514:24:5"
                  },
                  "src": "495:44:5"
                },
                {
                  "constant": false,
                  "functionSelector": "c14ad802",
                  "id": 1921,
                  "mutability": "mutable",
                  "name": "barFee",
                  "nameLocation": "560:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 2083,
                  "src": "545:21:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1920,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "545:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "0c0a0cd2",
                  "id": 1923,
                  "mutability": "immutable",
                  "name": "barFeeTo",
                  "nameLocation": "597:8:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 2083,
                  "src": "572:33:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1922,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "572:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "4da31827",
                  "id": 1925,
                  "mutability": "immutable",
                  "name": "bento",
                  "nameLocation": "636:5:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 2083,
                  "src": "611:30:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1924,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "611:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 1928,
                  "mutability": "constant",
                  "name": "MAX_FEE",
                  "nameLocation": "674:7:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 2083,
                  "src": "648:41:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1926,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "648:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3130303030",
                    "id": 1927,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "684:5:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_10000_by_1",
                      "typeString": "int_const 10000"
                    },
                    "value": "10000"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "a4063dbc",
                  "id": 1932,
                  "mutability": "mutable",
                  "name": "pools",
                  "nameLocation": "742:5:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 2083,
                  "src": "710:37:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 1931,
                    "keyType": {
                      "id": 1929,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "718:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "710:24:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 1930,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "729:4:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "6f50f2f4",
                  "id": 1936,
                  "mutability": "mutable",
                  "name": "whitelistedFactories",
                  "nameLocation": "785:20:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 2083,
                  "src": "753:52:5",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 1935,
                    "keyType": {
                      "id": 1933,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "761:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "753:24:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 1934,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "772:4:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1984,
                    "nodeType": "Block",
                    "src": "906:257:5",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1948,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1946,
                                "name": "_barFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1938,
                                "src": "924:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 1947,
                                "name": "MAX_FEE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1928,
                                "src": "935:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "924:18:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f4241525f464545",
                              "id": 1949,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "944:17:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d5c7d8863c3c0231b265d172800e2327315aef4f1b18645c8dd3c9706f4ad28c",
                                "typeString": "literal_string \"INVALID_BAR_FEE\""
                              },
                              "value": "INVALID_BAR_FEE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d5c7d8863c3c0231b265d172800e2327315aef4f1b18645c8dd3c9706f4ad28c",
                                "typeString": "literal_string \"INVALID_BAR_FEE\""
                              }
                            ],
                            "id": 1945,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "916:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "916:46:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1951,
                        "nodeType": "ExpressionStatement",
                        "src": "916:46:5"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1958,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1953,
                                "name": "_barFeeTo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1940,
                                "src": "980:9:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1956,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1001:1:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1955,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "993:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1954,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "993:7:5",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1957,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "993:10:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "980:23:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5a45524f5f41444452455353",
                              "id": 1959,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1005:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af",
                                "typeString": "literal_string \"ZERO_ADDRESS\""
                              },
                              "value": "ZERO_ADDRESS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af",
                                "typeString": "literal_string \"ZERO_ADDRESS\""
                              }
                            ],
                            "id": 1952,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "972:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "972:48:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1961,
                        "nodeType": "ExpressionStatement",
                        "src": "972:48:5"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1968,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1963,
                                "name": "_bento",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1942,
                                "src": "1038:6:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 1966,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1056:1:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1965,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1048:7:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1964,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1048:7:5",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1967,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1048:10:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1038:20:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5a45524f5f41444452455353",
                              "id": 1969,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1060:14:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af",
                                "typeString": "literal_string \"ZERO_ADDRESS\""
                              },
                              "value": "ZERO_ADDRESS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af",
                                "typeString": "literal_string \"ZERO_ADDRESS\""
                              }
                            ],
                            "id": 1962,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1030:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1030:45:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1971,
                        "nodeType": "ExpressionStatement",
                        "src": "1030:45:5"
                      },
                      {
                        "expression": {
                          "id": 1974,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1972,
                            "name": "barFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1921,
                            "src": "1086:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1973,
                            "name": "_barFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1938,
                            "src": "1095:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1086:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1975,
                        "nodeType": "ExpressionStatement",
                        "src": "1086:16:5"
                      },
                      {
                        "expression": {
                          "id": 1978,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1976,
                            "name": "barFeeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1923,
                            "src": "1112:8:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1977,
                            "name": "_barFeeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1940,
                            "src": "1123:9:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1112:20:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1979,
                        "nodeType": "ExpressionStatement",
                        "src": "1112:20:5"
                      },
                      {
                        "expression": {
                          "id": 1982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1980,
                            "name": "bento",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1925,
                            "src": "1142:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1981,
                            "name": "_bento",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1942,
                            "src": "1150:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1142:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1983,
                        "nodeType": "ExpressionStatement",
                        "src": "1142:14:5"
                      }
                    ]
                  },
                  "id": 1985,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1943,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1938,
                        "mutability": "mutable",
                        "name": "_barFee",
                        "nameLocation": "841:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1985,
                        "src": "833:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1937,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "833:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1940,
                        "mutability": "mutable",
                        "name": "_barFeeTo",
                        "nameLocation": "866:9:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1985,
                        "src": "858:17:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1939,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "858:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1942,
                        "mutability": "mutable",
                        "name": "_bento",
                        "nameLocation": "893:6:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 1985,
                        "src": "885:14:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1941,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "885:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "823:82:5"
                  },
                  "returnParameters": {
                    "id": 1944,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "906:0:5"
                  },
                  "scope": 2083,
                  "src": "812:351:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2022,
                    "nodeType": "Block",
                    "src": "1267:228:5",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 1995,
                                "name": "whitelistedFactories",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1936,
                                "src": "1285:20:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                  "typeString": "mapping(address => bool)"
                                }
                              },
                              "id": 1997,
                              "indexExpression": {
                                "id": 1996,
                                "name": "_factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1987,
                                "src": "1306:8:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1285:30:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "464143544f52595f4e4f545f57484954454c4953544544",
                              "id": 1998,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1317:25:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e4f431322dced3979cf760005b59cdb50932daff64433898c9b3f2f2d702dd3a",
                                "typeString": "literal_string \"FACTORY_NOT_WHITELISTED\""
                              },
                              "value": "FACTORY_NOT_WHITELISTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e4f431322dced3979cf760005b59cdb50932daff64433898c9b3f2f2d702dd3a",
                                "typeString": "literal_string \"FACTORY_NOT_WHITELISTED\""
                              }
                            ],
                            "id": 1994,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1277:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1277:66:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2000,
                        "nodeType": "ExpressionStatement",
                        "src": "1277:66:5"
                      },
                      {
                        "expression": {
                          "id": 2008,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2001,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1992,
                            "src": "1353:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 2006,
                                "name": "_deployData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1989,
                                "src": "1394:11:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2003,
                                    "name": "_factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1987,
                                    "src": "1373:8:5",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2002,
                                  "name": "IPoolFactory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2468,
                                  "src": "1360:12:5",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IPoolFactory_$2468_$",
                                    "typeString": "type(contract IPoolFactory)"
                                  }
                                },
                                "id": 2004,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1360:22:5",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                                  "typeString": "contract IPoolFactory"
                                }
                              },
                              "id": 2005,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "deployPool",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2460,
                              "src": "1360:33:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$",
                                "typeString": "function (bytes memory) external returns (address)"
                              }
                            },
                            "id": 2007,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1360:46:5",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1353:53:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2009,
                        "nodeType": "ExpressionStatement",
                        "src": "1353:53:5"
                      },
                      {
                        "expression": {
                          "id": 2014,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2010,
                              "name": "pools",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1932,
                              "src": "1416:5:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 2012,
                            "indexExpression": {
                              "id": 2011,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1992,
                              "src": "1422:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1416:11:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 2013,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1430:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1416:18:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2015,
                        "nodeType": "ExpressionStatement",
                        "src": "1416:18:5"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2017,
                              "name": "_factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1987,
                              "src": "1460:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2018,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1992,
                              "src": "1470:4:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2019,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1989,
                              "src": "1476:11:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 2016,
                            "name": "DeployPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1907,
                            "src": "1449:10:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,bytes memory)"
                            }
                          },
                          "id": 2020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1449:39:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2021,
                        "nodeType": "EmitStatement",
                        "src": "1444:44:5"
                      }
                    ]
                  },
                  "functionSelector": "250558dc",
                  "id": 2023,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deployPool",
                  "nameLocation": "1178:10:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1990,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1987,
                        "mutability": "mutable",
                        "name": "_factory",
                        "nameLocation": "1197:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 2023,
                        "src": "1189:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1986,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1189:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1989,
                        "mutability": "mutable",
                        "name": "_deployData",
                        "nameLocation": "1222:11:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 2023,
                        "src": "1207:26:5",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1988,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1207:5:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1188:46:5"
                  },
                  "returnParameters": {
                    "id": 1993,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1992,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "1261:4:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 2023,
                        "src": "1253:12:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1991,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1253:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1252:14:5"
                  },
                  "scope": 2083,
                  "src": "1169:326:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2040,
                    "nodeType": "Block",
                    "src": "1562:93:5",
                    "statements": [
                      {
                        "expression": {
                          "id": 2034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2030,
                              "name": "whitelistedFactories",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1936,
                              "src": "1572:20:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 2032,
                            "indexExpression": {
                              "id": 2031,
                              "name": "_factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2025,
                              "src": "1593:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1572:30:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 2033,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1605:4:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1572:37:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2035,
                        "nodeType": "ExpressionStatement",
                        "src": "1572:37:5"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2037,
                              "name": "_factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2025,
                              "src": "1639:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2036,
                            "name": "AddToWhitelist",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1911,
                            "src": "1624:14:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 2038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1624:24:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2039,
                        "nodeType": "EmitStatement",
                        "src": "1619:29:5"
                      }
                    ]
                  },
                  "functionSelector": "e43252d7",
                  "id": 2041,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 2028,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 2027,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 24201,
                        "src": "1552:9:5"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1552:9:5"
                    }
                  ],
                  "name": "addToWhitelist",
                  "nameLocation": "1510:14:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2026,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2025,
                        "mutability": "mutable",
                        "name": "_factory",
                        "nameLocation": "1533:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 2041,
                        "src": "1525:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2024,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1525:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1524:18:5"
                  },
                  "returnParameters": {
                    "id": 2029,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1562:0:5"
                  },
                  "scope": 2083,
                  "src": "1501:154:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2058,
                    "nodeType": "Block",
                    "src": "1727:99:5",
                    "statements": [
                      {
                        "expression": {
                          "id": 2052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 2048,
                              "name": "whitelistedFactories",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1936,
                              "src": "1737:20:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 2050,
                            "indexExpression": {
                              "id": 2049,
                              "name": "_factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2043,
                              "src": "1758:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1737:30:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "66616c7365",
                            "id": 2051,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1770:5:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "1737:38:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2053,
                        "nodeType": "ExpressionStatement",
                        "src": "1737:38:5"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2055,
                              "name": "_factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2043,
                              "src": "1810:8:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2054,
                            "name": "RemoveFromWhitelist",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1915,
                            "src": "1790:19:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 2056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1790:29:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2057,
                        "nodeType": "EmitStatement",
                        "src": "1785:34:5"
                      }
                    ]
                  },
                  "functionSelector": "8ab1d681",
                  "id": 2059,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 2046,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 2045,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 24201,
                        "src": "1717:9:5"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1717:9:5"
                    }
                  ],
                  "name": "removeFromWhitelist",
                  "nameLocation": "1670:19:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2044,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2043,
                        "mutability": "mutable",
                        "name": "_factory",
                        "nameLocation": "1698:8:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 2059,
                        "src": "1690:16:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2042,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1690:7:5",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1689:18:5"
                  },
                  "returnParameters": {
                    "id": 2047,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1727:0:5"
                  },
                  "scope": 2083,
                  "src": "1661:165:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2081,
                    "nodeType": "Block",
                    "src": "1887:126:5",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2069,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2067,
                                "name": "_barFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2061,
                                "src": "1905:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 2068,
                                "name": "MAX_FEE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1928,
                                "src": "1916:7:5",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1905:18:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f4241525f464545",
                              "id": 2070,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1925:17:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d5c7d8863c3c0231b265d172800e2327315aef4f1b18645c8dd3c9706f4ad28c",
                                "typeString": "literal_string \"INVALID_BAR_FEE\""
                              },
                              "value": "INVALID_BAR_FEE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d5c7d8863c3c0231b265d172800e2327315aef4f1b18645c8dd3c9706f4ad28c",
                                "typeString": "literal_string \"INVALID_BAR_FEE\""
                              }
                            ],
                            "id": 2066,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1897:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1897:46:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2072,
                        "nodeType": "ExpressionStatement",
                        "src": "1897:46:5"
                      },
                      {
                        "expression": {
                          "id": 2075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2073,
                            "name": "barFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1921,
                            "src": "1953:6:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2074,
                            "name": "_barFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2061,
                            "src": "1962:7:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1953:16:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2076,
                        "nodeType": "ExpressionStatement",
                        "src": "1953:16:5"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2078,
                              "name": "_barFee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2061,
                              "src": "1998:7:5",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2077,
                            "name": "BarFeeUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1919,
                            "src": "1984:13:5",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 2079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1984:22:5",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2080,
                        "nodeType": "EmitStatement",
                        "src": "1979:27:5"
                      }
                    ]
                  },
                  "functionSelector": "06e22d12",
                  "id": 2082,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 2064,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 2063,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 24201,
                        "src": "1877:9:5"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1877:9:5"
                    }
                  ],
                  "name": "setBarFee",
                  "nameLocation": "1841:9:5",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2062,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2061,
                        "mutability": "mutable",
                        "name": "_barFee",
                        "nameLocation": "1859:7:5",
                        "nodeType": "VariableDeclaration",
                        "scope": 2082,
                        "src": "1851:15:5",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2060,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1851:7:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1850:17:5"
                  },
                  "returnParameters": {
                    "id": 2065,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1887:0:5"
                  },
                  "scope": 2083,
                  "src": "1832:181:5",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2084,
              "src": "253:1762:5",
              "usedErrors": []
            }
          ],
          "src": "46:1970:5"
        },
        "id": 5
      },
      "contracts/examples/PoolFactory.sol": {
        "ast": {
          "absolutePath": "contracts/examples/PoolFactory.sol",
          "exportedSymbols": {
            "IPoolFactory": [
              2468
            ],
            "PoolFactory": [
              2109
            ],
            "PoolTemplate": [
              2137
            ]
          },
          "id": 2110,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2085,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".2"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:23:6"
            },
            {
              "absolutePath": "contracts/interfaces/IPoolFactory.sol",
              "file": "../interfaces/IPoolFactory.sol",
              "id": 2086,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2110,
              "sourceUnit": 2469,
              "src": "71:40:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/examples/PoolTemplate.sol",
              "file": "./PoolTemplate.sol",
              "id": 2087,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2110,
              "sourceUnit": 2138,
              "src": "113:28:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2089,
                    "name": "IPoolFactory",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2468,
                    "src": "207:12:6"
                  },
                  "id": 2090,
                  "nodeType": "InheritanceSpecifier",
                  "src": "207:12:6"
                }
              ],
              "contractDependencies": [
                2137
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 2088,
                "nodeType": "StructuredDocumentation",
                "src": "143:30:6",
                "text": " @author Mudit Gupta"
              },
              "fullyImplemented": false,
              "id": 2109,
              "linearizedBaseContracts": [
                2109,
                2468
              ],
              "name": "PoolFactory",
              "nameLocation": "192:11:6",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    2460
                  ],
                  "body": {
                    "id": 2107,
                    "nodeType": "Block",
                    "src": "398:62:6",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2103,
                                  "name": "_deployData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2092,
                                  "src": "440:11:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 2102,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "423:16:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_creation_nonpayable$_t_bytes_memory_ptr_$returns$_t_contract$_PoolTemplate_$2137_$",
                                  "typeString": "function (bytes memory) returns (contract PoolTemplate)"
                                },
                                "typeName": {
                                  "id": 2101,
                                  "nodeType": "UserDefinedTypeName",
                                  "pathNode": {
                                    "id": 2100,
                                    "name": "PoolTemplate",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2137,
                                    "src": "427:12:6"
                                  },
                                  "referencedDeclaration": 2137,
                                  "src": "427:12:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_PoolTemplate_$2137",
                                    "typeString": "contract PoolTemplate"
                                  }
                                }
                              },
                              "id": 2104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "423:29:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_PoolTemplate_$2137",
                                "typeString": "contract PoolTemplate"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_PoolTemplate_$2137",
                                "typeString": "contract PoolTemplate"
                              }
                            ],
                            "id": 2099,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "415:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2098,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "415:7:6",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "415:38:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 2097,
                        "id": 2106,
                        "nodeType": "Return",
                        "src": "408:45:6"
                      }
                    ]
                  },
                  "functionSelector": "27c3cae1",
                  "id": 2108,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deployPool",
                  "nameLocation": "325:10:6",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2094,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "371:8:6"
                  },
                  "parameters": {
                    "id": 2093,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2092,
                        "mutability": "mutable",
                        "name": "_deployData",
                        "nameLocation": "349:11:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 2108,
                        "src": "336:24:6",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2091,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "336:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "335:26:6"
                  },
                  "returnParameters": {
                    "id": 2097,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2096,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2108,
                        "src": "389:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2095,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "389:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "388:9:6"
                  },
                  "scope": 2109,
                  "src": "316:144:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2110,
              "src": "174:288:6",
              "usedErrors": []
            }
          ],
          "src": "46:417:6"
        },
        "id": 6
      },
      "contracts/examples/PoolTemplate.sol": {
        "ast": {
          "absolutePath": "contracts/examples/PoolTemplate.sol",
          "exportedSymbols": {
            "PoolTemplate": [
              2137
            ]
          },
          "id": 2138,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2111,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".2"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:23:7"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2112,
                "nodeType": "StructuredDocumentation",
                "src": "71:30:7",
                "text": " @author Mudit Gupta"
              },
              "fullyImplemented": true,
              "id": 2137,
              "linearizedBaseContracts": [
                2137
              ],
              "name": "PoolTemplate",
              "nameLocation": "111:12:7",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "functionSelector": "006c51be",
                  "id": 2114,
                  "mutability": "immutable",
                  "name": "configValue",
                  "nameLocation": "155:11:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 2137,
                  "src": "130:36:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2113,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "130:7:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "073d911f",
                  "id": 2116,
                  "mutability": "immutable",
                  "name": "anotherConfigValue",
                  "nameLocation": "197:18:7",
                  "nodeType": "VariableDeclaration",
                  "scope": 2137,
                  "src": "172:43:7",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2115,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "172:7:7",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2135,
                    "nodeType": "Block",
                    "src": "254:90:7",
                    "statements": [
                      {
                        "expression": {
                          "id": 2133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 2121,
                                "name": "configValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2114,
                                "src": "265:11:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 2122,
                                "name": "anotherConfigValue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2116,
                                "src": "278:18:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "id": 2123,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "264:33:7",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_address_$",
                              "typeString": "tuple(uint256,address)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 2126,
                                "name": "_data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2118,
                                "src": "311:5:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 2128,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "319:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 2127,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "319:7:7",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  {
                                    "id": 2130,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "328:7:7",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 2129,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "328:7:7",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 2131,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "318:18:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_address_$_$",
                                  "typeString": "tuple(type(uint256),type(address))"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_address_$_$",
                                  "typeString": "tuple(type(uint256),type(address))"
                                }
                              ],
                              "expression": {
                                "id": 2124,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "300:3:7",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 2125,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "300:10:7",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 2132,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "300:37:7",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_address_payable_$",
                              "typeString": "tuple(uint256,address payable)"
                            }
                          },
                          "src": "264:73:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2134,
                        "nodeType": "ExpressionStatement",
                        "src": "264:73:7"
                      }
                    ]
                  },
                  "id": 2136,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2119,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2118,
                        "mutability": "mutable",
                        "name": "_data",
                        "nameLocation": "247:5:7",
                        "nodeType": "VariableDeclaration",
                        "scope": 2136,
                        "src": "234:18:7",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2117,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "234:5:7",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "233:20:7"
                  },
                  "returnParameters": {
                    "id": 2120,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "254:0:7"
                  },
                  "scope": 2137,
                  "src": "222:122:7",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 2138,
              "src": "102:244:7",
              "usedErrors": []
            }
          ],
          "src": "46:301:7"
        },
        "id": 7
      },
      "contracts/interfaces/IBentoBoxMinimal.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IBentoBoxMinimal.sol",
          "exportedSymbols": {
            "IBentoBoxMinimal": [
              2253
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ]
          },
          "id": 2254,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2139,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:8"
            },
            {
              "absolutePath": "contracts/libraries/RebaseLibrary.sol",
              "file": "../libraries/RebaseLibrary.sol",
              "id": 2140,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2254,
              "sourceUnit": 2930,
              "src": "71:40:8",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2141,
                "nodeType": "StructuredDocumentation",
                "src": "113:117:8",
                "text": "@notice Minimal BentoBox vault interface.\n @dev `token` is aliased as `address` from `IERC20` for simplicity."
              },
              "fullyImplemented": false,
              "id": 2253,
              "linearizedBaseContracts": [
                2253
              ],
              "name": "IBentoBoxMinimal",
              "nameLocation": "240:16:8",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2142,
                    "nodeType": "StructuredDocumentation",
                    "src": "263:59:8",
                    "text": "@notice Balance per ERC-20 token per account in shares."
                  },
                  "functionSelector": "f7888aec",
                  "id": 2151,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "336:9:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2147,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2144,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2151,
                        "src": "346:7:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2143,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "346:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2146,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2151,
                        "src": "355:7:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2145,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "355:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "345:18:8"
                  },
                  "returnParameters": {
                    "id": 2150,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2149,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2151,
                        "src": "387:7:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2148,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "387:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "386:9:8"
                  },
                  "scope": 2253,
                  "src": "327:69:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2152,
                    "nodeType": "StructuredDocumentation",
                    "src": "402:281:8",
                    "text": "@dev Helper function to represent an `amount` of `token` in shares.\n @param token The ERC-20 token.\n @param amount The `token` amount.\n @param roundUp If the result `share` should be rounded up.\n @return share The token amount represented in shares."
                  },
                  "functionSelector": "da5139ca",
                  "id": 2163,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toShare",
                  "nameLocation": "697:7:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2159,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2154,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "722:5:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2163,
                        "src": "714:13:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2153,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "714:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2156,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "745:6:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2163,
                        "src": "737:14:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2155,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "737:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2158,
                        "mutability": "mutable",
                        "name": "roundUp",
                        "nameLocation": "766:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2163,
                        "src": "761:12:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2157,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "761:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "704:75:8"
                  },
                  "returnParameters": {
                    "id": 2162,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2161,
                        "mutability": "mutable",
                        "name": "share",
                        "nameLocation": "811:5:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2163,
                        "src": "803:13:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2160,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "803:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "802:15:8"
                  },
                  "scope": 2253,
                  "src": "688:130:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2164,
                    "nodeType": "StructuredDocumentation",
                    "src": "824:288:8",
                    "text": "@dev Helper function to represent shares back into the `token` amount.\n @param token The ERC-20 token.\n @param share The amount of shares.\n @param roundUp If the result should be rounded up.\n @return amount The share amount back into native representation."
                  },
                  "functionSelector": "56623118",
                  "id": 2175,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toAmount",
                  "nameLocation": "1126:8:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2171,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2166,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "1152:5:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2175,
                        "src": "1144:13:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2165,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1144:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2168,
                        "mutability": "mutable",
                        "name": "share",
                        "nameLocation": "1175:5:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2175,
                        "src": "1167:13:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2167,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1167:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2170,
                        "mutability": "mutable",
                        "name": "roundUp",
                        "nameLocation": "1195:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2175,
                        "src": "1190:12:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2169,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1190:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1134:74:8"
                  },
                  "returnParameters": {
                    "id": 2174,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2173,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1240:6:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2175,
                        "src": "1232:14:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2172,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1232:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1231:16:8"
                  },
                  "scope": 2253,
                  "src": "1117:131:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2176,
                    "nodeType": "StructuredDocumentation",
                    "src": "1254:78:8",
                    "text": "@notice Registers this contract so that users can approve it for BentoBox."
                  },
                  "functionSelector": "aee4d1b2",
                  "id": 2179,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "registerProtocol",
                  "nameLocation": "1346:16:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2177,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1362:2:8"
                  },
                  "returnParameters": {
                    "id": 2178,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1373:0:8"
                  },
                  "scope": 2253,
                  "src": "1337:37:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2180,
                    "nodeType": "StructuredDocumentation",
                    "src": "1380:528:8",
                    "text": "@notice Deposit an amount of `token` represented in either `amount` or `share`.\n @param token The ERC-20 token to deposit.\n @param from which account to pull the tokens.\n @param to which account to push the tokens.\n @param amount Token amount in native representation to deposit.\n @param share Token amount represented in shares to deposit. Takes precedence over `amount`.\n @return amountOut The amount deposited.\n @return shareOut The deposited amount represented in shares."
                  },
                  "functionSelector": "02b9446c",
                  "id": 2197,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nameLocation": "1922:7:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2191,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2182,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "1947:5:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2197,
                        "src": "1939:13:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2181,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1939:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2184,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "1970:4:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2197,
                        "src": "1962:12:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2183,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1962:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2186,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "1992:2:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2197,
                        "src": "1984:10:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2185,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1984:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2188,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2012:6:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2197,
                        "src": "2004:14:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2187,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2004:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2190,
                        "mutability": "mutable",
                        "name": "share",
                        "nameLocation": "2036:5:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2197,
                        "src": "2028:13:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2189,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2028:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1929:118:8"
                  },
                  "returnParameters": {
                    "id": 2196,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2193,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "2082:9:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2197,
                        "src": "2074:17:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2192,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2074:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2195,
                        "mutability": "mutable",
                        "name": "shareOut",
                        "nameLocation": "2101:8:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2197,
                        "src": "2093:16:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2194,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2093:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2073:37:8"
                  },
                  "scope": 2253,
                  "src": "1913:198:8",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2198,
                    "nodeType": "StructuredDocumentation",
                    "src": "2117:381:8",
                    "text": "@notice Withdraws an amount of `token` from a user account.\n @param token_ The ERC-20 token to withdraw.\n @param from which user to pull the tokens.\n @param to which user to push the tokens.\n @param amount of tokens. Either one of `amount` or `share` needs to be supplied.\n @param share Like above, but `share` takes precedence over `amount`."
                  },
                  "functionSelector": "97da6d30",
                  "id": 2215,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nameLocation": "2512:8:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2209,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2200,
                        "mutability": "mutable",
                        "name": "token_",
                        "nameLocation": "2538:6:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2215,
                        "src": "2530:14:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2199,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2530:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2202,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2562:4:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2215,
                        "src": "2554:12:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2201,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2554:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2204,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2584:2:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2215,
                        "src": "2576:10:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2203,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2576:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2206,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2604:6:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2215,
                        "src": "2596:14:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2205,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2596:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2208,
                        "mutability": "mutable",
                        "name": "share",
                        "nameLocation": "2628:5:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2215,
                        "src": "2620:13:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2207,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2620:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2520:119:8"
                  },
                  "returnParameters": {
                    "id": 2214,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2211,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "2666:9:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2215,
                        "src": "2658:17:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2210,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2658:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2213,
                        "mutability": "mutable",
                        "name": "shareOut",
                        "nameLocation": "2685:8:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2215,
                        "src": "2677:16:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2212,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2677:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2657:37:8"
                  },
                  "scope": 2253,
                  "src": "2503:192:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2216,
                    "nodeType": "StructuredDocumentation",
                    "src": "2701:268:8",
                    "text": "@notice Transfer shares from a user account to another one.\n @param token The ERC-20 token to transfer.\n @param from which user to pull the tokens.\n @param to which user to push the tokens.\n @param share The amount of `token` in shares."
                  },
                  "functionSelector": "f18d03cc",
                  "id": 2227,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nameLocation": "2983:8:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2225,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2218,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "3009:5:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2227,
                        "src": "3001:13:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2217,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3001:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2220,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "3032:4:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2227,
                        "src": "3024:12:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2219,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3024:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2222,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "3054:2:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2227,
                        "src": "3046:10:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2221,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3046:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2224,
                        "mutability": "mutable",
                        "name": "share",
                        "nameLocation": "3074:5:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2227,
                        "src": "3066:13:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2223,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3066:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2991:94:8"
                  },
                  "returnParameters": {
                    "id": 2226,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3094:0:8"
                  },
                  "scope": 2253,
                  "src": "2974:121:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2228,
                    "nodeType": "StructuredDocumentation",
                    "src": "3101:64:8",
                    "text": "@dev Reads the Rebase `totals`from storage for a given token"
                  },
                  "functionSelector": "4ffe34db",
                  "id": 2236,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totals",
                  "nameLocation": "3179:6:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2231,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2230,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "3194:5:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2236,
                        "src": "3186:13:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2229,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3186:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3185:15:8"
                  },
                  "returnParameters": {
                    "id": 2235,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2234,
                        "mutability": "mutable",
                        "name": "total",
                        "nameLocation": "3238:5:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2236,
                        "src": "3224:19:8",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Rebase_$2859_memory_ptr",
                          "typeString": "struct Rebase"
                        },
                        "typeName": {
                          "id": 2233,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2232,
                            "name": "Rebase",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2859,
                            "src": "3224:6:8"
                          },
                          "referencedDeclaration": 2859,
                          "src": "3224:6:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Rebase_$2859_storage_ptr",
                            "typeString": "struct Rebase"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3223:21:8"
                  },
                  "scope": 2253,
                  "src": "3170:75:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2237,
                    "nodeType": "StructuredDocumentation",
                    "src": "3251:64:8",
                    "text": "@dev Approves users' BentoBox assets to a \"master\" contract."
                  },
                  "functionSelector": "c0a47c93",
                  "id": 2252,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setMasterContractApproval",
                  "nameLocation": "3329:25:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2250,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2239,
                        "mutability": "mutable",
                        "name": "user",
                        "nameLocation": "3372:4:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2252,
                        "src": "3364:12:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2238,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3364:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2241,
                        "mutability": "mutable",
                        "name": "masterContract",
                        "nameLocation": "3394:14:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2252,
                        "src": "3386:22:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2240,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3386:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2243,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "3423:8:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2252,
                        "src": "3418:13:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2242,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3418:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2245,
                        "mutability": "mutable",
                        "name": "v",
                        "nameLocation": "3447:1:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2252,
                        "src": "3441:7:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 2244,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "3441:5:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2247,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "3466:1:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2252,
                        "src": "3458:9:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2246,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3458:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2249,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "3485:1:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 2252,
                        "src": "3477:9:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2248,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3477:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3354:138:8"
                  },
                  "returnParameters": {
                    "id": 2251,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3501:0:8"
                  },
                  "scope": 2253,
                  "src": "3320:182:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2254,
              "src": "230:3274:8",
              "usedErrors": []
            }
          ],
          "src": "46:3459:8"
        },
        "id": 8
      },
      "contracts/interfaces/IConstantProductPool.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IConstantProductPool.sol",
          "exportedSymbols": {
            "IConstantProductPool": [
              2271
            ],
            "IERC20": [
              2316
            ],
            "IPool": [
              2450
            ]
          },
          "id": 2272,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2255,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:9"
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "./IERC20.sol",
              "id": 2256,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2272,
              "sourceUnit": 2317,
              "src": "72:22:9",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IPool.sol",
              "file": "./IPool.sol",
              "id": 2257,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2272,
              "sourceUnit": 2451,
              "src": "95:21:9",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2258,
                    "name": "IPool",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2450,
                    "src": "152:5:9"
                  },
                  "id": 2259,
                  "nodeType": "InheritanceSpecifier",
                  "src": "152:5:9"
                },
                {
                  "baseName": {
                    "id": 2260,
                    "name": "IERC20",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2316,
                    "src": "159:6:9"
                  },
                  "id": 2261,
                  "nodeType": "InheritanceSpecifier",
                  "src": "159:6:9"
                }
              ],
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 2271,
              "linearizedBaseContracts": [
                2271,
                2316,
                2450
              ],
              "name": "IConstantProductPool",
              "nameLocation": "128:20:9",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "65dfc767",
                  "id": 2270,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getNativeReserves",
                  "nameLocation": "181:17:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2262,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "198:2:9"
                  },
                  "returnParameters": {
                    "id": 2269,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2264,
                        "mutability": "mutable",
                        "name": "_nativeReserve0",
                        "nameLocation": "269:15:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2270,
                        "src": "261:23:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2263,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "261:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2266,
                        "mutability": "mutable",
                        "name": "_nativeReserve1",
                        "nameLocation": "306:15:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 2270,
                        "src": "298:23:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2265,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "298:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2268,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2270,
                        "src": "335:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 2267,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "335:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "247:104:9"
                  },
                  "scope": 2271,
                  "src": "172:180:9",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2272,
              "src": "118:236:9",
              "usedErrors": []
            }
          ],
          "src": "46:309:9"
        },
        "id": 9
      },
      "contracts/interfaces/IERC20.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IERC20.sol",
          "exportedSymbols": {
            "IERC20": [
              2316
            ]
          },
          "id": 2317,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2273,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:10"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2274,
                "nodeType": "StructuredDocumentation",
                "src": "72:96:10",
                "text": "@dev Use a library or custom safeTransfer{From} functions when dealing with unknown tokens!"
              },
              "fullyImplemented": false,
              "id": 2316,
              "linearizedBaseContracts": [
                2316
              ],
              "name": "IERC20",
              "nameLocation": "178:6:10",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "70a08231",
                  "id": 2281,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nameLocation": "200:9:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2277,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2276,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "218:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2281,
                        "src": "210:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2275,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "210:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "209:17:10"
                  },
                  "returnParameters": {
                    "id": 2280,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2279,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2281,
                        "src": "250:7:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2278,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "250:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "249:9:10"
                  },
                  "scope": 2316,
                  "src": "191:68:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "18160ddd",
                  "id": 2286,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nameLocation": "274:11:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2282,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "285:2:10"
                  },
                  "returnParameters": {
                    "id": 2285,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2284,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2286,
                        "src": "311:7:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2283,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "311:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "310:9:10"
                  },
                  "scope": 2316,
                  "src": "265:55:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "23b872dd",
                  "id": 2297,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "335:12:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2293,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2288,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "365:6:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2297,
                        "src": "357:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2287,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "357:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2290,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "389:9:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2297,
                        "src": "381:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2289,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "381:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2292,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "416:6:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2297,
                        "src": "408:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2291,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "408:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "347:81:10"
                  },
                  "returnParameters": {
                    "id": 2296,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2295,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2297,
                        "src": "447:4:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2294,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "447:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "446:6:10"
                  },
                  "scope": 2316,
                  "src": "326:127:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "a9059cbb",
                  "id": 2306,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nameLocation": "468:8:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2302,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2299,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "485:9:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2306,
                        "src": "477:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2298,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "477:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2301,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "504:6:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2306,
                        "src": "496:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2300,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "496:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "476:35:10"
                  },
                  "returnParameters": {
                    "id": 2305,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2304,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2306,
                        "src": "530:4:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2303,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "530:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "529:6:10"
                  },
                  "scope": 2316,
                  "src": "459:77:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "095ea7b3",
                  "id": 2315,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "551:7:10",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2311,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2308,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "567:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2315,
                        "src": "559:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2307,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "559:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2310,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "584:6:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 2315,
                        "src": "576:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2309,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "576:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "558:33:10"
                  },
                  "returnParameters": {
                    "id": 2314,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2313,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2315,
                        "src": "610:4:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2312,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "610:4:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "609:6:10"
                  },
                  "scope": 2316,
                  "src": "542:74:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2317,
              "src": "168:450:10",
              "usedErrors": []
            }
          ],
          "src": "46:573:10"
        },
        "id": 10
      },
      "contracts/interfaces/IMasterDeployer.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IMasterDeployer.sol",
          "exportedSymbols": {
            "IMasterDeployer": [
              2356
            ]
          },
          "id": 2357,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2318,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:11"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2319,
                "nodeType": "StructuredDocumentation",
                "src": "72:45:11",
                "text": "@notice Trident pool deployer interface."
              },
              "fullyImplemented": false,
              "id": 2356,
              "linearizedBaseContracts": [
                2356
              ],
              "name": "IMasterDeployer",
              "nameLocation": "127:15:11",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "c14ad802",
                  "id": 2324,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "barFee",
                  "nameLocation": "158:6:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2320,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "164:2:11"
                  },
                  "returnParameters": {
                    "id": 2323,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2322,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2324,
                        "src": "190:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2321,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "190:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "189:9:11"
                  },
                  "scope": 2356,
                  "src": "149:50:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "0c0a0cd2",
                  "id": 2329,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "barFeeTo",
                  "nameLocation": "214:8:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2325,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "222:2:11"
                  },
                  "returnParameters": {
                    "id": 2328,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2327,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2329,
                        "src": "248:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2326,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "248:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "247:9:11"
                  },
                  "scope": 2356,
                  "src": "205:52:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "4da31827",
                  "id": 2334,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "bento",
                  "nameLocation": "272:5:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2330,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "277:2:11"
                  },
                  "returnParameters": {
                    "id": 2333,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2332,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2334,
                        "src": "303:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2331,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "303:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "302:9:11"
                  },
                  "scope": 2356,
                  "src": "263:49:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "7cd07e47",
                  "id": 2339,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "migrator",
                  "nameLocation": "327:8:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2335,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "335:2:11"
                  },
                  "returnParameters": {
                    "id": 2338,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2337,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2339,
                        "src": "361:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2336,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "361:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "360:9:11"
                  },
                  "scope": 2356,
                  "src": "318:52:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "a4063dbc",
                  "id": 2346,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "pools",
                  "nameLocation": "385:5:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2342,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2341,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "399:4:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2346,
                        "src": "391:12:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2340,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "391:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "390:14:11"
                  },
                  "returnParameters": {
                    "id": 2345,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2344,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2346,
                        "src": "428:4:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2343,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "428:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "427:6:11"
                  },
                  "scope": 2356,
                  "src": "376:58:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "250558dc",
                  "id": 2355,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deployPool",
                  "nameLocation": "449:10:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2351,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2348,
                        "mutability": "mutable",
                        "name": "factory",
                        "nameLocation": "468:7:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2355,
                        "src": "460:15:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2347,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "460:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2350,
                        "mutability": "mutable",
                        "name": "deployData",
                        "nameLocation": "492:10:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2355,
                        "src": "477:25:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2349,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "477:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "459:44:11"
                  },
                  "returnParameters": {
                    "id": 2354,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2353,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2355,
                        "src": "522:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2352,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "522:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "521:9:11"
                  },
                  "scope": 2356,
                  "src": "440:91:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2357,
              "src": "117:416:11",
              "usedErrors": []
            }
          ],
          "src": "46:488:11"
        },
        "id": 11
      },
      "contracts/interfaces/IPool.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IPool.sol",
          "exportedSymbols": {
            "IPool": [
              2450
            ]
          },
          "id": 2451,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2358,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:12"
            },
            {
              "id": 2359,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "71:33:12"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2360,
                "nodeType": "StructuredDocumentation",
                "src": "106:36:12",
                "text": "@notice Trident pool interface."
              },
              "fullyImplemented": false,
              "id": 2450,
              "linearizedBaseContracts": [
                2450
              ],
              "name": "IPool",
              "nameLocation": "152:5:12",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2361,
                    "nodeType": "StructuredDocumentation",
                    "src": "164:273:12",
                    "text": "@notice Executes a swap from one token to another.\n @dev The input tokens must've already been sent to the pool.\n @param data ABI-encoded params that the pool requires.\n @return finalAmountOut The amount of output tokens that were sent to the user."
                  },
                  "functionSelector": "627dd56a",
                  "id": 2368,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "swap",
                  "nameLocation": "451:4:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2364,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2363,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "471:4:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2368,
                        "src": "456:19:12",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2362,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "456:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "455:21:12"
                  },
                  "returnParameters": {
                    "id": 2367,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2366,
                        "mutability": "mutable",
                        "name": "finalAmountOut",
                        "nameLocation": "503:14:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2368,
                        "src": "495:22:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2365,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "495:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "494:24:12"
                  },
                  "scope": 2450,
                  "src": "442:77:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2369,
                    "nodeType": "StructuredDocumentation",
                    "src": "525:328:12",
                    "text": "@notice Executes a swap from one token to another with a callback.\n @dev This function allows borrowing the output tokens and sending the input tokens in the callback.\n @param data ABI-encoded params that the pool requires.\n @return finalAmountOut The amount of output tokens that were sent to the user."
                  },
                  "functionSelector": "053da1c8",
                  "id": 2376,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "flashSwap",
                  "nameLocation": "867:9:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2372,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2371,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "892:4:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2376,
                        "src": "877:19:12",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2370,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "877:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "876:21:12"
                  },
                  "returnParameters": {
                    "id": 2375,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2374,
                        "mutability": "mutable",
                        "name": "finalAmountOut",
                        "nameLocation": "924:14:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2376,
                        "src": "916:22:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2373,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "916:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "915:24:12"
                  },
                  "scope": 2450,
                  "src": "858:82:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2377,
                    "nodeType": "StructuredDocumentation",
                    "src": "946:186:12",
                    "text": "@notice Mints liquidity tokens.\n @param data ABI-encoded params that the pool requires.\n @return liquidity The amount of liquidity tokens that were minted for the user."
                  },
                  "functionSelector": "7ba0e2e7",
                  "id": 2384,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mint",
                  "nameLocation": "1146:4:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2380,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2379,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1166:4:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2384,
                        "src": "1151:19:12",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2378,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1151:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1150:21:12"
                  },
                  "returnParameters": {
                    "id": 2383,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2382,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "1198:9:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2384,
                        "src": "1190:17:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2381,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1190:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1189:19:12"
                  },
                  "scope": 2450,
                  "src": "1137:72:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2385,
                    "nodeType": "StructuredDocumentation",
                    "src": "1215:267:12",
                    "text": "@notice Burns liquidity tokens.\n @dev The input LP tokens must've already been sent to the pool.\n @param data ABI-encoded params that the pool requires.\n @return withdrawnAmounts The amount of various output tokens that were sent to the user."
                  },
                  "functionSelector": "2a07b6c7",
                  "id": 2394,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nameLocation": "1496:4:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2388,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2387,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1516:4:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2394,
                        "src": "1501:19:12",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2386,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1501:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1500:21:12"
                  },
                  "returnParameters": {
                    "id": 2393,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2392,
                        "mutability": "mutable",
                        "name": "withdrawnAmounts",
                        "nameLocation": "1561:16:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2394,
                        "src": "1540:37:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IPool.TokenAmount[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2390,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2389,
                              "name": "TokenAmount",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2449,
                              "src": "1540:11:12"
                            },
                            "referencedDeclaration": 2449,
                            "src": "1540:11:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                              "typeString": "struct IPool.TokenAmount"
                            }
                          },
                          "id": 2391,
                          "nodeType": "ArrayTypeName",
                          "src": "1540:13:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                            "typeString": "struct IPool.TokenAmount[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1539:39:12"
                  },
                  "scope": 2450,
                  "src": "1487:92:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2395,
                    "nodeType": "StructuredDocumentation",
                    "src": "1585:278:12",
                    "text": "@notice Burns liquidity tokens for a single output token.\n @dev The input LP tokens must've already been sent to the pool.\n @param data ABI-encoded params that the pool requires.\n @return amountOut The amount of output tokens that were sent to the user."
                  },
                  "functionSelector": "af8c09bf",
                  "id": 2402,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnSingle",
                  "nameLocation": "1877:10:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2398,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2397,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1903:4:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2402,
                        "src": "1888:19:12",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2396,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1888:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1887:21:12"
                  },
                  "returnParameters": {
                    "id": 2401,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2400,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "1935:9:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2402,
                        "src": "1927:17:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2399,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1927:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1926:19:12"
                  },
                  "scope": 2450,
                  "src": "1868:78:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2403,
                    "nodeType": "StructuredDocumentation",
                    "src": "1952:50:12",
                    "text": "@return A unique identifier for the pool type."
                  },
                  "functionSelector": "a69840a8",
                  "id": 2408,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "poolIdentifier",
                  "nameLocation": "2016:14:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2404,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2030:2:12"
                  },
                  "returnParameters": {
                    "id": 2407,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2406,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2408,
                        "src": "2056:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2405,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2056:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2055:9:12"
                  },
                  "scope": 2450,
                  "src": "2007:58:12",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2409,
                    "nodeType": "StructuredDocumentation",
                    "src": "2071:53:12",
                    "text": "@return An array of tokens supported by the pool."
                  },
                  "functionSelector": "67e4ac2c",
                  "id": 2415,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAssets",
                  "nameLocation": "2138:9:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2410,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2147:2:12"
                  },
                  "returnParameters": {
                    "id": 2414,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2413,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2415,
                        "src": "2173:16:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2411,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2173:7:12",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 2412,
                          "nodeType": "ArrayTypeName",
                          "src": "2173:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2172:18:12"
                  },
                  "scope": 2450,
                  "src": "2129:62:12",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2416,
                    "nodeType": "StructuredDocumentation",
                    "src": "2197:348:12",
                    "text": "@notice Simulates a trade and returns the expected output.\n @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\n @param data ABI-encoded params that the pool requires.\n @return finalAmountOut The amount of output tokens that will be sent to the user if the trade is executed."
                  },
                  "functionSelector": "a8f1f52e",
                  "id": 2423,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountOut",
                  "nameLocation": "2559:12:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2419,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2418,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "2587:4:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2423,
                        "src": "2572:19:12",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2417,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2572:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2571:21:12"
                  },
                  "returnParameters": {
                    "id": 2422,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2421,
                        "mutability": "mutable",
                        "name": "finalAmountOut",
                        "nameLocation": "2624:14:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2423,
                        "src": "2616:22:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2420,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2616:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2615:24:12"
                  },
                  "scope": 2450,
                  "src": "2550:90:12",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2424,
                    "nodeType": "StructuredDocumentation",
                    "src": "2646:348:12",
                    "text": "@notice Simulates a trade and returns the expected output.\n @dev The pool does not need to include a trade simulator directly in itself - it can use a library.\n @param data ABI-encoded params that the pool requires.\n @return finalAmountIn The amount of input tokens that are required from the user if the trade is executed."
                  },
                  "functionSelector": "499a3c50",
                  "id": 2431,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountIn",
                  "nameLocation": "3008:11:12",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2427,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2426,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3035:4:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2431,
                        "src": "3020:19:12",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2425,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3020:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3019:21:12"
                  },
                  "returnParameters": {
                    "id": 2430,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2429,
                        "mutability": "mutable",
                        "name": "finalAmountIn",
                        "nameLocation": "3072:13:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2431,
                        "src": "3064:21:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2428,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3064:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3063:23:12"
                  },
                  "scope": 2450,
                  "src": "2999:88:12",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 2432,
                    "nodeType": "StructuredDocumentation",
                    "src": "3093:49:12",
                    "text": "@dev This event must be emitted on all swaps."
                  },
                  "id": 2444,
                  "name": "Swap",
                  "nameLocation": "3153:4:12",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2443,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2434,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "3174:9:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2444,
                        "src": "3158:25:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2433,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3158:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2436,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "tokenIn",
                        "nameLocation": "3201:7:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2444,
                        "src": "3185:23:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2435,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3185:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2438,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "tokenOut",
                        "nameLocation": "3226:8:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2444,
                        "src": "3210:24:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2437,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3210:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2440,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nameLocation": "3244:8:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2444,
                        "src": "3236:16:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2439,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3236:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2442,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "3262:9:12",
                        "nodeType": "VariableDeclaration",
                        "scope": 2444,
                        "src": "3254:17:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2441,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3254:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3157:115:12"
                  },
                  "src": "3147:126:12"
                },
                {
                  "canonicalName": "IPool.TokenAmount",
                  "id": 2449,
                  "members": [
                    {
                      "constant": false,
                      "id": 2446,
                      "mutability": "mutable",
                      "name": "token",
                      "nameLocation": "3373:5:12",
                      "nodeType": "VariableDeclaration",
                      "scope": 2449,
                      "src": "3365:13:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2445,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3365:7:12",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2448,
                      "mutability": "mutable",
                      "name": "amount",
                      "nameLocation": "3396:6:12",
                      "nodeType": "VariableDeclaration",
                      "scope": 2449,
                      "src": "3388:14:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2447,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3388:7:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "TokenAmount",
                  "nameLocation": "3343:11:12",
                  "nodeType": "StructDefinition",
                  "scope": 2450,
                  "src": "3336:73:12",
                  "visibility": "public"
                }
              ],
              "scope": 2451,
              "src": "142:3269:12",
              "usedErrors": []
            }
          ],
          "src": "46:3366:12"
        },
        "id": 12
      },
      "contracts/interfaces/IPoolFactory.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IPoolFactory.sol",
          "exportedSymbols": {
            "IPoolFactory": [
              2468
            ]
          },
          "id": 2469,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2452,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:13"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2453,
                "nodeType": "StructuredDocumentation",
                "src": "72:47:13",
                "text": "@notice Trident pool deployment interface."
              },
              "fullyImplemented": false,
              "id": 2468,
              "linearizedBaseContracts": [
                2468
              ],
              "name": "IPoolFactory",
              "nameLocation": "129:12:13",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "27c3cae1",
                  "id": 2460,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deployPool",
                  "nameLocation": "157:10:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2456,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2455,
                        "mutability": "mutable",
                        "name": "_deployData",
                        "nameLocation": "183:11:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2460,
                        "src": "168:26:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2454,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "168:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "167:28:13"
                  },
                  "returnParameters": {
                    "id": 2459,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2458,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "222:4:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2460,
                        "src": "214:12:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2457,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "214:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "213:14:13"
                  },
                  "scope": 2468,
                  "src": "148:80:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "f6ab6d99",
                  "id": 2467,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "configAddress",
                  "nameLocation": "243:13:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2463,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2462,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "265:4:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2467,
                        "src": "257:12:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2461,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "257:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "256:14:13"
                  },
                  "returnParameters": {
                    "id": 2466,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2465,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "297:4:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2467,
                        "src": "289:12:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2464,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "289:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "288:14:13"
                  },
                  "scope": 2468,
                  "src": "234:69:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2469,
              "src": "119:186:13",
              "usedErrors": []
            }
          ],
          "src": "46:260:13"
        },
        "id": 13
      },
      "contracts/interfaces/ITridentCallee.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/ITridentCallee.sol",
          "exportedSymbols": {
            "ITridentCallee": [
              2482
            ]
          },
          "id": 2483,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2470,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:14"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2471,
                "nodeType": "StructuredDocumentation",
                "src": "72:45:14",
                "text": "@notice Trident pool callback interface."
              },
              "fullyImplemented": false,
              "id": 2482,
              "linearizedBaseContracts": [
                2482
              ],
              "name": "ITridentCallee",
              "nameLocation": "127:14:14",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "bd50c7b1",
                  "id": 2476,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tridentSwapCallback",
                  "nameLocation": "157:19:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2474,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2473,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "192:4:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 2476,
                        "src": "177:19:14",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2472,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "177:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "176:21:14"
                  },
                  "returnParameters": {
                    "id": 2475,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "206:0:14"
                  },
                  "scope": 2482,
                  "src": "148:59:14",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "ced10b49",
                  "id": 2481,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tridentMintCallback",
                  "nameLocation": "222:19:14",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2479,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2478,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "257:4:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 2481,
                        "src": "242:19:14",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2477,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "242:5:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "241:21:14"
                  },
                  "returnParameters": {
                    "id": 2480,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "271:0:14"
                  },
                  "scope": 2482,
                  "src": "213:59:14",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2483,
              "src": "117:157:14",
              "usedErrors": []
            }
          ],
          "src": "46:229:14"
        },
        "id": 14
      },
      "contracts/interfaces/ITridentNFT.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/ITridentNFT.sol",
          "exportedSymbols": {
            "ITridentNFT": [
              2493
            ]
          },
          "id": 2494,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2484,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:15"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2485,
                "nodeType": "StructuredDocumentation",
                "src": "72:35:15",
                "text": "@notice Trident NFT interface."
              },
              "fullyImplemented": false,
              "id": 2493,
              "linearizedBaseContracts": [
                2493
              ],
              "name": "ITridentNFT",
              "nameLocation": "117:11:15",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "6352211e",
                  "id": 2492,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nameLocation": "144:7:15",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2488,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2487,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2492,
                        "src": "152:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2486,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "152:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "151:9:15"
                  },
                  "returnParameters": {
                    "id": 2491,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2490,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2492,
                        "src": "184:7:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2489,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "184:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "183:9:15"
                  },
                  "scope": 2493,
                  "src": "135:58:15",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2494,
              "src": "107:88:15",
              "usedErrors": []
            }
          ],
          "src": "46:150:15"
        },
        "id": 15
      },
      "contracts/interfaces/ITridentRouter.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/ITridentRouter.sol",
          "exportedSymbols": {
            "ITridentRouter": [
              2573
            ]
          },
          "id": 2574,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2495,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:16"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2496,
                "nodeType": "StructuredDocumentation",
                "src": "72:43:16",
                "text": "@notice Trident pool router interface."
              },
              "fullyImplemented": true,
              "id": 2573,
              "linearizedBaseContracts": [
                2573
              ],
              "name": "ITridentRouter",
              "nameLocation": "125:14:16",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "ITridentRouter.Path",
                  "id": 2501,
                  "members": [
                    {
                      "constant": false,
                      "id": 2498,
                      "mutability": "mutable",
                      "name": "pool",
                      "nameLocation": "176:4:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2501,
                      "src": "168:12:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2497,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "168:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2500,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "196:4:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2501,
                      "src": "190:10:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2499,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "190:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Path",
                  "nameLocation": "153:4:16",
                  "nodeType": "StructDefinition",
                  "scope": 2573,
                  "src": "146:61:16",
                  "visibility": "public"
                },
                {
                  "canonicalName": "ITridentRouter.ExactInputSingleParams",
                  "id": 2512,
                  "members": [
                    {
                      "constant": false,
                      "id": 2503,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nameLocation": "261:8:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2512,
                      "src": "253:16:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2502,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "253:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2505,
                      "mutability": "mutable",
                      "name": "amountOutMinimum",
                      "nameLocation": "287:16:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2512,
                      "src": "279:24:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2504,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "279:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2507,
                      "mutability": "mutable",
                      "name": "pool",
                      "nameLocation": "321:4:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2512,
                      "src": "313:12:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2506,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "313:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2509,
                      "mutability": "mutable",
                      "name": "tokenIn",
                      "nameLocation": "343:7:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2512,
                      "src": "335:15:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2508,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "335:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2511,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "366:4:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2512,
                      "src": "360:10:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2510,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "360:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "ExactInputSingleParams",
                  "nameLocation": "220:22:16",
                  "nodeType": "StructDefinition",
                  "scope": 2573,
                  "src": "213:164:16",
                  "visibility": "public"
                },
                {
                  "canonicalName": "ITridentRouter.ExactInputParams",
                  "id": 2523,
                  "members": [
                    {
                      "constant": false,
                      "id": 2514,
                      "mutability": "mutable",
                      "name": "tokenIn",
                      "nameLocation": "425:7:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2523,
                      "src": "417:15:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2513,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "417:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2516,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nameLocation": "450:8:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2523,
                      "src": "442:16:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2515,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "442:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2518,
                      "mutability": "mutable",
                      "name": "amountOutMinimum",
                      "nameLocation": "476:16:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2523,
                      "src": "468:24:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2517,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "468:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2522,
                      "mutability": "mutable",
                      "name": "path",
                      "nameLocation": "509:4:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2523,
                      "src": "502:11:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Path_$2501_storage_$dyn_storage_ptr",
                        "typeString": "struct ITridentRouter.Path[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2520,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2519,
                            "name": "Path",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2501,
                            "src": "502:4:16"
                          },
                          "referencedDeclaration": 2501,
                          "src": "502:4:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Path_$2501_storage_ptr",
                            "typeString": "struct ITridentRouter.Path"
                          }
                        },
                        "id": 2521,
                        "nodeType": "ArrayTypeName",
                        "src": "502:6:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Path_$2501_storage_$dyn_storage_ptr",
                          "typeString": "struct ITridentRouter.Path[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "ExactInputParams",
                  "nameLocation": "390:16:16",
                  "nodeType": "StructDefinition",
                  "scope": 2573,
                  "src": "383:137:16",
                  "visibility": "public"
                },
                {
                  "canonicalName": "ITridentRouter.TokenInput",
                  "id": 2530,
                  "members": [
                    {
                      "constant": false,
                      "id": 2525,
                      "mutability": "mutable",
                      "name": "token",
                      "nameLocation": "562:5:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2530,
                      "src": "554:13:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2524,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "554:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2527,
                      "mutability": "mutable",
                      "name": "native",
                      "nameLocation": "582:6:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2530,
                      "src": "577:11:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2526,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "577:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2529,
                      "mutability": "mutable",
                      "name": "amount",
                      "nameLocation": "606:6:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2530,
                      "src": "598:14:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2528,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "598:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "TokenInput",
                  "nameLocation": "533:10:16",
                  "nodeType": "StructDefinition",
                  "scope": 2573,
                  "src": "526:93:16",
                  "visibility": "public"
                },
                {
                  "canonicalName": "ITridentRouter.InitialPath",
                  "id": 2541,
                  "members": [
                    {
                      "constant": false,
                      "id": 2532,
                      "mutability": "mutable",
                      "name": "tokenIn",
                      "nameLocation": "662:7:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2541,
                      "src": "654:15:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2531,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "654:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2534,
                      "mutability": "mutable",
                      "name": "pool",
                      "nameLocation": "687:4:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2541,
                      "src": "679:12:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2533,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "679:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2536,
                      "mutability": "mutable",
                      "name": "native",
                      "nameLocation": "706:6:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2541,
                      "src": "701:11:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2535,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "701:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2538,
                      "mutability": "mutable",
                      "name": "amount",
                      "nameLocation": "730:6:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2541,
                      "src": "722:14:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2537,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "722:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2540,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "752:4:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2541,
                      "src": "746:10:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2539,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "746:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "InitialPath",
                  "nameLocation": "632:11:16",
                  "nodeType": "StructDefinition",
                  "scope": 2573,
                  "src": "625:138:16",
                  "visibility": "public"
                },
                {
                  "canonicalName": "ITridentRouter.PercentagePath",
                  "id": 2550,
                  "members": [
                    {
                      "constant": false,
                      "id": 2543,
                      "mutability": "mutable",
                      "name": "tokenIn",
                      "nameLocation": "809:7:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2550,
                      "src": "801:15:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2542,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "801:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2545,
                      "mutability": "mutable",
                      "name": "pool",
                      "nameLocation": "834:4:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2550,
                      "src": "826:12:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2544,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "826:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2547,
                      "mutability": "mutable",
                      "name": "balancePercentage",
                      "nameLocation": "855:17:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2550,
                      "src": "848:24:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 2546,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "848:6:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2549,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "930:4:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2550,
                      "src": "924:10:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 2548,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "924:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "PercentagePath",
                  "nameLocation": "776:14:16",
                  "nodeType": "StructDefinition",
                  "scope": 2573,
                  "src": "769:172:16",
                  "visibility": "public"
                },
                {
                  "canonicalName": "ITridentRouter.Output",
                  "id": 2559,
                  "members": [
                    {
                      "constant": false,
                      "id": 2552,
                      "mutability": "mutable",
                      "name": "token",
                      "nameLocation": "979:5:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2559,
                      "src": "971:13:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2551,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "971:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2554,
                      "mutability": "mutable",
                      "name": "to",
                      "nameLocation": "1002:2:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2559,
                      "src": "994:10:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2553,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "994:7:16",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2556,
                      "mutability": "mutable",
                      "name": "unwrapBento",
                      "nameLocation": "1019:11:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2559,
                      "src": "1014:16:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 2555,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1014:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2558,
                      "mutability": "mutable",
                      "name": "minAmount",
                      "nameLocation": "1048:9:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2559,
                      "src": "1040:17:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2557,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1040:7:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Output",
                  "nameLocation": "954:6:16",
                  "nodeType": "StructDefinition",
                  "scope": 2573,
                  "src": "947:117:16",
                  "visibility": "public"
                },
                {
                  "canonicalName": "ITridentRouter.ComplexPathParams",
                  "id": 2572,
                  "members": [
                    {
                      "constant": false,
                      "id": 2563,
                      "mutability": "mutable",
                      "name": "initialPath",
                      "nameLocation": "1119:11:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2572,
                      "src": "1105:25:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_InitialPath_$2541_storage_$dyn_storage_ptr",
                        "typeString": "struct ITridentRouter.InitialPath[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2561,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2560,
                            "name": "InitialPath",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2541,
                            "src": "1105:11:16"
                          },
                          "referencedDeclaration": 2541,
                          "src": "1105:11:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_InitialPath_$2541_storage_ptr",
                            "typeString": "struct ITridentRouter.InitialPath"
                          }
                        },
                        "id": 2562,
                        "nodeType": "ArrayTypeName",
                        "src": "1105:13:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_InitialPath_$2541_storage_$dyn_storage_ptr",
                          "typeString": "struct ITridentRouter.InitialPath[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2567,
                      "mutability": "mutable",
                      "name": "percentagePath",
                      "nameLocation": "1157:14:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2572,
                      "src": "1140:31:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_PercentagePath_$2550_storage_$dyn_storage_ptr",
                        "typeString": "struct ITridentRouter.PercentagePath[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2565,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2564,
                            "name": "PercentagePath",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2550,
                            "src": "1140:14:16"
                          },
                          "referencedDeclaration": 2550,
                          "src": "1140:14:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_PercentagePath_$2550_storage_ptr",
                            "typeString": "struct ITridentRouter.PercentagePath"
                          }
                        },
                        "id": 2566,
                        "nodeType": "ArrayTypeName",
                        "src": "1140:16:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_PercentagePath_$2550_storage_$dyn_storage_ptr",
                          "typeString": "struct ITridentRouter.PercentagePath[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2571,
                      "mutability": "mutable",
                      "name": "output",
                      "nameLocation": "1190:6:16",
                      "nodeType": "VariableDeclaration",
                      "scope": 2572,
                      "src": "1181:15:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_Output_$2559_storage_$dyn_storage_ptr",
                        "typeString": "struct ITridentRouter.Output[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2569,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2568,
                            "name": "Output",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2559,
                            "src": "1181:6:16"
                          },
                          "referencedDeclaration": 2559,
                          "src": "1181:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Output_$2559_storage_ptr",
                            "typeString": "struct ITridentRouter.Output"
                          }
                        },
                        "id": 2570,
                        "nodeType": "ArrayTypeName",
                        "src": "1181:8:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Output_$2559_storage_$dyn_storage_ptr",
                          "typeString": "struct ITridentRouter.Output[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "ComplexPathParams",
                  "nameLocation": "1077:17:16",
                  "nodeType": "StructDefinition",
                  "scope": 2573,
                  "src": "1070:133:16",
                  "visibility": "public"
                }
              ],
              "scope": 2574,
              "src": "115:1090:16",
              "usedErrors": []
            }
          ],
          "src": "46:1160:16"
        },
        "id": 16
      },
      "contracts/interfaces/IUniswapV2Minimal.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IUniswapV2Minimal.sol",
          "exportedSymbols": {
            "IERC20": [
              2316
            ],
            "IUniswapV2Minimal": [
              2599
            ]
          },
          "id": 2600,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2575,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:17"
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "./IERC20.sol",
              "id": 2576,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2600,
              "sourceUnit": 2317,
              "src": "72:22:17",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2578,
                    "name": "IERC20",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2316,
                    "src": "172:6:17"
                  },
                  "id": 2579,
                  "nodeType": "InheritanceSpecifier",
                  "src": "172:6:17"
                }
              ],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2577,
                "nodeType": "StructuredDocumentation",
                "src": "96:45:17",
                "text": "@notice Minimal Uniswap V2 LP interface."
              },
              "fullyImplemented": false,
              "id": 2599,
              "linearizedBaseContracts": [
                2599,
                2316
              ],
              "name": "IUniswapV2Minimal",
              "nameLocation": "151:17:17",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "0dfe1681",
                  "id": 2584,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "token0",
                  "nameLocation": "194:6:17",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2580,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "200:2:17"
                  },
                  "returnParameters": {
                    "id": 2583,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2582,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2584,
                        "src": "226:7:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2581,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "226:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "225:9:17"
                  },
                  "scope": 2599,
                  "src": "185:50:17",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "d21220a7",
                  "id": 2589,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "token1",
                  "nameLocation": "250:6:17",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2585,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "256:2:17"
                  },
                  "returnParameters": {
                    "id": 2588,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2587,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2589,
                        "src": "282:7:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2586,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "282:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "281:9:17"
                  },
                  "scope": 2599,
                  "src": "241:50:17",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "89afcb44",
                  "id": 2598,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nameLocation": "306:4:17",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2592,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2591,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "319:2:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2598,
                        "src": "311:10:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2590,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "311:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "310:12:17"
                  },
                  "returnParameters": {
                    "id": 2597,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2594,
                        "mutability": "mutable",
                        "name": "amount0",
                        "nameLocation": "349:7:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2598,
                        "src": "341:15:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2593,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "341:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2596,
                        "mutability": "mutable",
                        "name": "amount1",
                        "nameLocation": "366:7:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2598,
                        "src": "358:15:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2595,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "358:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "340:34:17"
                  },
                  "scope": 2599,
                  "src": "297:78:17",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2600,
              "src": "141:236:17",
              "usedErrors": []
            }
          ],
          "src": "46:332:17"
        },
        "id": 17
      },
      "contracts/interfaces/IWhiteListManager.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/IWhiteListManager.sol",
          "exportedSymbols": {
            "IWhiteListManager": [
              2612
            ]
          },
          "id": 2613,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2601,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:18"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2602,
                "nodeType": "StructuredDocumentation",
                "src": "72:65:18",
                "text": "@notice Trident franchised pool whitelist manager interface."
              },
              "fullyImplemented": false,
              "id": 2612,
              "linearizedBaseContracts": [
                2612
              ],
              "name": "IWhiteListManager",
              "nameLocation": "147:17:18",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "1472c271",
                  "id": 2611,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "whitelistedAccounts",
                  "nameLocation": "180:19:18",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2607,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2604,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "208:8:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 2611,
                        "src": "200:16:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2603,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "200:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2606,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "226:7:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 2611,
                        "src": "218:15:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2605,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "218:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "199:35:18"
                  },
                  "returnParameters": {
                    "id": 2610,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2609,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2611,
                        "src": "253:4:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2608,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "253:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "252:6:18"
                  },
                  "scope": 2612,
                  "src": "171:88:18",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2613,
              "src": "137:124:18",
              "usedErrors": []
            }
          ],
          "src": "46:216:18"
        },
        "id": 18
      },
      "contracts/interfaces/concentratedPool/IConcentratedLiquidityPool.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/concentratedPool/IConcentratedLiquidityPool.sol",
          "exportedSymbols": {
            "IBentoBoxMinimal": [
              2253
            ],
            "IConcentratedLiquidityPool": [
              2753
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "TickMath": [
              4217
            ],
            "Ticks": [
              4906
            ],
            "console": [
              32437
            ]
          },
          "id": 2754,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2614,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:19"
            },
            {
              "absolutePath": "contracts/interfaces/IPool.sol",
              "file": "./../IPool.sol",
              "id": 2615,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2754,
              "sourceUnit": 2451,
              "src": "72:24:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IBentoBoxMinimal.sol",
              "file": "./../IBentoBoxMinimal.sol",
              "id": 2616,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2754,
              "sourceUnit": 2254,
              "src": "97:35:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IMasterDeployer.sol",
              "file": "./../IMasterDeployer.sol",
              "id": 2617,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2754,
              "sourceUnit": 2357,
              "src": "133:34:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/concentratedPool/Ticks.sol",
              "file": "../../libraries/concentratedPool/Ticks.sol",
              "id": 2618,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2754,
              "sourceUnit": 4907,
              "src": "168:52:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2620,
                    "name": "IPool",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2450,
                    "src": "321:5:19"
                  },
                  "id": 2621,
                  "nodeType": "InheritanceSpecifier",
                  "src": "321:5:19"
                }
              ],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2619,
                "nodeType": "StructuredDocumentation",
                "src": "222:59:19",
                "text": "@notice Trident Concentrated Liquidity Pool interface."
              },
              "fullyImplemented": false,
              "id": 2753,
              "linearizedBaseContracts": [
                2753,
                2450
              ],
              "name": "IConcentratedLiquidityPool",
              "nameLocation": "291:26:19",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "a035b1fe",
                  "id": 2626,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "price",
                  "nameLocation": "342:5:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2622,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "347:2:19"
                  },
                  "returnParameters": {
                    "id": 2625,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2624,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2626,
                        "src": "373:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "typeName": {
                          "id": 2623,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "373:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "372:9:19"
                  },
                  "scope": 2753,
                  "src": "333:49:19",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "0dfe1681",
                  "id": 2631,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "token0",
                  "nameLocation": "397:6:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2627,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "403:2:19"
                  },
                  "returnParameters": {
                    "id": 2630,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2629,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2631,
                        "src": "429:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2628,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "429:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "428:9:19"
                  },
                  "scope": 2753,
                  "src": "388:50:19",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "d21220a7",
                  "id": 2636,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "token1",
                  "nameLocation": "453:6:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2632,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "459:2:19"
                  },
                  "returnParameters": {
                    "id": 2635,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2634,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2636,
                        "src": "485:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2633,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "485:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "484:9:19"
                  },
                  "scope": 2753,
                  "src": "444:50:19",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "f30dba93",
                  "id": 2644,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ticks",
                  "nameLocation": "509:5:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2639,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2638,
                        "mutability": "mutable",
                        "name": "_tick",
                        "nameLocation": "521:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2644,
                        "src": "515:11:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 2637,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "515:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "514:13:19"
                  },
                  "returnParameters": {
                    "id": 2643,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2642,
                        "mutability": "mutable",
                        "name": "tick",
                        "nameLocation": "569:4:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2644,
                        "src": "551:22:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                          "typeString": "struct Ticks.Tick"
                        },
                        "typeName": {
                          "id": 2641,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2640,
                            "name": "Ticks.Tick",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4235,
                            "src": "551:10:19"
                          },
                          "referencedDeclaration": 4235,
                          "src": "551:10:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                            "typeString": "struct Ticks.Tick"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "550:24:19"
                  },
                  "scope": 2753,
                  "src": "500:75:19",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "9da12096",
                  "id": 2649,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "feeGrowthGlobal0",
                  "nameLocation": "590:16:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2645,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "606:2:19"
                  },
                  "returnParameters": {
                    "id": 2648,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2647,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2649,
                        "src": "632:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2646,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "632:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "631:9:19"
                  },
                  "scope": 2753,
                  "src": "581:60:19",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "cf78756b",
                  "id": 2654,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "feeGrowthGlobal1",
                  "nameLocation": "656:16:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2650,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "672:2:19"
                  },
                  "returnParameters": {
                    "id": 2653,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2652,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2654,
                        "src": "698:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2651,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "698:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "697:9:19"
                  },
                  "scope": 2753,
                  "src": "647:60:19",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "acfe88f8",
                  "id": 2665,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rangeFeeGrowth",
                  "nameLocation": "722:14:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2659,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2656,
                        "mutability": "mutable",
                        "name": "lowerTick",
                        "nameLocation": "743:9:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2665,
                        "src": "737:15:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 2655,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "737:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2658,
                        "mutability": "mutable",
                        "name": "upperTick",
                        "nameLocation": "760:9:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2665,
                        "src": "754:15:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 2657,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "754:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "736:34:19"
                  },
                  "returnParameters": {
                    "id": 2664,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2661,
                        "mutability": "mutable",
                        "name": "feeGrowthInside0",
                        "nameLocation": "802:16:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2665,
                        "src": "794:24:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2660,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "794:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2663,
                        "mutability": "mutable",
                        "name": "feeGrowthInside1",
                        "nameLocation": "828:16:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2665,
                        "src": "820:24:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2662,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "820:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "793:52:19"
                  },
                  "scope": 2753,
                  "src": "713:133:19",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "fb39d628",
                  "id": 2680,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "collect",
                  "nameLocation": "861:7:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2674,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2667,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2680,
                        "src": "878:5:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 2666,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "878:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2669,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2680,
                        "src": "893:5:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 2668,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "893:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2671,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2680,
                        "src": "908:7:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2670,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "908:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2673,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2680,
                        "src": "925:4:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2672,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "925:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "868:67:19"
                  },
                  "returnParameters": {
                    "id": 2679,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2676,
                        "mutability": "mutable",
                        "name": "amount0fees",
                        "nameLocation": "962:11:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2680,
                        "src": "954:19:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2675,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "954:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2678,
                        "mutability": "mutable",
                        "name": "amount1fees",
                        "nameLocation": "983:11:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2680,
                        "src": "975:19:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2677,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "975:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "953:42:19"
                  },
                  "scope": 2753,
                  "src": "852:144:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "6289db82",
                  "id": 2703,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decreaseLiquidity",
                  "nameLocation": "1011:17:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2691,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2682,
                        "mutability": "mutable",
                        "name": "lower",
                        "nameLocation": "1044:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2703,
                        "src": "1038:11:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 2681,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "1038:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2684,
                        "mutability": "mutable",
                        "name": "upper",
                        "nameLocation": "1065:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2703,
                        "src": "1059:11:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 2683,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "1059:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2686,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1088:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2703,
                        "src": "1080:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 2685,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1080:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2688,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "1112:9:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2703,
                        "src": "1104:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2687,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1104:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2690,
                        "mutability": "mutable",
                        "name": "unwrapBento",
                        "nameLocation": "1136:11:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2703,
                        "src": "1131:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2689,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1131:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1028:125:19"
                  },
                  "returnParameters": {
                    "id": 2702,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2695,
                        "mutability": "mutable",
                        "name": "withdrawnAmounts",
                        "nameLocation": "1222:16:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2703,
                        "src": "1201:37:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IPool.TokenAmount[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2693,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2692,
                              "name": "TokenAmount",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2449,
                              "src": "1201:11:19"
                            },
                            "referencedDeclaration": 2449,
                            "src": "1201:11:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                              "typeString": "struct IPool.TokenAmount"
                            }
                          },
                          "id": 2694,
                          "nodeType": "ArrayTypeName",
                          "src": "1201:13:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                            "typeString": "struct IPool.TokenAmount[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2699,
                        "mutability": "mutable",
                        "name": "feesWithdrawn",
                        "nameLocation": "1273:13:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2703,
                        "src": "1252:34:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IPool.TokenAmount[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2697,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2696,
                              "name": "TokenAmount",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2449,
                              "src": "1252:11:19"
                            },
                            "referencedDeclaration": 2449,
                            "src": "1252:11:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                              "typeString": "struct IPool.TokenAmount"
                            }
                          },
                          "id": 2698,
                          "nodeType": "ArrayTypeName",
                          "src": "1252:13:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                            "typeString": "struct IPool.TokenAmount[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2701,
                        "mutability": "mutable",
                        "name": "oldLiquidity",
                        "nameLocation": "1308:12:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2703,
                        "src": "1300:20:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2700,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1300:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1187:143:19"
                  },
                  "scope": 2753,
                  "src": "1002:329:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "bcdb4dad",
                  "id": 2724,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getImmutables",
                  "nameLocation": "1346:13:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2704,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1359:2:19"
                  },
                  "returnParameters": {
                    "id": 2723,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2706,
                        "mutability": "mutable",
                        "name": "_MAX_TICK_LIQUIDITY",
                        "nameLocation": "1430:19:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2724,
                        "src": "1422:27:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 2705,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1422:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2708,
                        "mutability": "mutable",
                        "name": "_tickSpacing",
                        "nameLocation": "1470:12:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2724,
                        "src": "1463:19:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        },
                        "typeName": {
                          "id": 2707,
                          "name": "uint24",
                          "nodeType": "ElementaryTypeName",
                          "src": "1463:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2710,
                        "mutability": "mutable",
                        "name": "_swapFee",
                        "nameLocation": "1503:8:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2724,
                        "src": "1496:15:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        },
                        "typeName": {
                          "id": 2709,
                          "name": "uint24",
                          "nodeType": "ElementaryTypeName",
                          "src": "1496:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2712,
                        "mutability": "mutable",
                        "name": "_barFeeTo",
                        "nameLocation": "1533:9:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2724,
                        "src": "1525:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2711,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1525:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2715,
                        "mutability": "mutable",
                        "name": "_bento",
                        "nameLocation": "1573:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2724,
                        "src": "1556:23:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                          "typeString": "contract IBentoBoxMinimal"
                        },
                        "typeName": {
                          "id": 2714,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2713,
                            "name": "IBentoBoxMinimal",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2253,
                            "src": "1556:16:19"
                          },
                          "referencedDeclaration": 2253,
                          "src": "1556:16:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2718,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "1609:15:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2724,
                        "src": "1593:31:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                          "typeString": "contract IMasterDeployer"
                        },
                        "typeName": {
                          "id": 2717,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2716,
                            "name": "IMasterDeployer",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2356,
                            "src": "1593:15:19"
                          },
                          "referencedDeclaration": 2356,
                          "src": "1593:15:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                            "typeString": "contract IMasterDeployer"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2720,
                        "mutability": "mutable",
                        "name": "_token0",
                        "nameLocation": "1646:7:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2724,
                        "src": "1638:15:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2719,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1638:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2722,
                        "mutability": "mutable",
                        "name": "_token1",
                        "nameLocation": "1675:7:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2724,
                        "src": "1667:15:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2721,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1667:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1408:284:19"
                  },
                  "scope": 2753,
                  "src": "1337:356:19",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "8c347f9b",
                  "id": 2731,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPriceAndNearestTicks",
                  "nameLocation": "1708:23:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2725,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1731:2:19"
                  },
                  "returnParameters": {
                    "id": 2730,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2727,
                        "mutability": "mutable",
                        "name": "_price",
                        "nameLocation": "1765:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2731,
                        "src": "1757:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "typeName": {
                          "id": 2726,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "1757:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2729,
                        "mutability": "mutable",
                        "name": "_nearestTick",
                        "nameLocation": "1779:12:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2731,
                        "src": "1773:18:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 2728,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "1773:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1756:36:19"
                  },
                  "scope": 2753,
                  "src": "1699:94:19",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "fb5d80b3",
                  "id": 2738,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTokenProtocolFees",
                  "nameLocation": "1808:20:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2732,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1828:2:19"
                  },
                  "returnParameters": {
                    "id": 2737,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2734,
                        "mutability": "mutable",
                        "name": "_token0ProtocolFee",
                        "nameLocation": "1862:18:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2738,
                        "src": "1854:26:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 2733,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1854:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2736,
                        "mutability": "mutable",
                        "name": "_token1ProtocolFee",
                        "nameLocation": "1890:18:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2738,
                        "src": "1882:26:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 2735,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1882:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1853:56:19"
                  },
                  "scope": 2753,
                  "src": "1799:111:19",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "0902f1ac",
                  "id": 2745,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReserves",
                  "nameLocation": "1925:11:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2739,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1936:2:19"
                  },
                  "returnParameters": {
                    "id": 2744,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2741,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "1970:9:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2745,
                        "src": "1962:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 2740,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1962:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2743,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "1989:9:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2745,
                        "src": "1981:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 2742,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1981:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1961:38:19"
                  },
                  "scope": 2753,
                  "src": "1916:84:19",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "6d59d802",
                  "id": 2752,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSecondsGrowthAndLastObservation",
                  "nameLocation": "2015:34:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2746,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2049:2:19"
                  },
                  "returnParameters": {
                    "id": 2751,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2748,
                        "mutability": "mutable",
                        "name": "_secondGrowthGlobal",
                        "nameLocation": "2083:19:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2752,
                        "src": "2075:27:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "typeName": {
                          "id": 2747,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "2075:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2750,
                        "mutability": "mutable",
                        "name": "_lastObservation",
                        "nameLocation": "2111:16:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2752,
                        "src": "2104:23:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 2749,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2104:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2074:54:19"
                  },
                  "scope": 2753,
                  "src": "2006:123:19",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2754,
              "src": "281:1850:19",
              "usedErrors": []
            }
          ],
          "src": "46:2086:19"
        },
        "id": 19
      },
      "contracts/interfaces/concentratedPool/IConcentratedLiquidityPoolManager.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/concentratedPool/IConcentratedLiquidityPoolManager.sol",
          "exportedSymbols": {
            "IBentoBoxMinimal": [
              2253
            ],
            "IConcentratedLiquidityPool": [
              2753
            ],
            "IConcentratedLiquidityPoolManager": [
              2796
            ],
            "IConcentratedLiquidityPoolManagerStruct": [
              2776
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "ITridentNFT": [
              2493
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "TickMath": [
              4217
            ],
            "Ticks": [
              4906
            ],
            "console": [
              32437
            ]
          },
          "id": 2797,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2755,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:20"
            },
            {
              "absolutePath": "contracts/interfaces/concentratedPool/IConcentratedLiquidityPool.sol",
              "file": "./IConcentratedLiquidityPool.sol",
              "id": 2756,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2797,
              "sourceUnit": 2754,
              "src": "72:42:20",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ITridentNFT.sol",
              "file": "./../ITridentNFT.sol",
              "id": 2757,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2797,
              "sourceUnit": 2494,
              "src": "115:30:20",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2758,
                "nodeType": "StructuredDocumentation",
                "src": "147:144:20",
                "text": "@notice Trident concentrated liquidity manager contract Struct.\n @dev Split out struct and function declarations due to solidity quirks."
              },
              "fullyImplemented": true,
              "id": 2776,
              "linearizedBaseContracts": [
                2776
              ],
              "name": "IConcentratedLiquidityPoolManagerStruct",
              "nameLocation": "301:39:20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "IConcentratedLiquidityPoolManagerStruct.Position",
                  "id": 2775,
                  "members": [
                    {
                      "constant": false,
                      "id": 2761,
                      "mutability": "mutable",
                      "name": "pool",
                      "nameLocation": "400:4:20",
                      "nodeType": "VariableDeclaration",
                      "scope": 2775,
                      "src": "373:31:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                        "typeString": "contract IConcentratedLiquidityPool"
                      },
                      "typeName": {
                        "id": 2760,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 2759,
                          "name": "IConcentratedLiquidityPool",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 2753,
                          "src": "373:26:20"
                        },
                        "referencedDeclaration": 2753,
                        "src": "373:26:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                          "typeString": "contract IConcentratedLiquidityPool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2763,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nameLocation": "422:9:20",
                      "nodeType": "VariableDeclaration",
                      "scope": 2775,
                      "src": "414:17:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 2762,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "414:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2765,
                      "mutability": "mutable",
                      "name": "lower",
                      "nameLocation": "447:5:20",
                      "nodeType": "VariableDeclaration",
                      "scope": 2775,
                      "src": "441:11:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      },
                      "typeName": {
                        "id": 2764,
                        "name": "int24",
                        "nodeType": "ElementaryTypeName",
                        "src": "441:5:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2767,
                      "mutability": "mutable",
                      "name": "upper",
                      "nameLocation": "468:5:20",
                      "nodeType": "VariableDeclaration",
                      "scope": 2775,
                      "src": "462:11:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      },
                      "typeName": {
                        "id": 2766,
                        "name": "int24",
                        "nodeType": "ElementaryTypeName",
                        "src": "462:5:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2769,
                      "mutability": "mutable",
                      "name": "latestAddition",
                      "nameLocation": "490:14:20",
                      "nodeType": "VariableDeclaration",
                      "scope": 2775,
                      "src": "483:21:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 2768,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "483:6:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2771,
                      "mutability": "mutable",
                      "name": "feeGrowthInside0",
                      "nameLocation": "522:16:20",
                      "nodeType": "VariableDeclaration",
                      "scope": 2775,
                      "src": "514:24:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2770,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "514:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2774,
                      "mutability": "mutable",
                      "name": "feeGrowthInside1",
                      "nameLocation": "588:16:20",
                      "nodeType": "VariableDeclaration",
                      "scope": 2775,
                      "src": "580:24:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2773,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "580:7:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Position",
                  "nameLocation": "354:8:20",
                  "nodeType": "StructDefinition",
                  "scope": 2776,
                  "src": "347:264:20",
                  "visibility": "public"
                }
              ],
              "scope": 2797,
              "src": "291:322:20",
              "usedErrors": []
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2778,
                    "name": "IConcentratedLiquidityPoolManagerStruct",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2776,
                    "src": "733:39:20"
                  },
                  "id": 2779,
                  "nodeType": "InheritanceSpecifier",
                  "src": "733:39:20"
                },
                {
                  "baseName": {
                    "id": 2780,
                    "name": "ITridentNFT",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2493,
                    "src": "774:11:20"
                  },
                  "id": 2781,
                  "nodeType": "InheritanceSpecifier",
                  "src": "774:11:20"
                }
              ],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2777,
                "nodeType": "StructuredDocumentation",
                "src": "615:71:20",
                "text": "@notice Trident concentrated liquidity manager contract interface."
              },
              "fullyImplemented": false,
              "id": 2796,
              "linearizedBaseContracts": [
                2796,
                2493,
                2776
              ],
              "name": "IConcentratedLiquidityPoolManager",
              "nameLocation": "696:33:20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "99fbab88",
                  "id": 2789,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "positions",
                  "nameLocation": "801:9:20",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2784,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2783,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2789,
                        "src": "811:7:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2782,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "811:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "810:9:20"
                  },
                  "returnParameters": {
                    "id": 2788,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2787,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2789,
                        "src": "843:15:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                          "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position"
                        },
                        "typeName": {
                          "id": 2786,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2785,
                            "name": "Position",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2775,
                            "src": "843:8:20"
                          },
                          "referencedDeclaration": 2775,
                          "src": "843:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                            "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "842:17:20"
                  },
                  "scope": 2796,
                  "src": "792:68:20",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "4da31827",
                  "id": 2795,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "bento",
                  "nameLocation": "875:5:20",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2790,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "880:2:20"
                  },
                  "returnParameters": {
                    "id": 2794,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2793,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2795,
                        "src": "906:16:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                          "typeString": "contract IBentoBoxMinimal"
                        },
                        "typeName": {
                          "id": 2792,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2791,
                            "name": "IBentoBoxMinimal",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2253,
                            "src": "906:16:20"
                          },
                          "referencedDeclaration": 2253,
                          "src": "906:16:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "905:18:20"
                  },
                  "scope": 2796,
                  "src": "866:58:20",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2797,
              "src": "686:240:20",
              "usedErrors": []
            }
          ],
          "src": "46:881:20"
        },
        "id": 20
      },
      "contracts/interfaces/concentratedPool/IPositionManager.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/concentratedPool/IPositionManager.sol",
          "exportedSymbols": {
            "IPositionManager": [
              2819
            ]
          },
          "id": 2820,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2798,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:21"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2799,
                "nodeType": "StructuredDocumentation",
                "src": "72:72:21",
                "text": "@notice Trident concentrated Liquidity pool mint callback receiver."
              },
              "fullyImplemented": false,
              "id": 2819,
              "linearizedBaseContracts": [
                2819
              ],
              "name": "IPositionManager",
              "nameLocation": "154:16:21",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "6d59ebe1",
                  "id": 2818,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "positionMintCallback",
                  "nameLocation": "186:20:21",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2814,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2801,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "224:9:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2818,
                        "src": "216:17:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2800,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "216:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2803,
                        "mutability": "mutable",
                        "name": "lower",
                        "nameLocation": "249:5:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2818,
                        "src": "243:11:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 2802,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "243:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2805,
                        "mutability": "mutable",
                        "name": "upper",
                        "nameLocation": "270:5:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2818,
                        "src": "264:11:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 2804,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "264:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2807,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "293:6:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2818,
                        "src": "285:14:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 2806,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "285:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2809,
                        "mutability": "mutable",
                        "name": "feeGrowthInside0",
                        "nameLocation": "317:16:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2818,
                        "src": "309:24:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2808,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "309:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2811,
                        "mutability": "mutable",
                        "name": "feeGrowthInside1",
                        "nameLocation": "351:16:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2818,
                        "src": "343:24:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2810,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "343:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2813,
                        "mutability": "mutable",
                        "name": "positionId",
                        "nameLocation": "385:10:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2818,
                        "src": "377:18:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2812,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "377:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "206:195:21"
                  },
                  "returnParameters": {
                    "id": 2817,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2816,
                        "mutability": "mutable",
                        "name": "_positionId",
                        "nameLocation": "428:11:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2818,
                        "src": "420:19:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2815,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "420:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "419:21:21"
                  },
                  "scope": 2819,
                  "src": "177:264:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2820,
              "src": "144:299:21",
              "usedErrors": []
            }
          ],
          "src": "46:398:21"
        },
        "id": 21
      },
      "contracts/libraries/MathUtils.sol": {
        "ast": {
          "absolutePath": "contracts/libraries/MathUtils.sol",
          "exportedSymbols": {
            "MathUtils": [
              2852
            ]
          },
          "id": 2853,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2821,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:22"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 2822,
                "nodeType": "StructuredDocumentation",
                "src": "72:207:22",
                "text": "@notice A library that contains functions for calculating differences between two uint256.\n @author Adapted from https://github.com/saddle-finance/saddle-contract/blob/master/contracts/MathUtils.sol."
              },
              "fullyImplemented": true,
              "id": 2852,
              "linearizedBaseContracts": [
                2852
              ],
              "name": "MathUtils",
              "nameLocation": "287:9:22",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 2850,
                    "nodeType": "Block",
                    "src": "588:142:22",
                    "statements": [
                      {
                        "id": 2849,
                        "nodeType": "UncheckedBlock",
                        "src": "598:126:22",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2834,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2832,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2825,
                                "src": "626:1:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "id": 2833,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2827,
                                "src": "630:1:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "626:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 2842,
                            "nodeType": "IfStatement",
                            "src": "622:61:22",
                            "trueBody": {
                              "id": 2841,
                              "nodeType": "Block",
                              "src": "633:50:22",
                              "statements": [
                                {
                                  "expression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2839,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2837,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 2835,
                                        "name": "a",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2825,
                                        "src": "658:1:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 2836,
                                        "name": "b",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2827,
                                        "src": "662:1:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "658:5:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 2838,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "667:1:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "658:10:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "functionReturnParameters": 2831,
                                  "id": 2840,
                                  "nodeType": "Return",
                                  "src": "651:17:22"
                                }
                              ]
                            }
                          },
                          {
                            "expression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2847,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2845,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2843,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2827,
                                  "src": "703:1:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 2844,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2825,
                                  "src": "707:1:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "703:5:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 2846,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "712:1:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "703:10:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "functionReturnParameters": 2831,
                            "id": 2848,
                            "nodeType": "Return",
                            "src": "696:17:22"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2823,
                    "nodeType": "StructuredDocumentation",
                    "src": "303:212:22",
                    "text": "@notice Compares a and b and returns 'true' if the difference between a and b\n is less than 1 or equal to each other.\n @param a uint256 to compare with.\n @param b uint256 to compare with."
                  },
                  "id": 2851,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "within1",
                  "nameLocation": "529:7:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2828,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2825,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "545:1:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 2851,
                        "src": "537:9:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2824,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "537:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2827,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "556:1:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 2851,
                        "src": "548:9:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2826,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "548:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "536:22:22"
                  },
                  "returnParameters": {
                    "id": 2831,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2830,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2851,
                        "src": "582:4:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2829,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "582:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "581:6:22"
                  },
                  "scope": 2852,
                  "src": "520:210:22",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 2853,
              "src": "279:453:22",
              "usedErrors": []
            }
          ],
          "src": "46:687:22"
        },
        "id": 22
      },
      "contracts/libraries/RebaseLibrary.sol": {
        "ast": {
          "absolutePath": "contracts/libraries/RebaseLibrary.sol",
          "exportedSymbols": {
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ]
          },
          "id": 2930,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2854,
              "literals": [
                "solidity",
                "^",
                "0.8"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:21:23"
            },
            {
              "canonicalName": "Rebase",
              "id": 2859,
              "members": [
                {
                  "constant": false,
                  "id": 2856,
                  "mutability": "mutable",
                  "name": "elastic",
                  "nameLocation": "97:7:23",
                  "nodeType": "VariableDeclaration",
                  "scope": 2859,
                  "src": "89:15:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2855,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "89:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2858,
                  "mutability": "mutable",
                  "name": "base",
                  "nameLocation": "118:4:23",
                  "nodeType": "VariableDeclaration",
                  "scope": 2859,
                  "src": "110:12:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 2857,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "110:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "Rebase",
              "nameLocation": "76:6:23",
              "nodeType": "StructDefinition",
              "scope": 2930,
              "src": "69:56:23",
              "visibility": "public"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 2860,
                "nodeType": "StructuredDocumentation",
                "src": "127:31:23",
                "text": "@notice A rebasing library"
              },
              "fullyImplemented": true,
              "id": 2929,
              "linearizedBaseContracts": [
                2929
              ],
              "name": "RebaseLibrary",
              "nameLocation": "166:13:23",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 2893,
                    "nodeType": "Block",
                    "src": "361:155:23",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "id": 2874,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 2871,
                              "name": "total",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2864,
                              "src": "375:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Rebase_$2859_memory_ptr",
                                "typeString": "struct Rebase memory"
                              }
                            },
                            "id": 2872,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "elastic",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2856,
                            "src": "375:13:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2873,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "392:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "375:18:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2891,
                          "nodeType": "Block",
                          "src": "440:70:23",
                          "statements": [
                            {
                              "expression": {
                                "id": 2889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2880,
                                  "name": "base",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2869,
                                  "src": "454:4:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2888,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 2884,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 2881,
                                          "name": "elastic",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2866,
                                          "src": "462:7:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "expression": {
                                            "id": 2882,
                                            "name": "total",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2864,
                                            "src": "472:5:23",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Rebase_$2859_memory_ptr",
                                              "typeString": "struct Rebase memory"
                                            }
                                          },
                                          "id": 2883,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "base",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2858,
                                          "src": "472:10:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        },
                                        "src": "462:20:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 2885,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "461:22:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 2886,
                                      "name": "total",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2864,
                                      "src": "486:5:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Rebase_$2859_memory_ptr",
                                        "typeString": "struct Rebase memory"
                                      }
                                    },
                                    "id": 2887,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "elastic",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2856,
                                    "src": "486:13:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "src": "461:38:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "454:45:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2890,
                              "nodeType": "ExpressionStatement",
                              "src": "454:45:23"
                            }
                          ]
                        },
                        "id": 2892,
                        "nodeType": "IfStatement",
                        "src": "371:139:23",
                        "trueBody": {
                          "id": 2879,
                          "nodeType": "Block",
                          "src": "395:39:23",
                          "statements": [
                            {
                              "expression": {
                                "id": 2877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2875,
                                  "name": "base",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2869,
                                  "src": "409:4:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 2876,
                                  "name": "elastic",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2866,
                                  "src": "416:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "409:14:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2878,
                              "nodeType": "ExpressionStatement",
                              "src": "409:14:23"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2861,
                    "nodeType": "StructuredDocumentation",
                    "src": "186:79:23",
                    "text": "@notice Calculates the base value in relationship to `elastic` and `total`."
                  },
                  "id": 2894,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toBase",
                  "nameLocation": "279:6:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2867,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2864,
                        "mutability": "mutable",
                        "name": "total",
                        "nameLocation": "300:5:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2894,
                        "src": "286:19:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Rebase_$2859_memory_ptr",
                          "typeString": "struct Rebase"
                        },
                        "typeName": {
                          "id": 2863,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2862,
                            "name": "Rebase",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2859,
                            "src": "286:6:23"
                          },
                          "referencedDeclaration": 2859,
                          "src": "286:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Rebase_$2859_storage_ptr",
                            "typeString": "struct Rebase"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2866,
                        "mutability": "mutable",
                        "name": "elastic",
                        "nameLocation": "315:7:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2894,
                        "src": "307:15:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2865,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "307:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "285:38:23"
                  },
                  "returnParameters": {
                    "id": 2870,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2869,
                        "mutability": "mutable",
                        "name": "base",
                        "nameLocation": "355:4:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2894,
                        "src": "347:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2868,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "347:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "346:14:23"
                  },
                  "scope": 2929,
                  "src": "270:246:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2927,
                    "nodeType": "Block",
                    "src": "700:152:23",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "id": 2908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 2905,
                              "name": "total",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2898,
                              "src": "714:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Rebase_$2859_memory_ptr",
                                "typeString": "struct Rebase memory"
                              }
                            },
                            "id": 2906,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "base",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2858,
                            "src": "714:10:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2907,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "728:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "714:15:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2925,
                          "nodeType": "Block",
                          "src": "776:70:23",
                          "statements": [
                            {
                              "expression": {
                                "id": 2923,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2914,
                                  "name": "elastic",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2903,
                                  "src": "790:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 2922,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 2918,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 2915,
                                          "name": "base",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2900,
                                          "src": "801:4:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "expression": {
                                            "id": 2916,
                                            "name": "total",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2898,
                                            "src": "808:5:23",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Rebase_$2859_memory_ptr",
                                              "typeString": "struct Rebase memory"
                                            }
                                          },
                                          "id": 2917,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "elastic",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2856,
                                          "src": "808:13:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        },
                                        "src": "801:20:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 2919,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "800:22:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 2920,
                                      "name": "total",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2898,
                                      "src": "825:5:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Rebase_$2859_memory_ptr",
                                        "typeString": "struct Rebase memory"
                                      }
                                    },
                                    "id": 2921,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "base",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2858,
                                    "src": "825:10:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "src": "800:35:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "790:45:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2924,
                              "nodeType": "ExpressionStatement",
                              "src": "790:45:23"
                            }
                          ]
                        },
                        "id": 2926,
                        "nodeType": "IfStatement",
                        "src": "710:136:23",
                        "trueBody": {
                          "id": 2913,
                          "nodeType": "Block",
                          "src": "731:39:23",
                          "statements": [
                            {
                              "expression": {
                                "id": 2911,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2909,
                                  "name": "elastic",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2903,
                                  "src": "745:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 2910,
                                  "name": "base",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2900,
                                  "src": "755:4:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "745:14:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2912,
                              "nodeType": "ExpressionStatement",
                              "src": "745:14:23"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2895,
                    "nodeType": "StructuredDocumentation",
                    "src": "522:79:23",
                    "text": "@notice Calculates the elastic value in relationship to `base` and `total`."
                  },
                  "id": 2928,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "toElastic",
                  "nameLocation": "615:9:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2901,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2898,
                        "mutability": "mutable",
                        "name": "total",
                        "nameLocation": "639:5:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2928,
                        "src": "625:19:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Rebase_$2859_memory_ptr",
                          "typeString": "struct Rebase"
                        },
                        "typeName": {
                          "id": 2897,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2896,
                            "name": "Rebase",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2859,
                            "src": "625:6:23"
                          },
                          "referencedDeclaration": 2859,
                          "src": "625:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Rebase_$2859_storage_ptr",
                            "typeString": "struct Rebase"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2900,
                        "mutability": "mutable",
                        "name": "base",
                        "nameLocation": "654:4:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2928,
                        "src": "646:12:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2899,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "646:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "624:35:23"
                  },
                  "returnParameters": {
                    "id": 2904,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2903,
                        "mutability": "mutable",
                        "name": "elastic",
                        "nameLocation": "691:7:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 2928,
                        "src": "683:15:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2902,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "683:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "682:17:23"
                  },
                  "scope": 2929,
                  "src": "606:246:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 2930,
              "src": "158:696:23",
              "usedErrors": []
            }
          ],
          "src": "46:809:23"
        },
        "id": 23
      },
      "contracts/libraries/TridentMath.sol": {
        "ast": {
          "absolutePath": "contracts/libraries/TridentMath.sol",
          "exportedSymbols": {
            "TridentMath": [
              3139
            ]
          },
          "id": 3140,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2931,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:24"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 2932,
                "nodeType": "StructuredDocumentation",
                "src": "72:41:24",
                "text": "@notice Trident sqrt helper library."
              },
              "fullyImplemented": true,
              "id": 3139,
              "linearizedBaseContracts": [
                3139
              ],
              "name": "TridentMath",
              "nameLocation": "121:11:24",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3137,
                    "nodeType": "Block",
                    "src": "569:1367:24",
                    "statements": [
                      {
                        "id": 3136,
                        "nodeType": "UncheckedBlock",
                        "src": "579:1351:24",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2942,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 2940,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2935,
                                "src": "607:1:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 2941,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "612:1:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "607:6:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 3134,
                              "nodeType": "Block",
                              "src": "644:1276:24",
                              "statements": [
                                {
                                  "assignments": [
                                    2948
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 2948,
                                      "mutability": "mutable",
                                      "name": "xx",
                                      "nameLocation": "670:2:24",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 3134,
                                      "src": "662:10:24",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 2947,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "662:7:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 2950,
                                  "initialValue": {
                                    "id": 2949,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2935,
                                    "src": "675:1:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "662:14:24"
                                },
                                {
                                  "assignments": [
                                    2952
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 2952,
                                      "mutability": "mutable",
                                      "name": "r",
                                      "nameLocation": "702:1:24",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 3134,
                                      "src": "694:9:24",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 2951,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "694:7:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 2954,
                                  "initialValue": {
                                    "hexValue": "31",
                                    "id": 2953,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "706:1:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "694:13:24"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2957,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 2955,
                                      "name": "xx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2948,
                                      "src": "729:2:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                                      "id": 2956,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "735:35:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                        "typeString": "int_const 3402...(31 digits omitted)...1456"
                                      },
                                      "value": "0x100000000000000000000000000000000"
                                    },
                                    "src": "729:41:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 2967,
                                  "nodeType": "IfStatement",
                                  "src": "725:128:24",
                                  "trueBody": {
                                    "id": 2966,
                                    "nodeType": "Block",
                                    "src": "772:81:24",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 2960,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 2958,
                                            "name": "xx",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2948,
                                            "src": "794:2:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": ">>=",
                                          "rightHandSide": {
                                            "hexValue": "313238",
                                            "id": 2959,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "801:3:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_128_by_1",
                                              "typeString": "int_const 128"
                                            },
                                            "value": "128"
                                          },
                                          "src": "794:10:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2961,
                                        "nodeType": "ExpressionStatement",
                                        "src": "794:10:24"
                                      },
                                      {
                                        "expression": {
                                          "id": 2964,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 2962,
                                            "name": "r",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2952,
                                            "src": "826:1:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "<<=",
                                          "rightHandSide": {
                                            "hexValue": "3634",
                                            "id": 2963,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "832:2:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_64_by_1",
                                              "typeString": "int_const 64"
                                            },
                                            "value": "64"
                                          },
                                          "src": "826:8:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2965,
                                        "nodeType": "ExpressionStatement",
                                        "src": "826:8:24"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2970,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 2968,
                                      "name": "xx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2948,
                                      "src": "874:2:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "hexValue": "30783130303030303030303030303030303030",
                                      "id": 2969,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "880:19:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_18446744073709551616_by_1",
                                        "typeString": "int_const 18446744073709551616"
                                      },
                                      "value": "0x10000000000000000"
                                    },
                                    "src": "874:25:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 2980,
                                  "nodeType": "IfStatement",
                                  "src": "870:111:24",
                                  "trueBody": {
                                    "id": 2979,
                                    "nodeType": "Block",
                                    "src": "901:80:24",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 2973,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 2971,
                                            "name": "xx",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2948,
                                            "src": "923:2:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": ">>=",
                                          "rightHandSide": {
                                            "hexValue": "3634",
                                            "id": 2972,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "930:2:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_64_by_1",
                                              "typeString": "int_const 64"
                                            },
                                            "value": "64"
                                          },
                                          "src": "923:9:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2974,
                                        "nodeType": "ExpressionStatement",
                                        "src": "923:9:24"
                                      },
                                      {
                                        "expression": {
                                          "id": 2977,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 2975,
                                            "name": "r",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2952,
                                            "src": "954:1:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "<<=",
                                          "rightHandSide": {
                                            "hexValue": "3332",
                                            "id": 2976,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "960:2:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_32_by_1",
                                              "typeString": "int_const 32"
                                            },
                                            "value": "32"
                                          },
                                          "src": "954:8:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2978,
                                        "nodeType": "ExpressionStatement",
                                        "src": "954:8:24"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2983,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 2981,
                                      "name": "xx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2948,
                                      "src": "1002:2:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "hexValue": "3078313030303030303030",
                                      "id": 2982,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1008:11:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4294967296_by_1",
                                        "typeString": "int_const 4294967296"
                                      },
                                      "value": "0x100000000"
                                    },
                                    "src": "1002:17:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 2993,
                                  "nodeType": "IfStatement",
                                  "src": "998:103:24",
                                  "trueBody": {
                                    "id": 2992,
                                    "nodeType": "Block",
                                    "src": "1021:80:24",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 2986,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 2984,
                                            "name": "xx",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2948,
                                            "src": "1043:2:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": ">>=",
                                          "rightHandSide": {
                                            "hexValue": "3332",
                                            "id": 2985,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1050:2:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_32_by_1",
                                              "typeString": "int_const 32"
                                            },
                                            "value": "32"
                                          },
                                          "src": "1043:9:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2987,
                                        "nodeType": "ExpressionStatement",
                                        "src": "1043:9:24"
                                      },
                                      {
                                        "expression": {
                                          "id": 2990,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 2988,
                                            "name": "r",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2952,
                                            "src": "1074:1:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "<<=",
                                          "rightHandSide": {
                                            "hexValue": "3136",
                                            "id": 2989,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1080:2:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_16_by_1",
                                              "typeString": "int_const 16"
                                            },
                                            "value": "16"
                                          },
                                          "src": "1074:8:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2991,
                                        "nodeType": "ExpressionStatement",
                                        "src": "1074:8:24"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2996,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 2994,
                                      "name": "xx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2948,
                                      "src": "1122:2:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "hexValue": "30783130303030",
                                      "id": 2995,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1128:7:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_65536_by_1",
                                        "typeString": "int_const 65536"
                                      },
                                      "value": "0x10000"
                                    },
                                    "src": "1122:13:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 3006,
                                  "nodeType": "IfStatement",
                                  "src": "1118:98:24",
                                  "trueBody": {
                                    "id": 3005,
                                    "nodeType": "Block",
                                    "src": "1137:79:24",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 2999,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 2997,
                                            "name": "xx",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2948,
                                            "src": "1159:2:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": ">>=",
                                          "rightHandSide": {
                                            "hexValue": "3136",
                                            "id": 2998,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1166:2:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_16_by_1",
                                              "typeString": "int_const 16"
                                            },
                                            "value": "16"
                                          },
                                          "src": "1159:9:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 3000,
                                        "nodeType": "ExpressionStatement",
                                        "src": "1159:9:24"
                                      },
                                      {
                                        "expression": {
                                          "id": 3003,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 3001,
                                            "name": "r",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2952,
                                            "src": "1190:1:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "<<=",
                                          "rightHandSide": {
                                            "hexValue": "38",
                                            "id": 3002,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1196:1:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_8_by_1",
                                              "typeString": "int_const 8"
                                            },
                                            "value": "8"
                                          },
                                          "src": "1190:7:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 3004,
                                        "nodeType": "ExpressionStatement",
                                        "src": "1190:7:24"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3009,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3007,
                                      "name": "xx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2948,
                                      "src": "1237:2:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "hexValue": "3078313030",
                                      "id": 3008,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1243:5:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_256_by_1",
                                        "typeString": "int_const 256"
                                      },
                                      "value": "0x100"
                                    },
                                    "src": "1237:11:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 3019,
                                  "nodeType": "IfStatement",
                                  "src": "1233:95:24",
                                  "trueBody": {
                                    "id": 3018,
                                    "nodeType": "Block",
                                    "src": "1250:78:24",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 3012,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 3010,
                                            "name": "xx",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2948,
                                            "src": "1272:2:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": ">>=",
                                          "rightHandSide": {
                                            "hexValue": "38",
                                            "id": 3011,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1279:1:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_8_by_1",
                                              "typeString": "int_const 8"
                                            },
                                            "value": "8"
                                          },
                                          "src": "1272:8:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 3013,
                                        "nodeType": "ExpressionStatement",
                                        "src": "1272:8:24"
                                      },
                                      {
                                        "expression": {
                                          "id": 3016,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 3014,
                                            "name": "r",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2952,
                                            "src": "1302:1:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "<<=",
                                          "rightHandSide": {
                                            "hexValue": "34",
                                            "id": 3015,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1308:1:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_4_by_1",
                                              "typeString": "int_const 4"
                                            },
                                            "value": "4"
                                          },
                                          "src": "1302:7:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 3017,
                                        "nodeType": "ExpressionStatement",
                                        "src": "1302:7:24"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3022,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3020,
                                      "name": "xx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2948,
                                      "src": "1349:2:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "hexValue": "30783130",
                                      "id": 3021,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1355:4:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_16_by_1",
                                        "typeString": "int_const 16"
                                      },
                                      "value": "0x10"
                                    },
                                    "src": "1349:10:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 3032,
                                  "nodeType": "IfStatement",
                                  "src": "1345:94:24",
                                  "trueBody": {
                                    "id": 3031,
                                    "nodeType": "Block",
                                    "src": "1361:78:24",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 3025,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 3023,
                                            "name": "xx",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2948,
                                            "src": "1383:2:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": ">>=",
                                          "rightHandSide": {
                                            "hexValue": "34",
                                            "id": 3024,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1390:1:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_4_by_1",
                                              "typeString": "int_const 4"
                                            },
                                            "value": "4"
                                          },
                                          "src": "1383:8:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 3026,
                                        "nodeType": "ExpressionStatement",
                                        "src": "1383:8:24"
                                      },
                                      {
                                        "expression": {
                                          "id": 3029,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 3027,
                                            "name": "r",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2952,
                                            "src": "1413:1:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "<<=",
                                          "rightHandSide": {
                                            "hexValue": "32",
                                            "id": 3028,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1419:1:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_2_by_1",
                                              "typeString": "int_const 2"
                                            },
                                            "value": "2"
                                          },
                                          "src": "1413:7:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 3030,
                                        "nodeType": "ExpressionStatement",
                                        "src": "1413:7:24"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3035,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3033,
                                      "name": "xx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2948,
                                      "src": "1460:2:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "hexValue": "307838",
                                      "id": 3034,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1466:3:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_8_by_1",
                                        "typeString": "int_const 8"
                                      },
                                      "value": "0x8"
                                    },
                                    "src": "1460:9:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 3041,
                                  "nodeType": "IfStatement",
                                  "src": "1456:63:24",
                                  "trueBody": {
                                    "id": 3040,
                                    "nodeType": "Block",
                                    "src": "1471:48:24",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 3038,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 3036,
                                            "name": "r",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2952,
                                            "src": "1493:1:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "<<=",
                                          "rightHandSide": {
                                            "hexValue": "31",
                                            "id": 3037,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1499:1:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "1493:7:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 3039,
                                        "nodeType": "ExpressionStatement",
                                        "src": "1493:7:24"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 3051,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 3042,
                                      "name": "r",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2952,
                                      "src": "1536:1:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3050,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 3047,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 3043,
                                              "name": "r",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2952,
                                              "src": "1541:1:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 3046,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 3044,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2935,
                                                "src": "1545:1:24",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "/",
                                              "rightExpression": {
                                                "id": 3045,
                                                "name": "r",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2952,
                                                "src": "1549:1:24",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "1545:5:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "1541:9:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 3048,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1540:11:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 3049,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1555:1:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "1540:16:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1536:20:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3052,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1536:20:24"
                                },
                                {
                                  "expression": {
                                    "id": 3062,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 3053,
                                      "name": "r",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2952,
                                      "src": "1574:1:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3061,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 3058,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 3054,
                                              "name": "r",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2952,
                                              "src": "1579:1:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 3057,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 3055,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2935,
                                                "src": "1583:1:24",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "/",
                                              "rightExpression": {
                                                "id": 3056,
                                                "name": "r",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2952,
                                                "src": "1587:1:24",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "1583:5:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "1579:9:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 3059,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1578:11:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 3060,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1593:1:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "1578:16:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1574:20:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3063,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1574:20:24"
                                },
                                {
                                  "expression": {
                                    "id": 3073,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 3064,
                                      "name": "r",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2952,
                                      "src": "1612:1:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3072,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 3069,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 3065,
                                              "name": "r",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2952,
                                              "src": "1617:1:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 3068,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 3066,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2935,
                                                "src": "1621:1:24",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "/",
                                              "rightExpression": {
                                                "id": 3067,
                                                "name": "r",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2952,
                                                "src": "1625:1:24",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "1621:5:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "1617:9:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 3070,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1616:11:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 3071,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1631:1:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "1616:16:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1612:20:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3074,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1612:20:24"
                                },
                                {
                                  "expression": {
                                    "id": 3084,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 3075,
                                      "name": "r",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2952,
                                      "src": "1650:1:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3083,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 3080,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 3076,
                                              "name": "r",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2952,
                                              "src": "1655:1:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 3079,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 3077,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2935,
                                                "src": "1659:1:24",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "/",
                                              "rightExpression": {
                                                "id": 3078,
                                                "name": "r",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2952,
                                                "src": "1663:1:24",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "1659:5:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "1655:9:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 3081,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1654:11:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 3082,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1669:1:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "1654:16:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1650:20:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3085,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1650:20:24"
                                },
                                {
                                  "expression": {
                                    "id": 3095,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 3086,
                                      "name": "r",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2952,
                                      "src": "1688:1:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3094,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 3091,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 3087,
                                              "name": "r",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2952,
                                              "src": "1693:1:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 3090,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 3088,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2935,
                                                "src": "1697:1:24",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "/",
                                              "rightExpression": {
                                                "id": 3089,
                                                "name": "r",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2952,
                                                "src": "1701:1:24",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "1697:5:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "1693:9:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 3092,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1692:11:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 3093,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1707:1:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "1692:16:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1688:20:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3096,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1688:20:24"
                                },
                                {
                                  "expression": {
                                    "id": 3106,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 3097,
                                      "name": "r",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2952,
                                      "src": "1726:1:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3105,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 3102,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 3098,
                                              "name": "r",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2952,
                                              "src": "1731:1:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 3101,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 3099,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2935,
                                                "src": "1735:1:24",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "/",
                                              "rightExpression": {
                                                "id": 3100,
                                                "name": "r",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2952,
                                                "src": "1739:1:24",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "1735:5:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "1731:9:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 3103,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1730:11:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 3104,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1745:1:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "1730:16:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1726:20:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3107,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1726:20:24"
                                },
                                {
                                  "expression": {
                                    "id": 3117,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 3108,
                                      "name": "r",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2952,
                                      "src": "1764:1:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3116,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 3113,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 3109,
                                              "name": "r",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2952,
                                              "src": "1769:1:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 3112,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 3110,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2935,
                                                "src": "1773:1:24",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "/",
                                              "rightExpression": {
                                                "id": 3111,
                                                "name": "r",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2952,
                                                "src": "1777:1:24",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "1773:5:24",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "1769:9:24",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 3114,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1768:11:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">>",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 3115,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1783:1:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "1768:16:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1764:20:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3118,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1764:20:24"
                                },
                                {
                                  "assignments": [
                                    3120
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 3120,
                                      "mutability": "mutable",
                                      "name": "r1",
                                      "nameLocation": "1853:2:24",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 3134,
                                      "src": "1845:10:24",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 3119,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1845:7:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 3124,
                                  "initialValue": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3123,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3121,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2935,
                                      "src": "1858:1:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "id": 3122,
                                      "name": "r",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2952,
                                      "src": "1862:1:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1858:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "1845:18:24"
                                },
                                {
                                  "expression": {
                                    "id": 3132,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 3125,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2938,
                                      "src": "1881:6:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3128,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3126,
                                          "name": "r",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2952,
                                          "src": "1890:1:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                          "id": 3127,
                                          "name": "r1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3120,
                                          "src": "1894:2:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "1890:6:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseExpression": {
                                        "id": 3130,
                                        "name": "r1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3120,
                                        "src": "1903:2:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 3131,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "Conditional",
                                      "src": "1890:15:24",
                                      "trueExpression": {
                                        "id": 3129,
                                        "name": "r",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2952,
                                        "src": "1899:1:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1881:24:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3133,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1881:24:24"
                                }
                              ]
                            },
                            "id": 3135,
                            "nodeType": "IfStatement",
                            "src": "603:1317:24",
                            "trueBody": {
                              "expression": {
                                "id": 2945,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2943,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2938,
                                  "src": "615:6:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "30",
                                  "id": 2944,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "624:1:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "615:10:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2946,
                              "nodeType": "ExpressionStatement",
                              "src": "615:10:24"
                            }
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2933,
                    "nodeType": "StructuredDocumentation",
                    "src": "139:361:24",
                    "text": "@notice Calculate sqrt (x) rounding down, where `x` is unsigned 256-bit integer number.\n @dev Adapted from https://github.com/abdk-consulting/abdk-libraries-solidity/blob/master/ABDKMath64x64.sol, \n © 2019 ABDK Consulting, License-Identifier: BSD-4-Clause.\n @param x Unsigned 256-bit integer number.\n @return result Sqrt result."
                  },
                  "id": 3138,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sqrt",
                  "nameLocation": "514:4:24",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2936,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2935,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "527:1:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3138,
                        "src": "519:9:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2934,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "519:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "518:11:24"
                  },
                  "returnParameters": {
                    "id": 2939,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2938,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "561:6:24",
                        "nodeType": "VariableDeclaration",
                        "scope": 3138,
                        "src": "553:14:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2937,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "553:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "552:16:24"
                  },
                  "scope": 3139,
                  "src": "505:1431:24",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3140,
              "src": "113:1825:24",
              "usedErrors": []
            }
          ],
          "src": "46:1893:24"
        },
        "id": 24
      },
      "contracts/libraries/concentratedPool/DyDxMath.sol": {
        "ast": {
          "absolutePath": "contracts/libraries/concentratedPool/DyDxMath.sol",
          "exportedSymbols": {
            "DyDxMath": [
              3409
            ],
            "FullMath": [
              3590
            ],
            "UnsafeMath": [
              4922
            ]
          },
          "id": 3410,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3141,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:25"
            },
            {
              "absolutePath": "contracts/libraries/concentratedPool/FullMath.sol",
              "file": "./FullMath.sol",
              "id": 3142,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3410,
              "sourceUnit": 3591,
              "src": "72:24:25",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/concentratedPool/UnsafeMath.sol",
              "file": "./UnsafeMath.sol",
              "id": 3143,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3410,
              "sourceUnit": 4923,
              "src": "97:26:25",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3144,
                "nodeType": "StructuredDocumentation",
                "src": "125:73:25",
                "text": "@notice Math library that facilitates ranged liquidity calculations."
              },
              "fullyImplemented": true,
              "id": 3409,
              "linearizedBaseContracts": [
                3409
              ],
              "name": "DyDxMath",
              "nameLocation": "206:8:25",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3184,
                    "nodeType": "Block",
                    "src": "382:315:25",
                    "statements": [
                      {
                        "id": 3183,
                        "nodeType": "UncheckedBlock",
                        "src": "392:299:25",
                        "statements": [
                          {
                            "condition": {
                              "id": 3157,
                              "name": "roundUp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3152,
                              "src": "420:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 3181,
                              "nodeType": "Block",
                              "src": "563:118:25",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 3179,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 3170,
                                      "name": "dy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3155,
                                      "src": "581:2:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 3173,
                                          "name": "liquidity",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3146,
                                          "src": "602:9:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 3176,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 3174,
                                            "name": "priceUpper",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3150,
                                            "src": "613:10:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 3175,
                                            "name": "priceLower",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3148,
                                            "src": "626:10:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "613:23:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "307831303030303030303030303030303030303030303030303030",
                                          "id": 3177,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "638:27:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_79228162514264337593543950336_by_1",
                                            "typeString": "int_const 79228162514264337593543950336"
                                          },
                                          "value": "0x1000000000000000000000000"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_rational_79228162514264337593543950336_by_1",
                                            "typeString": "int_const 79228162514264337593543950336"
                                          }
                                        ],
                                        "expression": {
                                          "id": 3171,
                                          "name": "FullMath",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3590,
                                          "src": "586:8:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_FullMath_$3590_$",
                                            "typeString": "type(library FullMath)"
                                          }
                                        },
                                        "id": 3172,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mulDiv",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3545,
                                        "src": "586:15:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 3178,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "586:80:25",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "581:85:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3180,
                                  "nodeType": "ExpressionStatement",
                                  "src": "581:85:25"
                                }
                              ]
                            },
                            "id": 3182,
                            "nodeType": "IfStatement",
                            "src": "416:265:25",
                            "trueBody": {
                              "id": 3169,
                              "nodeType": "Block",
                              "src": "429:128:25",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 3167,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 3158,
                                      "name": "dy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3155,
                                      "src": "447:2:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 3161,
                                          "name": "liquidity",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3146,
                                          "src": "478:9:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 3164,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 3162,
                                            "name": "priceUpper",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3150,
                                            "src": "489:10:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 3163,
                                            "name": "priceLower",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3148,
                                            "src": "502:10:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "489:23:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "307831303030303030303030303030303030303030303030303030",
                                          "id": 3165,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "514:27:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_79228162514264337593543950336_by_1",
                                            "typeString": "int_const 79228162514264337593543950336"
                                          },
                                          "value": "0x1000000000000000000000000"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_rational_79228162514264337593543950336_by_1",
                                            "typeString": "int_const 79228162514264337593543950336"
                                          }
                                        ],
                                        "expression": {
                                          "id": 3159,
                                          "name": "FullMath",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3590,
                                          "src": "452:8:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_FullMath_$3590_$",
                                            "typeString": "type(library FullMath)"
                                          }
                                        },
                                        "id": 3160,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mulDivRoundingUp",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3589,
                                        "src": "452:25:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 3166,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "452:90:25",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "447:95:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3168,
                                  "nodeType": "ExpressionStatement",
                                  "src": "447:95:25"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  },
                  "id": 3185,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getDy",
                  "nameLocation": "230:5:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3153,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3146,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "253:9:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3185,
                        "src": "245:17:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3145,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "245:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3148,
                        "mutability": "mutable",
                        "name": "priceLower",
                        "nameLocation": "280:10:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3185,
                        "src": "272:18:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3147,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "272:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3150,
                        "mutability": "mutable",
                        "name": "priceUpper",
                        "nameLocation": "308:10:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3185,
                        "src": "300:18:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3149,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "300:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3152,
                        "mutability": "mutable",
                        "name": "roundUp",
                        "nameLocation": "333:7:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3185,
                        "src": "328:12:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3151,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "328:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "235:111:25"
                  },
                  "returnParameters": {
                    "id": 3156,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3155,
                        "mutability": "mutable",
                        "name": "dy",
                        "nameLocation": "378:2:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3185,
                        "src": "370:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3154,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "370:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "369:12:25"
                  },
                  "scope": 3409,
                  "src": "221:476:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3235,
                    "nodeType": "Block",
                    "src": "864:344:25",
                    "statements": [
                      {
                        "id": 3234,
                        "nodeType": "UncheckedBlock",
                        "src": "874:328:25",
                        "statements": [
                          {
                            "condition": {
                              "id": 3198,
                              "name": "roundUp",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3193,
                              "src": "902:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 3232,
                              "nodeType": "Block",
                              "src": "1072:120:25",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 3230,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 3217,
                                      "name": "dx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3196,
                                      "src": "1090:2:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3229,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 3222,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 3220,
                                              "name": "liquidity",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3187,
                                              "src": "1111:9:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<<",
                                            "rightExpression": {
                                              "hexValue": "3936",
                                              "id": 3221,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "1124:2:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_96_by_1",
                                                "typeString": "int_const 96"
                                              },
                                              "value": "96"
                                            },
                                            "src": "1111:15:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 3225,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 3223,
                                              "name": "priceUpper",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3191,
                                              "src": "1128:10:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "id": 3224,
                                              "name": "priceLower",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3189,
                                              "src": "1141:10:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "1128:23:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 3226,
                                            "name": "priceUpper",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3191,
                                            "src": "1153:10:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 3218,
                                            "name": "FullMath",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3590,
                                            "src": "1095:8:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_FullMath_$3590_$",
                                              "typeString": "type(library FullMath)"
                                            }
                                          },
                                          "id": 3219,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mulDiv",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3545,
                                          "src": "1095:15:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 3227,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1095:69:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "id": 3228,
                                        "name": "priceLower",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3189,
                                        "src": "1167:10:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1095:82:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1090:87:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3231,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1090:87:25"
                                }
                              ]
                            },
                            "id": 3233,
                            "nodeType": "IfStatement",
                            "src": "898:294:25",
                            "trueBody": {
                              "id": 3216,
                              "nodeType": "Block",
                              "src": "911:155:25",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 3214,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 3199,
                                      "name": "dx",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3196,
                                      "src": "929:2:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 3206,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 3204,
                                                "name": "liquidity",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3187,
                                                "src": "985:9:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "<<",
                                              "rightExpression": {
                                                "hexValue": "3936",
                                                "id": 3205,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "998:2:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_96_by_1",
                                                  "typeString": "int_const 96"
                                                },
                                                "value": "96"
                                              },
                                              "src": "985:15:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 3209,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 3207,
                                                "name": "priceUpper",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3191,
                                                "src": "1002:10:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "id": 3208,
                                                "name": "priceLower",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3189,
                                                "src": "1015:10:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "1002:23:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "id": 3210,
                                              "name": "priceUpper",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3191,
                                              "src": "1027:10:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "id": 3202,
                                              "name": "FullMath",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3590,
                                              "src": "959:8:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_FullMath_$3590_$",
                                                "typeString": "type(library FullMath)"
                                              }
                                            },
                                            "id": 3203,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mulDivRoundingUp",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3589,
                                            "src": "959:25:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 3211,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "959:79:25",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 3212,
                                          "name": "priceLower",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3189,
                                          "src": "1040:10:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 3200,
                                          "name": "UnsafeMath",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4922,
                                          "src": "934:10:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_UnsafeMath_$4922_$",
                                            "typeString": "type(library UnsafeMath)"
                                          }
                                        },
                                        "id": 3201,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "divRoundingUp",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4921,
                                        "src": "934:24:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 3213,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "934:117:25",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "929:122:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3215,
                                  "nodeType": "ExpressionStatement",
                                  "src": "929:122:25"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  },
                  "id": 3236,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getDx",
                  "nameLocation": "712:5:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3194,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3187,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "735:9:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3236,
                        "src": "727:17:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3186,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "727:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3189,
                        "mutability": "mutable",
                        "name": "priceLower",
                        "nameLocation": "762:10:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3236,
                        "src": "754:18:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3188,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "754:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3191,
                        "mutability": "mutable",
                        "name": "priceUpper",
                        "nameLocation": "790:10:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3236,
                        "src": "782:18:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3190,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "782:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3193,
                        "mutability": "mutable",
                        "name": "roundUp",
                        "nameLocation": "815:7:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3236,
                        "src": "810:12:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3192,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "810:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "717:111:25"
                  },
                  "returnParameters": {
                    "id": 3197,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3196,
                        "mutability": "mutable",
                        "name": "dx",
                        "nameLocation": "860:2:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3236,
                        "src": "852:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3195,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "852:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "851:12:25"
                  },
                  "scope": 3409,
                  "src": "703:505:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3326,
                    "nodeType": "Block",
                    "src": "1418:924:25",
                    "statements": [
                      {
                        "id": 3325,
                        "nodeType": "UncheckedBlock",
                        "src": "1428:908:25",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3253,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3251,
                                "name": "priceUpper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3240,
                                "src": "1456:10:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 3252,
                                "name": "currentPrice",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3242,
                                "src": "1470:12:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1456:26:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3268,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3266,
                                  "name": "currentPrice",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3242,
                                  "src": "1612:12:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "id": 3267,
                                  "name": "priceLower",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3238,
                                  "src": "1628:10:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1612:26:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 3322,
                                "nodeType": "Block",
                                "src": "1883:443:25",
                                "statements": [
                                  {
                                    "assignments": [
                                      3287
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 3287,
                                        "mutability": "mutable",
                                        "name": "liquidity0",
                                        "nameLocation": "1909:10:25",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 3322,
                                        "src": "1901:18:25",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 3286,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1901:7:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 3301,
                                    "initialValue": {
                                      "arguments": [
                                        {
                                          "id": 3290,
                                          "name": "dx",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3246,
                                          "src": "1959:2:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "id": 3293,
                                              "name": "priceUpper",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3240,
                                              "src": "1999:10:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "id": 3294,
                                              "name": "currentPrice",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3242,
                                              "src": "2011:12:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "hexValue": "307831303030303030303030303030303030303030303030303030",
                                              "id": 3295,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "2025:27:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_79228162514264337593543950336_by_1",
                                                "typeString": "int_const 79228162514264337593543950336"
                                              },
                                              "value": "0x1000000000000000000000000"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_rational_79228162514264337593543950336_by_1",
                                                "typeString": "int_const 79228162514264337593543950336"
                                              }
                                            ],
                                            "expression": {
                                              "id": 3291,
                                              "name": "FullMath",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3590,
                                              "src": "1983:8:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_FullMath_$3590_$",
                                                "typeString": "type(library FullMath)"
                                              }
                                            },
                                            "id": 3292,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mulDiv",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3545,
                                            "src": "1983:15:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 3296,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1983:70:25",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 3299,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 3297,
                                            "name": "priceUpper",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3240,
                                            "src": "2075:10:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 3298,
                                            "name": "currentPrice",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3242,
                                            "src": "2088:12:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "2075:25:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 3288,
                                          "name": "FullMath",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3590,
                                          "src": "1922:8:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_FullMath_$3590_$",
                                            "typeString": "type(library FullMath)"
                                          }
                                        },
                                        "id": 3289,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mulDiv",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3545,
                                        "src": "1922:15:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 3300,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1922:196:25",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1901:217:25"
                                  },
                                  {
                                    "assignments": [
                                      3303
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 3303,
                                        "mutability": "mutable",
                                        "name": "liquidity1",
                                        "nameLocation": "2144:10:25",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 3322,
                                        "src": "2136:18:25",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 3302,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2136:7:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 3312,
                                    "initialValue": {
                                      "arguments": [
                                        {
                                          "id": 3306,
                                          "name": "dy",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3244,
                                          "src": "2173:2:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "307831303030303030303030303030303030303030303030303030",
                                          "id": 3307,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2177:27:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_79228162514264337593543950336_by_1",
                                            "typeString": "int_const 79228162514264337593543950336"
                                          },
                                          "value": "0x1000000000000000000000000"
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 3310,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 3308,
                                            "name": "currentPrice",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3242,
                                            "src": "2206:12:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 3309,
                                            "name": "priceLower",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3238,
                                            "src": "2221:10:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "2206:25:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_rational_79228162514264337593543950336_by_1",
                                            "typeString": "int_const 79228162514264337593543950336"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 3304,
                                          "name": "FullMath",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3590,
                                          "src": "2157:8:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_FullMath_$3590_$",
                                            "typeString": "type(library FullMath)"
                                          }
                                        },
                                        "id": 3305,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mulDiv",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3545,
                                        "src": "2157:15:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 3311,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2157:75:25",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2136:96:25"
                                  },
                                  {
                                    "expression": {
                                      "id": 3320,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 3313,
                                        "name": "liquidity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3249,
                                        "src": "2250:9:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 3316,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 3314,
                                            "name": "liquidity0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3287,
                                            "src": "2262:10:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<",
                                          "rightExpression": {
                                            "id": 3315,
                                            "name": "liquidity1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3303,
                                            "src": "2275:10:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "2262:23:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseExpression": {
                                          "id": 3318,
                                          "name": "liquidity1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3303,
                                          "src": "2301:10:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 3319,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "2262:49:25",
                                        "trueExpression": {
                                          "id": 3317,
                                          "name": "liquidity0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3287,
                                          "src": "2288:10:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "2250:61:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3321,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2250:61:25"
                                  }
                                ]
                              },
                              "id": 3323,
                              "nodeType": "IfStatement",
                              "src": "1608:718:25",
                              "trueBody": {
                                "id": 3285,
                                "nodeType": "Block",
                                "src": "1640:237:25",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 3283,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 3269,
                                        "name": "liquidity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3249,
                                        "src": "1658:9:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 3272,
                                            "name": "dx",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3246,
                                            "src": "1707:2:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "id": 3275,
                                                "name": "priceLower",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3238,
                                                "src": "1747:10:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "id": 3276,
                                                "name": "priceUpper",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3240,
                                                "src": "1759:10:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "hexValue": "307831303030303030303030303030303030303030303030303030",
                                                "id": 3277,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1771:27:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_79228162514264337593543950336_by_1",
                                                  "typeString": "int_const 79228162514264337593543950336"
                                                },
                                                "value": "0x1000000000000000000000000"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_rational_79228162514264337593543950336_by_1",
                                                  "typeString": "int_const 79228162514264337593543950336"
                                                }
                                              ],
                                              "expression": {
                                                "id": 3273,
                                                "name": "FullMath",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3590,
                                                "src": "1731:8:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_FullMath_$3590_$",
                                                  "typeString": "type(library FullMath)"
                                                }
                                              },
                                              "id": 3274,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "mulDiv",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3545,
                                              "src": "1731:15:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                              }
                                            },
                                            "id": 3278,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1731:68:25",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 3281,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 3279,
                                              "name": "priceUpper",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3240,
                                              "src": "1821:10:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "id": 3280,
                                              "name": "priceLower",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 3238,
                                              "src": "1834:10:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "1821:23:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 3270,
                                            "name": "FullMath",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3590,
                                            "src": "1670:8:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_FullMath_$3590_$",
                                              "typeString": "type(library FullMath)"
                                            }
                                          },
                                          "id": 3271,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mulDiv",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3545,
                                          "src": "1670:15:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 3282,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1670:192:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1658:204:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3284,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1658:204:25"
                                  }
                                ]
                              }
                            },
                            "id": 3324,
                            "nodeType": "IfStatement",
                            "src": "1452:874:25",
                            "trueBody": {
                              "id": 3265,
                              "nodeType": "Block",
                              "src": "1484:118:25",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 3263,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 3254,
                                      "name": "liquidity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3249,
                                      "src": "1502:9:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 3257,
                                          "name": "dy",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3244,
                                          "src": "1530:2:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "307831303030303030303030303030303030303030303030303030",
                                          "id": 3258,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1534:27:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_79228162514264337593543950336_by_1",
                                            "typeString": "int_const 79228162514264337593543950336"
                                          },
                                          "value": "0x1000000000000000000000000"
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 3261,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 3259,
                                            "name": "priceUpper",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3240,
                                            "src": "1563:10:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 3260,
                                            "name": "priceLower",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3238,
                                            "src": "1576:10:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "1563:23:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_rational_79228162514264337593543950336_by_1",
                                            "typeString": "int_const 79228162514264337593543950336"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 3255,
                                          "name": "FullMath",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3590,
                                          "src": "1514:8:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_FullMath_$3590_$",
                                            "typeString": "type(library FullMath)"
                                          }
                                        },
                                        "id": 3256,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mulDiv",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3545,
                                        "src": "1514:15:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 3262,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1514:73:25",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1502:85:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3264,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1502:85:25"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  },
                  "functionSelector": "aec6cbfe",
                  "id": 3327,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getLiquidityForAmounts",
                  "nameLocation": "1223:22:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3247,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3238,
                        "mutability": "mutable",
                        "name": "priceLower",
                        "nameLocation": "1263:10:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3327,
                        "src": "1255:18:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3237,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1255:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3240,
                        "mutability": "mutable",
                        "name": "priceUpper",
                        "nameLocation": "1291:10:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3327,
                        "src": "1283:18:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3239,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1283:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3242,
                        "mutability": "mutable",
                        "name": "currentPrice",
                        "nameLocation": "1319:12:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3327,
                        "src": "1311:20:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3241,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1311:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3244,
                        "mutability": "mutable",
                        "name": "dy",
                        "nameLocation": "1349:2:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3327,
                        "src": "1341:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3243,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1341:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3246,
                        "mutability": "mutable",
                        "name": "dx",
                        "nameLocation": "1369:2:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3327,
                        "src": "1361:10:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3245,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1361:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1245:132:25"
                  },
                  "returnParameters": {
                    "id": 3250,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3249,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "1407:9:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3327,
                        "src": "1399:17:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3248,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1399:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1398:19:25"
                  },
                  "scope": 3409,
                  "src": "1214:1128:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3407,
                    "nodeType": "Block",
                    "src": "2594:678:25",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3344,
                            "name": "priceUpper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3331,
                            "src": "2608:10:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "id": 3345,
                            "name": "currentPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3333,
                            "src": "2622:12:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2608:26:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3363,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 3361,
                              "name": "currentPrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3333,
                              "src": "2812:12:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "id": 3362,
                              "name": "priceLower",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3329,
                              "src": "2828:10:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2812:26:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 3404,
                            "nodeType": "Block",
                            "src": "3012:254:25",
                            "statements": [
                              {
                                "expression": {
                                  "id": 3389,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 3378,
                                    "name": "token0amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3340,
                                    "src": "3061:12:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 3383,
                                            "name": "liquidityAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3335,
                                            "src": "3099:15:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 3384,
                                            "name": "currentPrice",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3333,
                                            "src": "3116:12:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 3385,
                                            "name": "priceUpper",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3331,
                                            "src": "3130:10:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 3386,
                                            "name": "roundUp",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3337,
                                            "src": "3142:7:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          ],
                                          "expression": {
                                            "id": 3381,
                                            "name": "DyDxMath",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3409,
                                            "src": "3084:8:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_DyDxMath_$3409_$",
                                              "typeString": "type(library DyDxMath)"
                                            }
                                          },
                                          "id": 3382,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getDx",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3236,
                                          "src": "3084:14:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                            "typeString": "function (uint256,uint256,uint256,bool) pure returns (uint256)"
                                          }
                                        },
                                        "id": 3387,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3084:66:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 3380,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3076:7:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint128_$",
                                        "typeString": "type(uint128)"
                                      },
                                      "typeName": {
                                        "id": 3379,
                                        "name": "uint128",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3076:7:25",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3388,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3076:75:25",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "src": "3061:90:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "id": 3390,
                                "nodeType": "ExpressionStatement",
                                "src": "3061:90:25"
                              },
                              {
                                "expression": {
                                  "id": 3402,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 3391,
                                    "name": "token1amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3342,
                                    "src": "3165:12:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 3396,
                                            "name": "liquidityAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3335,
                                            "src": "3203:15:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 3397,
                                            "name": "priceLower",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3329,
                                            "src": "3220:10:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 3398,
                                            "name": "currentPrice",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3333,
                                            "src": "3232:12:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 3399,
                                            "name": "roundUp",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3337,
                                            "src": "3246:7:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          ],
                                          "expression": {
                                            "id": 3394,
                                            "name": "DyDxMath",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3409,
                                            "src": "3188:8:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_DyDxMath_$3409_$",
                                              "typeString": "type(library DyDxMath)"
                                            }
                                          },
                                          "id": 3395,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getDy",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3185,
                                          "src": "3188:14:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                            "typeString": "function (uint256,uint256,uint256,bool) pure returns (uint256)"
                                          }
                                        },
                                        "id": 3400,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3188:66:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 3393,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3180:7:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint128_$",
                                        "typeString": "type(uint128)"
                                      },
                                      "typeName": {
                                        "id": 3392,
                                        "name": "uint128",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3180:7:25",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3401,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3180:75:25",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "src": "3165:90:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "id": 3403,
                                "nodeType": "ExpressionStatement",
                                "src": "3165:90:25"
                              }
                            ]
                          },
                          "id": 3405,
                          "nodeType": "IfStatement",
                          "src": "2808:458:25",
                          "trueBody": {
                            "id": 3377,
                            "nodeType": "Block",
                            "src": "2840:166:25",
                            "statements": [
                              {
                                "expression": {
                                  "id": 3375,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 3364,
                                    "name": "token0amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3340,
                                    "src": "2907:12:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 3369,
                                            "name": "liquidityAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3335,
                                            "src": "2945:15:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 3370,
                                            "name": "priceLower",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3329,
                                            "src": "2962:10:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 3371,
                                            "name": "priceUpper",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3331,
                                            "src": "2974:10:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 3372,
                                            "name": "roundUp",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3337,
                                            "src": "2986:7:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          ],
                                          "expression": {
                                            "id": 3367,
                                            "name": "DyDxMath",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3409,
                                            "src": "2930:8:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_DyDxMath_$3409_$",
                                              "typeString": "type(library DyDxMath)"
                                            }
                                          },
                                          "id": 3368,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "getDx",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3236,
                                          "src": "2930:14:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                            "typeString": "function (uint256,uint256,uint256,bool) pure returns (uint256)"
                                          }
                                        },
                                        "id": 3373,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2930:64:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 3366,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2922:7:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint128_$",
                                        "typeString": "type(uint128)"
                                      },
                                      "typeName": {
                                        "id": 3365,
                                        "name": "uint128",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2922:7:25",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3374,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2922:73:25",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "src": "2907:88:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "id": 3376,
                                "nodeType": "ExpressionStatement",
                                "src": "2907:88:25"
                              }
                            ]
                          }
                        },
                        "id": 3406,
                        "nodeType": "IfStatement",
                        "src": "2604:662:25",
                        "trueBody": {
                          "id": 3360,
                          "nodeType": "Block",
                          "src": "2636:166:25",
                          "statements": [
                            {
                              "expression": {
                                "id": 3358,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3347,
                                  "name": "token1amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3342,
                                  "src": "2703:12:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 3352,
                                          "name": "liquidityAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3335,
                                          "src": "2741:15:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 3353,
                                          "name": "priceLower",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3329,
                                          "src": "2758:10:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 3354,
                                          "name": "priceUpper",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3331,
                                          "src": "2770:10:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 3355,
                                          "name": "roundUp",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3337,
                                          "src": "2782:7:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "expression": {
                                          "id": 3350,
                                          "name": "DyDxMath",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3409,
                                          "src": "2726:8:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_DyDxMath_$3409_$",
                                            "typeString": "type(library DyDxMath)"
                                          }
                                        },
                                        "id": 3351,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "getDy",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3185,
                                        "src": "2726:14:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256,bool) pure returns (uint256)"
                                        }
                                      },
                                      "id": 3356,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2726:64:25",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 3349,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2718:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint128_$",
                                      "typeString": "type(uint128)"
                                    },
                                    "typeName": {
                                      "id": 3348,
                                      "name": "uint128",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2718:7:25",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3357,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2718:73:25",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "2703:88:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 3359,
                              "nodeType": "ExpressionStatement",
                              "src": "2703:88:25"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 3408,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountsForLiquidity",
                  "nameLocation": "2357:22:25",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3338,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3329,
                        "mutability": "mutable",
                        "name": "priceLower",
                        "nameLocation": "2397:10:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3408,
                        "src": "2389:18:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3328,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2389:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3331,
                        "mutability": "mutable",
                        "name": "priceUpper",
                        "nameLocation": "2425:10:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3408,
                        "src": "2417:18:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3330,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2417:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3333,
                        "mutability": "mutable",
                        "name": "currentPrice",
                        "nameLocation": "2453:12:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3408,
                        "src": "2445:20:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3332,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2445:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3335,
                        "mutability": "mutable",
                        "name": "liquidityAmount",
                        "nameLocation": "2483:15:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3408,
                        "src": "2475:23:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3334,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2475:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3337,
                        "mutability": "mutable",
                        "name": "roundUp",
                        "nameLocation": "2513:7:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3408,
                        "src": "2508:12:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3336,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2508:4:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2379:147:25"
                  },
                  "returnParameters": {
                    "id": 3343,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3340,
                        "mutability": "mutable",
                        "name": "token0amount",
                        "nameLocation": "2558:12:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3408,
                        "src": "2550:20:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 3339,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "2550:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3342,
                        "mutability": "mutable",
                        "name": "token1amount",
                        "nameLocation": "2580:12:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 3408,
                        "src": "2572:20:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 3341,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "2572:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2549:44:25"
                  },
                  "scope": 3409,
                  "src": "2348:924:25",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3410,
              "src": "198:3076:25",
              "usedErrors": []
            }
          ],
          "src": "46:3229:25"
        },
        "id": 25
      },
      "contracts/libraries/concentratedPool/FullMath.sol": {
        "ast": {
          "absolutePath": "contracts/libraries/concentratedPool/FullMath.sol",
          "exportedSymbols": {
            "FullMath": [
              3590
            ]
          },
          "id": 3591,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3411,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "33:24:26"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3412,
                "nodeType": "StructuredDocumentation",
                "src": "59:387:26",
                "text": "@notice Math library that facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision.\n @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/FullMath.sol.\n @dev Handles \"phantom overflow\", i.e., allows multiplication and division where an intermediate value overflows 256 bits."
              },
              "fullyImplemented": true,
              "id": 3590,
              "linearizedBaseContracts": [
                3590
              ],
              "name": "FullMath",
              "nameLocation": "454:8:26",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3544,
                    "nodeType": "Block",
                    "src": "969:4023:26",
                    "statements": [
                      {
                        "id": 3543,
                        "nodeType": "UncheckedBlock",
                        "src": "979:4007:26",
                        "statements": [
                          {
                            "assignments": [
                              3425
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3425,
                                "mutability": "mutable",
                                "name": "prod0",
                                "nameLocation": "1337:5:26",
                                "nodeType": "VariableDeclaration",
                                "scope": 3543,
                                "src": "1329:13:26",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3424,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1329:7:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3426,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1329:13:26"
                          },
                          {
                            "assignments": [
                              3428
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3428,
                                "mutability": "mutable",
                                "name": "prod1",
                                "nameLocation": "1410:5:26",
                                "nodeType": "VariableDeclaration",
                                "scope": 3543,
                                "src": "1402:13:26",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3427,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1402:7:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3429,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1402:13:26"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "1483:157:26",
                              "statements": [
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "1501:30:26",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "a",
                                        "nodeType": "YulIdentifier",
                                        "src": "1518:1:26"
                                      },
                                      {
                                        "name": "b",
                                        "nodeType": "YulIdentifier",
                                        "src": "1521:1:26"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1528:1:26",
                                            "type": "",
                                            "value": "0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "1524:3:26"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1524:6:26"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mulmod",
                                      "nodeType": "YulIdentifier",
                                      "src": "1511:6:26"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1511:20:26"
                                  },
                                  "variables": [
                                    {
                                      "name": "mm",
                                      "nodeType": "YulTypedName",
                                      "src": "1505:2:26",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "1548:18:26",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "a",
                                        "nodeType": "YulIdentifier",
                                        "src": "1561:1:26"
                                      },
                                      {
                                        "name": "b",
                                        "nodeType": "YulIdentifier",
                                        "src": "1564:1:26"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nodeType": "YulIdentifier",
                                      "src": "1557:3:26"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1557:9:26"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "prod0",
                                      "nodeType": "YulIdentifier",
                                      "src": "1548:5:26"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "1583:43:26",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "mm",
                                            "nodeType": "YulIdentifier",
                                            "src": "1600:2:26"
                                          },
                                          {
                                            "name": "prod0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1604:5:26"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "1596:3:26"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1596:14:26"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "mm",
                                            "nodeType": "YulIdentifier",
                                            "src": "1615:2:26"
                                          },
                                          {
                                            "name": "prod0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1619:5:26"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "lt",
                                          "nodeType": "YulIdentifier",
                                          "src": "1612:2:26"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1612:13:26"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1592:3:26"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1592:34:26"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "prod1",
                                      "nodeType": "YulIdentifier",
                                      "src": "1583:5:26"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 3415,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1518:1:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3415,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1561:1:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3417,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1521:1:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3417,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1564:1:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3425,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1548:5:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3425,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1604:5:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3425,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1619:5:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3428,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1583:5:26",
                                "valueSize": 1
                              }
                            ],
                            "id": 3430,
                            "nodeType": "InlineAssembly",
                            "src": "1474:166:26"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3433,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3431,
                                "name": "prod1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3428,
                                "src": "1720:5:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3432,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1729:1:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1720:10:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3444,
                            "nodeType": "IfStatement",
                            "src": "1716:203:26",
                            "trueBody": {
                              "id": 3443,
                              "nodeType": "Block",
                              "src": "1732:187:26",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3437,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3435,
                                          "name": "denominator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3419,
                                          "src": "1758:11:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 3436,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1772:1:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "1758:15:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 3434,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "1750:7:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                        "typeString": "function (bool) pure"
                                      }
                                    },
                                    "id": 3438,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1750:24:26",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3439,
                                  "nodeType": "ExpressionStatement",
                                  "src": "1750:24:26"
                                },
                                {
                                  "AST": {
                                    "nodeType": "YulBlock",
                                    "src": "1801:73:26",
                                    "statements": [
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "1823:33:26",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "prod0",
                                              "nodeType": "YulIdentifier",
                                              "src": "1837:5:26"
                                            },
                                            {
                                              "name": "denominator",
                                              "nodeType": "YulIdentifier",
                                              "src": "1844:11:26"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "div",
                                            "nodeType": "YulIdentifier",
                                            "src": "1833:3:26"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1833:23:26"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "result",
                                            "nodeType": "YulIdentifier",
                                            "src": "1823:6:26"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "evmVersion": "london",
                                  "externalReferences": [
                                    {
                                      "declaration": 3419,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "1844:11:26",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 3425,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "1837:5:26",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 3422,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "1823:6:26",
                                      "valueSize": 1
                                    }
                                  ],
                                  "id": 3440,
                                  "nodeType": "InlineAssembly",
                                  "src": "1792:82:26"
                                },
                                {
                                  "expression": {
                                    "id": 3441,
                                    "name": "result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3422,
                                    "src": "1898:6:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "functionReturnParameters": 3423,
                                  "id": 3442,
                                  "nodeType": "Return",
                                  "src": "1891:13:26"
                                }
                              ]
                            }
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3448,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3446,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3419,
                                    "src": "2045:11:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">",
                                  "rightExpression": {
                                    "id": 3447,
                                    "name": "prod1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3428,
                                    "src": "2059:5:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "2045:19:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "id": 3445,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "2037:7:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                  "typeString": "function (bool) pure"
                                }
                              },
                              "id": 3449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2037:28:26",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 3450,
                            "nodeType": "ExpressionStatement",
                            "src": "2037:28:26"
                          },
                          {
                            "assignments": [
                              3452
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3452,
                                "mutability": "mutable",
                                "name": "remainder",
                                "nameLocation": "2375:9:26",
                                "nodeType": "VariableDeclaration",
                                "scope": 3543,
                                "src": "2367:17:26",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3451,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2367:7:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3453,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2367:17:26"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "2407:70:26",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "2425:38:26",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "a",
                                        "nodeType": "YulIdentifier",
                                        "src": "2445:1:26"
                                      },
                                      {
                                        "name": "b",
                                        "nodeType": "YulIdentifier",
                                        "src": "2448:1:26"
                                      },
                                      {
                                        "name": "denominator",
                                        "nodeType": "YulIdentifier",
                                        "src": "2451:11:26"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mulmod",
                                      "nodeType": "YulIdentifier",
                                      "src": "2438:6:26"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2438:25:26"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "remainder",
                                      "nodeType": "YulIdentifier",
                                      "src": "2425:9:26"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 3415,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2445:1:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3417,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2448:1:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3419,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2451:11:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3452,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2425:9:26",
                                "valueSize": 1
                              }
                            ],
                            "id": 3454,
                            "nodeType": "InlineAssembly",
                            "src": "2398:79:26"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "2559:120:26",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "2577:41:26",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "prod1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2590:5:26"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "remainder",
                                            "nodeType": "YulIdentifier",
                                            "src": "2600:9:26"
                                          },
                                          {
                                            "name": "prod0",
                                            "nodeType": "YulIdentifier",
                                            "src": "2611:5:26"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "gt",
                                          "nodeType": "YulIdentifier",
                                          "src": "2597:2:26"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2597:20:26"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2586:3:26"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2586:32:26"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "prod1",
                                      "nodeType": "YulIdentifier",
                                      "src": "2577:5:26"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "2635:30:26",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "prod0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2648:5:26"
                                      },
                                      {
                                        "name": "remainder",
                                        "nodeType": "YulIdentifier",
                                        "src": "2655:9:26"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2644:3:26"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2644:21:26"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "prod0",
                                      "nodeType": "YulIdentifier",
                                      "src": "2635:5:26"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 3425,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2611:5:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3425,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2635:5:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3425,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2648:5:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3428,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2577:5:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3428,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2590:5:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3452,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2600:9:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3452,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2655:9:26",
                                "valueSize": 1
                              }
                            ],
                            "id": 3455,
                            "nodeType": "InlineAssembly",
                            "src": "2550:129:26"
                          },
                          {
                            "assignments": [
                              3457
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3457,
                                "mutability": "mutable",
                                "name": "twos",
                                "nameLocation": "2854:4:26",
                                "nodeType": "VariableDeclaration",
                                "scope": 3543,
                                "src": "2846:12:26",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3456,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2846:7:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3468,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3467,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 3464,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "2869:20:26",
                                    "subExpression": {
                                      "arguments": [
                                        {
                                          "id": 3462,
                                          "name": "denominator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3419,
                                          "src": "2877:11:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 3461,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "2870:6:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_int256_$",
                                          "typeString": "type(int256)"
                                        },
                                        "typeName": {
                                          "id": 3460,
                                          "name": "int256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2870:6:26",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 3463,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2870:19:26",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "id": 3459,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2861:7:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 3458,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2861:7:26",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3465,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2861:29:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "id": 3466,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3419,
                                "src": "2893:11:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2861:43:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2846:58:26"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "2978:69:26",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "2996:37:26",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "denominator",
                                        "nodeType": "YulIdentifier",
                                        "src": "3015:11:26"
                                      },
                                      {
                                        "name": "twos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3028:4:26"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "div",
                                      "nodeType": "YulIdentifier",
                                      "src": "3011:3:26"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3011:22:26"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "denominator",
                                      "nodeType": "YulIdentifier",
                                      "src": "2996:11:26"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 3419,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2996:11:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3419,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3015:11:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3457,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3028:4:26",
                                "valueSize": 1
                              }
                            ],
                            "id": 3469,
                            "nodeType": "InlineAssembly",
                            "src": "2969:78:26"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "3128:57:26",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "3146:25:26",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "prod0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3159:5:26"
                                      },
                                      {
                                        "name": "twos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3166:4:26"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "div",
                                      "nodeType": "YulIdentifier",
                                      "src": "3155:3:26"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3155:16:26"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "prod0",
                                      "nodeType": "YulIdentifier",
                                      "src": "3146:5:26"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 3425,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3146:5:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3425,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3159:5:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3457,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3166:4:26",
                                "valueSize": 1
                              }
                            ],
                            "id": 3470,
                            "nodeType": "InlineAssembly",
                            "src": "3119:66:26"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "3391:71:26",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "3409:39:26",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3429:1:26",
                                                "type": "",
                                                "value": "0"
                                              },
                                              {
                                                "name": "twos",
                                                "nodeType": "YulIdentifier",
                                                "src": "3432:4:26"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "3425:3:26"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3425:12:26"
                                          },
                                          {
                                            "name": "twos",
                                            "nodeType": "YulIdentifier",
                                            "src": "3439:4:26"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "3421:3:26"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3421:23:26"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3446:1:26",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3417:3:26"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3417:31:26"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "twos",
                                      "nodeType": "YulIdentifier",
                                      "src": "3409:4:26"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 3457,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3409:4:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3457,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3432:4:26",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3457,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3439:4:26",
                                "valueSize": 1
                              }
                            ],
                            "id": 3471,
                            "nodeType": "InlineAssembly",
                            "src": "3382:80:26"
                          },
                          {
                            "expression": {
                              "id": 3476,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3472,
                                "name": "prod0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3425,
                                "src": "3475:5:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "|=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3475,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3473,
                                  "name": "prod1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3428,
                                  "src": "3484:5:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 3474,
                                  "name": "twos",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3457,
                                  "src": "3492:4:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3484:12:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3475:21:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3477,
                            "nodeType": "ExpressionStatement",
                            "src": "3475:21:26"
                          },
                          {
                            "assignments": [
                              3479
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3479,
                                "mutability": "mutable",
                                "name": "inv",
                                "nameLocation": "3856:3:26",
                                "nodeType": "VariableDeclaration",
                                "scope": 3543,
                                "src": "3848:11:26",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3478,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3848:7:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3486,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3485,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3482,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "33",
                                      "id": 3480,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3863:1:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 3481,
                                      "name": "denominator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3419,
                                      "src": "3867:11:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3863:15:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 3483,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3862:17:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "^",
                              "rightExpression": {
                                "hexValue": "32",
                                "id": 3484,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3882:1:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "src": "3862:21:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3848:35:26"
                          },
                          {
                            "expression": {
                              "id": 3493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3487,
                                "name": "inv",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3479,
                                "src": "4114:3:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "*=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3492,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 3488,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4121:1:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3491,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3489,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3419,
                                    "src": "4125:11:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 3490,
                                    "name": "inv",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3479,
                                    "src": "4139:3:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4125:17:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4121:21:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4114:28:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3494,
                            "nodeType": "ExpressionStatement",
                            "src": "4114:28:26"
                          },
                          {
                            "expression": {
                              "id": 3501,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3495,
                                "name": "inv",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3479,
                                "src": "4177:3:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "*=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 3496,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4184:1:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3499,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3497,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3419,
                                    "src": "4188:11:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 3498,
                                    "name": "inv",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3479,
                                    "src": "4202:3:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4188:17:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4184:21:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4177:28:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3502,
                            "nodeType": "ExpressionStatement",
                            "src": "4177:28:26"
                          },
                          {
                            "expression": {
                              "id": 3509,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3503,
                                "name": "inv",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3479,
                                "src": "4241:3:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "*=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3508,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 3504,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4248:1:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3507,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3505,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3419,
                                    "src": "4252:11:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 3506,
                                    "name": "inv",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3479,
                                    "src": "4266:3:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4252:17:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4248:21:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4241:28:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3510,
                            "nodeType": "ExpressionStatement",
                            "src": "4241:28:26"
                          },
                          {
                            "expression": {
                              "id": 3517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3511,
                                "name": "inv",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3479,
                                "src": "4305:3:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "*=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3516,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 3512,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4312:1:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3515,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3513,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3419,
                                    "src": "4316:11:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 3514,
                                    "name": "inv",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3479,
                                    "src": "4330:3:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4316:17:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4312:21:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4305:28:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3518,
                            "nodeType": "ExpressionStatement",
                            "src": "4305:28:26"
                          },
                          {
                            "expression": {
                              "id": 3525,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3519,
                                "name": "inv",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3479,
                                "src": "4369:3:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "*=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3524,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 3520,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4376:1:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3523,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3521,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3419,
                                    "src": "4380:11:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 3522,
                                    "name": "inv",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3479,
                                    "src": "4394:3:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4380:17:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4376:21:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4369:28:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3526,
                            "nodeType": "ExpressionStatement",
                            "src": "4369:28:26"
                          },
                          {
                            "expression": {
                              "id": 3533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3527,
                                "name": "inv",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3479,
                                "src": "4434:3:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "*=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3532,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 3528,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4441:1:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3531,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3529,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3419,
                                    "src": "4445:11:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 3530,
                                    "name": "inv",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3479,
                                    "src": "4459:3:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4445:17:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4441:21:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4434:28:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3534,
                            "nodeType": "ExpressionStatement",
                            "src": "4434:28:26"
                          },
                          {
                            "expression": {
                              "id": 3539,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 3535,
                                "name": "result",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3422,
                                "src": "4928:6:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3538,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3536,
                                  "name": "prod0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3425,
                                  "src": "4937:5:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 3537,
                                  "name": "inv",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3479,
                                  "src": "4945:3:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4937:11:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4928:20:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3540,
                            "nodeType": "ExpressionStatement",
                            "src": "4928:20:26"
                          },
                          {
                            "expression": {
                              "id": 3541,
                              "name": "result",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3422,
                              "src": "4969:6:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "functionReturnParameters": 3423,
                            "id": 3542,
                            "nodeType": "Return",
                            "src": "4962:13:26"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3413,
                    "nodeType": "StructuredDocumentation",
                    "src": "469:367:26",
                    "text": "@notice Calculates floor(a×b÷denominator) with full precision - throws if result overflows an uint256 or denominator == 0.\n @param a The multiplicand.\n @param b The multiplier.\n @param denominator The divisor.\n @return result The 256-bit result.\n @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv."
                  },
                  "id": 3545,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mulDiv",
                  "nameLocation": "850:6:26",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3420,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3415,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "874:1:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 3545,
                        "src": "866:9:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3414,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "866:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3417,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "893:1:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 3545,
                        "src": "885:9:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3416,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "885:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3419,
                        "mutability": "mutable",
                        "name": "denominator",
                        "nameLocation": "912:11:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 3545,
                        "src": "904:19:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3418,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "904:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "856:73:26"
                  },
                  "returnParameters": {
                    "id": 3423,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3422,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "961:6:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 3545,
                        "src": "953:14:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3421,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "953:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "952:16:26"
                  },
                  "scope": 3590,
                  "src": "841:4151:26",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3588,
                    "nodeType": "Block",
                    "src": "5419:224:26",
                    "statements": [
                      {
                        "expression": {
                          "id": 3563,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3557,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3555,
                            "src": "5429:6:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3559,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3548,
                                "src": "5445:1:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 3560,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3550,
                                "src": "5448:1:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 3561,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3552,
                                "src": "5451:11:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 3558,
                              "name": "mulDiv",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3545,
                              "src": "5438:6:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3562,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5438:25:26",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5429:34:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3564,
                        "nodeType": "ExpressionStatement",
                        "src": "5429:34:26"
                      },
                      {
                        "id": 3587,
                        "nodeType": "UncheckedBlock",
                        "src": "5473:164:26",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3571,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 3566,
                                    "name": "a",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3548,
                                    "src": "5508:1:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 3567,
                                    "name": "b",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3550,
                                    "src": "5511:1:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 3568,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3552,
                                    "src": "5514:11:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 3565,
                                  "name": "mulmod",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -16,
                                  "src": "5501:6:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 3569,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5501:25:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3570,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5530:1:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5501:30:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3586,
                            "nodeType": "IfStatement",
                            "src": "5497:130:26",
                            "trueBody": {
                              "id": 3585,
                              "nodeType": "Block",
                              "src": "5533:94:26",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3579,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3573,
                                          "name": "result",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3555,
                                          "src": "5559:6:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "id": 3576,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "5573:7:26",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_uint256_$",
                                                  "typeString": "type(uint256)"
                                                },
                                                "typeName": {
                                                  "id": 3575,
                                                  "name": "uint256",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "5573:7:26",
                                                  "typeDescriptions": {}
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_type$_t_uint256_$",
                                                  "typeString": "type(uint256)"
                                                }
                                              ],
                                              "id": 3574,
                                              "name": "type",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -27,
                                              "src": "5568:4:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                "typeString": "function () pure"
                                              }
                                            },
                                            "id": 3577,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "5568:13:26",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_meta_type_t_uint256",
                                              "typeString": "type(uint256)"
                                            }
                                          },
                                          "id": 3578,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberName": "max",
                                          "nodeType": "MemberAccess",
                                          "src": "5568:17:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "5559:26:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 3572,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "5551:7:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                        "typeString": "function (bool) pure"
                                      }
                                    },
                                    "id": 3580,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5551:35:26",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3581,
                                  "nodeType": "ExpressionStatement",
                                  "src": "5551:35:26"
                                },
                                {
                                  "expression": {
                                    "id": 3583,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": false,
                                    "src": "5604:8:26",
                                    "subExpression": {
                                      "id": 3582,
                                      "name": "result",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3555,
                                      "src": "5604:6:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3584,
                                  "nodeType": "ExpressionStatement",
                                  "src": "5604:8:26"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3546,
                    "nodeType": "StructuredDocumentation",
                    "src": "4998:278:26",
                    "text": "@notice Calculates ceil(a×b÷denominator) with full precision - throws if result overflows an uint256 or denominator == 0.\n @param a The multiplicand.\n @param b The multiplier.\n @param denominator The divisor.\n @return result The 256-bit result."
                  },
                  "id": 3589,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mulDivRoundingUp",
                  "nameLocation": "5290:16:26",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3553,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3548,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "5324:1:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 3589,
                        "src": "5316:9:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3547,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5316:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3550,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "5343:1:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 3589,
                        "src": "5335:9:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3549,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5335:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3552,
                        "mutability": "mutable",
                        "name": "denominator",
                        "nameLocation": "5362:11:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 3589,
                        "src": "5354:19:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3551,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5354:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5306:73:26"
                  },
                  "returnParameters": {
                    "id": 3556,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3555,
                        "mutability": "mutable",
                        "name": "result",
                        "nameLocation": "5411:6:26",
                        "nodeType": "VariableDeclaration",
                        "scope": 3589,
                        "src": "5403:14:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3554,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5403:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5402:16:26"
                  },
                  "scope": 3590,
                  "src": "5281:362:26",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3591,
              "src": "446:5199:26",
              "usedErrors": []
            }
          ],
          "src": "33:5613:26"
        },
        "id": 26
      },
      "contracts/libraries/concentratedPool/SwapLib.sol": {
        "ast": {
          "absolutePath": "contracts/libraries/concentratedPool/SwapLib.sol",
          "exportedSymbols": {
            "FullMath": [
              3590
            ],
            "SwapLib": [
              3674
            ]
          },
          "id": 3675,
          "license": "GPL-2.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3592,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:27"
            },
            {
              "absolutePath": "contracts/libraries/concentratedPool/FullMath.sol",
              "file": "./FullMath.sol",
              "id": 3593,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3675,
              "sourceUnit": 3591,
              "src": "72:24:27",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3594,
                "nodeType": "StructuredDocumentation",
                "src": "98:97:27",
                "text": "@notice Math library that facilitates fee handling for Trident Concentrated Liquidity Pools."
              },
              "fullyImplemented": true,
              "id": 3674,
              "linearizedBaseContracts": [
                3674
              ],
              "name": "SwapLib",
              "nameLocation": "203:7:27",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3672,
                    "nodeType": "Block",
                    "src": "615:614:27",
                    "statements": [
                      {
                        "assignments": [
                          3622
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3622,
                            "mutability": "mutable",
                            "name": "feeAmount",
                            "nameLocation": "633:9:27",
                            "nodeType": "VariableDeclaration",
                            "scope": 3672,
                            "src": "625:17:27",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3621,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "625:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3629,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3625,
                              "name": "output",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3596,
                              "src": "671:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3626,
                              "name": "swapFee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3598,
                              "src": "679:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint24",
                                "typeString": "uint24"
                              }
                            },
                            {
                              "hexValue": "316536",
                              "id": 3627,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "688:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1000000_by_1",
                                "typeString": "int_const 1000000"
                              },
                              "value": "1e6"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint24",
                                "typeString": "uint24"
                              },
                              {
                                "typeIdentifier": "t_rational_1000000_by_1",
                                "typeString": "int_const 1000000"
                              }
                            ],
                            "expression": {
                              "id": 3623,
                              "name": "FullMath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3590,
                              "src": "645:8:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_FullMath_$3590_$",
                                "typeString": "type(library FullMath)"
                              }
                            },
                            "id": 3624,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mulDivRoundingUp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3589,
                            "src": "645:25:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "645:47:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "625:67:27"
                      },
                      {
                        "expression": {
                          "id": 3632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3630,
                            "name": "totalFeeAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3604,
                            "src": "703:14:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 3631,
                            "name": "feeAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3622,
                            "src": "721:9:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "703:27:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3633,
                        "nodeType": "ExpressionStatement",
                        "src": "703:27:27"
                      },
                      {
                        "expression": {
                          "id": 3638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3634,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3606,
                            "src": "741:9:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3637,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 3635,
                              "name": "output",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3596,
                              "src": "754:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 3636,
                              "name": "feeAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3622,
                              "src": "763:9:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "754:18:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "741:31:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3639,
                        "nodeType": "ExpressionStatement",
                        "src": "741:31:27"
                      },
                      {
                        "assignments": [
                          3641
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3641,
                            "mutability": "mutable",
                            "name": "feeDelta",
                            "nameLocation": "852:8:27",
                            "nodeType": "VariableDeclaration",
                            "scope": 3672,
                            "src": "844:16:27",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3640,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "844:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3648,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3644,
                              "name": "feeAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3622,
                              "src": "889:9:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3645,
                              "name": "barFee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3600,
                              "src": "900:6:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "316534",
                              "id": 3646,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "908:3:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10000_by_1",
                                "typeString": "int_const 10000"
                              },
                              "value": "1e4"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_10000_by_1",
                                "typeString": "int_const 10000"
                              }
                            ],
                            "expression": {
                              "id": 3642,
                              "name": "FullMath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3590,
                              "src": "863:8:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_FullMath_$3590_$",
                                "typeString": "type(library FullMath)"
                              }
                            },
                            "id": 3643,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mulDivRoundingUp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3589,
                            "src": "863:25:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 3647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "863:49:27",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "844:68:27"
                      },
                      {
                        "expression": {
                          "id": 3651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3649,
                            "name": "protocolFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3608,
                            "src": "923:11:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 3650,
                            "name": "feeDelta",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3641,
                            "src": "938:8:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "923:23:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3652,
                        "nodeType": "ExpressionStatement",
                        "src": "923:23:27"
                      },
                      {
                        "expression": {
                          "id": 3655,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3653,
                            "name": "feeAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3622,
                            "src": "1015:9:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 3654,
                            "name": "feeDelta",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3641,
                            "src": "1028:8:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1015:21:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3656,
                        "nodeType": "ExpressionStatement",
                        "src": "1015:21:27"
                      },
                      {
                        "expression": {
                          "id": 3664,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3657,
                            "name": "feeGrowthGlobal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3610,
                            "src": "1047:15:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3660,
                                "name": "feeAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3622,
                                "src": "1082:9:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                                "id": 3661,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1093:35:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                  "typeString": "int_const 3402...(31 digits omitted)...1456"
                                },
                                "value": "0x100000000000000000000000000000000"
                              },
                              {
                                "id": 3662,
                                "name": "currentLiquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3602,
                                "src": "1130:16:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                  "typeString": "int_const 3402...(31 digits omitted)...1456"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 3658,
                                "name": "FullMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3590,
                                "src": "1066:8:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_FullMath_$3590_$",
                                  "typeString": "type(library FullMath)"
                                }
                              },
                              "id": 3659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mulDiv",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3545,
                              "src": "1066:15:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 3663,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1066:81:27",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1047:100:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3665,
                        "nodeType": "ExpressionStatement",
                        "src": "1047:100:27"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 3666,
                              "name": "totalFeeAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3604,
                              "src": "1166:14:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3667,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3606,
                              "src": "1182:9:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3668,
                              "name": "protocolFee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3608,
                              "src": "1193:11:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3669,
                              "name": "feeGrowthGlobal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3610,
                              "src": "1206:15:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3670,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1165:57:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 3620,
                        "id": 3671,
                        "nodeType": "Return",
                        "src": "1158:64:27"
                      }
                    ]
                  },
                  "id": 3673,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "handleFees",
                  "nameLocation": "226:10:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3611,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3596,
                        "mutability": "mutable",
                        "name": "output",
                        "nameLocation": "254:6:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3673,
                        "src": "246:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3595,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "246:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3598,
                        "mutability": "mutable",
                        "name": "swapFee",
                        "nameLocation": "277:7:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3673,
                        "src": "270:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        },
                        "typeName": {
                          "id": 3597,
                          "name": "uint24",
                          "nodeType": "ElementaryTypeName",
                          "src": "270:6:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3600,
                        "mutability": "mutable",
                        "name": "barFee",
                        "nameLocation": "302:6:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3673,
                        "src": "294:14:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3599,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "294:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3602,
                        "mutability": "mutable",
                        "name": "currentLiquidity",
                        "nameLocation": "326:16:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3673,
                        "src": "318:24:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3601,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "318:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3604,
                        "mutability": "mutable",
                        "name": "totalFeeAmount",
                        "nameLocation": "360:14:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3673,
                        "src": "352:22:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3603,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "352:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3606,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "392:9:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3673,
                        "src": "384:17:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3605,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "384:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3608,
                        "mutability": "mutable",
                        "name": "protocolFee",
                        "nameLocation": "419:11:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3673,
                        "src": "411:19:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3607,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "411:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3610,
                        "mutability": "mutable",
                        "name": "feeGrowthGlobal",
                        "nameLocation": "448:15:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 3673,
                        "src": "440:23:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3609,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "440:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "236:233:27"
                  },
                  "returnParameters": {
                    "id": 3620,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3613,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3673,
                        "src": "530:7:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3612,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "530:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3615,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3673,
                        "src": "551:7:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3614,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "551:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3617,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3673,
                        "src": "572:7:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3616,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "572:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3619,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3673,
                        "src": "593:7:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3618,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "593:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "516:94:27"
                  },
                  "scope": 3674,
                  "src": "217:1012:27",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3675,
              "src": "195:1036:27",
              "usedErrors": []
            }
          ],
          "src": "46:1186:27"
        },
        "id": 27
      },
      "contracts/libraries/concentratedPool/TickMath.sol": {
        "ast": {
          "absolutePath": "contracts/libraries/concentratedPool/TickMath.sol",
          "exportedSymbols": {
            "TickMath": [
              4217
            ]
          },
          "id": 4218,
          "license": "GPL-2.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3676,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:28"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 3677,
                "nodeType": "StructuredDocumentation",
                "src": "72:296:28",
                "text": "@notice Math library for computing sqrt price for ticks of size 1.0001, i.e., sqrt(1.0001^tick) as fixed point Q64.96 numbers - supports\n prices between 2**-128 and 2**128 - 1.\n @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/TickMath.sol."
              },
              "fullyImplemented": true,
              "id": 4217,
              "linearizedBaseContracts": [
                4217
              ],
              "name": "TickMath",
              "nameLocation": "376:8:28",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "documentation": {
                    "id": 3678,
                    "nodeType": "StructuredDocumentation",
                    "src": "391:109:28",
                    "text": "@dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128."
                  },
                  "id": 3682,
                  "mutability": "constant",
                  "name": "MIN_TICK",
                  "nameLocation": "529:8:28",
                  "nodeType": "VariableDeclaration",
                  "scope": 4217,
                  "src": "505:42:28",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 3679,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "505:5:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "value": {
                    "id": 3681,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "-",
                    "prefix": true,
                    "src": "540:7:28",
                    "subExpression": {
                      "hexValue": "383837323732",
                      "id": 3680,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "541:6:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_887272_by_1",
                        "typeString": "int_const 887272"
                      },
                      "value": "887272"
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_minus_887272_by_1",
                      "typeString": "int_const -887272"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 3683,
                    "nodeType": "StructuredDocumentation",
                    "src": "553:112:28",
                    "text": "@dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128 - 1."
                  },
                  "id": 3687,
                  "mutability": "constant",
                  "name": "MAX_TICK",
                  "nameLocation": "694:8:28",
                  "nodeType": "VariableDeclaration",
                  "scope": 4217,
                  "src": "670:44:28",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 3684,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "670:5:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "value": {
                    "id": 3686,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "-",
                    "prefix": true,
                    "src": "705:9:28",
                    "subExpression": {
                      "id": 3685,
                      "name": "MIN_TICK",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3682,
                      "src": "706:8:28",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 3688,
                    "nodeType": "StructuredDocumentation",
                    "src": "720:118:28",
                    "text": "@dev The minimum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MIN_TICK)."
                  },
                  "id": 3691,
                  "mutability": "constant",
                  "name": "MIN_SQRT_RATIO",
                  "nameLocation": "869:14:28",
                  "nodeType": "VariableDeclaration",
                  "scope": 4217,
                  "src": "843:53:28",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 3689,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "843:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "value": {
                    "hexValue": "34323935313238373339",
                    "id": 3690,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "886:10:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_4295128739_by_1",
                      "typeString": "int_const 4295128739"
                    },
                    "value": "4295128739"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 3692,
                    "nodeType": "StructuredDocumentation",
                    "src": "902:118:28",
                    "text": "@dev The maximum value that can be returned from #getSqrtRatioAtTick - equivalent to getSqrtRatioAtTick(MAX_TICK)."
                  },
                  "id": 3695,
                  "mutability": "constant",
                  "name": "MAX_SQRT_RATIO",
                  "nameLocation": "1051:14:28",
                  "nodeType": "VariableDeclaration",
                  "scope": 4217,
                  "src": "1025:92:28",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 3693,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "1025:7:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "value": {
                    "hexValue": "31343631343436373033343835323130313033323837323733303532323033393838383232333738373233393730333432",
                    "id": 3694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1068:49:28",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1461446703485210103287273052203988822378723970342_by_1",
                      "typeString": "int_const 1461...(41 digits omitted)...0342"
                    },
                    "value": "1461446703485210103287273052203988822378723970342"
                  },
                  "visibility": "internal"
                },
                {
                  "id": 3697,
                  "name": "TickOutOfBounds",
                  "nameLocation": "1130:15:28",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 3696,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1145:2:28"
                  },
                  "src": "1124:24:28"
                },
                {
                  "id": 3699,
                  "name": "PriceOutOfBounds",
                  "nameLocation": "1159:16:28",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 3698,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1175:2:28"
                  },
                  "src": "1153:25:28"
                },
                {
                  "body": {
                    "id": 4076,
                    "nodeType": "Block",
                    "src": "1573:2648:28",
                    "statements": [
                      {
                        "assignments": [
                          3708
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3708,
                            "mutability": "mutable",
                            "name": "absTick",
                            "nameLocation": "1591:7:28",
                            "nodeType": "VariableDeclaration",
                            "scope": 4076,
                            "src": "1583:15:28",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3707,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1583:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3728,
                        "initialValue": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            "id": 3711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 3709,
                              "name": "tick",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3702,
                              "src": "1601:4:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 3710,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1608:1:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1601:8:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 3724,
                                    "name": "tick",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3702,
                                    "src": "1652:4:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  ],
                                  "id": 3723,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1645:6:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_int256_$",
                                    "typeString": "type(int256)"
                                  },
                                  "typeName": {
                                    "id": 3722,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1645:6:28",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3725,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1645:12:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 3721,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1637:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 3720,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1637:7:28",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3726,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1637:21:28",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "1601:57:28",
                          "trueExpression": {
                            "arguments": [
                              {
                                "id": 3718,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "1620:13:28",
                                "subExpression": {
                                  "arguments": [
                                    {
                                      "id": 3716,
                                      "name": "tick",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3702,
                                      "src": "1628:4:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    ],
                                    "id": 3715,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1621:6:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_int256_$",
                                      "typeString": "type(int256)"
                                    },
                                    "typeName": {
                                      "id": 3714,
                                      "name": "int256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1621:6:28",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3717,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1621:12:28",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 3713,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1612:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 3712,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1612:7:28",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3719,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1612:22:28",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1583:75:28"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3729,
                            "name": "absTick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3708,
                            "src": "1672:7:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 3734,
                                    "name": "MAX_TICK",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3687,
                                    "src": "1697:8:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  ],
                                  "id": 3733,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1690:6:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint24_$",
                                    "typeString": "type(uint24)"
                                  },
                                  "typeName": {
                                    "id": 3732,
                                    "name": "uint24",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1690:6:28",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3735,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1690:16:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint24",
                                  "typeString": "uint24"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint24",
                                  "typeString": "uint24"
                                }
                              ],
                              "id": 3731,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1682:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 3730,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1682:7:28",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 3736,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1682:25:28",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1672:35:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3741,
                        "nodeType": "IfStatement",
                        "src": "1668:65:28",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 3738,
                              "name": "TickOutOfBounds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3697,
                              "src": "1716:15:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 3739,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1716:17:28",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 3740,
                          "nodeType": "RevertStatement",
                          "src": "1709:24:28"
                        }
                      },
                      {
                        "id": 4075,
                        "nodeType": "UncheckedBlock",
                        "src": "1743:2472:28",
                        "statements": [
                          {
                            "assignments": [
                              3743
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3743,
                                "mutability": "mutable",
                                "name": "ratio",
                                "nameLocation": "1775:5:28",
                                "nodeType": "VariableDeclaration",
                                "scope": 4075,
                                "src": "1767:13:28",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3742,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1767:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 3752,
                            "initialValue": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3748,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3746,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 3744,
                                    "name": "absTick",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3708,
                                    "src": "1783:7:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&",
                                  "rightExpression": {
                                    "hexValue": "307831",
                                    "id": 3745,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1793:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "0x1"
                                  },
                                  "src": "1783:13:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 3747,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1800:1:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1783:18:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                                "id": 3750,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1841:35:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                  "typeString": "int_const 3402...(31 digits omitted)...1456"
                                },
                                "value": "0x100000000000000000000000000000000"
                              },
                              "id": 3751,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "1783:93:28",
                              "trueExpression": {
                                "hexValue": "30786666666362393333626436666164333761613264313632643161353934303031",
                                "id": 3749,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1804:34:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_340265354078544963557816517032075149313_by_1",
                                  "typeString": "int_const 3402...(31 digits omitted)...9313"
                                },
                                "value": "0xfffcb933bd6fad37aa2d162d1a594001"
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint136",
                                "typeString": "uint136"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1767:109:28"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3757,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3755,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3753,
                                  "name": "absTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3708,
                                  "src": "1894:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "307832",
                                  "id": 3754,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1904:3:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "0x2"
                                },
                                "src": "1894:13:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3756,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1911:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1894:18:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3767,
                            "nodeType": "IfStatement",
                            "src": "1890:83:28",
                            "trueBody": {
                              "expression": {
                                "id": 3765,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3758,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "1914:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3764,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3761,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3759,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3743,
                                          "src": "1923:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "30786666663937323732333733643431333235396134363939303538306532313361",
                                          "id": 3760,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1931:34:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_340248342086729790484326174814286782778_by_1",
                                            "typeString": "int_const 3402...(31 digits omitted)...2778"
                                          },
                                          "value": "0xfff97272373d413259a46990580e213a"
                                        },
                                        "src": "1923:42:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3762,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "1922:44:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 3763,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1970:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "1922:51:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1914:59:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3766,
                              "nodeType": "ExpressionStatement",
                              "src": "1914:59:28"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3772,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3770,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3768,
                                  "name": "absTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3708,
                                  "src": "1991:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "307834",
                                  "id": 3769,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2001:3:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "0x4"
                                },
                                "src": "1991:13:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3771,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2008:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1991:18:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3782,
                            "nodeType": "IfStatement",
                            "src": "1987:83:28",
                            "trueBody": {
                              "expression": {
                                "id": 3780,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3773,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "2011:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3779,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3776,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3774,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3743,
                                          "src": "2020:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "30786666663265353066356636353639333265663132333537636633633766646363",
                                          "id": 3775,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2028:34:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_340214320654664324051920982716015181260_by_1",
                                            "typeString": "int_const 3402...(31 digits omitted)...1260"
                                          },
                                          "value": "0xfff2e50f5f656932ef12357cf3c7fdcc"
                                        },
                                        "src": "2020:42:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3777,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2019:44:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 3778,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2067:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "2019:51:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2011:59:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3781,
                              "nodeType": "ExpressionStatement",
                              "src": "2011:59:28"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3787,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3785,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3783,
                                  "name": "absTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3708,
                                  "src": "2088:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "307838",
                                  "id": 3784,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2098:3:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_8_by_1",
                                    "typeString": "int_const 8"
                                  },
                                  "value": "0x8"
                                },
                                "src": "2088:13:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3786,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2105:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2088:18:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3797,
                            "nodeType": "IfStatement",
                            "src": "2084:83:28",
                            "trueBody": {
                              "expression": {
                                "id": 3795,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3788,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "2108:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3794,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3791,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3789,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3743,
                                          "src": "2117:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "30786666653563616361376531306534653631633336323465616130393431636430",
                                          "id": 3790,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2125:34:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_340146287995602323631171512101879684304_by_1",
                                            "typeString": "int_const 3401...(31 digits omitted)...4304"
                                          },
                                          "value": "0xffe5caca7e10e4e61c3624eaa0941cd0"
                                        },
                                        "src": "2117:42:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3792,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2116:44:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 3793,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2164:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "2116:51:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2108:59:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3796,
                              "nodeType": "ExpressionStatement",
                              "src": "2108:59:28"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3802,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3800,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3798,
                                  "name": "absTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3708,
                                  "src": "2185:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "30783130",
                                  "id": 3799,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2195:4:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_16_by_1",
                                    "typeString": "int_const 16"
                                  },
                                  "value": "0x10"
                                },
                                "src": "2185:14:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3801,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2203:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2185:19:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3812,
                            "nodeType": "IfStatement",
                            "src": "2181:84:28",
                            "trueBody": {
                              "expression": {
                                "id": 3810,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3803,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "2206:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3809,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3806,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3804,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3743,
                                          "src": "2215:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "30786666636239383433643630663631353963396462353838333563393236363434",
                                          "id": 3805,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2223:34:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_340010263488231146823593991679159461444_by_1",
                                            "typeString": "int_const 3400...(31 digits omitted)...1444"
                                          },
                                          "value": "0xffcb9843d60f6159c9db58835c926644"
                                        },
                                        "src": "2215:42:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3807,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2214:44:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 3808,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2262:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "2214:51:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2206:59:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3811,
                              "nodeType": "ExpressionStatement",
                              "src": "2206:59:28"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3817,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3815,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3813,
                                  "name": "absTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3708,
                                  "src": "2283:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "30783230",
                                  "id": 3814,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2293:4:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "0x20"
                                },
                                "src": "2283:14:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3816,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2301:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2283:19:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3827,
                            "nodeType": "IfStatement",
                            "src": "2279:84:28",
                            "trueBody": {
                              "expression": {
                                "id": 3825,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3818,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "2304:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3824,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3821,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3819,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3743,
                                          "src": "2313:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "30786666393733623431666139386330383134373265363839366466623235346330",
                                          "id": 3820,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2321:34:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_339738377640345403697157401104375502016_by_1",
                                            "typeString": "int_const 3397...(31 digits omitted)...2016"
                                          },
                                          "value": "0xff973b41fa98c081472e6896dfb254c0"
                                        },
                                        "src": "2313:42:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3822,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2312:44:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 3823,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2360:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "2312:51:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2304:59:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3826,
                              "nodeType": "ExpressionStatement",
                              "src": "2304:59:28"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3832,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3830,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3828,
                                  "name": "absTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3708,
                                  "src": "2381:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "30783430",
                                  "id": 3829,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2391:4:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_64_by_1",
                                    "typeString": "int_const 64"
                                  },
                                  "value": "0x40"
                                },
                                "src": "2381:14:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3831,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2399:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2381:19:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3842,
                            "nodeType": "IfStatement",
                            "src": "2377:84:28",
                            "trueBody": {
                              "expression": {
                                "id": 3840,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3833,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "2402:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3839,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3836,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3834,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3743,
                                          "src": "2411:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "30786666326561313634363663393661333834336563373862333236623532383631",
                                          "id": 3835,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2419:34:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_339195258003219555707034227454543997025_by_1",
                                            "typeString": "int_const 3391...(31 digits omitted)...7025"
                                          },
                                          "value": "0xff2ea16466c96a3843ec78b326b52861"
                                        },
                                        "src": "2411:42:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3837,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2410:44:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 3838,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2458:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "2410:51:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2402:59:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3841,
                              "nodeType": "ExpressionStatement",
                              "src": "2402:59:28"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3847,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3845,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3843,
                                  "name": "absTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3708,
                                  "src": "2479:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "30783830",
                                  "id": 3844,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2489:4:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_128_by_1",
                                    "typeString": "int_const 128"
                                  },
                                  "value": "0x80"
                                },
                                "src": "2479:14:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3846,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2497:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2479:19:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3857,
                            "nodeType": "IfStatement",
                            "src": "2475:84:28",
                            "trueBody": {
                              "expression": {
                                "id": 3855,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3848,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "2500:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3854,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3851,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3849,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3743,
                                          "src": "2509:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "30786665356465653034366139396132613831316334363166313936396333303533",
                                          "id": 3850,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2517:34:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_338111622100601834656805679988414885971_by_1",
                                            "typeString": "int_const 3381...(31 digits omitted)...5971"
                                          },
                                          "value": "0xfe5dee046a99a2a811c461f1969c3053"
                                        },
                                        "src": "2509:42:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3852,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2508:44:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 3853,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2556:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "2508:51:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2500:59:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3856,
                              "nodeType": "ExpressionStatement",
                              "src": "2500:59:28"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3862,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3860,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3858,
                                  "name": "absTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3708,
                                  "src": "2577:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "3078313030",
                                  "id": 3859,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2587:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_256_by_1",
                                    "typeString": "int_const 256"
                                  },
                                  "value": "0x100"
                                },
                                "src": "2577:15:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3861,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2596:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2577:20:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3872,
                            "nodeType": "IfStatement",
                            "src": "2573:85:28",
                            "trueBody": {
                              "expression": {
                                "id": 3870,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3863,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "2599:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3869,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3866,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3864,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3743,
                                          "src": "2608:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "30786663626538366337393030613838616564636666633833623437396161336134",
                                          "id": 3865,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2616:34:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_335954724994790223023589805789778977700_by_1",
                                            "typeString": "int_const 3359...(31 digits omitted)...7700"
                                          },
                                          "value": "0xfcbe86c7900a88aedcffc83b479aa3a4"
                                        },
                                        "src": "2608:42:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3867,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2607:44:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 3868,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2655:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "2607:51:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2599:59:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3871,
                              "nodeType": "ExpressionStatement",
                              "src": "2599:59:28"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3877,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3875,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3873,
                                  "name": "absTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3708,
                                  "src": "2676:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "3078323030",
                                  "id": 3874,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2686:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_512_by_1",
                                    "typeString": "int_const 512"
                                  },
                                  "value": "0x200"
                                },
                                "src": "2676:15:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3876,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2695:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2676:20:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3887,
                            "nodeType": "IfStatement",
                            "src": "2672:85:28",
                            "trueBody": {
                              "expression": {
                                "id": 3885,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3878,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "2698:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3884,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3881,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3879,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3743,
                                          "src": "2707:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "30786639383761373235336163343133313736663262303734636637383135653534",
                                          "id": 3880,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2715:34:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_331682121138379247127172139078559817300_by_1",
                                            "typeString": "int_const 3316...(31 digits omitted)...7300"
                                          },
                                          "value": "0xf987a7253ac413176f2b074cf7815e54"
                                        },
                                        "src": "2707:42:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3882,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2706:44:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 3883,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2754:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "2706:51:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2698:59:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3886,
                              "nodeType": "ExpressionStatement",
                              "src": "2698:59:28"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3892,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3890,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3888,
                                  "name": "absTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3708,
                                  "src": "2775:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "3078343030",
                                  "id": 3889,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2785:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1024_by_1",
                                    "typeString": "int_const 1024"
                                  },
                                  "value": "0x400"
                                },
                                "src": "2775:15:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3891,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2794:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2775:20:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3902,
                            "nodeType": "IfStatement",
                            "src": "2771:85:28",
                            "trueBody": {
                              "expression": {
                                "id": 3900,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3893,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "2797:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3899,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3896,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3894,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3743,
                                          "src": "2806:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "30786633333932623038323262373030303539343063376133393865346237306633",
                                          "id": 3895,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2814:34:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_323299236684853023288211250268160618739_by_1",
                                            "typeString": "int_const 3232...(31 digits omitted)...8739"
                                          },
                                          "value": "0xf3392b0822b70005940c7a398e4b70f3"
                                        },
                                        "src": "2806:42:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3897,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2805:44:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 3898,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2853:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "2805:51:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2797:59:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3901,
                              "nodeType": "ExpressionStatement",
                              "src": "2797:59:28"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3905,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3903,
                                  "name": "absTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3708,
                                  "src": "2874:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "3078383030",
                                  "id": 3904,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2884:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2048_by_1",
                                    "typeString": "int_const 2048"
                                  },
                                  "value": "0x800"
                                },
                                "src": "2874:15:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3906,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2893:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2874:20:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3917,
                            "nodeType": "IfStatement",
                            "src": "2870:85:28",
                            "trueBody": {
                              "expression": {
                                "id": 3915,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3908,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "2896:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3914,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3911,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3909,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3743,
                                          "src": "2905:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "30786537313539343735613263323962373434336232396337666136653838396439",
                                          "id": 3910,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2913:34:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_307163716377032989948697243942600083929_by_1",
                                            "typeString": "int_const 3071...(31 digits omitted)...3929"
                                          },
                                          "value": "0xe7159475a2c29b7443b29c7fa6e889d9"
                                        },
                                        "src": "2905:42:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3912,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2904:44:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 3913,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2952:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "2904:51:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2896:59:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3916,
                              "nodeType": "ExpressionStatement",
                              "src": "2896:59:28"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3922,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3920,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3918,
                                  "name": "absTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3708,
                                  "src": "2973:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "307831303030",
                                  "id": 3919,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2983:6:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4096_by_1",
                                    "typeString": "int_const 4096"
                                  },
                                  "value": "0x1000"
                                },
                                "src": "2973:16:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3921,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2993:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2973:21:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3932,
                            "nodeType": "IfStatement",
                            "src": "2969:86:28",
                            "trueBody": {
                              "expression": {
                                "id": 3930,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3923,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "2996:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3929,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3926,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3924,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3743,
                                          "src": "3005:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "30786430393766336264666432303232623838343561643866373932616135383235",
                                          "id": 3925,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3013:34:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_277268403626896220162999269216087595045_by_1",
                                            "typeString": "int_const 2772...(31 digits omitted)...5045"
                                          },
                                          "value": "0xd097f3bdfd2022b8845ad8f792aa5825"
                                        },
                                        "src": "3005:42:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3927,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3004:44:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 3928,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3052:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "3004:51:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2996:59:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3931,
                              "nodeType": "ExpressionStatement",
                              "src": "2996:59:28"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3935,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3933,
                                  "name": "absTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3708,
                                  "src": "3073:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "307832303030",
                                  "id": 3934,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3083:6:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_8192_by_1",
                                    "typeString": "int_const 8192"
                                  },
                                  "value": "0x2000"
                                },
                                "src": "3073:16:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3936,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3093:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3073:21:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3947,
                            "nodeType": "IfStatement",
                            "src": "3069:86:28",
                            "trueBody": {
                              "expression": {
                                "id": 3945,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3938,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "3096:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3944,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3941,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3939,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3743,
                                          "src": "3105:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "30786139663734363436326438373066646638613635646331663930653036316535",
                                          "id": 3940,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3113:34:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_225923453940442621947126027127485391333_by_1",
                                            "typeString": "int_const 2259...(31 digits omitted)...1333"
                                          },
                                          "value": "0xa9f746462d870fdf8a65dc1f90e061e5"
                                        },
                                        "src": "3105:42:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3942,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3104:44:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 3943,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3152:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "3104:51:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3096:59:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3946,
                              "nodeType": "ExpressionStatement",
                              "src": "3096:59:28"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3952,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3950,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3948,
                                  "name": "absTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3708,
                                  "src": "3173:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "307834303030",
                                  "id": 3949,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3183:6:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_16384_by_1",
                                    "typeString": "int_const 16384"
                                  },
                                  "value": "0x4000"
                                },
                                "src": "3173:16:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3951,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3193:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3173:21:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3962,
                            "nodeType": "IfStatement",
                            "src": "3169:86:28",
                            "trueBody": {
                              "expression": {
                                "id": 3960,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3953,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "3196:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3959,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3956,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3954,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3743,
                                          "src": "3205:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "30783730643836396131353664326131623839306262336466363262616633326637",
                                          "id": 3955,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3213:34:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_149997214084966997727330242082538205943_by_1",
                                            "typeString": "int_const 1499...(31 digits omitted)...5943"
                                          },
                                          "value": "0x70d869a156d2a1b890bb3df62baf32f7"
                                        },
                                        "src": "3205:42:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3957,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3204:44:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 3958,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3252:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "3204:51:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3196:59:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3961,
                              "nodeType": "ExpressionStatement",
                              "src": "3196:59:28"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3967,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3965,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3963,
                                  "name": "absTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3708,
                                  "src": "3273:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "307838303030",
                                  "id": 3964,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3283:6:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32768_by_1",
                                    "typeString": "int_const 32768"
                                  },
                                  "value": "0x8000"
                                },
                                "src": "3273:16:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3966,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3293:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3273:21:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3977,
                            "nodeType": "IfStatement",
                            "src": "3269:86:28",
                            "trueBody": {
                              "expression": {
                                "id": 3975,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3968,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "3296:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3974,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3971,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3969,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3743,
                                          "src": "3305:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "30783331626531333566393764303866643938313233313530353534326663666136",
                                          "id": 3970,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3313:34:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_66119101136024775622716233608466517926_by_1",
                                            "typeString": "int_const 6611...(30 digits omitted)...7926"
                                          },
                                          "value": "0x31be135f97d08fd981231505542fcfa6"
                                        },
                                        "src": "3305:42:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3972,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3304:44:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 3973,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3352:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "3304:51:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3296:59:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3976,
                              "nodeType": "ExpressionStatement",
                              "src": "3296:59:28"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3982,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3980,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3978,
                                  "name": "absTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3708,
                                  "src": "3373:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "30783130303030",
                                  "id": 3979,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3383:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_65536_by_1",
                                    "typeString": "int_const 65536"
                                  },
                                  "value": "0x10000"
                                },
                                "src": "3373:17:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3981,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3394:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3373:22:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 3992,
                            "nodeType": "IfStatement",
                            "src": "3369:86:28",
                            "trueBody": {
                              "expression": {
                                "id": 3990,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3983,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "3397:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3989,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3986,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3984,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3743,
                                          "src": "3406:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "307839616135303862356237613834653163363737646535346633653939626339",
                                          "id": 3985,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3414:33:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_12847376061809297530290974190478138313_by_1",
                                            "typeString": "int_const 1284...(30 digits omitted)...8313"
                                          },
                                          "value": "0x9aa508b5b7a84e1c677de54f3e99bc9"
                                        },
                                        "src": "3406:41:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 3987,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3405:43:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 3988,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3452:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "3405:50:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3397:58:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3991,
                              "nodeType": "ExpressionStatement",
                              "src": "3397:58:28"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3997,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3995,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3993,
                                  "name": "absTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3708,
                                  "src": "3473:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "30783230303030",
                                  "id": 3994,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3483:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_131072_by_1",
                                    "typeString": "int_const 131072"
                                  },
                                  "value": "0x20000"
                                },
                                "src": "3473:17:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3996,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3494:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3473:22:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4007,
                            "nodeType": "IfStatement",
                            "src": "3469:85:28",
                            "trueBody": {
                              "expression": {
                                "id": 4005,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3998,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "3497:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4004,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4001,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3999,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3743,
                                          "src": "3506:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "3078356436616638646564623831313936363939633332393232356565363034",
                                          "id": 4000,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3514:32:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_485053260817066172746253684029974020_by_1",
                                            "typeString": "int_const 4850...(28 digits omitted)...4020"
                                          },
                                          "value": "0x5d6af8dedb81196699c329225ee604"
                                        },
                                        "src": "3506:40:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4002,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3505:42:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 4003,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3551:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "3505:49:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3497:57:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4006,
                              "nodeType": "ExpressionStatement",
                              "src": "3497:57:28"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4012,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4010,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4008,
                                  "name": "absTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3708,
                                  "src": "3572:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "30783430303030",
                                  "id": 4009,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3582:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_262144_by_1",
                                    "typeString": "int_const 262144"
                                  },
                                  "value": "0x40000"
                                },
                                "src": "3572:17:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 4011,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3593:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3572:22:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4022,
                            "nodeType": "IfStatement",
                            "src": "3568:83:28",
                            "trueBody": {
                              "expression": {
                                "id": 4020,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4013,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "3596:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4019,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4016,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4014,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3743,
                                          "src": "3605:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "307832323136653538346635666131656139323630343162656466653938",
                                          "id": 4015,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3613:30:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_691415978906521570653435304214168_by_1",
                                            "typeString": "int_const 6914...(25 digits omitted)...4168"
                                          },
                                          "value": "0x2216e584f5fa1ea926041bedfe98"
                                        },
                                        "src": "3605:38:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4017,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3604:40:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 4018,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3648:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "3604:47:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3596:55:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4021,
                              "nodeType": "ExpressionStatement",
                              "src": "3596:55:28"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4027,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4025,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4023,
                                  "name": "absTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3708,
                                  "src": "3669:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "30783830303030",
                                  "id": 4024,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3679:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_524288_by_1",
                                    "typeString": "int_const 524288"
                                  },
                                  "value": "0x80000"
                                },
                                "src": "3669:17:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 4026,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3690:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3669:22:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4037,
                            "nodeType": "IfStatement",
                            "src": "3665:78:28",
                            "trueBody": {
                              "expression": {
                                "id": 4035,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4028,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "3693:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4034,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4031,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4029,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3743,
                                          "src": "3702:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "30783438613137303339316637646334323434346538666132",
                                          "id": 4030,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3710:25:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1404880482679654955896180642_by_1",
                                            "typeString": "int_const 1404880482679654955896180642"
                                          },
                                          "value": "0x48a170391f7dc42444e8fa2"
                                        },
                                        "src": "3702:33:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4032,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3701:35:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 4033,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3740:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "3701:42:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3693:50:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4036,
                              "nodeType": "ExpressionStatement",
                              "src": "3693:50:28"
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              },
                              "id": 4040,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4038,
                                "name": "tick",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3702,
                                "src": "3762:4:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 4039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3769:1:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3762:8:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4051,
                            "nodeType": "IfStatement",
                            "src": "3758:47:28",
                            "trueBody": {
                              "expression": {
                                "id": 4049,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4041,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3743,
                                  "src": "3772:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4048,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 4044,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "3785:7:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 4043,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3785:7:28",
                                            "typeDescriptions": {}
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          }
                                        ],
                                        "id": 4042,
                                        "name": "type",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -27,
                                        "src": "3780:4:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 4045,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3780:13:28",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_meta_type_t_uint256",
                                        "typeString": "type(uint256)"
                                      }
                                    },
                                    "id": 4046,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "max",
                                    "nodeType": "MemberAccess",
                                    "src": "3780:17:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 4047,
                                    "name": "ratio",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3743,
                                    "src": "3800:5:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3780:25:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3772:33:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4050,
                              "nodeType": "ExpressionStatement",
                              "src": "3772:33:28"
                            }
                          },
                          {
                            "expression": {
                              "id": 4073,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 4052,
                                "name": "sqrtPriceX96",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3705,
                                "src": "4132:12:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4071,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4057,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 4055,
                                            "name": "ratio",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3743,
                                            "src": "4156:5:28",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">>",
                                          "rightExpression": {
                                            "hexValue": "3332",
                                            "id": 4056,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4165:2:28",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_32_by_1",
                                              "typeString": "int_const 32"
                                            },
                                            "value": "32"
                                          },
                                          "src": "4156:11:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 4058,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "4155:13:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "condition": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 4066,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 4064,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 4059,
                                                "name": "ratio",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3743,
                                                "src": "4172:5:28",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "%",
                                              "rightExpression": {
                                                "components": [
                                                  {
                                                    "commonType": {
                                                      "typeIdentifier": "t_rational_4294967296_by_1",
                                                      "typeString": "int_const 4294967296"
                                                    },
                                                    "id": 4062,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "hexValue": "31",
                                                      "id": 4060,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "4181:1:28",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_1_by_1",
                                                        "typeString": "int_const 1"
                                                      },
                                                      "value": "1"
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<<",
                                                    "rightExpression": {
                                                      "hexValue": "3332",
                                                      "id": 4061,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "4186:2:28",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_32_by_1",
                                                        "typeString": "int_const 32"
                                                      },
                                                      "value": "32"
                                                    },
                                                    "src": "4181:7:28",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_4294967296_by_1",
                                                      "typeString": "int_const 4294967296"
                                                    }
                                                  }
                                                ],
                                                "id": 4063,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "4180:9:28",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_4294967296_by_1",
                                                  "typeString": "int_const 4294967296"
                                                }
                                              },
                                              "src": "4172:17:28",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "hexValue": "30",
                                              "id": 4065,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "4193:1:28",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "src": "4172:22:28",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "falseExpression": {
                                            "hexValue": "31",
                                            "id": 4068,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4201:1:28",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "id": 4069,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "Conditional",
                                          "src": "4172:30:28",
                                          "trueExpression": {
                                            "hexValue": "30",
                                            "id": 4067,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4197:1:28",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        }
                                      ],
                                      "id": 4070,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "4171:32:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "4155:48:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4054,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4147:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 4053,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4147:7:28",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4072,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4147:57:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              "src": "4132:72:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "id": 4074,
                            "nodeType": "ExpressionStatement",
                            "src": "4132:72:28"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3700,
                    "nodeType": "StructuredDocumentation",
                    "src": "1184:299:28",
                    "text": "@notice Calculates sqrt(1.0001^tick) * 2^96.\n @dev Throws if |tick| > max tick.\n @param tick The input tick for the above formula.\n @return sqrtPriceX96 Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\n at the given tick."
                  },
                  "id": 4077,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSqrtRatioAtTick",
                  "nameLocation": "1497:18:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3703,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3702,
                        "mutability": "mutable",
                        "name": "tick",
                        "nameLocation": "1522:4:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4077,
                        "src": "1516:10:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 3701,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "1516:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1515:12:28"
                  },
                  "returnParameters": {
                    "id": 3706,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3705,
                        "mutability": "mutable",
                        "name": "sqrtPriceX96",
                        "nameLocation": "1559:12:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4077,
                        "src": "1551:20:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "typeName": {
                          "id": 3704,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "1551:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1550:22:28"
                  },
                  "scope": 4217,
                  "src": "1488:2733:28",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4215,
                    "nodeType": "Block",
                    "src": "4728:4600:28",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4091,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            },
                            "id": 4087,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4085,
                              "name": "sqrtPriceX96",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4080,
                              "src": "4842:12:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "id": 4086,
                              "name": "MIN_SQRT_RATIO",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3691,
                              "src": "4857:14:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "src": "4842:29:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            },
                            "id": 4090,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4088,
                              "name": "sqrtPriceX96",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4080,
                              "src": "4875:12:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "id": 4089,
                              "name": "MAX_SQRT_RATIO",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3695,
                              "src": "4891:14:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "src": "4875:30:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4842:63:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4095,
                        "nodeType": "IfStatement",
                        "src": "4838:94:28",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 4092,
                              "name": "PriceOutOfBounds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3699,
                              "src": "4914:16:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 4093,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4914:18:28",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 4094,
                          "nodeType": "RevertStatement",
                          "src": "4907:25:28"
                        }
                      },
                      {
                        "assignments": [
                          4097
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4097,
                            "mutability": "mutable",
                            "name": "ratio",
                            "nameLocation": "4950:5:28",
                            "nodeType": "VariableDeclaration",
                            "scope": 4215,
                            "src": "4942:13:28",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4096,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4942:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4104,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4103,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 4100,
                                "name": "sqrtPriceX96",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4080,
                                "src": "4966:12:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 4099,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4958:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 4098,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4958:7:28",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4101,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4958:21:28",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<<",
                          "rightExpression": {
                            "hexValue": "3332",
                            "id": 4102,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4983:2:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "4958:27:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4942:43:28"
                      },
                      {
                        "assignments": [
                          4106
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4106,
                            "mutability": "mutable",
                            "name": "r",
                            "nameLocation": "5004:1:28",
                            "nodeType": "VariableDeclaration",
                            "scope": 4215,
                            "src": "4996:9:28",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4105,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4996:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4108,
                        "initialValue": {
                          "id": 4107,
                          "name": "ratio",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4097,
                          "src": "5008:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4996:17:28"
                      },
                      {
                        "assignments": [
                          4110
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4110,
                            "mutability": "mutable",
                            "name": "msb",
                            "nameLocation": "5031:3:28",
                            "nodeType": "VariableDeclaration",
                            "scope": 4215,
                            "src": "5023:11:28",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4109,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5023:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4111,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5023:11:28"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "5054:139:28",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5068:58:28",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5081:1:28",
                                    "type": "",
                                    "value": "7"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "5087:1:28"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5090:34:28",
                                        "type": "",
                                        "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5084:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5084:41:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "5077:3:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5077:49:28"
                              },
                              "variables": [
                                {
                                  "name": "f",
                                  "nodeType": "YulTypedName",
                                  "src": "5072:1:28",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5139:17:28",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "msb",
                                    "nodeType": "YulIdentifier",
                                    "src": "5149:3:28"
                                  },
                                  {
                                    "name": "f",
                                    "nodeType": "YulIdentifier",
                                    "src": "5154:1:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "5146:2:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5146:10:28"
                              },
                              "variableNames": [
                                {
                                  "name": "msb",
                                  "nodeType": "YulIdentifier",
                                  "src": "5139:3:28"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5169:14:28",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "f",
                                    "nodeType": "YulIdentifier",
                                    "src": "5178:1:28"
                                  },
                                  {
                                    "name": "r",
                                    "nodeType": "YulIdentifier",
                                    "src": "5181:1:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "5174:3:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5174:9:28"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "5169:1:28"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4110,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5139:3:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4110,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5149:3:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5087:1:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5169:1:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5181:1:28",
                            "valueSize": 1
                          }
                        ],
                        "id": 4112,
                        "nodeType": "InlineAssembly",
                        "src": "5045:148:28"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "5211:123:28",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5225:42:28",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5238:1:28",
                                    "type": "",
                                    "value": "6"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "5244:1:28"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5247:18:28",
                                        "type": "",
                                        "value": "0xFFFFFFFFFFFFFFFF"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5241:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5241:25:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "5234:3:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5234:33:28"
                              },
                              "variables": [
                                {
                                  "name": "f",
                                  "nodeType": "YulTypedName",
                                  "src": "5229:1:28",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5280:17:28",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "msb",
                                    "nodeType": "YulIdentifier",
                                    "src": "5290:3:28"
                                  },
                                  {
                                    "name": "f",
                                    "nodeType": "YulIdentifier",
                                    "src": "5295:1:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "5287:2:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5287:10:28"
                              },
                              "variableNames": [
                                {
                                  "name": "msb",
                                  "nodeType": "YulIdentifier",
                                  "src": "5280:3:28"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5310:14:28",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "f",
                                    "nodeType": "YulIdentifier",
                                    "src": "5319:1:28"
                                  },
                                  {
                                    "name": "r",
                                    "nodeType": "YulIdentifier",
                                    "src": "5322:1:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "5315:3:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5315:9:28"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "5310:1:28"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4110,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5280:3:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4110,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5290:3:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5244:1:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5310:1:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5322:1:28",
                            "valueSize": 1
                          }
                        ],
                        "id": 4113,
                        "nodeType": "InlineAssembly",
                        "src": "5202:132:28"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "5352:115:28",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5366:34:28",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5379:1:28",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "5385:1:28"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5388:10:28",
                                        "type": "",
                                        "value": "0xFFFFFFFF"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5382:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5382:17:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "5375:3:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5375:25:28"
                              },
                              "variables": [
                                {
                                  "name": "f",
                                  "nodeType": "YulTypedName",
                                  "src": "5370:1:28",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5413:17:28",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "msb",
                                    "nodeType": "YulIdentifier",
                                    "src": "5423:3:28"
                                  },
                                  {
                                    "name": "f",
                                    "nodeType": "YulIdentifier",
                                    "src": "5428:1:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "5420:2:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5420:10:28"
                              },
                              "variableNames": [
                                {
                                  "name": "msb",
                                  "nodeType": "YulIdentifier",
                                  "src": "5413:3:28"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5443:14:28",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "f",
                                    "nodeType": "YulIdentifier",
                                    "src": "5452:1:28"
                                  },
                                  {
                                    "name": "r",
                                    "nodeType": "YulIdentifier",
                                    "src": "5455:1:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "5448:3:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5448:9:28"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "5443:1:28"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4110,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5413:3:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4110,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5423:3:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5385:1:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5443:1:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5455:1:28",
                            "valueSize": 1
                          }
                        ],
                        "id": 4114,
                        "nodeType": "InlineAssembly",
                        "src": "5343:124:28"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "5485:111:28",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5499:30:28",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5512:1:28",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "5518:1:28"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5521:6:28",
                                        "type": "",
                                        "value": "0xFFFF"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5515:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5515:13:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "5508:3:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5508:21:28"
                              },
                              "variables": [
                                {
                                  "name": "f",
                                  "nodeType": "YulTypedName",
                                  "src": "5503:1:28",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5542:17:28",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "msb",
                                    "nodeType": "YulIdentifier",
                                    "src": "5552:3:28"
                                  },
                                  {
                                    "name": "f",
                                    "nodeType": "YulIdentifier",
                                    "src": "5557:1:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "5549:2:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5549:10:28"
                              },
                              "variableNames": [
                                {
                                  "name": "msb",
                                  "nodeType": "YulIdentifier",
                                  "src": "5542:3:28"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5572:14:28",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "f",
                                    "nodeType": "YulIdentifier",
                                    "src": "5581:1:28"
                                  },
                                  {
                                    "name": "r",
                                    "nodeType": "YulIdentifier",
                                    "src": "5584:1:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "5577:3:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5577:9:28"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "5572:1:28"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4110,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5542:3:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4110,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5552:3:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5518:1:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5572:1:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5584:1:28",
                            "valueSize": 1
                          }
                        ],
                        "id": 4115,
                        "nodeType": "InlineAssembly",
                        "src": "5476:120:28"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "5614:109:28",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5628:28:28",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5641:1:28",
                                    "type": "",
                                    "value": "3"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "5647:1:28"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5650:4:28",
                                        "type": "",
                                        "value": "0xFF"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5644:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5644:11:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "5637:3:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5637:19:28"
                              },
                              "variables": [
                                {
                                  "name": "f",
                                  "nodeType": "YulTypedName",
                                  "src": "5632:1:28",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5669:17:28",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "msb",
                                    "nodeType": "YulIdentifier",
                                    "src": "5679:3:28"
                                  },
                                  {
                                    "name": "f",
                                    "nodeType": "YulIdentifier",
                                    "src": "5684:1:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "5676:2:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5676:10:28"
                              },
                              "variableNames": [
                                {
                                  "name": "msb",
                                  "nodeType": "YulIdentifier",
                                  "src": "5669:3:28"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5699:14:28",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "f",
                                    "nodeType": "YulIdentifier",
                                    "src": "5708:1:28"
                                  },
                                  {
                                    "name": "r",
                                    "nodeType": "YulIdentifier",
                                    "src": "5711:1:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "5704:3:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5704:9:28"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "5699:1:28"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4110,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5669:3:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4110,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5679:3:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5647:1:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5699:1:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5711:1:28",
                            "valueSize": 1
                          }
                        ],
                        "id": 4116,
                        "nodeType": "InlineAssembly",
                        "src": "5605:118:28"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "5741:108:28",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5755:27:28",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5768:1:28",
                                    "type": "",
                                    "value": "2"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "5774:1:28"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5777:3:28",
                                        "type": "",
                                        "value": "0xF"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5771:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5771:10:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "5764:3:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5764:18:28"
                              },
                              "variables": [
                                {
                                  "name": "f",
                                  "nodeType": "YulTypedName",
                                  "src": "5759:1:28",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5795:17:28",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "msb",
                                    "nodeType": "YulIdentifier",
                                    "src": "5805:3:28"
                                  },
                                  {
                                    "name": "f",
                                    "nodeType": "YulIdentifier",
                                    "src": "5810:1:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "5802:2:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5802:10:28"
                              },
                              "variableNames": [
                                {
                                  "name": "msb",
                                  "nodeType": "YulIdentifier",
                                  "src": "5795:3:28"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5825:14:28",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "f",
                                    "nodeType": "YulIdentifier",
                                    "src": "5834:1:28"
                                  },
                                  {
                                    "name": "r",
                                    "nodeType": "YulIdentifier",
                                    "src": "5837:1:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "5830:3:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5830:9:28"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "5825:1:28"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4110,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5795:3:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4110,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5805:3:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5774:1:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5825:1:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5837:1:28",
                            "valueSize": 1
                          }
                        ],
                        "id": 4117,
                        "nodeType": "InlineAssembly",
                        "src": "5732:117:28"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "5867:108:28",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5881:27:28",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5894:1:28",
                                    "type": "",
                                    "value": "1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "5900:1:28"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5903:3:28",
                                        "type": "",
                                        "value": "0x3"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5897:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5897:10:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "5890:3:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5890:18:28"
                              },
                              "variables": [
                                {
                                  "name": "f",
                                  "nodeType": "YulTypedName",
                                  "src": "5885:1:28",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5921:17:28",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "msb",
                                    "nodeType": "YulIdentifier",
                                    "src": "5931:3:28"
                                  },
                                  {
                                    "name": "f",
                                    "nodeType": "YulIdentifier",
                                    "src": "5936:1:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "5928:2:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5928:10:28"
                              },
                              "variableNames": [
                                {
                                  "name": "msb",
                                  "nodeType": "YulIdentifier",
                                  "src": "5921:3:28"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5951:14:28",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "f",
                                    "nodeType": "YulIdentifier",
                                    "src": "5960:1:28"
                                  },
                                  {
                                    "name": "r",
                                    "nodeType": "YulIdentifier",
                                    "src": "5963:1:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "shr",
                                  "nodeType": "YulIdentifier",
                                  "src": "5956:3:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5956:9:28"
                              },
                              "variableNames": [
                                {
                                  "name": "r",
                                  "nodeType": "YulIdentifier",
                                  "src": "5951:1:28"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4110,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5921:3:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4110,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5931:3:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5900:1:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5951:1:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5963:1:28",
                            "valueSize": 1
                          }
                        ],
                        "id": 4118,
                        "nodeType": "InlineAssembly",
                        "src": "5858:117:28"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "5993:73:28",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6007:19:28",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "r",
                                    "nodeType": "YulIdentifier",
                                    "src": "6019:1:28"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6022:3:28",
                                    "type": "",
                                    "value": "0x1"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6016:2:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6016:10:28"
                              },
                              "variables": [
                                {
                                  "name": "f",
                                  "nodeType": "YulTypedName",
                                  "src": "6011:1:28",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6039:17:28",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "msb",
                                    "nodeType": "YulIdentifier",
                                    "src": "6049:3:28"
                                  },
                                  {
                                    "name": "f",
                                    "nodeType": "YulIdentifier",
                                    "src": "6054:1:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "6046:2:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6046:10:28"
                              },
                              "variableNames": [
                                {
                                  "name": "msb",
                                  "nodeType": "YulIdentifier",
                                  "src": "6039:3:28"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4110,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6039:3:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4110,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6049:3:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4106,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6019:1:28",
                            "valueSize": 1
                          }
                        ],
                        "id": 4119,
                        "nodeType": "InlineAssembly",
                        "src": "5984:82:28"
                      },
                      {
                        "id": 4214,
                        "nodeType": "UncheckedBlock",
                        "src": "6075:3247:28",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4122,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4120,
                                "name": "msb",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4110,
                                "src": "6103:3:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "hexValue": "313238",
                                "id": 4121,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6110:3:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_128_by_1",
                                  "typeString": "int_const 128"
                                },
                                "value": "128"
                              },
                              "src": "6103:10:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "expression": {
                                "id": 4139,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4132,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4106,
                                  "src": "6158:1:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4138,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 4133,
                                    "name": "ratio",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4097,
                                    "src": "6162:5:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4136,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "313237",
                                          "id": 4134,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6172:3:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_127_by_1",
                                            "typeString": "int_const 127"
                                          },
                                          "value": "127"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 4135,
                                          "name": "msb",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4110,
                                          "src": "6178:3:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "6172:9:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4137,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "6171:11:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6162:20:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6158:24:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4140,
                              "nodeType": "ExpressionStatement",
                              "src": "6158:24:28"
                            },
                            "id": 4141,
                            "nodeType": "IfStatement",
                            "src": "6099:83:28",
                            "trueBody": {
                              "expression": {
                                "id": 4130,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4123,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4106,
                                  "src": "6115:1:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4129,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 4124,
                                    "name": "ratio",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4097,
                                    "src": "6119:5:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4127,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4125,
                                          "name": "msb",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4110,
                                          "src": "6129:3:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "hexValue": "313237",
                                          "id": 4126,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6135:3:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_127_by_1",
                                            "typeString": "int_const 127"
                                          },
                                          "value": "127"
                                        },
                                        "src": "6129:9:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4128,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "6128:11:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6119:20:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6115:24:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4131,
                              "nodeType": "ExpressionStatement",
                              "src": "6115:24:28"
                            }
                          },
                          {
                            "assignments": [
                              4143
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4143,
                                "mutability": "mutable",
                                "name": "log_2",
                                "nameLocation": "6204:5:28",
                                "nodeType": "VariableDeclaration",
                                "scope": 4214,
                                "src": "6197:12:28",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "typeName": {
                                  "id": 4142,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6197:6:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 4153,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 4152,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 4149,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 4146,
                                          "name": "msb",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4110,
                                          "src": "6220:3:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 4145,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "6213:6:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_int256_$",
                                          "typeString": "type(int256)"
                                        },
                                        "typeName": {
                                          "id": 4144,
                                          "name": "int256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6213:6:28",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 4147,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6213:11:28",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "hexValue": "313238",
                                      "id": 4148,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6227:3:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_128_by_1",
                                        "typeString": "int_const 128"
                                      },
                                      "value": "128"
                                    },
                                    "src": "6213:17:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "id": 4150,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "6212:19:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<<",
                              "rightExpression": {
                                "hexValue": "3634",
                                "id": 4151,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6235:2:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_64_by_1",
                                  "typeString": "int_const 64"
                                },
                                "value": "64"
                              },
                              "src": "6212:25:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "6197:40:28"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "6261:171:28",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "6279:24:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6288:3:28",
                                        "type": "",
                                        "value": "127"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "6297:1:28"
                                          },
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "6300:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "6293:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6293:9:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "6284:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6284:19:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "6279:1:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "6320:20:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6333:3:28",
                                        "type": "",
                                        "value": "128"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "6338:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "6329:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6329:11:28"
                                  },
                                  "variables": [
                                    {
                                      "name": "f",
                                      "nodeType": "YulTypedName",
                                      "src": "6324:1:28",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "6357:30:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "log_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "6369:5:28"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6380:2:28",
                                            "type": "",
                                            "value": "63"
                                          },
                                          {
                                            "name": "f",
                                            "nodeType": "YulIdentifier",
                                            "src": "6384:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "6376:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6376:10:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "6366:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6366:21:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "log_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "6357:5:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "6404:14:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "f",
                                        "nodeType": "YulIdentifier",
                                        "src": "6413:1:28"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "6416:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "6409:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6409:9:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "6404:1:28"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6357:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6369:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6279:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6297:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6300:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6338:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6404:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6416:1:28",
                                "valueSize": 1
                              }
                            ],
                            "id": 4154,
                            "nodeType": "InlineAssembly",
                            "src": "6252:180:28"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "6454:171:28",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "6472:24:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6481:3:28",
                                        "type": "",
                                        "value": "127"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "6490:1:28"
                                          },
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "6493:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "6486:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6486:9:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "6477:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6477:19:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "6472:1:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "6513:20:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6526:3:28",
                                        "type": "",
                                        "value": "128"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "6531:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "6522:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6522:11:28"
                                  },
                                  "variables": [
                                    {
                                      "name": "f",
                                      "nodeType": "YulTypedName",
                                      "src": "6517:1:28",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "6550:30:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "log_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "6562:5:28"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6573:2:28",
                                            "type": "",
                                            "value": "62"
                                          },
                                          {
                                            "name": "f",
                                            "nodeType": "YulIdentifier",
                                            "src": "6577:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "6569:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6569:10:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "6559:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6559:21:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "log_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "6550:5:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "6597:14:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "f",
                                        "nodeType": "YulIdentifier",
                                        "src": "6606:1:28"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "6609:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "6602:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6602:9:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "6597:1:28"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6550:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6562:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6472:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6490:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6493:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6531:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6597:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6609:1:28",
                                "valueSize": 1
                              }
                            ],
                            "id": 4155,
                            "nodeType": "InlineAssembly",
                            "src": "6445:180:28"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "6647:171:28",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "6665:24:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6674:3:28",
                                        "type": "",
                                        "value": "127"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "6683:1:28"
                                          },
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "6686:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "6679:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6679:9:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "6670:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6670:19:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "6665:1:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "6706:20:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6719:3:28",
                                        "type": "",
                                        "value": "128"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "6724:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "6715:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6715:11:28"
                                  },
                                  "variables": [
                                    {
                                      "name": "f",
                                      "nodeType": "YulTypedName",
                                      "src": "6710:1:28",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "6743:30:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "log_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "6755:5:28"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6766:2:28",
                                            "type": "",
                                            "value": "61"
                                          },
                                          {
                                            "name": "f",
                                            "nodeType": "YulIdentifier",
                                            "src": "6770:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "6762:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6762:10:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "6752:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6752:21:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "log_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "6743:5:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "6790:14:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "f",
                                        "nodeType": "YulIdentifier",
                                        "src": "6799:1:28"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "6802:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "6795:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6795:9:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "6790:1:28"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6743:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6755:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6665:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6683:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6686:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6724:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6790:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6802:1:28",
                                "valueSize": 1
                              }
                            ],
                            "id": 4156,
                            "nodeType": "InlineAssembly",
                            "src": "6638:180:28"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "6840:171:28",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "6858:24:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6867:3:28",
                                        "type": "",
                                        "value": "127"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "6876:1:28"
                                          },
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "6879:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "6872:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6872:9:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "6863:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6863:19:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "6858:1:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "6899:20:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6912:3:28",
                                        "type": "",
                                        "value": "128"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "6917:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "6908:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6908:11:28"
                                  },
                                  "variables": [
                                    {
                                      "name": "f",
                                      "nodeType": "YulTypedName",
                                      "src": "6903:1:28",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "6936:30:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "log_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "6948:5:28"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6959:2:28",
                                            "type": "",
                                            "value": "60"
                                          },
                                          {
                                            "name": "f",
                                            "nodeType": "YulIdentifier",
                                            "src": "6963:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "6955:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6955:10:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "6945:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6945:21:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "log_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "6936:5:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "6983:14:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "f",
                                        "nodeType": "YulIdentifier",
                                        "src": "6992:1:28"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "6995:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "6988:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6988:9:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "6983:1:28"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6936:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6948:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6858:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6876:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6879:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6917:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6983:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "6995:1:28",
                                "valueSize": 1
                              }
                            ],
                            "id": 4157,
                            "nodeType": "InlineAssembly",
                            "src": "6831:180:28"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "7033:171:28",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "7051:24:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7060:3:28",
                                        "type": "",
                                        "value": "127"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "7069:1:28"
                                          },
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "7072:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "7065:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7065:9:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "7056:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7056:19:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "7051:1:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "7092:20:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7105:3:28",
                                        "type": "",
                                        "value": "128"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "7110:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "7101:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7101:11:28"
                                  },
                                  "variables": [
                                    {
                                      "name": "f",
                                      "nodeType": "YulTypedName",
                                      "src": "7096:1:28",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "7129:30:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "log_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "7141:5:28"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7152:2:28",
                                            "type": "",
                                            "value": "59"
                                          },
                                          {
                                            "name": "f",
                                            "nodeType": "YulIdentifier",
                                            "src": "7156:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "7148:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7148:10:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "7138:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7138:21:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "log_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "7129:5:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "7176:14:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "f",
                                        "nodeType": "YulIdentifier",
                                        "src": "7185:1:28"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "7188:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "7181:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7181:9:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "7176:1:28"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7129:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7141:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7051:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7069:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7072:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7110:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7176:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7188:1:28",
                                "valueSize": 1
                              }
                            ],
                            "id": 4158,
                            "nodeType": "InlineAssembly",
                            "src": "7024:180:28"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "7226:171:28",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "7244:24:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7253:3:28",
                                        "type": "",
                                        "value": "127"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "7262:1:28"
                                          },
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "7265:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "7258:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7258:9:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "7249:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7249:19:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "7244:1:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "7285:20:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7298:3:28",
                                        "type": "",
                                        "value": "128"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "7303:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "7294:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7294:11:28"
                                  },
                                  "variables": [
                                    {
                                      "name": "f",
                                      "nodeType": "YulTypedName",
                                      "src": "7289:1:28",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "7322:30:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "log_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "7334:5:28"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7345:2:28",
                                            "type": "",
                                            "value": "58"
                                          },
                                          {
                                            "name": "f",
                                            "nodeType": "YulIdentifier",
                                            "src": "7349:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "7341:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7341:10:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "7331:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7331:21:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "log_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "7322:5:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "7369:14:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "f",
                                        "nodeType": "YulIdentifier",
                                        "src": "7378:1:28"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "7381:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "7374:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7374:9:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "7369:1:28"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7322:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7334:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7244:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7262:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7265:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7303:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7369:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7381:1:28",
                                "valueSize": 1
                              }
                            ],
                            "id": 4159,
                            "nodeType": "InlineAssembly",
                            "src": "7217:180:28"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "7419:171:28",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "7437:24:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7446:3:28",
                                        "type": "",
                                        "value": "127"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "7455:1:28"
                                          },
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "7458:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "7451:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7451:9:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "7442:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7442:19:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "7437:1:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "7478:20:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7491:3:28",
                                        "type": "",
                                        "value": "128"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "7496:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "7487:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7487:11:28"
                                  },
                                  "variables": [
                                    {
                                      "name": "f",
                                      "nodeType": "YulTypedName",
                                      "src": "7482:1:28",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "7515:30:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "log_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "7527:5:28"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7538:2:28",
                                            "type": "",
                                            "value": "57"
                                          },
                                          {
                                            "name": "f",
                                            "nodeType": "YulIdentifier",
                                            "src": "7542:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "7534:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7534:10:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "7524:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7524:21:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "log_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "7515:5:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "7562:14:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "f",
                                        "nodeType": "YulIdentifier",
                                        "src": "7571:1:28"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "7574:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "7567:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7567:9:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "7562:1:28"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7515:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7527:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7437:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7455:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7458:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7496:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7562:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7574:1:28",
                                "valueSize": 1
                              }
                            ],
                            "id": 4160,
                            "nodeType": "InlineAssembly",
                            "src": "7410:180:28"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "7612:171:28",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "7630:24:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7639:3:28",
                                        "type": "",
                                        "value": "127"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "7648:1:28"
                                          },
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "7651:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "7644:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7644:9:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "7635:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7635:19:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "7630:1:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "7671:20:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7684:3:28",
                                        "type": "",
                                        "value": "128"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "7689:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "7680:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7680:11:28"
                                  },
                                  "variables": [
                                    {
                                      "name": "f",
                                      "nodeType": "YulTypedName",
                                      "src": "7675:1:28",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "7708:30:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "log_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "7720:5:28"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7731:2:28",
                                            "type": "",
                                            "value": "56"
                                          },
                                          {
                                            "name": "f",
                                            "nodeType": "YulIdentifier",
                                            "src": "7735:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "7727:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7727:10:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "7717:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7717:21:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "log_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "7708:5:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "7755:14:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "f",
                                        "nodeType": "YulIdentifier",
                                        "src": "7764:1:28"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "7767:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "7760:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7760:9:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "7755:1:28"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7708:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7720:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7630:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7648:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7651:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7689:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7755:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7767:1:28",
                                "valueSize": 1
                              }
                            ],
                            "id": 4161,
                            "nodeType": "InlineAssembly",
                            "src": "7603:180:28"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "7805:171:28",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "7823:24:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7832:3:28",
                                        "type": "",
                                        "value": "127"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "7841:1:28"
                                          },
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "7844:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "7837:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7837:9:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "7828:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7828:19:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "7823:1:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "7864:20:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7877:3:28",
                                        "type": "",
                                        "value": "128"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "7882:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "7873:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7873:11:28"
                                  },
                                  "variables": [
                                    {
                                      "name": "f",
                                      "nodeType": "YulTypedName",
                                      "src": "7868:1:28",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "7901:30:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "log_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "7913:5:28"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7924:2:28",
                                            "type": "",
                                            "value": "55"
                                          },
                                          {
                                            "name": "f",
                                            "nodeType": "YulIdentifier",
                                            "src": "7928:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "7920:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7920:10:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "7910:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7910:21:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "log_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "7901:5:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "7948:14:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "f",
                                        "nodeType": "YulIdentifier",
                                        "src": "7957:1:28"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "7960:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "7953:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7953:9:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "7948:1:28"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7901:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7913:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7823:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7841:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7844:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7882:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7948:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "7960:1:28",
                                "valueSize": 1
                              }
                            ],
                            "id": 4162,
                            "nodeType": "InlineAssembly",
                            "src": "7796:180:28"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "7998:171:28",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "8016:24:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8025:3:28",
                                        "type": "",
                                        "value": "127"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "8034:1:28"
                                          },
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "8037:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "8030:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8030:9:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "8021:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8021:19:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "8016:1:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "8057:20:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8070:3:28",
                                        "type": "",
                                        "value": "128"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "8075:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "8066:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8066:11:28"
                                  },
                                  "variables": [
                                    {
                                      "name": "f",
                                      "nodeType": "YulTypedName",
                                      "src": "8061:1:28",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "8094:30:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "log_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8106:5:28"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8117:2:28",
                                            "type": "",
                                            "value": "54"
                                          },
                                          {
                                            "name": "f",
                                            "nodeType": "YulIdentifier",
                                            "src": "8121:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "8113:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8113:10:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "8103:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8103:21:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "log_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "8094:5:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "8141:14:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "f",
                                        "nodeType": "YulIdentifier",
                                        "src": "8150:1:28"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "8153:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "8146:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8146:9:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "8141:1:28"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8094:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8106:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8016:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8034:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8037:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8075:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8141:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8153:1:28",
                                "valueSize": 1
                              }
                            ],
                            "id": 4163,
                            "nodeType": "InlineAssembly",
                            "src": "7989:180:28"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "8191:171:28",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "8209:24:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8218:3:28",
                                        "type": "",
                                        "value": "127"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "8227:1:28"
                                          },
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "8230:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "8223:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8223:9:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "8214:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8214:19:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "8209:1:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "8250:20:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8263:3:28",
                                        "type": "",
                                        "value": "128"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "8268:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "8259:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8259:11:28"
                                  },
                                  "variables": [
                                    {
                                      "name": "f",
                                      "nodeType": "YulTypedName",
                                      "src": "8254:1:28",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "8287:30:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "log_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8299:5:28"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8310:2:28",
                                            "type": "",
                                            "value": "53"
                                          },
                                          {
                                            "name": "f",
                                            "nodeType": "YulIdentifier",
                                            "src": "8314:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "8306:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8306:10:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "8296:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8296:21:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "log_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "8287:5:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "8334:14:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "f",
                                        "nodeType": "YulIdentifier",
                                        "src": "8343:1:28"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "8346:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "8339:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8339:9:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "8334:1:28"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8287:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8299:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8209:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8227:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8230:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8268:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8334:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8346:1:28",
                                "valueSize": 1
                              }
                            ],
                            "id": 4164,
                            "nodeType": "InlineAssembly",
                            "src": "8182:180:28"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "8384:171:28",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "8402:24:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8411:3:28",
                                        "type": "",
                                        "value": "127"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "8420:1:28"
                                          },
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "8423:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "8416:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8416:9:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "8407:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8407:19:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "8402:1:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "8443:20:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8456:3:28",
                                        "type": "",
                                        "value": "128"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "8461:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "8452:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8452:11:28"
                                  },
                                  "variables": [
                                    {
                                      "name": "f",
                                      "nodeType": "YulTypedName",
                                      "src": "8447:1:28",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "8480:30:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "log_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8492:5:28"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8503:2:28",
                                            "type": "",
                                            "value": "52"
                                          },
                                          {
                                            "name": "f",
                                            "nodeType": "YulIdentifier",
                                            "src": "8507:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "8499:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8499:10:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "8489:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8489:21:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "log_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "8480:5:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "8527:14:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "f",
                                        "nodeType": "YulIdentifier",
                                        "src": "8536:1:28"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "8539:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "8532:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8532:9:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "8527:1:28"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8480:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8492:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8402:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8420:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8423:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8461:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8527:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8539:1:28",
                                "valueSize": 1
                              }
                            ],
                            "id": 4165,
                            "nodeType": "InlineAssembly",
                            "src": "8375:180:28"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "8577:171:28",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "8595:24:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8604:3:28",
                                        "type": "",
                                        "value": "127"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "8613:1:28"
                                          },
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "8616:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "8609:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8609:9:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "8600:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8600:19:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "8595:1:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "8636:20:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8649:3:28",
                                        "type": "",
                                        "value": "128"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "8654:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "8645:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8645:11:28"
                                  },
                                  "variables": [
                                    {
                                      "name": "f",
                                      "nodeType": "YulTypedName",
                                      "src": "8640:1:28",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "8673:30:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "log_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8685:5:28"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8696:2:28",
                                            "type": "",
                                            "value": "51"
                                          },
                                          {
                                            "name": "f",
                                            "nodeType": "YulIdentifier",
                                            "src": "8700:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "8692:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8692:10:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "8682:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8682:21:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "log_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "8673:5:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "8720:14:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "f",
                                        "nodeType": "YulIdentifier",
                                        "src": "8729:1:28"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "8732:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "8725:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8725:9:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "8720:1:28"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8673:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8685:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8595:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8613:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8616:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8654:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8720:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8732:1:28",
                                "valueSize": 1
                              }
                            ],
                            "id": 4166,
                            "nodeType": "InlineAssembly",
                            "src": "8568:180:28"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "8770:140:28",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "8788:24:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8797:3:28",
                                        "type": "",
                                        "value": "127"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "8806:1:28"
                                          },
                                          {
                                            "name": "r",
                                            "nodeType": "YulIdentifier",
                                            "src": "8809:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "8802:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8802:9:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "8793:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8793:19:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "r",
                                      "nodeType": "YulIdentifier",
                                      "src": "8788:1:28"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "8829:20:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8842:3:28",
                                        "type": "",
                                        "value": "128"
                                      },
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "8847:1:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shr",
                                      "nodeType": "YulIdentifier",
                                      "src": "8838:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8838:11:28"
                                  },
                                  "variables": [
                                    {
                                      "name": "f",
                                      "nodeType": "YulTypedName",
                                      "src": "8833:1:28",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "8866:30:28",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "log_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8878:5:28"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8889:2:28",
                                            "type": "",
                                            "value": "50"
                                          },
                                          {
                                            "name": "f",
                                            "nodeType": "YulIdentifier",
                                            "src": "8893:1:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "8885:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8885:10:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "8875:2:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8875:21:28"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "log_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "8866:5:28"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8866:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4143,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8878:5:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8788:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8806:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8809:1:28",
                                "valueSize": 1
                              },
                              {
                                "declaration": 4106,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "8847:1:28",
                                "valueSize": 1
                              }
                            ],
                            "id": 4167,
                            "nodeType": "InlineAssembly",
                            "src": "8761:149:28"
                          },
                          {
                            "assignments": [
                              4169
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4169,
                                "mutability": "mutable",
                                "name": "log_sqrt10001",
                                "nameLocation": "8931:13:28",
                                "nodeType": "VariableDeclaration",
                                "scope": 4214,
                                "src": "8924:20:28",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "typeName": {
                                  "id": 4168,
                                  "name": "int256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8924:6:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 4173,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              },
                              "id": 4172,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4170,
                                "name": "log_2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4143,
                                "src": "8947:5:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "hexValue": "323535373338393538393939363033383236333437313431",
                                "id": 4171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8955:24:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_255738958999603826347141_by_1",
                                  "typeString": "int_const 255738958999603826347141"
                                },
                                "value": "255738958999603826347141"
                              },
                              "src": "8947:32:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "8924:55:28"
                          },
                          {
                            "assignments": [
                              4175
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4175,
                                "mutability": "mutable",
                                "name": "tickLow",
                                "nameLocation": "9019:7:28",
                                "nodeType": "VariableDeclaration",
                                "scope": 4214,
                                "src": "9013:13:28",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                "typeName": {
                                  "id": 4174,
                                  "name": "int24",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9013:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 4185,
                            "initialValue": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 4183,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        "id": 4180,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4178,
                                          "name": "log_sqrt10001",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4169,
                                          "src": "9036:13:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "hexValue": "33343032393932393536383039313332343138353936313430313030363630323437323130",
                                          "id": 4179,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "9052:37:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_3402992956809132418596140100660247210_by_1",
                                            "typeString": "int_const 3402...(29 digits omitted)...7210"
                                          },
                                          "value": "3402992956809132418596140100660247210"
                                        },
                                        "src": "9036:53:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      }
                                    ],
                                    "id": 4181,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "9035:55:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 4182,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9094:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "9035:62:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 4177,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9029:5:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int24_$",
                                  "typeString": "type(int24)"
                                },
                                "typeName": {
                                  "id": 4176,
                                  "name": "int24",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9029:5:28",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4184,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9029:69:28",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "9013:85:28"
                          },
                          {
                            "assignments": [
                              4187
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4187,
                                "mutability": "mutable",
                                "name": "tickHi",
                                "nameLocation": "9118:6:28",
                                "nodeType": "VariableDeclaration",
                                "scope": 4214,
                                "src": "9112:12:28",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                "typeName": {
                                  "id": 4186,
                                  "name": "int24",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9112:5:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 4197,
                            "initialValue": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 4195,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        "id": 4192,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4190,
                                          "name": "log_sqrt10001",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4169,
                                          "src": "9134:13:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "hexValue": "323931333339343634373731393839363232393037303237363231313533333938303838343935",
                                          "id": 4191,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "9150:39:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_291339464771989622907027621153398088495_by_1",
                                            "typeString": "int_const 2913...(31 digits omitted)...8495"
                                          },
                                          "value": "291339464771989622907027621153398088495"
                                        },
                                        "src": "9134:55:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      }
                                    ],
                                    "id": 4193,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "9133:57:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">>",
                                  "rightExpression": {
                                    "hexValue": "313238",
                                    "id": 4194,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9194:3:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_128_by_1",
                                      "typeString": "int_const 128"
                                    },
                                    "value": "128"
                                  },
                                  "src": "9133:64:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "id": 4189,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9127:5:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int24_$",
                                  "typeString": "type(int24)"
                                },
                                "typeName": {
                                  "id": 4188,
                                  "name": "int24",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9127:5:28",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4196,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9127:71:28",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "9112:86:28"
                          },
                          {
                            "expression": {
                              "id": 4212,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 4198,
                                "name": "tick",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4083,
                                "src": "9213:4:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  },
                                  "id": 4201,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 4199,
                                    "name": "tickLow",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4175,
                                    "src": "9220:7:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 4200,
                                    "name": "tickHi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4187,
                                    "src": "9231:6:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "src": "9220:17:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    },
                                    "id": 4207,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 4204,
                                          "name": "tickHi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4187,
                                          "src": "9269:6:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        ],
                                        "id": 4203,
                                        "name": "getSqrtRatioAtTick",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4077,
                                        "src": "9250:18:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$",
                                          "typeString": "function (int24) pure returns (uint160)"
                                        }
                                      },
                                      "id": 4205,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9250:26:28",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "id": 4206,
                                      "name": "sqrtPriceX96",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4080,
                                      "src": "9280:12:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      }
                                    },
                                    "src": "9250:42:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "id": 4209,
                                    "name": "tickLow",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4175,
                                    "src": "9304:7:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "id": 4210,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "9250:61:28",
                                  "trueExpression": {
                                    "id": 4208,
                                    "name": "tickHi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4187,
                                    "src": "9295:6:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "id": 4211,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "9220:91:28",
                                "trueExpression": {
                                  "id": 4202,
                                  "name": "tickLow",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4175,
                                  "src": "9240:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "src": "9213:98:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "id": 4213,
                            "nodeType": "ExpressionStatement",
                            "src": "9213:98:28"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4078,
                    "nodeType": "StructuredDocumentation",
                    "src": "4227:411:28",
                    "text": "@notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio.\n @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\n ever return.\n @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96.\n @return tick The greatest tick for which the ratio is less than or equal to the input ratio."
                  },
                  "id": 4216,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTickAtSqrtRatio",
                  "nameLocation": "4652:18:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4081,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4080,
                        "mutability": "mutable",
                        "name": "sqrtPriceX96",
                        "nameLocation": "4679:12:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4216,
                        "src": "4671:20:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "typeName": {
                          "id": 4079,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "4671:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4670:22:28"
                  },
                  "returnParameters": {
                    "id": 4084,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4083,
                        "mutability": "mutable",
                        "name": "tick",
                        "nameLocation": "4722:4:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4216,
                        "src": "4716:10:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 4082,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "4716:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4715:12:28"
                  },
                  "scope": 4217,
                  "src": "4643:4685:28",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 4218,
              "src": "368:8962:28",
              "usedErrors": [
                3697,
                3699
              ]
            }
          ],
          "src": "46:9285:28"
        },
        "id": 28
      },
      "contracts/libraries/concentratedPool/Ticks.sol": {
        "ast": {
          "absolutePath": "contracts/libraries/concentratedPool/Ticks.sol",
          "exportedSymbols": {
            "TickMath": [
              4217
            ],
            "Ticks": [
              4906
            ],
            "console": [
              32437
            ]
          },
          "id": 4907,
          "license": "GPL-2.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4219,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:29"
            },
            {
              "absolutePath": "contracts/libraries/concentratedPool/TickMath.sol",
              "file": "./TickMath.sol",
              "id": 4220,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4907,
              "sourceUnit": 4218,
              "src": "72:24:29",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "hardhat/console.sol",
              "file": "hardhat/console.sol",
              "id": 4221,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4907,
              "sourceUnit": 32438,
              "src": "97:29:29",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 4222,
                "nodeType": "StructuredDocumentation",
                "src": "128:58:29",
                "text": "@notice Tick management library for ranged liquidity."
              },
              "fullyImplemented": true,
              "id": 4906,
              "linearizedBaseContracts": [
                4906
              ],
              "name": "Ticks",
              "nameLocation": "194:5:29",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "Ticks.Tick",
                  "id": 4235,
                  "members": [
                    {
                      "constant": false,
                      "id": 4224,
                      "mutability": "mutable",
                      "name": "previousTick",
                      "nameLocation": "234:12:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 4235,
                      "src": "228:18:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      },
                      "typeName": {
                        "id": 4223,
                        "name": "int24",
                        "nodeType": "ElementaryTypeName",
                        "src": "228:5:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4226,
                      "mutability": "mutable",
                      "name": "nextTick",
                      "nameLocation": "262:8:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 4235,
                      "src": "256:14:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      },
                      "typeName": {
                        "id": 4225,
                        "name": "int24",
                        "nodeType": "ElementaryTypeName",
                        "src": "256:5:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4228,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nameLocation": "288:9:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 4235,
                      "src": "280:17:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 4227,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "280:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4230,
                      "mutability": "mutable",
                      "name": "feeGrowthOutside0",
                      "nameLocation": "315:17:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 4235,
                      "src": "307:25:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4229,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "307:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4232,
                      "mutability": "mutable",
                      "name": "feeGrowthOutside1",
                      "nameLocation": "376:17:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 4235,
                      "src": "368:25:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4231,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "368:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4234,
                      "mutability": "mutable",
                      "name": "secondsGrowthOutside",
                      "nameLocation": "411:20:29",
                      "nodeType": "VariableDeclaration",
                      "scope": 4235,
                      "src": "403:28:29",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      },
                      "typeName": {
                        "id": 4233,
                        "name": "uint160",
                        "nodeType": "ElementaryTypeName",
                        "src": "403:7:29",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Tick",
                  "nameLocation": "213:4:29",
                  "nodeType": "StructDefinition",
                  "scope": 4906,
                  "src": "206:232:29",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4265,
                    "nodeType": "Block",
                    "src": "520:107:29",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "id": 4263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4244,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "542:7:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  },
                                  "typeName": {
                                    "id": 4243,
                                    "name": "uint128",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "542:7:29",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  }
                                ],
                                "id": 4242,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "537:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4245,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "537:13:29",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint128",
                                "typeString": "type(uint128)"
                              }
                            },
                            "id": 4246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "537:17:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint24",
                                  "typeString": "uint24"
                                },
                                "id": 4261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 4251,
                                        "name": "TickMath",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4217,
                                        "src": "572:8:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                          "typeString": "type(library TickMath)"
                                        }
                                      },
                                      "id": 4252,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "MAX_TICK",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3687,
                                      "src": "572:17:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    ],
                                    "id": 4250,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "565:6:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint24_$",
                                      "typeString": "type(uint24)"
                                    },
                                    "typeName": {
                                      "id": 4249,
                                      "name": "uint24",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "565:6:29",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 4253,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "565:25:29",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint24",
                                    "typeString": "uint24"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint24",
                                        "typeString": "uint24"
                                      },
                                      "id": 4259,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "32",
                                        "id": 4254,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "594:1:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "arguments": [
                                          {
                                            "id": 4257,
                                            "name": "_tickSpacing",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4237,
                                            "src": "605:12:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint24",
                                              "typeString": "uint24"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint24",
                                              "typeString": "uint24"
                                            }
                                          ],
                                          "id": 4256,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "598:6:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint24_$",
                                            "typeString": "type(uint24)"
                                          },
                                          "typeName": {
                                            "id": 4255,
                                            "name": "uint24",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "598:6:29",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 4258,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "598:20:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint24",
                                          "typeString": "uint24"
                                        }
                                      },
                                      "src": "594:24:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint24",
                                        "typeString": "uint24"
                                      }
                                    }
                                  ],
                                  "id": 4260,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "593:26:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint24",
                                    "typeString": "uint24"
                                  }
                                },
                                "src": "565:54:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint24",
                                  "typeString": "uint24"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint24",
                                  "typeString": "uint24"
                                }
                              ],
                              "id": 4248,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "557:7:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 4247,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "557:7:29",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4262,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "557:63:29",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "537:83:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "functionReturnParameters": 4241,
                        "id": 4264,
                        "nodeType": "Return",
                        "src": "530:90:29"
                      }
                    ]
                  },
                  "functionSelector": "dc47a5c2",
                  "id": 4266,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getMaxLiquidity",
                  "nameLocation": "453:15:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4238,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4237,
                        "mutability": "mutable",
                        "name": "_tickSpacing",
                        "nameLocation": "476:12:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4266,
                        "src": "469:19:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        },
                        "typeName": {
                          "id": 4236,
                          "name": "uint24",
                          "nodeType": "ElementaryTypeName",
                          "src": "469:6:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "468:21:29"
                  },
                  "returnParameters": {
                    "id": 4241,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4240,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4266,
                        "src": "511:7:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 4239,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "511:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "510:9:29"
                  },
                  "scope": 4906,
                  "src": "444:183:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4430,
                    "nodeType": "Block",
                    "src": "957:1453:29",
                    "statements": [
                      {
                        "expression": {
                          "id": 4302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 4292,
                                "name": "ticks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4271,
                                "src": "967:5:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                  "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                }
                              },
                              "id": 4294,
                              "indexExpression": {
                                "id": 4293,
                                "name": "nextTickToCross",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4273,
                                "src": "973:15:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "967:22:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                "typeString": "struct Ticks.Tick storage ref"
                              }
                            },
                            "id": 4295,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "secondsGrowthOutside",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4234,
                            "src": "967:43:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            },
                            "id": 4301,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4296,
                              "name": "secondsGrowthGlobal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4275,
                              "src": "1013:19:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "expression": {
                                "baseExpression": {
                                  "id": 4297,
                                  "name": "ticks",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4271,
                                  "src": "1035:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                    "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                  }
                                },
                                "id": 4299,
                                "indexExpression": {
                                  "id": 4298,
                                  "name": "nextTickToCross",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4273,
                                  "src": "1041:15:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1035:22:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                  "typeString": "struct Ticks.Tick storage ref"
                                }
                              },
                              "id": 4300,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "secondsGrowthOutside",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4234,
                              "src": "1035:43:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "src": "1013:65:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "src": "967:111:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "id": 4303,
                        "nodeType": "ExpressionStatement",
                        "src": "967:111:29"
                      },
                      {
                        "condition": {
                          "id": 4304,
                          "name": "zeroForOne",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4283,
                          "src": "1093:10:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4424,
                          "nodeType": "Block",
                          "src": "1747:605:29",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                "id": 4375,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  },
                                  "id": 4373,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        },
                                        "id": 4370,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4365,
                                          "name": "nextTickToCross",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4273,
                                          "src": "1823:15:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "arguments": [
                                            {
                                              "id": 4368,
                                              "name": "tickSpacing",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4285,
                                              "src": "1847:11:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint24",
                                                "typeString": "uint24"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint24",
                                                "typeString": "uint24"
                                              }
                                            ],
                                            "id": 4367,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1841:5:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_int24_$",
                                              "typeString": "type(int24)"
                                            },
                                            "typeName": {
                                              "id": 4366,
                                              "name": "int24",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "1841:5:29",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 4369,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1841:18:29",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        },
                                        "src": "1823:36:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        }
                                      }
                                    ],
                                    "id": 4371,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "1822:38:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "%",
                                  "rightExpression": {
                                    "hexValue": "32",
                                    "id": 4372,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1863:1:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "1822:42:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 4374,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1868:1:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1822:47:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 4391,
                                "nodeType": "Block",
                                "src": "1962:85:29",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 4389,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 4384,
                                        "name": "currentLiquidity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4277,
                                        "src": "1980:16:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "-=",
                                      "rightHandSide": {
                                        "expression": {
                                          "baseExpression": {
                                            "id": 4385,
                                            "name": "ticks",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4271,
                                            "src": "2000:5:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                              "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                            }
                                          },
                                          "id": 4387,
                                          "indexExpression": {
                                            "id": 4386,
                                            "name": "nextTickToCross",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4273,
                                            "src": "2006:15:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "2000:22:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                            "typeString": "struct Ticks.Tick storage ref"
                                          }
                                        },
                                        "id": 4388,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "liquidity",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4228,
                                        "src": "2000:32:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "1980:52:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4390,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1980:52:29"
                                  }
                                ]
                              },
                              "id": 4392,
                              "nodeType": "IfStatement",
                              "src": "1818:229:29",
                              "trueBody": {
                                "id": 4383,
                                "nodeType": "Block",
                                "src": "1871:85:29",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 4381,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 4376,
                                        "name": "currentLiquidity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4277,
                                        "src": "1889:16:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "+=",
                                      "rightHandSide": {
                                        "expression": {
                                          "baseExpression": {
                                            "id": 4377,
                                            "name": "ticks",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4271,
                                            "src": "1909:5:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                              "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                            }
                                          },
                                          "id": 4379,
                                          "indexExpression": {
                                            "id": 4378,
                                            "name": "nextTickToCross",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4273,
                                            "src": "1915:15:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "1909:22:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                            "typeString": "struct Ticks.Tick storage ref"
                                          }
                                        },
                                        "id": 4380,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "liquidity",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4228,
                                        "src": "1909:32:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "1889:52:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4382,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1889:52:29"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 4403,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 4393,
                                      "name": "ticks",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4271,
                                      "src": "2060:5:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                        "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                      }
                                    },
                                    "id": 4395,
                                    "indexExpression": {
                                      "id": 4394,
                                      "name": "nextTickToCross",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4273,
                                      "src": "2066:15:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2060:22:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                      "typeString": "struct Ticks.Tick storage ref"
                                    }
                                  },
                                  "id": 4396,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "feeGrowthOutside1",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4232,
                                  "src": "2060:40:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4402,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 4397,
                                    "name": "feeGrowthGlobalB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4281,
                                    "src": "2103:16:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 4398,
                                        "name": "ticks",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4271,
                                        "src": "2122:5:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                          "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                        }
                                      },
                                      "id": 4400,
                                      "indexExpression": {
                                        "id": 4399,
                                        "name": "nextTickToCross",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4273,
                                        "src": "2128:15:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2122:22:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                        "typeString": "struct Ticks.Tick storage ref"
                                      }
                                    },
                                    "id": 4401,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "feeGrowthOutside1",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4232,
                                    "src": "2122:40:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "2103:59:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2060:102:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4404,
                              "nodeType": "ExpressionStatement",
                              "src": "2060:102:29"
                            },
                            {
                              "expression": {
                                "id": 4415,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 4405,
                                      "name": "ticks",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4271,
                                      "src": "2176:5:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                        "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                      }
                                    },
                                    "id": 4407,
                                    "indexExpression": {
                                      "id": 4406,
                                      "name": "nextTickToCross",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4273,
                                      "src": "2182:15:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2176:22:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                      "typeString": "struct Ticks.Tick storage ref"
                                    }
                                  },
                                  "id": 4408,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "feeGrowthOutside0",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4230,
                                  "src": "2176:40:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4414,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 4409,
                                    "name": "feeGrowthGlobalA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4279,
                                    "src": "2219:16:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 4410,
                                        "name": "ticks",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4271,
                                        "src": "2238:5:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                          "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                        }
                                      },
                                      "id": 4412,
                                      "indexExpression": {
                                        "id": 4411,
                                        "name": "nextTickToCross",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4273,
                                        "src": "2244:15:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2238:22:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                        "typeString": "struct Ticks.Tick storage ref"
                                      }
                                    },
                                    "id": 4413,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "feeGrowthOutside0",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4230,
                                    "src": "2238:40:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "2219:59:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2176:102:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4416,
                              "nodeType": "ExpressionStatement",
                              "src": "2176:102:29"
                            },
                            {
                              "expression": {
                                "id": 4422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4417,
                                  "name": "nextTickToCross",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4273,
                                  "src": "2292:15:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 4418,
                                      "name": "ticks",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4271,
                                      "src": "2310:5:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                        "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                      }
                                    },
                                    "id": 4420,
                                    "indexExpression": {
                                      "id": 4419,
                                      "name": "nextTickToCross",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4273,
                                      "src": "2316:15:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2310:22:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                      "typeString": "struct Ticks.Tick storage ref"
                                    }
                                  },
                                  "id": 4421,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nextTick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4226,
                                  "src": "2310:31:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "src": "2292:49:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "id": 4423,
                              "nodeType": "ExpressionStatement",
                              "src": "2292:49:29"
                            }
                          ]
                        },
                        "id": 4425,
                        "nodeType": "IfStatement",
                        "src": "1089:1263:29",
                        "trueBody": {
                          "id": 4364,
                          "nodeType": "Block",
                          "src": "1105:636:29",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                "id": 4315,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  },
                                  "id": 4313,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        },
                                        "id": 4310,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4305,
                                          "name": "nextTickToCross",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4273,
                                          "src": "1179:15:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "arguments": [
                                            {
                                              "id": 4308,
                                              "name": "tickSpacing",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4285,
                                              "src": "1203:11:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint24",
                                                "typeString": "uint24"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint24",
                                                "typeString": "uint24"
                                              }
                                            ],
                                            "id": 4307,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1197:5:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_int24_$",
                                              "typeString": "type(int24)"
                                            },
                                            "typeName": {
                                              "id": 4306,
                                              "name": "int24",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "1197:5:29",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 4309,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1197:18:29",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        },
                                        "src": "1179:36:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        }
                                      }
                                    ],
                                    "id": 4311,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "1178:38:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "%",
                                  "rightExpression": {
                                    "hexValue": "32",
                                    "id": 4312,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1219:1:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "1178:42:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 4314,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1224:1:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "1178:47:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 4331,
                                "nodeType": "Block",
                                "src": "1347:85:29",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 4329,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 4324,
                                        "name": "currentLiquidity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4277,
                                        "src": "1365:16:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "+=",
                                      "rightHandSide": {
                                        "expression": {
                                          "baseExpression": {
                                            "id": 4325,
                                            "name": "ticks",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4271,
                                            "src": "1385:5:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                              "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                            }
                                          },
                                          "id": 4327,
                                          "indexExpression": {
                                            "id": 4326,
                                            "name": "nextTickToCross",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4273,
                                            "src": "1391:15:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "1385:22:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                            "typeString": "struct Ticks.Tick storage ref"
                                          }
                                        },
                                        "id": 4328,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "liquidity",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4228,
                                        "src": "1385:32:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "1365:52:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4330,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1365:52:29"
                                  }
                                ]
                              },
                              "id": 4332,
                              "nodeType": "IfStatement",
                              "src": "1174:258:29",
                              "trueBody": {
                                "id": 4323,
                                "nodeType": "Block",
                                "src": "1227:114:29",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 4321,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 4316,
                                        "name": "currentLiquidity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4277,
                                        "src": "1245:16:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "-=",
                                      "rightHandSide": {
                                        "expression": {
                                          "baseExpression": {
                                            "id": 4317,
                                            "name": "ticks",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4271,
                                            "src": "1265:5:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                              "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                            }
                                          },
                                          "id": 4319,
                                          "indexExpression": {
                                            "id": 4318,
                                            "name": "nextTickToCross",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4273,
                                            "src": "1271:15:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "1265:22:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                            "typeString": "struct Ticks.Tick storage ref"
                                          }
                                        },
                                        "id": 4320,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "liquidity",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4228,
                                        "src": "1265:32:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "1245:52:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4322,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1245:52:29"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 4343,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 4333,
                                      "name": "ticks",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4271,
                                      "src": "1445:5:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                        "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                      }
                                    },
                                    "id": 4335,
                                    "indexExpression": {
                                      "id": 4334,
                                      "name": "nextTickToCross",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4273,
                                      "src": "1451:15:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1445:22:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                      "typeString": "struct Ticks.Tick storage ref"
                                    }
                                  },
                                  "id": 4336,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "feeGrowthOutside0",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4230,
                                  "src": "1445:40:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4342,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 4337,
                                    "name": "feeGrowthGlobalB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4281,
                                    "src": "1488:16:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 4338,
                                        "name": "ticks",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4271,
                                        "src": "1507:5:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                          "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                        }
                                      },
                                      "id": 4340,
                                      "indexExpression": {
                                        "id": 4339,
                                        "name": "nextTickToCross",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4273,
                                        "src": "1513:15:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1507:22:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                        "typeString": "struct Ticks.Tick storage ref"
                                      }
                                    },
                                    "id": 4341,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "feeGrowthOutside0",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4230,
                                    "src": "1507:40:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1488:59:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1445:102:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4344,
                              "nodeType": "ExpressionStatement",
                              "src": "1445:102:29"
                            },
                            {
                              "expression": {
                                "id": 4355,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 4345,
                                      "name": "ticks",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4271,
                                      "src": "1561:5:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                        "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                      }
                                    },
                                    "id": 4347,
                                    "indexExpression": {
                                      "id": 4346,
                                      "name": "nextTickToCross",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4273,
                                      "src": "1567:15:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1561:22:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                      "typeString": "struct Ticks.Tick storage ref"
                                    }
                                  },
                                  "id": 4348,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "feeGrowthOutside1",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4232,
                                  "src": "1561:40:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4354,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 4349,
                                    "name": "feeGrowthGlobalA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4279,
                                    "src": "1604:16:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 4350,
                                        "name": "ticks",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4271,
                                        "src": "1623:5:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                          "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                        }
                                      },
                                      "id": 4352,
                                      "indexExpression": {
                                        "id": 4351,
                                        "name": "nextTickToCross",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4273,
                                        "src": "1629:15:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1623:22:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                        "typeString": "struct Ticks.Tick storage ref"
                                      }
                                    },
                                    "id": 4353,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "feeGrowthOutside1",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4232,
                                    "src": "1623:40:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1604:59:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1561:102:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4356,
                              "nodeType": "ExpressionStatement",
                              "src": "1561:102:29"
                            },
                            {
                              "expression": {
                                "id": 4362,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4357,
                                  "name": "nextTickToCross",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4273,
                                  "src": "1677:15:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 4358,
                                      "name": "ticks",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4271,
                                      "src": "1695:5:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                        "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                      }
                                    },
                                    "id": 4360,
                                    "indexExpression": {
                                      "id": 4359,
                                      "name": "nextTickToCross",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4273,
                                      "src": "1701:15:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1695:22:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                      "typeString": "struct Ticks.Tick storage ref"
                                    }
                                  },
                                  "id": 4361,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "previousTick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4224,
                                  "src": "1695:35:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "src": "1677:53:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "id": 4363,
                              "nodeType": "ExpressionStatement",
                              "src": "1677:53:29"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 4426,
                              "name": "currentLiquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4277,
                              "src": "2369:16:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4427,
                              "name": "nextTickToCross",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4273,
                              "src": "2387:15:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            }
                          ],
                          "id": 4428,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2368:35:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_int24_$",
                            "typeString": "tuple(uint256,int24)"
                          }
                        },
                        "functionReturnParameters": 4291,
                        "id": 4429,
                        "nodeType": "Return",
                        "src": "2361:42:29"
                      }
                    ]
                  },
                  "id": 4431,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "cross",
                  "nameLocation": "642:5:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4286,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4271,
                        "mutability": "mutable",
                        "name": "ticks",
                        "nameLocation": "688:5:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4431,
                        "src": "657:36:29",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                          "typeString": "mapping(int24 => struct Ticks.Tick)"
                        },
                        "typeName": {
                          "id": 4270,
                          "keyType": {
                            "id": 4267,
                            "name": "int24",
                            "nodeType": "ElementaryTypeName",
                            "src": "665:5:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "Mapping",
                          "src": "657:22:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                            "typeString": "mapping(int24 => struct Ticks.Tick)"
                          },
                          "valueType": {
                            "id": 4269,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 4268,
                              "name": "Tick",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4235,
                              "src": "674:4:29"
                            },
                            "referencedDeclaration": 4235,
                            "src": "674:4:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                              "typeString": "struct Ticks.Tick"
                            }
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4273,
                        "mutability": "mutable",
                        "name": "nextTickToCross",
                        "nameLocation": "709:15:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4431,
                        "src": "703:21:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 4272,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "703:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4275,
                        "mutability": "mutable",
                        "name": "secondsGrowthGlobal",
                        "nameLocation": "742:19:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4431,
                        "src": "734:27:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "typeName": {
                          "id": 4274,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "734:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4277,
                        "mutability": "mutable",
                        "name": "currentLiquidity",
                        "nameLocation": "779:16:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4431,
                        "src": "771:24:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4276,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "771:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4279,
                        "mutability": "mutable",
                        "name": "feeGrowthGlobalA",
                        "nameLocation": "813:16:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4431,
                        "src": "805:24:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4278,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "805:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4281,
                        "mutability": "mutable",
                        "name": "feeGrowthGlobalB",
                        "nameLocation": "847:16:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4431,
                        "src": "839:24:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4280,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "839:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4283,
                        "mutability": "mutable",
                        "name": "zeroForOne",
                        "nameLocation": "878:10:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4431,
                        "src": "873:15:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4282,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "873:4:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4285,
                        "mutability": "mutable",
                        "name": "tickSpacing",
                        "nameLocation": "905:11:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4431,
                        "src": "898:18:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        },
                        "typeName": {
                          "id": 4284,
                          "name": "uint24",
                          "nodeType": "ElementaryTypeName",
                          "src": "898:6:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "647:275:29"
                  },
                  "returnParameters": {
                    "id": 4291,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4288,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4431,
                        "src": "941:7:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4287,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "941:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4290,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4431,
                        "src": "950:5:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 4289,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "950:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "940:16:29"
                  },
                  "scope": 4906,
                  "src": "633:1777:29",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4734,
                    "nodeType": "Block",
                    "src": "2783:2471:29",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              },
                              "id": 4464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4462,
                                "name": "lower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4446,
                                "src": "2801:5:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 4463,
                                "name": "upper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4450,
                                "src": "2809:5:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "src": "2801:13:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "57524f4e475f4f52444552",
                              "id": 4465,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2816:13:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_226b47270794b9ea549ee3795bb5a416c284936ec88c0783c34f02074948c922",
                                "typeString": "literal_string \"WRONG_ORDER\""
                              },
                              "value": "WRONG_ORDER"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_226b47270794b9ea549ee3795bb5a416c284936ec88c0783c34f02074948c922",
                                "typeString": "literal_string \"WRONG_ORDER\""
                              }
                            ],
                            "id": 4461,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2793:7:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2793:37:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4467,
                        "nodeType": "ExpressionStatement",
                        "src": "2793:37:29"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              },
                              "id": 4472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 4469,
                                  "name": "TickMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4217,
                                  "src": "2848:8:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                    "typeString": "type(library TickMath)"
                                  }
                                },
                                "id": 4470,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "MIN_TICK",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3682,
                                "src": "2848:17:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 4471,
                                "name": "lower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4446,
                                "src": "2869:5:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "src": "2848:26:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4c4f5745525f52414e4745",
                              "id": 4473,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2876:13:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_2950e14a68a47101a6a90153db4d05b537a0e68e7cb02e2cb883021bc72dc5c3",
                                "typeString": "literal_string \"LOWER_RANGE\""
                              },
                              "value": "LOWER_RANGE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_2950e14a68a47101a6a90153db4d05b537a0e68e7cb02e2cb883021bc72dc5c3",
                                "typeString": "literal_string \"LOWER_RANGE\""
                              }
                            ],
                            "id": 4468,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2840:7:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2840:50:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4475,
                        "nodeType": "ExpressionStatement",
                        "src": "2840:50:29"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              },
                              "id": 4480,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4477,
                                "name": "upper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4450,
                                "src": "2908:5:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "expression": {
                                  "id": 4478,
                                  "name": "TickMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4217,
                                  "src": "2917:8:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                    "typeString": "type(library TickMath)"
                                  }
                                },
                                "id": 4479,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "MAX_TICK",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3687,
                                "src": "2917:17:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "src": "2908:26:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "55505045525f52414e4745",
                              "id": 4481,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2936:13:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_29e52788a32d555df09b373344c96b90696cde297ff0d3b9367c31a17328dfbb",
                                "typeString": "literal_string \"UPPER_RANGE\""
                              },
                              "value": "UPPER_RANGE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_29e52788a32d555df09b373344c96b90696cde297ff0d3b9367c31a17328dfbb",
                                "typeString": "literal_string \"UPPER_RANGE\""
                              }
                            ],
                            "id": 4476,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2900:7:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2900:50:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4483,
                        "nodeType": "ExpressionStatement",
                        "src": "2900:50:29"
                      },
                      {
                        "id": 4594,
                        "nodeType": "Block",
                        "src": "2961:1059:29",
                        "statements": [
                          {
                            "assignments": [
                              4485
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4485,
                                "mutability": "mutable",
                                "name": "currentLowerLiquidity",
                                "nameLocation": "3014:21:29",
                                "nodeType": "VariableDeclaration",
                                "scope": 4594,
                                "src": "3006:29:29",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                "typeName": {
                                  "id": 4484,
                                  "name": "uint128",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3006:7:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 4490,
                            "initialValue": {
                              "expression": {
                                "baseExpression": {
                                  "id": 4486,
                                  "name": "ticks",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4436,
                                  "src": "3038:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                    "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                  }
                                },
                                "id": 4488,
                                "indexExpression": {
                                  "id": 4487,
                                  "name": "lower",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4446,
                                  "src": "3044:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3038:12:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                  "typeString": "struct Ticks.Tick storage ref"
                                }
                              },
                              "id": 4489,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidity",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4228,
                              "src": "3038:22:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3006:54:29"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 4498,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                "id": 4493,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4491,
                                  "name": "currentLowerLiquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4485,
                                  "src": "3078:21:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 4492,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3103:1:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3078:26:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                "id": 4497,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4494,
                                  "name": "lower",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4446,
                                  "src": "3108:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 4495,
                                    "name": "TickMath",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4217,
                                    "src": "3117:8:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                      "typeString": "type(library TickMath)"
                                    }
                                  },
                                  "id": 4496,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "MIN_TICK",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3682,
                                  "src": "3117:17:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "src": "3108:26:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3078:56:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 4592,
                              "nodeType": "Block",
                              "src": "3294:716:29",
                              "statements": [
                                {
                                  "assignments": [
                                    4513
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 4513,
                                      "mutability": "mutable",
                                      "name": "old",
                                      "nameLocation": "3379:3:29",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 4592,
                                      "src": "3360:22:29",
                                      "stateVariable": false,
                                      "storageLocation": "storage",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                        "typeString": "struct Ticks.Tick"
                                      },
                                      "typeName": {
                                        "id": 4512,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 4511,
                                          "name": "Ticks.Tick",
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 4235,
                                          "src": "3360:10:29"
                                        },
                                        "referencedDeclaration": 4235,
                                        "src": "3360:10:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                          "typeString": "struct Ticks.Tick"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 4517,
                                  "initialValue": {
                                    "baseExpression": {
                                      "id": 4514,
                                      "name": "ticks",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4436,
                                      "src": "3385:5:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                        "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                      }
                                    },
                                    "id": 4516,
                                    "indexExpression": {
                                      "id": 4515,
                                      "name": "lowerOld",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4444,
                                      "src": "3391:8:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3385:15:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                      "typeString": "struct Ticks.Tick storage ref"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "3360:40:29"
                                },
                                {
                                  "assignments": [
                                    4519
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 4519,
                                      "mutability": "mutable",
                                      "name": "oldNextTick",
                                      "nameLocation": "3424:11:29",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 4592,
                                      "src": "3418:17:29",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      },
                                      "typeName": {
                                        "id": 4518,
                                        "name": "int24",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3418:5:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 4522,
                                  "initialValue": {
                                    "expression": {
                                      "id": 4520,
                                      "name": "old",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4513,
                                      "src": "3438:3:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                        "typeString": "struct Ticks.Tick storage pointer"
                                      }
                                    },
                                    "id": 4521,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "nextTick",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4226,
                                    "src": "3438:12:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "3418:32:29"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "id": 4541,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "id": 4537,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                },
                                                "id": 4532,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint128",
                                                    "typeString": "uint128"
                                                  },
                                                  "id": 4527,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "expression": {
                                                      "id": 4524,
                                                      "name": "old",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4513,
                                                      "src": "3478:3:29",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                                        "typeString": "struct Ticks.Tick storage pointer"
                                                      }
                                                    },
                                                    "id": 4525,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "liquidity",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 4228,
                                                    "src": "3478:13:29",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint128",
                                                      "typeString": "uint128"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "!=",
                                                  "rightExpression": {
                                                    "hexValue": "30",
                                                    "id": 4526,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "3495:1:29",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_0_by_1",
                                                      "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                  },
                                                  "src": "3478:18:29",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "||",
                                                "rightExpression": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_int24",
                                                    "typeString": "int24"
                                                  },
                                                  "id": 4531,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "id": 4528,
                                                    "name": "lowerOld",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4444,
                                                    "src": "3500:8:29",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_int24",
                                                      "typeString": "int24"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "==",
                                                  "rightExpression": {
                                                    "expression": {
                                                      "id": 4529,
                                                      "name": "TickMath",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4217,
                                                      "src": "3512:8:29",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                                        "typeString": "type(library TickMath)"
                                                      }
                                                    },
                                                    "id": 4530,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "MIN_TICK",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 3682,
                                                    "src": "3512:17:29",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_int24",
                                                      "typeString": "int24"
                                                    }
                                                  },
                                                  "src": "3500:29:29",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                },
                                                "src": "3478:51:29",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              }
                                            ],
                                            "id": 4533,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "3477:53:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "&&",
                                          "rightExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            },
                                            "id": 4536,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 4534,
                                              "name": "lowerOld",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4444,
                                              "src": "3534:8:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_int24",
                                                "typeString": "int24"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<",
                                            "rightExpression": {
                                              "id": 4535,
                                              "name": "lower",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4446,
                                              "src": "3545:5:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_int24",
                                                "typeString": "int24"
                                              }
                                            },
                                            "src": "3534:16:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "src": "3477:73:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&&",
                                        "rightExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          },
                                          "id": 4540,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 4538,
                                            "name": "lower",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4446,
                                            "src": "3554:5:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<",
                                          "rightExpression": {
                                            "id": 4539,
                                            "name": "oldNextTick",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4519,
                                            "src": "3562:11:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          },
                                          "src": "3554:19:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "src": "3477:96:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "hexValue": "4c4f5745525f4f52444552",
                                        "id": 4542,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3575:13:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_463260975839e1d8d74fbc6b529aa07ae59353aa2e6221a412d140a476ad9cb3",
                                          "typeString": "literal_string \"LOWER_ORDER\""
                                        },
                                        "value": "LOWER_ORDER"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_463260975839e1d8d74fbc6b529aa07ae59353aa2e6221a412d140a476ad9cb3",
                                          "typeString": "literal_string \"LOWER_ORDER\""
                                        }
                                      ],
                                      "id": 4523,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "3469:7:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 4543,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3469:120:29",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 4544,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3469:120:29"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    },
                                    "id": 4547,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 4545,
                                      "name": "lower",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4446,
                                      "src": "3612:5:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<=",
                                    "rightExpression": {
                                      "id": 4546,
                                      "name": "nearestTick",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4454,
                                      "src": "3621:11:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    "src": "3612:20:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "id": 4577,
                                    "nodeType": "Block",
                                    "src": "3794:106:29",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 4575,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "baseExpression": {
                                              "id": 4563,
                                              "name": "ticks",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4436,
                                              "src": "3816:5:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                                "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                              }
                                            },
                                            "id": 4565,
                                            "indexExpression": {
                                              "id": 4564,
                                              "name": "lower",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4446,
                                              "src": "3822:5:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_int24",
                                                "typeString": "int24"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "3816:12:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                              "typeString": "struct Ticks.Tick storage ref"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "arguments": [
                                              {
                                                "id": 4568,
                                                "name": "lowerOld",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4444,
                                                "src": "3842:8:29",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_int24",
                                                  "typeString": "int24"
                                                }
                                              },
                                              {
                                                "id": 4569,
                                                "name": "oldNextTick",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4519,
                                                "src": "3852:11:29",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_int24",
                                                  "typeString": "int24"
                                                }
                                              },
                                              {
                                                "id": 4570,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4452,
                                                "src": "3865:6:29",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint128",
                                                  "typeString": "uint128"
                                                }
                                              },
                                              {
                                                "hexValue": "30",
                                                "id": 4571,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3873:1:29",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              },
                                              {
                                                "hexValue": "30",
                                                "id": 4572,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3876:1:29",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              },
                                              {
                                                "hexValue": "30",
                                                "id": 4573,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3879:1:29",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_int24",
                                                  "typeString": "int24"
                                                },
                                                {
                                                  "typeIdentifier": "t_int24",
                                                  "typeString": "int24"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint128",
                                                  "typeString": "uint128"
                                                },
                                                {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                }
                                              ],
                                              "expression": {
                                                "id": 4566,
                                                "name": "Ticks",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4906,
                                                "src": "3831:5:29",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_Ticks_$4906_$",
                                                  "typeString": "type(library Ticks)"
                                                }
                                              },
                                              "id": 4567,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "Tick",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4235,
                                              "src": "3831:10:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_struct$_Tick_$4235_storage_ptr_$",
                                                "typeString": "type(struct Ticks.Tick storage pointer)"
                                              }
                                            },
                                            "id": 4574,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "structConstructorCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3831:50:29",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                                              "typeString": "struct Ticks.Tick memory"
                                            }
                                          },
                                          "src": "3816:65:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                            "typeString": "struct Ticks.Tick storage ref"
                                          }
                                        },
                                        "id": 4576,
                                        "nodeType": "ExpressionStatement",
                                        "src": "3816:65:29"
                                      }
                                    ]
                                  },
                                  "id": 4578,
                                  "nodeType": "IfStatement",
                                  "src": "3608:292:29",
                                  "trueBody": {
                                    "id": 4562,
                                    "nodeType": "Block",
                                    "src": "3634:154:29",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 4560,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "baseExpression": {
                                              "id": 4548,
                                              "name": "ticks",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4436,
                                              "src": "3656:5:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                                "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                              }
                                            },
                                            "id": 4550,
                                            "indexExpression": {
                                              "id": 4549,
                                              "name": "lower",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4446,
                                              "src": "3662:5:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_int24",
                                                "typeString": "int24"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "3656:12:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                              "typeString": "struct Ticks.Tick storage ref"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "arguments": [
                                              {
                                                "id": 4553,
                                                "name": "lowerOld",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4444,
                                                "src": "3682:8:29",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_int24",
                                                  "typeString": "int24"
                                                }
                                              },
                                              {
                                                "id": 4554,
                                                "name": "oldNextTick",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4519,
                                                "src": "3692:11:29",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_int24",
                                                  "typeString": "int24"
                                                }
                                              },
                                              {
                                                "id": 4555,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4452,
                                                "src": "3705:6:29",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint128",
                                                  "typeString": "uint128"
                                                }
                                              },
                                              {
                                                "id": 4556,
                                                "name": "feeGrowthGlobal0",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4438,
                                                "src": "3713:16:29",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "id": 4557,
                                                "name": "feeGrowthGlobal1",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4440,
                                                "src": "3731:16:29",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "id": 4558,
                                                "name": "secondsGrowthGlobal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4442,
                                                "src": "3749:19:29",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint160",
                                                  "typeString": "uint160"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_int24",
                                                  "typeString": "int24"
                                                },
                                                {
                                                  "typeIdentifier": "t_int24",
                                                  "typeString": "int24"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint128",
                                                  "typeString": "uint128"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint160",
                                                  "typeString": "uint160"
                                                }
                                              ],
                                              "expression": {
                                                "id": 4551,
                                                "name": "Ticks",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4906,
                                                "src": "3671:5:29",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_Ticks_$4906_$",
                                                  "typeString": "type(library Ticks)"
                                                }
                                              },
                                              "id": 4552,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "Tick",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4235,
                                              "src": "3671:10:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_struct$_Tick_$4235_storage_ptr_$",
                                                "typeString": "type(struct Ticks.Tick storage pointer)"
                                              }
                                            },
                                            "id": 4559,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "structConstructorCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3671:98:29",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                                              "typeString": "struct Ticks.Tick memory"
                                            }
                                          },
                                          "src": "3656:113:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                            "typeString": "struct Ticks.Tick storage ref"
                                          }
                                        },
                                        "id": 4561,
                                        "nodeType": "ExpressionStatement",
                                        "src": "3656:113:29"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 4583,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "id": 4579,
                                        "name": "old",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4513,
                                        "src": "3918:3:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                          "typeString": "struct Ticks.Tick storage pointer"
                                        }
                                      },
                                      "id": 4581,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "nextTick",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4226,
                                      "src": "3918:12:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "id": 4582,
                                      "name": "lower",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4446,
                                      "src": "3933:5:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    "src": "3918:20:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "id": 4584,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3918:20:29"
                                },
                                {
                                  "expression": {
                                    "id": 4590,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 4585,
                                          "name": "ticks",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4436,
                                          "src": "3956:5:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                            "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                          }
                                        },
                                        "id": 4587,
                                        "indexExpression": {
                                          "id": 4586,
                                          "name": "oldNextTick",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4519,
                                          "src": "3962:11:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3956:18:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                          "typeString": "struct Ticks.Tick storage ref"
                                        }
                                      },
                                      "id": 4588,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "previousTick",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4224,
                                      "src": "3956:31:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "id": 4589,
                                      "name": "lower",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4446,
                                      "src": "3990:5:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    "src": "3956:39:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "id": 4591,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3956:39:29"
                                }
                              ]
                            },
                            "id": 4593,
                            "nodeType": "IfStatement",
                            "src": "3074:936:29",
                            "trueBody": {
                              "id": 4508,
                              "nodeType": "Block",
                              "src": "3136:152:29",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4506,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 4499,
                                          "name": "ticks",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4436,
                                          "src": "3218:5:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                            "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                          }
                                        },
                                        "id": 4501,
                                        "indexExpression": {
                                          "id": 4500,
                                          "name": "lower",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4446,
                                          "src": "3224:5:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3218:12:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                          "typeString": "struct Ticks.Tick storage ref"
                                        }
                                      },
                                      "id": 4502,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "liquidity",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4228,
                                      "src": "3218:22:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      },
                                      "id": 4505,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 4503,
                                        "name": "currentLowerLiquidity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4485,
                                        "src": "3243:21:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "id": 4504,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4452,
                                        "src": "3267:6:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "3243:30:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "src": "3218:55:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "id": 4507,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3218:55:29"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "assignments": [
                          4596
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4596,
                            "mutability": "mutable",
                            "name": "currentUpperLiquidity",
                            "nameLocation": "4038:21:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 4734,
                            "src": "4030:29:29",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            },
                            "typeName": {
                              "id": 4595,
                              "name": "uint128",
                              "nodeType": "ElementaryTypeName",
                              "src": "4030:7:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4601,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 4597,
                              "name": "ticks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4436,
                              "src": "4062:5:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                              }
                            },
                            "id": 4599,
                            "indexExpression": {
                              "id": 4598,
                              "name": "upper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4450,
                              "src": "4068:5:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4062:12:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tick_$4235_storage",
                              "typeString": "struct Ticks.Tick storage ref"
                            }
                          },
                          "id": 4600,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "liquidity",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4228,
                          "src": "4062:22:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4030:54:29"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4609,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            },
                            "id": 4604,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4602,
                              "name": "currentUpperLiquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4596,
                              "src": "4098:21:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 4603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4123:1:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "4098:26:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            "id": 4608,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4605,
                              "name": "upper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4450,
                              "src": "4128:5:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "id": 4606,
                                "name": "TickMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4217,
                                "src": "4137:8:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                  "typeString": "type(library TickMath)"
                                }
                              },
                              "id": 4607,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MAX_TICK",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3687,
                              "src": "4137:17:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "src": "4128:26:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4098:56:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4697,
                          "nodeType": "Block",
                          "src": "4302:625:29",
                          "statements": [
                            {
                              "assignments": [
                                4624
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4624,
                                  "mutability": "mutable",
                                  "name": "old",
                                  "nameLocation": "4372:3:29",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4697,
                                  "src": "4353:22:29",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                    "typeString": "struct Ticks.Tick"
                                  },
                                  "typeName": {
                                    "id": 4623,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 4622,
                                      "name": "Ticks.Tick",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 4235,
                                      "src": "4353:10:29"
                                    },
                                    "referencedDeclaration": 4235,
                                    "src": "4353:10:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4628,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 4625,
                                  "name": "ticks",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4436,
                                  "src": "4378:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                    "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                  }
                                },
                                "id": 4627,
                                "indexExpression": {
                                  "id": 4626,
                                  "name": "upperOld",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4448,
                                  "src": "4384:8:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4378:15:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                  "typeString": "struct Ticks.Tick storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4353:40:29"
                            },
                            {
                              "assignments": [
                                4630
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4630,
                                  "mutability": "mutable",
                                  "name": "oldNextTick",
                                  "nameLocation": "4413:11:29",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4697,
                                  "src": "4407:17:29",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  },
                                  "typeName": {
                                    "id": 4629,
                                    "name": "int24",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4407:5:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4633,
                              "initialValue": {
                                "expression": {
                                  "id": 4631,
                                  "name": "old",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4624,
                                  "src": "4427:3:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                    "typeString": "struct Ticks.Tick storage pointer"
                                  }
                                },
                                "id": 4632,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "nextTick",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4226,
                                "src": "4427:12:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4407:32:29"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 4646,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 4642,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        },
                                        "id": 4638,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 4635,
                                            "name": "old",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4624,
                                            "src": "4462:3:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                              "typeString": "struct Ticks.Tick storage pointer"
                                            }
                                          },
                                          "id": 4636,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "liquidity",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4228,
                                          "src": "4462:13:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                          "hexValue": "30",
                                          "id": 4637,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4479:1:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        },
                                        "src": "4462:18:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&&",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        },
                                        "id": 4641,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4639,
                                          "name": "oldNextTick",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4630,
                                          "src": "4484:11:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                          "id": 4640,
                                          "name": "upper",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4450,
                                          "src": "4498:5:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        },
                                        "src": "4484:19:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "4462:41:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      },
                                      "id": 4645,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 4643,
                                        "name": "upperOld",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4448,
                                        "src": "4507:8:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "id": 4644,
                                        "name": "upper",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4450,
                                        "src": "4518:5:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        }
                                      },
                                      "src": "4507:16:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "4462:61:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "55505045525f4f52444552",
                                    "id": 4647,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4525:13:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_908caf2bfeb1978c79c58a73c3ee93f7194b51a5f66ced040e1bfa44f26e40fb",
                                      "typeString": "literal_string \"UPPER_ORDER\""
                                    },
                                    "value": "UPPER_ORDER"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_908caf2bfeb1978c79c58a73c3ee93f7194b51a5f66ced040e1bfa44f26e40fb",
                                      "typeString": "literal_string \"UPPER_ORDER\""
                                    }
                                  ],
                                  "id": 4634,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "4454:7:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 4648,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4454:85:29",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4649,
                              "nodeType": "ExpressionStatement",
                              "src": "4454:85:29"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                "id": 4652,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4650,
                                  "name": "upper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4450,
                                  "src": "4558:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "id": 4651,
                                  "name": "nearestTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4454,
                                  "src": "4567:11:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "src": "4558:20:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 4682,
                                "nodeType": "Block",
                                "src": "4732:98:29",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 4680,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 4668,
                                          "name": "ticks",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4436,
                                          "src": "4750:5:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                            "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                          }
                                        },
                                        "id": 4670,
                                        "indexExpression": {
                                          "id": 4669,
                                          "name": "upper",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4450,
                                          "src": "4756:5:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "4750:12:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                          "typeString": "struct Ticks.Tick storage ref"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 4673,
                                            "name": "upperOld",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4448,
                                            "src": "4776:8:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          },
                                          {
                                            "id": 4674,
                                            "name": "oldNextTick",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4630,
                                            "src": "4786:11:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          },
                                          {
                                            "id": 4675,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4452,
                                            "src": "4799:6:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          },
                                          {
                                            "hexValue": "30",
                                            "id": 4676,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4807:1:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          {
                                            "hexValue": "30",
                                            "id": 4677,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4810:1:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          {
                                            "hexValue": "30",
                                            "id": 4678,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4813:1:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            },
                                            {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            },
                                            {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            },
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            }
                                          ],
                                          "expression": {
                                            "id": 4671,
                                            "name": "Ticks",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4906,
                                            "src": "4765:5:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_Ticks_$4906_$",
                                              "typeString": "type(library Ticks)"
                                            }
                                          },
                                          "id": 4672,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "Tick",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4235,
                                          "src": "4765:10:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_struct$_Tick_$4235_storage_ptr_$",
                                            "typeString": "type(struct Ticks.Tick storage pointer)"
                                          }
                                        },
                                        "id": 4679,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "structConstructorCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4765:50:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                                          "typeString": "struct Ticks.Tick memory"
                                        }
                                      },
                                      "src": "4750:65:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                        "typeString": "struct Ticks.Tick storage ref"
                                      }
                                    },
                                    "id": 4681,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4750:65:29"
                                  }
                                ]
                              },
                              "id": 4683,
                              "nodeType": "IfStatement",
                              "src": "4554:276:29",
                              "trueBody": {
                                "id": 4667,
                                "nodeType": "Block",
                                "src": "4580:146:29",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 4665,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 4653,
                                          "name": "ticks",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4436,
                                          "src": "4598:5:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                            "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                          }
                                        },
                                        "id": 4655,
                                        "indexExpression": {
                                          "id": 4654,
                                          "name": "upper",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4450,
                                          "src": "4604:5:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "4598:12:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                          "typeString": "struct Ticks.Tick storage ref"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 4658,
                                            "name": "upperOld",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4448,
                                            "src": "4624:8:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          },
                                          {
                                            "id": 4659,
                                            "name": "oldNextTick",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4630,
                                            "src": "4634:11:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          },
                                          {
                                            "id": 4660,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4452,
                                            "src": "4647:6:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          },
                                          {
                                            "id": 4661,
                                            "name": "feeGrowthGlobal0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4438,
                                            "src": "4655:16:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 4662,
                                            "name": "feeGrowthGlobal1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4440,
                                            "src": "4673:16:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 4663,
                                            "name": "secondsGrowthGlobal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4442,
                                            "src": "4691:19:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint160",
                                              "typeString": "uint160"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            },
                                            {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            },
                                            {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint160",
                                              "typeString": "uint160"
                                            }
                                          ],
                                          "expression": {
                                            "id": 4656,
                                            "name": "Ticks",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4906,
                                            "src": "4613:5:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_Ticks_$4906_$",
                                              "typeString": "type(library Ticks)"
                                            }
                                          },
                                          "id": 4657,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "Tick",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4235,
                                          "src": "4613:10:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_struct$_Tick_$4235_storage_ptr_$",
                                            "typeString": "type(struct Ticks.Tick storage pointer)"
                                          }
                                        },
                                        "id": 4664,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "structConstructorCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4613:98:29",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                                          "typeString": "struct Ticks.Tick memory"
                                        }
                                      },
                                      "src": "4598:113:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                        "typeString": "struct Ticks.Tick storage ref"
                                      }
                                    },
                                    "id": 4666,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4598:113:29"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 4688,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 4684,
                                    "name": "old",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4624,
                                    "src": "4843:3:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick storage pointer"
                                    }
                                  },
                                  "id": 4686,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "nextTick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4226,
                                  "src": "4843:12:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 4687,
                                  "name": "upper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4450,
                                  "src": "4858:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "src": "4843:20:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "id": 4689,
                              "nodeType": "ExpressionStatement",
                              "src": "4843:20:29"
                            },
                            {
                              "expression": {
                                "id": 4695,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 4690,
                                      "name": "ticks",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4436,
                                      "src": "4877:5:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                        "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                      }
                                    },
                                    "id": 4692,
                                    "indexExpression": {
                                      "id": 4691,
                                      "name": "oldNextTick",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4630,
                                      "src": "4883:11:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4877:18:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                      "typeString": "struct Ticks.Tick storage ref"
                                    }
                                  },
                                  "id": 4693,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "previousTick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4224,
                                  "src": "4877:31:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 4694,
                                  "name": "upper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4450,
                                  "src": "4911:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "src": "4877:39:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "id": 4696,
                              "nodeType": "ExpressionStatement",
                              "src": "4877:39:29"
                            }
                          ]
                        },
                        "id": 4698,
                        "nodeType": "IfStatement",
                        "src": "4094:833:29",
                        "trueBody": {
                          "id": 4619,
                          "nodeType": "Block",
                          "src": "4156:140:29",
                          "statements": [
                            {
                              "expression": {
                                "id": 4617,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 4610,
                                      "name": "ticks",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4436,
                                      "src": "4230:5:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                        "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                      }
                                    },
                                    "id": 4612,
                                    "indexExpression": {
                                      "id": 4611,
                                      "name": "upper",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4450,
                                      "src": "4236:5:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4230:12:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                      "typeString": "struct Ticks.Tick storage ref"
                                    }
                                  },
                                  "id": 4613,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "liquidity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4228,
                                  "src": "4230:22:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "id": 4616,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 4614,
                                    "name": "currentUpperLiquidity",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4596,
                                    "src": "4255:21:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "id": 4615,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4452,
                                    "src": "4279:6:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "src": "4255:30:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "4230:55:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 4618,
                              "nodeType": "ExpressionStatement",
                              "src": "4230:55:29"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          4700
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4700,
                            "mutability": "mutable",
                            "name": "actualNearestTick",
                            "nameLocation": "4943:17:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 4734,
                            "src": "4937:23:29",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            "typeName": {
                              "id": 4699,
                              "name": "int24",
                              "nodeType": "ElementaryTypeName",
                              "src": "4937:5:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4705,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4703,
                              "name": "currentPrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4456,
                              "src": "4991:12:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "expression": {
                              "id": 4701,
                              "name": "TickMath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4217,
                              "src": "4963:8:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                "typeString": "type(library TickMath)"
                              }
                            },
                            "id": 4702,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getTickAtSqrtRatio",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4216,
                            "src": "4963:27:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint160_$returns$_t_int24_$",
                              "typeString": "function (uint160) pure returns (int24)"
                            }
                          },
                          "id": 4704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4963:41:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4937:67:29"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            "id": 4708,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4706,
                              "name": "nearestTick",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4454,
                              "src": "5019:11:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "id": 4707,
                              "name": "upper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4450,
                              "src": "5033:5:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "src": "5019:19:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            "id": 4711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4709,
                              "name": "upper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4450,
                              "src": "5042:5:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "id": 4710,
                              "name": "actualNearestTick",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4700,
                              "src": "5051:17:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "src": "5042:26:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5019:49:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 4724,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              },
                              "id": 4720,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4718,
                                "name": "nearestTick",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4454,
                                "src": "5124:11:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 4719,
                                "name": "lower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4446,
                                "src": "5138:5:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "src": "5124:19:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              },
                              "id": 4723,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4721,
                                "name": "lower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4446,
                                "src": "5147:5:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 4722,
                                "name": "actualNearestTick",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4700,
                                "src": "5156:17:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "src": "5147:26:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "5124:49:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 4730,
                          "nodeType": "IfStatement",
                          "src": "5120:99:29",
                          "trueBody": {
                            "id": 4729,
                            "nodeType": "Block",
                            "src": "5175:44:29",
                            "statements": [
                              {
                                "expression": {
                                  "id": 4727,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 4725,
                                    "name": "nearestTick",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4454,
                                    "src": "5189:11:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "id": 4726,
                                    "name": "lower",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4446,
                                    "src": "5203:5:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "src": "5189:19:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "id": 4728,
                                "nodeType": "ExpressionStatement",
                                "src": "5189:19:29"
                              }
                            ]
                          }
                        },
                        "id": 4731,
                        "nodeType": "IfStatement",
                        "src": "5015:204:29",
                        "trueBody": {
                          "id": 4717,
                          "nodeType": "Block",
                          "src": "5070:44:29",
                          "statements": [
                            {
                              "expression": {
                                "id": 4715,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4713,
                                  "name": "nearestTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4454,
                                  "src": "5084:11:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 4714,
                                  "name": "upper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4450,
                                  "src": "5098:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "src": "5084:19:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "id": 4716,
                              "nodeType": "ExpressionStatement",
                              "src": "5084:19:29"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 4732,
                          "name": "nearestTick",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4454,
                          "src": "5236:11:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "functionReturnParameters": 4460,
                        "id": 4733,
                        "nodeType": "Return",
                        "src": "5229:18:29"
                      }
                    ]
                  },
                  "functionSelector": "33440084",
                  "id": 4735,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "insert",
                  "nameLocation": "2425:6:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4457,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4436,
                        "mutability": "mutable",
                        "name": "ticks",
                        "nameLocation": "2472:5:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4735,
                        "src": "2441:36:29",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                          "typeString": "mapping(int24 => struct Ticks.Tick)"
                        },
                        "typeName": {
                          "id": 4435,
                          "keyType": {
                            "id": 4432,
                            "name": "int24",
                            "nodeType": "ElementaryTypeName",
                            "src": "2449:5:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "Mapping",
                          "src": "2441:22:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                            "typeString": "mapping(int24 => struct Ticks.Tick)"
                          },
                          "valueType": {
                            "id": 4434,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 4433,
                              "name": "Tick",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4235,
                              "src": "2458:4:29"
                            },
                            "referencedDeclaration": 4235,
                            "src": "2458:4:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                              "typeString": "struct Ticks.Tick"
                            }
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4438,
                        "mutability": "mutable",
                        "name": "feeGrowthGlobal0",
                        "nameLocation": "2495:16:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4735,
                        "src": "2487:24:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4437,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2487:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4440,
                        "mutability": "mutable",
                        "name": "feeGrowthGlobal1",
                        "nameLocation": "2529:16:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4735,
                        "src": "2521:24:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4439,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2521:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4442,
                        "mutability": "mutable",
                        "name": "secondsGrowthGlobal",
                        "nameLocation": "2563:19:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4735,
                        "src": "2555:27:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "typeName": {
                          "id": 4441,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "2555:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4444,
                        "mutability": "mutable",
                        "name": "lowerOld",
                        "nameLocation": "2598:8:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4735,
                        "src": "2592:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 4443,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "2592:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4446,
                        "mutability": "mutable",
                        "name": "lower",
                        "nameLocation": "2622:5:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4735,
                        "src": "2616:11:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 4445,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "2616:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4448,
                        "mutability": "mutable",
                        "name": "upperOld",
                        "nameLocation": "2643:8:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4735,
                        "src": "2637:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 4447,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "2637:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4450,
                        "mutability": "mutable",
                        "name": "upper",
                        "nameLocation": "2667:5:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4735,
                        "src": "2661:11:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 4449,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "2661:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4452,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2690:6:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4735,
                        "src": "2682:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 4451,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "2682:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4454,
                        "mutability": "mutable",
                        "name": "nearestTick",
                        "nameLocation": "2712:11:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4735,
                        "src": "2706:17:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 4453,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "2706:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4456,
                        "mutability": "mutable",
                        "name": "currentPrice",
                        "nameLocation": "2741:12:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4735,
                        "src": "2733:20:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "typeName": {
                          "id": 4455,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "2733:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2431:328:29"
                  },
                  "returnParameters": {
                    "id": 4460,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4459,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4735,
                        "src": "2776:5:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 4458,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "2776:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2775:7:29"
                  },
                  "scope": 4906,
                  "src": "2416:2838:29",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4904,
                    "nodeType": "Block",
                    "src": "5444:1252:29",
                    "statements": [
                      {
                        "assignments": [
                          4757
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4757,
                            "mutability": "mutable",
                            "name": "current",
                            "nameLocation": "5473:7:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 4904,
                            "src": "5454:26:29",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                              "typeString": "struct Ticks.Tick"
                            },
                            "typeName": {
                              "id": 4756,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 4755,
                                "name": "Ticks.Tick",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4235,
                                "src": "5454:10:29"
                              },
                              "referencedDeclaration": 4235,
                              "src": "5454:10:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                "typeString": "struct Ticks.Tick"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4761,
                        "initialValue": {
                          "baseExpression": {
                            "id": 4758,
                            "name": "ticks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4740,
                            "src": "5483:5:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                              "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                            }
                          },
                          "id": 4760,
                          "indexExpression": {
                            "id": 4759,
                            "name": "lower",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4742,
                            "src": "5489:5:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5483:12:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tick_$4235_storage",
                            "typeString": "struct Ticks.Tick storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5454:41:29"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            "id": 4765,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4762,
                              "name": "lower",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4742,
                              "src": "5510:5:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "expression": {
                                "id": 4763,
                                "name": "TickMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4217,
                                "src": "5519:8:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                  "typeString": "type(library TickMath)"
                                }
                              },
                              "id": 4764,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MIN_TICK",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3682,
                              "src": "5519:17:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "src": "5510:26:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            },
                            "id": 4769,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 4766,
                                "name": "current",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4757,
                                "src": "5540:7:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                  "typeString": "struct Ticks.Tick storage pointer"
                                }
                              },
                              "id": 4767,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidity",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4228,
                              "src": "5540:17:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 4768,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4746,
                              "src": "5561:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "src": "5540:27:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5510:57:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4827,
                          "nodeType": "Block",
                          "src": "5968:94:29",
                          "statements": [
                            {
                              "id": 4826,
                              "nodeType": "UncheckedBlock",
                              "src": "5982:70:29",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4824,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "id": 4820,
                                        "name": "current",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4757,
                                        "src": "6010:7:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                          "typeString": "struct Ticks.Tick storage pointer"
                                        }
                                      },
                                      "id": 4822,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "liquidity",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4228,
                                      "src": "6010:17:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "id": 4823,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4746,
                                      "src": "6031:6:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "src": "6010:27:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "id": 4825,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6010:27:29"
                                }
                              ]
                            }
                          ]
                        },
                        "id": 4828,
                        "nodeType": "IfStatement",
                        "src": "5506:556:29",
                        "trueBody": {
                          "id": 4819,
                          "nodeType": "Block",
                          "src": "5569:393:29",
                          "statements": [
                            {
                              "assignments": [
                                4775
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4775,
                                  "mutability": "mutable",
                                  "name": "previous",
                                  "nameLocation": "5636:8:29",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4819,
                                  "src": "5617:27:29",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                    "typeString": "struct Ticks.Tick"
                                  },
                                  "typeName": {
                                    "id": 4774,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 4773,
                                      "name": "Ticks.Tick",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 4235,
                                      "src": "5617:10:29"
                                    },
                                    "referencedDeclaration": 4235,
                                    "src": "5617:10:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4780,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 4776,
                                  "name": "ticks",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4740,
                                  "src": "5647:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                    "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                  }
                                },
                                "id": 4779,
                                "indexExpression": {
                                  "expression": {
                                    "id": 4777,
                                    "name": "current",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4757,
                                    "src": "5653:7:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick storage pointer"
                                    }
                                  },
                                  "id": 4778,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "previousTick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4224,
                                  "src": "5653:20:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5647:27:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                  "typeString": "struct Ticks.Tick storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5617:57:29"
                            },
                            {
                              "assignments": [
                                4785
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4785,
                                  "mutability": "mutable",
                                  "name": "next",
                                  "nameLocation": "5707:4:29",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4819,
                                  "src": "5688:23:29",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                    "typeString": "struct Ticks.Tick"
                                  },
                                  "typeName": {
                                    "id": 4784,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 4783,
                                      "name": "Ticks.Tick",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 4235,
                                      "src": "5688:10:29"
                                    },
                                    "referencedDeclaration": 4235,
                                    "src": "5688:10:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4790,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 4786,
                                  "name": "ticks",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4740,
                                  "src": "5714:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                    "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                  }
                                },
                                "id": 4789,
                                "indexExpression": {
                                  "expression": {
                                    "id": 4787,
                                    "name": "current",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4757,
                                    "src": "5720:7:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick storage pointer"
                                    }
                                  },
                                  "id": 4788,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nextTick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4226,
                                  "src": "5720:16:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5714:23:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                  "typeString": "struct Ticks.Tick storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5688:49:29"
                            },
                            {
                              "expression": {
                                "id": 4796,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 4791,
                                    "name": "previous",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4775,
                                    "src": "5752:8:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick storage pointer"
                                    }
                                  },
                                  "id": 4793,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "nextTick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4226,
                                  "src": "5752:17:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 4794,
                                    "name": "current",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4757,
                                    "src": "5772:7:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick storage pointer"
                                    }
                                  },
                                  "id": 4795,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nextTick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4226,
                                  "src": "5772:16:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "src": "5752:36:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "id": 4797,
                              "nodeType": "ExpressionStatement",
                              "src": "5752:36:29"
                            },
                            {
                              "expression": {
                                "id": 4803,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 4798,
                                    "name": "next",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4785,
                                    "src": "5802:4:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick storage pointer"
                                    }
                                  },
                                  "id": 4800,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "previousTick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4224,
                                  "src": "5802:17:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 4801,
                                    "name": "current",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4757,
                                    "src": "5822:7:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick storage pointer"
                                    }
                                  },
                                  "id": 4802,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "previousTick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4224,
                                  "src": "5822:20:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "src": "5802:40:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "id": 4804,
                              "nodeType": "ExpressionStatement",
                              "src": "5802:40:29"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                "id": 4807,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4805,
                                  "name": "nearestTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4748,
                                  "src": "5861:11:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 4806,
                                  "name": "lower",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4742,
                                  "src": "5876:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "src": "5861:20:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4813,
                              "nodeType": "IfStatement",
                              "src": "5857:60:29",
                              "trueBody": {
                                "expression": {
                                  "id": 4811,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 4808,
                                    "name": "nearestTick",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4748,
                                    "src": "5883:11:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "expression": {
                                      "id": 4809,
                                      "name": "current",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4757,
                                      "src": "5897:7:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                        "typeString": "struct Ticks.Tick storage pointer"
                                      }
                                    },
                                    "id": 4810,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "previousTick",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4224,
                                    "src": "5897:20:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "src": "5883:34:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "id": 4812,
                                "nodeType": "ExpressionStatement",
                                "src": "5883:34:29"
                              }
                            },
                            {
                              "expression": {
                                "id": 4817,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "delete",
                                "prefix": true,
                                "src": "5932:19:29",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 4814,
                                    "name": "ticks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4740,
                                    "src": "5939:5:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                      "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                    }
                                  },
                                  "id": 4816,
                                  "indexExpression": {
                                    "id": 4815,
                                    "name": "lower",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4742,
                                    "src": "5945:5:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5939:12:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                    "typeString": "struct Ticks.Tick storage ref"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4818,
                              "nodeType": "ExpressionStatement",
                              "src": "5932:19:29"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 4833,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4829,
                            "name": "current",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4757,
                            "src": "6072:7:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                              "typeString": "struct Ticks.Tick storage pointer"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "id": 4830,
                              "name": "ticks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4740,
                              "src": "6082:5:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                              }
                            },
                            "id": 4832,
                            "indexExpression": {
                              "id": 4831,
                              "name": "upper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4744,
                              "src": "6088:5:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6082:12:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tick_$4235_storage",
                              "typeString": "struct Ticks.Tick storage ref"
                            }
                          },
                          "src": "6072:22:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                            "typeString": "struct Ticks.Tick storage pointer"
                          }
                        },
                        "id": 4834,
                        "nodeType": "ExpressionStatement",
                        "src": "6072:22:29"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4843,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            "id": 4838,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 4835,
                              "name": "upper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4744,
                              "src": "6109:5:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "expression": {
                                "id": 4836,
                                "name": "TickMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4217,
                                "src": "6118:8:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                  "typeString": "type(library TickMath)"
                                }
                              },
                              "id": 4837,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MAX_TICK",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3687,
                              "src": "6118:17:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "src": "6109:26:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            },
                            "id": 4842,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 4839,
                                "name": "current",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4757,
                                "src": "6139:7:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                  "typeString": "struct Ticks.Tick storage pointer"
                                }
                              },
                              "id": 4840,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidity",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4228,
                              "src": "6139:17:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 4841,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4746,
                              "src": "6160:6:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "src": "6139:27:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6109:57:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4900,
                          "nodeType": "Block",
                          "src": "6567:94:29",
                          "statements": [
                            {
                              "id": 4899,
                              "nodeType": "UncheckedBlock",
                              "src": "6581:70:29",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 4897,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "id": 4893,
                                        "name": "current",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4757,
                                        "src": "6609:7:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                          "typeString": "struct Ticks.Tick storage pointer"
                                        }
                                      },
                                      "id": 4895,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "liquidity",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4228,
                                      "src": "6609:17:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "id": 4896,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4746,
                                      "src": "6630:6:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "src": "6609:27:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "id": 4898,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6609:27:29"
                                }
                              ]
                            }
                          ]
                        },
                        "id": 4901,
                        "nodeType": "IfStatement",
                        "src": "6105:556:29",
                        "trueBody": {
                          "id": 4892,
                          "nodeType": "Block",
                          "src": "6168:393:29",
                          "statements": [
                            {
                              "assignments": [
                                4848
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4848,
                                  "mutability": "mutable",
                                  "name": "previous",
                                  "nameLocation": "6235:8:29",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4892,
                                  "src": "6216:27:29",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                    "typeString": "struct Ticks.Tick"
                                  },
                                  "typeName": {
                                    "id": 4847,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 4846,
                                      "name": "Ticks.Tick",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 4235,
                                      "src": "6216:10:29"
                                    },
                                    "referencedDeclaration": 4235,
                                    "src": "6216:10:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4853,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 4849,
                                  "name": "ticks",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4740,
                                  "src": "6246:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                    "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                  }
                                },
                                "id": 4852,
                                "indexExpression": {
                                  "expression": {
                                    "id": 4850,
                                    "name": "current",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4757,
                                    "src": "6252:7:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick storage pointer"
                                    }
                                  },
                                  "id": 4851,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "previousTick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4224,
                                  "src": "6252:20:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6246:27:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                  "typeString": "struct Ticks.Tick storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6216:57:29"
                            },
                            {
                              "assignments": [
                                4858
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4858,
                                  "mutability": "mutable",
                                  "name": "next",
                                  "nameLocation": "6306:4:29",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4892,
                                  "src": "6287:23:29",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                    "typeString": "struct Ticks.Tick"
                                  },
                                  "typeName": {
                                    "id": 4857,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 4856,
                                      "name": "Ticks.Tick",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 4235,
                                      "src": "6287:10:29"
                                    },
                                    "referencedDeclaration": 4235,
                                    "src": "6287:10:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4863,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 4859,
                                  "name": "ticks",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4740,
                                  "src": "6313:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                    "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                  }
                                },
                                "id": 4862,
                                "indexExpression": {
                                  "expression": {
                                    "id": 4860,
                                    "name": "current",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4757,
                                    "src": "6319:7:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick storage pointer"
                                    }
                                  },
                                  "id": 4861,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nextTick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4226,
                                  "src": "6319:16:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6313:23:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                  "typeString": "struct Ticks.Tick storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6287:49:29"
                            },
                            {
                              "expression": {
                                "id": 4869,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 4864,
                                    "name": "previous",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4848,
                                    "src": "6351:8:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick storage pointer"
                                    }
                                  },
                                  "id": 4866,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "nextTick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4226,
                                  "src": "6351:17:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 4867,
                                    "name": "current",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4757,
                                    "src": "6371:7:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick storage pointer"
                                    }
                                  },
                                  "id": 4868,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nextTick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4226,
                                  "src": "6371:16:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "src": "6351:36:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "id": 4870,
                              "nodeType": "ExpressionStatement",
                              "src": "6351:36:29"
                            },
                            {
                              "expression": {
                                "id": 4876,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 4871,
                                    "name": "next",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4858,
                                    "src": "6401:4:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick storage pointer"
                                    }
                                  },
                                  "id": 4873,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "previousTick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4224,
                                  "src": "6401:17:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 4874,
                                    "name": "current",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4757,
                                    "src": "6421:7:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick storage pointer"
                                    }
                                  },
                                  "id": 4875,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "previousTick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4224,
                                  "src": "6421:20:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "src": "6401:40:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "id": 4877,
                              "nodeType": "ExpressionStatement",
                              "src": "6401:40:29"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                "id": 4880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4878,
                                  "name": "nearestTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4748,
                                  "src": "6460:11:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 4879,
                                  "name": "upper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4744,
                                  "src": "6475:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "src": "6460:20:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4886,
                              "nodeType": "IfStatement",
                              "src": "6456:60:29",
                              "trueBody": {
                                "expression": {
                                  "id": 4884,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 4881,
                                    "name": "nearestTick",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4748,
                                    "src": "6482:11:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "expression": {
                                      "id": 4882,
                                      "name": "current",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4757,
                                      "src": "6496:7:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                        "typeString": "struct Ticks.Tick storage pointer"
                                      }
                                    },
                                    "id": 4883,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "previousTick",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4224,
                                    "src": "6496:20:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "src": "6482:34:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "id": 4885,
                                "nodeType": "ExpressionStatement",
                                "src": "6482:34:29"
                              }
                            },
                            {
                              "expression": {
                                "id": 4890,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "delete",
                                "prefix": true,
                                "src": "6531:19:29",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 4887,
                                    "name": "ticks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4740,
                                    "src": "6538:5:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                      "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                    }
                                  },
                                  "id": 4889,
                                  "indexExpression": {
                                    "id": 4888,
                                    "name": "upper",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4744,
                                    "src": "6544:5:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6538:12:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                    "typeString": "struct Ticks.Tick storage ref"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4891,
                              "nodeType": "ExpressionStatement",
                              "src": "6531:19:29"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 4902,
                          "name": "nearestTick",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4748,
                          "src": "6678:11:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "functionReturnParameters": 4752,
                        "id": 4903,
                        "nodeType": "Return",
                        "src": "6671:18:29"
                      }
                    ]
                  },
                  "functionSelector": "3c5474df",
                  "id": 4905,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "remove",
                  "nameLocation": "5269:6:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4749,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4740,
                        "mutability": "mutable",
                        "name": "ticks",
                        "nameLocation": "5316:5:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4905,
                        "src": "5285:36:29",
                        "stateVariable": false,
                        "storageLocation": "storage",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                          "typeString": "mapping(int24 => struct Ticks.Tick)"
                        },
                        "typeName": {
                          "id": 4739,
                          "keyType": {
                            "id": 4736,
                            "name": "int24",
                            "nodeType": "ElementaryTypeName",
                            "src": "5293:5:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "Mapping",
                          "src": "5285:22:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                            "typeString": "mapping(int24 => struct Ticks.Tick)"
                          },
                          "valueType": {
                            "id": 4738,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 4737,
                              "name": "Tick",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4235,
                              "src": "5302:4:29"
                            },
                            "referencedDeclaration": 4235,
                            "src": "5302:4:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                              "typeString": "struct Ticks.Tick"
                            }
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4742,
                        "mutability": "mutable",
                        "name": "lower",
                        "nameLocation": "5337:5:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4905,
                        "src": "5331:11:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 4741,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "5331:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4744,
                        "mutability": "mutable",
                        "name": "upper",
                        "nameLocation": "5358:5:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4905,
                        "src": "5352:11:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 4743,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "5352:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4746,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5381:6:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4905,
                        "src": "5373:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 4745,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "5373:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4748,
                        "mutability": "mutable",
                        "name": "nearestTick",
                        "nameLocation": "5403:11:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 4905,
                        "src": "5397:17:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 4747,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "5397:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5275:145:29"
                  },
                  "returnParameters": {
                    "id": 4752,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4751,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 4905,
                        "src": "5437:5:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 4750,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "5437:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5436:7:29"
                  },
                  "scope": 4906,
                  "src": "5260:1436:29",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 4907,
              "src": "186:6512:29",
              "usedErrors": [
                3697,
                3699
              ]
            }
          ],
          "src": "46:6653:29"
        },
        "id": 29
      },
      "contracts/libraries/concentratedPool/UnsafeMath.sol": {
        "ast": {
          "absolutePath": "contracts/libraries/concentratedPool/UnsafeMath.sol",
          "exportedSymbols": {
            "UnsafeMath": [
              4922
            ]
          },
          "id": 4923,
          "license": "GPL-2.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4908,
              "literals": [
                "solidity",
                ">=",
                "0.5",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:30"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 4909,
                "nodeType": "StructuredDocumentation",
                "src": "72:244:30",
                "text": "@notice Math library that contains methods that perform common math functions but do not do any overflow or underflow checks.\n @author Adapted from https://github.com/Uniswap/uniswap-v3-core/blob/main/contracts/libraries/UnsafeMath.sol."
              },
              "fullyImplemented": true,
              "id": 4922,
              "linearizedBaseContracts": [
                4922
              ],
              "name": "UnsafeMath",
              "nameLocation": "324:10:30",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 4920,
                    "nodeType": "Block",
                    "src": "648:86:30",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "667:61:30",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "681:37:30",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "x",
                                        "nodeType": "YulIdentifier",
                                        "src": "694:1:30"
                                      },
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "697:1:30"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "div",
                                      "nodeType": "YulIdentifier",
                                      "src": "690:3:30"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "690:9:30"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "708:1:30"
                                          },
                                          {
                                            "name": "y",
                                            "nodeType": "YulIdentifier",
                                            "src": "711:1:30"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mod",
                                          "nodeType": "YulIdentifier",
                                          "src": "704:3:30"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "704:9:30"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "715:1:30",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "701:2:30"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "701:16:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "686:3:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "686:32:30"
                              },
                              "variableNames": [
                                {
                                  "name": "z",
                                  "nodeType": "YulIdentifier",
                                  "src": "681:1:30"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4912,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "694:1:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4912,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "708:1:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4914,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "697:1:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4914,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "711:1:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4917,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "681:1:30",
                            "valueSize": 1
                          }
                        ],
                        "id": 4919,
                        "nodeType": "InlineAssembly",
                        "src": "658:70:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4910,
                    "nodeType": "StructuredDocumentation",
                    "src": "341:223:30",
                    "text": "@notice Returns ceil(x / y).\n @dev Division by 0 has unspecified behavior, and must be checked externally.\n @param x The dividend.\n @param y The divisor.\n @return z The quotient, ceil(x / y)."
                  },
                  "id": 4921,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "divRoundingUp",
                  "nameLocation": "578:13:30",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4915,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4912,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "600:1:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 4921,
                        "src": "592:9:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4911,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "592:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4914,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "611:1:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 4921,
                        "src": "603:9:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4913,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "603:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "591:22:30"
                  },
                  "returnParameters": {
                    "id": 4918,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4917,
                        "mutability": "mutable",
                        "name": "z",
                        "nameLocation": "645:1:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 4921,
                        "src": "637:9:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4916,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "637:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "636:11:30"
                  },
                  "scope": 4922,
                  "src": "569:165:30",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 4923,
              "src": "316:420:30",
              "usedErrors": []
            }
          ],
          "src": "46:691:30"
        },
        "id": 30
      },
      "contracts/migration/IntermediaryToken.sol": {
        "ast": {
          "absolutePath": "contracts/migration/IntermediaryToken.sol",
          "exportedSymbols": {
            "IERC20": [
              2316
            ],
            "IntermediaryToken": [
              5056
            ],
            "TridentERC20": [
              12279
            ]
          },
          "id": 5057,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4924,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:31"
            },
            {
              "absolutePath": "contracts/pool/TridentERC20.sol",
              "file": "../pool/TridentERC20.sol",
              "id": 4925,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5057,
              "sourceUnit": 12280,
              "src": "72:34:31",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../interfaces/IERC20.sol",
              "id": 4926,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5057,
              "sourceUnit": 2317,
              "src": "107:34:31",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 4928,
                    "name": "TridentERC20",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12279,
                    "src": "323:12:31"
                  },
                  "id": 4929,
                  "nodeType": "InheritanceSpecifier",
                  "src": "323:12:31"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 4927,
                "nodeType": "StructuredDocumentation",
                "src": "143:150:31",
                "text": "@notice Intermediary token users who are staked in MasterChef will receive after migration.\n Can be redeemed for the LP token of the new pool."
              },
              "fullyImplemented": true,
              "id": 5056,
              "linearizedBaseContracts": [
                5056,
                12279
              ],
              "name": "IntermediaryToken",
              "nameLocation": "302:17:31",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "documentation": {
                    "id": 4930,
                    "nodeType": "StructuredDocumentation",
                    "src": "342:62:31",
                    "text": "@dev Liquidity token of the Trident constant product pool."
                  },
                  "functionSelector": "5fcbd285",
                  "id": 4933,
                  "mutability": "immutable",
                  "name": "lpToken",
                  "nameLocation": "433:7:31",
                  "nodeType": "VariableDeclaration",
                  "scope": 5056,
                  "src": "409:31:31",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$2316",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "id": 4932,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4931,
                      "name": "IERC20",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2316,
                      "src": "409:6:31"
                    },
                    "referencedDeclaration": 2316,
                    "src": "409:6:31",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$2316",
                      "typeString": "contract IERC20"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4953,
                    "nodeType": "Block",
                    "src": "544:79:31",
                    "statements": [
                      {
                        "expression": {
                          "id": 4946,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 4942,
                            "name": "lpToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4933,
                            "src": "554:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$2316",
                              "typeString": "contract IERC20"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 4944,
                                "name": "_lpToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4935,
                                "src": "571:8:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4943,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2316,
                              "src": "564:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$2316_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 4945,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "564:16:31",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$2316",
                              "typeString": "contract IERC20"
                            }
                          },
                          "src": "554:26:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20_$2316",
                            "typeString": "contract IERC20"
                          }
                        },
                        "id": 4947,
                        "nodeType": "ExpressionStatement",
                        "src": "554:26:31"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4949,
                              "name": "_recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4937,
                              "src": "596:10:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4950,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4939,
                              "src": "608:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4948,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12250,
                            "src": "590:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 4951,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "590:26:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4952,
                        "nodeType": "ExpressionStatement",
                        "src": "590:26:31"
                      }
                    ]
                  },
                  "id": 4954,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4940,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4935,
                        "mutability": "mutable",
                        "name": "_lpToken",
                        "nameLocation": "476:8:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4954,
                        "src": "468:16:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4934,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "468:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4937,
                        "mutability": "mutable",
                        "name": "_recipient",
                        "nameLocation": "502:10:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4954,
                        "src": "494:18:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4936,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "494:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4939,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nameLocation": "530:7:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 4954,
                        "src": "522:15:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4938,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "522:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "458:85:31"
                  },
                  "returnParameters": {
                    "id": 4941,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "544:0:31"
                  },
                  "scope": 5056,
                  "src": "447:176:31",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5011,
                    "nodeType": "Block",
                    "src": "799:369:31",
                    "statements": [
                      {
                        "assignments": [
                          4963
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4963,
                            "mutability": "mutable",
                            "name": "availableLpTokens",
                            "nameLocation": "817:17:31",
                            "nodeType": "VariableDeclaration",
                            "scope": 5011,
                            "src": "809:25:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4962,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "809:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4971,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 4968,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "863:4:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IntermediaryToken_$5056",
                                    "typeString": "contract IntermediaryToken"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IntermediaryToken_$5056",
                                    "typeString": "contract IntermediaryToken"
                                  }
                                ],
                                "id": 4967,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "855:7:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4966,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "855:7:31",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 4969,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "855:13:31",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 4964,
                              "name": "lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4933,
                              "src": "837:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2316",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 4965,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2281,
                            "src": "837:17:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 4970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "837:32:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "809:60:31"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4974,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4972,
                            "name": "availableLpTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4963,
                            "src": "883:17:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 4973,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "904:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "883:22:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4989,
                          "nodeType": "Block",
                          "src": "989:40:31",
                          "statements": [
                            {
                              "expression": {
                                "id": 4987,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4985,
                                  "name": "minted",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4960,
                                  "src": "1003:6:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 4986,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4957,
                                  "src": "1012:6:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1003:15:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4988,
                              "nodeType": "ExpressionStatement",
                              "src": "1003:15:31"
                            }
                          ]
                        },
                        "id": 4990,
                        "nodeType": "IfStatement",
                        "src": "879:150:31",
                        "trueBody": {
                          "id": 4984,
                          "nodeType": "Block",
                          "src": "907:76:31",
                          "statements": [
                            {
                              "expression": {
                                "id": 4982,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 4975,
                                  "name": "minted",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4960,
                                  "src": "921:6:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4981,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 4978,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 4976,
                                          "name": "totalSupply",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11917,
                                          "src": "931:11:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 4977,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4957,
                                          "src": "945:6:31",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "931:20:31",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 4979,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "930:22:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 4980,
                                    "name": "availableLpTokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4963,
                                    "src": "955:17:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "930:42:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "921:51:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4983,
                              "nodeType": "ExpressionStatement",
                              "src": "921:51:31"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 4992,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1044:3:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4993,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1044:10:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4994,
                              "name": "minted",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4960,
                              "src": "1056:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4991,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12250,
                            "src": "1038:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 4995,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1038:25:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4996,
                        "nodeType": "ExpressionStatement",
                        "src": "1038:25:31"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 5000,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "1102:3:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 5001,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "1102:10:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 5004,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "1122:4:31",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IntermediaryToken_$5056",
                                        "typeString": "contract IntermediaryToken"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IntermediaryToken_$5056",
                                        "typeString": "contract IntermediaryToken"
                                      }
                                    ],
                                    "id": 5003,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1114:7:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 5002,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1114:7:31",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 5005,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1114:13:31",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 5006,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4957,
                                  "src": "1129:6:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 4998,
                                  "name": "lpToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4933,
                                  "src": "1081:7:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$2316",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 4999,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transferFrom",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2297,
                                "src": "1081:20:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,address,uint256) external returns (bool)"
                                }
                              },
                              "id": 5007,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1081:55:31",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5452414e534645525f46524f4d5f4641494c4544",
                              "id": 5008,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1138:22:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_77631768048ee92f9dcf4b9b9d762877d6b9723214862c733f0596708fc219b7",
                                "typeString": "literal_string \"TRANSFER_FROM_FAILED\""
                              },
                              "value": "TRANSFER_FROM_FAILED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_77631768048ee92f9dcf4b9b9d762877d6b9723214862c733f0596708fc219b7",
                                "typeString": "literal_string \"TRANSFER_FROM_FAILED\""
                              }
                            ],
                            "id": 4997,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1073:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1073:88:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5010,
                        "nodeType": "ExpressionStatement",
                        "src": "1073:88:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4955,
                    "nodeType": "StructuredDocumentation",
                    "src": "629:100:31",
                    "text": "@dev Since we might be rewarding the intermediary token for some time we allow users to mint it."
                  },
                  "functionSelector": "b6b55f25",
                  "id": 5012,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nameLocation": "743:7:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4958,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4957,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "759:6:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 5012,
                        "src": "751:14:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4956,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "751:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "750:16:31"
                  },
                  "returnParameters": {
                    "id": 4961,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4960,
                        "mutability": "mutable",
                        "name": "minted",
                        "nameLocation": "791:6:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 5012,
                        "src": "783:14:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4959,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "783:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "782:16:31"
                  },
                  "scope": 5056,
                  "src": "734:434:31",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5054,
                    "nodeType": "Block",
                    "src": "1239:249:31",
                    "statements": [
                      {
                        "assignments": [
                          5020
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5020,
                            "mutability": "mutable",
                            "name": "availableLpTokens",
                            "nameLocation": "1257:17:31",
                            "nodeType": "VariableDeclaration",
                            "scope": 5054,
                            "src": "1249:25:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5019,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1249:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5028,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5025,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "1303:4:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IntermediaryToken_$5056",
                                    "typeString": "contract IntermediaryToken"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IntermediaryToken_$5056",
                                    "typeString": "contract IntermediaryToken"
                                  }
                                ],
                                "id": 5024,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1295:7:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5023,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1295:7:31",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5026,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1295:13:31",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 5021,
                              "name": "lpToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4933,
                              "src": "1277:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$2316",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 5022,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2281,
                            "src": "1277:17:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 5027,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1277:32:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1249:60:31"
                      },
                      {
                        "expression": {
                          "id": 5036,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5029,
                            "name": "claimed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5017,
                            "src": "1319:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5035,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5032,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 5030,
                                    "name": "availableLpTokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5020,
                                    "src": "1330:17:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 5031,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5014,
                                    "src": "1350:6:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1330:26:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 5033,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "1329:28:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 5034,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11917,
                              "src": "1360:11:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1329:42:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1319:52:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5037,
                        "nodeType": "ExpressionStatement",
                        "src": "1319:52:31"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 5039,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1387:3:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5040,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1387:10:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5041,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5014,
                              "src": "1399:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5038,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12278,
                            "src": "1381:5:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 5042,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1381:25:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5043,
                        "nodeType": "ExpressionStatement",
                        "src": "1381:25:31"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 5047,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "1441:3:31",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 5048,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "1441:10:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 5049,
                                  "name": "claimed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5017,
                                  "src": "1453:7:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 5045,
                                  "name": "lpToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4933,
                                  "src": "1424:7:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$2316",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 5046,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transfer",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2306,
                                "src": "1424:16:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,uint256) external returns (bool)"
                                }
                              },
                              "id": 5050,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1424:37:31",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5452414e534645525f4641494c4544",
                              "id": 5051,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1463:17:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72",
                                "typeString": "literal_string \"TRANSFER_FAILED\""
                              },
                              "value": "TRANSFER_FAILED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72",
                                "typeString": "literal_string \"TRANSFER_FAILED\""
                              }
                            ],
                            "id": 5044,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1416:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1416:65:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5053,
                        "nodeType": "ExpressionStatement",
                        "src": "1416:65:31"
                      }
                    ]
                  },
                  "functionSelector": "db006a75",
                  "id": 5055,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "redeem",
                  "nameLocation": "1183:6:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5015,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5014,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1198:6:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 5055,
                        "src": "1190:14:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5013,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1190:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1189:16:31"
                  },
                  "returnParameters": {
                    "id": 5018,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5017,
                        "mutability": "mutable",
                        "name": "claimed",
                        "nameLocation": "1230:7:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 5055,
                        "src": "1222:15:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5016,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1222:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1221:17:31"
                  },
                  "scope": 5056,
                  "src": "1174:314:31",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 5057,
              "src": "293:1197:31",
              "usedErrors": []
            }
          ],
          "src": "46:1445:31"
        },
        "id": 31
      },
      "contracts/migration/Migrator.sol": {
        "ast": {
          "absolutePath": "contracts/migration/Migrator.sol",
          "exportedSymbols": {
            "IBentoBoxMinimal": [
              2253
            ],
            "IConstantProductPool": [
              2271
            ],
            "IERC20": [
              2316
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "IPoolFactory": [
              2468
            ],
            "IUniswapV2Minimal": [
              2599
            ],
            "IntermediaryToken": [
              5056
            ],
            "Migrator": [
              5396
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "TridentERC20": [
              12279
            ]
          },
          "id": 5397,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5058,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:32"
            },
            {
              "absolutePath": "contracts/migration/IntermediaryToken.sol",
              "file": "./IntermediaryToken.sol",
              "id": 5059,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5397,
              "sourceUnit": 5057,
              "src": "72:33:32",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IMasterDeployer.sol",
              "file": "../interfaces/IMasterDeployer.sol",
              "id": 5060,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5397,
              "sourceUnit": 2357,
              "src": "106:43:32",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IBentoBoxMinimal.sol",
              "file": "../interfaces/IBentoBoxMinimal.sol",
              "id": 5061,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5397,
              "sourceUnit": 2254,
              "src": "150:44:32",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IPoolFactory.sol",
              "file": "../interfaces/IPoolFactory.sol",
              "id": 5062,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5397,
              "sourceUnit": 2469,
              "src": "195:40:32",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IPool.sol",
              "file": "../interfaces/IPool.sol",
              "id": 5063,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5397,
              "sourceUnit": 2451,
              "src": "236:33:32",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IERC20.sol",
              "file": "../interfaces/IERC20.sol",
              "id": 5064,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5397,
              "sourceUnit": 2317,
              "src": "270:34:32",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IConstantProductPool.sol",
              "file": "../interfaces/IConstantProductPool.sol",
              "id": 5065,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5397,
              "sourceUnit": 2272,
              "src": "305:48:32",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IUniswapV2Minimal.sol",
              "file": "../interfaces/IUniswapV2Minimal.sol",
              "id": 5066,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5397,
              "sourceUnit": 2600,
              "src": "354:45:32",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [
                5056
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 5067,
                "nodeType": "StructuredDocumentation",
                "src": "466:444:32",
                "text": "Sushiswap's master chef contracts which distribute rewards to LP token holders have the option to migrate liquidity.\nWe can set this contract as the migrator on the master chef contracts to migrate LP positions from the legacy to the new Trident\nconstant product pools. After the migrator is set anyone can call the migrate() function (once per pool) on the master chef contract.\nUsed by MasterChef / MasterChefV2 / MiniChef. "
              },
              "fullyImplemented": true,
              "id": 5396,
              "linearizedBaseContracts": [
                5396
              ],
              "name": "Migrator",
              "nameLocation": "920:8:32",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 5075,
                  "name": "Migrate",
                  "nameLocation": "941:7:32",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5074,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5069,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "oldPool",
                        "nameLocation": "965:7:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5075,
                        "src": "949:23:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5068,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "949:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5071,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newPool",
                        "nameLocation": "990:7:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5075,
                        "src": "974:23:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5070,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "974:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5073,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "intermediaryToken",
                        "nameLocation": "1015:17:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5075,
                        "src": "999:33:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5072,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "999:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "948:85:32"
                  },
                  "src": "935:99:32"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 5076,
                    "nodeType": "StructuredDocumentation",
                    "src": "1040:150:32",
                    "text": "@dev Intermediary token to new LP token mapping.\n @dev Used to prevent subsequent calls to masterchef's migrate function with the same PID."
                  },
                  "functionSelector": "4ba0a5ee",
                  "id": 5080,
                  "mutability": "mutable",
                  "name": "migrated",
                  "nameLocation": "1230:8:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 5396,
                  "src": "1195:43:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                    "typeString": "mapping(address => address)"
                  },
                  "typeName": {
                    "id": 5079,
                    "keyType": {
                      "id": 5077,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1203:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1195:27:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                      "typeString": "mapping(address => address)"
                    },
                    "valueType": {
                      "id": 5078,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1214:7:32",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "4da31827",
                  "id": 5083,
                  "mutability": "immutable",
                  "name": "bento",
                  "nameLocation": "1279:5:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 5396,
                  "src": "1245:39:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                    "typeString": "contract IBentoBoxMinimal"
                  },
                  "typeName": {
                    "id": 5082,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5081,
                      "name": "IBentoBoxMinimal",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2253,
                      "src": "1245:16:32"
                    },
                    "referencedDeclaration": 2253,
                    "src": "1245:16:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                      "typeString": "contract IBentoBoxMinimal"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "cf58879a",
                  "id": 5086,
                  "mutability": "immutable",
                  "name": "masterDeployer",
                  "nameLocation": "1323:14:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 5396,
                  "src": "1290:47:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                    "typeString": "contract IMasterDeployer"
                  },
                  "typeName": {
                    "id": 5085,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5084,
                      "name": "IMasterDeployer",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2356,
                      "src": "1290:15:32"
                    },
                    "referencedDeclaration": 2356,
                    "src": "1290:15:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                      "typeString": "contract IMasterDeployer"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "93e44497",
                  "id": 5089,
                  "mutability": "immutable",
                  "name": "constantProductPoolFactory",
                  "nameLocation": "1373:26:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 5396,
                  "src": "1343:56:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                    "typeString": "contract IPoolFactory"
                  },
                  "typeName": {
                    "id": 5088,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5087,
                      "name": "IPoolFactory",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2468,
                      "src": "1343:12:32"
                    },
                    "referencedDeclaration": 2468,
                    "src": "1343:12:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                      "typeString": "contract IPoolFactory"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "575a86b2",
                  "id": 5091,
                  "mutability": "immutable",
                  "name": "masterChef",
                  "nameLocation": "1430:10:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 5396,
                  "src": "1405:35:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5090,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1405:7:32",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5121,
                    "nodeType": "Block",
                    "src": "1618:173:32",
                    "statements": [
                      {
                        "expression": {
                          "id": 5107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5105,
                            "name": "bento",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5083,
                            "src": "1628:5:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5106,
                            "name": "_bento",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5094,
                            "src": "1636:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "src": "1628:14:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        "id": 5108,
                        "nodeType": "ExpressionStatement",
                        "src": "1628:14:32"
                      },
                      {
                        "expression": {
                          "id": 5111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5109,
                            "name": "masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5086,
                            "src": "1652:14:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                              "typeString": "contract IMasterDeployer"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5110,
                            "name": "_masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5097,
                            "src": "1669:15:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                              "typeString": "contract IMasterDeployer"
                            }
                          },
                          "src": "1652:32:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                            "typeString": "contract IMasterDeployer"
                          }
                        },
                        "id": 5112,
                        "nodeType": "ExpressionStatement",
                        "src": "1652:32:32"
                      },
                      {
                        "expression": {
                          "id": 5115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5113,
                            "name": "constantProductPoolFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5089,
                            "src": "1694:26:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                              "typeString": "contract IPoolFactory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5114,
                            "name": "_constantProductPoolFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5100,
                            "src": "1723:27:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                              "typeString": "contract IPoolFactory"
                            }
                          },
                          "src": "1694:56:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                            "typeString": "contract IPoolFactory"
                          }
                        },
                        "id": 5116,
                        "nodeType": "ExpressionStatement",
                        "src": "1694:56:32"
                      },
                      {
                        "expression": {
                          "id": 5119,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5117,
                            "name": "masterChef",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5091,
                            "src": "1760:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5118,
                            "name": "_masterChef",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5102,
                            "src": "1773:11:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1760:24:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5120,
                        "nodeType": "ExpressionStatement",
                        "src": "1760:24:32"
                      }
                    ]
                  },
                  "id": 5122,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5103,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5094,
                        "mutability": "mutable",
                        "name": "_bento",
                        "nameLocation": "1485:6:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5122,
                        "src": "1468:23:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                          "typeString": "contract IBentoBoxMinimal"
                        },
                        "typeName": {
                          "id": 5093,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5092,
                            "name": "IBentoBoxMinimal",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2253,
                            "src": "1468:16:32"
                          },
                          "referencedDeclaration": 2253,
                          "src": "1468:16:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5097,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "1517:15:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5122,
                        "src": "1501:31:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                          "typeString": "contract IMasterDeployer"
                        },
                        "typeName": {
                          "id": 5096,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5095,
                            "name": "IMasterDeployer",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2356,
                            "src": "1501:15:32"
                          },
                          "referencedDeclaration": 2356,
                          "src": "1501:15:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                            "typeString": "contract IMasterDeployer"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5100,
                        "mutability": "mutable",
                        "name": "_constantProductPoolFactory",
                        "nameLocation": "1555:27:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5122,
                        "src": "1542:40:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                          "typeString": "contract IPoolFactory"
                        },
                        "typeName": {
                          "id": 5099,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5098,
                            "name": "IPoolFactory",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2468,
                            "src": "1542:12:32"
                          },
                          "referencedDeclaration": 2468,
                          "src": "1542:12:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                            "typeString": "contract IPoolFactory"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5102,
                        "mutability": "mutable",
                        "name": "_masterChef",
                        "nameLocation": "1600:11:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5122,
                        "src": "1592:19:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5101,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1592:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1458:159:32"
                  },
                  "returnParameters": {
                    "id": 5104,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1618:0:32"
                  },
                  "scope": 5396,
                  "src": "1447:344:32",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5394,
                    "nodeType": "Block",
                    "src": "2379:2193:32",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5138,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 5132,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "2397:3:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 5133,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "2397:10:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 5136,
                                    "name": "masterChef",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5091,
                                    "src": "2419:10:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5135,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2411:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 5134,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2411:7:32",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5137,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2411:19:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2397:33:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f4e4c595f43484546",
                              "id": 5139,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2432:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5b92809fdf9ddfcca4ef941814d259bc15fd90198e706ee8d9e1063292596757",
                                "typeString": "literal_string \"ONLY_CHEF\""
                              },
                              "value": "ONLY_CHEF"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5b92809fdf9ddfcca4ef941814d259bc15fd90198e706ee8d9e1063292596757",
                                "typeString": "literal_string \"ONLY_CHEF\""
                              }
                            ],
                            "id": 5131,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2389:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2389:55:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5141,
                        "nodeType": "ExpressionStatement",
                        "src": "2389:55:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "id": 5143,
                                  "name": "migrated",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5080,
                                  "src": "2462:8:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                    "typeString": "mapping(address => address)"
                                  }
                                },
                                "id": 5148,
                                "indexExpression": {
                                  "arguments": [
                                    {
                                      "id": 5146,
                                      "name": "oldPool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5126,
                                      "src": "2479:7:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                                        "typeString": "contract IUniswapV2Minimal"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                                        "typeString": "contract IUniswapV2Minimal"
                                      }
                                    ],
                                    "id": 5145,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2471:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 5144,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2471:7:32",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 5147,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2471:16:32",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2462:26:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 5151,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2500:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 5150,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2492:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 5149,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2492:7:32",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5152,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2492:10:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2462:40:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f4e4c595f4f4e4345",
                              "id": 5154,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2504:11:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1ddf2f4d77a07bf38cb5b591f9b628cbc95c3ca37fc7497d8f867aa8129b0d40",
                                "typeString": "literal_string \"ONLY_ONCE\""
                              },
                              "value": "ONLY_ONCE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1ddf2f4d77a07bf38cb5b591f9b628cbc95c3ca37fc7497d8f867aa8129b0d40",
                                "typeString": "literal_string \"ONLY_ONCE\""
                              }
                            ],
                            "id": 5142,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2454:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5155,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2454:62:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5156,
                        "nodeType": "ExpressionStatement",
                        "src": "2454:62:32"
                      },
                      {
                        "assignments": [
                          5158
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5158,
                            "mutability": "mutable",
                            "name": "token0",
                            "nameLocation": "2535:6:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 5394,
                            "src": "2527:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5157,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2527:7:32",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5162,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5159,
                              "name": "oldPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5126,
                              "src": "2544:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                                "typeString": "contract IUniswapV2Minimal"
                              }
                            },
                            "id": 5160,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2584,
                            "src": "2544:14:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 5161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2544:16:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2527:33:32"
                      },
                      {
                        "assignments": [
                          5164
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5164,
                            "mutability": "mutable",
                            "name": "token1",
                            "nameLocation": "2578:6:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 5394,
                            "src": "2570:14:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5163,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2570:7:32",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5168,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5165,
                              "name": "oldPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5126,
                              "src": "2587:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                                "typeString": "contract IUniswapV2Minimal"
                              }
                            },
                            "id": 5166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2589,
                            "src": "2587:14:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 5167,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2587:16:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2570:33:32"
                      },
                      {
                        "assignments": [
                          5170
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5170,
                            "mutability": "mutable",
                            "name": "deployData",
                            "nameLocation": "2627:10:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 5394,
                            "src": "2614:23:32",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 5169,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2614:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5178,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5173,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5158,
                              "src": "2651:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5174,
                              "name": "token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5164,
                              "src": "2659:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "3330",
                              "id": 5175,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2667:2:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_30_by_1",
                                "typeString": "int_const 30"
                              },
                              "value": "30"
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 5176,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2671:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_rational_30_by_1",
                                "typeString": "int_const 30"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "id": 5171,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "2640:3:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 5172,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encode",
                            "nodeType": "MemberAccess",
                            "src": "2640:10:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 5177,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2640:37:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2614:63:32"
                      },
                      {
                        "assignments": [
                          5181
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5181,
                            "mutability": "mutable",
                            "name": "pool",
                            "nameLocation": "2709:4:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 5394,
                            "src": "2688:25:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                              "typeString": "contract IConstantProductPool"
                            },
                            "typeName": {
                              "id": 5180,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5179,
                                "name": "IConstantProductPool",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2271,
                                "src": "2688:20:32"
                              },
                              "referencedDeclaration": 2271,
                              "src": "2688:20:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                "typeString": "contract IConstantProductPool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5190,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 5186,
                                      "name": "deployData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5170,
                                      "src": "2788:10:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 5185,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "2778:9:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 5187,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2778:21:32",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 5183,
                                  "name": "constantProductPoolFactory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5089,
                                  "src": "2737:26:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                                    "typeString": "contract IPoolFactory"
                                  }
                                },
                                "id": 5184,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "configAddress",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2467,
                                "src": "2737:40:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_address_$",
                                  "typeString": "function (bytes32) external returns (address)"
                                }
                              },
                              "id": 5188,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2737:63:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5182,
                            "name": "IConstantProductPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2271,
                            "src": "2716:20:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IConstantProductPool_$2271_$",
                              "typeString": "type(contract IConstantProductPool)"
                            }
                          },
                          "id": 5189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2716:85:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                            "typeString": "contract IConstantProductPool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2688:113:32"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 5199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 5193,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5181,
                                "src": "2879:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                  "typeString": "contract IConstantProductPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                  "typeString": "contract IConstantProductPool"
                                }
                              ],
                              "id": 5192,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2871:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5191,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2871:7:32",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5194,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2871:13:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 5197,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2896:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 5196,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2888:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5195,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2888:7:32",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5198,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2888:10:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2871:27:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5214,
                        "nodeType": "IfStatement",
                        "src": "2867:161:32",
                        "trueBody": {
                          "id": 5213,
                          "nodeType": "Block",
                          "src": "2900:128:32",
                          "statements": [
                            {
                              "expression": {
                                "id": 5211,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 5200,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5181,
                                  "src": "2914:4:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                    "typeString": "contract IConstantProductPool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 5206,
                                              "name": "constantProductPoolFactory",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5089,
                                              "src": "2976:26:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                                                "typeString": "contract IPoolFactory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                                                "typeString": "contract IPoolFactory"
                                              }
                                            ],
                                            "id": 5205,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "2968:7:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 5204,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "2968:7:32",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 5207,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2968:35:32",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 5208,
                                          "name": "deployData",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5170,
                                          "src": "3005:10:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "expression": {
                                          "id": 5202,
                                          "name": "masterDeployer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5086,
                                          "src": "2942:14:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                            "typeString": "contract IMasterDeployer"
                                          }
                                        },
                                        "id": 5203,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "deployPool",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2355,
                                        "src": "2942:25:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$",
                                          "typeString": "function (address,bytes memory) external returns (address)"
                                        }
                                      },
                                      "id": 5209,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2942:74:32",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 5201,
                                    "name": "IConstantProductPool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2271,
                                    "src": "2921:20:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IConstantProductPool_$2271_$",
                                      "typeString": "type(contract IConstantProductPool)"
                                    }
                                  },
                                  "id": 5210,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2921:96:32",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                    "typeString": "contract IConstantProductPool"
                                  }
                                },
                                "src": "2914:103:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                  "typeString": "contract IConstantProductPool"
                                }
                              },
                              "id": 5212,
                              "nodeType": "ExpressionStatement",
                              "src": "2914:103:32"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          5216
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5216,
                            "mutability": "mutable",
                            "name": "lpBalance",
                            "nameLocation": "3104:9:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 5394,
                            "src": "3096:17:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5215,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3096:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5224,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5221,
                                  "name": "masterChef",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5091,
                                  "src": "3142:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 5220,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3134:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5219,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3134:7:32",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5222,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3134:19:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 5217,
                              "name": "oldPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5126,
                              "src": "3116:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                                "typeString": "contract IUniswapV2Minimal"
                              }
                            },
                            "id": 5218,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2281,
                            "src": "3116:17:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 5223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3116:38:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3096:58:32"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5225,
                            "name": "lpBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5216,
                            "src": "3169:9:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 5226,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3182:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3169:14:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5234,
                        "nodeType": "IfStatement",
                        "src": "3165:65:32",
                        "trueBody": {
                          "id": 5233,
                          "nodeType": "Block",
                          "src": "3185:45:32",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5230,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5181,
                                    "src": "3214:4:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                      "typeString": "contract IConstantProductPool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                      "typeString": "contract IConstantProductPool"
                                    }
                                  ],
                                  "id": 5229,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3206:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 5228,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3206:7:32",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5231,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3206:13:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "functionReturnParameters": 5130,
                              "id": 5232,
                              "nodeType": "Return",
                              "src": "3199:20:32"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5240,
                                  "name": "masterChef",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5091,
                                  "src": "3330:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 5239,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3322:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5238,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3322:7:32",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5241,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3322:19:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5244,
                                  "name": "oldPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5126,
                                  "src": "3351:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                                    "typeString": "contract IUniswapV2Minimal"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                                    "typeString": "contract IUniswapV2Minimal"
                                  }
                                ],
                                "id": 5243,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3343:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5242,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3343:7:32",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5245,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3343:16:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5246,
                              "name": "lpBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5216,
                              "src": "3361:9:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 5235,
                              "name": "oldPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5126,
                              "src": "3301:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                                "typeString": "contract IUniswapV2Minimal"
                              }
                            },
                            "id": 5237,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2297,
                            "src": "3301:20:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 5247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3301:70:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5248,
                        "nodeType": "ExpressionStatement",
                        "src": "3301:70:32"
                      },
                      {
                        "assignments": [
                          5250,
                          5252
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5250,
                            "mutability": "mutable",
                            "name": "amount0",
                            "nameLocation": "3390:7:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 5394,
                            "src": "3382:15:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5249,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3382:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 5252,
                            "mutability": "mutable",
                            "name": "amount1",
                            "nameLocation": "3407:7:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 5394,
                            "src": "3399:15:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5251,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3399:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5260,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5257,
                                  "name": "bento",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5083,
                                  "src": "3439:5:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                    "typeString": "contract IBentoBoxMinimal"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                    "typeString": "contract IBentoBoxMinimal"
                                  }
                                ],
                                "id": 5256,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3431:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5255,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3431:7:32",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5258,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3431:14:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 5253,
                              "name": "oldPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5126,
                              "src": "3418:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                                "typeString": "contract IUniswapV2Minimal"
                              }
                            },
                            "id": 5254,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "burn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2598,
                            "src": "3418:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address) external returns (uint256,uint256)"
                            }
                          },
                          "id": 5259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3418:28:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3381:65:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5264,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5158,
                              "src": "3471:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5267,
                                  "name": "bento",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5083,
                                  "src": "3487:5:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                    "typeString": "contract IBentoBoxMinimal"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                    "typeString": "contract IBentoBoxMinimal"
                                  }
                                ],
                                "id": 5266,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3479:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5265,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3479:7:32",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5268,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3479:14:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5271,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5181,
                                  "src": "3503:4:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                    "typeString": "contract IConstantProductPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                    "typeString": "contract IConstantProductPool"
                                  }
                                ],
                                "id": 5270,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3495:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5269,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3495:7:32",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5272,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3495:13:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5273,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5250,
                              "src": "3510:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 5274,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3519:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "id": 5261,
                              "name": "bento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5083,
                              "src": "3457:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                "typeString": "contract IBentoBoxMinimal"
                              }
                            },
                            "id": 5263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2197,
                            "src": "3457:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,address,uint256,uint256) payable external returns (uint256,uint256)"
                            }
                          },
                          "id": 5275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3457:64:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "id": 5276,
                        "nodeType": "ExpressionStatement",
                        "src": "3457:64:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5280,
                              "name": "token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5164,
                              "src": "3545:6:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5283,
                                  "name": "bento",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5083,
                                  "src": "3561:5:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                    "typeString": "contract IBentoBoxMinimal"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                    "typeString": "contract IBentoBoxMinimal"
                                  }
                                ],
                                "id": 5282,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3553:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5281,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3553:7:32",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5284,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3553:14:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5287,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5181,
                                  "src": "3577:4:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                    "typeString": "contract IConstantProductPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                    "typeString": "contract IConstantProductPool"
                                  }
                                ],
                                "id": 5286,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3569:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5285,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3569:7:32",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5288,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3569:13:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5289,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5252,
                              "src": "3584:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 5290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3593:1:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "id": 5277,
                              "name": "bento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5083,
                              "src": "3531:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                "typeString": "contract IBentoBoxMinimal"
                              }
                            },
                            "id": 5279,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2197,
                            "src": "3531:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,address,uint256,uint256) payable external returns (uint256,uint256)"
                            }
                          },
                          "id": 5291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3531:64:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "id": 5292,
                        "nodeType": "ExpressionStatement",
                        "src": "3531:64:32"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 5293,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5181,
                                "src": "3610:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                  "typeString": "contract IConstantProductPool"
                                }
                              },
                              "id": 5294,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "totalSupply",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2286,
                              "src": "3610:16:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 5295,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3610:18:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 5296,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3632:1:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3610:23:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5345,
                        "nodeType": "IfStatement",
                        "src": "3606:505:32",
                        "trueBody": {
                          "id": 5344,
                          "nodeType": "Block",
                          "src": "3635:476:32",
                          "statements": [
                            {
                              "assignments": [
                                5299,
                                5301,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5299,
                                  "mutability": "mutable",
                                  "name": "_nativeReserve0",
                                  "nameLocation": "3734:15:32",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5344,
                                  "src": "3726:23:32",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5298,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3726:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 5301,
                                  "mutability": "mutable",
                                  "name": "_nativeReserve1",
                                  "nameLocation": "3759:15:32",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5344,
                                  "src": "3751:23:32",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5300,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3751:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 5305,
                              "initialValue": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 5302,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5181,
                                    "src": "3780:4:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                      "typeString": "contract IConstantProductPool"
                                    }
                                  },
                                  "id": 5303,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getNativeReserves",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2270,
                                  "src": "3780:22:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$_t_uint256_$_t_uint32_$",
                                    "typeString": "function () view external returns (uint256,uint256,uint32)"
                                  }
                                },
                                "id": 5304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3780:24:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint32_$",
                                  "typeString": "tuple(uint256,uint256,uint32)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3725:79:32"
                            },
                            {
                              "assignments": [
                                5307
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5307,
                                  "mutability": "mutable",
                                  "name": "oldPoolPrice",
                                  "nameLocation": "3826:12:32",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5344,
                                  "src": "3818:20:32",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5306,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3818:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5314,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5313,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 5310,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "31653138",
                                        "id": 5308,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3842:4:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                          "typeString": "int_const 1000000000000000000"
                                        },
                                        "value": "1e18"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 5309,
                                        "name": "amount0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5250,
                                        "src": "3849:7:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3842:14:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 5311,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "3841:16:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 5312,
                                  "name": "amount1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5252,
                                  "src": "3860:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3841:26:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3818:49:32"
                            },
                            {
                              "assignments": [
                                5316
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5316,
                                  "mutability": "mutable",
                                  "name": "newPoolPrice",
                                  "nameLocation": "3889:12:32",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5344,
                                  "src": "3881:20:32",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5315,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3881:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5323,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5322,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 5319,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "31653138",
                                        "id": 5317,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3905:4:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                          "typeString": "int_const 1000000000000000000"
                                        },
                                        "value": "1e18"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 5318,
                                        "name": "_nativeReserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5299,
                                        "src": "3912:15:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3905:22:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 5320,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "3904:24:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 5321,
                                  "name": "_nativeReserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5301,
                                  "src": "3931:15:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3904:42:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3881:65:32"
                            },
                            {
                              "assignments": [
                                5325
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5325,
                                  "mutability": "mutable",
                                  "name": "priceChange",
                                  "nameLocation": "3968:11:32",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5344,
                                  "src": "3960:19:32",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5324,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3960:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5332,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5331,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 5328,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "316533",
                                        "id": 5326,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3983:3:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1000_by_1",
                                          "typeString": "int_const 1000"
                                        },
                                        "value": "1e3"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 5327,
                                        "name": "oldPoolPrice",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5307,
                                        "src": "3989:12:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3983:18:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 5329,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "3982:20:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 5330,
                                  "name": "newPoolPrice",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5316,
                                  "src": "4005:12:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3982:35:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3960:57:32"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 5340,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 5336,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 5334,
                                        "name": "priceChange",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5325,
                                        "src": "4039:11:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "hexValue": "31303035",
                                        "id": 5335,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4053:4:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1005_by_1",
                                          "typeString": "int_const 1005"
                                        },
                                        "value": "1005"
                                      },
                                      "src": "4039:18:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 5339,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 5337,
                                        "name": "priceChange",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5325,
                                        "src": "4061:11:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "hexValue": "393935",
                                        "id": 5338,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4076:3:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_995_by_1",
                                          "typeString": "int_const 995"
                                        },
                                        "value": "995"
                                      },
                                      "src": "4061:18:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "4039:40:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "50524943455f444946464552454e4345",
                                    "id": 5341,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4081:18:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_56fc51d604ac77f1d7de5cbde9fd9fde356a6a2c4c231c067a578e6b0ec5a08d",
                                      "typeString": "literal_string \"PRICE_DIFFERENCE\""
                                    },
                                    "value": "PRICE_DIFFERENCE"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_56fc51d604ac77f1d7de5cbde9fd9fde356a6a2c4c231c067a578e6b0ec5a08d",
                                      "typeString": "literal_string \"PRICE_DIFFERENCE\""
                                    }
                                  ],
                                  "id": 5333,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "4031:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 5342,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4031:69:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5343,
                              "nodeType": "ExpressionStatement",
                              "src": "4031:69:32"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          5347
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5347,
                            "mutability": "mutable",
                            "name": "intermediaryToken",
                            "nameLocation": "4187:17:32",
                            "nodeType": "VariableDeclaration",
                            "scope": 5394,
                            "src": "4179:25:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5346,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4179:7:32",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5361,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 5355,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5181,
                                      "src": "4245:4:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                        "typeString": "contract IConstantProductPool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                        "typeString": "contract IConstantProductPool"
                                      }
                                    ],
                                    "id": 5354,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4237:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 5353,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4237:7:32",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 5356,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4237:13:32",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 5357,
                                  "name": "masterChef",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5091,
                                  "src": "4252:10:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 5358,
                                  "name": "lpBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5216,
                                  "src": "4264:9:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 5352,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "4215:21:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_contract$_IntermediaryToken_$5056_$",
                                  "typeString": "function (address,address,uint256) returns (contract IntermediaryToken)"
                                },
                                "typeName": {
                                  "id": 5351,
                                  "nodeType": "UserDefinedTypeName",
                                  "pathNode": {
                                    "id": 5350,
                                    "name": "IntermediaryToken",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 5056,
                                    "src": "4219:17:32"
                                  },
                                  "referencedDeclaration": 5056,
                                  "src": "4219:17:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IntermediaryToken_$5056",
                                    "typeString": "contract IntermediaryToken"
                                  }
                                }
                              },
                              "id": 5359,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4215:59:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IntermediaryToken_$5056",
                                "typeString": "contract IntermediaryToken"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IntermediaryToken_$5056",
                                "typeString": "contract IntermediaryToken"
                              }
                            ],
                            "id": 5349,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4207:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 5348,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4207:7:32",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4207:68:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4179:96:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5367,
                                  "name": "intermediaryToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5347,
                                  "src": "4382:17:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 5365,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4371:3:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 5366,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "src": "4371:10:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 5368,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4371:29:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 5362,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5181,
                              "src": "4361:4:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                "typeString": "contract IConstantProductPool"
                              }
                            },
                            "id": 5364,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2384,
                            "src": "4361:9:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                              "typeString": "function (bytes memory) external returns (uint256)"
                            }
                          },
                          "id": 5369,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4361:40:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5370,
                        "nodeType": "ExpressionStatement",
                        "src": "4361:40:32"
                      },
                      {
                        "expression": {
                          "id": 5378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 5371,
                              "name": "migrated",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5080,
                              "src": "4412:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                              }
                            },
                            "id": 5373,
                            "indexExpression": {
                              "id": 5372,
                              "name": "intermediaryToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5347,
                              "src": "4421:17:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4412:27:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5376,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5181,
                                "src": "4450:4:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                  "typeString": "contract IConstantProductPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                  "typeString": "contract IConstantProductPool"
                                }
                              ],
                              "id": 5375,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4442:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5374,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4442:7:32",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4442:13:32",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4412:43:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5379,
                        "nodeType": "ExpressionStatement",
                        "src": "4412:43:32"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5383,
                                  "name": "oldPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5126,
                                  "src": "4487:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                                    "typeString": "contract IUniswapV2Minimal"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                                    "typeString": "contract IUniswapV2Minimal"
                                  }
                                ],
                                "id": 5382,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4479:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5381,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4479:7:32",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4479:16:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5387,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5181,
                                  "src": "4505:4:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                    "typeString": "contract IConstantProductPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IConstantProductPool_$2271",
                                    "typeString": "contract IConstantProductPool"
                                  }
                                ],
                                "id": 5386,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4497:7:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5385,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4497:7:32",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4497:13:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5389,
                              "name": "intermediaryToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5347,
                              "src": "4512:17:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5380,
                            "name": "Migrate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5075,
                            "src": "4471:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 5390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4471:59:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5391,
                        "nodeType": "EmitStatement",
                        "src": "4466:64:32"
                      },
                      {
                        "expression": {
                          "id": 5392,
                          "name": "intermediaryToken",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5347,
                          "src": "4548:17:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 5130,
                        "id": 5393,
                        "nodeType": "Return",
                        "src": "4541:24:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5123,
                    "nodeType": "StructuredDocumentation",
                    "src": "1797:506:32",
                    "text": "@notice Method to migrate MasterChef's liquidity form the legacy SushiSwap AMM to the Trident constant product pool.\n @param oldPool Legacy SushiSwap pool.\n @dev Since MasterChef has a requierment to receive the same amount of \"LP\" tokens back after migration we use an\n intermediary token so we can mint the desired balance. Anfer unstaking users can call redeem() on the intermediary\n token to receive their share of the LP tokens of the new Trident constant product pool."
                  },
                  "functionSelector": "ce5494bb",
                  "id": 5395,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "migrate",
                  "nameLocation": "2317:7:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5127,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5126,
                        "mutability": "mutable",
                        "name": "oldPool",
                        "nameLocation": "2343:7:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5395,
                        "src": "2325:25:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                          "typeString": "contract IUniswapV2Minimal"
                        },
                        "typeName": {
                          "id": 5125,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5124,
                            "name": "IUniswapV2Minimal",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2599,
                            "src": "2325:17:32"
                          },
                          "referencedDeclaration": 2599,
                          "src": "2325:17:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                            "typeString": "contract IUniswapV2Minimal"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2324:27:32"
                  },
                  "returnParameters": {
                    "id": 5130,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5129,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5395,
                        "src": "2370:7:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5128,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2370:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2369:9:32"
                  },
                  "scope": 5396,
                  "src": "2308:2264:32",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5397,
              "src": "911:3663:32",
              "usedErrors": []
            }
          ],
          "src": "46:4529:32"
        },
        "id": 32
      },
      "contracts/migration/TridentSushiRollCP.sol": {
        "ast": {
          "absolutePath": "contracts/migration/TridentSushiRollCP.sol",
          "exportedSymbols": {
            "IBentoBoxMinimal": [
              2253
            ],
            "IERC20": [
              2316
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "IPoolFactory": [
              2468
            ],
            "ITridentRouter": [
              2573
            ],
            "IUniswapV2Minimal": [
              2599
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "TridentBatchable": [
              24150
            ],
            "TridentPermit": [
              24373
            ],
            "TridentSushiRollCP": [
              5586
            ]
          },
          "id": 5587,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5398,
              "literals": [
                "solidity",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:22:33"
            },
            {
              "absolutePath": "contracts/utils/TridentBatchable.sol",
              "file": "../utils/TridentBatchable.sol",
              "id": 5399,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5587,
              "sourceUnit": 24151,
              "src": "70:39:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/utils/TridentPermit.sol",
              "file": "../utils/TridentPermit.sol",
              "id": 5400,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5587,
              "sourceUnit": 24374,
              "src": "110:36:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IBentoBoxMinimal.sol",
              "file": "../interfaces/IBentoBoxMinimal.sol",
              "id": 5401,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5587,
              "sourceUnit": 2254,
              "src": "147:44:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ITridentRouter.sol",
              "file": "../interfaces/ITridentRouter.sol",
              "id": 5402,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5587,
              "sourceUnit": 2574,
              "src": "192:42:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IMasterDeployer.sol",
              "file": "../interfaces/IMasterDeployer.sol",
              "id": 5403,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5587,
              "sourceUnit": 2357,
              "src": "235:43:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IPoolFactory.sol",
              "file": "../interfaces/IPoolFactory.sol",
              "id": 5404,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5587,
              "sourceUnit": 2469,
              "src": "279:40:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IUniswapV2Minimal.sol",
              "file": "../interfaces/IUniswapV2Minimal.sol",
              "id": 5405,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5587,
              "sourceUnit": 2600,
              "src": "320:45:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IPool.sol",
              "file": "../interfaces/IPool.sol",
              "id": 5406,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5587,
              "sourceUnit": 2451,
              "src": "366:33:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5408,
                    "name": "TridentBatchable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 24150,
                    "src": "519:16:33"
                  },
                  "id": 5409,
                  "nodeType": "InheritanceSpecifier",
                  "src": "519:16:33"
                },
                {
                  "baseName": {
                    "id": 5410,
                    "name": "TridentPermit",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 24373,
                    "src": "537:13:33"
                  },
                  "id": 5411,
                  "nodeType": "InheritanceSpecifier",
                  "src": "537:13:33"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 5407,
                "nodeType": "StructuredDocumentation",
                "src": "401:87:33",
                "text": "@notice Liquidity migrator from UniV2 style pool to Trident Constant product pool."
              },
              "fullyImplemented": true,
              "id": 5586,
              "linearizedBaseContracts": [
                5586,
                24373,
                24150
              ],
              "name": "TridentSushiRollCP",
              "nameLocation": "497:18:33",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 5413,
                  "name": "MinimumOutput",
                  "nameLocation": "563:13:33",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 5412,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "576:2:33"
                  },
                  "src": "557:22:33"
                },
                {
                  "constant": false,
                  "id": 5416,
                  "mutability": "immutable",
                  "name": "bentoBox",
                  "nameLocation": "621:8:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 5586,
                  "src": "585:44:33",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                    "typeString": "contract IBentoBoxMinimal"
                  },
                  "typeName": {
                    "id": 5415,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5414,
                      "name": "IBentoBoxMinimal",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2253,
                      "src": "585:16:33"
                    },
                    "referencedDeclaration": 2253,
                    "src": "585:16:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                      "typeString": "contract IBentoBoxMinimal"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5419,
                  "mutability": "immutable",
                  "name": "poolFactory",
                  "nameLocation": "667:11:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 5586,
                  "src": "635:43:33",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                    "typeString": "contract IPoolFactory"
                  },
                  "typeName": {
                    "id": 5418,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5417,
                      "name": "IPoolFactory",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2468,
                      "src": "635:12:33"
                    },
                    "referencedDeclaration": 2468,
                    "src": "635:12:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                      "typeString": "contract IPoolFactory"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5422,
                  "mutability": "immutable",
                  "name": "masterDeployer",
                  "nameLocation": "719:14:33",
                  "nodeType": "VariableDeclaration",
                  "scope": 5586,
                  "src": "684:49:33",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                    "typeString": "contract IMasterDeployer"
                  },
                  "typeName": {
                    "id": 5421,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5420,
                      "name": "IMasterDeployer",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2356,
                      "src": "684:15:33"
                    },
                    "referencedDeclaration": 2356,
                    "src": "684:15:33",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                      "typeString": "contract IMasterDeployer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5446,
                    "nodeType": "Block",
                    "src": "870:115:33",
                    "statements": [
                      {
                        "expression": {
                          "id": 5436,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5434,
                            "name": "bentoBox",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5416,
                            "src": "880:8:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5435,
                            "name": "_bentoBox",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5425,
                            "src": "891:9:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "src": "880:20:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        "id": 5437,
                        "nodeType": "ExpressionStatement",
                        "src": "880:20:33"
                      },
                      {
                        "expression": {
                          "id": 5440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5438,
                            "name": "poolFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5419,
                            "src": "910:11:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                              "typeString": "contract IPoolFactory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5439,
                            "name": "_poolFactory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5428,
                            "src": "924:12:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                              "typeString": "contract IPoolFactory"
                            }
                          },
                          "src": "910:26:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                            "typeString": "contract IPoolFactory"
                          }
                        },
                        "id": 5441,
                        "nodeType": "ExpressionStatement",
                        "src": "910:26:33"
                      },
                      {
                        "expression": {
                          "id": 5444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5442,
                            "name": "masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5422,
                            "src": "946:14:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                              "typeString": "contract IMasterDeployer"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5443,
                            "name": "_masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5431,
                            "src": "963:15:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                              "typeString": "contract IMasterDeployer"
                            }
                          },
                          "src": "946:32:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                            "typeString": "contract IMasterDeployer"
                          }
                        },
                        "id": 5445,
                        "nodeType": "ExpressionStatement",
                        "src": "946:32:33"
                      }
                    ]
                  },
                  "id": 5447,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5432,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5425,
                        "mutability": "mutable",
                        "name": "_bentoBox",
                        "nameLocation": "778:9:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5447,
                        "src": "761:26:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                          "typeString": "contract IBentoBoxMinimal"
                        },
                        "typeName": {
                          "id": 5424,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5423,
                            "name": "IBentoBoxMinimal",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2253,
                            "src": "761:16:33"
                          },
                          "referencedDeclaration": 2253,
                          "src": "761:16:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5428,
                        "mutability": "mutable",
                        "name": "_poolFactory",
                        "nameLocation": "810:12:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5447,
                        "src": "797:25:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                          "typeString": "contract IPoolFactory"
                        },
                        "typeName": {
                          "id": 5427,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5426,
                            "name": "IPoolFactory",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2468,
                            "src": "797:12:33"
                          },
                          "referencedDeclaration": 2468,
                          "src": "797:12:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                            "typeString": "contract IPoolFactory"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5431,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "848:15:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5447,
                        "src": "832:31:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                          "typeString": "contract IMasterDeployer"
                        },
                        "typeName": {
                          "id": 5430,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5429,
                            "name": "IMasterDeployer",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2356,
                            "src": "832:15:33"
                          },
                          "referencedDeclaration": 2356,
                          "src": "832:15:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                            "typeString": "contract IMasterDeployer"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "751:118:33"
                  },
                  "returnParameters": {
                    "id": 5433,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "870:0:33"
                  },
                  "scope": 5586,
                  "src": "740:245:33",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5584,
                    "nodeType": "Block",
                    "src": "1783:812:33",
                    "statements": [
                      {
                        "assignments": [
                          5465
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5465,
                            "mutability": "mutable",
                            "name": "token0",
                            "nameLocation": "1801:6:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 5584,
                            "src": "1793:14:33",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5464,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1793:7:33",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5469,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5466,
                              "name": "pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5451,
                              "src": "1810:4:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                                "typeString": "contract IUniswapV2Minimal"
                              }
                            },
                            "id": 5467,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token0",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2584,
                            "src": "1810:11:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 5468,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1810:13:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1793:30:33"
                      },
                      {
                        "assignments": [
                          5471
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5471,
                            "mutability": "mutable",
                            "name": "token1",
                            "nameLocation": "1841:6:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 5584,
                            "src": "1833:14:33",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5470,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1833:7:33",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5475,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 5472,
                              "name": "pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5451,
                              "src": "1850:4:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                                "typeString": "contract IUniswapV2Minimal"
                              }
                            },
                            "id": 5473,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "token1",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2589,
                            "src": "1850:11:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 5474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1850:13:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1833:30:33"
                      },
                      {
                        "assignments": [
                          5477
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5477,
                            "mutability": "mutable",
                            "name": "poolData",
                            "nameLocation": "1887:8:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 5584,
                            "src": "1874:21:33",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 5476,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "1874:5:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5485,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5480,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5465,
                              "src": "1909:6:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5481,
                              "name": "token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5471,
                              "src": "1917:6:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5482,
                              "name": "swapFee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5455,
                              "src": "1925:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5483,
                              "name": "twapSupport",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5457,
                              "src": "1934:11:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "id": 5478,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "1898:3:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 5479,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encode",
                            "nodeType": "MemberAccess",
                            "src": "1898:10:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 5484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1898:48:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1874:72:33"
                      },
                      {
                        "assignments": [
                          5487
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5487,
                            "mutability": "mutable",
                            "name": "tridentPool",
                            "nameLocation": "1964:11:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 5584,
                            "src": "1956:19:33",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5486,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1956:7:33",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5494,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5491,
                                  "name": "poolData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5477,
                                  "src": "2014:8:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 5490,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "2004:9:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 5492,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2004:19:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 5488,
                              "name": "poolFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5419,
                              "src": "1978:11:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                                "typeString": "contract IPoolFactory"
                              }
                            },
                            "id": 5489,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "configAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2467,
                            "src": "1978:25:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) external returns (address)"
                            }
                          },
                          "id": 5493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1978:46:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1956:68:33"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 5500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5495,
                            "name": "tridentPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5487,
                            "src": "2039:11:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 5498,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2062:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 5497,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2054:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5496,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2054:7:33",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5499,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2054:10:33",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2039:25:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5513,
                        "nodeType": "IfStatement",
                        "src": "2035:127:33",
                        "trueBody": {
                          "id": 5512,
                          "nodeType": "Block",
                          "src": "2066:96:33",
                          "statements": [
                            {
                              "expression": {
                                "id": 5510,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 5501,
                                  "name": "tridentPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5487,
                                  "src": "2080:11:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 5506,
                                          "name": "poolFactory",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5419,
                                          "src": "2128:11:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                                            "typeString": "contract IPoolFactory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_IPoolFactory_$2468",
                                            "typeString": "contract IPoolFactory"
                                          }
                                        ],
                                        "id": 5505,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "2120:7:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 5504,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2120:7:33",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 5507,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2120:20:33",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 5508,
                                      "name": "poolData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5477,
                                      "src": "2142:8:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "expression": {
                                      "id": 5502,
                                      "name": "masterDeployer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5422,
                                      "src": "2094:14:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                        "typeString": "contract IMasterDeployer"
                                      }
                                    },
                                    "id": 5503,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "deployPool",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2355,
                                    "src": "2094:25:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$",
                                      "typeString": "function (address,bytes memory) external returns (address)"
                                    }
                                  },
                                  "id": 5509,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2094:57:33",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "2080:71:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 5511,
                              "nodeType": "ExpressionStatement",
                              "src": "2080:71:33"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 5517,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2190:3:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5518,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2190:10:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5521,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5451,
                                  "src": "2210:4:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                                    "typeString": "contract IUniswapV2Minimal"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                                    "typeString": "contract IUniswapV2Minimal"
                                  }
                                ],
                                "id": 5520,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2202:7:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5519,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2202:7:33",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2202:13:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5523,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5453,
                              "src": "2217:6:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 5514,
                              "name": "pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5451,
                              "src": "2172:4:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                                "typeString": "contract IUniswapV2Minimal"
                              }
                            },
                            "id": 5516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2297,
                            "src": "2172:17:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 5524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2172:52:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5525,
                        "nodeType": "ExpressionStatement",
                        "src": "2172:52:33"
                      },
                      {
                        "assignments": [
                          5527,
                          5529
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5527,
                            "mutability": "mutable",
                            "name": "amount0",
                            "nameLocation": "2243:7:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 5584,
                            "src": "2235:15:33",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5526,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2235:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 5529,
                            "mutability": "mutable",
                            "name": "amount1",
                            "nameLocation": "2260:7:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 5584,
                            "src": "2252:15:33",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5528,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2252:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5537,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5534,
                                  "name": "bentoBox",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5416,
                                  "src": "2289:8:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                    "typeString": "contract IBentoBoxMinimal"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                    "typeString": "contract IBentoBoxMinimal"
                                  }
                                ],
                                "id": 5533,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2281:7:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5532,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2281:7:33",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5535,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2281:17:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 5530,
                              "name": "pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5451,
                              "src": "2271:4:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                                "typeString": "contract IUniswapV2Minimal"
                              }
                            },
                            "id": 5531,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "burn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2598,
                            "src": "2271:9:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address) external returns (uint256,uint256)"
                            }
                          },
                          "id": 5536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2271:28:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2234:65:33"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5541,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5465,
                              "src": "2327:6:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5544,
                                  "name": "bentoBox",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5416,
                                  "src": "2343:8:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                    "typeString": "contract IBentoBoxMinimal"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                    "typeString": "contract IBentoBoxMinimal"
                                  }
                                ],
                                "id": 5543,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2335:7:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5542,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2335:7:33",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5545,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2335:17:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5546,
                              "name": "tridentPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5487,
                              "src": "2354:11:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5547,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5527,
                              "src": "2367:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 5548,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2376:1:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "id": 5538,
                              "name": "bentoBox",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5416,
                              "src": "2310:8:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                "typeString": "contract IBentoBoxMinimal"
                              }
                            },
                            "id": 5540,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2197,
                            "src": "2310:16:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,address,uint256,uint256) payable external returns (uint256,uint256)"
                            }
                          },
                          "id": 5549,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2310:68:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "id": 5550,
                        "nodeType": "ExpressionStatement",
                        "src": "2310:68:33"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5554,
                              "name": "token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5471,
                              "src": "2405:6:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5557,
                                  "name": "bentoBox",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5416,
                                  "src": "2421:8:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                    "typeString": "contract IBentoBoxMinimal"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                    "typeString": "contract IBentoBoxMinimal"
                                  }
                                ],
                                "id": 5556,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2413:7:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5555,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2413:7:33",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5558,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2413:17:33",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5559,
                              "name": "tridentPool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5487,
                              "src": "2432:11:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5560,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5529,
                              "src": "2445:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 5561,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2454:1:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "expression": {
                              "id": 5551,
                              "name": "bentoBox",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5416,
                              "src": "2388:8:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                "typeString": "contract IBentoBoxMinimal"
                              }
                            },
                            "id": 5553,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2197,
                            "src": "2388:16:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,address,uint256,uint256) payable external returns (uint256,uint256)"
                            }
                          },
                          "id": 5562,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2388:68:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "id": 5563,
                        "nodeType": "ExpressionStatement",
                        "src": "2388:68:33"
                      },
                      {
                        "expression": {
                          "id": 5575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5564,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5462,
                            "src": "2467:9:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 5571,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "2514:3:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 5572,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "2514:10:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5569,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "2503:3:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 5570,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "src": "2503:10:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 5573,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2503:22:33",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5566,
                                    "name": "tridentPool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5487,
                                    "src": "2485:11:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5565,
                                  "name": "IPool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2450,
                                  "src": "2479:5:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IPool_$2450_$",
                                    "typeString": "type(contract IPool)"
                                  }
                                },
                                "id": 5567,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2479:18:33",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IPool_$2450",
                                  "typeString": "contract IPool"
                                }
                              },
                              "id": 5568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mint",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2384,
                              "src": "2479:23:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                                "typeString": "function (bytes memory) external returns (uint256)"
                              }
                            },
                            "id": 5574,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2479:47:33",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2467:59:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5576,
                        "nodeType": "ExpressionStatement",
                        "src": "2467:59:33"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5579,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5577,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5462,
                            "src": "2541:9:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 5578,
                            "name": "minReceived",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5459,
                            "src": "2553:11:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2541:23:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5583,
                        "nodeType": "IfStatement",
                        "src": "2537:51:33",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 5580,
                              "name": "MinimumOutput",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5413,
                              "src": "2573:13:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 5581,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2573:15:33",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 5582,
                          "nodeType": "RevertStatement",
                          "src": "2566:22:33"
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5448,
                    "nodeType": "StructuredDocumentation",
                    "src": "991:591:33",
                    "text": "@notice Function to migrate existing Sushiswap or other Uniswap V2 style pools to Trident.\n@param pair Uniswap V2 style liquidity pool address.\n@param amount Liquidity amount (Lp token balance) to be migrated.\n@param swapFee Swap fee of the Trident CP pool we are migrating into.\n@param twapSupport Whether the Trident CP pool we are migrating into supports twap oracles.\n@param minReceived Slippage protection for minting liquidity on the Trident CP pool.\n@dev If the pool with the current conditions doesn't exist it will be deployed. "
                  },
                  "functionSelector": "bd2aded2",
                  "id": 5585,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "migrate",
                  "nameLocation": "1596:7:33",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5460,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5451,
                        "mutability": "mutable",
                        "name": "pair",
                        "nameLocation": "1631:4:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5585,
                        "src": "1613:22:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                          "typeString": "contract IUniswapV2Minimal"
                        },
                        "typeName": {
                          "id": 5450,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5449,
                            "name": "IUniswapV2Minimal",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2599,
                            "src": "1613:17:33"
                          },
                          "referencedDeclaration": 2599,
                          "src": "1613:17:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IUniswapV2Minimal_$2599",
                            "typeString": "contract IUniswapV2Minimal"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5453,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1653:6:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5585,
                        "src": "1645:14:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5452,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1645:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5455,
                        "mutability": "mutable",
                        "name": "swapFee",
                        "nameLocation": "1677:7:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5585,
                        "src": "1669:15:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5454,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1669:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5457,
                        "mutability": "mutable",
                        "name": "twapSupport",
                        "nameLocation": "1699:11:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5585,
                        "src": "1694:16:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5456,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1694:4:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5459,
                        "mutability": "mutable",
                        "name": "minReceived",
                        "nameLocation": "1728:11:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5585,
                        "src": "1720:19:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5458,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1720:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1603:142:33"
                  },
                  "returnParameters": {
                    "id": 5463,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5462,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "1772:9:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5585,
                        "src": "1764:17:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5461,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1764:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1763:19:33"
                  },
                  "scope": 5586,
                  "src": "1587:1008:33",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5587,
              "src": "488:2109:33",
              "usedErrors": [
                5413,
                24283
              ]
            }
          ],
          "src": "46:2552:33"
        },
        "id": 33
      },
      "contracts/migration/TridentSushiRollReference.sol": {
        "ast": {
          "absolutePath": "contracts/migration/TridentSushiRollReference.sol",
          "exportedSymbols": {
            "IBalancerV1": [
              5607
            ],
            "IBalancerV2": [
              5642
            ],
            "IERC20": [
              623
            ],
            "ITridentRouterMinimal": [
              5762
            ],
            "IUniswapV2Minimal": [
              5663
            ],
            "IUniswapV3": [
              5737
            ],
            "TridentBatchable": [
              24150
            ],
            "TridentPermit": [
              24373
            ],
            "TridentSushiRoll": [
              5764
            ]
          },
          "id": 5765,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5588,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:34"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
              "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
              "id": 5589,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5765,
              "sourceUnit": 624,
              "src": "72:56:34",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/utils/TridentBatchable.sol",
              "file": "../utils/TridentBatchable.sol",
              "id": 5590,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5765,
              "sourceUnit": 24151,
              "src": "129:39:34",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/utils/TridentPermit.sol",
              "file": "../utils/TridentPermit.sol",
              "id": 5591,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5765,
              "sourceUnit": 24374,
              "src": "169:36:34",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 5592,
                "nodeType": "StructuredDocumentation",
                "src": "207:51:34",
                "text": "@notice Interface for handling Balancer V1 LP."
              },
              "fullyImplemented": false,
              "id": 5607,
              "linearizedBaseContracts": [
                5607
              ],
              "name": "IBalancerV1",
              "nameLocation": "268:11:34",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "be3bbd2e",
                  "id": 5598,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getFinalTokens",
                  "nameLocation": "295:14:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5593,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "309:2:34"
                  },
                  "returnParameters": {
                    "id": 5597,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5596,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5598,
                        "src": "335:16:34",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5594,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "335:7:34",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 5595,
                          "nodeType": "ArrayTypeName",
                          "src": "335:9:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "334:18:34"
                  },
                  "scope": 5607,
                  "src": "286:67:34",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "b02f0b73",
                  "id": 5606,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "exitPool",
                  "nameLocation": "368:8:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5604,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5600,
                        "mutability": "mutable",
                        "name": "poolAmountIn",
                        "nameLocation": "385:12:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5606,
                        "src": "377:20:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5599,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "377:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5603,
                        "mutability": "mutable",
                        "name": "minAmountsOut",
                        "nameLocation": "418:13:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5606,
                        "src": "399:32:34",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5601,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "399:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5602,
                          "nodeType": "ArrayTypeName",
                          "src": "399:9:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "376:56:34"
                  },
                  "returnParameters": {
                    "id": 5605,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "441:0:34"
                  },
                  "scope": 5607,
                  "src": "359:83:34",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5765,
              "src": "258:186:34",
              "usedErrors": []
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 5608,
                "nodeType": "StructuredDocumentation",
                "src": "446:101:34",
                "text": "@notice Interface for handling Balancer V2 LP - `assets` aliased to address for code simplicity."
              },
              "fullyImplemented": false,
              "id": 5642,
              "linearizedBaseContracts": [
                5642
              ],
              "name": "IBalancerV2",
              "nameLocation": "557:11:34",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "IBalancerV2.ExitPoolRequest",
                  "id": 5619,
                  "members": [
                    {
                      "constant": false,
                      "id": 5611,
                      "mutability": "mutable",
                      "name": "assets",
                      "nameLocation": "618:6:34",
                      "nodeType": "VariableDeclaration",
                      "scope": 5619,
                      "src": "608:16:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5609,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "608:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5610,
                        "nodeType": "ArrayTypeName",
                        "src": "608:9:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5614,
                      "mutability": "mutable",
                      "name": "minAmountsOut",
                      "nameLocation": "644:13:34",
                      "nodeType": "VariableDeclaration",
                      "scope": 5619,
                      "src": "634:23:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5612,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "634:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5613,
                        "nodeType": "ArrayTypeName",
                        "src": "634:9:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5616,
                      "mutability": "mutable",
                      "name": "userData",
                      "nameLocation": "673:8:34",
                      "nodeType": "VariableDeclaration",
                      "scope": 5619,
                      "src": "667:14:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 5615,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "667:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5618,
                      "mutability": "mutable",
                      "name": "toInternalBalance",
                      "nameLocation": "696:17:34",
                      "nodeType": "VariableDeclaration",
                      "scope": 5619,
                      "src": "691:22:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 5617,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "691:4:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "ExitPoolRequest",
                  "nameLocation": "582:15:34",
                  "nodeType": "StructDefinition",
                  "scope": 5642,
                  "src": "575:145:34",
                  "visibility": "public"
                },
                {
                  "documentation": {
                    "id": 5620,
                    "nodeType": "StructuredDocumentation",
                    "src": "726:57:34",
                    "text": "@notice Returns asset tokens from a Balancer V2 pool."
                  },
                  "functionSelector": "f94d4668",
                  "id": 5628,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPoolTokens",
                  "nameLocation": "797:13:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5623,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5622,
                        "mutability": "mutable",
                        "name": "poolId",
                        "nameLocation": "819:6:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5628,
                        "src": "811:14:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5621,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "811:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "810:16:34"
                  },
                  "returnParameters": {
                    "id": 5627,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5626,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5628,
                        "src": "850:16:34",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5624,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "850:7:34",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 5625,
                          "nodeType": "ArrayTypeName",
                          "src": "850:9:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "849:18:34"
                  },
                  "scope": 5642,
                  "src": "788:80:34",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5629,
                    "nodeType": "StructuredDocumentation",
                    "src": "874:59:34",
                    "text": "@notice Exits liquidity tokens from a Balancer V2 pool."
                  },
                  "functionSelector": "8bdb3913",
                  "id": 5641,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "exitPool",
                  "nameLocation": "947:8:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5639,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5631,
                        "mutability": "mutable",
                        "name": "poolId",
                        "nameLocation": "973:6:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5641,
                        "src": "965:14:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5630,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "965:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5633,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "997:6:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5641,
                        "src": "989:14:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5632,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "989:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5635,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "1021:9:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5641,
                        "src": "1013:17:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5634,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1013:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5638,
                        "mutability": "mutable",
                        "name": "request",
                        "nameLocation": "1065:7:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5641,
                        "src": "1040:32:34",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ExitPoolRequest_$5619_calldata_ptr",
                          "typeString": "struct IBalancerV2.ExitPoolRequest"
                        },
                        "typeName": {
                          "id": 5637,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5636,
                            "name": "ExitPoolRequest",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 5619,
                            "src": "1040:15:34"
                          },
                          "referencedDeclaration": 5619,
                          "src": "1040:15:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ExitPoolRequest_$5619_storage_ptr",
                            "typeString": "struct IBalancerV2.ExitPoolRequest"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "955:123:34"
                  },
                  "returnParameters": {
                    "id": 5640,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1087:0:34"
                  },
                  "scope": 5642,
                  "src": "938:150:34",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5765,
              "src": "547:543:34",
              "usedErrors": []
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 5643,
                "nodeType": "StructuredDocumentation",
                "src": "1092:45:34",
                "text": "@notice Minimal Uniswap V2 LP interface."
              },
              "fullyImplemented": false,
              "id": 5663,
              "linearizedBaseContracts": [
                5663
              ],
              "name": "IUniswapV2Minimal",
              "nameLocation": "1147:17:34",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "0dfe1681",
                  "id": 5648,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "token0",
                  "nameLocation": "1180:6:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5644,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1186:2:34"
                  },
                  "returnParameters": {
                    "id": 5647,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5646,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5648,
                        "src": "1212:7:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5645,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1212:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1211:9:34"
                  },
                  "scope": 5663,
                  "src": "1171:50:34",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "d21220a7",
                  "id": 5653,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "token1",
                  "nameLocation": "1236:6:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5649,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1242:2:34"
                  },
                  "returnParameters": {
                    "id": 5652,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5651,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5653,
                        "src": "1268:7:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5650,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1268:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1267:9:34"
                  },
                  "scope": 5663,
                  "src": "1227:50:34",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "89afcb44",
                  "id": 5662,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nameLocation": "1292:4:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5656,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5655,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "1305:2:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5662,
                        "src": "1297:10:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5654,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1297:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1296:12:34"
                  },
                  "returnParameters": {
                    "id": 5661,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5658,
                        "mutability": "mutable",
                        "name": "amount0",
                        "nameLocation": "1335:7:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5662,
                        "src": "1327:15:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5657,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1327:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5660,
                        "mutability": "mutable",
                        "name": "amount1",
                        "nameLocation": "1352:7:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5662,
                        "src": "1344:15:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5659,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1344:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1326:34:34"
                  },
                  "scope": 5663,
                  "src": "1283:78:34",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5765,
              "src": "1137:226:34",
              "usedErrors": []
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 5664,
                "nodeType": "StructuredDocumentation",
                "src": "1365:50:34",
                "text": "@notice Interface for handling Uniswap V3 LP."
              },
              "fullyImplemented": false,
              "id": 5737,
              "linearizedBaseContracts": [
                5737
              ],
              "name": "IUniswapV3",
              "nameLocation": "1425:10:34",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 5665,
                    "nodeType": "StructuredDocumentation",
                    "src": "1442:1157:34",
                    "text": "@notice Returns the position information associated with a given token ID.\n @dev Throws if the token ID is not valid.\n @param tokenId The ID of the token that represents the position\n @return nonce The nonce for permits\n @return operator The address that is approved for spending\n @return token0 The address of the token0 for a specific pool\n @return token1 The address of the token1 for a specific pool\n @return fee The fee associated with the pool\n @return tickLower The lower end of the tick range for the position\n @return tickUpper The higher end of the tick range for the position\n @return liquidity The liquidity of the position\n @return feeGrowthInside0LastX128 The fee growth of token0 as of the last action on the individual position\n @return feeGrowthInside1LastX128 The fee growth of token1 as of the last action on the individual position\n @return tokensOwed0 The uncollected amount of token0 owed to the position as of the last computation\n @return tokensOwed1 The uncollected amount of token1 owed to the position as of the last computation"
                  },
                  "functionSelector": "99fbab88",
                  "id": 5694,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "positions",
                  "nameLocation": "2613:9:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5668,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5667,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "2631:7:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5694,
                        "src": "2623:15:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5666,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2623:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2622:17:34"
                  },
                  "returnParameters": {
                    "id": 5693,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5670,
                        "mutability": "mutable",
                        "name": "nonce",
                        "nameLocation": "2707:5:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5694,
                        "src": "2700:12:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 5669,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "2700:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5672,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "2734:8:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5694,
                        "src": "2726:16:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5671,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2726:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5674,
                        "mutability": "mutable",
                        "name": "token0",
                        "nameLocation": "2764:6:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5694,
                        "src": "2756:14:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5673,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2756:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5676,
                        "mutability": "mutable",
                        "name": "token1",
                        "nameLocation": "2792:6:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5694,
                        "src": "2784:14:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5675,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2784:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5678,
                        "mutability": "mutable",
                        "name": "fee",
                        "nameLocation": "2819:3:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5694,
                        "src": "2812:10:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        },
                        "typeName": {
                          "id": 5677,
                          "name": "uint24",
                          "nodeType": "ElementaryTypeName",
                          "src": "2812:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5680,
                        "mutability": "mutable",
                        "name": "tickLower",
                        "nameLocation": "2842:9:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5694,
                        "src": "2836:15:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 5679,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "2836:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5682,
                        "mutability": "mutable",
                        "name": "tickUpper",
                        "nameLocation": "2871:9:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5694,
                        "src": "2865:15:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 5681,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "2865:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5684,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "2902:9:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5694,
                        "src": "2894:17:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 5683,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "2894:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5686,
                        "mutability": "mutable",
                        "name": "feeGrowthInside0LastX128",
                        "nameLocation": "2933:24:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5694,
                        "src": "2925:32:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5685,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2925:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5688,
                        "mutability": "mutable",
                        "name": "feeGrowthInside1LastX128",
                        "nameLocation": "2979:24:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5694,
                        "src": "2971:32:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5687,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2971:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5690,
                        "mutability": "mutable",
                        "name": "tokensOwed0",
                        "nameLocation": "3025:11:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5694,
                        "src": "3017:19:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 5689,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "3017:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5692,
                        "mutability": "mutable",
                        "name": "tokensOwed1",
                        "nameLocation": "3058:11:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5694,
                        "src": "3050:19:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 5691,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "3050:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2686:393:34"
                  },
                  "scope": 5737,
                  "src": "2604:476:34",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "canonicalName": "IUniswapV3.DecreaseLiquidityParams",
                  "id": 5705,
                  "members": [
                    {
                      "constant": false,
                      "id": 5696,
                      "mutability": "mutable",
                      "name": "tokenId",
                      "nameLocation": "3135:7:34",
                      "nodeType": "VariableDeclaration",
                      "scope": 5705,
                      "src": "3127:15:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5695,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3127:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5698,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nameLocation": "3160:9:34",
                      "nodeType": "VariableDeclaration",
                      "scope": 5705,
                      "src": "3152:17:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 5697,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "3152:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5700,
                      "mutability": "mutable",
                      "name": "amount0Min",
                      "nameLocation": "3187:10:34",
                      "nodeType": "VariableDeclaration",
                      "scope": 5705,
                      "src": "3179:18:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5699,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3179:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5702,
                      "mutability": "mutable",
                      "name": "amount1Min",
                      "nameLocation": "3215:10:34",
                      "nodeType": "VariableDeclaration",
                      "scope": 5705,
                      "src": "3207:18:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5701,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3207:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5704,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nameLocation": "3243:8:34",
                      "nodeType": "VariableDeclaration",
                      "scope": 5705,
                      "src": "3235:16:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5703,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3235:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "DecreaseLiquidityParams",
                  "nameLocation": "3093:23:34",
                  "nodeType": "StructDefinition",
                  "scope": 5737,
                  "src": "3086:172:34",
                  "visibility": "public"
                },
                {
                  "canonicalName": "IUniswapV3.CollectParams",
                  "id": 5714,
                  "members": [
                    {
                      "constant": false,
                      "id": 5707,
                      "mutability": "mutable",
                      "name": "tokenId",
                      "nameLocation": "3303:7:34",
                      "nodeType": "VariableDeclaration",
                      "scope": 5714,
                      "src": "3295:15:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5706,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3295:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5709,
                      "mutability": "mutable",
                      "name": "recipient",
                      "nameLocation": "3328:9:34",
                      "nodeType": "VariableDeclaration",
                      "scope": 5714,
                      "src": "3320:17:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5708,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3320:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5711,
                      "mutability": "mutable",
                      "name": "amount0Max",
                      "nameLocation": "3355:10:34",
                      "nodeType": "VariableDeclaration",
                      "scope": 5714,
                      "src": "3347:18:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 5710,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "3347:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5713,
                      "mutability": "mutable",
                      "name": "amount1Max",
                      "nameLocation": "3383:10:34",
                      "nodeType": "VariableDeclaration",
                      "scope": 5714,
                      "src": "3375:18:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 5712,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "3375:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "CollectParams",
                  "nameLocation": "3271:13:34",
                  "nodeType": "StructDefinition",
                  "scope": 5737,
                  "src": "3264:136:34",
                  "visibility": "public"
                },
                {
                  "documentation": {
                    "id": 5715,
                    "nodeType": "StructuredDocumentation",
                    "src": "3501:606:34",
                    "text": "@param params tokenId The ID of the token for which liquidity is being decreased,\n amount The amount by which liquidity will be decreased,\n amount0Min The minimum amount of token0 that should be accounted for the burned liquidity,\n amount1Min The minimum amount of token1 that should be accounted for the burned liquidity,\n deadline The time by which the transaction must be included to effect the change\n @return amount0 The amount of token0 accounted to the position's tokens owed\n @return amount1 The amount of token1 accounted to the position's tokens owed"
                  },
                  "functionSelector": "0c49ccbe",
                  "id": 5725,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decreaseLiquidity",
                  "nameLocation": "4121:17:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5719,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5718,
                        "mutability": "mutable",
                        "name": "params",
                        "nameLocation": "4172:6:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5725,
                        "src": "4139:39:34",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DecreaseLiquidityParams_$5705_calldata_ptr",
                          "typeString": "struct IUniswapV3.DecreaseLiquidityParams"
                        },
                        "typeName": {
                          "id": 5717,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5716,
                            "name": "DecreaseLiquidityParams",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 5705,
                            "src": "4139:23:34"
                          },
                          "referencedDeclaration": 5705,
                          "src": "4139:23:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DecreaseLiquidityParams_$5705_storage_ptr",
                            "typeString": "struct IUniswapV3.DecreaseLiquidityParams"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4138:41:34"
                  },
                  "returnParameters": {
                    "id": 5724,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5721,
                        "mutability": "mutable",
                        "name": "amount0",
                        "nameLocation": "4214:7:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5725,
                        "src": "4206:15:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5720,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4206:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5723,
                        "mutability": "mutable",
                        "name": "amount1",
                        "nameLocation": "4231:7:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5725,
                        "src": "4223:15:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5722,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4223:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4205:34:34"
                  },
                  "scope": 5737,
                  "src": "4112:128:34",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 5726,
                    "nodeType": "StructuredDocumentation",
                    "src": "4246:489:34",
                    "text": "@notice Collects up to a maximum amount of fees owed to a specific position to the recipient\n @param params tokenId The ID of the NFT for which tokens are being collected,\n recipient The account that should receive the tokens,\n amount0Max The maximum amount of token0 to collect,\n amount1Max The maximum amount of token1 to collect\n @return amount0 The amount of fees collected in token0\n @return amount1 The amount of fees collected in token1"
                  },
                  "functionSelector": "fc6f7865",
                  "id": 5736,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "collect",
                  "nameLocation": "4749:7:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5730,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5729,
                        "mutability": "mutable",
                        "name": "params",
                        "nameLocation": "4780:6:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5736,
                        "src": "4757:29:34",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CollectParams_$5714_calldata_ptr",
                          "typeString": "struct IUniswapV3.CollectParams"
                        },
                        "typeName": {
                          "id": 5728,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5727,
                            "name": "CollectParams",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 5714,
                            "src": "4757:13:34"
                          },
                          "referencedDeclaration": 5714,
                          "src": "4757:13:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CollectParams_$5714_storage_ptr",
                            "typeString": "struct IUniswapV3.CollectParams"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4756:31:34"
                  },
                  "returnParameters": {
                    "id": 5735,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5732,
                        "mutability": "mutable",
                        "name": "amount0",
                        "nameLocation": "4822:7:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5736,
                        "src": "4814:15:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5731,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4814:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5734,
                        "mutability": "mutable",
                        "name": "amount1",
                        "nameLocation": "4839:7:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5736,
                        "src": "4831:15:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5733,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4831:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4813:34:34"
                  },
                  "scope": 5737,
                  "src": "4740:108:34",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5765,
              "src": "1415:3435:34",
              "usedErrors": []
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 5738,
                "nodeType": "StructuredDocumentation",
                "src": "4852:51:34",
                "text": "@notice Minimal Trident pool router interface."
              },
              "fullyImplemented": false,
              "id": 5762,
              "linearizedBaseContracts": [
                5762
              ],
              "name": "ITridentRouterMinimal",
              "nameLocation": "4913:21:34",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "ITridentRouterMinimal.TokenInput",
                  "id": 5745,
                  "members": [
                    {
                      "constant": false,
                      "id": 5740,
                      "mutability": "mutable",
                      "name": "token",
                      "nameLocation": "4977:5:34",
                      "nodeType": "VariableDeclaration",
                      "scope": 5745,
                      "src": "4969:13:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5739,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4969:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5742,
                      "mutability": "mutable",
                      "name": "native",
                      "nameLocation": "4997:6:34",
                      "nodeType": "VariableDeclaration",
                      "scope": 5745,
                      "src": "4992:11:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 5741,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4992:4:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5744,
                      "mutability": "mutable",
                      "name": "amount",
                      "nameLocation": "5021:6:34",
                      "nodeType": "VariableDeclaration",
                      "scope": 5745,
                      "src": "5013:14:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5743,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5013:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "TokenInput",
                  "nameLocation": "4948:10:34",
                  "nodeType": "StructDefinition",
                  "scope": 5762,
                  "src": "4941:93:34",
                  "visibility": "public"
                },
                {
                  "documentation": {
                    "id": 5746,
                    "nodeType": "StructuredDocumentation",
                    "src": "5040:296:34",
                    "text": "@notice Add liquidity to a pool.\n @param tokenInput Token address and amount to add as liquidity.\n @param pool Pool address to add liquidity to.\n @param minLiquidity Minimum output liquidity - caps slippage.\n @param data Data required by the pool to add liquidity."
                  },
                  "functionSelector": "2cfcb94f",
                  "id": 5761,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addLiquidity",
                  "nameLocation": "5350:12:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5757,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5750,
                        "mutability": "mutable",
                        "name": "tokenInput",
                        "nameLocation": "5394:10:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5761,
                        "src": "5372:32:34",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_TokenInput_$5745_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct ITridentRouterMinimal.TokenInput[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5748,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 5747,
                              "name": "TokenInput",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 5745,
                              "src": "5372:10:34"
                            },
                            "referencedDeclaration": 5745,
                            "src": "5372:10:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenInput_$5745_storage_ptr",
                              "typeString": "struct ITridentRouterMinimal.TokenInput"
                            }
                          },
                          "id": 5749,
                          "nodeType": "ArrayTypeName",
                          "src": "5372:12:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenInput_$5745_storage_$dyn_storage_ptr",
                            "typeString": "struct ITridentRouterMinimal.TokenInput[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5752,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "5422:4:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5761,
                        "src": "5414:12:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5751,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5414:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5754,
                        "mutability": "mutable",
                        "name": "minLiquidity",
                        "nameLocation": "5444:12:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5761,
                        "src": "5436:20:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5753,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5436:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5756,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5481:4:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5761,
                        "src": "5466:19:34",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5755,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5466:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5362:129:34"
                  },
                  "returnParameters": {
                    "id": 5760,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5759,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "5526:9:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 5761,
                        "src": "5518:17:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5758,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5518:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5517:19:34"
                  },
                  "scope": 5762,
                  "src": "5341:196:34",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 5765,
              "src": "4903:636:34",
              "usedErrors": []
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 5763,
                "nodeType": "StructuredDocumentation",
                "src": "5541:68:34",
                "text": "@notice Liquidity migrator for Trident from popular pool types."
              },
              "fullyImplemented": true,
              "id": 5764,
              "linearizedBaseContracts": [
                5764
              ],
              "name": "TridentSushiRoll",
              "nameLocation": "5618:16:34",
              "nodeType": "ContractDefinition",
              "nodes": [],
              "scope": 5765,
              "src": "5609:4793:34",
              "usedErrors": []
            }
          ],
          "src": "46:10357:34"
        },
        "id": 34
      },
      "contracts/mocks/ERC20Mock.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/ERC20Mock.sol",
          "exportedSymbols": {
            "Context": [
              670
            ],
            "ERC20": [
              545
            ],
            "ERC20Mock": [
              5854
            ],
            "IERC20": [
              623
            ],
            "IERC20Metadata": [
              648
            ]
          },
          "id": 5855,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5766,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".2"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:23:35"
            },
            {
              "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
              "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
              "id": 5767,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5855,
              "sourceUnit": 546,
              "src": "71:55:35",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5768,
                    "name": "ERC20",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 545,
                    "src": "150:5:35"
                  },
                  "id": 5769,
                  "nodeType": "InheritanceSpecifier",
                  "src": "150:5:35"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 5854,
              "linearizedBaseContracts": [
                5854,
                545,
                648,
                623,
                670
              ],
              "name": "ERC20Mock",
              "nameLocation": "137:9:35",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 5775,
                  "name": "Deposit",
                  "nameLocation": "168:7:35",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5774,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5771,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "dst",
                        "nameLocation": "192:3:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5775,
                        "src": "176:19:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5770,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "176:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5773,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "wad",
                        "nameLocation": "205:3:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5775,
                        "src": "197:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5772,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "197:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "175:34:35"
                  },
                  "src": "162:48:35"
                },
                {
                  "anonymous": false,
                  "id": 5781,
                  "name": "Withdrawal",
                  "nameLocation": "221:10:35",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5780,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5777,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "src",
                        "nameLocation": "248:3:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5781,
                        "src": "232:19:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5776,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "232:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5779,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "wad",
                        "nameLocation": "261:3:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5781,
                        "src": "253:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5778,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "253:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "231:34:35"
                  },
                  "src": "215:51:35"
                },
                {
                  "body": {
                    "id": 5800,
                    "nodeType": "Block",
                    "src": "392:42:35",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 5795,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "408:3:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5796,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "408:10:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5797,
                              "name": "supply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5787,
                              "src": "420:6:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5794,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 405,
                            "src": "402:5:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 5798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "402:25:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5799,
                        "nodeType": "ExpressionStatement",
                        "src": "402:25:35"
                      }
                    ]
                  },
                  "id": 5801,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 5790,
                          "name": "name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5783,
                          "src": "378:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "id": 5791,
                          "name": "symbol",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5785,
                          "src": "384:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        }
                      ],
                      "id": 5792,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 5789,
                        "name": "ERC20",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 545,
                        "src": "372:5:35"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "372:19:35"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5788,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5783,
                        "mutability": "mutable",
                        "name": "name",
                        "nameLocation": "307:4:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5801,
                        "src": "293:18:35",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5782,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "293:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5785,
                        "mutability": "mutable",
                        "name": "symbol",
                        "nameLocation": "335:6:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5801,
                        "src": "321:20:35",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5784,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "321:6:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5787,
                        "mutability": "mutable",
                        "name": "supply",
                        "nameLocation": "359:6:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5801,
                        "src": "351:14:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5786,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "351:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "283:88:35"
                  },
                  "returnParameters": {
                    "id": 5793,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "392:0:35"
                  },
                  "scope": 5854,
                  "src": "272:162:35",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5807,
                    "nodeType": "Block",
                    "src": "467:26:35",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5804,
                            "name": "deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5826,
                            "src": "477:7:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 5805,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "477:9:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5806,
                        "nodeType": "ExpressionStatement",
                        "src": "477:9:35"
                      }
                    ]
                  },
                  "id": 5808,
                  "implemented": true,
                  "kind": "receive",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5802,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "447:2:35"
                  },
                  "returnParameters": {
                    "id": 5803,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "467:0:35"
                  },
                  "scope": 5854,
                  "src": "440:53:35",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 5825,
                    "nodeType": "Block",
                    "src": "533:90:35",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 5812,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "549:3:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "549:10:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 5814,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "561:3:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5815,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "src": "561:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5811,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 405,
                            "src": "543:5:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 5816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "543:28:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5817,
                        "nodeType": "ExpressionStatement",
                        "src": "543:28:35"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 5819,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "594:3:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5820,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "594:10:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 5821,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "606:3:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5822,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "src": "606:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5818,
                            "name": "Deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5775,
                            "src": "586:7:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 5823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "586:30:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5824,
                        "nodeType": "EmitStatement",
                        "src": "581:35:35"
                      }
                    ]
                  },
                  "functionSelector": "d0e30db0",
                  "id": 5826,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nameLocation": "508:7:35",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5809,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "515:2:35"
                  },
                  "returnParameters": {
                    "id": 5810,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "533:0:35"
                  },
                  "scope": 5854,
                  "src": "499:124:35",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5852,
                    "nodeType": "Block",
                    "src": "667:124:35",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 5832,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "683:3:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5833,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "683:10:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5834,
                              "name": "wad",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5828,
                              "src": "695:3:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5831,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 477,
                            "src": "677:5:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 5835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "677:22:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5836,
                        "nodeType": "ExpressionStatement",
                        "src": "677:22:35"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5843,
                              "name": "wad",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5828,
                              "src": "738:3:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 5839,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "717:3:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 5840,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "717:10:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 5838,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "709:8:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_payable_$",
                                  "typeString": "type(address payable)"
                                },
                                "typeName": {
                                  "id": 5837,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "709:8:35",
                                  "stateMutability": "payable",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5841,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "709:19:35",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "id": 5842,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "src": "709:28:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 5844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "709:33:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5845,
                        "nodeType": "ExpressionStatement",
                        "src": "709:33:35"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 5847,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "768:3:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5848,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "768:10:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5849,
                              "name": "wad",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5828,
                              "src": "780:3:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5846,
                            "name": "Withdrawal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5781,
                            "src": "757:10:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 5850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "757:27:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5851,
                        "nodeType": "EmitStatement",
                        "src": "752:32:35"
                      }
                    ]
                  },
                  "functionSelector": "2e1a7d4d",
                  "id": 5853,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nameLocation": "638:8:35",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5829,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5828,
                        "mutability": "mutable",
                        "name": "wad",
                        "nameLocation": "655:3:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 5853,
                        "src": "647:11:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5827,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "647:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "646:13:35"
                  },
                  "returnParameters": {
                    "id": 5830,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "667:0:35"
                  },
                  "scope": 5854,
                  "src": "629:162:35",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 5855,
              "src": "128:665:35",
              "usedErrors": []
            }
          ],
          "src": "46:748:35"
        },
        "id": 35
      },
      "contracts/mocks/TridentMathConsumerMock.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/TridentMathConsumerMock.sol",
          "exportedSymbols": {
            "TridentMath": [
              3139
            ],
            "TridentMathConsumerMock": [
              5871
            ]
          },
          "id": 5872,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5856,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".2"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:23:36"
            },
            {
              "absolutePath": "contracts/libraries/TridentMath.sol",
              "file": "../libraries/TridentMath.sol",
              "id": 5857,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5872,
              "sourceUnit": 3140,
              "src": "71:38:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 5871,
              "linearizedBaseContracts": [
                5871
              ],
              "name": "TridentMathConsumerMock",
              "nameLocation": "120:23:36",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 5869,
                    "nodeType": "Block",
                    "src": "205:43:36",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5866,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5859,
                              "src": "239:1:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 5864,
                              "name": "TridentMath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3139,
                              "src": "222:11:36",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TridentMath_$3139_$",
                                "typeString": "type(library TridentMath)"
                              }
                            },
                            "id": 5865,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sqrt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3138,
                            "src": "222:16:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 5867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "222:19:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 5863,
                        "id": 5868,
                        "nodeType": "Return",
                        "src": "215:26:36"
                      }
                    ]
                  },
                  "functionSelector": "677342ce",
                  "id": 5870,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sqrt",
                  "nameLocation": "159:4:36",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5860,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5859,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "172:1:36",
                        "nodeType": "VariableDeclaration",
                        "scope": 5870,
                        "src": "164:9:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5858,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "164:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "163:11:36"
                  },
                  "returnParameters": {
                    "id": 5863,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5862,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5870,
                        "src": "196:7:36",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5861,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "196:7:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "195:9:36"
                  },
                  "scope": 5871,
                  "src": "150:98:36",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 5872,
              "src": "111:139:36",
              "usedErrors": []
            }
          ],
          "src": "46:205:36"
        },
        "id": 36
      },
      "contracts/mocks/WETH9.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/WETH9.sol",
          "exportedSymbols": {
            "Context": [
              670
            ],
            "ERC20": [
              545
            ],
            "ERC20Mock": [
              5854
            ],
            "IERC20": [
              623
            ],
            "IERC20Metadata": [
              648
            ],
            "WETH9": [
              5886
            ]
          },
          "id": 5887,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5873,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".2"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:23:37"
            },
            {
              "absolutePath": "contracts/mocks/ERC20Mock.sol",
              "file": "./ERC20Mock.sol",
              "id": 5874,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5887,
              "sourceUnit": 5855,
              "src": "71:25:37",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5875,
                    "name": "ERC20Mock",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5854,
                    "src": "116:9:37"
                  },
                  "id": 5876,
                  "nodeType": "InheritanceSpecifier",
                  "src": "116:9:37"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 5886,
              "linearizedBaseContracts": [
                5886,
                5854,
                545,
                648,
                623,
                670
              ],
              "name": "WETH9",
              "nameLocation": "107:5:37",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 5884,
                    "nodeType": "Block",
                    "src": "177:2:37",
                    "statements": []
                  },
                  "id": 5885,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "hexValue": "5745544839",
                          "id": 5879,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "156:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_1c3e8a2387da36e303be346ec5bfadc2d93e4122713077a81734cff5587b06da",
                            "typeString": "literal_string \"WETH9\""
                          },
                          "value": "WETH9"
                        },
                        {
                          "hexValue": "5745544839",
                          "id": 5880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "165:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_1c3e8a2387da36e303be346ec5bfadc2d93e4122713077a81734cff5587b06da",
                            "typeString": "literal_string \"WETH9\""
                          },
                          "value": "WETH9"
                        },
                        {
                          "hexValue": "30",
                          "id": 5881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "174:1:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "id": 5882,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 5878,
                        "name": "ERC20Mock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 5854,
                        "src": "146:9:37"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "146:30:37"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5877,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "143:2:37"
                  },
                  "returnParameters": {
                    "id": 5883,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "177:0:37"
                  },
                  "scope": 5886,
                  "src": "132:47:37",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 5887,
              "src": "98:83:37",
              "usedErrors": []
            }
          ],
          "src": "46:136:37"
        },
        "id": 37
      },
      "contracts/pool/ConstantProductPool.sol": {
        "ast": {
          "absolutePath": "contracts/pool/ConstantProductPool.sol",
          "exportedSymbols": {
            "ConstantProductPool": [
              7674
            ],
            "IBentoBoxMinimal": [
              2253
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "ITridentCallee": [
              2482
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "TridentERC20": [
              12279
            ],
            "TridentMath": [
              3139
            ]
          },
          "id": 7675,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5888,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:38"
            },
            {
              "absolutePath": "contracts/interfaces/IBentoBoxMinimal.sol",
              "file": "../interfaces/IBentoBoxMinimal.sol",
              "id": 5889,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7675,
              "sourceUnit": 2254,
              "src": "72:44:38",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IMasterDeployer.sol",
              "file": "../interfaces/IMasterDeployer.sol",
              "id": 5890,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7675,
              "sourceUnit": 2357,
              "src": "117:43:38",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IPool.sol",
              "file": "../interfaces/IPool.sol",
              "id": 5891,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7675,
              "sourceUnit": 2451,
              "src": "161:33:38",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ITridentCallee.sol",
              "file": "../interfaces/ITridentCallee.sol",
              "id": 5892,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7675,
              "sourceUnit": 2483,
              "src": "195:42:38",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/TridentMath.sol",
              "file": "../libraries/TridentMath.sol",
              "id": 5893,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7675,
              "sourceUnit": 3140,
              "src": "238:38:38",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pool/TridentERC20.sol",
              "file": "./TridentERC20.sol",
              "id": 5894,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7675,
              "sourceUnit": 12280,
              "src": "277:28:38",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5896,
                    "name": "IPool",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2450,
                    "src": "608:5:38"
                  },
                  "id": 5897,
                  "nodeType": "InheritanceSpecifier",
                  "src": "608:5:38"
                },
                {
                  "baseName": {
                    "id": 5898,
                    "name": "TridentERC20",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12279,
                    "src": "615:12:38"
                  },
                  "id": 5899,
                  "nodeType": "InheritanceSpecifier",
                  "src": "615:12:38"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 5895,
                "nodeType": "StructuredDocumentation",
                "src": "307:269:38",
                "text": "@notice Trident exchange pool template with constant product formula for swapping between an ERC-20 token pair.\n @dev The reserves are stored as bento shares.\n      The curve is applied to shares as well. This pool does not care about the underlying amounts."
              },
              "fullyImplemented": true,
              "id": 7674,
              "linearizedBaseContracts": [
                7674,
                12279,
                2450
              ],
              "name": "ConstantProductPool",
              "nameLocation": "585:19:38",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 5911,
                  "name": "Mint",
                  "nameLocation": "640:4:38",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5910,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5901,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "661:6:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 5911,
                        "src": "645:22:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5900,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "645:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5903,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount0",
                        "nameLocation": "677:7:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 5911,
                        "src": "669:15:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5902,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "669:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5905,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount1",
                        "nameLocation": "694:7:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 5911,
                        "src": "686:15:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5904,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "686:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5907,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "719:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 5911,
                        "src": "703:25:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5906,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "703:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5909,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "738:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 5911,
                        "src": "730:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5908,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "730:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "644:104:38"
                  },
                  "src": "634:115:38"
                },
                {
                  "anonymous": false,
                  "id": 5923,
                  "name": "Burn",
                  "nameLocation": "760:4:38",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5922,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5913,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "781:6:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 5923,
                        "src": "765:22:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5912,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "765:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5915,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount0",
                        "nameLocation": "797:7:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 5923,
                        "src": "789:15:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5914,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "789:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5917,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount1",
                        "nameLocation": "814:7:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 5923,
                        "src": "806:15:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5916,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "806:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5919,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "839:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 5923,
                        "src": "823:25:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5918,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "823:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5921,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "858:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 5923,
                        "src": "850:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5920,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "850:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "764:104:38"
                  },
                  "src": "754:115:38"
                },
                {
                  "anonymous": false,
                  "id": 5929,
                  "name": "Sync",
                  "nameLocation": "880:4:38",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 5928,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5925,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "reserve0",
                        "nameLocation": "893:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 5929,
                        "src": "885:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5924,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "885:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5927,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "reserve1",
                        "nameLocation": "911:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 5929,
                        "src": "903:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5926,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "903:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "884:36:38"
                  },
                  "src": "874:47:38"
                },
                {
                  "constant": true,
                  "id": 5932,
                  "mutability": "constant",
                  "name": "MINIMUM_LIQUIDITY",
                  "nameLocation": "953:17:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7674,
                  "src": "927:50:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5930,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "927:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "31303030",
                    "id": 5931,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "973:4:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000_by_1",
                      "typeString": "int_const 1000"
                    },
                    "value": "1000"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 5935,
                  "mutability": "constant",
                  "name": "PRECISION",
                  "nameLocation": "1008:9:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7674,
                  "src": "984:39:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 5933,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "984:5:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "313132",
                    "id": 5934,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1020:3:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_112_by_1",
                      "typeString": "int_const 112"
                    },
                    "value": "112"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 5938,
                  "mutability": "constant",
                  "name": "MAX_FEE",
                  "nameLocation": "1055:7:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7674,
                  "src": "1029:41:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5936,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1029:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3130303030",
                    "id": 5937,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1065:5:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_10000_by_1",
                      "typeString": "int_const 10000"
                    },
                    "value": "10000"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 5941,
                  "mutability": "constant",
                  "name": "MAX_FEE_SQUARE",
                  "nameLocation": "1116:14:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7674,
                  "src": "1090:52:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5939,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1090:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "313030303030303030",
                    "id": 5940,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1133:9:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_100000000_by_1",
                      "typeString": "int_const 100000000"
                    },
                    "value": "100000000"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "54cf2aeb",
                  "id": 5943,
                  "mutability": "immutable",
                  "name": "swapFee",
                  "nameLocation": "1173:7:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7674,
                  "src": "1148:32:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5942,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1148:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 5945,
                  "mutability": "immutable",
                  "name": "MAX_FEE_MINUS_SWAP_FEE",
                  "nameLocation": "1213:22:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7674,
                  "src": "1186:49:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5944,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1186:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "0c0a0cd2",
                  "id": 5947,
                  "mutability": "immutable",
                  "name": "barFeeTo",
                  "nameLocation": "1267:8:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7674,
                  "src": "1242:33:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5946,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1242:7:38",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "4da31827",
                  "id": 5950,
                  "mutability": "immutable",
                  "name": "bento",
                  "nameLocation": "1315:5:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7674,
                  "src": "1281:39:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                    "typeString": "contract IBentoBoxMinimal"
                  },
                  "typeName": {
                    "id": 5949,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5948,
                      "name": "IBentoBoxMinimal",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2253,
                      "src": "1281:16:38"
                    },
                    "referencedDeclaration": 2253,
                    "src": "1281:16:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                      "typeString": "contract IBentoBoxMinimal"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "cf58879a",
                  "id": 5953,
                  "mutability": "immutable",
                  "name": "masterDeployer",
                  "nameLocation": "1359:14:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7674,
                  "src": "1326:47:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                    "typeString": "contract IMasterDeployer"
                  },
                  "typeName": {
                    "id": 5952,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 5951,
                      "name": "IMasterDeployer",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2356,
                      "src": "1326:15:38"
                    },
                    "referencedDeclaration": 2356,
                    "src": "1326:15:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                      "typeString": "contract IMasterDeployer"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "0dfe1681",
                  "id": 5955,
                  "mutability": "immutable",
                  "name": "token0",
                  "nameLocation": "1404:6:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7674,
                  "src": "1379:31:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5954,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1379:7:38",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "d21220a7",
                  "id": 5957,
                  "mutability": "immutable",
                  "name": "token1",
                  "nameLocation": "1441:6:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7674,
                  "src": "1416:31:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5956,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1416:7:38",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "c14ad802",
                  "id": 5959,
                  "mutability": "mutable",
                  "name": "barFee",
                  "nameLocation": "1469:6:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7674,
                  "src": "1454:21:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5958,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1454:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "5909c0d5",
                  "id": 5961,
                  "mutability": "mutable",
                  "name": "price0CumulativeLast",
                  "nameLocation": "1496:20:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7674,
                  "src": "1481:35:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5960,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1481:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "5a3d5493",
                  "id": 5963,
                  "mutability": "mutable",
                  "name": "price1CumulativeLast",
                  "nameLocation": "1537:20:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7674,
                  "src": "1522:35:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5962,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1522:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "7464fc3d",
                  "id": 5965,
                  "mutability": "mutable",
                  "name": "kLast",
                  "nameLocation": "1578:5:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7674,
                  "src": "1563:20:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5964,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1563:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 5967,
                  "mutability": "mutable",
                  "name": "reserve0",
                  "nameLocation": "1607:8:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7674,
                  "src": "1590:25:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 5966,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "1590:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5969,
                  "mutability": "mutable",
                  "name": "reserve1",
                  "nameLocation": "1638:8:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7674,
                  "src": "1621:25:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 5968,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "1621:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5971,
                  "mutability": "mutable",
                  "name": "blockTimestampLast",
                  "nameLocation": "1668:18:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7674,
                  "src": "1652:34:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 5970,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1652:6:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2408
                  ],
                  "constant": true,
                  "functionSelector": "a69840a8",
                  "id": 5975,
                  "mutability": "constant",
                  "name": "poolIdentifier",
                  "nameLocation": "1726:14:38",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 5973,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1717:8:38"
                  },
                  "scope": 7674,
                  "src": "1693:75:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5972,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1693:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "54726964656e743a436f6e7374616e7450726f64756374",
                    "id": 5974,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1743:25:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_794491f8e7fb72807ecb4164b28419ad8787db46c387d918b738aa341bb1f595",
                      "typeString": "literal_string \"Trident:ConstantProduct\""
                    },
                    "value": "Trident:ConstantProduct"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 5977,
                  "mutability": "mutable",
                  "name": "unlocked",
                  "nameLocation": "1792:8:38",
                  "nodeType": "VariableDeclaration",
                  "scope": 7674,
                  "src": "1775:25:38",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5976,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1775:7:38",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5995,
                    "nodeType": "Block",
                    "src": "1822:104:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5982,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5980,
                                "name": "unlocked",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5977,
                                "src": "1840:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 5981,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1852:1:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "1840:13:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4c4f434b4544",
                              "id": 5983,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1855:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b",
                                "typeString": "literal_string \"LOCKED\""
                              },
                              "value": "LOCKED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b",
                                "typeString": "literal_string \"LOCKED\""
                              }
                            ],
                            "id": 5979,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1832:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1832:32:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5985,
                        "nodeType": "ExpressionStatement",
                        "src": "1832:32:38"
                      },
                      {
                        "expression": {
                          "id": 5988,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5986,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5977,
                            "src": "1874:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "32",
                            "id": 5987,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1885:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "1874:12:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5989,
                        "nodeType": "ExpressionStatement",
                        "src": "1874:12:38"
                      },
                      {
                        "id": 5990,
                        "nodeType": "PlaceholderStatement",
                        "src": "1896:1:38"
                      },
                      {
                        "expression": {
                          "id": 5993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5991,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5977,
                            "src": "1907:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 5992,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1918:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1907:12:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5994,
                        "nodeType": "ExpressionStatement",
                        "src": "1907:12:38"
                      }
                    ]
                  },
                  "id": 5996,
                  "name": "lock",
                  "nameLocation": "1815:4:38",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 5978,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1819:2:38"
                  },
                  "src": "1806:120:38",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6134,
                    "nodeType": "Block",
                    "src": "1995:1159:38",
                    "statements": [
                      {
                        "assignments": [
                          6004,
                          6006,
                          6008,
                          6010
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6004,
                            "mutability": "mutable",
                            "name": "_token0",
                            "nameLocation": "2014:7:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6134,
                            "src": "2006:15:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 6003,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2006:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6006,
                            "mutability": "mutable",
                            "name": "_token1",
                            "nameLocation": "2031:7:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6134,
                            "src": "2023:15:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 6005,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2023:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6008,
                            "mutability": "mutable",
                            "name": "_swapFee",
                            "nameLocation": "2048:8:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6134,
                            "src": "2040:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6007,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2040:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6010,
                            "mutability": "mutable",
                            "name": "_twapSupport",
                            "nameLocation": "2063:12:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6134,
                            "src": "2058:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 6009,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2058:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6024,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6013,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5998,
                              "src": "2103:11:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 6015,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2129:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6014,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2129:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 6017,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2138:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6016,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2138:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 6019,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2147:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 6018,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2147:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 6021,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2156:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 6020,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2156:4:38",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 6022,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2128:33:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint256),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint256),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 6011,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "2079:3:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 6012,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "2079:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 6023,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2079:92:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_uint256_$_t_bool_$",
                            "typeString": "tuple(address payable,address payable,uint256,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2005:166:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 6031,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6026,
                                "name": "_token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6004,
                                "src": "2250:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 6029,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2269:1:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 6028,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2261:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6027,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2261:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6030,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2261:10:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2250:21:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5a45524f5f41444452455353",
                              "id": 6032,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2273:14:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af",
                                "typeString": "literal_string \"ZERO_ADDRESS\""
                              },
                              "value": "ZERO_ADDRESS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af",
                                "typeString": "literal_string \"ZERO_ADDRESS\""
                              }
                            ],
                            "id": 6025,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2242:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2242:46:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6034,
                        "nodeType": "ExpressionStatement",
                        "src": "2242:46:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 6038,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6036,
                                "name": "_token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6004,
                                "src": "2306:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 6037,
                                "name": "_token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6006,
                                "src": "2317:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2306:18:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4944454e544943414c5f414444524553534553",
                              "id": 6039,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2326:21:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6",
                                "typeString": "literal_string \"IDENTICAL_ADDRESSES\""
                              },
                              "value": "IDENTICAL_ADDRESSES"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6",
                                "typeString": "literal_string \"IDENTICAL_ADDRESSES\""
                              }
                            ],
                            "id": 6035,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2298:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2298:50:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6041,
                        "nodeType": "ExpressionStatement",
                        "src": "2298:50:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 6048,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6043,
                                "name": "_token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6004,
                                "src": "2366:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 6046,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "2385:4:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                      "typeString": "contract ConstantProductPool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                      "typeString": "contract ConstantProductPool"
                                    }
                                  ],
                                  "id": 6045,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2377:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6044,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2377:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6047,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2377:13:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2366:24:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f544f4b454e",
                              "id": 6049,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2392:15:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_436b5627177a9781148596ddddd93f72d53dd82575a018216d5aaf2a8219ec9e",
                                "typeString": "literal_string \"INVALID_TOKEN\""
                              },
                              "value": "INVALID_TOKEN"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_436b5627177a9781148596ddddd93f72d53dd82575a018216d5aaf2a8219ec9e",
                                "typeString": "literal_string \"INVALID_TOKEN\""
                              }
                            ],
                            "id": 6042,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2358:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6050,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2358:50:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6051,
                        "nodeType": "ExpressionStatement",
                        "src": "2358:50:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 6058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6053,
                                "name": "_token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6006,
                                "src": "2426:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 6056,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "2445:4:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                      "typeString": "contract ConstantProductPool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                      "typeString": "contract ConstantProductPool"
                                    }
                                  ],
                                  "id": 6055,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2437:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6054,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2437:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6057,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2437:13:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2426:24:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f544f4b454e",
                              "id": 6059,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2452:15:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_436b5627177a9781148596ddddd93f72d53dd82575a018216d5aaf2a8219ec9e",
                                "typeString": "literal_string \"INVALID_TOKEN\""
                              },
                              "value": "INVALID_TOKEN"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_436b5627177a9781148596ddddd93f72d53dd82575a018216d5aaf2a8219ec9e",
                                "typeString": "literal_string \"INVALID_TOKEN\""
                              }
                            ],
                            "id": 6052,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2418:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2418:50:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6061,
                        "nodeType": "ExpressionStatement",
                        "src": "2418:50:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6065,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6063,
                                "name": "_swapFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6008,
                                "src": "2486:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 6064,
                                "name": "MAX_FEE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5938,
                                "src": "2498:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2486:19:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f535741505f464545",
                              "id": 6066,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2507:18:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1",
                                "typeString": "literal_string \"INVALID_SWAP_FEE\""
                              },
                              "value": "INVALID_SWAP_FEE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1",
                                "typeString": "literal_string \"INVALID_SWAP_FEE\""
                              }
                            ],
                            "id": 6062,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2478:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6067,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2478:48:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6068,
                        "nodeType": "ExpressionStatement",
                        "src": "2478:48:38"
                      },
                      {
                        "expression": {
                          "id": 6071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6069,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5955,
                            "src": "2537:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 6070,
                            "name": "_token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6004,
                            "src": "2546:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2537:16:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6072,
                        "nodeType": "ExpressionStatement",
                        "src": "2537:16:38"
                      },
                      {
                        "expression": {
                          "id": 6075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6073,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5957,
                            "src": "2563:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 6074,
                            "name": "_token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6006,
                            "src": "2572:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2563:16:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6076,
                        "nodeType": "ExpressionStatement",
                        "src": "2563:16:38"
                      },
                      {
                        "expression": {
                          "id": 6079,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6077,
                            "name": "swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5943,
                            "src": "2589:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 6078,
                            "name": "_swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6008,
                            "src": "2599:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2589:18:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6080,
                        "nodeType": "ExpressionStatement",
                        "src": "2589:18:38"
                      },
                      {
                        "id": 6087,
                        "nodeType": "UncheckedBlock",
                        "src": "2717:78:38",
                        "statements": [
                          {
                            "expression": {
                              "id": 6085,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6081,
                                "name": "MAX_FEE_MINUS_SWAP_FEE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5945,
                                "src": "2741:22:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6084,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6082,
                                  "name": "MAX_FEE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5938,
                                  "src": "2766:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 6083,
                                  "name": "_swapFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6008,
                                  "src": "2776:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2766:18:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2741:43:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6086,
                            "nodeType": "ExpressionStatement",
                            "src": "2741:43:38"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 6094,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6088,
                            "name": "barFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5959,
                            "src": "2804:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 6090,
                                    "name": "_masterDeployer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6000,
                                    "src": "2829:15:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 6089,
                                  "name": "IMasterDeployer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2356,
                                  "src": "2813:15:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                    "typeString": "type(contract IMasterDeployer)"
                                  }
                                },
                                "id": 6091,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2813:32:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                  "typeString": "contract IMasterDeployer"
                                }
                              },
                              "id": 6092,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "barFee",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2324,
                              "src": "2813:39:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 6093,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2813:41:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2804:50:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6095,
                        "nodeType": "ExpressionStatement",
                        "src": "2804:50:38"
                      },
                      {
                        "expression": {
                          "id": 6102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6096,
                            "name": "barFeeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5947,
                            "src": "2864:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 6098,
                                    "name": "_masterDeployer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6000,
                                    "src": "2891:15:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 6097,
                                  "name": "IMasterDeployer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2356,
                                  "src": "2875:15:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                    "typeString": "type(contract IMasterDeployer)"
                                  }
                                },
                                "id": 6099,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2875:32:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                  "typeString": "contract IMasterDeployer"
                                }
                              },
                              "id": 6100,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "barFeeTo",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2329,
                              "src": "2875:41:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                "typeString": "function () view external returns (address)"
                              }
                            },
                            "id": 6101,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2875:43:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2864:54:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6103,
                        "nodeType": "ExpressionStatement",
                        "src": "2864:54:38"
                      },
                      {
                        "expression": {
                          "id": 6112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6104,
                            "name": "bento",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5950,
                            "src": "2928:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 6107,
                                        "name": "_masterDeployer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6000,
                                        "src": "2969:15:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 6106,
                                      "name": "IMasterDeployer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2356,
                                      "src": "2953:15:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                        "typeString": "type(contract IMasterDeployer)"
                                      }
                                    },
                                    "id": 6108,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2953:32:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                      "typeString": "contract IMasterDeployer"
                                    }
                                  },
                                  "id": 6109,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "bento",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2334,
                                  "src": "2953:38:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 6110,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2953:40:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 6105,
                              "name": "IBentoBoxMinimal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2253,
                              "src": "2936:16:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IBentoBoxMinimal_$2253_$",
                                "typeString": "type(contract IBentoBoxMinimal)"
                              }
                            },
                            "id": 6111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2936:58:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "src": "2928:66:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        "id": 6113,
                        "nodeType": "ExpressionStatement",
                        "src": "2928:66:38"
                      },
                      {
                        "expression": {
                          "id": 6118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6114,
                            "name": "masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5953,
                            "src": "3004:14:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                              "typeString": "contract IMasterDeployer"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6116,
                                "name": "_masterDeployer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6000,
                                "src": "3037:15:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 6115,
                              "name": "IMasterDeployer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2356,
                              "src": "3021:15:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                "typeString": "type(contract IMasterDeployer)"
                              }
                            },
                            "id": 6117,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3021:32:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                              "typeString": "contract IMasterDeployer"
                            }
                          },
                          "src": "3004:49:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                            "typeString": "contract IMasterDeployer"
                          }
                        },
                        "id": 6119,
                        "nodeType": "ExpressionStatement",
                        "src": "3004:49:38"
                      },
                      {
                        "expression": {
                          "id": 6122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6120,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5977,
                            "src": "3063:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 6121,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3074:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3063:12:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6123,
                        "nodeType": "ExpressionStatement",
                        "src": "3063:12:38"
                      },
                      {
                        "condition": {
                          "id": 6124,
                          "name": "_twapSupport",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6010,
                          "src": "3089:12:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6133,
                        "nodeType": "IfStatement",
                        "src": "3085:62:38",
                        "trueBody": {
                          "expression": {
                            "id": 6131,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 6125,
                              "name": "blockTimestampLast",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5971,
                              "src": "3103:18:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 6128,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "3131:5:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 6129,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "src": "3131:15:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 6127,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3124:6:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint32_$",
                                  "typeString": "type(uint32)"
                                },
                                "typeName": {
                                  "id": 6126,
                                  "name": "uint32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3124:6:38",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3124:23:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "src": "3103:44:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "id": 6132,
                          "nodeType": "ExpressionStatement",
                          "src": "3103:44:38"
                        }
                      }
                    ]
                  },
                  "id": 6135,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6001,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5998,
                        "mutability": "mutable",
                        "name": "_deployData",
                        "nameLocation": "1957:11:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6135,
                        "src": "1944:24:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5997,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1944:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6000,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "1978:15:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6135,
                        "src": "1970:23:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5999,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1970:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1943:51:38"
                  },
                  "returnParameters": {
                    "id": 6002,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1995:0:38"
                  },
                  "scope": 7674,
                  "src": "1932:1222:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2384
                  ],
                  "body": {
                    "id": 6314,
                    "nodeType": "Block",
                    "src": "3437:1363:38",
                    "statements": [
                      {
                        "assignments": [
                          6147
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6147,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "3455:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6314,
                            "src": "3447:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 6146,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3447:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6155,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6150,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6138,
                              "src": "3478:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 6152,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3485:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6151,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3485:7:38",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 6153,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3484:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              }
                            ],
                            "expression": {
                              "id": 6148,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "3467:3:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 6149,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "3467:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 6154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3467:27:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3447:47:38"
                      },
                      {
                        "assignments": [
                          6157,
                          6159,
                          6161
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6157,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "3513:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6314,
                            "src": "3505:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 6156,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "3505:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6159,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "3532:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6314,
                            "src": "3524:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 6158,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "3524:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6161,
                            "mutability": "mutable",
                            "name": "_blockTimestampLast",
                            "nameLocation": "3550:19:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6314,
                            "src": "3543:26:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 6160,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3543:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6164,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6162,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7024,
                            "src": "3573:12:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                              "typeString": "function () view returns (uint112,uint112,uint32)"
                            }
                          },
                          "id": 6163,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3573:14:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "tuple(uint112,uint112,uint32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3504:83:38"
                      },
                      {
                        "assignments": [
                          6166,
                          6168
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6166,
                            "mutability": "mutable",
                            "name": "balance0",
                            "nameLocation": "3606:8:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6314,
                            "src": "3598:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6165,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3598:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6168,
                            "mutability": "mutable",
                            "name": "balance1",
                            "nameLocation": "3624:8:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6314,
                            "src": "3616:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6167,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3616:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6171,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6169,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7054,
                            "src": "3636:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 6170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3636:10:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3597:49:38"
                      },
                      {
                        "assignments": [
                          6173
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6173,
                            "mutability": "mutable",
                            "name": "computed",
                            "nameLocation": "3665:8:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6314,
                            "src": "3657:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6172,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3657:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6180,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6178,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6176,
                                "name": "balance0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6166,
                                "src": "3693:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 6177,
                                "name": "balance1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6168,
                                "src": "3704:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3693:19:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 6174,
                              "name": "TridentMath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3139,
                              "src": "3676:11:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TridentMath_$3139_$",
                                "typeString": "type(library TridentMath)"
                              }
                            },
                            "id": 6175,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sqrt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3138,
                            "src": "3676:16:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 6179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3676:37:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3657:56:38"
                      },
                      {
                        "assignments": [
                          6182
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6182,
                            "mutability": "mutable",
                            "name": "amount0",
                            "nameLocation": "3731:7:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6314,
                            "src": "3723:15:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6181,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3723:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6186,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6183,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6166,
                            "src": "3741:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 6184,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6157,
                            "src": "3752:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "3741:20:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3723:38:38"
                      },
                      {
                        "assignments": [
                          6188
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6188,
                            "mutability": "mutable",
                            "name": "amount1",
                            "nameLocation": "3779:7:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6314,
                            "src": "3771:15:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6187,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3771:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6192,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6189,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6168,
                            "src": "3789:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 6190,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6159,
                            "src": "3800:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "3789:20:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3771:38:38"
                      },
                      {
                        "assignments": [
                          6194,
                          6196
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6194,
                            "mutability": "mutable",
                            "name": "fee0",
                            "nameLocation": "3829:4:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6314,
                            "src": "3821:12:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6193,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3821:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6196,
                            "mutability": "mutable",
                            "name": "fee1",
                            "nameLocation": "3843:4:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6314,
                            "src": "3835:12:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6195,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3835:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6203,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6198,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6182,
                              "src": "3870:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6199,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6188,
                              "src": "3879:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6200,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6157,
                              "src": "3888:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 6201,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6159,
                              "src": "3899:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            ],
                            "id": 6197,
                            "name": "_nonOptimalMintFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7471,
                            "src": "3851:18:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256,uint256) view returns (uint256,uint256)"
                            }
                          },
                          "id": 6202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3851:58:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3820:89:38"
                      },
                      {
                        "expression": {
                          "id": 6209,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6204,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6157,
                            "src": "3919:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6207,
                                "name": "fee0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6194,
                                "src": "3940:4:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 6206,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3932:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint112_$",
                                "typeString": "type(uint112)"
                              },
                              "typeName": {
                                "id": 6205,
                                "name": "uint112",
                                "nodeType": "ElementaryTypeName",
                                "src": "3932:7:38",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6208,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3932:13:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "3919:26:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "id": 6210,
                        "nodeType": "ExpressionStatement",
                        "src": "3919:26:38"
                      },
                      {
                        "expression": {
                          "id": 6216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6211,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6159,
                            "src": "3955:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6214,
                                "name": "fee1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6196,
                                "src": "3976:4:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 6213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3968:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint112_$",
                                "typeString": "type(uint112)"
                              },
                              "typeName": {
                                "id": 6212,
                                "name": "uint112",
                                "nodeType": "ElementaryTypeName",
                                "src": "3968:7:38",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3968:13:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "3955:26:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "id": 6217,
                        "nodeType": "ExpressionStatement",
                        "src": "3955:26:38"
                      },
                      {
                        "assignments": [
                          6219,
                          6221
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6219,
                            "mutability": "mutable",
                            "name": "_totalSupply",
                            "nameLocation": "4001:12:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6314,
                            "src": "3993:20:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6218,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3993:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6221,
                            "mutability": "mutable",
                            "name": "k",
                            "nameLocation": "4023:1:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6314,
                            "src": "4015:9:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6220,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4015:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6226,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6223,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6157,
                              "src": "4037:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 6224,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6159,
                              "src": "4048:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            ],
                            "id": 6222,
                            "name": "_mintFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7284,
                            "src": "4028:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint112_$_t_uint112_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint112,uint112) returns (uint256,uint256)"
                            }
                          },
                          "id": 6225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4028:30:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3992:66:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6227,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6219,
                            "src": "4073:12:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 6228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4089:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4073:17:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 6275,
                          "nodeType": "Block",
                          "src": "4281:178:38",
                          "statements": [
                            {
                              "assignments": [
                                6257
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6257,
                                  "mutability": "mutable",
                                  "name": "kIncrease",
                                  "nameLocation": "4303:9:38",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6275,
                                  "src": "4295:17:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6256,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4295:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6258,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4295:17:38"
                            },
                            {
                              "id": 6265,
                              "nodeType": "UncheckedBlock",
                              "src": "4326:67:38",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 6263,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 6259,
                                      "name": "kIncrease",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6257,
                                      "src": "4354:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6262,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6260,
                                        "name": "computed",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6173,
                                        "src": "4366:8:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 6261,
                                        "name": "k",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6221,
                                        "src": "4377:1:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4366:12:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4354:24:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6264,
                                  "nodeType": "ExpressionStatement",
                                  "src": "4354:24:38"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "id": 6273,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 6266,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6144,
                                  "src": "4406:9:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6272,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6269,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 6267,
                                          "name": "kIncrease",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6257,
                                          "src": "4419:9:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 6268,
                                          "name": "_totalSupply",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6219,
                                          "src": "4431:12:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "4419:24:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 6270,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "4418:26:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 6271,
                                    "name": "k",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6221,
                                    "src": "4447:1:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4418:30:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4406:42:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6274,
                              "nodeType": "ExpressionStatement",
                              "src": "4406:42:38"
                            }
                          ]
                        },
                        "id": 6276,
                        "nodeType": "IfStatement",
                        "src": "4069:390:38",
                        "trueBody": {
                          "id": 6255,
                          "nodeType": "Block",
                          "src": "4092:183:38",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 6237,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6233,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6231,
                                        "name": "amount0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6182,
                                        "src": "4114:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "hexValue": "30",
                                        "id": 6232,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4124:1:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "4114:11:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6236,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6234,
                                        "name": "amount1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6188,
                                        "src": "4129:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "hexValue": "30",
                                        "id": 6235,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4139:1:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "4129:11:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "4114:26:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e56414c49445f414d4f554e5453",
                                    "id": 6238,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4142:17:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_7e6e8c13ba2f1d0f0273f8e22d59ed43b72e50c3f6c54bb315c74036cac1301c",
                                      "typeString": "literal_string \"INVALID_AMOUNTS\""
                                    },
                                    "value": "INVALID_AMOUNTS"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_7e6e8c13ba2f1d0f0273f8e22d59ed43b72e50c3f6c54bb315c74036cac1301c",
                                      "typeString": "literal_string \"INVALID_AMOUNTS\""
                                    }
                                  ],
                                  "id": 6230,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "4106:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 6239,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4106:54:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6240,
                              "nodeType": "ExpressionStatement",
                              "src": "4106:54:38"
                            },
                            {
                              "expression": {
                                "id": 6245,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 6241,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6144,
                                  "src": "4174:9:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6244,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6242,
                                    "name": "computed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6173,
                                    "src": "4186:8:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 6243,
                                    "name": "MINIMUM_LIQUIDITY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5932,
                                    "src": "4197:17:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4186:28:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4174:40:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6246,
                              "nodeType": "ExpressionStatement",
                              "src": "4174:40:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 6250,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4242:1:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 6249,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4234:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 6248,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4234:7:38",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 6251,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4234:10:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 6252,
                                    "name": "MINIMUM_LIQUIDITY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5932,
                                    "src": "4246:17:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 6247,
                                  "name": "_mint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12250,
                                  "src": "4228:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 6253,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4228:36:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6254,
                              "nodeType": "ExpressionStatement",
                              "src": "4228:36:38"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6280,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6278,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6144,
                                "src": "4476:9:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 6279,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4489:1:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4476:14:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e53554646494349454e545f4c49515549444954595f4d494e544544",
                              "id": 6281,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4492:31:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c",
                                "typeString": "literal_string \"INSUFFICIENT_LIQUIDITY_MINTED\""
                              },
                              "value": "INSUFFICIENT_LIQUIDITY_MINTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c",
                                "typeString": "literal_string \"INSUFFICIENT_LIQUIDITY_MINTED\""
                              }
                            ],
                            "id": 6277,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4468:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4468:56:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6283,
                        "nodeType": "ExpressionStatement",
                        "src": "4468:56:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6285,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6147,
                              "src": "4540:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6286,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6144,
                              "src": "4551:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6284,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12250,
                            "src": "4534:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 6287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4534:27:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6288,
                        "nodeType": "ExpressionStatement",
                        "src": "4534:27:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6290,
                              "name": "balance0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6166,
                              "src": "4579:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6291,
                              "name": "balance1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6168,
                              "src": "4589:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6292,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6157,
                              "src": "4599:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 6293,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6159,
                              "src": "4610:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 6294,
                              "name": "_blockTimestampLast",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6161,
                              "src": "4621:19:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 6289,
                            "name": "_update",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7194,
                            "src": "4571:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$_t_uint32_$returns$__$",
                              "typeString": "function (uint256,uint256,uint112,uint112,uint32)"
                            }
                          },
                          "id": 6295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4571:70:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6296,
                        "nodeType": "ExpressionStatement",
                        "src": "4571:70:38"
                      },
                      {
                        "expression": {
                          "id": 6299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6297,
                            "name": "kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5965,
                            "src": "4651:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 6298,
                            "name": "computed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6173,
                            "src": "4659:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4651:16:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6300,
                        "nodeType": "ExpressionStatement",
                        "src": "4651:16:38"
                      },
                      {
                        "assignments": [
                          6302
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6302,
                            "mutability": "mutable",
                            "name": "liquidityForEvent",
                            "nameLocation": "4685:17:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6314,
                            "src": "4677:25:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6301,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4677:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6304,
                        "initialValue": {
                          "id": 6303,
                          "name": "liquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6144,
                          "src": "4705:9:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4677:37:38"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6306,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4734:3:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "4734:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6308,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6182,
                              "src": "4746:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6309,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6188,
                              "src": "4755:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6310,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6147,
                              "src": "4764:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6311,
                              "name": "liquidityForEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6302,
                              "src": "4775:17:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6305,
                            "name": "Mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5911,
                            "src": "4729:4:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address,uint256)"
                            }
                          },
                          "id": 6312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4729:64:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6313,
                        "nodeType": "EmitStatement",
                        "src": "4724:69:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6136,
                    "nodeType": "StructuredDocumentation",
                    "src": "3160:188:38",
                    "text": "@dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\n The router must ensure that sufficient LP tokens are minted by using the return value."
                  },
                  "functionSelector": "7ba0e2e7",
                  "id": 6315,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 6142,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 6141,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 5996,
                        "src": "3404:4:38"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3404:4:38"
                    }
                  ],
                  "name": "mint",
                  "nameLocation": "3362:4:38",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6140,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3395:8:38"
                  },
                  "parameters": {
                    "id": 6139,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6138,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3382:4:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6315,
                        "src": "3367:19:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6137,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3367:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3366:21:38"
                  },
                  "returnParameters": {
                    "id": 6145,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6144,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "3426:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6315,
                        "src": "3418:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6143,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3418:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3417:19:38"
                  },
                  "scope": 7674,
                  "src": "3353:1447:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2394
                  ],
                  "body": {
                    "id": 6482,
                    "nodeType": "Block",
                    "src": "5036:1277:38",
                    "statements": [
                      {
                        "assignments": [
                          6329,
                          6331
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6329,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "5055:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6482,
                            "src": "5047:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 6328,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5047:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6331,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "5071:11:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6482,
                            "src": "5066:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 6330,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5066:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6341,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6334,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6318,
                              "src": "5097:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 6336,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5104:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6335,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5104:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 6338,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5113:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 6337,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5113:4:38",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 6339,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5103:15:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 6332,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "5086:3:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 6333,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "5086:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 6340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5086:33:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_bool_$",
                            "typeString": "tuple(address payable,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5046:73:38"
                      },
                      {
                        "assignments": [
                          6343,
                          6345,
                          6347
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6343,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "5138:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6482,
                            "src": "5130:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 6342,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "5130:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6345,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "5157:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6482,
                            "src": "5149:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 6344,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "5149:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6347,
                            "mutability": "mutable",
                            "name": "_blockTimestampLast",
                            "nameLocation": "5175:19:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6482,
                            "src": "5168:26:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 6346,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5168:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6350,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6348,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7024,
                            "src": "5198:12:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                              "typeString": "function () view returns (uint112,uint112,uint32)"
                            }
                          },
                          "id": 6349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5198:14:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "tuple(uint112,uint112,uint32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5129:83:38"
                      },
                      {
                        "assignments": [
                          6352,
                          6354
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6352,
                            "mutability": "mutable",
                            "name": "balance0",
                            "nameLocation": "5231:8:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6482,
                            "src": "5223:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6351,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5223:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6354,
                            "mutability": "mutable",
                            "name": "balance1",
                            "nameLocation": "5249:8:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6482,
                            "src": "5241:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6353,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5241:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6357,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6355,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7054,
                            "src": "5261:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 6356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5261:10:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5222:49:38"
                      },
                      {
                        "assignments": [
                          6359
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6359,
                            "mutability": "mutable",
                            "name": "liquidity",
                            "nameLocation": "5289:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6482,
                            "src": "5281:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6358,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5281:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6366,
                        "initialValue": {
                          "baseExpression": {
                            "id": 6360,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11922,
                            "src": "5301:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 6365,
                          "indexExpression": {
                            "arguments": [
                              {
                                "id": 6363,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "5319:4:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                  "typeString": "contract ConstantProductPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                  "typeString": "contract ConstantProductPool"
                                }
                              ],
                              "id": 6362,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5311:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 6361,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5311:7:38",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6364,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5311:13:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5301:24:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5281:44:38"
                      },
                      {
                        "assignments": [
                          6368,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6368,
                            "mutability": "mutable",
                            "name": "_totalSupply",
                            "nameLocation": "5345:12:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6482,
                            "src": "5337:20:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6367,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5337:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 6373,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6370,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6343,
                              "src": "5372:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 6371,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6345,
                              "src": "5383:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            ],
                            "id": 6369,
                            "name": "_mintFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7284,
                            "src": "5363:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint112_$_t_uint112_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint112,uint112) returns (uint256,uint256)"
                            }
                          },
                          "id": 6372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5363:30:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5336:57:38"
                      },
                      {
                        "assignments": [
                          6375
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6375,
                            "mutability": "mutable",
                            "name": "amount0",
                            "nameLocation": "5412:7:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6482,
                            "src": "5404:15:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6374,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5404:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6382,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6376,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6359,
                                  "src": "5423:9:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 6377,
                                  "name": "balance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6352,
                                  "src": "5435:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5423:20:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 6379,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5422:22:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 6380,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6368,
                            "src": "5447:12:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5422:37:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5404:55:38"
                      },
                      {
                        "assignments": [
                          6384
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6384,
                            "mutability": "mutable",
                            "name": "amount1",
                            "nameLocation": "5477:7:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6482,
                            "src": "5469:15:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6383,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5469:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6391,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6387,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6385,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6359,
                                  "src": "5488:9:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 6386,
                                  "name": "balance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6354,
                                  "src": "5500:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5488:20:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 6388,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5487:22:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 6389,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6368,
                            "src": "5512:12:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5487:37:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5469:55:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 6395,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "5549:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                    "typeString": "contract ConstantProductPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                    "typeString": "contract ConstantProductPool"
                                  }
                                ],
                                "id": 6394,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5541:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 6393,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5541:7:38",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6396,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5541:13:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6397,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6359,
                              "src": "5556:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6392,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12278,
                            "src": "5535:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 6398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5535:31:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6399,
                        "nodeType": "ExpressionStatement",
                        "src": "5535:31:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6401,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5955,
                              "src": "5586:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6402,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6375,
                              "src": "5594:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6403,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6329,
                              "src": "5603:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6404,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6331,
                              "src": "5614:11:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 6400,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7388,
                            "src": "5576:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 6405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5576:50:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6406,
                        "nodeType": "ExpressionStatement",
                        "src": "5576:50:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6408,
                              "name": "token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5957,
                              "src": "5646:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6409,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6384,
                              "src": "5654:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6410,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6329,
                              "src": "5663:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6411,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6331,
                              "src": "5674:11:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 6407,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7388,
                            "src": "5636:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 6412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5636:50:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6413,
                        "nodeType": "ExpressionStatement",
                        "src": "5636:50:38"
                      },
                      {
                        "id": 6422,
                        "nodeType": "UncheckedBlock",
                        "src": "5792:87:38",
                        "statements": [
                          {
                            "expression": {
                              "id": 6416,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6414,
                                "name": "balance0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6352,
                                "src": "5816:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "id": 6415,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6375,
                                "src": "5828:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5816:19:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6417,
                            "nodeType": "ExpressionStatement",
                            "src": "5816:19:38"
                          },
                          {
                            "expression": {
                              "id": 6420,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 6418,
                                "name": "balance1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6354,
                                "src": "5849:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "id": 6419,
                                "name": "amount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6384,
                                "src": "5861:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5849:19:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6421,
                            "nodeType": "ExpressionStatement",
                            "src": "5849:19:38"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6424,
                              "name": "balance0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6352,
                              "src": "5896:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6425,
                              "name": "balance1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6354,
                              "src": "5906:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6426,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6343,
                              "src": "5916:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 6427,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6345,
                              "src": "5927:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 6428,
                              "name": "_blockTimestampLast",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6347,
                              "src": "5938:19:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 6423,
                            "name": "_update",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7194,
                            "src": "5888:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$_t_uint32_$returns$__$",
                              "typeString": "function (uint256,uint256,uint112,uint112,uint32)"
                            }
                          },
                          "id": 6429,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5888:70:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6430,
                        "nodeType": "ExpressionStatement",
                        "src": "5888:70:38"
                      },
                      {
                        "expression": {
                          "id": 6438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6431,
                            "name": "kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5965,
                            "src": "5968:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6436,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6434,
                                  "name": "balance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6352,
                                  "src": "5993:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 6435,
                                  "name": "balance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6354,
                                  "src": "6004:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5993:19:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6432,
                                "name": "TridentMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3139,
                                "src": "5976:11:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TridentMath_$3139_$",
                                  "typeString": "type(library TridentMath)"
                                }
                              },
                              "id": 6433,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sqrt",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3138,
                              "src": "5976:16:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5976:37:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5968:45:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6439,
                        "nodeType": "ExpressionStatement",
                        "src": "5968:45:38"
                      },
                      {
                        "expression": {
                          "id": 6447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6440,
                            "name": "withdrawnAmounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6326,
                            "src": "6024:16:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "32",
                                "id": 6445,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6061:1:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                }
                              ],
                              "id": 6444,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "6043:17:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (struct IPool.TokenAmount memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 6442,
                                  "nodeType": "UserDefinedTypeName",
                                  "pathNode": {
                                    "id": 6441,
                                    "name": "TokenAmount",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2449,
                                    "src": "6047:11:38"
                                  },
                                  "referencedDeclaration": 2449,
                                  "src": "6047:11:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                                    "typeString": "struct IPool.TokenAmount"
                                  }
                                },
                                "id": 6443,
                                "nodeType": "ArrayTypeName",
                                "src": "6047:13:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                                  "typeString": "struct IPool.TokenAmount[]"
                                }
                              }
                            },
                            "id": 6446,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6043:20:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory[] memory"
                            }
                          },
                          "src": "6024:39:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct IPool.TokenAmount memory[] memory"
                          }
                        },
                        "id": 6448,
                        "nodeType": "ExpressionStatement",
                        "src": "6024:39:38"
                      },
                      {
                        "expression": {
                          "id": 6459,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 6449,
                              "name": "withdrawnAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6326,
                              "src": "6073:16:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IPool.TokenAmount memory[] memory"
                              }
                            },
                            "id": 6451,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 6450,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6090:1:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6073:19:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 6455,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5955,
                                    "src": "6123:6:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 6454,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6115:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6453,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6115:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6456,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6115:15:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 6457,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6375,
                                "src": "6140:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 6452,
                              "name": "TokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2449,
                              "src": "6095:11:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_TokenAmount_$2449_storage_ptr_$",
                                "typeString": "type(struct IPool.TokenAmount storage pointer)"
                              }
                            },
                            "id": 6458,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "token",
                              "amount"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "6095:54:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory"
                            }
                          },
                          "src": "6073:76:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                            "typeString": "struct IPool.TokenAmount memory"
                          }
                        },
                        "id": 6460,
                        "nodeType": "ExpressionStatement",
                        "src": "6073:76:38"
                      },
                      {
                        "expression": {
                          "id": 6471,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 6461,
                              "name": "withdrawnAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6326,
                              "src": "6159:16:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IPool.TokenAmount memory[] memory"
                              }
                            },
                            "id": 6463,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 6462,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6176:1:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6159:19:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 6467,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5957,
                                    "src": "6209:6:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 6466,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6201:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6465,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6201:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6468,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6201:15:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 6469,
                                "name": "amount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6384,
                                "src": "6226:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 6464,
                              "name": "TokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2449,
                              "src": "6181:11:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_TokenAmount_$2449_storage_ptr_$",
                                "typeString": "type(struct IPool.TokenAmount storage pointer)"
                              }
                            },
                            "id": 6470,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "token",
                              "amount"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "6181:54:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory"
                            }
                          },
                          "src": "6159:76:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                            "typeString": "struct IPool.TokenAmount memory"
                          }
                        },
                        "id": 6472,
                        "nodeType": "ExpressionStatement",
                        "src": "6159:76:38"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6474,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "6255:3:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6475,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "6255:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6476,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6375,
                              "src": "6267:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6477,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6384,
                              "src": "6276:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6478,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6329,
                              "src": "6285:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6479,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6359,
                              "src": "6296:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6473,
                            "name": "Burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5923,
                            "src": "6250:4:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address,uint256)"
                            }
                          },
                          "id": 6480,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6250:56:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6481,
                        "nodeType": "EmitStatement",
                        "src": "6245:61:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6316,
                    "nodeType": "StructuredDocumentation",
                    "src": "4806:115:38",
                    "text": "@dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens."
                  },
                  "functionSelector": "2a07b6c7",
                  "id": 6483,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 6322,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 6321,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 5996,
                        "src": "4977:4:38"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4977:4:38"
                    }
                  ],
                  "name": "burn",
                  "nameLocation": "4935:4:38",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6320,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4968:8:38"
                  },
                  "parameters": {
                    "id": 6319,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6318,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4955:4:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6483,
                        "src": "4940:19:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6317,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4940:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4939:21:38"
                  },
                  "returnParameters": {
                    "id": 6327,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6326,
                        "mutability": "mutable",
                        "name": "withdrawnAmounts",
                        "nameLocation": "5018:16:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6483,
                        "src": "4991:43:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IPool.TokenAmount[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6324,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 6323,
                              "name": "IPool.TokenAmount",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2449,
                              "src": "4991:17:38"
                            },
                            "referencedDeclaration": 2449,
                            "src": "4991:17:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                              "typeString": "struct IPool.TokenAmount"
                            }
                          },
                          "id": 6325,
                          "nodeType": "ArrayTypeName",
                          "src": "4991:19:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                            "typeString": "struct IPool.TokenAmount[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4990:45:38"
                  },
                  "scope": 7674,
                  "src": "4926:1387:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2402
                  ],
                  "body": {
                    "id": 6670,
                    "nodeType": "Block",
                    "src": "6578:1701:38",
                    "statements": [
                      {
                        "assignments": [
                          6495,
                          6497,
                          6499
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6495,
                            "mutability": "mutable",
                            "name": "tokenOut",
                            "nameLocation": "6597:8:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6670,
                            "src": "6589:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 6494,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6589:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6497,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "6615:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6670,
                            "src": "6607:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 6496,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6607:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6499,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "6631:11:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6670,
                            "src": "6626:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 6498,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "6626:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6511,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6502,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6486,
                              "src": "6657:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 6504,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6664:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6503,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6664:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 6506,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6673:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6505,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6673:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 6508,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6682:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 6507,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6682:4:38",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 6509,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "6663:24:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 6500,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "6646:3:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 6501,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "6646:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 6510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6646:42:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_bool_$",
                            "typeString": "tuple(address payable,address payable,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6588:100:38"
                      },
                      {
                        "assignments": [
                          6513,
                          6515,
                          6517
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6513,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "6707:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6670,
                            "src": "6699:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 6512,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "6699:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6515,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "6726:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6670,
                            "src": "6718:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 6514,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "6718:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6517,
                            "mutability": "mutable",
                            "name": "_blockTimestampLast",
                            "nameLocation": "6744:19:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6670,
                            "src": "6737:26:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 6516,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "6737:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6520,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6518,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7024,
                            "src": "6767:12:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                              "typeString": "function () view returns (uint112,uint112,uint32)"
                            }
                          },
                          "id": 6519,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6767:14:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "tuple(uint112,uint112,uint32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6698:83:38"
                      },
                      {
                        "assignments": [
                          6522
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6522,
                            "mutability": "mutable",
                            "name": "liquidity",
                            "nameLocation": "6799:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6670,
                            "src": "6791:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6521,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6791:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6529,
                        "initialValue": {
                          "baseExpression": {
                            "id": 6523,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11922,
                            "src": "6811:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 6528,
                          "indexExpression": {
                            "arguments": [
                              {
                                "id": 6526,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "6829:4:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                  "typeString": "contract ConstantProductPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                  "typeString": "contract ConstantProductPool"
                                }
                              ],
                              "id": 6525,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6821:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 6524,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6821:7:38",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6821:13:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6811:24:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6791:44:38"
                      },
                      {
                        "assignments": [
                          6531,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6531,
                            "mutability": "mutable",
                            "name": "_totalSupply",
                            "nameLocation": "6855:12:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6670,
                            "src": "6847:20:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6530,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6847:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 6536,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6533,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6513,
                              "src": "6882:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 6534,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6515,
                              "src": "6893:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            ],
                            "id": 6532,
                            "name": "_mintFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7284,
                            "src": "6873:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint112_$_t_uint112_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint112,uint112) returns (uint256,uint256)"
                            }
                          },
                          "id": 6535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6873:30:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6846:57:38"
                      },
                      {
                        "assignments": [
                          6538
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6538,
                            "mutability": "mutable",
                            "name": "amount0",
                            "nameLocation": "6922:7:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6670,
                            "src": "6914:15:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6537,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6914:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6545,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6541,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6539,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6522,
                                  "src": "6933:9:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 6540,
                                  "name": "_reserve0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6513,
                                  "src": "6945:9:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "src": "6933:21:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 6542,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6932:23:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 6543,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6531,
                            "src": "6958:12:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6932:38:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6914:56:38"
                      },
                      {
                        "assignments": [
                          6547
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6547,
                            "mutability": "mutable",
                            "name": "amount1",
                            "nameLocation": "6988:7:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6670,
                            "src": "6980:15:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6546,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6980:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6554,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6550,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6548,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6522,
                                  "src": "6999:9:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 6549,
                                  "name": "_reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6515,
                                  "src": "7011:9:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "src": "6999:21:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 6551,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6998:23:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 6552,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6531,
                            "src": "7024:12:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6998:38:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6980:56:38"
                      },
                      {
                        "expression": {
                          "id": 6568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6555,
                            "name": "kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5965,
                            "src": "7047:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6566,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6560,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6558,
                                        "name": "_reserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6513,
                                        "src": "7073:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 6559,
                                        "name": "amount0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6538,
                                        "src": "7085:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7073:19:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 6561,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "7072:21:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6564,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6562,
                                        "name": "_reserve1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6515,
                                        "src": "7097:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 6563,
                                        "name": "amount1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6547,
                                        "src": "7109:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7097:19:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 6565,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "7096:21:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7072:45:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 6556,
                                "name": "TridentMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3139,
                                "src": "7055:11:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TridentMath_$3139_$",
                                  "typeString": "type(library TridentMath)"
                                }
                              },
                              "id": 6557,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sqrt",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3138,
                              "src": "7055:16:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6567,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7055:63:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7047:71:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6569,
                        "nodeType": "ExpressionStatement",
                        "src": "7047:71:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 6573,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "7143:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                    "typeString": "contract ConstantProductPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                    "typeString": "contract ConstantProductPool"
                                  }
                                ],
                                "id": 6572,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7135:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 6571,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7135:7:38",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6574,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7135:13:38",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6575,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6522,
                              "src": "7150:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6570,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12278,
                            "src": "7129:5:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 6576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7129:31:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6577,
                        "nodeType": "ExpressionStatement",
                        "src": "7129:31:38"
                      },
                      {
                        "id": 6645,
                        "nodeType": "UncheckedBlock",
                        "src": "7209:852:38",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 6580,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6578,
                                "name": "tokenOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6495,
                                "src": "7237:8:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 6579,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5957,
                                "src": "7249:6:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7237:18:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 6643,
                              "nodeType": "Block",
                              "src": "7688:363:38",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        "id": 6612,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 6610,
                                          "name": "tokenOut",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6495,
                                          "src": "7766:8:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "id": 6611,
                                          "name": "token0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5955,
                                          "src": "7778:6:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "src": "7766:18:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "hexValue": "494e56414c49445f4f55545055545f544f4b454e",
                                        "id": 6613,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7786:22:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831",
                                          "typeString": "literal_string \"INVALID_OUTPUT_TOKEN\""
                                        },
                                        "value": "INVALID_OUTPUT_TOKEN"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831",
                                          "typeString": "literal_string \"INVALID_OUTPUT_TOKEN\""
                                        }
                                      ],
                                      "id": 6609,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "7758:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 6614,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7758:51:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6615,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7758:51:38"
                                },
                                {
                                  "expression": {
                                    "id": 6626,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 6616,
                                      "name": "amount0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6538,
                                      "src": "7827:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 6618,
                                          "name": "amount1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6547,
                                          "src": "7852:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 6621,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 6619,
                                            "name": "_reserve1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6515,
                                            "src": "7861:9:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 6620,
                                            "name": "amount1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6547,
                                            "src": "7873:7:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "7861:19:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 6624,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 6622,
                                            "name": "_reserve0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6513,
                                            "src": "7882:9:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 6623,
                                            "name": "amount0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6538,
                                            "src": "7894:7:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "7882:19:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 6617,
                                        "name": "_getAmountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7316,
                                        "src": "7838:13:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                        }
                                      },
                                      "id": 6625,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7838:64:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7827:75:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6627,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7827:75:38"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 6629,
                                        "name": "token0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5955,
                                        "src": "7930:6:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 6630,
                                        "name": "amount0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6538,
                                        "src": "7938:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6631,
                                        "name": "recipient",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6497,
                                        "src": "7947:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 6632,
                                        "name": "unwrapBento",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6499,
                                        "src": "7958:11:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 6628,
                                      "name": "_transfer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7388,
                                      "src": "7920:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                        "typeString": "function (address,uint256,address,bool)"
                                      }
                                    },
                                    "id": 6633,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7920:50:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6634,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7920:50:38"
                                },
                                {
                                  "expression": {
                                    "id": 6637,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 6635,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6492,
                                      "src": "7988:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "id": 6636,
                                      "name": "amount0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6538,
                                      "src": "8000:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7988:19:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6638,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7988:19:38"
                                },
                                {
                                  "expression": {
                                    "id": 6641,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 6639,
                                      "name": "amount1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6547,
                                      "src": "8025:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "hexValue": "30",
                                      "id": 6640,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8035:1:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "8025:11:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6642,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8025:11:38"
                                }
                              ]
                            },
                            "id": 6644,
                            "nodeType": "IfStatement",
                            "src": "7233:818:38",
                            "trueBody": {
                              "id": 6608,
                              "nodeType": "Block",
                              "src": "7257:425:38",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 6591,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 6581,
                                      "name": "amount1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6547,
                                      "src": "7458:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 6583,
                                          "name": "amount0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6538,
                                          "src": "7483:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 6586,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 6584,
                                            "name": "_reserve0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6513,
                                            "src": "7492:9:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 6585,
                                            "name": "amount0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6538,
                                            "src": "7504:7:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "7492:19:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 6589,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 6587,
                                            "name": "_reserve1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6515,
                                            "src": "7513:9:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 6588,
                                            "name": "amount1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6547,
                                            "src": "7525:7:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "7513:19:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 6582,
                                        "name": "_getAmountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7316,
                                        "src": "7469:13:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                        }
                                      },
                                      "id": 6590,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7469:64:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7458:75:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6592,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7458:75:38"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 6594,
                                        "name": "token1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5957,
                                        "src": "7561:6:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 6595,
                                        "name": "amount1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6547,
                                        "src": "7569:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6596,
                                        "name": "recipient",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6497,
                                        "src": "7578:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 6597,
                                        "name": "unwrapBento",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6499,
                                        "src": "7589:11:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 6593,
                                      "name": "_transfer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7388,
                                      "src": "7551:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                        "typeString": "function (address,uint256,address,bool)"
                                      }
                                    },
                                    "id": 6598,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7551:50:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6599,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7551:50:38"
                                },
                                {
                                  "expression": {
                                    "id": 6602,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 6600,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6492,
                                      "src": "7619:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "id": 6601,
                                      "name": "amount1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6547,
                                      "src": "7631:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7619:19:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6603,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7619:19:38"
                                },
                                {
                                  "expression": {
                                    "id": 6606,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 6604,
                                      "name": "amount0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6538,
                                      "src": "7656:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "hexValue": "30",
                                      "id": 6605,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7666:1:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "7656:11:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6607,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7656:11:38"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "assignments": [
                          6647,
                          6649
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6647,
                            "mutability": "mutable",
                            "name": "balance0",
                            "nameLocation": "8080:8:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6670,
                            "src": "8072:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6646,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8072:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6649,
                            "mutability": "mutable",
                            "name": "balance1",
                            "nameLocation": "8098:8:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6670,
                            "src": "8090:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6648,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8090:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6652,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6650,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7054,
                            "src": "8110:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 6651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8110:10:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8071:49:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6654,
                              "name": "balance0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6647,
                              "src": "8138:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6655,
                              "name": "balance1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6649,
                              "src": "8148:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6656,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6513,
                              "src": "8158:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 6657,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6515,
                              "src": "8169:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 6658,
                              "name": "_blockTimestampLast",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6517,
                              "src": "8180:19:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 6653,
                            "name": "_update",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7194,
                            "src": "8130:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$_t_uint32_$returns$__$",
                              "typeString": "function (uint256,uint256,uint112,uint112,uint32)"
                            }
                          },
                          "id": 6659,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8130:70:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6660,
                        "nodeType": "ExpressionStatement",
                        "src": "8130:70:38"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6662,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "8221:3:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6663,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "8221:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6664,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6538,
                              "src": "8233:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6665,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6547,
                              "src": "8242:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6666,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6497,
                              "src": "8251:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6667,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6522,
                              "src": "8262:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6661,
                            "name": "Burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5923,
                            "src": "8216:4:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address,uint256)"
                            }
                          },
                          "id": 6668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8216:56:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6669,
                        "nodeType": "EmitStatement",
                        "src": "8211:61:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6484,
                    "nodeType": "StructuredDocumentation",
                    "src": "6319:164:38",
                    "text": "@dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\n - i.e., the user gets a single token out by burning LP tokens."
                  },
                  "functionSelector": "af8c09bf",
                  "id": 6671,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 6490,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 6489,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 5996,
                        "src": "6545:4:38"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6545:4:38"
                    }
                  ],
                  "name": "burnSingle",
                  "nameLocation": "6497:10:38",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6488,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6536:8:38"
                  },
                  "parameters": {
                    "id": 6487,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6486,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6523:4:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6671,
                        "src": "6508:19:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6485,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6508:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6507:21:38"
                  },
                  "returnParameters": {
                    "id": 6493,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6492,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "6567:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6671,
                        "src": "6559:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6491,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6559:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6558:19:38"
                  },
                  "scope": 7674,
                  "src": "6488:1791:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2368
                  ],
                  "body": {
                    "id": 6810,
                    "nodeType": "Block",
                    "src": "8491:1152:38",
                    "statements": [
                      {
                        "assignments": [
                          6683,
                          6685,
                          6687
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6683,
                            "mutability": "mutable",
                            "name": "tokenIn",
                            "nameLocation": "8510:7:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6810,
                            "src": "8502:15:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 6682,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8502:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6685,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "8527:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6810,
                            "src": "8519:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 6684,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8519:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6687,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "8543:11:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6810,
                            "src": "8538:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 6686,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "8538:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6699,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6690,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6674,
                              "src": "8569:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 6692,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8576:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6691,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8576:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 6694,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8585:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6693,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8585:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 6696,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8594:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 6695,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8594:4:38",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 6697,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "8575:24:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 6688,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "8558:3:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 6689,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "8558:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 6698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8558:42:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_bool_$",
                            "typeString": "tuple(address payable,address payable,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8501:99:38"
                      },
                      {
                        "assignments": [
                          6701,
                          6703,
                          6705
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6701,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "8619:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6810,
                            "src": "8611:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 6700,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "8611:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6703,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "8638:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6810,
                            "src": "8630:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 6702,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "8630:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6705,
                            "mutability": "mutable",
                            "name": "_blockTimestampLast",
                            "nameLocation": "8656:19:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6810,
                            "src": "8649:26:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 6704,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "8649:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6708,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6706,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7024,
                            "src": "8679:12:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                              "typeString": "function () view returns (uint112,uint112,uint32)"
                            }
                          },
                          "id": 6707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8679:14:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "tuple(uint112,uint112,uint32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8610:83:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              "id": 6712,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6710,
                                "name": "_reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6701,
                                "src": "8711:9:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 6711,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8723:1:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "8711:13:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "504f4f4c5f554e494e495449414c495a4544",
                              "id": 6713,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8726:20:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_367fa6588260d42fbdfeaa882c8e665dba6ef7b9ada04c67c61530ffc1768fee",
                                "typeString": "literal_string \"POOL_UNINITIALIZED\""
                              },
                              "value": "POOL_UNINITIALIZED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_367fa6588260d42fbdfeaa882c8e665dba6ef7b9ada04c67c61530ffc1768fee",
                                "typeString": "literal_string \"POOL_UNINITIALIZED\""
                              }
                            ],
                            "id": 6709,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8703:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6714,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8703:44:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6715,
                        "nodeType": "ExpressionStatement",
                        "src": "8703:44:38"
                      },
                      {
                        "assignments": [
                          6717,
                          6719
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6717,
                            "mutability": "mutable",
                            "name": "balance0",
                            "nameLocation": "8766:8:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6810,
                            "src": "8758:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6716,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8758:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6719,
                            "mutability": "mutable",
                            "name": "balance1",
                            "nameLocation": "8784:8:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6810,
                            "src": "8776:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6718,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8776:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6722,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6720,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7054,
                            "src": "8796:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 6721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8796:10:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8757:49:38"
                      },
                      {
                        "assignments": [
                          6724
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6724,
                            "mutability": "mutable",
                            "name": "amountIn",
                            "nameLocation": "8824:8:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6810,
                            "src": "8816:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6723,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8816:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6725,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8816:16:38"
                      },
                      {
                        "assignments": [
                          6727
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6727,
                            "mutability": "mutable",
                            "name": "tokenOut",
                            "nameLocation": "8850:8:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6810,
                            "src": "8842:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 6726,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8842:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6728,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8842:16:38"
                      },
                      {
                        "id": 6786,
                        "nodeType": "UncheckedBlock",
                        "src": "8868:555:38",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 6731,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6729,
                                "name": "tokenIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6683,
                                "src": "8896:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 6730,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5955,
                                "src": "8907:6:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "8896:17:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 6784,
                              "nodeType": "Block",
                              "src": "9134:279:38",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        "id": 6758,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 6756,
                                          "name": "tokenIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6683,
                                          "src": "9160:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "id": 6757,
                                          "name": "token1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5957,
                                          "src": "9171:6:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "src": "9160:17:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "hexValue": "494e56414c49445f494e5055545f544f4b454e",
                                        "id": 6759,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9179:21:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                          "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                        },
                                        "value": "INVALID_INPUT_TOKEN"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                          "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                        }
                                      ],
                                      "id": 6755,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "9152:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 6760,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9152:49:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6761,
                                  "nodeType": "ExpressionStatement",
                                  "src": "9152:49:38"
                                },
                                {
                                  "expression": {
                                    "id": 6764,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 6762,
                                      "name": "tokenOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6727,
                                      "src": "9219:8:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "id": 6763,
                                      "name": "token0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5955,
                                      "src": "9230:6:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "9219:17:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 6765,
                                  "nodeType": "ExpressionStatement",
                                  "src": "9219:17:38"
                                },
                                {
                                  "expression": {
                                    "id": 6770,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 6766,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6724,
                                      "src": "9254:8:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6769,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6767,
                                        "name": "balance1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6719,
                                        "src": "9265:8:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 6768,
                                        "name": "reserve1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5969,
                                        "src": "9276:8:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        }
                                      },
                                      "src": "9265:19:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9254:30:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6771,
                                  "nodeType": "ExpressionStatement",
                                  "src": "9254:30:38"
                                },
                                {
                                  "expression": {
                                    "id": 6778,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 6772,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6680,
                                      "src": "9302:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 6774,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6724,
                                          "src": "9328:8:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 6775,
                                          "name": "_reserve1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6703,
                                          "src": "9338:9:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        },
                                        {
                                          "id": 6776,
                                          "name": "_reserve0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6701,
                                          "src": "9349:9:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          },
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        ],
                                        "id": 6773,
                                        "name": "_getAmountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7316,
                                        "src": "9314:13:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                        }
                                      },
                                      "id": 6777,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9314:45:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9302:57:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6779,
                                  "nodeType": "ExpressionStatement",
                                  "src": "9302:57:38"
                                },
                                {
                                  "expression": {
                                    "id": 6782,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 6780,
                                      "name": "balance0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6717,
                                      "src": "9377:8:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "id": 6781,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6680,
                                      "src": "9389:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9377:21:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6783,
                                  "nodeType": "ExpressionStatement",
                                  "src": "9377:21:38"
                                }
                              ]
                            },
                            "id": 6785,
                            "nodeType": "IfStatement",
                            "src": "8892:521:38",
                            "trueBody": {
                              "id": 6754,
                              "nodeType": "Block",
                              "src": "8915:213:38",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 6734,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 6732,
                                      "name": "tokenOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6727,
                                      "src": "8933:8:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "id": 6733,
                                      "name": "token1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5957,
                                      "src": "8944:6:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "8933:17:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 6735,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8933:17:38"
                                },
                                {
                                  "expression": {
                                    "id": 6740,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 6736,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6724,
                                      "src": "8968:8:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6739,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6737,
                                        "name": "balance0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6717,
                                        "src": "8979:8:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 6738,
                                        "name": "_reserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6701,
                                        "src": "8990:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        }
                                      },
                                      "src": "8979:20:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8968:31:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6741,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8968:31:38"
                                },
                                {
                                  "expression": {
                                    "id": 6748,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 6742,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6680,
                                      "src": "9017:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 6744,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6724,
                                          "src": "9043:8:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 6745,
                                          "name": "_reserve0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6701,
                                          "src": "9053:9:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        },
                                        {
                                          "id": 6746,
                                          "name": "_reserve1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6703,
                                          "src": "9064:9:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          },
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        ],
                                        "id": 6743,
                                        "name": "_getAmountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7316,
                                        "src": "9029:13:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                        }
                                      },
                                      "id": 6747,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9029:45:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9017:57:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6749,
                                  "nodeType": "ExpressionStatement",
                                  "src": "9017:57:38"
                                },
                                {
                                  "expression": {
                                    "id": 6752,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 6750,
                                      "name": "balance1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6719,
                                      "src": "9092:8:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "id": 6751,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6680,
                                      "src": "9104:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9092:21:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6753,
                                  "nodeType": "ExpressionStatement",
                                  "src": "9092:21:38"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6788,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6727,
                              "src": "9442:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6789,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6680,
                              "src": "9452:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6790,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6685,
                              "src": "9463:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6791,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6687,
                              "src": "9474:11:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 6787,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7388,
                            "src": "9432:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 6792,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9432:54:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6793,
                        "nodeType": "ExpressionStatement",
                        "src": "9432:54:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6795,
                              "name": "balance0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6717,
                              "src": "9504:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6796,
                              "name": "balance1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6719,
                              "src": "9514:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6797,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6701,
                              "src": "9524:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 6798,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6703,
                              "src": "9535:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 6799,
                              "name": "_blockTimestampLast",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6705,
                              "src": "9546:19:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 6794,
                            "name": "_update",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7194,
                            "src": "9496:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$_t_uint32_$returns$__$",
                              "typeString": "function (uint256,uint256,uint112,uint112,uint32)"
                            }
                          },
                          "id": 6800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9496:70:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6801,
                        "nodeType": "ExpressionStatement",
                        "src": "9496:70:38"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 6803,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6685,
                              "src": "9586:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6804,
                              "name": "tokenIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6683,
                              "src": "9597:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6805,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6727,
                              "src": "9606:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6806,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6724,
                              "src": "9616:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6807,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6680,
                              "src": "9626:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6802,
                            "name": "Swap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2444,
                            "src": "9581:4:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 6808,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9581:55:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6809,
                        "nodeType": "EmitStatement",
                        "src": "9576:60:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6672,
                    "nodeType": "StructuredDocumentation",
                    "src": "8285:117:38",
                    "text": "@dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage."
                  },
                  "functionSelector": "627dd56a",
                  "id": 6811,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 6678,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 6677,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 5996,
                        "src": "8458:4:38"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8458:4:38"
                    }
                  ],
                  "name": "swap",
                  "nameLocation": "8416:4:38",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6676,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8449:8:38"
                  },
                  "parameters": {
                    "id": 6675,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6674,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "8436:4:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6811,
                        "src": "8421:19:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6673,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8421:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8420:21:38"
                  },
                  "returnParameters": {
                    "id": 6681,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6680,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "8480:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6811,
                        "src": "8472:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6679,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8472:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8471:19:38"
                  },
                  "scope": 7674,
                  "src": "8407:1236:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2376
                  ],
                  "body": {
                    "id": 6988,
                    "nodeType": "Block",
                    "src": "9861:1590:38",
                    "statements": [
                      {
                        "assignments": [
                          6823,
                          6825,
                          6827,
                          6829,
                          6831
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6823,
                            "mutability": "mutable",
                            "name": "tokenIn",
                            "nameLocation": "9880:7:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6988,
                            "src": "9872:15:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 6822,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9872:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6825,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "9897:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6988,
                            "src": "9889:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 6824,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9889:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6827,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "9913:11:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6988,
                            "src": "9908:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 6826,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9908:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6829,
                            "mutability": "mutable",
                            "name": "amountIn",
                            "nameLocation": "9934:8:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6988,
                            "src": "9926:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6828,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9926:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6831,
                            "mutability": "mutable",
                            "name": "context",
                            "nameLocation": "9957:7:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6988,
                            "src": "9944:20:38",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 6830,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "9944:5:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6847,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6834,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6814,
                              "src": "9992:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 6836,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10011:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6835,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10011:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 6838,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10020:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6837,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10020:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 6840,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10029:4:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 6839,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10029:4:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 6842,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10035:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 6841,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10035:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 6844,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10044:5:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 6843,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10044:5:38",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 6845,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "10010:40:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool),type(uint256),type(bytes storage pointer))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool),type(uint256),type(bytes storage pointer))"
                              }
                            ],
                            "expression": {
                              "id": 6832,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "9968:3:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 6833,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "9968:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 6846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9968:92:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_bool_$_t_uint256_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(address payable,address payable,bool,uint256,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9871:189:38"
                      },
                      {
                        "assignments": [
                          6849,
                          6851,
                          6853
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6849,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "10079:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6988,
                            "src": "10071:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 6848,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "10071:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6851,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "10098:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6988,
                            "src": "10090:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 6850,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "10090:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6853,
                            "mutability": "mutable",
                            "name": "_blockTimestampLast",
                            "nameLocation": "10116:19:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 6988,
                            "src": "10109:26:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 6852,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "10109:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6856,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6854,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7024,
                            "src": "10139:12:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                              "typeString": "function () view returns (uint112,uint112,uint32)"
                            }
                          },
                          "id": 6855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10139:14:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "tuple(uint112,uint112,uint32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10070:83:38"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              "id": 6860,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6858,
                                "name": "_reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6849,
                                "src": "10171:9:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 6859,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10183:1:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "10171:13:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "504f4f4c5f554e494e495449414c495a4544",
                              "id": 6861,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10186:20:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_367fa6588260d42fbdfeaa882c8e665dba6ef7b9ada04c67c61530ffc1768fee",
                                "typeString": "literal_string \"POOL_UNINITIALIZED\""
                              },
                              "value": "POOL_UNINITIALIZED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_367fa6588260d42fbdfeaa882c8e665dba6ef7b9ada04c67c61530ffc1768fee",
                                "typeString": "literal_string \"POOL_UNINITIALIZED\""
                              }
                            ],
                            "id": 6857,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10163:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6862,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10163:44:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6863,
                        "nodeType": "ExpressionStatement",
                        "src": "10163:44:38"
                      },
                      {
                        "id": 6987,
                        "nodeType": "UncheckedBlock",
                        "src": "10217:1228:38",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 6866,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6864,
                                "name": "tokenIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6823,
                                "src": "10245:7:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 6865,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5955,
                                "src": "10256:6:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10245:17:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 6985,
                              "nodeType": "Block",
                              "src": "10819:616:38",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        "id": 6926,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 6924,
                                          "name": "tokenIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6823,
                                          "src": "10845:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "id": 6925,
                                          "name": "token1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5957,
                                          "src": "10856:6:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "src": "10845:17:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "hexValue": "494e56414c49445f494e5055545f544f4b454e",
                                        "id": 6927,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10864:21:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                          "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                        },
                                        "value": "INVALID_INPUT_TOKEN"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                          "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                        }
                                      ],
                                      "id": 6923,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "10837:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 6928,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10837:49:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6929,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10837:49:38"
                                },
                                {
                                  "expression": {
                                    "id": 6936,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 6930,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6820,
                                      "src": "10904:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 6932,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6829,
                                          "src": "10930:8:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 6933,
                                          "name": "_reserve1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6851,
                                          "src": "10940:9:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        },
                                        {
                                          "id": 6934,
                                          "name": "_reserve0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6849,
                                          "src": "10951:9:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          },
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        ],
                                        "id": 6931,
                                        "name": "_getAmountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7316,
                                        "src": "10916:13:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                        }
                                      },
                                      "id": 6935,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10916:45:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10904:57:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6937,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10904:57:38"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 6939,
                                        "name": "token0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5955,
                                        "src": "10989:6:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 6940,
                                        "name": "amountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6820,
                                        "src": "10997:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6941,
                                        "name": "recipient",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6825,
                                        "src": "11008:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 6942,
                                        "name": "unwrapBento",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6827,
                                        "src": "11019:11:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 6938,
                                      "name": "_transfer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7388,
                                      "src": "10979:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                        "typeString": "function (address,uint256,address,bool)"
                                      }
                                    },
                                    "id": 6943,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10979:52:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6944,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10979:52:38"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 6950,
                                        "name": "context",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6831,
                                        "src": "11096:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "expression": {
                                              "id": 6946,
                                              "name": "msg",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -15,
                                              "src": "11064:3:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                              }
                                            },
                                            "id": 6947,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sender",
                                            "nodeType": "MemberAccess",
                                            "src": "11064:10:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 6945,
                                          "name": "ITridentCallee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2482,
                                          "src": "11049:14:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_ITridentCallee_$2482_$",
                                            "typeString": "type(contract ITridentCallee)"
                                          }
                                        },
                                        "id": 6948,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11049:26:38",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ITridentCallee_$2482",
                                          "typeString": "contract ITridentCallee"
                                        }
                                      },
                                      "id": 6949,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "tridentSwapCallback",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2476,
                                      "src": "11049:46:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                                        "typeString": "function (bytes memory) external"
                                      }
                                    },
                                    "id": 6951,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11049:55:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6952,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11049:55:38"
                                },
                                {
                                  "assignments": [
                                    6954,
                                    6956
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 6954,
                                      "mutability": "mutable",
                                      "name": "balance0",
                                      "nameLocation": "11131:8:38",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 6985,
                                      "src": "11123:16:38",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 6953,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11123:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    },
                                    {
                                      "constant": false,
                                      "id": 6956,
                                      "mutability": "mutable",
                                      "name": "balance1",
                                      "nameLocation": "11149:8:38",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 6985,
                                      "src": "11141:16:38",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 6955,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11141:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 6959,
                                  "initialValue": {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 6957,
                                      "name": "_balance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7054,
                                      "src": "11161:8:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                                        "typeString": "function () view returns (uint256,uint256)"
                                      }
                                    },
                                    "id": 6958,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11161:10:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                      "typeString": "tuple(uint256,uint256)"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "11122:49:38"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6965,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 6963,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 6961,
                                            "name": "balance1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6956,
                                            "src": "11197:8:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 6962,
                                            "name": "_reserve1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6851,
                                            "src": "11208:9:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          "src": "11197:20:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">=",
                                        "rightExpression": {
                                          "id": 6964,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6829,
                                          "src": "11221:8:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "11197:32:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "hexValue": "494e53554646494349454e545f414d4f554e545f494e",
                                        "id": 6966,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "11231:24:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9",
                                          "typeString": "literal_string \"INSUFFICIENT_AMOUNT_IN\""
                                        },
                                        "value": "INSUFFICIENT_AMOUNT_IN"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9",
                                          "typeString": "literal_string \"INSUFFICIENT_AMOUNT_IN\""
                                        }
                                      ],
                                      "id": 6960,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "11189:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 6967,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11189:67:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6968,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11189:67:38"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 6970,
                                        "name": "balance0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6954,
                                        "src": "11282:8:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6971,
                                        "name": "balance1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6956,
                                        "src": "11292:8:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6972,
                                        "name": "_reserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6849,
                                        "src": "11302:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        }
                                      },
                                      {
                                        "id": 6973,
                                        "name": "_reserve1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6851,
                                        "src": "11313:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        }
                                      },
                                      {
                                        "id": 6974,
                                        "name": "_blockTimestampLast",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6853,
                                        "src": "11324:19:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        },
                                        {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        },
                                        {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      ],
                                      "id": 6969,
                                      "name": "_update",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7194,
                                      "src": "11274:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$_t_uint32_$returns$__$",
                                        "typeString": "function (uint256,uint256,uint112,uint112,uint32)"
                                      }
                                    },
                                    "id": 6975,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11274:70:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6976,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11274:70:38"
                                },
                                {
                                  "eventCall": {
                                    "arguments": [
                                      {
                                        "id": 6978,
                                        "name": "recipient",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6825,
                                        "src": "11372:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 6979,
                                        "name": "tokenIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6823,
                                        "src": "11383:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 6980,
                                        "name": "token0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5955,
                                        "src": "11392:6:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 6981,
                                        "name": "amountIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6829,
                                        "src": "11400:8:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6982,
                                        "name": "amountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6820,
                                        "src": "11410:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 6977,
                                      "name": "Swap",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2444,
                                      "src": "11367:4:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                        "typeString": "function (address,address,address,uint256,uint256)"
                                      }
                                    },
                                    "id": 6983,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11367:53:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6984,
                                  "nodeType": "EmitStatement",
                                  "src": "11362:58:38"
                                }
                              ]
                            },
                            "id": 6986,
                            "nodeType": "IfStatement",
                            "src": "10241:1194:38",
                            "trueBody": {
                              "id": 6922,
                              "nodeType": "Block",
                              "src": "10264:549:38",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 6873,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 6867,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6820,
                                      "src": "10282:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 6869,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6829,
                                          "src": "10308:8:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 6870,
                                          "name": "_reserve0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6849,
                                          "src": "10318:9:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        },
                                        {
                                          "id": 6871,
                                          "name": "_reserve1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6851,
                                          "src": "10329:9:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          },
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        ],
                                        "id": 6868,
                                        "name": "_getAmountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7316,
                                        "src": "10294:13:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                        }
                                      },
                                      "id": 6872,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10294:45:38",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10282:57:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6874,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10282:57:38"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 6876,
                                        "name": "token1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5957,
                                        "src": "10367:6:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 6877,
                                        "name": "amountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6820,
                                        "src": "10375:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6878,
                                        "name": "recipient",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6825,
                                        "src": "10386:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 6879,
                                        "name": "unwrapBento",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6827,
                                        "src": "10397:11:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 6875,
                                      "name": "_transfer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7388,
                                      "src": "10357:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                        "typeString": "function (address,uint256,address,bool)"
                                      }
                                    },
                                    "id": 6880,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10357:52:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6881,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10357:52:38"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 6887,
                                        "name": "context",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6831,
                                        "src": "10474:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "expression": {
                                              "id": 6883,
                                              "name": "msg",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -15,
                                              "src": "10442:3:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                              }
                                            },
                                            "id": 6884,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sender",
                                            "nodeType": "MemberAccess",
                                            "src": "10442:10:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 6882,
                                          "name": "ITridentCallee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2482,
                                          "src": "10427:14:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_ITridentCallee_$2482_$",
                                            "typeString": "type(contract ITridentCallee)"
                                          }
                                        },
                                        "id": 6885,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10427:26:38",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ITridentCallee_$2482",
                                          "typeString": "contract ITridentCallee"
                                        }
                                      },
                                      "id": 6886,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "tridentSwapCallback",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2476,
                                      "src": "10427:46:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                                        "typeString": "function (bytes memory) external"
                                      }
                                    },
                                    "id": 6888,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10427:55:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6889,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10427:55:38"
                                },
                                {
                                  "assignments": [
                                    6891,
                                    6893
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 6891,
                                      "mutability": "mutable",
                                      "name": "balance0",
                                      "nameLocation": "10509:8:38",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 6922,
                                      "src": "10501:16:38",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 6890,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10501:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    },
                                    {
                                      "constant": false,
                                      "id": 6893,
                                      "mutability": "mutable",
                                      "name": "balance1",
                                      "nameLocation": "10527:8:38",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 6922,
                                      "src": "10519:16:38",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 6892,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10519:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 6896,
                                  "initialValue": {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 6894,
                                      "name": "_balance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7054,
                                      "src": "10539:8:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                                        "typeString": "function () view returns (uint256,uint256)"
                                      }
                                    },
                                    "id": 6895,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10539:10:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                      "typeString": "tuple(uint256,uint256)"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "10500:49:38"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6902,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 6900,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 6898,
                                            "name": "balance0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6891,
                                            "src": "10575:8:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 6899,
                                            "name": "_reserve0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6849,
                                            "src": "10586:9:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          "src": "10575:20:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">=",
                                        "rightExpression": {
                                          "id": 6901,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6829,
                                          "src": "10599:8:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "10575:32:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "hexValue": "494e53554646494349454e545f414d4f554e545f494e",
                                        "id": 6903,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10609:24:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9",
                                          "typeString": "literal_string \"INSUFFICIENT_AMOUNT_IN\""
                                        },
                                        "value": "INSUFFICIENT_AMOUNT_IN"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9",
                                          "typeString": "literal_string \"INSUFFICIENT_AMOUNT_IN\""
                                        }
                                      ],
                                      "id": 6897,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "10567:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 6904,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10567:67:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6905,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10567:67:38"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 6907,
                                        "name": "balance0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6891,
                                        "src": "10660:8:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6908,
                                        "name": "balance1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6893,
                                        "src": "10670:8:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6909,
                                        "name": "_reserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6849,
                                        "src": "10680:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        }
                                      },
                                      {
                                        "id": 6910,
                                        "name": "_reserve1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6851,
                                        "src": "10691:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        }
                                      },
                                      {
                                        "id": 6911,
                                        "name": "_blockTimestampLast",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6853,
                                        "src": "10702:19:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        },
                                        {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        },
                                        {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      ],
                                      "id": 6906,
                                      "name": "_update",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7194,
                                      "src": "10652:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$_t_uint32_$returns$__$",
                                        "typeString": "function (uint256,uint256,uint112,uint112,uint32)"
                                      }
                                    },
                                    "id": 6912,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10652:70:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6913,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10652:70:38"
                                },
                                {
                                  "eventCall": {
                                    "arguments": [
                                      {
                                        "id": 6915,
                                        "name": "recipient",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6825,
                                        "src": "10750:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 6916,
                                        "name": "tokenIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6823,
                                        "src": "10761:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 6917,
                                        "name": "token1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5957,
                                        "src": "10770:6:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 6918,
                                        "name": "amountIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6829,
                                        "src": "10778:8:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6919,
                                        "name": "amountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6820,
                                        "src": "10788:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 6914,
                                      "name": "Swap",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2444,
                                      "src": "10745:4:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                        "typeString": "function (address,address,address,uint256,uint256)"
                                      }
                                    },
                                    "id": 6920,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10745:53:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6921,
                                  "nodeType": "EmitStatement",
                                  "src": "10740:58:38"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6812,
                    "nodeType": "StructuredDocumentation",
                    "src": "9649:118:38",
                    "text": "@dev Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage."
                  },
                  "functionSelector": "053da1c8",
                  "id": 6989,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 6818,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 6817,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 5996,
                        "src": "9828:4:38"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9828:4:38"
                    }
                  ],
                  "name": "flashSwap",
                  "nameLocation": "9781:9:38",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6816,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9819:8:38"
                  },
                  "parameters": {
                    "id": 6815,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6814,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "9806:4:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6989,
                        "src": "9791:19:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6813,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9791:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9790:21:38"
                  },
                  "returnParameters": {
                    "id": 6821,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6820,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "9850:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 6989,
                        "src": "9842:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6819,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9842:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9841:19:38"
                  },
                  "scope": 7674,
                  "src": "9772:1679:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7001,
                    "nodeType": "Block",
                    "src": "11540:66:38",
                    "statements": [
                      {
                        "expression": {
                          "id": 6999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6993,
                            "name": "barFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5959,
                            "src": "11550:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 6995,
                                    "name": "masterDeployer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5953,
                                    "src": "11575:14:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                      "typeString": "contract IMasterDeployer"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                      "typeString": "contract IMasterDeployer"
                                    }
                                  ],
                                  "id": 6994,
                                  "name": "IMasterDeployer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2356,
                                  "src": "11559:15:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                    "typeString": "type(contract IMasterDeployer)"
                                  }
                                },
                                "id": 6996,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11559:31:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                  "typeString": "contract IMasterDeployer"
                                }
                              },
                              "id": 6997,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "barFee",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2324,
                              "src": "11559:38:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 6998,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11559:40:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11550:49:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7000,
                        "nodeType": "ExpressionStatement",
                        "src": "11550:49:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6990,
                    "nodeType": "StructuredDocumentation",
                    "src": "11457:47:38",
                    "text": "@dev Updates `barFee` for Trident protocol."
                  },
                  "functionSelector": "92bc3219",
                  "id": 7002,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updateBarFee",
                  "nameLocation": "11518:12:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6991,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11530:2:38"
                  },
                  "returnParameters": {
                    "id": 6992,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11540:0:38"
                  },
                  "scope": 7674,
                  "src": "11509:97:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7023,
                    "nodeType": "Block",
                    "src": "11799:117:38",
                    "statements": [
                      {
                        "expression": {
                          "id": 7013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7011,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7005,
                            "src": "11809:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7012,
                            "name": "reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5967,
                            "src": "11821:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "11809:20:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "id": 7014,
                        "nodeType": "ExpressionStatement",
                        "src": "11809:20:38"
                      },
                      {
                        "expression": {
                          "id": 7017,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7015,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7007,
                            "src": "11839:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7016,
                            "name": "reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5969,
                            "src": "11851:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "11839:20:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "id": 7018,
                        "nodeType": "ExpressionStatement",
                        "src": "11839:20:38"
                      },
                      {
                        "expression": {
                          "id": 7021,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7019,
                            "name": "_blockTimestampLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7009,
                            "src": "11869:19:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7020,
                            "name": "blockTimestampLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5971,
                            "src": "11891:18:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "11869:40:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 7022,
                        "nodeType": "ExpressionStatement",
                        "src": "11869:40:38"
                      }
                    ]
                  },
                  "id": 7024,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getReserves",
                  "nameLocation": "11621:12:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7003,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11633:2:38"
                  },
                  "returnParameters": {
                    "id": 7010,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7005,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "11704:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7024,
                        "src": "11696:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 7004,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "11696:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7007,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "11735:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7024,
                        "src": "11727:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 7006,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "11727:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7009,
                        "mutability": "mutable",
                        "name": "_blockTimestampLast",
                        "nameLocation": "11765:19:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7024,
                        "src": "11758:26:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7008,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11758:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11682:112:38"
                  },
                  "scope": 7674,
                  "src": "11612:304:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7053,
                    "nodeType": "Block",
                    "src": "12001:125:38",
                    "statements": [
                      {
                        "expression": {
                          "id": 7040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7031,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7027,
                            "src": "12011:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7034,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5955,
                                "src": "12038:6:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 7037,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "12054:4:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                      "typeString": "contract ConstantProductPool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                      "typeString": "contract ConstantProductPool"
                                    }
                                  ],
                                  "id": 7036,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12046:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 7035,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12046:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 7038,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12046:13:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 7032,
                                "name": "bento",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5950,
                                "src": "12022:5:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                  "typeString": "contract IBentoBoxMinimal"
                                }
                              },
                              "id": 7033,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2151,
                              "src": "12022:15:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address,address) view external returns (uint256)"
                              }
                            },
                            "id": 7039,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12022:38:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12011:49:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7041,
                        "nodeType": "ExpressionStatement",
                        "src": "12011:49:38"
                      },
                      {
                        "expression": {
                          "id": 7051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7042,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7029,
                            "src": "12070:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7045,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5957,
                                "src": "12097:6:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 7048,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "12113:4:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                      "typeString": "contract ConstantProductPool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                      "typeString": "contract ConstantProductPool"
                                    }
                                  ],
                                  "id": 7047,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12105:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 7046,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12105:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 7049,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12105:13:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 7043,
                                "name": "bento",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5950,
                                "src": "12081:5:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                  "typeString": "contract IBentoBoxMinimal"
                                }
                              },
                              "id": 7044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2151,
                              "src": "12081:15:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address,address) view external returns (uint256)"
                              }
                            },
                            "id": 7050,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12081:38:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12070:49:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7052,
                        "nodeType": "ExpressionStatement",
                        "src": "12070:49:38"
                      }
                    ]
                  },
                  "id": 7054,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_balance",
                  "nameLocation": "11931:8:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7025,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11939:2:38"
                  },
                  "returnParameters": {
                    "id": 7030,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7027,
                        "mutability": "mutable",
                        "name": "balance0",
                        "nameLocation": "11973:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7054,
                        "src": "11965:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7026,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11965:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7029,
                        "mutability": "mutable",
                        "name": "balance1",
                        "nameLocation": "11991:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7054,
                        "src": "11983:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7028,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11983:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11964:36:38"
                  },
                  "scope": 7674,
                  "src": "11922:204:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7193,
                    "nodeType": "Block",
                    "src": "12306:1081:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 7082,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7074,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7068,
                                  "name": "balance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7056,
                                  "src": "12324:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 7071,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "12341:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint112_$",
                                          "typeString": "type(uint112)"
                                        },
                                        "typeName": {
                                          "id": 7070,
                                          "name": "uint112",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "12341:7:38",
                                          "typeDescriptions": {}
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_uint112_$",
                                          "typeString": "type(uint112)"
                                        }
                                      ],
                                      "id": 7069,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "12336:4:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 7072,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12336:13:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_uint112",
                                      "typeString": "type(uint112)"
                                    }
                                  },
                                  "id": 7073,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "max",
                                  "nodeType": "MemberAccess",
                                  "src": "12336:17:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "src": "12324:29:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7081,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7075,
                                  "name": "balance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7058,
                                  "src": "12357:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 7078,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "12374:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint112_$",
                                          "typeString": "type(uint112)"
                                        },
                                        "typeName": {
                                          "id": 7077,
                                          "name": "uint112",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "12374:7:38",
                                          "typeDescriptions": {}
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_uint112_$",
                                          "typeString": "type(uint112)"
                                        }
                                      ],
                                      "id": 7076,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "12369:4:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 7079,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12369:13:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_uint112",
                                      "typeString": "type(uint112)"
                                    }
                                  },
                                  "id": 7080,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "max",
                                  "nodeType": "MemberAccess",
                                  "src": "12369:17:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "src": "12357:29:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "12324:62:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f564552464c4f57",
                              "id": 7083,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12388:10:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1",
                                "typeString": "literal_string \"OVERFLOW\""
                              },
                              "value": "OVERFLOW"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1",
                                "typeString": "literal_string \"OVERFLOW\""
                              }
                            ],
                            "id": 7067,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "12316:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12316:83:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7085,
                        "nodeType": "ExpressionStatement",
                        "src": "12316:83:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 7088,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7086,
                            "name": "_blockTimestampLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7064,
                            "src": "12413:19:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 7087,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12436:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12413:24:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 7186,
                          "nodeType": "Block",
                          "src": "12605:737:38",
                          "statements": [
                            {
                              "assignments": [
                                7105
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 7105,
                                  "mutability": "mutable",
                                  "name": "blockTimestamp",
                                  "nameLocation": "12626:14:38",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 7186,
                                  "src": "12619:21:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "typeName": {
                                    "id": 7104,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12619:6:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 7111,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 7108,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "12650:5:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 7109,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "src": "12650:15:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 7107,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12643:6:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint32_$",
                                    "typeString": "type(uint32)"
                                  },
                                  "typeName": {
                                    "id": 7106,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12643:6:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 7110,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12643:23:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12619:47:38"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 7122,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 7118,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 7114,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 7112,
                                      "name": "blockTimestamp",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7105,
                                      "src": "12684:14:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "id": 7113,
                                      "name": "_blockTimestampLast",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7064,
                                      "src": "12702:19:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "12684:37:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    },
                                    "id": 7117,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 7115,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7060,
                                      "src": "12725:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 7116,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12738:1:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "12725:14:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "12684:55:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  },
                                  "id": 7121,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7119,
                                    "name": "_reserve1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7062,
                                    "src": "12743:9:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 7120,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12756:1:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "12743:14:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "12684:73:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7167,
                              "nodeType": "IfStatement",
                              "src": "12680:519:38",
                              "trueBody": {
                                "id": 7166,
                                "nodeType": "Block",
                                "src": "12759:440:38",
                                "statements": [
                                  {
                                    "id": 7165,
                                    "nodeType": "UncheckedBlock",
                                    "src": "12777:408:38",
                                    "statements": [
                                      {
                                        "assignments": [
                                          7124
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 7124,
                                            "mutability": "mutable",
                                            "name": "timeElapsed",
                                            "nameLocation": "12816:11:38",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 7165,
                                            "src": "12809:18:38",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            },
                                            "typeName": {
                                              "id": 7123,
                                              "name": "uint32",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "12809:6:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 7128,
                                        "initialValue": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          },
                                          "id": 7127,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 7125,
                                            "name": "blockTimestamp",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7105,
                                            "src": "12830:14:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 7126,
                                            "name": "_blockTimestampLast",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7064,
                                            "src": "12847:19:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          },
                                          "src": "12830:36:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "12809:57:38"
                                      },
                                      {
                                        "assignments": [
                                          7130
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 7130,
                                            "mutability": "mutable",
                                            "name": "price0",
                                            "nameLocation": "12896:6:38",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 7165,
                                            "src": "12888:14:38",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "typeName": {
                                              "id": 7129,
                                              "name": "uint256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "12888:7:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 7140,
                                        "initialValue": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 7139,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 7136,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "arguments": [
                                                    {
                                                      "id": 7133,
                                                      "name": "_reserve1",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 7062,
                                                      "src": "12914:9:38",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint112",
                                                        "typeString": "uint112"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint112",
                                                        "typeString": "uint112"
                                                      }
                                                    ],
                                                    "id": 7132,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "12906:7:38",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_uint256_$",
                                                      "typeString": "type(uint256)"
                                                    },
                                                    "typeName": {
                                                      "id": 7131,
                                                      "name": "uint256",
                                                      "nodeType": "ElementaryTypeName",
                                                      "src": "12906:7:38",
                                                      "typeDescriptions": {}
                                                    }
                                                  },
                                                  "id": 7134,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "12906:18:38",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "<<",
                                                "rightExpression": {
                                                  "id": 7135,
                                                  "name": "PRECISION",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5935,
                                                  "src": "12928:9:38",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                },
                                                "src": "12906:31:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 7137,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "12905:33:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "/",
                                          "rightExpression": {
                                            "id": 7138,
                                            "name": "_reserve0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7060,
                                            "src": "12941:9:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          "src": "12905:45:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "12888:62:38"
                                      },
                                      {
                                        "expression": {
                                          "id": 7145,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 7141,
                                            "name": "price0CumulativeLast",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5961,
                                            "src": "12972:20:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "+=",
                                          "rightHandSide": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 7144,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 7142,
                                              "name": "price0",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7130,
                                              "src": "12996:6:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "id": 7143,
                                              "name": "timeElapsed",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7124,
                                              "src": "13005:11:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                              }
                                            },
                                            "src": "12996:20:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "12972:44:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 7146,
                                        "nodeType": "ExpressionStatement",
                                        "src": "12972:44:38"
                                      },
                                      {
                                        "assignments": [
                                          7148
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 7148,
                                            "mutability": "mutable",
                                            "name": "price1",
                                            "nameLocation": "13046:6:38",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 7165,
                                            "src": "13038:14:38",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "typeName": {
                                              "id": 7147,
                                              "name": "uint256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "13038:7:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 7158,
                                        "initialValue": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 7157,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 7154,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "arguments": [
                                                    {
                                                      "id": 7151,
                                                      "name": "_reserve0",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 7060,
                                                      "src": "13064:9:38",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint112",
                                                        "typeString": "uint112"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint112",
                                                        "typeString": "uint112"
                                                      }
                                                    ],
                                                    "id": 7150,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "13056:7:38",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_uint256_$",
                                                      "typeString": "type(uint256)"
                                                    },
                                                    "typeName": {
                                                      "id": 7149,
                                                      "name": "uint256",
                                                      "nodeType": "ElementaryTypeName",
                                                      "src": "13056:7:38",
                                                      "typeDescriptions": {}
                                                    }
                                                  },
                                                  "id": 7152,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "13056:18:38",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "<<",
                                                "rightExpression": {
                                                  "id": 7153,
                                                  "name": "PRECISION",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5935,
                                                  "src": "13078:9:38",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                },
                                                "src": "13056:31:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 7155,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "13055:33:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "/",
                                          "rightExpression": {
                                            "id": 7156,
                                            "name": "_reserve1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7062,
                                            "src": "13091:9:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          "src": "13055:45:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "13038:62:38"
                                      },
                                      {
                                        "expression": {
                                          "id": 7163,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 7159,
                                            "name": "price1CumulativeLast",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5963,
                                            "src": "13122:20:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "+=",
                                          "rightHandSide": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 7162,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 7160,
                                              "name": "price1",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7148,
                                              "src": "13146:6:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "id": 7161,
                                              "name": "timeElapsed",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7124,
                                              "src": "13155:11:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                              }
                                            },
                                            "src": "13146:20:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "13122:44:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 7164,
                                        "nodeType": "ExpressionStatement",
                                        "src": "13122:44:38"
                                      }
                                    ]
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 7173,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 7168,
                                  "name": "reserve0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5967,
                                  "src": "13212:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 7171,
                                      "name": "balance0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7056,
                                      "src": "13231:8:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 7170,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13223:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint112_$",
                                      "typeString": "type(uint112)"
                                    },
                                    "typeName": {
                                      "id": 7169,
                                      "name": "uint112",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13223:7:38",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 7172,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13223:17:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "src": "13212:28:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              "id": 7174,
                              "nodeType": "ExpressionStatement",
                              "src": "13212:28:38"
                            },
                            {
                              "expression": {
                                "id": 7180,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 7175,
                                  "name": "reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5969,
                                  "src": "13254:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 7178,
                                      "name": "balance1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7058,
                                      "src": "13273:8:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 7177,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13265:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint112_$",
                                      "typeString": "type(uint112)"
                                    },
                                    "typeName": {
                                      "id": 7176,
                                      "name": "uint112",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13265:7:38",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 7179,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13265:17:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "src": "13254:28:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              "id": 7181,
                              "nodeType": "ExpressionStatement",
                              "src": "13254:28:38"
                            },
                            {
                              "expression": {
                                "id": 7184,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 7182,
                                  "name": "blockTimestampLast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5971,
                                  "src": "13296:18:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 7183,
                                  "name": "blockTimestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7105,
                                  "src": "13317:14:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "13296:35:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "id": 7185,
                              "nodeType": "ExpressionStatement",
                              "src": "13296:35:38"
                            }
                          ]
                        },
                        "id": 7187,
                        "nodeType": "IfStatement",
                        "src": "12409:933:38",
                        "trueBody": {
                          "id": 7103,
                          "nodeType": "Block",
                          "src": "12439:160:38",
                          "statements": [
                            {
                              "expression": {
                                "id": 7094,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 7089,
                                  "name": "reserve0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5967,
                                  "src": "12518:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 7092,
                                      "name": "balance0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7056,
                                      "src": "12537:8:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 7091,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12529:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint112_$",
                                      "typeString": "type(uint112)"
                                    },
                                    "typeName": {
                                      "id": 7090,
                                      "name": "uint112",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12529:7:38",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 7093,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12529:17:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "src": "12518:28:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              "id": 7095,
                              "nodeType": "ExpressionStatement",
                              "src": "12518:28:38"
                            },
                            {
                              "expression": {
                                "id": 7101,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 7096,
                                  "name": "reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5969,
                                  "src": "12560:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 7099,
                                      "name": "balance1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7058,
                                      "src": "12579:8:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 7098,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12571:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint112_$",
                                      "typeString": "type(uint112)"
                                    },
                                    "typeName": {
                                      "id": 7097,
                                      "name": "uint112",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12571:7:38",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 7100,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12571:17:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "src": "12560:28:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              "id": 7102,
                              "nodeType": "ExpressionStatement",
                              "src": "12560:28:38"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 7189,
                              "name": "balance0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7056,
                              "src": "13361:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7190,
                              "name": "balance1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7058,
                              "src": "13371:8:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7188,
                            "name": "Sync",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5929,
                            "src": "13356:4:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 7191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13356:24:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7192,
                        "nodeType": "EmitStatement",
                        "src": "13351:29:38"
                      }
                    ]
                  },
                  "id": 7194,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_update",
                  "nameLocation": "12141:7:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7065,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7056,
                        "mutability": "mutable",
                        "name": "balance0",
                        "nameLocation": "12166:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7194,
                        "src": "12158:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7055,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12158:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7058,
                        "mutability": "mutable",
                        "name": "balance1",
                        "nameLocation": "12192:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7194,
                        "src": "12184:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7057,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12184:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7060,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "12218:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7194,
                        "src": "12210:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 7059,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "12210:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7062,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "12245:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7194,
                        "src": "12237:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 7061,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "12237:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7064,
                        "mutability": "mutable",
                        "name": "_blockTimestampLast",
                        "nameLocation": "12271:19:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7194,
                        "src": "12264:26:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7063,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12264:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12148:148:38"
                  },
                  "returnParameters": {
                    "id": 7066,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12306:0:38"
                  },
                  "scope": 7674,
                  "src": "12132:1255:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7283,
                    "nodeType": "Block",
                    "src": "13507:723:38",
                    "statements": [
                      {
                        "expression": {
                          "id": 7207,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7205,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7201,
                            "src": "13517:12:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7206,
                            "name": "totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11917,
                            "src": "13532:11:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13517:26:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7208,
                        "nodeType": "ExpressionStatement",
                        "src": "13517:26:38"
                      },
                      {
                        "assignments": [
                          7210
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7210,
                            "mutability": "mutable",
                            "name": "_kLast",
                            "nameLocation": "13561:6:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7283,
                            "src": "13553:14:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7209,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13553:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7212,
                        "initialValue": {
                          "id": 7211,
                          "name": "kLast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5965,
                          "src": "13570:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13553:22:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7215,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7213,
                            "name": "_kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7210,
                            "src": "13589:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 7214,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13599:1:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13589:11:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7282,
                        "nodeType": "IfStatement",
                        "src": "13585:639:38",
                        "trueBody": {
                          "id": 7281,
                          "nodeType": "Block",
                          "src": "13602:622:38",
                          "statements": [
                            {
                              "expression": {
                                "id": 7226,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 7216,
                                  "name": "computed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7203,
                                  "src": "13616:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7224,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "arguments": [
                                          {
                                            "id": 7221,
                                            "name": "_reserve0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7196,
                                            "src": "13652:9:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          ],
                                          "id": 7220,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "13644:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 7219,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "13644:7:38",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 7222,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13644:18:38",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 7223,
                                        "name": "_reserve1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7198,
                                        "src": "13665:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        }
                                      },
                                      "src": "13644:30:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 7217,
                                      "name": "TridentMath",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3139,
                                      "src": "13627:11:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_TridentMath_$3139_$",
                                        "typeString": "type(library TridentMath)"
                                      }
                                    },
                                    "id": 7218,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sqrt",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3138,
                                    "src": "13627:16:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7225,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13627:48:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13616:59:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7227,
                              "nodeType": "ExpressionStatement",
                              "src": "13616:59:38"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7230,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7228,
                                  "name": "computed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7203,
                                  "src": "13693:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "id": 7229,
                                  "name": "_kLast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7210,
                                  "src": "13704:6:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13693:17:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7280,
                              "nodeType": "IfStatement",
                              "src": "13689:525:38",
                              "trueBody": {
                                "id": 7279,
                                "nodeType": "Block",
                                "src": "13712:502:38",
                                "statements": [
                                  {
                                    "assignments": [
                                      7232
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 7232,
                                        "mutability": "mutable",
                                        "name": "_barFee",
                                        "nameLocation": "13799:7:38",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 7279,
                                        "src": "13791:15:38",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 7231,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "13791:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 7234,
                                    "initialValue": {
                                      "id": 7233,
                                      "name": "barFee",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5959,
                                      "src": "13809:6:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "13791:24:38"
                                  },
                                  {
                                    "assignments": [
                                      7236
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 7236,
                                        "mutability": "mutable",
                                        "name": "numerator",
                                        "nameLocation": "13841:9:38",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 7279,
                                        "src": "13833:17:38",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 7235,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "13833:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 7245,
                                    "initialValue": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7244,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7242,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7237,
                                          "name": "_totalSupply",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7201,
                                          "src": "13853:12:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7240,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7238,
                                                "name": "computed",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7203,
                                                "src": "13869:8:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "id": 7239,
                                                "name": "_kLast",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7210,
                                                "src": "13880:6:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "13869:17:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7241,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "13868:19:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "13853:34:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 7243,
                                        "name": "_barFee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7232,
                                        "src": "13890:7:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "13853:44:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "13833:64:38"
                                  },
                                  {
                                    "assignments": [
                                      7247
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 7247,
                                        "mutability": "mutable",
                                        "name": "denominator",
                                        "nameLocation": "13923:11:38",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 7279,
                                        "src": "13915:19:38",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 7246,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "13915:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 7258,
                                    "initialValue": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7257,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7253,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7250,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7248,
                                                "name": "MAX_FEE",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5938,
                                                "src": "13938:7:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "id": 7249,
                                                "name": "_barFee",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7232,
                                                "src": "13948:7:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "13938:17:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7251,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "13937:19:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 7252,
                                          "name": "computed",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7203,
                                          "src": "13959:8:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "13937:30:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7256,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7254,
                                          "name": "_barFee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7232,
                                          "src": "13970:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 7255,
                                          "name": "_kLast",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7210,
                                          "src": "13980:6:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "13970:16:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "13937:49:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "13915:71:38"
                                  },
                                  {
                                    "assignments": [
                                      7260
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 7260,
                                        "mutability": "mutable",
                                        "name": "liquidity",
                                        "nameLocation": "14012:9:38",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 7279,
                                        "src": "14004:17:38",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 7259,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "14004:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 7264,
                                    "initialValue": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7263,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7261,
                                        "name": "numerator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7236,
                                        "src": "14024:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "id": 7262,
                                        "name": "denominator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7247,
                                        "src": "14036:11:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "14024:23:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "14004:43:38"
                                  },
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7267,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7265,
                                        "name": "liquidity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7260,
                                        "src": "14070:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "hexValue": "30",
                                        "id": 7266,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "14083:1:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "14070:14:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 7278,
                                    "nodeType": "IfStatement",
                                    "src": "14066:134:38",
                                    "trueBody": {
                                      "id": 7277,
                                      "nodeType": "Block",
                                      "src": "14086:114:38",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "id": 7269,
                                                "name": "barFeeTo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5947,
                                                "src": "14114:8:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "id": 7270,
                                                "name": "liquidity",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7260,
                                                "src": "14124:9:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 7268,
                                              "name": "_mint",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 12250,
                                              "src": "14108:5:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                              }
                                            },
                                            "id": 7271,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "14108:26:38",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 7272,
                                          "nodeType": "ExpressionStatement",
                                          "src": "14108:26:38"
                                        },
                                        {
                                          "expression": {
                                            "id": 7275,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 7273,
                                              "name": "_totalSupply",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7201,
                                              "src": "14156:12:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "+=",
                                            "rightHandSide": {
                                              "id": 7274,
                                              "name": "liquidity",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7260,
                                              "src": "14172:9:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "14156:25:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 7276,
                                          "nodeType": "ExpressionStatement",
                                          "src": "14156:25:38"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 7284,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mintFee",
                  "nameLocation": "13402:8:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7199,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7196,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "13419:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7284,
                        "src": "13411:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 7195,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "13411:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7198,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "13438:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7284,
                        "src": "13430:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 7197,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "13430:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13410:38:38"
                  },
                  "returnParameters": {
                    "id": 7204,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7201,
                        "mutability": "mutable",
                        "name": "_totalSupply",
                        "nameLocation": "13475:12:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7284,
                        "src": "13467:20:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7200,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13467:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7203,
                        "mutability": "mutable",
                        "name": "computed",
                        "nameLocation": "13497:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7284,
                        "src": "13489:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7202,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13489:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13466:40:38"
                  },
                  "scope": 7674,
                  "src": "13393:837:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7315,
                    "nodeType": "Block",
                    "src": "14400:182:38",
                    "statements": [
                      {
                        "assignments": [
                          7296
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7296,
                            "mutability": "mutable",
                            "name": "amountInWithFee",
                            "nameLocation": "14418:15:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7315,
                            "src": "14410:23:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7295,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14410:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7300,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7297,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7286,
                            "src": "14436:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 7298,
                            "name": "MAX_FEE_MINUS_SWAP_FEE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5945,
                            "src": "14447:22:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14436:33:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14410:59:38"
                      },
                      {
                        "expression": {
                          "id": 7313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7301,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7293,
                            "src": "14479:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7304,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7302,
                                    "name": "amountInWithFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7296,
                                    "src": "14492:15:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 7303,
                                    "name": "reserveAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7290,
                                    "src": "14510:16:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "14492:34:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 7305,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "14491:36:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7310,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 7308,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 7306,
                                      "name": "reserveAmountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7288,
                                      "src": "14531:15:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 7307,
                                      "name": "MAX_FEE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5938,
                                      "src": "14549:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "14531:25:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "id": 7309,
                                    "name": "amountInWithFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7296,
                                    "src": "14559:15:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "14531:43:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 7311,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "14530:45:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "14491:84:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14479:96:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7314,
                        "nodeType": "ExpressionStatement",
                        "src": "14479:96:38"
                      }
                    ]
                  },
                  "id": 7316,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getAmountOut",
                  "nameLocation": "14245:13:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7291,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7286,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nameLocation": "14276:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7316,
                        "src": "14268:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7285,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14268:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7288,
                        "mutability": "mutable",
                        "name": "reserveAmountIn",
                        "nameLocation": "14302:15:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7316,
                        "src": "14294:23:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7287,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14294:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7290,
                        "mutability": "mutable",
                        "name": "reserveAmountOut",
                        "nameLocation": "14335:16:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7316,
                        "src": "14327:24:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7289,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14327:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14258:99:38"
                  },
                  "returnParameters": {
                    "id": 7294,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7293,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "14389:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7316,
                        "src": "14381:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7292,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14381:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14380:19:38"
                  },
                  "scope": 7674,
                  "src": "14236:346:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7346,
                    "nodeType": "Block",
                    "src": "14751:131:38",
                    "statements": [
                      {
                        "expression": {
                          "id": 7344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7327,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7325,
                            "src": "14761:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7343,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7341,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 7332,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7330,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7328,
                                        "name": "reserveAmountIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7320,
                                        "src": "14773:15:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 7329,
                                        "name": "amountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7318,
                                        "src": "14791:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "14773:27:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 7331,
                                      "name": "MAX_FEE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5938,
                                      "src": "14803:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "14773:37:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 7333,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "14772:39:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 7339,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 7336,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 7334,
                                            "name": "reserveAmountOut",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7322,
                                            "src": "14816:16:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 7335,
                                            "name": "amountOut",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7318,
                                            "src": "14835:9:38",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "14816:28:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 7337,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "14815:30:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 7338,
                                      "name": "MAX_FEE_MINUS_SWAP_FEE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5945,
                                      "src": "14848:22:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "14815:55:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 7340,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "14814:57:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14772:99:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 7342,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14874:1:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "14772:103:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14761:114:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7345,
                        "nodeType": "ExpressionStatement",
                        "src": "14761:114:38"
                      }
                    ]
                  },
                  "id": 7347,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getAmountIn",
                  "nameLocation": "14597:12:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7323,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7318,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "14627:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7347,
                        "src": "14619:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7317,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14619:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7320,
                        "mutability": "mutable",
                        "name": "reserveAmountIn",
                        "nameLocation": "14654:15:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7347,
                        "src": "14646:23:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7319,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14646:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7322,
                        "mutability": "mutable",
                        "name": "reserveAmountOut",
                        "nameLocation": "14687:16:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7347,
                        "src": "14679:24:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7321,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14679:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14609:100:38"
                  },
                  "returnParameters": {
                    "id": 7326,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7325,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nameLocation": "14741:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7347,
                        "src": "14733:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7324,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14733:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14732:18:38"
                  },
                  "scope": 7674,
                  "src": "14588:294:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7387,
                    "nodeType": "Block",
                    "src": "15015:188:38",
                    "statements": [
                      {
                        "condition": {
                          "id": 7358,
                          "name": "unwrapBento",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7355,
                          "src": "15029:11:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 7385,
                          "nodeType": "Block",
                          "src": "15124:73:38",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 7376,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7349,
                                    "src": "15153:5:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 7379,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "15168:4:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                          "typeString": "contract ConstantProductPool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                          "typeString": "contract ConstantProductPool"
                                        }
                                      ],
                                      "id": 7378,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "15160:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 7377,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "15160:7:38",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 7380,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15160:13:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 7381,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7353,
                                    "src": "15175:2:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 7382,
                                    "name": "shares",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7351,
                                    "src": "15179:6:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 7373,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5950,
                                    "src": "15138:5:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 7375,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2227,
                                  "src": "15138:14:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,uint256) external"
                                  }
                                },
                                "id": 7383,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15138:48:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7384,
                              "nodeType": "ExpressionStatement",
                              "src": "15138:48:38"
                            }
                          ]
                        },
                        "id": 7386,
                        "nodeType": "IfStatement",
                        "src": "15025:172:38",
                        "trueBody": {
                          "id": 7372,
                          "nodeType": "Block",
                          "src": "15042:76:38",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 7362,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7349,
                                    "src": "15071:5:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 7365,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "15086:4:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                          "typeString": "contract ConstantProductPool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                          "typeString": "contract ConstantProductPool"
                                        }
                                      ],
                                      "id": 7364,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "15078:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 7363,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "15078:7:38",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 7366,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15078:13:38",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 7367,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7353,
                                    "src": "15093:2:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 7368,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15097:1:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "id": 7369,
                                    "name": "shares",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7351,
                                    "src": "15100:6:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 7359,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5950,
                                    "src": "15056:5:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 7361,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "withdraw",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2215,
                                  "src": "15056:14:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (address,address,address,uint256,uint256) external returns (uint256,uint256)"
                                  }
                                },
                                "id": 7370,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15056:51:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "id": 7371,
                              "nodeType": "ExpressionStatement",
                              "src": "15056:51:38"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 7388,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nameLocation": "14897:9:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7356,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7349,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "14924:5:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7388,
                        "src": "14916:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7348,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14916:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7351,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "14947:6:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7388,
                        "src": "14939:14:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7350,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14939:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7353,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "14971:2:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7388,
                        "src": "14963:10:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7352,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14963:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7355,
                        "mutability": "mutable",
                        "name": "unwrapBento",
                        "nameLocation": "14988:11:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7388,
                        "src": "14983:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7354,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14983:4:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14906:99:38"
                  },
                  "returnParameters": {
                    "id": 7357,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15015:0:38"
                  },
                  "scope": 7674,
                  "src": "14888:315:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7470,
                    "nodeType": "Block",
                    "src": "15503:441:38",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 7410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7406,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7404,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7395,
                              "src": "15517:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 7405,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15530:1:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "15517:14:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7409,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7407,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7397,
                              "src": "15535:9:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 7408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15548:1:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "15535:14:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "15517:32:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7415,
                        "nodeType": "IfStatement",
                        "src": "15513:51:38",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "hexValue": "30",
                                "id": 7411,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15559:1:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "hexValue": "30",
                                "id": 7412,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15562:1:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "id": 7413,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "15558:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$",
                              "typeString": "tuple(int_const 0,int_const 0)"
                            }
                          },
                          "functionReturnParameters": 7403,
                          "id": 7414,
                          "nodeType": "Return",
                          "src": "15551:13:38"
                        }
                      },
                      {
                        "assignments": [
                          7417
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7417,
                            "mutability": "mutable",
                            "name": "amount1Optimal",
                            "nameLocation": "15582:14:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7470,
                            "src": "15574:22:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7416,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15574:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7424,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7418,
                                  "name": "_amount0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7391,
                                  "src": "15600:8:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 7419,
                                  "name": "_reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7397,
                                  "src": "15611:9:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15600:20:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 7421,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "15599:22:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 7422,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7395,
                            "src": "15624:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15599:34:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15574:59:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7425,
                            "name": "amount1Optimal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7417,
                            "src": "15647:14:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "id": 7426,
                            "name": "_amount1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7393,
                            "src": "15665:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15647:26:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 7468,
                          "nodeType": "Block",
                          "src": "15773:165:38",
                          "statements": [
                            {
                              "assignments": [
                                7445
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 7445,
                                  "mutability": "mutable",
                                  "name": "amount0Optimal",
                                  "nameLocation": "15795:14:38",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 7468,
                                  "src": "15787:22:38",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 7444,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15787:7:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 7452,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7451,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7448,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7446,
                                        "name": "_amount1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7393,
                                        "src": "15813:8:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 7447,
                                        "name": "_reserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7395,
                                        "src": "15824:9:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "15813:20:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7449,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "15812:22:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 7450,
                                  "name": "_reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7397,
                                  "src": "15837:9:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15812:34:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15787:59:38"
                            },
                            {
                              "expression": {
                                "id": 7466,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 7453,
                                  "name": "token0Fee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7400,
                                  "src": "15860:9:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7465,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7459,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7454,
                                          "name": "swapFee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5943,
                                          "src": "15873:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7457,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7455,
                                                "name": "_amount0",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7391,
                                                "src": "15884:8:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "id": 7456,
                                                "name": "amount0Optimal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7445,
                                                "src": "15895:14:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "15884:25:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7458,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "15883:27:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "15873:37:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 7460,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "15872:39:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7463,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "32",
                                          "id": 7461,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "15915:1:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 7462,
                                          "name": "MAX_FEE",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5938,
                                          "src": "15919:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "15915:11:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 7464,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "15914:13:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "15872:55:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15860:67:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7467,
                              "nodeType": "ExpressionStatement",
                              "src": "15860:67:38"
                            }
                          ]
                        },
                        "id": 7469,
                        "nodeType": "IfStatement",
                        "src": "15643:295:38",
                        "trueBody": {
                          "id": 7443,
                          "nodeType": "Block",
                          "src": "15675:92:38",
                          "statements": [
                            {
                              "expression": {
                                "id": 7441,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 7428,
                                  "name": "token1Fee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7402,
                                  "src": "15689:9:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7440,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7434,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7429,
                                          "name": "swapFee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5943,
                                          "src": "15702:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 7432,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7430,
                                                "name": "_amount1",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7393,
                                                "src": "15713:8:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "id": 7431,
                                                "name": "amount1Optimal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7417,
                                                "src": "15724:14:38",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "15713:25:38",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 7433,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "15712:27:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "15702:37:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 7435,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "15701:39:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7438,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "32",
                                          "id": 7436,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "15744:1:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 7437,
                                          "name": "MAX_FEE",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5938,
                                          "src": "15748:7:38",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "15744:11:38",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 7439,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "15743:13:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "15701:55:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15689:67:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7442,
                              "nodeType": "ExpressionStatement",
                              "src": "15689:67:38"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7389,
                    "nodeType": "StructuredDocumentation",
                    "src": "15209:88:38",
                    "text": "@dev This fee is charged to cover for `swapFee` when users add unbalanced liquidity."
                  },
                  "id": 7471,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_nonOptimalMintFee",
                  "nameLocation": "15311:18:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7398,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7391,
                        "mutability": "mutable",
                        "name": "_amount0",
                        "nameLocation": "15347:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7471,
                        "src": "15339:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7390,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15339:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7393,
                        "mutability": "mutable",
                        "name": "_amount1",
                        "nameLocation": "15373:8:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7471,
                        "src": "15365:16:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7392,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15365:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7395,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "15399:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7471,
                        "src": "15391:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7394,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15391:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7397,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "15426:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7471,
                        "src": "15418:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7396,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15418:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15329:112:38"
                  },
                  "returnParameters": {
                    "id": 7403,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7400,
                        "mutability": "mutable",
                        "name": "token0Fee",
                        "nameLocation": "15473:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7471,
                        "src": "15465:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7399,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15465:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7402,
                        "mutability": "mutable",
                        "name": "token1Fee",
                        "nameLocation": "15492:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7471,
                        "src": "15484:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7401,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15484:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15464:38:38"
                  },
                  "scope": 7674,
                  "src": "15302:642:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2415
                  ],
                  "body": {
                    "id": 7498,
                    "nodeType": "Block",
                    "src": "16026:98:38",
                    "statements": [
                      {
                        "expression": {
                          "id": 7484,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7478,
                            "name": "assets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7476,
                            "src": "16036:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "32",
                                "id": 7482,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16059:1:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                }
                              ],
                              "id": 7481,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "16045:13:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (address[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 7479,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16049:7:38",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 7480,
                                "nodeType": "ArrayTypeName",
                                "src": "16049:9:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                  "typeString": "address[]"
                                }
                              }
                            },
                            "id": 7483,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16045:16:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "16036:25:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 7485,
                        "nodeType": "ExpressionStatement",
                        "src": "16036:25:38"
                      },
                      {
                        "expression": {
                          "id": 7490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 7486,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7476,
                              "src": "16071:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 7488,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 7487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16078:1:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "16071:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7489,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5955,
                            "src": "16083:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "16071:18:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7491,
                        "nodeType": "ExpressionStatement",
                        "src": "16071:18:38"
                      },
                      {
                        "expression": {
                          "id": 7496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 7492,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7476,
                              "src": "16099:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 7494,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 7493,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16106:1:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "16099:9:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7495,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5957,
                            "src": "16111:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "16099:18:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7497,
                        "nodeType": "ExpressionStatement",
                        "src": "16099:18:38"
                      }
                    ]
                  },
                  "functionSelector": "67e4ac2c",
                  "id": 7499,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAssets",
                  "nameLocation": "15959:9:38",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7473,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "15983:8:38"
                  },
                  "parameters": {
                    "id": 7472,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15968:2:38"
                  },
                  "returnParameters": {
                    "id": 7477,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7476,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "16018:6:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7499,
                        "src": "16001:23:38",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7474,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "16001:7:38",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 7475,
                          "nodeType": "ArrayTypeName",
                          "src": "16001:9:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16000:25:38"
                  },
                  "scope": 7674,
                  "src": "15950:174:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2423
                  ],
                  "body": {
                    "id": 7557,
                    "nodeType": "Block",
                    "src": "16227:433:38",
                    "statements": [
                      {
                        "assignments": [
                          7508,
                          7510
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7508,
                            "mutability": "mutable",
                            "name": "tokenIn",
                            "nameLocation": "16246:7:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7557,
                            "src": "16238:15:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 7507,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16238:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 7510,
                            "mutability": "mutable",
                            "name": "amountIn",
                            "nameLocation": "16263:8:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7557,
                            "src": "16255:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7509,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16255:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7520,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 7513,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7501,
                              "src": "16286:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 7515,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "16293:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 7514,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16293:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 7517,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "16302:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 7516,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16302:7:38",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 7518,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "16292:18:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 7511,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "16275:3:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 7512,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "16275:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 7519,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16275:36:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$",
                            "typeString": "tuple(address payable,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16237:74:38"
                      },
                      {
                        "assignments": [
                          7522,
                          7524,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7522,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "16330:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7557,
                            "src": "16322:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 7521,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "16322:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 7524,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "16349:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7557,
                            "src": "16341:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 7523,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "16341:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 7527,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 7525,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7024,
                            "src": "16364:12:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                              "typeString": "function () view returns (uint112,uint112,uint32)"
                            }
                          },
                          "id": 7526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16364:14:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "tuple(uint112,uint112,uint32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16321:57:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 7530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7528,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7508,
                            "src": "16392:7:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 7529,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5955,
                            "src": "16403:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "16392:17:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 7555,
                          "nodeType": "Block",
                          "src": "16504:150:38",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 7543,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 7541,
                                      "name": "tokenIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7508,
                                      "src": "16526:7:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 7542,
                                      "name": "token1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5957,
                                      "src": "16537:6:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "16526:17:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e56414c49445f494e5055545f544f4b454e",
                                    "id": 7544,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16545:21:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                      "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                    },
                                    "value": "INVALID_INPUT_TOKEN"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                      "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                    }
                                  ],
                                  "id": 7540,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "16518:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 7545,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16518:49:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7546,
                              "nodeType": "ExpressionStatement",
                              "src": "16518:49:38"
                            },
                            {
                              "expression": {
                                "id": 7553,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 7547,
                                  "name": "finalAmountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7505,
                                  "src": "16581:14:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 7549,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7510,
                                      "src": "16612:8:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 7550,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7524,
                                      "src": "16622:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    },
                                    {
                                      "id": 7551,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7522,
                                      "src": "16633:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      },
                                      {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    ],
                                    "id": 7548,
                                    "name": "_getAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7316,
                                    "src": "16598:13:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 7552,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16598:45:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16581:62:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7554,
                              "nodeType": "ExpressionStatement",
                              "src": "16581:62:38"
                            }
                          ]
                        },
                        "id": 7556,
                        "nodeType": "IfStatement",
                        "src": "16388:266:38",
                        "trueBody": {
                          "id": 7539,
                          "nodeType": "Block",
                          "src": "16411:87:38",
                          "statements": [
                            {
                              "expression": {
                                "id": 7537,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 7531,
                                  "name": "finalAmountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7505,
                                  "src": "16425:14:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 7533,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7510,
                                      "src": "16456:8:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 7534,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7522,
                                      "src": "16466:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    },
                                    {
                                      "id": 7535,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7524,
                                      "src": "16477:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      },
                                      {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    ],
                                    "id": 7532,
                                    "name": "_getAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7316,
                                    "src": "16442:13:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 7536,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16442:45:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16425:62:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7538,
                              "nodeType": "ExpressionStatement",
                              "src": "16425:62:38"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "functionSelector": "a8f1f52e",
                  "id": 7558,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountOut",
                  "nameLocation": "16139:12:38",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7503,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "16185:8:38"
                  },
                  "parameters": {
                    "id": 7502,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7501,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "16167:4:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7558,
                        "src": "16152:19:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7500,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "16152:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16151:21:38"
                  },
                  "returnParameters": {
                    "id": 7506,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7505,
                        "mutability": "mutable",
                        "name": "finalAmountOut",
                        "nameLocation": "16211:14:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7558,
                        "src": "16203:22:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7504,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16203:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16202:24:38"
                  },
                  "scope": 7674,
                  "src": "16130:530:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2431
                  ],
                  "body": {
                    "id": 7616,
                    "nodeType": "Block",
                    "src": "16761:436:38",
                    "statements": [
                      {
                        "assignments": [
                          7567,
                          7569
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7567,
                            "mutability": "mutable",
                            "name": "tokenOut",
                            "nameLocation": "16780:8:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7616,
                            "src": "16772:16:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 7566,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16772:7:38",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 7569,
                            "mutability": "mutable",
                            "name": "amountOut",
                            "nameLocation": "16798:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7616,
                            "src": "16790:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7568,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16790:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7579,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 7572,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7560,
                              "src": "16822:4:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 7574,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "16829:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 7573,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16829:7:38",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 7576,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "16838:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 7575,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16838:7:38",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 7577,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "16828:18:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 7570,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "16811:3:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 7571,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "16811:10:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 7578,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16811:36:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$",
                            "typeString": "tuple(address payable,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16771:76:38"
                      },
                      {
                        "assignments": [
                          7581,
                          7583,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7581,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "16866:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7616,
                            "src": "16858:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 7580,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "16858:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 7583,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "16885:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7616,
                            "src": "16877:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 7582,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "16877:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 7586,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 7584,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7024,
                            "src": "16900:12:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                              "typeString": "function () view returns (uint112,uint112,uint32)"
                            }
                          },
                          "id": 7585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16900:14:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "tuple(uint112,uint112,uint32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16857:57:38"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 7589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7587,
                            "name": "tokenOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7567,
                            "src": "16928:8:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 7588,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5957,
                            "src": "16940:6:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "16928:18:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 7614,
                          "nodeType": "Block",
                          "src": "17040:151:38",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 7602,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 7600,
                                      "name": "tokenOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7567,
                                      "src": "17062:8:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 7601,
                                      "name": "token0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5955,
                                      "src": "17074:6:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "17062:18:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e56414c49445f4f55545055545f544f4b454e",
                                    "id": 7603,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17082:22:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831",
                                      "typeString": "literal_string \"INVALID_OUTPUT_TOKEN\""
                                    },
                                    "value": "INVALID_OUTPUT_TOKEN"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831",
                                      "typeString": "literal_string \"INVALID_OUTPUT_TOKEN\""
                                    }
                                  ],
                                  "id": 7599,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "17054:7:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 7604,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17054:51:38",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7605,
                              "nodeType": "ExpressionStatement",
                              "src": "17054:51:38"
                            },
                            {
                              "expression": {
                                "id": 7612,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 7606,
                                  "name": "finalAmountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7564,
                                  "src": "17119:13:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 7608,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7569,
                                      "src": "17148:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 7609,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7583,
                                      "src": "17159:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    },
                                    {
                                      "id": 7610,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7581,
                                      "src": "17170:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      },
                                      {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    ],
                                    "id": 7607,
                                    "name": "_getAmountIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7347,
                                    "src": "17135:12:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 7611,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17135:45:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17119:61:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7613,
                              "nodeType": "ExpressionStatement",
                              "src": "17119:61:38"
                            }
                          ]
                        },
                        "id": 7615,
                        "nodeType": "IfStatement",
                        "src": "16924:267:38",
                        "trueBody": {
                          "id": 7598,
                          "nodeType": "Block",
                          "src": "16948:86:38",
                          "statements": [
                            {
                              "expression": {
                                "id": 7596,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 7590,
                                  "name": "finalAmountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7564,
                                  "src": "16962:13:38",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 7592,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7569,
                                      "src": "16991:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 7593,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7581,
                                      "src": "17002:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    },
                                    {
                                      "id": 7594,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7583,
                                      "src": "17013:9:38",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      },
                                      {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    ],
                                    "id": 7591,
                                    "name": "_getAmountIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7347,
                                    "src": "16978:12:38",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 7595,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16978:45:38",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16962:61:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7597,
                              "nodeType": "ExpressionStatement",
                              "src": "16962:61:38"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "functionSelector": "499a3c50",
                  "id": 7617,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountIn",
                  "nameLocation": "16675:11:38",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7562,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "16720:8:38"
                  },
                  "parameters": {
                    "id": 7561,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7560,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "16702:4:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7617,
                        "src": "16687:19:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7559,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "16687:5:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16686:21:38"
                  },
                  "returnParameters": {
                    "id": 7565,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7564,
                        "mutability": "mutable",
                        "name": "finalAmountIn",
                        "nameLocation": "16746:13:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7617,
                        "src": "16738:21:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7563,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16738:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16737:23:38"
                  },
                  "scope": 7674,
                  "src": "16666:531:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7630,
                    "nodeType": "Block",
                    "src": "17451:38:38",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 7627,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7024,
                            "src": "17468:12:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                              "typeString": "function () view returns (uint112,uint112,uint32)"
                            }
                          },
                          "id": 7628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17468:14:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "tuple(uint112,uint112,uint32)"
                          }
                        },
                        "functionReturnParameters": 7626,
                        "id": 7629,
                        "nodeType": "Return",
                        "src": "17461:21:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7618,
                    "nodeType": "StructuredDocumentation",
                    "src": "17203:59:38",
                    "text": "@dev returned values are in terms of BentoBox \"shares\"."
                  },
                  "functionSelector": "0902f1ac",
                  "id": 7631,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReserves",
                  "nameLocation": "17276:11:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7619,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17287:2:38"
                  },
                  "returnParameters": {
                    "id": 7626,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7621,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "17356:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7631,
                        "src": "17348:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 7620,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "17348:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7623,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "17387:9:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7631,
                        "src": "17379:17:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 7622,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "17379:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7625,
                        "mutability": "mutable",
                        "name": "_blockTimestampLast",
                        "nameLocation": "17417:19:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7631,
                        "src": "17410:26:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7624,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "17410:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17334:112:38"
                  },
                  "scope": 7674,
                  "src": "17267:222:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7672,
                    "nodeType": "Block",
                    "src": "17762:289:38",
                    "statements": [
                      {
                        "assignments": [
                          7642,
                          7644,
                          7646
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7642,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "17781:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7672,
                            "src": "17773:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 7641,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "17773:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 7644,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "17800:9:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7672,
                            "src": "17792:17:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 7643,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "17792:7:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 7646,
                            "mutability": "mutable",
                            "name": "__blockTimestampLast",
                            "nameLocation": "17818:20:38",
                            "nodeType": "VariableDeclaration",
                            "scope": 7672,
                            "src": "17811:27:38",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 7645,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "17811:6:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7649,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 7647,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7024,
                            "src": "17842:12:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                              "typeString": "function () view returns (uint112,uint112,uint32)"
                            }
                          },
                          "id": 7648,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17842:14:38",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "tuple(uint112,uint112,uint32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17772:84:38"
                      },
                      {
                        "expression": {
                          "id": 7657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7650,
                            "name": "_nativeReserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7635,
                            "src": "17866:15:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7653,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5955,
                                "src": "17899:6:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 7654,
                                "name": "_reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7642,
                                "src": "17907:9:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              {
                                "hexValue": "66616c7365",
                                "id": 7655,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17918:5:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "id": 7651,
                                "name": "bento",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5950,
                                "src": "17884:5:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                  "typeString": "contract IBentoBoxMinimal"
                                }
                              },
                              "id": 7652,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "toAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2175,
                              "src": "17884:14:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256,bool) view external returns (uint256)"
                              }
                            },
                            "id": 7656,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17884:40:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17866:58:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7658,
                        "nodeType": "ExpressionStatement",
                        "src": "17866:58:38"
                      },
                      {
                        "expression": {
                          "id": 7666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7659,
                            "name": "_nativeReserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7637,
                            "src": "17934:15:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7662,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5957,
                                "src": "17967:6:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 7663,
                                "name": "_reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7644,
                                "src": "17975:9:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              {
                                "hexValue": "66616c7365",
                                "id": 7664,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17986:5:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "id": 7660,
                                "name": "bento",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5950,
                                "src": "17952:5:38",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                  "typeString": "contract IBentoBoxMinimal"
                                }
                              },
                              "id": 7661,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "toAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2175,
                              "src": "17952:14:38",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256,bool) view external returns (uint256)"
                              }
                            },
                            "id": 7665,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17952:40:38",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17934:58:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7667,
                        "nodeType": "ExpressionStatement",
                        "src": "17934:58:38"
                      },
                      {
                        "expression": {
                          "id": 7670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7668,
                            "name": "_blockTimestampLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7639,
                            "src": "18002:19:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7669,
                            "name": "__blockTimestampLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7646,
                            "src": "18024:20:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "18002:42:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 7671,
                        "nodeType": "ExpressionStatement",
                        "src": "18002:42:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7632,
                    "nodeType": "StructuredDocumentation",
                    "src": "17495:60:38",
                    "text": "@dev returned values are the native ERC20 token amounts."
                  },
                  "functionSelector": "65dfc767",
                  "id": 7673,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getNativeReserves",
                  "nameLocation": "17569:17:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7633,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17586:2:38"
                  },
                  "returnParameters": {
                    "id": 7640,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7635,
                        "mutability": "mutable",
                        "name": "_nativeReserve0",
                        "nameLocation": "17655:15:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7673,
                        "src": "17647:23:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7634,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17647:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7637,
                        "mutability": "mutable",
                        "name": "_nativeReserve1",
                        "nameLocation": "17692:15:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7673,
                        "src": "17684:23:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7636,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17684:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7639,
                        "mutability": "mutable",
                        "name": "_blockTimestampLast",
                        "nameLocation": "17728:19:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7673,
                        "src": "17721:26:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 7638,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "17721:6:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17633:124:38"
                  },
                  "scope": 7674,
                  "src": "17560:491:38",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 7675,
              "src": "576:17477:38",
              "usedErrors": []
            }
          ],
          "src": "46:18008:38"
        },
        "id": 38
      },
      "contracts/pool/ConstantProductPoolFactory.sol": {
        "ast": {
          "absolutePath": "contracts/pool/ConstantProductPoolFactory.sol",
          "exportedSymbols": {
            "ConstantProductPool": [
              7674
            ],
            "ConstantProductPoolFactory": [
              7793
            ],
            "IBentoBoxMinimal": [
              2253
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "ITridentCallee": [
              2482
            ],
            "PoolDeployer": [
              11887
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "TridentERC20": [
              12279
            ],
            "TridentMath": [
              3139
            ]
          },
          "id": 7794,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7676,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:39"
            },
            {
              "absolutePath": "contracts/pool/ConstantProductPool.sol",
              "file": "./ConstantProductPool.sol",
              "id": 7677,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7794,
              "sourceUnit": 7675,
              "src": "72:35:39",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pool/PoolDeployer.sol",
              "file": "./PoolDeployer.sol",
              "id": 7678,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7794,
              "sourceUnit": 11888,
              "src": "108:28:39",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 7680,
                    "name": "PoolDeployer",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11887,
                    "src": "297:12:39"
                  },
                  "id": 7681,
                  "nodeType": "InheritanceSpecifier",
                  "src": "297:12:39"
                }
              ],
              "contractDependencies": [
                7674
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 7679,
                "nodeType": "StructuredDocumentation",
                "src": "138:120:39",
                "text": "@notice Contract for deploying Trident exchange Constant Product Pool with configurations.\n @author Mudit Gupta."
              },
              "fullyImplemented": true,
              "id": 7793,
              "linearizedBaseContracts": [
                7793,
                11887
              ],
              "name": "ConstantProductPoolFactory",
              "nameLocation": "267:26:39",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 7689,
                    "nodeType": "Block",
                    "src": "383:2:39",
                    "statements": []
                  },
                  "id": 7690,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 7686,
                          "name": "_masterDeployer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7683,
                          "src": "366:15:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 7687,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 7685,
                        "name": "PoolDeployer",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11887,
                        "src": "353:12:39"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "353:29:39"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7684,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7683,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "336:15:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7690,
                        "src": "328:23:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7682,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "328:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "327:25:39"
                  },
                  "returnParameters": {
                    "id": 7688,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "383:0:39"
                  },
                  "scope": 7793,
                  "src": "316:69:39",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7791,
                    "nodeType": "Block",
                    "src": "469:757:39",
                    "statements": [
                      {
                        "assignments": [
                          7698,
                          7700,
                          7702,
                          7704
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7698,
                            "mutability": "mutable",
                            "name": "tokenA",
                            "nameLocation": "488:6:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 7791,
                            "src": "480:14:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 7697,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "480:7:39",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 7700,
                            "mutability": "mutable",
                            "name": "tokenB",
                            "nameLocation": "504:6:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 7791,
                            "src": "496:14:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 7699,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "496:7:39",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 7702,
                            "mutability": "mutable",
                            "name": "swapFee",
                            "nameLocation": "520:7:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 7791,
                            "src": "512:15:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7701,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "512:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 7704,
                            "mutability": "mutable",
                            "name": "twapSupport",
                            "nameLocation": "534:11:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 7791,
                            "src": "529:16:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 7703,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "529:4:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7718,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 7707,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7692,
                              "src": "560:11:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 7709,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "574:7:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 7708,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "574:7:39",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 7711,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "583:7:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 7710,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "583:7:39",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 7713,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "592:7:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 7712,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "592:7:39",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 7715,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "601:4:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 7714,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "601:4:39",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 7716,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "573:33:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint256),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint256),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 7705,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "549:3:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 7706,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "549:10:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 7717,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "549:58:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_uint256_$_t_bool_$",
                            "typeString": "tuple(address payable,address payable,uint256,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "479:128:39"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 7721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7719,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7698,
                            "src": "622:6:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 7720,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7700,
                            "src": "631:6:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "622:15:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7731,
                        "nodeType": "IfStatement",
                        "src": "618:81:39",
                        "trueBody": {
                          "id": 7730,
                          "nodeType": "Block",
                          "src": "639:60:39",
                          "statements": [
                            {
                              "expression": {
                                "id": 7728,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 7722,
                                      "name": "tokenA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7698,
                                      "src": "654:6:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 7723,
                                      "name": "tokenB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7700,
                                      "src": "662:6:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "id": 7724,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "653:16:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                    "typeString": "tuple(address,address)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "components": [
                                    {
                                      "id": 7725,
                                      "name": "tokenB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7700,
                                      "src": "673:6:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 7726,
                                      "name": "tokenA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7698,
                                      "src": "681:6:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "id": 7727,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "672:16:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                    "typeString": "tuple(address,address)"
                                  }
                                },
                                "src": "653:35:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7729,
                              "nodeType": "ExpressionStatement",
                              "src": "653:35:39"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 7740,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7732,
                            "name": "_deployData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7692,
                            "src": "748:11:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7735,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7698,
                                "src": "773:6:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 7736,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7700,
                                "src": "781:6:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 7737,
                                "name": "swapFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7702,
                                "src": "789:7:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7738,
                                "name": "twapSupport",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7704,
                                "src": "798:11:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "id": 7733,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "762:3:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 7734,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "src": "762:10:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 7739,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "762:48:39",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "748:62:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 7741,
                        "nodeType": "ExpressionStatement",
                        "src": "748:62:39"
                      },
                      {
                        "assignments": [
                          7746
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7746,
                            "mutability": "mutable",
                            "name": "tokens",
                            "nameLocation": "838:6:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 7791,
                            "src": "821:23:39",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 7744,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "821:7:39",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 7745,
                              "nodeType": "ArrayTypeName",
                              "src": "821:9:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7752,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "32",
                              "id": 7750,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "861:1:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "id": 7749,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "847:13:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 7747,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "851:7:39",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 7748,
                              "nodeType": "ArrayTypeName",
                              "src": "851:9:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 7751,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "847:16:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "821:42:39"
                      },
                      {
                        "expression": {
                          "id": 7757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 7753,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7746,
                              "src": "873:6:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 7755,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 7754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "880:1:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "873:9:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7756,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7698,
                            "src": "885:6:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "873:18:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7758,
                        "nodeType": "ExpressionStatement",
                        "src": "873:18:39"
                      },
                      {
                        "expression": {
                          "id": 7763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 7759,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7746,
                              "src": "901:6:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 7761,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 7760,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "908:1:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "901:9:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7762,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7700,
                            "src": "913:6:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "901:18:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7764,
                        "nodeType": "ExpressionStatement",
                        "src": "901:18:39"
                      },
                      {
                        "assignments": [
                          7766
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7766,
                            "mutability": "mutable",
                            "name": "salt",
                            "nameLocation": "1057:4:39",
                            "nodeType": "VariableDeclaration",
                            "scope": 7791,
                            "src": "1049:12:39",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 7765,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1049:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7770,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 7768,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7692,
                              "src": "1074:11:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 7767,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "1064:9:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 7769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1064:22:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1049:37:39"
                      },
                      {
                        "expression": {
                          "id": 7783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7771,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7695,
                            "src": "1096:4:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 7779,
                                    "name": "_deployData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7692,
                                    "src": "1147:11:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 7780,
                                    "name": "masterDeployer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11681,
                                    "src": "1160:14:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 7776,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "1111:23:39",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_creation_nonpayable$_t_bytes_memory_ptr_$_t_address_$returns$_t_contract$_ConstantProductPool_$7674_$",
                                      "typeString": "function (bytes memory,address) returns (contract ConstantProductPool)"
                                    },
                                    "typeName": {
                                      "id": 7775,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 7774,
                                        "name": "ConstantProductPool",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 7674,
                                        "src": "1115:19:39"
                                      },
                                      "referencedDeclaration": 7674,
                                      "src": "1115:19:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                        "typeString": "contract ConstantProductPool"
                                      }
                                    }
                                  },
                                  "id": 7778,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "names": [
                                    "salt"
                                  ],
                                  "nodeType": "FunctionCallOptions",
                                  "options": [
                                    {
                                      "id": 7777,
                                      "name": "salt",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7766,
                                      "src": "1141:4:39",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "src": "1111:35:39",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_creation_nonpayable$_t_bytes_memory_ptr_$_t_address_$returns$_t_contract$_ConstantProductPool_$7674_$salt",
                                    "typeString": "function (bytes memory,address) returns (contract ConstantProductPool)"
                                  }
                                },
                                "id": 7781,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1111:64:39",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                  "typeString": "contract ConstantProductPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ConstantProductPool_$7674",
                                  "typeString": "contract ConstantProductPool"
                                }
                              ],
                              "id": 7773,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1103:7:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 7772,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1103:7:39",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 7782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1103:73:39",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1096:80:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7784,
                        "nodeType": "ExpressionStatement",
                        "src": "1096:80:39"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 7786,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7695,
                              "src": "1200:4:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 7787,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7746,
                              "src": "1206:6:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "id": 7788,
                              "name": "salt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7766,
                              "src": "1214:4:39",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 7785,
                            "name": "_registerPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11818,
                            "src": "1186:13:39",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address[] memory,bytes32)"
                            }
                          },
                          "id": 7789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1186:33:39",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7790,
                        "nodeType": "ExpressionStatement",
                        "src": "1186:33:39"
                      }
                    ]
                  },
                  "functionSelector": "27c3cae1",
                  "id": 7792,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deployPool",
                  "nameLocation": "400:10:39",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7693,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7692,
                        "mutability": "mutable",
                        "name": "_deployData",
                        "nameLocation": "424:11:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7792,
                        "src": "411:24:39",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7691,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "411:5:39",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "410:26:39"
                  },
                  "returnParameters": {
                    "id": 7696,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7695,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "463:4:39",
                        "nodeType": "VariableDeclaration",
                        "scope": 7792,
                        "src": "455:12:39",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7694,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "455:7:39",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "454:14:39"
                  },
                  "scope": 7793,
                  "src": "391:835:39",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 7794,
              "src": "258:970:39",
              "usedErrors": [
                11694,
                11696,
                11698
              ]
            }
          ],
          "src": "46:1183:39"
        },
        "id": 39
      },
      "contracts/pool/HybridPool.sol": {
        "ast": {
          "absolutePath": "contracts/pool/HybridPool.sol",
          "exportedSymbols": {
            "HybridPool": [
              9825
            ],
            "IBentoBoxMinimal": [
              2253
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "ITridentCallee": [
              2482
            ],
            "MathUtils": [
              2852
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "TridentERC20": [
              12279
            ]
          },
          "id": 9826,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7795,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:40"
            },
            {
              "absolutePath": "contracts/interfaces/IBentoBoxMinimal.sol",
              "file": "../interfaces/IBentoBoxMinimal.sol",
              "id": 7796,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9826,
              "sourceUnit": 2254,
              "src": "72:44:40",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IMasterDeployer.sol",
              "file": "../interfaces/IMasterDeployer.sol",
              "id": 7797,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9826,
              "sourceUnit": 2357,
              "src": "117:43:40",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IPool.sol",
              "file": "../interfaces/IPool.sol",
              "id": 7798,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9826,
              "sourceUnit": 2451,
              "src": "161:33:40",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ITridentCallee.sol",
              "file": "../interfaces/ITridentCallee.sol",
              "id": 7799,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9826,
              "sourceUnit": 2483,
              "src": "195:42:40",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/MathUtils.sol",
              "file": "../libraries/MathUtils.sol",
              "id": 7800,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9826,
              "sourceUnit": 2853,
              "src": "238:36:40",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pool/TridentERC20.sol",
              "file": "./TridentERC20.sol",
              "id": 7801,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9826,
              "sourceUnit": 12280,
              "src": "275:28:40",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/RebaseLibrary.sol",
              "file": "../libraries/RebaseLibrary.sol",
              "id": 7802,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9826,
              "sourceUnit": 2930,
              "src": "304:40:40",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 7804,
                    "name": "IPool",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2450,
                    "src": "653:5:40"
                  },
                  "id": 7805,
                  "nodeType": "InheritanceSpecifier",
                  "src": "653:5:40"
                },
                {
                  "baseName": {
                    "id": 7806,
                    "name": "TridentERC20",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12279,
                    "src": "660:12:40"
                  },
                  "id": 7807,
                  "nodeType": "InheritanceSpecifier",
                  "src": "660:12:40"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 7803,
                "nodeType": "StructuredDocumentation",
                "src": "346:284:40",
                "text": "@notice Trident exchange pool template with hybrid like-kind formula for swapping between an ERC-20 token pair.\n @dev The reserves are stored as bento shares. However, the stableswap invariant is applied to the underlying amounts.\n      The API uses the underlying amounts."
              },
              "fullyImplemented": true,
              "id": 9825,
              "linearizedBaseContracts": [
                9825,
                12279,
                2450
              ],
              "name": "HybridPool",
              "nameLocation": "639:10:40",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 7810,
                  "libraryName": {
                    "id": 7808,
                    "name": "MathUtils",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2852,
                    "src": "685:9:40"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "679:28:40",
                  "typeName": {
                    "id": 7809,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "699:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 7814,
                  "libraryName": {
                    "id": 7811,
                    "name": "RebaseLibrary",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2929,
                    "src": "718:13:40"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "712:31:40",
                  "typeName": {
                    "id": 7813,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 7812,
                      "name": "Rebase",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2859,
                      "src": "736:6:40"
                    },
                    "referencedDeclaration": 2859,
                    "src": "736:6:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Rebase_$2859_storage_ptr",
                      "typeString": "struct Rebase"
                    }
                  }
                },
                {
                  "anonymous": false,
                  "id": 7826,
                  "name": "Mint",
                  "nameLocation": "755:4:40",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 7825,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7816,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "776:6:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 7826,
                        "src": "760:22:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7815,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "760:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7818,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount0",
                        "nameLocation": "792:7:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 7826,
                        "src": "784:15:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7817,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "784:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7820,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount1",
                        "nameLocation": "809:7:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 7826,
                        "src": "801:15:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7819,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "801:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7822,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "834:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 7826,
                        "src": "818:25:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7821,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "818:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7824,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "853:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 7826,
                        "src": "845:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7823,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "845:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "759:104:40"
                  },
                  "src": "749:115:40"
                },
                {
                  "anonymous": false,
                  "id": 7838,
                  "name": "Burn",
                  "nameLocation": "875:4:40",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 7837,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7828,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "896:6:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 7838,
                        "src": "880:22:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7827,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "880:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7830,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount0",
                        "nameLocation": "912:7:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 7838,
                        "src": "904:15:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7829,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "904:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7832,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount1",
                        "nameLocation": "929:7:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 7838,
                        "src": "921:15:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7831,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "921:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7834,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "954:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 7838,
                        "src": "938:25:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7833,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "938:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7836,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "973:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 7838,
                        "src": "965:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7835,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "965:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "879:104:40"
                  },
                  "src": "869:115:40"
                },
                {
                  "anonymous": false,
                  "id": 7844,
                  "name": "Sync",
                  "nameLocation": "995:4:40",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 7843,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7840,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "reserve0",
                        "nameLocation": "1008:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 7844,
                        "src": "1000:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7839,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1000:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7842,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "reserve1",
                        "nameLocation": "1026:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 7844,
                        "src": "1018:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7841,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1018:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "999:36:40"
                  },
                  "src": "989:47:40"
                },
                {
                  "constant": true,
                  "id": 7849,
                  "mutability": "constant",
                  "name": "MINIMUM_LIQUIDITY",
                  "nameLocation": "1068:17:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "1042:51:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7845,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1042:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_rational_1000_by_1",
                      "typeString": "int_const 1000"
                    },
                    "id": 7848,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "3130",
                      "id": 7846,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1088:2:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "hexValue": "33",
                      "id": 7847,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1092:1:40",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "src": "1088:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000_by_1",
                      "typeString": "int_const 1000"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 7852,
                  "mutability": "constant",
                  "name": "PRECISION",
                  "nameLocation": "1123:9:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "1099:39:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 7850,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1099:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "313132",
                    "id": 7851,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1135:3:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_112_by_1",
                      "typeString": "int_const 112"
                    },
                    "value": "112"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 7853,
                    "nodeType": "StructuredDocumentation",
                    "src": "1145:47:40",
                    "text": "@dev Constant value used as max loop limit."
                  },
                  "id": 7856,
                  "mutability": "constant",
                  "name": "MAX_LOOP_LIMIT",
                  "nameLocation": "1222:14:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "1197:45:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7854,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1197:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "323536",
                    "id": 7855,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1239:3:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_256_by_1",
                      "typeString": "int_const 256"
                    },
                    "value": "256"
                  },
                  "visibility": "private"
                },
                {
                  "constant": true,
                  "id": 7859,
                  "mutability": "constant",
                  "name": "MAX_FEE",
                  "nameLocation": "1274:7:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "1248:41:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7857,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1248:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3130303030",
                    "id": 7858,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1284:5:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_10000_by_1",
                      "typeString": "int_const 10000"
                    },
                    "value": "10000"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "54cf2aeb",
                  "id": 7861,
                  "mutability": "immutable",
                  "name": "swapFee",
                  "nameLocation": "1334:7:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "1309:32:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7860,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1309:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "4da31827",
                  "id": 7864,
                  "mutability": "immutable",
                  "name": "bento",
                  "nameLocation": "1382:5:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "1348:39:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                    "typeString": "contract IBentoBoxMinimal"
                  },
                  "typeName": {
                    "id": 7863,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 7862,
                      "name": "IBentoBoxMinimal",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2253,
                      "src": "1348:16:40"
                    },
                    "referencedDeclaration": 2253,
                    "src": "1348:16:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                      "typeString": "contract IBentoBoxMinimal"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "cf58879a",
                  "id": 7867,
                  "mutability": "immutable",
                  "name": "masterDeployer",
                  "nameLocation": "1426:14:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "1393:47:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                    "typeString": "contract IMasterDeployer"
                  },
                  "typeName": {
                    "id": 7866,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 7865,
                      "name": "IMasterDeployer",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2356,
                      "src": "1393:15:40"
                    },
                    "referencedDeclaration": 2356,
                    "src": "1393:15:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                      "typeString": "contract IMasterDeployer"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "0c0a0cd2",
                  "id": 7869,
                  "mutability": "immutable",
                  "name": "barFeeTo",
                  "nameLocation": "1471:8:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "1446:33:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7868,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1446:7:40",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "0dfe1681",
                  "id": 7871,
                  "mutability": "immutable",
                  "name": "token0",
                  "nameLocation": "1510:6:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "1485:31:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7870,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1485:7:40",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "d21220a7",
                  "id": 7873,
                  "mutability": "immutable",
                  "name": "token1",
                  "nameLocation": "1547:6:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "1522:31:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 7872,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1522:7:40",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "f446c1d0",
                  "id": 7875,
                  "mutability": "immutable",
                  "name": "A",
                  "nameLocation": "1584:1:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "1559:26:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7874,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1559:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 7877,
                  "mutability": "immutable",
                  "name": "N_A",
                  "nameLocation": "1618:3:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "1591:30:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7876,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1591:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 7880,
                  "mutability": "constant",
                  "name": "A_PRECISION",
                  "nameLocation": "1668:11:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "1642:43:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7878,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1642:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "313030",
                    "id": 7879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1682:3:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_100_by_1",
                      "typeString": "int_const 100"
                    },
                    "value": "100"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 7881,
                    "nodeType": "StructuredDocumentation",
                    "src": "1692:243:40",
                    "text": "@dev Multipliers for each pooled token's precision to get to POOL_PRECISION_DECIMALS.\n For example, TBTC has 18 decimals, so the multiplier should be 1. WBTC\n has 8, so the multiplier should be 10 ** 18 / 10 ** 8 => 10 ** 10."
                  },
                  "functionSelector": "baa8c7cb",
                  "id": 7883,
                  "mutability": "immutable",
                  "name": "token0PrecisionMultiplier",
                  "nameLocation": "1965:25:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "1940:50:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7882,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1940:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "4e25dc47",
                  "id": 7885,
                  "mutability": "immutable",
                  "name": "token1PrecisionMultiplier",
                  "nameLocation": "2021:25:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "1996:50:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7884,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1996:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "c14ad802",
                  "id": 7887,
                  "mutability": "mutable",
                  "name": "barFee",
                  "nameLocation": "2068:6:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "2053:21:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7886,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2053:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 7889,
                  "mutability": "mutable",
                  "name": "reserve0",
                  "nameLocation": "2098:8:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "2081:25:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 7888,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "2081:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7891,
                  "mutability": "mutable",
                  "name": "reserve1",
                  "nameLocation": "2129:8:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "2112:25:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 7890,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "2112:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7893,
                  "mutability": "mutable",
                  "name": "dLast",
                  "nameLocation": "2160:5:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "2143:22:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7892,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2143:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2408
                  ],
                  "constant": true,
                  "functionSelector": "a69840a8",
                  "id": 7897,
                  "mutability": "constant",
                  "name": "poolIdentifier",
                  "nameLocation": "2205:14:40",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 7895,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2196:8:40"
                  },
                  "scope": 9825,
                  "src": "2172:70:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7894,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2172:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "54726964656e743a487962726964506f6f6c",
                    "id": 7896,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2222:20:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_64c6d0d49571d80b1e906cdd8ce8976f0661e96af82335ae96d2a6b4bb0fce33",
                      "typeString": "literal_string \"Trident:HybridPool\""
                    },
                    "value": "Trident:HybridPool"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 7899,
                  "mutability": "mutable",
                  "name": "unlocked",
                  "nameLocation": "2266:8:40",
                  "nodeType": "VariableDeclaration",
                  "scope": 9825,
                  "src": "2249:25:40",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7898,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2249:7:40",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7917,
                    "nodeType": "Block",
                    "src": "2296:104:40",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7904,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7902,
                                "name": "unlocked",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7899,
                                "src": "2314:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 7903,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2326:1:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "2314:13:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4c4f434b4544",
                              "id": 7905,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2329:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b",
                                "typeString": "literal_string \"LOCKED\""
                              },
                              "value": "LOCKED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b",
                                "typeString": "literal_string \"LOCKED\""
                              }
                            ],
                            "id": 7901,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2306:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2306:32:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7907,
                        "nodeType": "ExpressionStatement",
                        "src": "2306:32:40"
                      },
                      {
                        "expression": {
                          "id": 7910,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7908,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7899,
                            "src": "2348:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "32",
                            "id": 7909,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2359:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "2348:12:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7911,
                        "nodeType": "ExpressionStatement",
                        "src": "2348:12:40"
                      },
                      {
                        "id": 7912,
                        "nodeType": "PlaceholderStatement",
                        "src": "2370:1:40"
                      },
                      {
                        "expression": {
                          "id": 7915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7913,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7899,
                            "src": "2381:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 7914,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2392:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2381:12:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7916,
                        "nodeType": "ExpressionStatement",
                        "src": "2381:12:40"
                      }
                    ]
                  },
                  "id": 7918,
                  "name": "lock",
                  "nameLocation": "2289:4:40",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 7900,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2293:2:40"
                  },
                  "src": "2280:120:40",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8068,
                    "nodeType": "Block",
                    "src": "2469:1004:40",
                    "statements": [
                      {
                        "assignments": [
                          7926,
                          7928,
                          7930,
                          7932
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7926,
                            "mutability": "mutable",
                            "name": "_token0",
                            "nameLocation": "2488:7:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8068,
                            "src": "2480:15:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 7925,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2480:7:40",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 7928,
                            "mutability": "mutable",
                            "name": "_token1",
                            "nameLocation": "2505:7:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8068,
                            "src": "2497:15:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 7927,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2497:7:40",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 7930,
                            "mutability": "mutable",
                            "name": "_swapFee",
                            "nameLocation": "2522:8:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8068,
                            "src": "2514:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7929,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2514:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 7932,
                            "mutability": "mutable",
                            "name": "a",
                            "nameLocation": "2540:1:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8068,
                            "src": "2532:9:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7931,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2532:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7946,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 7935,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7920,
                              "src": "2556:11:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 7937,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2570:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 7936,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2570:7:40",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 7939,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2579:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 7938,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2579:7:40",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 7941,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2588:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 7940,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2588:7:40",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 7943,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2597:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 7942,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2597:7:40",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 7944,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2569:36:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint256),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint256),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 7933,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "2545:3:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 7934,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "2545:10:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 7945,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2545:61:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(address payable,address payable,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2479:127:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 7953,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7948,
                                "name": "_token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7926,
                                "src": "2685:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 7951,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2704:1:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 7950,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2696:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 7949,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2696:7:40",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 7952,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2696:10:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2685:21:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5a45524f5f41444452455353",
                              "id": 7954,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2708:14:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af",
                                "typeString": "literal_string \"ZERO_ADDRESS\""
                              },
                              "value": "ZERO_ADDRESS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af",
                                "typeString": "literal_string \"ZERO_ADDRESS\""
                              }
                            ],
                            "id": 7947,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2677:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7955,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2677:46:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7956,
                        "nodeType": "ExpressionStatement",
                        "src": "2677:46:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 7960,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7958,
                                "name": "_token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7926,
                                "src": "2741:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 7959,
                                "name": "_token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7928,
                                "src": "2752:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2741:18:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4944454e544943414c5f414444524553534553",
                              "id": 7961,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2761:21:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6",
                                "typeString": "literal_string \"IDENTICAL_ADDRESSES\""
                              },
                              "value": "IDENTICAL_ADDRESSES"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6",
                                "typeString": "literal_string \"IDENTICAL_ADDRESSES\""
                              }
                            ],
                            "id": 7957,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2733:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7962,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2733:50:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7963,
                        "nodeType": "ExpressionStatement",
                        "src": "2733:50:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7967,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7965,
                                "name": "_swapFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7930,
                                "src": "2801:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 7966,
                                "name": "MAX_FEE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7859,
                                "src": "2813:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2801:19:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f535741505f464545",
                              "id": 7968,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2822:18:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1",
                                "typeString": "literal_string \"INVALID_SWAP_FEE\""
                              },
                              "value": "INVALID_SWAP_FEE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1",
                                "typeString": "literal_string \"INVALID_SWAP_FEE\""
                              }
                            ],
                            "id": 7964,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2793:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7969,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2793:48:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7970,
                        "nodeType": "ExpressionStatement",
                        "src": "2793:48:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7974,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7972,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7932,
                                "src": "2859:1:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 7973,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2864:1:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2859:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5a45524f5f41",
                              "id": 7975,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2867:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_784abf5ee5ac26c0ab454d7180fc6674dd424c889acd4d27298540d9febc99d6",
                                "typeString": "literal_string \"ZERO_A\""
                              },
                              "value": "ZERO_A"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_784abf5ee5ac26c0ab454d7180fc6674dd424c889acd4d27298540d9febc99d6",
                                "typeString": "literal_string \"ZERO_A\""
                              }
                            ],
                            "id": 7971,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2851:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2851:25:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7977,
                        "nodeType": "ExpressionStatement",
                        "src": "2851:25:40"
                      },
                      {
                        "expression": {
                          "id": 7980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7978,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7871,
                            "src": "2887:6:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7979,
                            "name": "_token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7926,
                            "src": "2896:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2887:16:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7981,
                        "nodeType": "ExpressionStatement",
                        "src": "2887:16:40"
                      },
                      {
                        "expression": {
                          "id": 7984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7982,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7873,
                            "src": "2913:6:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7983,
                            "name": "_token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7928,
                            "src": "2922:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2913:16:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 7985,
                        "nodeType": "ExpressionStatement",
                        "src": "2913:16:40"
                      },
                      {
                        "expression": {
                          "id": 7988,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7986,
                            "name": "swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7861,
                            "src": "2939:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7987,
                            "name": "_swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7930,
                            "src": "2949:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2939:18:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7989,
                        "nodeType": "ExpressionStatement",
                        "src": "2939:18:40"
                      },
                      {
                        "expression": {
                          "id": 7996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7990,
                            "name": "barFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7887,
                            "src": "2967:6:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 7992,
                                    "name": "_masterDeployer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7922,
                                    "src": "2992:15:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 7991,
                                  "name": "IMasterDeployer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2356,
                                  "src": "2976:15:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                    "typeString": "type(contract IMasterDeployer)"
                                  }
                                },
                                "id": 7993,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2976:32:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                  "typeString": "contract IMasterDeployer"
                                }
                              },
                              "id": 7994,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "barFee",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2324,
                              "src": "2976:39:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 7995,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2976:41:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2967:50:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7997,
                        "nodeType": "ExpressionStatement",
                        "src": "2967:50:40"
                      },
                      {
                        "expression": {
                          "id": 8004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7998,
                            "name": "barFeeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7869,
                            "src": "3027:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 8000,
                                    "name": "_masterDeployer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7922,
                                    "src": "3054:15:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 7999,
                                  "name": "IMasterDeployer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2356,
                                  "src": "3038:15:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                    "typeString": "type(contract IMasterDeployer)"
                                  }
                                },
                                "id": 8001,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3038:32:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                  "typeString": "contract IMasterDeployer"
                                }
                              },
                              "id": 8002,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "barFeeTo",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2329,
                              "src": "3038:41:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                "typeString": "function () view external returns (address)"
                              }
                            },
                            "id": 8003,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3038:43:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3027:54:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 8005,
                        "nodeType": "ExpressionStatement",
                        "src": "3027:54:40"
                      },
                      {
                        "expression": {
                          "id": 8014,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8006,
                            "name": "bento",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7864,
                            "src": "3091:5:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 8009,
                                        "name": "_masterDeployer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7922,
                                        "src": "3132:15:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 8008,
                                      "name": "IMasterDeployer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2356,
                                      "src": "3116:15:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                        "typeString": "type(contract IMasterDeployer)"
                                      }
                                    },
                                    "id": 8010,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3116:32:40",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                      "typeString": "contract IMasterDeployer"
                                    }
                                  },
                                  "id": 8011,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "bento",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2334,
                                  "src": "3116:38:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 8012,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3116:40:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 8007,
                              "name": "IBentoBoxMinimal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2253,
                              "src": "3099:16:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IBentoBoxMinimal_$2253_$",
                                "typeString": "type(contract IBentoBoxMinimal)"
                              }
                            },
                            "id": 8013,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3099:58:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "src": "3091:66:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        "id": 8015,
                        "nodeType": "ExpressionStatement",
                        "src": "3091:66:40"
                      },
                      {
                        "expression": {
                          "id": 8020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8016,
                            "name": "masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7867,
                            "src": "3167:14:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                              "typeString": "contract IMasterDeployer"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8018,
                                "name": "_masterDeployer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7922,
                                "src": "3200:15:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 8017,
                              "name": "IMasterDeployer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2356,
                              "src": "3184:15:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                "typeString": "type(contract IMasterDeployer)"
                              }
                            },
                            "id": 8019,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3184:32:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                              "typeString": "contract IMasterDeployer"
                            }
                          },
                          "src": "3167:49:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                            "typeString": "contract IMasterDeployer"
                          }
                        },
                        "id": 8021,
                        "nodeType": "ExpressionStatement",
                        "src": "3167:49:40"
                      },
                      {
                        "expression": {
                          "id": 8024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8022,
                            "name": "A",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7875,
                            "src": "3226:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 8023,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7932,
                            "src": "3230:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3226:5:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8025,
                        "nodeType": "ExpressionStatement",
                        "src": "3226:5:40"
                      },
                      {
                        "expression": {
                          "id": 8030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8026,
                            "name": "N_A",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7877,
                            "src": "3241:3:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8029,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "hexValue": "32",
                              "id": 8027,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3247:1:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "id": 8028,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7932,
                              "src": "3251:1:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3247:5:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3241:11:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8031,
                        "nodeType": "ExpressionStatement",
                        "src": "3241:11:40"
                      },
                      {
                        "expression": {
                          "id": 8046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8032,
                            "name": "token0PrecisionMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7883,
                            "src": "3262:25:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8045,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "hexValue": "3130",
                                  "id": 8035,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3298:2:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  }
                                ],
                                "id": 8034,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3290:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 8033,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3290:7:40",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8036,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3290:11:40",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 8043,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8037,
                                    "name": "decimals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11915,
                                    "src": "3304:8:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 8039,
                                            "name": "_token0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7926,
                                            "src": "3328:7:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 8038,
                                          "name": "TridentERC20",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12279,
                                          "src": "3315:12:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_TridentERC20_$12279_$",
                                            "typeString": "type(contract TridentERC20)"
                                          }
                                        },
                                        "id": 8040,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3315:21:40",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_TridentERC20_$12279",
                                          "typeString": "contract TridentERC20"
                                        }
                                      },
                                      "id": 8041,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "decimals",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11915,
                                      "src": "3315:30:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                                        "typeString": "function () view external returns (uint8)"
                                      }
                                    },
                                    "id": 8042,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3315:32:40",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "3304:43:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                }
                              ],
                              "id": 8044,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3303:45:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "3290:58:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3262:86:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8047,
                        "nodeType": "ExpressionStatement",
                        "src": "3262:86:40"
                      },
                      {
                        "expression": {
                          "id": 8062,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8048,
                            "name": "token1PrecisionMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7885,
                            "src": "3358:25:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8061,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "hexValue": "3130",
                                  "id": 8051,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3394:2:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  }
                                ],
                                "id": 8050,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3386:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 8049,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3386:7:40",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3386:11:40",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 8059,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8053,
                                    "name": "decimals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11915,
                                    "src": "3400:8:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 8055,
                                            "name": "_token1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7928,
                                            "src": "3424:7:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 8054,
                                          "name": "TridentERC20",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12279,
                                          "src": "3411:12:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_TridentERC20_$12279_$",
                                            "typeString": "type(contract TridentERC20)"
                                          }
                                        },
                                        "id": 8056,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3411:21:40",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_TridentERC20_$12279",
                                          "typeString": "contract TridentERC20"
                                        }
                                      },
                                      "id": 8057,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "decimals",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11915,
                                      "src": "3411:30:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                                        "typeString": "function () view external returns (uint8)"
                                      }
                                    },
                                    "id": 8058,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3411:32:40",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "3400:43:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                }
                              ],
                              "id": 8060,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3399:45:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "3386:58:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3358:86:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8063,
                        "nodeType": "ExpressionStatement",
                        "src": "3358:86:40"
                      },
                      {
                        "expression": {
                          "id": 8066,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8064,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7899,
                            "src": "3454:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 8065,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3465:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3454:12:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8067,
                        "nodeType": "ExpressionStatement",
                        "src": "3454:12:40"
                      }
                    ]
                  },
                  "id": 8069,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7923,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7920,
                        "mutability": "mutable",
                        "name": "_deployData",
                        "nameLocation": "2431:11:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8069,
                        "src": "2418:24:40",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7919,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2418:5:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7922,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "2452:15:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8069,
                        "src": "2444:23:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7921,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2444:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2417:51:40"
                  },
                  "returnParameters": {
                    "id": 7924,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2469:0:40"
                  },
                  "scope": 9825,
                  "src": "2406:1067:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2384
                  ],
                  "body": {
                    "id": 8232,
                    "nodeType": "Block",
                    "src": "3756:1183:40",
                    "statements": [
                      {
                        "assignments": [
                          8081
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8081,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "3774:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8232,
                            "src": "3766:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 8080,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3766:7:40",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8089,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 8084,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8072,
                              "src": "3797:4:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 8086,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3804:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 8085,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3804:7:40",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 8087,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3803:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              }
                            ],
                            "expression": {
                              "id": 8082,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "3786:3:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 8083,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "3786:10:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 8088,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3786:27:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3766:47:40"
                      },
                      {
                        "assignments": [
                          8091,
                          8093
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8091,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "3832:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8232,
                            "src": "3824:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8090,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3824:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8093,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "3851:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8232,
                            "src": "3843:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8092,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3843:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8096,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8094,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8924,
                            "src": "3864:12:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 8095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3864:14:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3823:55:40"
                      },
                      {
                        "assignments": [
                          8098,
                          8100
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8098,
                            "mutability": "mutable",
                            "name": "balance0",
                            "nameLocation": "3897:8:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8232,
                            "src": "3889:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8097,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3889:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8100,
                            "mutability": "mutable",
                            "name": "balance1",
                            "nameLocation": "3915:8:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8232,
                            "src": "3907:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8099,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3907:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8103,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8101,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9099,
                            "src": "3927:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 8102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3927:10:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3888:49:40"
                      },
                      {
                        "assignments": [
                          8105
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8105,
                            "mutability": "mutable",
                            "name": "newLiq",
                            "nameLocation": "3956:6:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8232,
                            "src": "3948:14:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8104,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3948:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8110,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 8107,
                              "name": "balance0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8098,
                              "src": "3983:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8108,
                              "name": "balance1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8100,
                              "src": "3993:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8106,
                            "name": "_computeLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9281,
                            "src": "3965:17:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) view returns (uint256)"
                            }
                          },
                          "id": 8109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3965:37:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3948:54:40"
                      },
                      {
                        "assignments": [
                          8112
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8112,
                            "mutability": "mutable",
                            "name": "amount0",
                            "nameLocation": "4020:7:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8232,
                            "src": "4012:15:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8111,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4012:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8116,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8113,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8098,
                            "src": "4030:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 8114,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8091,
                            "src": "4041:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4030:20:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4012:38:40"
                      },
                      {
                        "assignments": [
                          8118
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8118,
                            "mutability": "mutable",
                            "name": "amount1",
                            "nameLocation": "4068:7:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8232,
                            "src": "4060:15:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8117,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4060:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8122,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8119,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8100,
                            "src": "4078:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 8120,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8093,
                            "src": "4089:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4078:20:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4060:38:40"
                      },
                      {
                        "assignments": [
                          8124,
                          8126
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8124,
                            "mutability": "mutable",
                            "name": "fee0",
                            "nameLocation": "4117:4:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8232,
                            "src": "4109:12:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8123,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4109:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8126,
                            "mutability": "mutable",
                            "name": "fee1",
                            "nameLocation": "4131:4:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8232,
                            "src": "4123:12:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8125,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4123:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8133,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 8128,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8112,
                              "src": "4158:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8129,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8118,
                              "src": "4167:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8130,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8091,
                              "src": "4176:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8131,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8093,
                              "src": "4187:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8127,
                            "name": "_nonOptimalMintFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9654,
                            "src": "4139:18:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256,uint256) view returns (uint256,uint256)"
                            }
                          },
                          "id": 8132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4139:58:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4108:89:40"
                      },
                      {
                        "expression": {
                          "id": 8139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8134,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8091,
                            "src": "4207:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8137,
                                "name": "fee0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8124,
                                "src": "4228:4:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 8136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4220:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint112_$",
                                "typeString": "type(uint112)"
                              },
                              "typeName": {
                                "id": 8135,
                                "name": "uint112",
                                "nodeType": "ElementaryTypeName",
                                "src": "4220:7:40",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8138,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4220:13:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "4207:26:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8140,
                        "nodeType": "ExpressionStatement",
                        "src": "4207:26:40"
                      },
                      {
                        "expression": {
                          "id": 8146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8141,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8093,
                            "src": "4243:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8144,
                                "name": "fee1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8126,
                                "src": "4264:4:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 8143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4256:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint112_$",
                                "typeString": "type(uint112)"
                              },
                              "typeName": {
                                "id": 8142,
                                "name": "uint112",
                                "nodeType": "ElementaryTypeName",
                                "src": "4256:7:40",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4256:13:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "4243:26:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8147,
                        "nodeType": "ExpressionStatement",
                        "src": "4243:26:40"
                      },
                      {
                        "assignments": [
                          8149,
                          8151
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8149,
                            "mutability": "mutable",
                            "name": "_totalSupply",
                            "nameLocation": "4289:12:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8232,
                            "src": "4281:20:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8148,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4281:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8151,
                            "mutability": "mutable",
                            "name": "oldLiq",
                            "nameLocation": "4311:6:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8232,
                            "src": "4303:14:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8150,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4303:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8156,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 8153,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8091,
                              "src": "4330:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8154,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8093,
                              "src": "4341:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8152,
                            "name": "_mintFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9571,
                            "src": "4321:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 8155,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4321:30:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4280:71:40"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8159,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8157,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8149,
                            "src": "4366:12:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 8158,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4382:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4366:17:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 8198,
                          "nodeType": "Block",
                          "src": "4572:80:40",
                          "statements": [
                            {
                              "expression": {
                                "id": 8196,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8186,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8078,
                                  "src": "4586:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8195,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 8192,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 8189,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 8187,
                                                "name": "newLiq",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8105,
                                                "src": "4600:6:40",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "id": 8188,
                                                "name": "oldLiq",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8151,
                                                "src": "4609:6:40",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "4600:15:40",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 8190,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "4599:17:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 8191,
                                          "name": "_totalSupply",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8149,
                                          "src": "4619:12:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "4599:32:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 8193,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "4598:34:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 8194,
                                    "name": "oldLiq",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8151,
                                    "src": "4635:6:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4598:43:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4586:55:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8197,
                              "nodeType": "ExpressionStatement",
                              "src": "4586:55:40"
                            }
                          ]
                        },
                        "id": 8199,
                        "nodeType": "IfStatement",
                        "src": "4362:290:40",
                        "trueBody": {
                          "id": 8185,
                          "nodeType": "Block",
                          "src": "4385:181:40",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 8167,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 8163,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8161,
                                        "name": "amount0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8112,
                                        "src": "4407:7:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "hexValue": "30",
                                        "id": 8162,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4417:1:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "4407:11:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 8166,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8164,
                                        "name": "amount1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8118,
                                        "src": "4422:7:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "hexValue": "30",
                                        "id": 8165,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4432:1:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "4422:11:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "4407:26:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e56414c49445f414d4f554e5453",
                                    "id": 8168,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4435:17:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_7e6e8c13ba2f1d0f0273f8e22d59ed43b72e50c3f6c54bb315c74036cac1301c",
                                      "typeString": "literal_string \"INVALID_AMOUNTS\""
                                    },
                                    "value": "INVALID_AMOUNTS"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_7e6e8c13ba2f1d0f0273f8e22d59ed43b72e50c3f6c54bb315c74036cac1301c",
                                      "typeString": "literal_string \"INVALID_AMOUNTS\""
                                    }
                                  ],
                                  "id": 8160,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "4399:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 8169,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4399:54:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8170,
                              "nodeType": "ExpressionStatement",
                              "src": "4399:54:40"
                            },
                            {
                              "expression": {
                                "id": 8175,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8171,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8078,
                                  "src": "4467:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8174,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 8172,
                                    "name": "newLiq",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8105,
                                    "src": "4479:6:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 8173,
                                    "name": "MINIMUM_LIQUIDITY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7849,
                                    "src": "4488:17:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4479:26:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4467:38:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8176,
                              "nodeType": "ExpressionStatement",
                              "src": "4467:38:40"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 8180,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4533:1:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 8179,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4525:7:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 8178,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4525:7:40",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 8181,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4525:10:40",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 8182,
                                    "name": "MINIMUM_LIQUIDITY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7849,
                                    "src": "4537:17:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 8177,
                                  "name": "_mint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12250,
                                  "src": "4519:5:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 8183,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4519:36:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8184,
                              "nodeType": "ExpressionStatement",
                              "src": "4519:36:40"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8203,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8201,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8078,
                                "src": "4669:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 8202,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4682:1:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4669:14:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e53554646494349454e545f4c49515549444954595f4d494e544544",
                              "id": 8204,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4685:31:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c",
                                "typeString": "literal_string \"INSUFFICIENT_LIQUIDITY_MINTED\""
                              },
                              "value": "INSUFFICIENT_LIQUIDITY_MINTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c",
                                "typeString": "literal_string \"INSUFFICIENT_LIQUIDITY_MINTED\""
                              }
                            ],
                            "id": 8200,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4661:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4661:56:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8206,
                        "nodeType": "ExpressionStatement",
                        "src": "4661:56:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8208,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8081,
                              "src": "4733:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8209,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8078,
                              "src": "4744:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8207,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12250,
                            "src": "4727:5:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 8210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4727:27:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8211,
                        "nodeType": "ExpressionStatement",
                        "src": "4727:27:40"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8212,
                            "name": "_updateReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9059,
                            "src": "4764:15:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 8213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4764:17:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8214,
                        "nodeType": "ExpressionStatement",
                        "src": "4764:17:40"
                      },
                      {
                        "expression": {
                          "id": 8217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8215,
                            "name": "dLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7893,
                            "src": "4792:5:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 8216,
                            "name": "newLiq",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8105,
                            "src": "4800:6:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4792:14:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8218,
                        "nodeType": "ExpressionStatement",
                        "src": "4792:14:40"
                      },
                      {
                        "assignments": [
                          8220
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8220,
                            "mutability": "mutable",
                            "name": "liquidityForEvent",
                            "nameLocation": "4824:17:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8232,
                            "src": "4816:25:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8219,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4816:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8222,
                        "initialValue": {
                          "id": 8221,
                          "name": "liquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8078,
                          "src": "4844:9:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4816:37:40"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 8224,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4873:3:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 8225,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "4873:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8226,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8112,
                              "src": "4885:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8227,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8118,
                              "src": "4894:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8228,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8081,
                              "src": "4903:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8229,
                              "name": "liquidityForEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8220,
                              "src": "4914:17:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8223,
                            "name": "Mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7826,
                            "src": "4868:4:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address,uint256)"
                            }
                          },
                          "id": 8230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4868:64:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8231,
                        "nodeType": "EmitStatement",
                        "src": "4863:69:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8070,
                    "nodeType": "StructuredDocumentation",
                    "src": "3479:188:40",
                    "text": "@dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\n The router must ensure that sufficient LP tokens are minted by using the return value."
                  },
                  "functionSelector": "7ba0e2e7",
                  "id": 8233,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 8076,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 8075,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 7918,
                        "src": "3723:4:40"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3723:4:40"
                    }
                  ],
                  "name": "mint",
                  "nameLocation": "3681:4:40",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8074,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3714:8:40"
                  },
                  "parameters": {
                    "id": 8073,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8072,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3701:4:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8233,
                        "src": "3686:19:40",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8071,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3686:5:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3685:21:40"
                  },
                  "returnParameters": {
                    "id": 8079,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8078,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "3745:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8233,
                        "src": "3737:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8077,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3737:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3736:19:40"
                  },
                  "scope": 9825,
                  "src": "3672:1267:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2394
                  ],
                  "body": {
                    "id": 8373,
                    "nodeType": "Block",
                    "src": "5175:942:40",
                    "statements": [
                      {
                        "assignments": [
                          8247,
                          8249
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8247,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "5194:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8373,
                            "src": "5186:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 8246,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5186:7:40",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8249,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "5210:11:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8373,
                            "src": "5205:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 8248,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5205:4:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8259,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 8252,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8236,
                              "src": "5236:4:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 8254,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5243:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 8253,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5243:7:40",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 8256,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5252:4:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 8255,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5252:4:40",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 8257,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5242:15:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 8250,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "5225:3:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 8251,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "5225:10:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 8258,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5225:33:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_bool_$",
                            "typeString": "tuple(address payable,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5185:73:40"
                      },
                      {
                        "assignments": [
                          8261,
                          8263
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8261,
                            "mutability": "mutable",
                            "name": "balance0",
                            "nameLocation": "5277:8:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8373,
                            "src": "5269:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8260,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5269:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8263,
                            "mutability": "mutable",
                            "name": "balance1",
                            "nameLocation": "5295:8:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8373,
                            "src": "5287:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8262,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5287:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8266,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8264,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9099,
                            "src": "5307:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 8265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5307:10:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5268:49:40"
                      },
                      {
                        "assignments": [
                          8268
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8268,
                            "mutability": "mutable",
                            "name": "liquidity",
                            "nameLocation": "5335:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8373,
                            "src": "5327:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8267,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5327:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8275,
                        "initialValue": {
                          "baseExpression": {
                            "id": 8269,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11922,
                            "src": "5347:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8274,
                          "indexExpression": {
                            "arguments": [
                              {
                                "id": 8272,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "5365:4:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_HybridPool_$9825",
                                  "typeString": "contract HybridPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_HybridPool_$9825",
                                  "typeString": "contract HybridPool"
                                }
                              ],
                              "id": 8271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5357:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 8270,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5357:7:40",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8273,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5357:13:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5347:24:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5327:44:40"
                      },
                      {
                        "assignments": [
                          8277,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8277,
                            "mutability": "mutable",
                            "name": "_totalSupply",
                            "nameLocation": "5391:12:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8373,
                            "src": "5383:20:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8276,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5383:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 8282,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 8279,
                              "name": "balance0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8261,
                              "src": "5418:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8280,
                              "name": "balance1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8263,
                              "src": "5428:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8278,
                            "name": "_mintFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9571,
                            "src": "5409:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 8281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5409:28:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5382:55:40"
                      },
                      {
                        "assignments": [
                          8284
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8284,
                            "mutability": "mutable",
                            "name": "amount0",
                            "nameLocation": "5456:7:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8373,
                            "src": "5448:15:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8283,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5448:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8291,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8287,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 8285,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8268,
                                  "src": "5467:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 8286,
                                  "name": "balance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8261,
                                  "src": "5479:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5467:20:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 8288,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5466:22:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 8289,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8277,
                            "src": "5491:12:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5466:37:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5448:55:40"
                      },
                      {
                        "assignments": [
                          8293
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8293,
                            "mutability": "mutable",
                            "name": "amount1",
                            "nameLocation": "5521:7:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8373,
                            "src": "5513:15:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8292,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5513:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8300,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8296,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 8294,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8268,
                                  "src": "5532:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 8295,
                                  "name": "balance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8263,
                                  "src": "5544:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5532:20:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 8297,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5531:22:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 8298,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8277,
                            "src": "5556:12:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5531:37:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5513:55:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 8304,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "5593:4:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_HybridPool_$9825",
                                    "typeString": "contract HybridPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_HybridPool_$9825",
                                    "typeString": "contract HybridPool"
                                  }
                                ],
                                "id": 8303,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5585:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 8302,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5585:7:40",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8305,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5585:13:40",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8306,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8268,
                              "src": "5600:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8301,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12278,
                            "src": "5579:5:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 8307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5579:31:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8308,
                        "nodeType": "ExpressionStatement",
                        "src": "5579:31:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8310,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7871,
                              "src": "5630:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8311,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8284,
                              "src": "5638:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8312,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8247,
                              "src": "5647:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8313,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8249,
                              "src": "5658:11:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 8309,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9250,
                            "src": "5620:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 8314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5620:50:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8315,
                        "nodeType": "ExpressionStatement",
                        "src": "5620:50:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8317,
                              "name": "token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7873,
                              "src": "5690:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8318,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8293,
                              "src": "5698:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8319,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8247,
                              "src": "5707:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8320,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8249,
                              "src": "5718:11:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 8316,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9250,
                            "src": "5680:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 8321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5680:50:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8322,
                        "nodeType": "ExpressionStatement",
                        "src": "5680:50:40"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8323,
                            "name": "_updateReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9059,
                            "src": "5741:15:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 8324,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5741:17:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8325,
                        "nodeType": "ExpressionStatement",
                        "src": "5741:17:40"
                      },
                      {
                        "expression": {
                          "id": 8333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8326,
                            "name": "withdrawnAmounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8244,
                            "src": "5769:16:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "32",
                                "id": 8331,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5806:1:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                }
                              ],
                              "id": 8330,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "5788:17:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (struct IPool.TokenAmount memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 8328,
                                  "nodeType": "UserDefinedTypeName",
                                  "pathNode": {
                                    "id": 8327,
                                    "name": "TokenAmount",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2449,
                                    "src": "5792:11:40"
                                  },
                                  "referencedDeclaration": 2449,
                                  "src": "5792:11:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                                    "typeString": "struct IPool.TokenAmount"
                                  }
                                },
                                "id": 8329,
                                "nodeType": "ArrayTypeName",
                                "src": "5792:13:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                                  "typeString": "struct IPool.TokenAmount[]"
                                }
                              }
                            },
                            "id": 8332,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5788:20:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory[] memory"
                            }
                          },
                          "src": "5769:39:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct IPool.TokenAmount memory[] memory"
                          }
                        },
                        "id": 8334,
                        "nodeType": "ExpressionStatement",
                        "src": "5769:39:40"
                      },
                      {
                        "expression": {
                          "id": 8342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 8335,
                              "name": "withdrawnAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8244,
                              "src": "5818:16:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IPool.TokenAmount memory[] memory"
                              }
                            },
                            "id": 8337,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 8336,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5835:1:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5818:19:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8339,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7871,
                                "src": "5860:6:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 8340,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8284,
                                "src": "5876:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 8338,
                              "name": "TokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2449,
                              "src": "5840:11:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_TokenAmount_$2449_storage_ptr_$",
                                "typeString": "type(struct IPool.TokenAmount storage pointer)"
                              }
                            },
                            "id": 8341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "token",
                              "amount"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "5840:45:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory"
                            }
                          },
                          "src": "5818:67:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                            "typeString": "struct IPool.TokenAmount memory"
                          }
                        },
                        "id": 8343,
                        "nodeType": "ExpressionStatement",
                        "src": "5818:67:40"
                      },
                      {
                        "expression": {
                          "id": 8351,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 8344,
                              "name": "withdrawnAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8244,
                              "src": "5895:16:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IPool.TokenAmount memory[] memory"
                              }
                            },
                            "id": 8346,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 8345,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5912:1:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5895:19:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8348,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7873,
                                "src": "5937:6:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 8349,
                                "name": "amount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8293,
                                "src": "5953:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 8347,
                              "name": "TokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2449,
                              "src": "5917:11:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_TokenAmount_$2449_storage_ptr_$",
                                "typeString": "type(struct IPool.TokenAmount storage pointer)"
                              }
                            },
                            "id": 8350,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "token",
                              "amount"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "5917:45:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory"
                            }
                          },
                          "src": "5895:67:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                            "typeString": "struct IPool.TokenAmount memory"
                          }
                        },
                        "id": 8352,
                        "nodeType": "ExpressionStatement",
                        "src": "5895:67:40"
                      },
                      {
                        "expression": {
                          "id": 8362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8353,
                            "name": "dLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7893,
                            "src": "5973:5:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8357,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 8355,
                                  "name": "balance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8261,
                                  "src": "5999:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 8356,
                                  "name": "amount0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8284,
                                  "src": "6010:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5999:18:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8360,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 8358,
                                  "name": "balance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8263,
                                  "src": "6019:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 8359,
                                  "name": "amount1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8293,
                                  "src": "6030:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6019:18:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 8354,
                              "name": "_computeLiquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9281,
                              "src": "5981:17:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) view returns (uint256)"
                              }
                            },
                            "id": 8361,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5981:57:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5973:65:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8363,
                        "nodeType": "ExpressionStatement",
                        "src": "5973:65:40"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 8365,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "6059:3:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 8366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "6059:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8367,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8284,
                              "src": "6071:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8368,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8293,
                              "src": "6080:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8369,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8247,
                              "src": "6089:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8370,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8268,
                              "src": "6100:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8364,
                            "name": "Burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7838,
                            "src": "6054:4:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address,uint256)"
                            }
                          },
                          "id": 8371,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6054:56:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8372,
                        "nodeType": "EmitStatement",
                        "src": "6049:61:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8234,
                    "nodeType": "StructuredDocumentation",
                    "src": "4945:115:40",
                    "text": "@dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens."
                  },
                  "functionSelector": "2a07b6c7",
                  "id": 8374,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 8240,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 8239,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 7918,
                        "src": "5116:4:40"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5116:4:40"
                    }
                  ],
                  "name": "burn",
                  "nameLocation": "5074:4:40",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8238,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5107:8:40"
                  },
                  "parameters": {
                    "id": 8237,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8236,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5094:4:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8374,
                        "src": "5079:19:40",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8235,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5079:5:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5078:21:40"
                  },
                  "returnParameters": {
                    "id": 8245,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8244,
                        "mutability": "mutable",
                        "name": "withdrawnAmounts",
                        "nameLocation": "5157:16:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8374,
                        "src": "5130:43:40",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IPool.TokenAmount[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8242,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 8241,
                              "name": "IPool.TokenAmount",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2449,
                              "src": "5130:17:40"
                            },
                            "referencedDeclaration": 2449,
                            "src": "5130:17:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                              "typeString": "struct IPool.TokenAmount"
                            }
                          },
                          "id": 8243,
                          "nodeType": "ArrayTypeName",
                          "src": "5130:19:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                            "typeString": "struct IPool.TokenAmount[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5129:45:40"
                  },
                  "scope": 9825,
                  "src": "5065:1052:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2402
                  ],
                  "body": {
                    "id": 8544,
                    "nodeType": "Block",
                    "src": "6382:1450:40",
                    "statements": [
                      {
                        "assignments": [
                          8386,
                          8388,
                          8390
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8386,
                            "mutability": "mutable",
                            "name": "tokenOut",
                            "nameLocation": "6401:8:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8544,
                            "src": "6393:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 8385,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6393:7:40",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8388,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "6419:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8544,
                            "src": "6411:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 8387,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6411:7:40",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8390,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "6435:11:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8544,
                            "src": "6430:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 8389,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "6430:4:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8402,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 8393,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8377,
                              "src": "6461:4:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 8395,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6468:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 8394,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6468:7:40",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 8397,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6477:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 8396,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6477:7:40",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 8399,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6486:4:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 8398,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6486:4:40",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 8400,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "6467:24:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 8391,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "6450:3:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 8392,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "6450:10:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 8401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6450:42:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_bool_$",
                            "typeString": "tuple(address payable,address payable,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6392:100:40"
                      },
                      {
                        "assignments": [
                          8404,
                          8406
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8404,
                            "mutability": "mutable",
                            "name": "balance0",
                            "nameLocation": "6511:8:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8544,
                            "src": "6503:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8403,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6503:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8406,
                            "mutability": "mutable",
                            "name": "balance1",
                            "nameLocation": "6529:8:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8544,
                            "src": "6521:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8405,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6521:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8409,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8407,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9099,
                            "src": "6541:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 8408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6541:10:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6502:49:40"
                      },
                      {
                        "assignments": [
                          8411
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8411,
                            "mutability": "mutable",
                            "name": "liquidity",
                            "nameLocation": "6569:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8544,
                            "src": "6561:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8410,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6561:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8418,
                        "initialValue": {
                          "baseExpression": {
                            "id": 8412,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11922,
                            "src": "6581:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8417,
                          "indexExpression": {
                            "arguments": [
                              {
                                "id": 8415,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "6599:4:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_HybridPool_$9825",
                                  "typeString": "contract HybridPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_HybridPool_$9825",
                                  "typeString": "contract HybridPool"
                                }
                              ],
                              "id": 8414,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6591:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 8413,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6591:7:40",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8416,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6591:13:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6581:24:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6561:44:40"
                      },
                      {
                        "assignments": [
                          8420,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8420,
                            "mutability": "mutable",
                            "name": "_totalSupply",
                            "nameLocation": "6625:12:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8544,
                            "src": "6617:20:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8419,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6617:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 8425,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 8422,
                              "name": "balance0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8404,
                              "src": "6652:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8423,
                              "name": "balance1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8406,
                              "src": "6662:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8421,
                            "name": "_mintFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9571,
                            "src": "6643:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 8424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6643:28:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6616:55:40"
                      },
                      {
                        "assignments": [
                          8427
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8427,
                            "mutability": "mutable",
                            "name": "amount0",
                            "nameLocation": "6690:7:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8544,
                            "src": "6682:15:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8426,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6682:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8434,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8430,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 8428,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8411,
                                  "src": "6701:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 8429,
                                  "name": "balance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8404,
                                  "src": "6713:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6701:20:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 8431,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6700:22:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 8432,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8420,
                            "src": "6725:12:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6700:37:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6682:55:40"
                      },
                      {
                        "assignments": [
                          8436
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8436,
                            "mutability": "mutable",
                            "name": "amount1",
                            "nameLocation": "6755:7:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8544,
                            "src": "6747:15:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8435,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6747:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8443,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8439,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 8437,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8411,
                                  "src": "6766:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 8438,
                                  "name": "balance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8406,
                                  "src": "6778:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6766:20:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 8440,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6765:22:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 8441,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8420,
                            "src": "6790:12:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6765:37:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6747:55:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 8447,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "6827:4:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_HybridPool_$9825",
                                    "typeString": "contract HybridPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_HybridPool_$9825",
                                    "typeString": "contract HybridPool"
                                  }
                                ],
                                "id": 8446,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6819:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 8445,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6819:7:40",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8448,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6819:13:40",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8449,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8411,
                              "src": "6834:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8444,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12278,
                            "src": "6813:5:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 8450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6813:31:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8451,
                        "nodeType": "ExpressionStatement",
                        "src": "6813:31:40"
                      },
                      {
                        "expression": {
                          "id": 8461,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8452,
                            "name": "dLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7893,
                            "src": "6854:5:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8456,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 8454,
                                  "name": "balance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8404,
                                  "src": "6880:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 8455,
                                  "name": "amount0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8427,
                                  "src": "6891:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6880:18:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8459,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 8457,
                                  "name": "balance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8406,
                                  "src": "6900:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 8458,
                                  "name": "amount1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8436,
                                  "src": "6911:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6900:18:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 8453,
                              "name": "_computeLiquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9281,
                              "src": "6862:17:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) view returns (uint256)"
                              }
                            },
                            "id": 8460,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6862:57:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6854:65:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8462,
                        "nodeType": "ExpressionStatement",
                        "src": "6854:65:40"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 8465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8463,
                            "name": "tokenOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8386,
                            "src": "6957:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 8464,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7873,
                            "src": "6969:6:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "6957:18:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 8530,
                          "nodeType": "Block",
                          "src": "7388:340:40",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 8498,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8496,
                                      "name": "tokenOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8386,
                                      "src": "7458:8:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 8497,
                                      "name": "token0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7871,
                                      "src": "7470:6:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "7458:18:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e56414c49445f4f55545055545f544f4b454e",
                                    "id": 8499,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7478:22:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831",
                                      "typeString": "literal_string \"INVALID_OUTPUT_TOKEN\""
                                    },
                                    "value": "INVALID_OUTPUT_TOKEN"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831",
                                      "typeString": "literal_string \"INVALID_OUTPUT_TOKEN\""
                                    }
                                  ],
                                  "id": 8495,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "7450:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 8500,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7450:51:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8501,
                              "nodeType": "ExpressionStatement",
                              "src": "7450:51:40"
                            },
                            {
                              "expression": {
                                "id": 8513,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8502,
                                  "name": "amount0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8427,
                                  "src": "7515:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 8504,
                                      "name": "amount1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8436,
                                      "src": "7540:7:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 8507,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8505,
                                        "name": "balance0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8404,
                                        "src": "7549:8:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 8506,
                                        "name": "amount0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8427,
                                        "src": "7560:7:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7549:18:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 8510,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8508,
                                        "name": "balance1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8406,
                                        "src": "7569:8:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 8509,
                                        "name": "amount1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8436,
                                        "src": "7580:7:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7569:18:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 8511,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7589:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 8503,
                                    "name": "_getAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9204,
                                    "src": "7526:13:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256,bool) view returns (uint256)"
                                    }
                                  },
                                  "id": 8512,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7526:69:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7515:80:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8514,
                              "nodeType": "ExpressionStatement",
                              "src": "7515:80:40"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 8516,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7871,
                                    "src": "7619:6:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 8517,
                                    "name": "amount0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8427,
                                    "src": "7627:7:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 8518,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8388,
                                    "src": "7636:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 8519,
                                    "name": "unwrapBento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8390,
                                    "src": "7647:11:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 8515,
                                  "name": "_transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9250,
                                  "src": "7609:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,address,bool)"
                                  }
                                },
                                "id": 8520,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7609:50:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8521,
                              "nodeType": "ExpressionStatement",
                              "src": "7609:50:40"
                            },
                            {
                              "expression": {
                                "id": 8524,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8522,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8383,
                                  "src": "7673:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 8523,
                                  "name": "amount0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8427,
                                  "src": "7685:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7673:19:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8525,
                              "nodeType": "ExpressionStatement",
                              "src": "7673:19:40"
                            },
                            {
                              "expression": {
                                "id": 8528,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8526,
                                  "name": "amount1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8436,
                                  "src": "7706:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "30",
                                  "id": 8527,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7716:1:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7706:11:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8529,
                              "nodeType": "ExpressionStatement",
                              "src": "7706:11:40"
                            }
                          ]
                        },
                        "id": 8531,
                        "nodeType": "IfStatement",
                        "src": "6953:775:40",
                        "trueBody": {
                          "id": 8494,
                          "nodeType": "Block",
                          "src": "6977:405:40",
                          "statements": [
                            {
                              "expression": {
                                "id": 8477,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8466,
                                  "name": "amount1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8436,
                                  "src": "7170:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 8468,
                                      "name": "amount0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8427,
                                      "src": "7195:7:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 8471,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8469,
                                        "name": "balance0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8404,
                                        "src": "7204:8:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 8470,
                                        "name": "amount0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8427,
                                        "src": "7215:7:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7204:18:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 8474,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8472,
                                        "name": "balance1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8406,
                                        "src": "7224:8:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 8473,
                                        "name": "amount1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8436,
                                        "src": "7235:7:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7224:18:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "74727565",
                                      "id": 8475,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7244:4:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 8467,
                                    "name": "_getAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9204,
                                    "src": "7181:13:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256,bool) view returns (uint256)"
                                    }
                                  },
                                  "id": 8476,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7181:68:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7170:79:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8478,
                              "nodeType": "ExpressionStatement",
                              "src": "7170:79:40"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 8480,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7873,
                                    "src": "7273:6:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 8481,
                                    "name": "amount1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8436,
                                    "src": "7281:7:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 8482,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8388,
                                    "src": "7290:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 8483,
                                    "name": "unwrapBento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8390,
                                    "src": "7301:11:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 8479,
                                  "name": "_transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9250,
                                  "src": "7263:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,address,bool)"
                                  }
                                },
                                "id": 8484,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7263:50:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8485,
                              "nodeType": "ExpressionStatement",
                              "src": "7263:50:40"
                            },
                            {
                              "expression": {
                                "id": 8488,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8486,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8383,
                                  "src": "7327:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 8487,
                                  "name": "amount1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8436,
                                  "src": "7339:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7327:19:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8489,
                              "nodeType": "ExpressionStatement",
                              "src": "7327:19:40"
                            },
                            {
                              "expression": {
                                "id": 8492,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8490,
                                  "name": "amount0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8427,
                                  "src": "7360:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "30",
                                  "id": 8491,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7370:1:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7360:11:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8493,
                              "nodeType": "ExpressionStatement",
                              "src": "7360:11:40"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8532,
                            "name": "_updateReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9059,
                            "src": "7737:15:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 8533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7737:17:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8534,
                        "nodeType": "ExpressionStatement",
                        "src": "7737:17:40"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 8536,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "7774:3:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 8537,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "7774:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8538,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8427,
                              "src": "7786:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8539,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8436,
                              "src": "7795:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8540,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8388,
                              "src": "7804:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8541,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8411,
                              "src": "7815:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8535,
                            "name": "Burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7838,
                            "src": "7769:4:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address,uint256)"
                            }
                          },
                          "id": 8542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7769:56:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8543,
                        "nodeType": "EmitStatement",
                        "src": "7764:61:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8375,
                    "nodeType": "StructuredDocumentation",
                    "src": "6123:164:40",
                    "text": "@dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\n - i.e., the user gets a single token out by burning LP tokens."
                  },
                  "functionSelector": "af8c09bf",
                  "id": 8545,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 8381,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 8380,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 7918,
                        "src": "6349:4:40"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6349:4:40"
                    }
                  ],
                  "name": "burnSingle",
                  "nameLocation": "6301:10:40",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8379,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6340:8:40"
                  },
                  "parameters": {
                    "id": 8378,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8377,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6327:4:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8545,
                        "src": "6312:19:40",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8376,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6312:5:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6311:21:40"
                  },
                  "returnParameters": {
                    "id": 8384,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8383,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "6371:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8545,
                        "src": "6363:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8382,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6363:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6362:19:40"
                  },
                  "scope": 9825,
                  "src": "6292:1540:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2368
                  ],
                  "body": {
                    "id": 8662,
                    "nodeType": "Block",
                    "src": "8044:956:40",
                    "statements": [
                      {
                        "assignments": [
                          8557,
                          8559,
                          8561
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8557,
                            "mutability": "mutable",
                            "name": "tokenIn",
                            "nameLocation": "8063:7:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8662,
                            "src": "8055:15:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 8556,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8055:7:40",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8559,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "8080:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8662,
                            "src": "8072:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 8558,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8072:7:40",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8561,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "8096:11:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8662,
                            "src": "8091:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 8560,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "8091:4:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8573,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 8564,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8548,
                              "src": "8122:4:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 8566,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8129:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 8565,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8129:7:40",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 8568,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8138:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 8567,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8138:7:40",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 8570,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8147:4:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 8569,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8147:4:40",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 8571,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "8128:24:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 8562,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "8111:3:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 8563,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "8111:10:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 8572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8111:42:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_bool_$",
                            "typeString": "tuple(address payable,address payable,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8054:99:40"
                      },
                      {
                        "assignments": [
                          8575,
                          8577,
                          8579,
                          8581
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8575,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "8172:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8662,
                            "src": "8164:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8574,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8164:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8577,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "8191:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8662,
                            "src": "8183:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8576,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8183:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8579,
                            "mutability": "mutable",
                            "name": "balance0",
                            "nameLocation": "8210:8:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8662,
                            "src": "8202:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8578,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8202:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8581,
                            "mutability": "mutable",
                            "name": "balance1",
                            "nameLocation": "8228:8:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8662,
                            "src": "8220:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8580,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8220:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8584,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8582,
                            "name": "_getReservesAndBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9010,
                            "src": "8240:23:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256,uint256,uint256)"
                            }
                          },
                          "id": 8583,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8240:25:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8163:102:40"
                      },
                      {
                        "assignments": [
                          8586
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8586,
                            "mutability": "mutable",
                            "name": "amountIn",
                            "nameLocation": "8283:8:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8662,
                            "src": "8275:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8585,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8275:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8587,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8275:16:40"
                      },
                      {
                        "assignments": [
                          8589
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8589,
                            "mutability": "mutable",
                            "name": "tokenOut",
                            "nameLocation": "8309:8:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8662,
                            "src": "8301:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 8588,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8301:7:40",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8590,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8301:16:40"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 8593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8591,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8557,
                            "src": "8332:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 8592,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7871,
                            "src": "8343:6:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "8332:17:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 8642,
                          "nodeType": "Block",
                          "src": "8563:270:40",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 8618,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8616,
                                      "name": "tokenIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8557,
                                      "src": "8585:7:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 8617,
                                      "name": "token1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7873,
                                      "src": "8596:6:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "8585:17:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e56414c49445f494e5055545f544f4b454e",
                                    "id": 8619,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8604:21:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                      "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                    },
                                    "value": "INVALID_INPUT_TOKEN"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                      "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                    }
                                  ],
                                  "id": 8615,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "8577:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 8620,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8577:49:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8621,
                              "nodeType": "ExpressionStatement",
                              "src": "8577:49:40"
                            },
                            {
                              "expression": {
                                "id": 8624,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8622,
                                  "name": "tokenOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8589,
                                  "src": "8640:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 8623,
                                  "name": "token0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7871,
                                  "src": "8651:6:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "8640:17:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 8625,
                              "nodeType": "ExpressionStatement",
                              "src": "8640:17:40"
                            },
                            {
                              "id": 8632,
                              "nodeType": "UncheckedBlock",
                              "src": "8671:74:40",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 8630,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 8626,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8586,
                                      "src": "8699:8:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 8629,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8627,
                                        "name": "balance1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8581,
                                        "src": "8710:8:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 8628,
                                        "name": "_reserve1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8577,
                                        "src": "8721:9:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8710:20:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8699:31:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 8631,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8699:31:40"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "id": 8640,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8633,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8554,
                                  "src": "8758:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 8635,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8586,
                                      "src": "8784:8:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 8636,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8575,
                                      "src": "8794:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 8637,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8577,
                                      "src": "8805:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 8638,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8816:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 8634,
                                    "name": "_getAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9204,
                                    "src": "8770:13:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256,bool) view returns (uint256)"
                                    }
                                  },
                                  "id": 8639,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8770:52:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8758:64:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8641,
                              "nodeType": "ExpressionStatement",
                              "src": "8758:64:40"
                            }
                          ]
                        },
                        "id": 8643,
                        "nodeType": "IfStatement",
                        "src": "8328:505:40",
                        "trueBody": {
                          "id": 8614,
                          "nodeType": "Block",
                          "src": "8351:206:40",
                          "statements": [
                            {
                              "expression": {
                                "id": 8596,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8594,
                                  "name": "tokenOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8589,
                                  "src": "8365:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 8595,
                                  "name": "token1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7873,
                                  "src": "8376:6:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "8365:17:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 8597,
                              "nodeType": "ExpressionStatement",
                              "src": "8365:17:40"
                            },
                            {
                              "id": 8604,
                              "nodeType": "UncheckedBlock",
                              "src": "8396:74:40",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 8602,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 8598,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8586,
                                      "src": "8424:8:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 8601,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8599,
                                        "name": "balance0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8579,
                                        "src": "8435:8:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 8600,
                                        "name": "_reserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8575,
                                        "src": "8446:9:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8435:20:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8424:31:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 8603,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8424:31:40"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "id": 8612,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8605,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8554,
                                  "src": "8483:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 8607,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8586,
                                      "src": "8509:8:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 8608,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8575,
                                      "src": "8519:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 8609,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8577,
                                      "src": "8530:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "74727565",
                                      "id": 8610,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8541:4:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 8606,
                                    "name": "_getAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9204,
                                    "src": "8495:13:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256,bool) view returns (uint256)"
                                    }
                                  },
                                  "id": 8611,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8495:51:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8483:63:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8613,
                              "nodeType": "ExpressionStatement",
                              "src": "8483:63:40"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8645,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8589,
                              "src": "8852:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8646,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8554,
                              "src": "8862:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8647,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8559,
                              "src": "8873:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8648,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8561,
                              "src": "8884:11:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 8644,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9250,
                            "src": "8842:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 8649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8842:54:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8650,
                        "nodeType": "ExpressionStatement",
                        "src": "8842:54:40"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8651,
                            "name": "_updateReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9059,
                            "src": "8906:15:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 8652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8906:17:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8653,
                        "nodeType": "ExpressionStatement",
                        "src": "8906:17:40"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 8655,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8559,
                              "src": "8943:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8656,
                              "name": "tokenIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8557,
                              "src": "8954:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8657,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8589,
                              "src": "8963:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8658,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8586,
                              "src": "8973:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8659,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8554,
                              "src": "8983:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8654,
                            "name": "Swap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2444,
                            "src": "8938:4:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 8660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8938:55:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8661,
                        "nodeType": "EmitStatement",
                        "src": "8933:60:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8546,
                    "nodeType": "StructuredDocumentation",
                    "src": "7838:117:40",
                    "text": "@dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage."
                  },
                  "functionSelector": "627dd56a",
                  "id": 8663,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 8552,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 8551,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 7918,
                        "src": "8011:4:40"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8011:4:40"
                    }
                  ],
                  "name": "swap",
                  "nameLocation": "7969:4:40",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8550,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8002:8:40"
                  },
                  "parameters": {
                    "id": 8549,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8548,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "7989:4:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8663,
                        "src": "7974:19:40",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8547,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7974:5:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7973:21:40"
                  },
                  "returnParameters": {
                    "id": 8555,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8554,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "8033:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8663,
                        "src": "8025:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8553,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8025:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8024:19:40"
                  },
                  "scope": 9825,
                  "src": "7960:1040:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2376
                  ],
                  "body": {
                    "id": 8844,
                    "nodeType": "Block",
                    "src": "9231:1385:40",
                    "statements": [
                      {
                        "assignments": [
                          8675,
                          8677,
                          8679,
                          8681,
                          8683
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8675,
                            "mutability": "mutable",
                            "name": "tokenIn",
                            "nameLocation": "9250:7:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8844,
                            "src": "9242:15:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 8674,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9242:7:40",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8677,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "9267:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8844,
                            "src": "9259:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 8676,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9259:7:40",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8679,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "9283:11:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8844,
                            "src": "9278:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 8678,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9278:4:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8681,
                            "mutability": "mutable",
                            "name": "amountIn",
                            "nameLocation": "9304:8:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8844,
                            "src": "9296:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8680,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9296:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8683,
                            "mutability": "mutable",
                            "name": "context",
                            "nameLocation": "9327:7:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8844,
                            "src": "9314:20:40",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 8682,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "9314:5:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8699,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 8686,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8666,
                              "src": "9362:4:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 8688,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9381:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 8687,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9381:7:40",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 8690,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9390:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 8689,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9390:7:40",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 8692,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9399:4:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 8691,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9399:4:40",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 8694,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9405:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 8693,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9405:7:40",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 8696,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9414:5:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 8695,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9414:5:40",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 8697,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "9380:40:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool),type(uint256),type(bytes storage pointer))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool),type(uint256),type(bytes storage pointer))"
                              }
                            ],
                            "expression": {
                              "id": 8684,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "9338:3:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 8685,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "9338:10:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 8698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9338:92:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_bool_$_t_uint256_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(address payable,address payable,bool,uint256,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9241:189:40"
                      },
                      {
                        "assignments": [
                          8701,
                          8703
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8701,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "9449:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8844,
                            "src": "9441:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8700,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9441:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 8703,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "9468:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8844,
                            "src": "9460:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 8702,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9460:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8706,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8704,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8924,
                            "src": "9481:12:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 8705,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9481:14:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9440:55:40"
                      },
                      {
                        "assignments": [
                          8708
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8708,
                            "mutability": "mutable",
                            "name": "tokenOut",
                            "nameLocation": "9513:8:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8844,
                            "src": "9505:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 8707,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9505:7:40",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8709,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9505:16:40"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 8712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8710,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8675,
                            "src": "9536:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 8711,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7871,
                            "src": "9547:6:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9536:17:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 8831,
                          "nodeType": "Block",
                          "src": "10005:508:40",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 8772,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 8770,
                                      "name": "tokenIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8675,
                                      "src": "10027:7:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 8771,
                                      "name": "token1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7873,
                                      "src": "10038:6:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "10027:17:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e56414c49445f494e5055545f544f4b454e",
                                    "id": 8773,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10046:21:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                      "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                    },
                                    "value": "INVALID_INPUT_TOKEN"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                      "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                    }
                                  ],
                                  "id": 8769,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10019:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 8774,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10019:49:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8775,
                              "nodeType": "ExpressionStatement",
                              "src": "10019:49:40"
                            },
                            {
                              "expression": {
                                "id": 8778,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8776,
                                  "name": "tokenOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8708,
                                  "src": "10082:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 8777,
                                  "name": "token0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7871,
                                  "src": "10093:6:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "10082:17:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 8779,
                              "nodeType": "ExpressionStatement",
                              "src": "10082:17:40"
                            },
                            {
                              "expression": {
                                "id": 8787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8780,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8681,
                                  "src": "10113:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 8783,
                                      "name": "token1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7873,
                                      "src": "10139:6:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 8784,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8681,
                                      "src": "10147:8:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 8785,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10157:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8781,
                                      "name": "bento",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7864,
                                      "src": "10124:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                        "typeString": "contract IBentoBoxMinimal"
                                      }
                                    },
                                    "id": 8782,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toAmount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2175,
                                    "src": "10124:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (address,uint256,bool) view external returns (uint256)"
                                    }
                                  },
                                  "id": 8786,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10124:39:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10113:50:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8788,
                              "nodeType": "ExpressionStatement",
                              "src": "10113:50:40"
                            },
                            {
                              "expression": {
                                "id": 8796,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8789,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8672,
                                  "src": "10177:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 8791,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8681,
                                      "src": "10203:8:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 8792,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8701,
                                      "src": "10213:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 8793,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8703,
                                      "src": "10224:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 8794,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10235:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 8790,
                                    "name": "_getAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9204,
                                    "src": "10189:13:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256,bool) view returns (uint256)"
                                    }
                                  },
                                  "id": 8795,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10189:52:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10177:64:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8797,
                              "nodeType": "ExpressionStatement",
                              "src": "10177:64:40"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 8799,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7871,
                                    "src": "10268:6:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 8800,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8677,
                                    "src": "10276:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 8801,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8672,
                                    "src": "10287:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 8802,
                                    "name": "context",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8683,
                                    "src": "10298:7:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 8803,
                                    "name": "unwrapBento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8679,
                                    "src": "10307:11:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 8798,
                                  "name": "_processSwap",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8890,
                                  "src": "10255:12:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                                    "typeString": "function (address,address,uint256,bytes memory,bool)"
                                  }
                                },
                                "id": 8804,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10255:64:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8805,
                              "nodeType": "ExpressionStatement",
                              "src": "10255:64:40"
                            },
                            {
                              "assignments": [
                                8807
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 8807,
                                  "mutability": "mutable",
                                  "name": "balance1",
                                  "nameLocation": "10341:8:40",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 8831,
                                  "src": "10333:16:40",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 8806,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10333:7:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 8821,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 8810,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7873,
                                    "src": "10367:6:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 8813,
                                        "name": "token1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7873,
                                        "src": "10391:6:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "id": 8816,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -28,
                                            "src": "10407:4:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_HybridPool_$9825",
                                              "typeString": "contract HybridPool"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_HybridPool_$9825",
                                              "typeString": "contract HybridPool"
                                            }
                                          ],
                                          "id": 8815,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "10399:7:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 8814,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "10399:7:40",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 8817,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10399:13:40",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "id": 8811,
                                        "name": "bento",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7864,
                                        "src": "10375:5:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                          "typeString": "contract IBentoBoxMinimal"
                                        }
                                      },
                                      "id": 8812,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "balanceOf",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2151,
                                      "src": "10375:15:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address,address) view external returns (uint256)"
                                      }
                                    },
                                    "id": 8818,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10375:38:40",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "66616c7365",
                                    "id": 8819,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10415:5:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 8808,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7864,
                                    "src": "10352:5:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 8809,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toAmount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2175,
                                  "src": "10352:14:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256,bool) view external returns (uint256)"
                                  }
                                },
                                "id": 8820,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10352:69:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10333:88:40"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8827,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 8825,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8823,
                                        "name": "balance1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8807,
                                        "src": "10443:8:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 8824,
                                        "name": "_reserve1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8703,
                                        "src": "10454:9:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "10443:20:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "id": 8826,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8681,
                                      "src": "10467:8:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10443:32:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e53554646494349454e545f414d4f554e545f494e",
                                    "id": 8828,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10477:24:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9",
                                      "typeString": "literal_string \"INSUFFICIENT_AMOUNT_IN\""
                                    },
                                    "value": "INSUFFICIENT_AMOUNT_IN"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9",
                                      "typeString": "literal_string \"INSUFFICIENT_AMOUNT_IN\""
                                    }
                                  ],
                                  "id": 8822,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10435:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 8829,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10435:67:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8830,
                              "nodeType": "ExpressionStatement",
                              "src": "10435:67:40"
                            }
                          ]
                        },
                        "id": 8832,
                        "nodeType": "IfStatement",
                        "src": "9532:981:40",
                        "trueBody": {
                          "id": 8768,
                          "nodeType": "Block",
                          "src": "9555:444:40",
                          "statements": [
                            {
                              "expression": {
                                "id": 8715,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8713,
                                  "name": "tokenOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8708,
                                  "src": "9569:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 8714,
                                  "name": "token1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7873,
                                  "src": "9580:6:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "9569:17:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 8716,
                              "nodeType": "ExpressionStatement",
                              "src": "9569:17:40"
                            },
                            {
                              "expression": {
                                "id": 8724,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8717,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8681,
                                  "src": "9600:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 8720,
                                      "name": "token0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7871,
                                      "src": "9626:6:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 8721,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8681,
                                      "src": "9634:8:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 8722,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9644:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "expression": {
                                      "id": 8718,
                                      "name": "bento",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7864,
                                      "src": "9611:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                        "typeString": "contract IBentoBoxMinimal"
                                      }
                                    },
                                    "id": 8719,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toAmount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2175,
                                    "src": "9611:14:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (address,uint256,bool) view external returns (uint256)"
                                    }
                                  },
                                  "id": 8723,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9611:39:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9600:50:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8725,
                              "nodeType": "ExpressionStatement",
                              "src": "9600:50:40"
                            },
                            {
                              "expression": {
                                "id": 8733,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 8726,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8672,
                                  "src": "9664:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 8728,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8681,
                                      "src": "9690:8:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 8729,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8701,
                                      "src": "9700:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 8730,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8703,
                                      "src": "9711:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "74727565",
                                      "id": 8731,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9722:4:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 8727,
                                    "name": "_getAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9204,
                                    "src": "9676:13:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256,bool) view returns (uint256)"
                                    }
                                  },
                                  "id": 8732,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9676:51:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9664:63:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8734,
                              "nodeType": "ExpressionStatement",
                              "src": "9664:63:40"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 8736,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7873,
                                    "src": "9754:6:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 8737,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8677,
                                    "src": "9762:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 8738,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8672,
                                    "src": "9773:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 8739,
                                    "name": "context",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8683,
                                    "src": "9784:7:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 8740,
                                    "name": "unwrapBento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8679,
                                    "src": "9793:11:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 8735,
                                  "name": "_processSwap",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8890,
                                  "src": "9741:12:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                                    "typeString": "function (address,address,uint256,bytes memory,bool)"
                                  }
                                },
                                "id": 8741,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9741:64:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8742,
                              "nodeType": "ExpressionStatement",
                              "src": "9741:64:40"
                            },
                            {
                              "assignments": [
                                8744
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 8744,
                                  "mutability": "mutable",
                                  "name": "balance0",
                                  "nameLocation": "9827:8:40",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 8768,
                                  "src": "9819:16:40",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 8743,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9819:7:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 8758,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 8747,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7871,
                                    "src": "9853:6:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 8750,
                                        "name": "token0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7871,
                                        "src": "9877:6:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "id": 8753,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -28,
                                            "src": "9893:4:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_HybridPool_$9825",
                                              "typeString": "contract HybridPool"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_HybridPool_$9825",
                                              "typeString": "contract HybridPool"
                                            }
                                          ],
                                          "id": 8752,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "9885:7:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 8751,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "9885:7:40",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 8754,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9885:13:40",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "id": 8748,
                                        "name": "bento",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7864,
                                        "src": "9861:5:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                          "typeString": "contract IBentoBoxMinimal"
                                        }
                                      },
                                      "id": 8749,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "balanceOf",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2151,
                                      "src": "9861:15:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address,address) view external returns (uint256)"
                                      }
                                    },
                                    "id": 8755,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9861:38:40",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "66616c7365",
                                    "id": 8756,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9901:5:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 8745,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7864,
                                    "src": "9838:5:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 8746,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "toAmount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2175,
                                  "src": "9838:14:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256,bool) view external returns (uint256)"
                                  }
                                },
                                "id": 8757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9838:69:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9819:88:40"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8764,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 8762,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 8760,
                                        "name": "balance0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8744,
                                        "src": "9929:8:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 8761,
                                        "name": "_reserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8701,
                                        "src": "9940:9:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9929:20:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "id": 8763,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8681,
                                      "src": "9953:8:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9929:32:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e53554646494349454e545f414d4f554e545f494e",
                                    "id": 8765,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9963:24:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9",
                                      "typeString": "literal_string \"INSUFFICIENT_AMOUNT_IN\""
                                    },
                                    "value": "INSUFFICIENT_AMOUNT_IN"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9",
                                      "typeString": "literal_string \"INSUFFICIENT_AMOUNT_IN\""
                                    }
                                  ],
                                  "id": 8759,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "9921:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 8766,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9921:67:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8767,
                              "nodeType": "ExpressionStatement",
                              "src": "9921:67:40"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 8833,
                            "name": "_updateReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9059,
                            "src": "10522:15:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 8834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10522:17:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8835,
                        "nodeType": "ExpressionStatement",
                        "src": "10522:17:40"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 8837,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8677,
                              "src": "10559:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8838,
                              "name": "tokenIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8675,
                              "src": "10570:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8839,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8708,
                              "src": "10579:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8840,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8681,
                              "src": "10589:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8841,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8672,
                              "src": "10599:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8836,
                            "name": "Swap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2444,
                            "src": "10554:4:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 8842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10554:55:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8843,
                        "nodeType": "EmitStatement",
                        "src": "10549:60:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8664,
                    "nodeType": "StructuredDocumentation",
                    "src": "9006:131:40",
                    "text": "@dev Swaps one token for another with payload. The router must support swap callbacks and ensure there isn't too much slippage."
                  },
                  "functionSelector": "053da1c8",
                  "id": 8845,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 8670,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 8669,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 7918,
                        "src": "9198:4:40"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9198:4:40"
                    }
                  ],
                  "name": "flashSwap",
                  "nameLocation": "9151:9:40",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 8668,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9189:8:40"
                  },
                  "parameters": {
                    "id": 8667,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8666,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "9176:4:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8845,
                        "src": "9161:19:40",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8665,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9161:5:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9160:21:40"
                  },
                  "returnParameters": {
                    "id": 8673,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8672,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "9220:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8845,
                        "src": "9212:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8671,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9212:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9211:19:40"
                  },
                  "scope": 9825,
                  "src": "9142:1474:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 8855,
                    "nodeType": "Block",
                    "src": "10705:49:40",
                    "statements": [
                      {
                        "expression": {
                          "id": 8853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8849,
                            "name": "barFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7887,
                            "src": "10715:6:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 8850,
                                "name": "masterDeployer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7867,
                                "src": "10724:14:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                  "typeString": "contract IMasterDeployer"
                                }
                              },
                              "id": 8851,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "barFee",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2324,
                              "src": "10724:21:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 8852,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10724:23:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10715:32:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8854,
                        "nodeType": "ExpressionStatement",
                        "src": "10715:32:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8846,
                    "nodeType": "StructuredDocumentation",
                    "src": "10622:47:40",
                    "text": "@dev Updates `barFee` for Trident protocol."
                  },
                  "functionSelector": "92bc3219",
                  "id": 8856,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updateBarFee",
                  "nameLocation": "10683:12:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8847,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10695:2:40"
                  },
                  "returnParameters": {
                    "id": 8848,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10705:0:40"
                  },
                  "scope": 9825,
                  "src": "10674:80:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 8889,
                    "nodeType": "Block",
                    "src": "10923:148:40",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8870,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8858,
                              "src": "10943:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8871,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8862,
                              "src": "10953:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 8872,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8860,
                              "src": "10964:2:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8873,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8866,
                              "src": "10968:11:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 8869,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9250,
                            "src": "10933:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 8874,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10933:47:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8875,
                        "nodeType": "ExpressionStatement",
                        "src": "10933:47:40"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8879,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 8876,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8864,
                              "src": "10994:4:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 8877,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "10994:11:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 8878,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11009:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10994:16:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8888,
                        "nodeType": "IfStatement",
                        "src": "10990:74:40",
                        "trueBody": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 8885,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8864,
                                "src": "11059:4:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 8881,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "11027:3:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 8882,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "11027:10:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 8880,
                                  "name": "ITridentCallee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2482,
                                  "src": "11012:14:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ITridentCallee_$2482_$",
                                    "typeString": "type(contract ITridentCallee)"
                                  }
                                },
                                "id": 8883,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11012:26:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ITridentCallee_$2482",
                                  "typeString": "contract ITridentCallee"
                                }
                              },
                              "id": 8884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tridentSwapCallback",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2476,
                              "src": "11012:46:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                                "typeString": "function (bytes memory) external"
                              }
                            },
                            "id": 8886,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11012:52:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 8887,
                          "nodeType": "ExpressionStatement",
                          "src": "11012:52:40"
                        }
                      }
                    ]
                  },
                  "id": 8890,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_processSwap",
                  "nameLocation": "10769:12:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8867,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8858,
                        "mutability": "mutable",
                        "name": "tokenOut",
                        "nameLocation": "10799:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8890,
                        "src": "10791:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8857,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10791:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8860,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "10825:2:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8890,
                        "src": "10817:10:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8859,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10817:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8862,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "10845:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8890,
                        "src": "10837:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8861,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10837:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8864,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "10877:4:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8890,
                        "src": "10864:17:40",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8863,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10864:5:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8866,
                        "mutability": "mutable",
                        "name": "unwrapBento",
                        "nameLocation": "10896:11:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8890,
                        "src": "10891:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8865,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10891:4:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10781:132:40"
                  },
                  "returnParameters": {
                    "id": 8868,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10923:0:40"
                  },
                  "scope": 9825,
                  "src": "10760:311:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8923,
                    "nodeType": "Block",
                    "src": "11162:186:40",
                    "statements": [
                      {
                        "expression": {
                          "id": 8903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 8897,
                                "name": "_reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8893,
                                "src": "11173:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 8898,
                                "name": "_reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8895,
                                "src": "11184:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 8899,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "11172:22:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "components": [
                              {
                                "id": 8900,
                                "name": "reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7889,
                                "src": "11198:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              {
                                "id": 8901,
                                "name": "reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7891,
                                "src": "11208:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "id": 8902,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "11197:20:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$",
                              "typeString": "tuple(uint128,uint128)"
                            }
                          },
                          "src": "11172:45:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8904,
                        "nodeType": "ExpressionStatement",
                        "src": "11172:45:40"
                      },
                      {
                        "expression": {
                          "id": 8912,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8905,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8893,
                            "src": "11227:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8908,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7871,
                                "src": "11254:6:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 8909,
                                "name": "_reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8893,
                                "src": "11262:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "66616c7365",
                                "id": 8910,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11273:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "id": 8906,
                                "name": "bento",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7864,
                                "src": "11239:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                  "typeString": "contract IBentoBoxMinimal"
                                }
                              },
                              "id": 8907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "toAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2175,
                              "src": "11239:14:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256,bool) view external returns (uint256)"
                              }
                            },
                            "id": 8911,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11239:40:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11227:52:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8913,
                        "nodeType": "ExpressionStatement",
                        "src": "11227:52:40"
                      },
                      {
                        "expression": {
                          "id": 8921,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8914,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8895,
                            "src": "11289:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8917,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7873,
                                "src": "11316:6:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 8918,
                                "name": "_reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8895,
                                "src": "11324:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "66616c7365",
                                "id": 8919,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11335:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "id": 8915,
                                "name": "bento",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7864,
                                "src": "11301:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                  "typeString": "contract IBentoBoxMinimal"
                                }
                              },
                              "id": 8916,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "toAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2175,
                              "src": "11301:14:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256,bool) view external returns (uint256)"
                              }
                            },
                            "id": 8920,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11301:40:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11289:52:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8922,
                        "nodeType": "ExpressionStatement",
                        "src": "11289:52:40"
                      }
                    ]
                  },
                  "id": 8924,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getReserves",
                  "nameLocation": "11086:12:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8891,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11098:2:40"
                  },
                  "returnParameters": {
                    "id": 8896,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8893,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "11132:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8924,
                        "src": "11124:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8892,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11124:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8895,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "11151:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8924,
                        "src": "11143:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8894,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11143:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11123:38:40"
                  },
                  "scope": 9825,
                  "src": "11077:271:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9009,
                    "nodeType": "Block",
                    "src": "11572:479:40",
                    "statements": [
                      {
                        "expression": {
                          "id": 8941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 8935,
                                "name": "_reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8927,
                                "src": "11583:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 8936,
                                "name": "_reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8929,
                                "src": "11594:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 8937,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "11582:22:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "components": [
                              {
                                "id": 8938,
                                "name": "reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7889,
                                "src": "11608:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              {
                                "id": 8939,
                                "name": "reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7891,
                                "src": "11618:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "id": 8940,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "11607:20:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$",
                              "typeString": "tuple(uint128,uint128)"
                            }
                          },
                          "src": "11582:45:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8942,
                        "nodeType": "ExpressionStatement",
                        "src": "11582:45:40"
                      },
                      {
                        "expression": {
                          "id": 8952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8943,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8931,
                            "src": "11637:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8946,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7871,
                                "src": "11664:6:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 8949,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "11680:4:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_HybridPool_$9825",
                                      "typeString": "contract HybridPool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_HybridPool_$9825",
                                      "typeString": "contract HybridPool"
                                    }
                                  ],
                                  "id": 8948,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11672:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 8947,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11672:7:40",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 8950,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11672:13:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 8944,
                                "name": "bento",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7864,
                                "src": "11648:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                  "typeString": "contract IBentoBoxMinimal"
                                }
                              },
                              "id": 8945,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2151,
                              "src": "11648:15:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address,address) view external returns (uint256)"
                              }
                            },
                            "id": 8951,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11648:38:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11637:49:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8953,
                        "nodeType": "ExpressionStatement",
                        "src": "11637:49:40"
                      },
                      {
                        "expression": {
                          "id": 8963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8954,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8933,
                            "src": "11696:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8957,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7873,
                                "src": "11723:6:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 8960,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "11739:4:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_HybridPool_$9825",
                                      "typeString": "contract HybridPool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_HybridPool_$9825",
                                      "typeString": "contract HybridPool"
                                    }
                                  ],
                                  "id": 8959,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11731:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 8958,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11731:7:40",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 8961,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11731:13:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 8955,
                                "name": "bento",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7864,
                                "src": "11707:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                  "typeString": "contract IBentoBoxMinimal"
                                }
                              },
                              "id": 8956,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2151,
                              "src": "11707:15:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address,address) view external returns (uint256)"
                              }
                            },
                            "id": 8962,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11707:38:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11696:49:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8964,
                        "nodeType": "ExpressionStatement",
                        "src": "11696:49:40"
                      },
                      {
                        "assignments": [
                          8967
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8967,
                            "mutability": "mutable",
                            "name": "total0",
                            "nameLocation": "11769:6:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9009,
                            "src": "11755:20:40",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Rebase_$2859_memory_ptr",
                              "typeString": "struct Rebase"
                            },
                            "typeName": {
                              "id": 8966,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 8965,
                                "name": "Rebase",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2859,
                                "src": "11755:6:40"
                              },
                              "referencedDeclaration": 2859,
                              "src": "11755:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Rebase_$2859_storage_ptr",
                                "typeString": "struct Rebase"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8972,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 8970,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7871,
                              "src": "11791:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 8968,
                              "name": "bento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7864,
                              "src": "11778:5:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                "typeString": "contract IBentoBoxMinimal"
                              }
                            },
                            "id": 8969,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "totals",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2236,
                            "src": "11778:12:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_Rebase_$2859_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct Rebase memory)"
                            }
                          },
                          "id": 8971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11778:20:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Rebase_$2859_memory_ptr",
                            "typeString": "struct Rebase memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11755:43:40"
                      },
                      {
                        "assignments": [
                          8975
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8975,
                            "mutability": "mutable",
                            "name": "total1",
                            "nameLocation": "11822:6:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9009,
                            "src": "11808:20:40",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Rebase_$2859_memory_ptr",
                              "typeString": "struct Rebase"
                            },
                            "typeName": {
                              "id": 8974,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 8973,
                                "name": "Rebase",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2859,
                                "src": "11808:6:40"
                              },
                              "referencedDeclaration": 2859,
                              "src": "11808:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Rebase_$2859_storage_ptr",
                                "typeString": "struct Rebase"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8980,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 8978,
                              "name": "token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7873,
                              "src": "11844:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 8976,
                              "name": "bento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7864,
                              "src": "11831:5:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                "typeString": "contract IBentoBoxMinimal"
                              }
                            },
                            "id": 8977,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "totals",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2236,
                            "src": "11831:12:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_Rebase_$2859_memory_ptr_$",
                              "typeString": "function (address) view external returns (struct Rebase memory)"
                            }
                          },
                          "id": 8979,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11831:20:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Rebase_$2859_memory_ptr",
                            "typeString": "struct Rebase memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11808:43:40"
                      },
                      {
                        "expression": {
                          "id": 8986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8981,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8927,
                            "src": "11862:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8984,
                                "name": "_reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8927,
                                "src": "11891:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 8982,
                                "name": "total0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8967,
                                "src": "11874:6:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Rebase_$2859_memory_ptr",
                                  "typeString": "struct Rebase memory"
                                }
                              },
                              "id": 8983,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "toElastic",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2928,
                              "src": "11874:16:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_Rebase_$2859_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_struct$_Rebase_$2859_memory_ptr_$",
                                "typeString": "function (struct Rebase memory,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 8985,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11874:27:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11862:39:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8987,
                        "nodeType": "ExpressionStatement",
                        "src": "11862:39:40"
                      },
                      {
                        "expression": {
                          "id": 8993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8988,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8929,
                            "src": "11911:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8991,
                                "name": "_reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8929,
                                "src": "11940:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 8989,
                                "name": "total1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8975,
                                "src": "11923:6:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Rebase_$2859_memory_ptr",
                                  "typeString": "struct Rebase memory"
                                }
                              },
                              "id": 8990,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "toElastic",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2928,
                              "src": "11923:16:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_Rebase_$2859_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_struct$_Rebase_$2859_memory_ptr_$",
                                "typeString": "function (struct Rebase memory,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 8992,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11923:27:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11911:39:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 8994,
                        "nodeType": "ExpressionStatement",
                        "src": "11911:39:40"
                      },
                      {
                        "expression": {
                          "id": 9000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8995,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8931,
                            "src": "11960:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 8998,
                                "name": "balance0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8931,
                                "src": "11988:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 8996,
                                "name": "total0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8967,
                                "src": "11971:6:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Rebase_$2859_memory_ptr",
                                  "typeString": "struct Rebase memory"
                                }
                              },
                              "id": 8997,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "toElastic",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2928,
                              "src": "11971:16:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_Rebase_$2859_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_struct$_Rebase_$2859_memory_ptr_$",
                                "typeString": "function (struct Rebase memory,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 8999,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11971:26:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11960:37:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9001,
                        "nodeType": "ExpressionStatement",
                        "src": "11960:37:40"
                      },
                      {
                        "expression": {
                          "id": 9007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9002,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8933,
                            "src": "12007:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9005,
                                "name": "balance1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8933,
                                "src": "12035:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 9003,
                                "name": "total1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8975,
                                "src": "12018:6:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Rebase_$2859_memory_ptr",
                                  "typeString": "struct Rebase memory"
                                }
                              },
                              "id": 9004,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "toElastic",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2928,
                              "src": "12018:16:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_Rebase_$2859_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_struct$_Rebase_$2859_memory_ptr_$",
                                "typeString": "function (struct Rebase memory,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 9006,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12018:26:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12007:37:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9008,
                        "nodeType": "ExpressionStatement",
                        "src": "12007:37:40"
                      }
                    ]
                  },
                  "id": 9010,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getReservesAndBalances",
                  "nameLocation": "11363:23:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8925,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11386:2:40"
                  },
                  "returnParameters": {
                    "id": 8934,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8927,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "11457:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9010,
                        "src": "11449:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8926,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11449:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8929,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "11488:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9010,
                        "src": "11480:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8928,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11480:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8931,
                        "mutability": "mutable",
                        "name": "balance0",
                        "nameLocation": "11519:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9010,
                        "src": "11511:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8930,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11511:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8933,
                        "mutability": "mutable",
                        "name": "balance1",
                        "nameLocation": "11549:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9010,
                        "src": "11541:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8932,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11541:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11435:132:40"
                  },
                  "scope": 9825,
                  "src": "11354:697:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9058,
                    "nodeType": "Block",
                    "src": "12093:282:40",
                    "statements": [
                      {
                        "assignments": [
                          9014,
                          9016
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9014,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "12112:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9058,
                            "src": "12104:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9013,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12104:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 9016,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "12131:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9058,
                            "src": "12123:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9015,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12123:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9019,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 9017,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9099,
                            "src": "12144:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 9018,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12144:10:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12103:51:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 9035,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9027,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9021,
                                  "name": "_reserve0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9014,
                                  "src": "12172:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 9024,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "12190:7:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint128_$",
                                          "typeString": "type(uint128)"
                                        },
                                        "typeName": {
                                          "id": 9023,
                                          "name": "uint128",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "12190:7:40",
                                          "typeDescriptions": {}
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_uint128_$",
                                          "typeString": "type(uint128)"
                                        }
                                      ],
                                      "id": 9022,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "12185:4:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 9025,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12185:13:40",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_uint128",
                                      "typeString": "type(uint128)"
                                    }
                                  },
                                  "id": 9026,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "max",
                                  "nodeType": "MemberAccess",
                                  "src": "12185:17:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "12172:30:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9034,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9028,
                                  "name": "_reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9016,
                                  "src": "12206:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 9031,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "12224:7:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint128_$",
                                          "typeString": "type(uint128)"
                                        },
                                        "typeName": {
                                          "id": 9030,
                                          "name": "uint128",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "12224:7:40",
                                          "typeDescriptions": {}
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_uint128_$",
                                          "typeString": "type(uint128)"
                                        }
                                      ],
                                      "id": 9029,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "12219:4:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 9032,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12219:13:40",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_uint128",
                                      "typeString": "type(uint128)"
                                    }
                                  },
                                  "id": 9033,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "max",
                                  "nodeType": "MemberAccess",
                                  "src": "12219:17:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "12206:30:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "12172:64:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f564552464c4f57",
                              "id": 9036,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12238:10:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1",
                                "typeString": "literal_string \"OVERFLOW\""
                              },
                              "value": "OVERFLOW"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1",
                                "typeString": "literal_string \"OVERFLOW\""
                              }
                            ],
                            "id": 9020,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "12164:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 9037,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12164:85:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9038,
                        "nodeType": "ExpressionStatement",
                        "src": "12164:85:40"
                      },
                      {
                        "expression": {
                          "id": 9044,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9039,
                            "name": "reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7889,
                            "src": "12259:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9042,
                                "name": "_reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9014,
                                "src": "12278:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 9041,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12270:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 9040,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "12270:7:40",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9043,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12270:18:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "12259:29:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 9045,
                        "nodeType": "ExpressionStatement",
                        "src": "12259:29:40"
                      },
                      {
                        "expression": {
                          "id": 9051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9046,
                            "name": "reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7891,
                            "src": "12298:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9049,
                                "name": "_reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9016,
                                "src": "12317:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 9048,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12309:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 9047,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "12309:7:40",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9050,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12309:18:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "12298:29:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 9052,
                        "nodeType": "ExpressionStatement",
                        "src": "12298:29:40"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 9054,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9014,
                              "src": "12347:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 9055,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9016,
                              "src": "12358:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9053,
                            "name": "Sync",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7844,
                            "src": "12342:4:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 9056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12342:26:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9057,
                        "nodeType": "EmitStatement",
                        "src": "12337:31:40"
                      }
                    ]
                  },
                  "id": 9059,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_updateReserves",
                  "nameLocation": "12066:15:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9011,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12081:2:40"
                  },
                  "returnParameters": {
                    "id": 9012,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12093:0:40"
                  },
                  "scope": 9825,
                  "src": "12057:318:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9098,
                    "nodeType": "Block",
                    "src": "12460:187:40",
                    "statements": [
                      {
                        "expression": {
                          "id": 9080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9066,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9062,
                            "src": "12470:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9069,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7871,
                                "src": "12496:6:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 9072,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7871,
                                    "src": "12520:6:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 9075,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "12536:4:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_HybridPool_$9825",
                                          "typeString": "contract HybridPool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_HybridPool_$9825",
                                          "typeString": "contract HybridPool"
                                        }
                                      ],
                                      "id": 9074,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "12528:7:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 9073,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12528:7:40",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 9076,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12528:13:40",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 9070,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7864,
                                    "src": "12504:5:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 9071,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2151,
                                  "src": "12504:15:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address,address) view external returns (uint256)"
                                  }
                                },
                                "id": 9077,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12504:38:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "66616c7365",
                                "id": 9078,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12544:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "id": 9067,
                                "name": "bento",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7864,
                                "src": "12481:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                  "typeString": "contract IBentoBoxMinimal"
                                }
                              },
                              "id": 9068,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "toAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2175,
                              "src": "12481:14:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256,bool) view external returns (uint256)"
                              }
                            },
                            "id": 9079,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12481:69:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12470:80:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9081,
                        "nodeType": "ExpressionStatement",
                        "src": "12470:80:40"
                      },
                      {
                        "expression": {
                          "id": 9096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9082,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9064,
                            "src": "12560:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9085,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7873,
                                "src": "12586:6:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 9088,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7873,
                                    "src": "12610:6:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 9091,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "12626:4:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_HybridPool_$9825",
                                          "typeString": "contract HybridPool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_HybridPool_$9825",
                                          "typeString": "contract HybridPool"
                                        }
                                      ],
                                      "id": 9090,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "12618:7:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 9089,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12618:7:40",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 9092,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12618:13:40",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 9086,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7864,
                                    "src": "12594:5:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 9087,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2151,
                                  "src": "12594:15:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address,address) view external returns (uint256)"
                                  }
                                },
                                "id": 9093,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12594:38:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "66616c7365",
                                "id": 9094,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12634:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "id": 9083,
                                "name": "bento",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7864,
                                "src": "12571:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                  "typeString": "contract IBentoBoxMinimal"
                                }
                              },
                              "id": 9084,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "toAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2175,
                              "src": "12571:14:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256,bool) view external returns (uint256)"
                              }
                            },
                            "id": 9095,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12571:69:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12560:80:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9097,
                        "nodeType": "ExpressionStatement",
                        "src": "12560:80:40"
                      }
                    ]
                  },
                  "id": 9099,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_balance",
                  "nameLocation": "12390:8:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9060,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12398:2:40"
                  },
                  "returnParameters": {
                    "id": 9065,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9062,
                        "mutability": "mutable",
                        "name": "balance0",
                        "nameLocation": "12432:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9099,
                        "src": "12424:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9061,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12424:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9064,
                        "mutability": "mutable",
                        "name": "balance1",
                        "nameLocation": "12450:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9099,
                        "src": "12442:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9063,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12442:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12423:36:40"
                  },
                  "scope": 9825,
                  "src": "12381:266:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9203,
                    "nodeType": "Block",
                    "src": "12820:911:40",
                    "statements": [
                      {
                        "id": 9202,
                        "nodeType": "UncheckedBlock",
                        "src": "12830:895:40",
                        "statements": [
                          {
                            "assignments": [
                              9113
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 9113,
                                "mutability": "mutable",
                                "name": "adjustedReserve0",
                                "nameLocation": "12862:16:40",
                                "nodeType": "VariableDeclaration",
                                "scope": 9202,
                                "src": "12854:24:40",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 9112,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12854:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 9117,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9116,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9114,
                                "name": "_reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9103,
                                "src": "12881:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 9115,
                                "name": "token0PrecisionMultiplier",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7883,
                                "src": "12893:25:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12881:37:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "12854:64:40"
                          },
                          {
                            "assignments": [
                              9119
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 9119,
                                "mutability": "mutable",
                                "name": "adjustedReserve1",
                                "nameLocation": "12940:16:40",
                                "nodeType": "VariableDeclaration",
                                "scope": 9202,
                                "src": "12932:24:40",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 9118,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12932:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 9123,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9122,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9120,
                                "name": "_reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9105,
                                "src": "12959:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 9121,
                                "name": "token1PrecisionMultiplier",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7885,
                                "src": "12971:25:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12959:37:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "12932:64:40"
                          },
                          {
                            "assignments": [
                              9125
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 9125,
                                "mutability": "mutable",
                                "name": "feeDeductedAmountIn",
                                "nameLocation": "13018:19:40",
                                "nodeType": "VariableDeclaration",
                                "scope": 9202,
                                "src": "13010:27:40",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 9124,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13010:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 9134,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9133,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9126,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9101,
                                "src": "13040:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9132,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 9129,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 9127,
                                        "name": "amountIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9101,
                                        "src": "13052:8:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 9128,
                                        "name": "swapFee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7861,
                                        "src": "13063:7:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "13052:18:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 9130,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "13051:20:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 9131,
                                  "name": "MAX_FEE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7859,
                                  "src": "13074:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13051:30:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13040:41:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13010:71:40"
                          },
                          {
                            "assignments": [
                              9136
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 9136,
                                "mutability": "mutable",
                                "name": "d",
                                "nameLocation": "13103:1:40",
                                "nodeType": "VariableDeclaration",
                                "scope": 9202,
                                "src": "13095:9:40",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 9135,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13095:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 9141,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 9138,
                                  "name": "adjustedReserve0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9113,
                                  "src": "13145:16:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 9139,
                                  "name": "adjustedReserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9119,
                                  "src": "13163:16:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 9137,
                                "name": "_computeLiquidityFromAdjustedBalances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9388,
                                "src": "13107:37:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) view returns (uint256)"
                                }
                              },
                              "id": 9140,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13107:73:40",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13095:85:40"
                          },
                          {
                            "condition": {
                              "id": 9142,
                              "name": "token0In",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9107,
                              "src": "13199:8:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 9200,
                              "nodeType": "Block",
                              "src": "13465:250:40",
                              "statements": [
                                {
                                  "assignments": [
                                    9173
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 9173,
                                      "mutability": "mutable",
                                      "name": "x",
                                      "nameLocation": "13491:1:40",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 9200,
                                      "src": "13483:9:40",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 9172,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13483:7:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 9180,
                                  "initialValue": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 9179,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 9174,
                                      "name": "adjustedReserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9119,
                                      "src": "13495:16:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 9177,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 9175,
                                            "name": "feeDeductedAmountIn",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9125,
                                            "src": "13515:19:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "id": 9176,
                                            "name": "token1PrecisionMultiplier",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7885,
                                            "src": "13537:25:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "13515:47:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 9178,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "13514:49:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13495:68:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "13483:80:40"
                                },
                                {
                                  "assignments": [
                                    9182
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 9182,
                                      "mutability": "mutable",
                                      "name": "y",
                                      "nameLocation": "13589:1:40",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 9200,
                                      "src": "13581:9:40",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 9181,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13581:7:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 9187,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "id": 9184,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9173,
                                        "src": "13599:1:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 9185,
                                        "name": "d",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9136,
                                        "src": "13602:1:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 9183,
                                      "name": "_getY",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9486,
                                      "src": "13593:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) view returns (uint256)"
                                      }
                                    },
                                    "id": 9186,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13593:11:40",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "13581:23:40"
                                },
                                {
                                  "expression": {
                                    "id": 9194,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 9188,
                                      "name": "dy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9110,
                                      "src": "13622:2:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 9193,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 9191,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 9189,
                                          "name": "adjustedReserve0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9113,
                                          "src": "13627:16:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 9190,
                                          "name": "y",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9182,
                                          "src": "13646:1:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "13627:20:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 9192,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13650:1:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "13627:24:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13622:29:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 9195,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13622:29:40"
                                },
                                {
                                  "expression": {
                                    "id": 9198,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 9196,
                                      "name": "dy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9110,
                                      "src": "13669:2:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "/=",
                                    "rightHandSide": {
                                      "id": 9197,
                                      "name": "token0PrecisionMultiplier",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7883,
                                      "src": "13675:25:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13669:31:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 9199,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13669:31:40"
                                }
                              ]
                            },
                            "id": 9201,
                            "nodeType": "IfStatement",
                            "src": "13195:520:40",
                            "trueBody": {
                              "id": 9171,
                              "nodeType": "Block",
                              "src": "13209:250:40",
                              "statements": [
                                {
                                  "assignments": [
                                    9144
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 9144,
                                      "mutability": "mutable",
                                      "name": "x",
                                      "nameLocation": "13235:1:40",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 9171,
                                      "src": "13227:9:40",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 9143,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13227:7:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 9151,
                                  "initialValue": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 9150,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 9145,
                                      "name": "adjustedReserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9113,
                                      "src": "13239:16:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 9148,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 9146,
                                            "name": "feeDeductedAmountIn",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9125,
                                            "src": "13259:19:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "id": 9147,
                                            "name": "token0PrecisionMultiplier",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7883,
                                            "src": "13281:25:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "13259:47:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 9149,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "13258:49:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13239:68:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "13227:80:40"
                                },
                                {
                                  "assignments": [
                                    9153
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 9153,
                                      "mutability": "mutable",
                                      "name": "y",
                                      "nameLocation": "13333:1:40",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 9171,
                                      "src": "13325:9:40",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 9152,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13325:7:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 9158,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "id": 9155,
                                        "name": "x",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9144,
                                        "src": "13343:1:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 9156,
                                        "name": "d",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9136,
                                        "src": "13346:1:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 9154,
                                      "name": "_getY",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9486,
                                      "src": "13337:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) view returns (uint256)"
                                      }
                                    },
                                    "id": 9157,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13337:11:40",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "13325:23:40"
                                },
                                {
                                  "expression": {
                                    "id": 9165,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 9159,
                                      "name": "dy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9110,
                                      "src": "13366:2:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 9164,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 9162,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 9160,
                                          "name": "adjustedReserve1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9119,
                                          "src": "13371:16:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 9161,
                                          "name": "y",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9153,
                                          "src": "13390:1:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "13371:20:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 9163,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13394:1:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "13371:24:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13366:29:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 9166,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13366:29:40"
                                },
                                {
                                  "expression": {
                                    "id": 9169,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 9167,
                                      "name": "dy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9110,
                                      "src": "13413:2:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "/=",
                                    "rightHandSide": {
                                      "id": 9168,
                                      "name": "token1PrecisionMultiplier",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7885,
                                      "src": "13419:25:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13413:31:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 9170,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13413:31:40"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  },
                  "id": 9204,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getAmountOut",
                  "nameLocation": "12662:13:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9108,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9101,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nameLocation": "12693:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9204,
                        "src": "12685:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9100,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12685:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9103,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "12719:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9204,
                        "src": "12711:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9102,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12711:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9105,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "12746:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9204,
                        "src": "12738:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9104,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12738:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9107,
                        "mutability": "mutable",
                        "name": "token0In",
                        "nameLocation": "12770:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9204,
                        "src": "12765:13:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9106,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12765:4:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12675:109:40"
                  },
                  "returnParameters": {
                    "id": 9111,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9110,
                        "mutability": "mutable",
                        "name": "dy",
                        "nameLocation": "12816:2:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9204,
                        "src": "12808:10:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9109,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12808:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12807:12:40"
                  },
                  "scope": 9825,
                  "src": "12653:1078:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9249,
                    "nodeType": "Block",
                    "src": "13864:217:40",
                    "statements": [
                      {
                        "condition": {
                          "id": 9215,
                          "name": "unwrapBento",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9212,
                          "src": "13878:11:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 9247,
                          "nodeType": "Block",
                          "src": "13973:102:40",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 9233,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9206,
                                    "src": "14002:5:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 9236,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "14017:4:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_HybridPool_$9825",
                                          "typeString": "contract HybridPool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_HybridPool_$9825",
                                          "typeString": "contract HybridPool"
                                        }
                                      ],
                                      "id": 9235,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "14009:7:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 9234,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "14009:7:40",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 9237,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14009:13:40",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 9238,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9210,
                                    "src": "14024:2:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 9241,
                                        "name": "token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9206,
                                        "src": "14042:5:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 9242,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9208,
                                        "src": "14049:6:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "hexValue": "66616c7365",
                                        "id": 9243,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "14057:5:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "expression": {
                                        "id": 9239,
                                        "name": "bento",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7864,
                                        "src": "14028:5:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                          "typeString": "contract IBentoBoxMinimal"
                                        }
                                      },
                                      "id": 9240,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "toShare",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2163,
                                      "src": "14028:13:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                        "typeString": "function (address,uint256,bool) view external returns (uint256)"
                                      }
                                    },
                                    "id": 9244,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14028:35:40",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 9230,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7864,
                                    "src": "13987:5:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 9232,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2227,
                                  "src": "13987:14:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,uint256) external"
                                  }
                                },
                                "id": 9245,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13987:77:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9246,
                              "nodeType": "ExpressionStatement",
                              "src": "13987:77:40"
                            }
                          ]
                        },
                        "id": 9248,
                        "nodeType": "IfStatement",
                        "src": "13874:201:40",
                        "trueBody": {
                          "id": 9229,
                          "nodeType": "Block",
                          "src": "13891:76:40",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 9219,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9206,
                                    "src": "13920:5:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 9222,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "13935:4:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_HybridPool_$9825",
                                          "typeString": "contract HybridPool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_HybridPool_$9825",
                                          "typeString": "contract HybridPool"
                                        }
                                      ],
                                      "id": 9221,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "13927:7:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 9220,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13927:7:40",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 9223,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13927:13:40",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 9224,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9210,
                                    "src": "13942:2:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 9225,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9208,
                                    "src": "13946:6:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 9226,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13954:1:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "expression": {
                                    "id": 9216,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7864,
                                    "src": "13905:5:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 9218,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "withdraw",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2215,
                                  "src": "13905:14:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (address,address,address,uint256,uint256) external returns (uint256,uint256)"
                                  }
                                },
                                "id": 9227,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13905:51:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "id": 9228,
                              "nodeType": "ExpressionStatement",
                              "src": "13905:51:40"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 9250,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nameLocation": "13746:9:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9213,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9206,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "13773:5:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9250,
                        "src": "13765:13:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9205,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13765:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9208,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "13796:6:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9250,
                        "src": "13788:14:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9207,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13788:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9210,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "13820:2:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9250,
                        "src": "13812:10:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9209,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13812:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9212,
                        "mutability": "mutable",
                        "name": "unwrapBento",
                        "nameLocation": "13837:11:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9250,
                        "src": "13832:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 9211,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13832:4:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13755:99:40"
                  },
                  "returnParameters": {
                    "id": 9214,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13864:0:40"
                  },
                  "scope": 9825,
                  "src": "13737:344:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9280,
                    "nodeType": "Block",
                    "src": "14557:292:40",
                    "statements": [
                      {
                        "id": 9279,
                        "nodeType": "UncheckedBlock",
                        "src": "14567:276:40",
                        "statements": [
                          {
                            "assignments": [
                              9261
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 9261,
                                "mutability": "mutable",
                                "name": "adjustedReserve0",
                                "nameLocation": "14599:16:40",
                                "nodeType": "VariableDeclaration",
                                "scope": 9279,
                                "src": "14591:24:40",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 9260,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14591:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 9265,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9262,
                                "name": "_reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9253,
                                "src": "14618:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 9263,
                                "name": "token0PrecisionMultiplier",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7883,
                                "src": "14630:25:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14618:37:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "14591:64:40"
                          },
                          {
                            "assignments": [
                              9267
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 9267,
                                "mutability": "mutable",
                                "name": "adjustedReserve1",
                                "nameLocation": "14677:16:40",
                                "nodeType": "VariableDeclaration",
                                "scope": 9279,
                                "src": "14669:24:40",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 9266,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14669:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 9271,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 9270,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 9268,
                                "name": "_reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9255,
                                "src": "14696:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 9269,
                                "name": "token1PrecisionMultiplier",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7885,
                                "src": "14708:25:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14696:37:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "14669:64:40"
                          },
                          {
                            "expression": {
                              "id": 9277,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 9272,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9258,
                                "src": "14747:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 9274,
                                    "name": "adjustedReserve0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9261,
                                    "src": "14797:16:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 9275,
                                    "name": "adjustedReserve1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9267,
                                    "src": "14815:16:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 9273,
                                  "name": "_computeLiquidityFromAdjustedBalances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9388,
                                  "src": "14759:37:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) view returns (uint256)"
                                  }
                                },
                                "id": 9276,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14759:73:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14747:85:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9278,
                            "nodeType": "ExpressionStatement",
                            "src": "14747:85:40"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9251,
                    "nodeType": "StructuredDocumentation",
                    "src": "14087:358:40",
                    "text": "@notice Get D, the StableSwap invariant, based on a set of balances and a particular A.\n See the StableSwap paper for details.\n @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L319.\n @return liquidity The invariant, at the precision of the pool."
                  },
                  "id": 9281,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_computeLiquidity",
                  "nameLocation": "14459:17:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9256,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9253,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "14485:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9281,
                        "src": "14477:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9252,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14477:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9255,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "14504:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9281,
                        "src": "14496:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9254,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14496:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14476:38:40"
                  },
                  "returnParameters": {
                    "id": 9259,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9258,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "14546:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9281,
                        "src": "14538:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9257,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14538:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14537:19:40"
                  },
                  "scope": 9825,
                  "src": "14450:399:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9387,
                    "nodeType": "Block",
                    "src": "14969:483:40",
                    "statements": [
                      {
                        "assignments": [
                          9291
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9291,
                            "mutability": "mutable",
                            "name": "s",
                            "nameLocation": "14987:1:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9387,
                            "src": "14979:9:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9290,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14979:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9295,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9292,
                            "name": "xp0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9283,
                            "src": "14991:3:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 9293,
                            "name": "xp1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9285,
                            "src": "14997:3:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14991:9:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14979:21:40"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9296,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9291,
                            "src": "15015:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 9297,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15020:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "15015:6:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9304,
                        "nodeType": "IfStatement",
                        "src": "15011:49:40",
                        "trueBody": {
                          "id": 9303,
                          "nodeType": "Block",
                          "src": "15023:37:40",
                          "statements": [
                            {
                              "expression": {
                                "id": 9301,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 9299,
                                  "name": "computed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9288,
                                  "src": "15037:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "30",
                                  "id": 9300,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15048:1:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "15037:12:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9302,
                              "nodeType": "ExpressionStatement",
                              "src": "15037:12:40"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          9306
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9306,
                            "mutability": "mutable",
                            "name": "prevD",
                            "nameLocation": "15077:5:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9387,
                            "src": "15069:13:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9305,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15069:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9307,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15069:13:40"
                      },
                      {
                        "assignments": [
                          9309
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9309,
                            "mutability": "mutable",
                            "name": "D",
                            "nameLocation": "15100:1:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9387,
                            "src": "15092:9:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9308,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15092:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9311,
                        "initialValue": {
                          "id": 9310,
                          "name": "s",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9291,
                          "src": "15104:1:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15092:13:40"
                      },
                      {
                        "body": {
                          "id": 9381,
                          "nodeType": "Block",
                          "src": "15160:264:40",
                          "statements": [
                            {
                              "assignments": [
                                9323
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9323,
                                  "mutability": "mutable",
                                  "name": "dP",
                                  "nameLocation": "15182:2:40",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9381,
                                  "src": "15174:10:40",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9322,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15174:7:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9338,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9337,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 9335,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 9332,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 9329,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "components": [
                                                  {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 9326,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "id": 9324,
                                                      "name": "D",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 9309,
                                                      "src": "15190:1:40",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "*",
                                                    "rightExpression": {
                                                      "id": 9325,
                                                      "name": "D",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 9309,
                                                      "src": "15194:1:40",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "15190:5:40",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "id": 9327,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "15189:7:40",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "/",
                                              "rightExpression": {
                                                "id": 9328,
                                                "name": "xp0",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9283,
                                                "src": "15199:3:40",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "15189:13:40",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 9330,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "15188:15:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 9331,
                                          "name": "D",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9309,
                                          "src": "15206:1:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "15188:19:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 9333,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "15187:21:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 9334,
                                    "name": "xp1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9285,
                                    "src": "15211:3:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "15187:27:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "hexValue": "34",
                                  "id": 9336,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15217:1:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "src": "15187:31:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15174:44:40"
                            },
                            {
                              "expression": {
                                "id": 9341,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 9339,
                                  "name": "prevD",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9306,
                                  "src": "15232:5:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 9340,
                                  "name": "D",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9309,
                                  "src": "15240:1:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15232:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9342,
                              "nodeType": "ExpressionStatement",
                              "src": "15232:9:40"
                            },
                            {
                              "expression": {
                                "id": 9372,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 9343,
                                  "name": "D",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9309,
                                  "src": "15255:1:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 9371,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 9356,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 9353,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 9349,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "components": [
                                                    {
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 9346,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "id": 9344,
                                                        "name": "N_A",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7877,
                                                        "src": "15262:3:40",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "*",
                                                      "rightExpression": {
                                                        "id": 9345,
                                                        "name": "s",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 9291,
                                                        "src": "15268:1:40",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "src": "15262:7:40",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "id": 9347,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "TupleExpression",
                                                  "src": "15261:9:40",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "/",
                                                "rightExpression": {
                                                  "id": 9348,
                                                  "name": "A_PRECISION",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 7880,
                                                  "src": "15273:11:40",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "15261:23:40",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "+",
                                              "rightExpression": {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 9352,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "hexValue": "32",
                                                  "id": 9350,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "15287:1:40",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_2_by_1",
                                                    "typeString": "int_const 2"
                                                  },
                                                  "value": "2"
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "*",
                                                "rightExpression": {
                                                  "id": 9351,
                                                  "name": "dP",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 9323,
                                                  "src": "15291:2:40",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "15287:6:40",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "15261:32:40",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 9354,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "15260:34:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 9355,
                                          "name": "D",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9309,
                                          "src": "15297:1:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "15260:38:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 9357,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "15259:40:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 9369,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 9365,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 9362,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 9360,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "id": 9358,
                                                    "name": "N_A",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7877,
                                                    "src": "15304:3:40",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "/",
                                                  "rightExpression": {
                                                    "id": 9359,
                                                    "name": "A_PRECISION",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7880,
                                                    "src": "15310:11:40",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "15304:17:40",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "-",
                                                "rightExpression": {
                                                  "hexValue": "31",
                                                  "id": 9361,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "15324:1:40",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                  },
                                                  "value": "1"
                                                },
                                                "src": "15304:21:40",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 9363,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "15303:23:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "id": 9364,
                                            "name": "D",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9309,
                                            "src": "15329:1:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "15303:27:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 9368,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "33",
                                            "id": 9366,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "15333:1:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_3_by_1",
                                              "typeString": "int_const 3"
                                            },
                                            "value": "3"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "id": 9367,
                                            "name": "dP",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9323,
                                            "src": "15337:2:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "15333:6:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "15303:36:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 9370,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "15302:38:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "15259:81:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "15255:85:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9373,
                              "nodeType": "ExpressionStatement",
                              "src": "15255:85:40"
                            },
                            {
                              "condition": {
                                "arguments": [
                                  {
                                    "id": 9376,
                                    "name": "prevD",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9306,
                                    "src": "15368:5:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 9374,
                                    "name": "D",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9309,
                                    "src": "15358:1:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 9375,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "within1",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2851,
                                  "src": "15358:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (bool)"
                                  }
                                },
                                "id": 9377,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15358:16:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 9380,
                              "nodeType": "IfStatement",
                              "src": "15354:60:40",
                              "trueBody": {
                                "id": 9379,
                                "nodeType": "Block",
                                "src": "15376:38:40",
                                "statements": [
                                  {
                                    "id": 9378,
                                    "nodeType": "Break",
                                    "src": "15394:5:40"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9316,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9313,
                            "src": "15135:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 9317,
                            "name": "MAX_LOOP_LIMIT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7856,
                            "src": "15139:14:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15135:18:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9382,
                        "initializationExpression": {
                          "assignments": [
                            9313
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 9313,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "15128:1:40",
                              "nodeType": "VariableDeclaration",
                              "scope": 9382,
                              "src": "15120:9:40",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 9312,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "15120:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 9315,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 9314,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15132:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "15120:13:40"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 9320,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "15155:3:40",
                            "subExpression": {
                              "id": 9319,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9313,
                              "src": "15155:1:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9321,
                          "nodeType": "ExpressionStatement",
                          "src": "15155:3:40"
                        },
                        "nodeType": "ForStatement",
                        "src": "15115:309:40"
                      },
                      {
                        "expression": {
                          "id": 9385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9383,
                            "name": "computed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9288,
                            "src": "15433:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9384,
                            "name": "D",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9309,
                            "src": "15444:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15433:12:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9386,
                        "nodeType": "ExpressionStatement",
                        "src": "15433:12:40"
                      }
                    ]
                  },
                  "id": 9388,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_computeLiquidityFromAdjustedBalances",
                  "nameLocation": "14864:37:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9286,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9283,
                        "mutability": "mutable",
                        "name": "xp0",
                        "nameLocation": "14910:3:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9388,
                        "src": "14902:11:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9282,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14902:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9285,
                        "mutability": "mutable",
                        "name": "xp1",
                        "nameLocation": "14923:3:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9388,
                        "src": "14915:11:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9284,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14915:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14901:26:40"
                  },
                  "returnParameters": {
                    "id": 9289,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9288,
                        "mutability": "mutable",
                        "name": "computed",
                        "nameLocation": "14959:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9388,
                        "src": "14951:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9287,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14951:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14950:18:40"
                  },
                  "scope": 9825,
                  "src": "14855:597:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9485,
                    "nodeType": "Block",
                    "src": "16091:433:40",
                    "statements": [
                      {
                        "assignments": [
                          9399
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9399,
                            "mutability": "mutable",
                            "name": "c",
                            "nameLocation": "16109:1:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9485,
                            "src": "16101:9:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9398,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16101:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9409,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9402,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9400,
                                  "name": "D",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9393,
                                  "src": "16114:1:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 9401,
                                  "name": "D",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9393,
                                  "src": "16118:1:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16114:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 9403,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "16113:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9406,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9404,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9391,
                                  "src": "16124:1:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "hexValue": "32",
                                  "id": 9405,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16128:1:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "16124:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 9407,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "16123:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16113:17:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16101:29:40"
                      },
                      {
                        "expression": {
                          "id": 9423,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9410,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9399,
                            "src": "16140:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9422,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 9413,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 9411,
                                    "name": "c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9399,
                                    "src": "16145:1:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 9412,
                                    "name": "D",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9393,
                                    "src": "16149:1:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "16145:5:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 9414,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "16144:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 9420,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 9417,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 9415,
                                          "name": "N_A",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7877,
                                          "src": "16156:3:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "32",
                                          "id": 9416,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "16162:1:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "src": "16156:7:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 9418,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "16155:9:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 9419,
                                    "name": "A_PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7880,
                                    "src": "16167:11:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "16155:23:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 9421,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "16154:25:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "16144:35:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16140:39:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9424,
                        "nodeType": "ExpressionStatement",
                        "src": "16140:39:40"
                      },
                      {
                        "assignments": [
                          9426
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9426,
                            "mutability": "mutable",
                            "name": "b",
                            "nameLocation": "16197:1:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9485,
                            "src": "16189:9:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9425,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16189:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9436,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9427,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9391,
                            "src": "16201:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9433,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 9430,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 9428,
                                        "name": "D",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9393,
                                        "src": "16207:1:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 9429,
                                        "name": "A_PRECISION",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7880,
                                        "src": "16211:11:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "16207:15:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 9431,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "16206:17:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 9432,
                                  "name": "N_A",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7877,
                                  "src": "16226:3:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16206:23:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 9434,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "16205:25:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16201:29:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16189:41:40"
                      },
                      {
                        "assignments": [
                          9438
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9438,
                            "mutability": "mutable",
                            "name": "yPrev",
                            "nameLocation": "16248:5:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9485,
                            "src": "16240:13:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9437,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16240:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9439,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16240:13:40"
                      },
                      {
                        "expression": {
                          "id": 9442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9440,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9396,
                            "src": "16263:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9441,
                            "name": "D",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9393,
                            "src": "16267:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16263:5:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9443,
                        "nodeType": "ExpressionStatement",
                        "src": "16263:5:40"
                      },
                      {
                        "body": {
                          "id": 9483,
                          "nodeType": "Block",
                          "src": "16364:154:40",
                          "statements": [
                            {
                              "expression": {
                                "id": 9456,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 9454,
                                  "name": "yPrev",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9438,
                                  "src": "16378:5:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 9455,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9396,
                                  "src": "16386:1:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16378:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9457,
                              "nodeType": "ExpressionStatement",
                              "src": "16378:9:40"
                            },
                            {
                              "expression": {
                                "id": 9474,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 9458,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9396,
                                  "src": "16401:1:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 9473,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 9463,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 9461,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 9459,
                                            "name": "y",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9396,
                                            "src": "16406:1:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "id": 9460,
                                            "name": "y",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9396,
                                            "src": "16410:1:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "16406:5:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "id": 9462,
                                          "name": "c",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9399,
                                          "src": "16414:1:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "16406:9:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 9464,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "16405:11:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 9471,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 9469,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 9467,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 9465,
                                              "name": "y",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9396,
                                              "src": "16420:1:40",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "hexValue": "32",
                                              "id": 9466,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "16424:1:40",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_2_by_1",
                                                "typeString": "int_const 2"
                                              },
                                              "value": "2"
                                            },
                                            "src": "16420:5:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "id": 9468,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 9426,
                                            "src": "16428:1:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "16420:9:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 9470,
                                          "name": "D",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9393,
                                          "src": "16432:1:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "16420:13:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 9472,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "16419:15:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "16405:29:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16401:33:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9475,
                              "nodeType": "ExpressionStatement",
                              "src": "16401:33:40"
                            },
                            {
                              "condition": {
                                "arguments": [
                                  {
                                    "id": 9478,
                                    "name": "yPrev",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9438,
                                    "src": "16462:5:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 9476,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9396,
                                    "src": "16452:1:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 9477,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "within1",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2851,
                                  "src": "16452:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (bool)"
                                  }
                                },
                                "id": 9479,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16452:16:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 9482,
                              "nodeType": "IfStatement",
                              "src": "16448:60:40",
                              "trueBody": {
                                "id": 9481,
                                "nodeType": "Block",
                                "src": "16470:38:40",
                                "statements": [
                                  {
                                    "id": 9480,
                                    "nodeType": "Break",
                                    "src": "16488:5:40"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9448,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9445,
                            "src": "16339:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 9449,
                            "name": "MAX_LOOP_LIMIT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7856,
                            "src": "16343:14:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16339:18:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9484,
                        "initializationExpression": {
                          "assignments": [
                            9445
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 9445,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "16332:1:40",
                              "nodeType": "VariableDeclaration",
                              "scope": 9484,
                              "src": "16324:9:40",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 9444,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "16324:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 9447,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 9446,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16336:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "16324:13:40"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 9452,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "16359:3:40",
                            "subExpression": {
                              "id": 9451,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9445,
                              "src": "16359:1:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 9453,
                          "nodeType": "ExpressionStatement",
                          "src": "16359:3:40"
                        },
                        "nodeType": "ForStatement",
                        "src": "16319:199:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9389,
                    "nodeType": "StructuredDocumentation",
                    "src": "15458:557:40",
                    "text": "@notice Calculate the new balances of the tokens given the indexes of the token\n that is swapped from (FROM) and the token that is swapped to (TO).\n This function is used as a helper function to calculate how much TO token\n the user should receive on swap.\n @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L432.\n @param x The new total amount of FROM token.\n @return y The amount of TO token that should remain in the pool."
                  },
                  "id": 9486,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getY",
                  "nameLocation": "16029:5:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9394,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9391,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "16043:1:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9486,
                        "src": "16035:9:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9390,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16035:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9393,
                        "mutability": "mutable",
                        "name": "D",
                        "nameLocation": "16054:1:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9486,
                        "src": "16046:9:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9392,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16046:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16034:22:40"
                  },
                  "returnParameters": {
                    "id": 9397,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9396,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "16088:1:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9486,
                        "src": "16080:9:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9395,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16080:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16079:11:40"
                  },
                  "scope": 9825,
                  "src": "16020:504:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9570,
                    "nodeType": "Block",
                    "src": "16637:686:40",
                    "statements": [
                      {
                        "expression": {
                          "id": 9499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9497,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9493,
                            "src": "16647:12:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9498,
                            "name": "totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11917,
                            "src": "16662:11:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16647:26:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9500,
                        "nodeType": "ExpressionStatement",
                        "src": "16647:26:40"
                      },
                      {
                        "assignments": [
                          9502
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9502,
                            "mutability": "mutable",
                            "name": "_dLast",
                            "nameLocation": "16691:6:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9570,
                            "src": "16683:14:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9501,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16683:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9504,
                        "initialValue": {
                          "id": 9503,
                          "name": "dLast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7893,
                          "src": "16700:5:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16683:22:40"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9507,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9505,
                            "name": "_dLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9502,
                            "src": "16719:6:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 9506,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16729:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "16719:11:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9569,
                        "nodeType": "IfStatement",
                        "src": "16715:602:40",
                        "trueBody": {
                          "id": 9568,
                          "nodeType": "Block",
                          "src": "16732:585:40",
                          "statements": [
                            {
                              "expression": {
                                "id": 9513,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 9508,
                                  "name": "d",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9495,
                                  "src": "16746:1:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 9510,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9488,
                                      "src": "16768:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 9511,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9490,
                                      "src": "16779:9:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 9509,
                                    "name": "_computeLiquidity",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9281,
                                    "src": "16750:17:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 9512,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "16750:39:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16746:43:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9514,
                              "nodeType": "ExpressionStatement",
                              "src": "16746:43:40"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9517,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9515,
                                  "name": "d",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9495,
                                  "src": "16807:1:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "id": 9516,
                                  "name": "_dLast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9502,
                                  "src": "16811:6:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16807:10:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 9567,
                              "nodeType": "IfStatement",
                              "src": "16803:504:40",
                              "trueBody": {
                                "id": 9566,
                                "nodeType": "Block",
                                "src": "16819:488:40",
                                "statements": [
                                  {
                                    "assignments": [
                                      9519
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 9519,
                                        "mutability": "mutable",
                                        "name": "_barFee",
                                        "nameLocation": "16906:7:40",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 9566,
                                        "src": "16898:15:40",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 9518,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "16898:7:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 9521,
                                    "initialValue": {
                                      "id": 9520,
                                      "name": "barFee",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7887,
                                      "src": "16916:6:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "16898:24:40"
                                  },
                                  {
                                    "assignments": [
                                      9523
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 9523,
                                        "mutability": "mutable",
                                        "name": "numerator",
                                        "nameLocation": "16948:9:40",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 9566,
                                        "src": "16940:17:40",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 9522,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "16940:7:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 9532,
                                    "initialValue": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 9531,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 9529,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 9524,
                                          "name": "_totalSupply",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9493,
                                          "src": "16960:12:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 9527,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 9525,
                                                "name": "d",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9495,
                                                "src": "16976:1:40",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "id": 9526,
                                                "name": "_dLast",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9502,
                                                "src": "16980:6:40",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "16976:10:40",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 9528,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "16975:12:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "16960:27:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 9530,
                                        "name": "_barFee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9519,
                                        "src": "16990:7:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "16960:37:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "16940:57:40"
                                  },
                                  {
                                    "assignments": [
                                      9534
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 9534,
                                        "mutability": "mutable",
                                        "name": "denominator",
                                        "nameLocation": "17023:11:40",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 9566,
                                        "src": "17015:19:40",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 9533,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "17015:7:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 9545,
                                    "initialValue": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 9544,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 9540,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 9537,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 9535,
                                                "name": "MAX_FEE",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7859,
                                                "src": "17038:7:40",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "id": 9536,
                                                "name": "_barFee",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9519,
                                                "src": "17048:7:40",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "17038:17:40",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 9538,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "17037:19:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 9539,
                                          "name": "d",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9495,
                                          "src": "17059:1:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "17037:23:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 9543,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 9541,
                                          "name": "_barFee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9519,
                                          "src": "17063:7:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 9542,
                                          "name": "_dLast",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9502,
                                          "src": "17073:6:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "17063:16:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "17037:42:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "17015:64:40"
                                  },
                                  {
                                    "assignments": [
                                      9547
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 9547,
                                        "mutability": "mutable",
                                        "name": "liquidity",
                                        "nameLocation": "17105:9:40",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 9566,
                                        "src": "17097:17:40",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 9546,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "17097:7:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 9551,
                                    "initialValue": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 9550,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 9548,
                                        "name": "numerator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9523,
                                        "src": "17117:9:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "id": 9549,
                                        "name": "denominator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9534,
                                        "src": "17129:11:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "17117:23:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "17097:43:40"
                                  },
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 9554,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 9552,
                                        "name": "liquidity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9547,
                                        "src": "17163:9:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "hexValue": "30",
                                        "id": 9553,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17176:1:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "17163:14:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 9565,
                                    "nodeType": "IfStatement",
                                    "src": "17159:134:40",
                                    "trueBody": {
                                      "id": 9564,
                                      "nodeType": "Block",
                                      "src": "17179:114:40",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "id": 9556,
                                                "name": "barFeeTo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7869,
                                                "src": "17207:8:40",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "id": 9557,
                                                "name": "liquidity",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9547,
                                                "src": "17217:9:40",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 9555,
                                              "name": "_mint",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 12250,
                                              "src": "17201:5:40",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                              }
                                            },
                                            "id": 9558,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "17201:26:40",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 9559,
                                          "nodeType": "ExpressionStatement",
                                          "src": "17201:26:40"
                                        },
                                        {
                                          "expression": {
                                            "id": 9562,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 9560,
                                              "name": "_totalSupply",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9493,
                                              "src": "17249:12:40",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "+=",
                                            "rightHandSide": {
                                              "id": 9561,
                                              "name": "liquidity",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 9547,
                                              "src": "17265:9:40",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "17249:25:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 9563,
                                          "nodeType": "ExpressionStatement",
                                          "src": "17249:25:40"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 9571,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mintFee",
                  "nameLocation": "16539:8:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9491,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9488,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "16556:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9571,
                        "src": "16548:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9487,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16548:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9490,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "16575:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9571,
                        "src": "16567:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9489,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16567:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16547:38:40"
                  },
                  "returnParameters": {
                    "id": 9496,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9493,
                        "mutability": "mutable",
                        "name": "_totalSupply",
                        "nameLocation": "16612:12:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9571,
                        "src": "16604:20:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9492,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16604:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9495,
                        "mutability": "mutable",
                        "name": "d",
                        "nameLocation": "16634:1:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9571,
                        "src": "16626:9:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9494,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16626:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16603:33:40"
                  },
                  "scope": 9825,
                  "src": "16530:793:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 9653,
                    "nodeType": "Block",
                    "src": "17623:442:40",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 9593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9589,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 9587,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9578,
                              "src": "17637:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 9588,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17650:1:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "17637:14:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9592,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 9590,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9580,
                              "src": "17655:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 9591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17668:1:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "17655:14:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "17637:32:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9598,
                        "nodeType": "IfStatement",
                        "src": "17633:51:40",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "hexValue": "30",
                                "id": 9594,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17679:1:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "hexValue": "30",
                                "id": 9595,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17682:1:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "id": 9596,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "17678:6:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$",
                              "typeString": "tuple(int_const 0,int_const 0)"
                            }
                          },
                          "functionReturnParameters": 9586,
                          "id": 9597,
                          "nodeType": "Return",
                          "src": "17671:13:40"
                        }
                      },
                      {
                        "assignments": [
                          9600
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9600,
                            "mutability": "mutable",
                            "name": "amount1Optimal",
                            "nameLocation": "17702:14:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9653,
                            "src": "17694:22:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9599,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17694:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9607,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9606,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9603,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 9601,
                                  "name": "_amount0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9574,
                                  "src": "17720:8:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 9602,
                                  "name": "_reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9580,
                                  "src": "17731:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17720:20:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 9604,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "17719:22:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 9605,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9578,
                            "src": "17744:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17719:34:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17694:59:40"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9608,
                            "name": "amount1Optimal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9600,
                            "src": "17768:14:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "id": 9609,
                            "name": "_amount1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9576,
                            "src": "17786:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17768:26:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 9651,
                          "nodeType": "Block",
                          "src": "17894:165:40",
                          "statements": [
                            {
                              "assignments": [
                                9628
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 9628,
                                  "mutability": "mutable",
                                  "name": "amount0Optimal",
                                  "nameLocation": "17916:14:40",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 9651,
                                  "src": "17908:22:40",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 9627,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17908:7:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 9635,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 9634,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 9631,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 9629,
                                        "name": "_amount1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9576,
                                        "src": "17934:8:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 9630,
                                        "name": "_reserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9578,
                                        "src": "17945:9:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "17934:20:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 9632,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "17933:22:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 9633,
                                  "name": "_reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9580,
                                  "src": "17958:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17933:34:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "17908:59:40"
                            },
                            {
                              "expression": {
                                "id": 9649,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 9636,
                                  "name": "token0Fee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9583,
                                  "src": "17981:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 9648,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 9642,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 9637,
                                          "name": "swapFee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7861,
                                          "src": "17994:7:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 9640,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 9638,
                                                "name": "_amount0",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9574,
                                                "src": "18005:8:40",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "id": 9639,
                                                "name": "amount0Optimal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9628,
                                                "src": "18016:14:40",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "18005:25:40",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 9641,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "18004:27:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "17994:37:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 9643,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "17993:39:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 9646,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "32",
                                          "id": 9644,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "18036:1:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 9645,
                                          "name": "MAX_FEE",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7859,
                                          "src": "18040:7:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "18036:11:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 9647,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "18035:13:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "17993:55:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17981:67:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9650,
                              "nodeType": "ExpressionStatement",
                              "src": "17981:67:40"
                            }
                          ]
                        },
                        "id": 9652,
                        "nodeType": "IfStatement",
                        "src": "17764:295:40",
                        "trueBody": {
                          "id": 9626,
                          "nodeType": "Block",
                          "src": "17796:92:40",
                          "statements": [
                            {
                              "expression": {
                                "id": 9624,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 9611,
                                  "name": "token1Fee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9585,
                                  "src": "17810:9:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 9623,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 9617,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 9612,
                                          "name": "swapFee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7861,
                                          "src": "17823:7:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 9615,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 9613,
                                                "name": "_amount1",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9576,
                                                "src": "17834:8:40",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "id": 9614,
                                                "name": "amount1Optimal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 9600,
                                                "src": "17845:14:40",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "17834:25:40",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 9616,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "17833:27:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "17823:37:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 9618,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "17822:39:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 9621,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "32",
                                          "id": 9619,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17865:1:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 9620,
                                          "name": "MAX_FEE",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7859,
                                          "src": "17869:7:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "17865:11:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 9622,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "17864:13:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "17822:55:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17810:67:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9625,
                              "nodeType": "ExpressionStatement",
                              "src": "17810:67:40"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 9572,
                    "nodeType": "StructuredDocumentation",
                    "src": "17329:88:40",
                    "text": "@dev This fee is charged to cover for `swapFee` when users add unbalanced liquidity."
                  },
                  "id": 9654,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_nonOptimalMintFee",
                  "nameLocation": "17431:18:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9581,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9574,
                        "mutability": "mutable",
                        "name": "_amount0",
                        "nameLocation": "17467:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9654,
                        "src": "17459:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9573,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17459:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9576,
                        "mutability": "mutable",
                        "name": "_amount1",
                        "nameLocation": "17493:8:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9654,
                        "src": "17485:16:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9575,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17485:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9578,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "17519:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9654,
                        "src": "17511:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9577,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17511:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9580,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "17546:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9654,
                        "src": "17538:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9579,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17538:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17449:112:40"
                  },
                  "returnParameters": {
                    "id": 9586,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9583,
                        "mutability": "mutable",
                        "name": "token0Fee",
                        "nameLocation": "17593:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9654,
                        "src": "17585:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9582,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17585:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9585,
                        "mutability": "mutable",
                        "name": "token1Fee",
                        "nameLocation": "17612:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9654,
                        "src": "17604:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9584,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17604:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17584:38:40"
                  },
                  "scope": 9825,
                  "src": "17422:643:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2415
                  ],
                  "body": {
                    "id": 9681,
                    "nodeType": "Block",
                    "src": "18147:98:40",
                    "statements": [
                      {
                        "expression": {
                          "id": 9667,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9661,
                            "name": "assets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9659,
                            "src": "18157:6:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "32",
                                "id": 9665,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18180:1:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                }
                              ],
                              "id": 9664,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "18166:13:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (address[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 9662,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "18170:7:40",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 9663,
                                "nodeType": "ArrayTypeName",
                                "src": "18170:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                  "typeString": "address[]"
                                }
                              }
                            },
                            "id": 9666,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18166:16:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "18157:25:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 9668,
                        "nodeType": "ExpressionStatement",
                        "src": "18157:25:40"
                      },
                      {
                        "expression": {
                          "id": 9673,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 9669,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9659,
                              "src": "18192:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 9671,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 9670,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18199:1:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "18192:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9672,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7871,
                            "src": "18204:6:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "18192:18:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9674,
                        "nodeType": "ExpressionStatement",
                        "src": "18192:18:40"
                      },
                      {
                        "expression": {
                          "id": 9679,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 9675,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9659,
                              "src": "18220:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 9677,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 9676,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18227:1:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "18220:9:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9678,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7873,
                            "src": "18232:6:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "18220:18:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9680,
                        "nodeType": "ExpressionStatement",
                        "src": "18220:18:40"
                      }
                    ]
                  },
                  "functionSelector": "67e4ac2c",
                  "id": 9682,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAssets",
                  "nameLocation": "18080:9:40",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9656,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "18104:8:40"
                  },
                  "parameters": {
                    "id": 9655,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18089:2:40"
                  },
                  "returnParameters": {
                    "id": 9660,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9659,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "18139:6:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9682,
                        "src": "18122:23:40",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 9657,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "18122:7:40",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9658,
                          "nodeType": "ArrayTypeName",
                          "src": "18122:9:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18121:25:40"
                  },
                  "scope": 9825,
                  "src": "18071:174:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2423
                  ],
                  "body": {
                    "id": 9761,
                    "nodeType": "Block",
                    "src": "18348:566:40",
                    "statements": [
                      {
                        "assignments": [
                          9691,
                          9693
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9691,
                            "mutability": "mutable",
                            "name": "tokenIn",
                            "nameLocation": "18367:7:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9761,
                            "src": "18359:15:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 9690,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "18359:7:40",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 9693,
                            "mutability": "mutable",
                            "name": "amountIn",
                            "nameLocation": "18384:8:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9761,
                            "src": "18376:16:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9692,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18376:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9703,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 9696,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9684,
                              "src": "18407:4:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 9698,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "18414:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 9697,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "18414:7:40",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 9700,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "18423:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 9699,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "18423:7:40",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 9701,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "18413:18:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 9694,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "18396:3:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 9695,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "18396:10:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 9702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18396:36:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$",
                            "typeString": "tuple(address payable,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18358:74:40"
                      },
                      {
                        "assignments": [
                          9705,
                          9707
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9705,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "18451:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9761,
                            "src": "18443:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9704,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18443:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 9707,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "18470:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9761,
                            "src": "18462:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9706,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18462:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9710,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 9708,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8924,
                            "src": "18483:12:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 9709,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18483:14:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18442:55:40"
                      },
                      {
                        "expression": {
                          "id": 9718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9711,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9693,
                            "src": "18507:8:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9714,
                                "name": "tokenIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9691,
                                "src": "18533:7:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 9715,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9693,
                                "src": "18542:8:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "66616c7365",
                                "id": 9716,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18552:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "id": 9712,
                                "name": "bento",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7864,
                                "src": "18518:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                  "typeString": "contract IBentoBoxMinimal"
                                }
                              },
                              "id": 9713,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "toAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2175,
                              "src": "18518:14:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256,bool) view external returns (uint256)"
                              }
                            },
                            "id": 9717,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18518:40:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18507:51:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9719,
                        "nodeType": "ExpressionStatement",
                        "src": "18507:51:40"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 9722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9720,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9691,
                            "src": "18573:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 9721,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7871,
                            "src": "18584:6:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "18573:17:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 9759,
                          "nodeType": "Block",
                          "src": "18721:187:40",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 9741,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 9739,
                                      "name": "tokenIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9691,
                                      "src": "18743:7:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 9740,
                                      "name": "token1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7873,
                                      "src": "18754:6:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "18743:17:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e56414c49445f494e5055545f544f4b454e",
                                    "id": 9742,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18762:21:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                      "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                    },
                                    "value": "INVALID_INPUT_TOKEN"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                      "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                    }
                                  ],
                                  "id": 9738,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "18735:7:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 9743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18735:49:40",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9744,
                              "nodeType": "ExpressionStatement",
                              "src": "18735:49:40"
                            },
                            {
                              "expression": {
                                "id": 9757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 9745,
                                  "name": "finalAmountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9688,
                                  "src": "18798:14:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 9748,
                                      "name": "token0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7871,
                                      "src": "18829:6:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "id": 9750,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9693,
                                          "src": "18851:8:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 9751,
                                          "name": "_reserve0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9705,
                                          "src": "18861:9:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 9752,
                                          "name": "_reserve1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9707,
                                          "src": "18872:9:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "66616c7365",
                                          "id": 9753,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "18883:5:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "false"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "id": 9749,
                                        "name": "_getAmountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9204,
                                        "src": "18837:13:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256,bool) view returns (uint256)"
                                        }
                                      },
                                      "id": 9754,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "18837:52:40",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 9755,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18891:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "expression": {
                                      "id": 9746,
                                      "name": "bento",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7864,
                                      "src": "18815:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                        "typeString": "contract IBentoBoxMinimal"
                                      }
                                    },
                                    "id": 9747,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2163,
                                    "src": "18815:13:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (address,uint256,bool) view external returns (uint256)"
                                    }
                                  },
                                  "id": 9756,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18815:82:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "18798:99:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9758,
                              "nodeType": "ExpressionStatement",
                              "src": "18798:99:40"
                            }
                          ]
                        },
                        "id": 9760,
                        "nodeType": "IfStatement",
                        "src": "18569:339:40",
                        "trueBody": {
                          "id": 9737,
                          "nodeType": "Block",
                          "src": "18592:123:40",
                          "statements": [
                            {
                              "expression": {
                                "id": 9735,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 9723,
                                  "name": "finalAmountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9688,
                                  "src": "18606:14:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 9726,
                                      "name": "token1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7873,
                                      "src": "18637:6:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "id": 9728,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9693,
                                          "src": "18659:8:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 9729,
                                          "name": "_reserve0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9705,
                                          "src": "18669:9:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 9730,
                                          "name": "_reserve1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9707,
                                          "src": "18680:9:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "74727565",
                                          "id": 9731,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "18691:4:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "true"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "id": 9727,
                                        "name": "_getAmountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9204,
                                        "src": "18645:13:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256,bool) view returns (uint256)"
                                        }
                                      },
                                      "id": 9732,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "18645:51:40",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 9733,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18698:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "expression": {
                                      "id": 9724,
                                      "name": "bento",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7864,
                                      "src": "18623:5:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                        "typeString": "contract IBentoBoxMinimal"
                                      }
                                    },
                                    "id": 9725,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "toShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2163,
                                    "src": "18623:13:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (address,uint256,bool) view external returns (uint256)"
                                    }
                                  },
                                  "id": 9734,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18623:81:40",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "18606:98:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 9736,
                              "nodeType": "ExpressionStatement",
                              "src": "18606:98:40"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "functionSelector": "a8f1f52e",
                  "id": 9762,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountOut",
                  "nameLocation": "18260:12:40",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9686,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "18306:8:40"
                  },
                  "parameters": {
                    "id": 9685,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9684,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "18288:4:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9762,
                        "src": "18273:19:40",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 9683,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "18273:5:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18272:21:40"
                  },
                  "returnParameters": {
                    "id": 9689,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9688,
                        "mutability": "mutable",
                        "name": "finalAmountOut",
                        "nameLocation": "18332:14:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9762,
                        "src": "18324:22:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9687,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18324:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18323:24:40"
                  },
                  "scope": 9825,
                  "src": "18251:663:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2431
                  ],
                  "body": {
                    "id": 9773,
                    "nodeType": "Block",
                    "src": "18996:25:40",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 9770,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "19006:6:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 9771,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19006:8:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9772,
                        "nodeType": "ExpressionStatement",
                        "src": "19006:8:40"
                      }
                    ]
                  },
                  "functionSelector": "499a3c50",
                  "id": 9774,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountIn",
                  "nameLocation": "18929:11:40",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 9766,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "18969:8:40"
                  },
                  "parameters": {
                    "id": 9765,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9764,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9774,
                        "src": "18941:14:40",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 9763,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "18941:5:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18940:16:40"
                  },
                  "returnParameters": {
                    "id": 9769,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9768,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 9774,
                        "src": "18987:7:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9767,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18987:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18986:9:40"
                  },
                  "scope": 9825,
                  "src": "18920:101:40",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9788,
                    "nodeType": "Block",
                    "src": "19109:56:40",
                    "statements": [
                      {
                        "expression": {
                          "id": 9786,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 9781,
                                "name": "_reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9777,
                                "src": "19120:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 9782,
                                "name": "_reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9779,
                                "src": "19131:9:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 9783,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "19119:22:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 9784,
                              "name": "_getReserves",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8924,
                              "src": "19144:12:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function () view returns (uint256,uint256)"
                              }
                            },
                            "id": 9785,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19144:14:40",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "19119:39:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9787,
                        "nodeType": "ExpressionStatement",
                        "src": "19119:39:40"
                      }
                    ]
                  },
                  "functionSelector": "0902f1ac",
                  "id": 9789,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReserves",
                  "nameLocation": "19036:11:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9775,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19047:2:40"
                  },
                  "returnParameters": {
                    "id": 9780,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9777,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "19079:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9789,
                        "src": "19071:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9776,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19071:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9779,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "19098:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9789,
                        "src": "19090:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9778,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19090:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19070:38:40"
                  },
                  "scope": 9825,
                  "src": "19027:138:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9823,
                    "nodeType": "Block",
                    "src": "19241:201:40",
                    "statements": [
                      {
                        "assignments": [
                          9795,
                          9797
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9795,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "19260:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9823,
                            "src": "19252:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9794,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19252:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 9797,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "19279:9:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9823,
                            "src": "19271:17:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9796,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19271:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9800,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 9798,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8924,
                            "src": "19292:12:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 9799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19292:14:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19251:55:40"
                      },
                      {
                        "assignments": [
                          9802
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9802,
                            "mutability": "mutable",
                            "name": "d",
                            "nameLocation": "19324:1:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 9823,
                            "src": "19316:9:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9801,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19316:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9807,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 9804,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9795,
                              "src": "19346:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 9805,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9797,
                              "src": "19357:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 9803,
                            "name": "_computeLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9281,
                            "src": "19328:17:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) view returns (uint256)"
                            }
                          },
                          "id": 9806,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19328:39:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19316:51:40"
                      },
                      {
                        "expression": {
                          "id": 9821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9808,
                            "name": "virtualPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9792,
                            "src": "19377:12:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 9817,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 9809,
                                    "name": "d",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9802,
                                    "src": "19393:1:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 9815,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "arguments": [
                                            {
                                              "hexValue": "3130",
                                              "id": 9812,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "19406:2:40",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_10_by_1",
                                                "typeString": "int_const 10"
                                              },
                                              "value": "10"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_rational_10_by_1",
                                                "typeString": "int_const 10"
                                              }
                                            ],
                                            "id": 9811,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "19398:7:40",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            },
                                            "typeName": {
                                              "id": 9810,
                                              "name": "uint256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "19398:7:40",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 9813,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "19398:11:40",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "**",
                                        "rightExpression": {
                                          "id": 9814,
                                          "name": "decimals",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11915,
                                          "src": "19411:8:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "src": "19398:21:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 9816,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "19397:23:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "19393:27:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 9818,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "19392:29:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 9819,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11917,
                              "src": "19424:11:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "19392:43:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19377:58:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9822,
                        "nodeType": "ExpressionStatement",
                        "src": "19377:58:40"
                      }
                    ]
                  },
                  "functionSelector": "e25aa5fa",
                  "id": 9824,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getVirtualPrice",
                  "nameLocation": "19180:15:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9790,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19195:2:40"
                  },
                  "returnParameters": {
                    "id": 9793,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9792,
                        "mutability": "mutable",
                        "name": "virtualPrice",
                        "nameLocation": "19227:12:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 9824,
                        "src": "19219:20:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9791,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19219:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19218:22:40"
                  },
                  "scope": 9825,
                  "src": "19171:271:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 9826,
              "src": "630:18814:40",
              "usedErrors": []
            }
          ],
          "src": "46:19399:40"
        },
        "id": 40
      },
      "contracts/pool/HybridPoolFactory.sol": {
        "ast": {
          "absolutePath": "contracts/pool/HybridPoolFactory.sol",
          "exportedSymbols": {
            "HybridPool": [
              9825
            ],
            "HybridPoolFactory": [
              9944
            ],
            "IBentoBoxMinimal": [
              2253
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "ITridentCallee": [
              2482
            ],
            "MathUtils": [
              2852
            ],
            "PoolDeployer": [
              11887
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "TridentERC20": [
              12279
            ]
          },
          "id": 9945,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9827,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:41"
            },
            {
              "absolutePath": "contracts/pool/HybridPool.sol",
              "file": "./HybridPool.sol",
              "id": 9828,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9945,
              "sourceUnit": 9826,
              "src": "72:26:41",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pool/PoolDeployer.sol",
              "file": "./PoolDeployer.sol",
              "id": 9829,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 9945,
              "sourceUnit": 11888,
              "src": "99:28:41",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 9831,
                    "name": "PoolDeployer",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11887,
                    "src": "269:12:41"
                  },
                  "id": 9832,
                  "nodeType": "InheritanceSpecifier",
                  "src": "269:12:41"
                }
              ],
              "contractDependencies": [
                9825
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 9830,
                "nodeType": "StructuredDocumentation",
                "src": "129:110:41",
                "text": "@notice Contract for deploying Trident exchange Hybrid Pool with configurations.\n @author Mudit Gupta."
              },
              "fullyImplemented": true,
              "id": 9944,
              "linearizedBaseContracts": [
                9944,
                11887
              ],
              "name": "HybridPoolFactory",
              "nameLocation": "248:17:41",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 9840,
                    "nodeType": "Block",
                    "src": "355:2:41",
                    "statements": []
                  },
                  "id": 9841,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 9837,
                          "name": "_masterDeployer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9834,
                          "src": "338:15:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 9838,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 9836,
                        "name": "PoolDeployer",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11887,
                        "src": "325:12:41"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "325:29:41"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9835,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9834,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "308:15:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 9841,
                        "src": "300:23:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9833,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "300:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "299:25:41"
                  },
                  "returnParameters": {
                    "id": 9839,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "355:0:41"
                  },
                  "scope": 9944,
                  "src": "288:69:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 9942,
                    "nodeType": "Block",
                    "src": "441:733:41",
                    "statements": [
                      {
                        "assignments": [
                          9849,
                          9851,
                          9853,
                          9855
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9849,
                            "mutability": "mutable",
                            "name": "tokenA",
                            "nameLocation": "460:6:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 9942,
                            "src": "452:14:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 9848,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "452:7:41",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 9851,
                            "mutability": "mutable",
                            "name": "tokenB",
                            "nameLocation": "476:6:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 9942,
                            "src": "468:14:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 9850,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "468:7:41",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 9853,
                            "mutability": "mutable",
                            "name": "swapFee",
                            "nameLocation": "492:7:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 9942,
                            "src": "484:15:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9852,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "484:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 9855,
                            "mutability": "mutable",
                            "name": "a",
                            "nameLocation": "509:1:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 9942,
                            "src": "501:9:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 9854,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "501:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9869,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 9858,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9843,
                              "src": "525:11:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 9860,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "539:7:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 9859,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "539:7:41",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 9862,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "548:7:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 9861,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "548:7:41",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 9864,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "557:7:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 9863,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "557:7:41",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 9866,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "566:7:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 9865,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "566:7:41",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 9867,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "538:36:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint256),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint256),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 9856,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "514:3:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 9857,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "514:10:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 9868,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "514:61:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(address payable,address payable,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "451:124:41"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 9872,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 9870,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9849,
                            "src": "590:6:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 9871,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9851,
                            "src": "599:6:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "590:15:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 9882,
                        "nodeType": "IfStatement",
                        "src": "586:81:41",
                        "trueBody": {
                          "id": 9881,
                          "nodeType": "Block",
                          "src": "607:60:41",
                          "statements": [
                            {
                              "expression": {
                                "id": 9879,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 9873,
                                      "name": "tokenA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9849,
                                      "src": "622:6:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 9874,
                                      "name": "tokenB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9851,
                                      "src": "630:6:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "id": 9875,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "621:16:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                    "typeString": "tuple(address,address)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "components": [
                                    {
                                      "id": 9876,
                                      "name": "tokenB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9851,
                                      "src": "641:6:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 9877,
                                      "name": "tokenA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9849,
                                      "src": "649:6:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "id": 9878,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "640:16:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                    "typeString": "tuple(address,address)"
                                  }
                                },
                                "src": "621:35:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 9880,
                              "nodeType": "ExpressionStatement",
                              "src": "621:35:41"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 9891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9883,
                            "name": "_deployData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9843,
                            "src": "716:11:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 9886,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9849,
                                "src": "741:6:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 9887,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9851,
                                "src": "749:6:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 9888,
                                "name": "swapFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9853,
                                "src": "757:7:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 9889,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9855,
                                "src": "766:1:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 9884,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "730:3:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 9885,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "src": "730:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 9890,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "730:38:41",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "716:52:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 9892,
                        "nodeType": "ExpressionStatement",
                        "src": "716:52:41"
                      },
                      {
                        "assignments": [
                          9897
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9897,
                            "mutability": "mutable",
                            "name": "tokens",
                            "nameLocation": "795:6:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 9942,
                            "src": "778:23:41",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 9895,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "778:7:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 9896,
                              "nodeType": "ArrayTypeName",
                              "src": "778:9:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9903,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "32",
                              "id": 9901,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "818:1:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "id": 9900,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "804:13:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 9898,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "808:7:41",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 9899,
                              "nodeType": "ArrayTypeName",
                              "src": "808:9:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 9902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "804:16:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "778:42:41"
                      },
                      {
                        "expression": {
                          "id": 9908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 9904,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9897,
                              "src": "830:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 9906,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 9905,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "837:1:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "830:9:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9907,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9849,
                            "src": "842:6:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "830:18:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9909,
                        "nodeType": "ExpressionStatement",
                        "src": "830:18:41"
                      },
                      {
                        "expression": {
                          "id": 9914,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 9910,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9897,
                              "src": "858:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 9912,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 9911,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "865:1:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "858:9:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 9913,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9851,
                            "src": "870:6:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "858:18:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9915,
                        "nodeType": "ExpressionStatement",
                        "src": "858:18:41"
                      },
                      {
                        "assignments": [
                          9917
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 9917,
                            "mutability": "mutable",
                            "name": "salt",
                            "nameLocation": "1014:4:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 9942,
                            "src": "1006:12:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 9916,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1006:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 9921,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 9919,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9843,
                              "src": "1031:11:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 9918,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "1021:9:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 9920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1021:22:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1006:37:41"
                      },
                      {
                        "expression": {
                          "id": 9934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 9922,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9846,
                            "src": "1053:4:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 9930,
                                    "name": "_deployData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9843,
                                    "src": "1095:11:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 9931,
                                    "name": "masterDeployer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11681,
                                    "src": "1108:14:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 9927,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "1068:14:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_creation_nonpayable$_t_bytes_memory_ptr_$_t_address_$returns$_t_contract$_HybridPool_$9825_$",
                                      "typeString": "function (bytes memory,address) returns (contract HybridPool)"
                                    },
                                    "typeName": {
                                      "id": 9926,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 9925,
                                        "name": "HybridPool",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 9825,
                                        "src": "1072:10:41"
                                      },
                                      "referencedDeclaration": 9825,
                                      "src": "1072:10:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_HybridPool_$9825",
                                        "typeString": "contract HybridPool"
                                      }
                                    }
                                  },
                                  "id": 9929,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "names": [
                                    "salt"
                                  ],
                                  "nodeType": "FunctionCallOptions",
                                  "options": [
                                    {
                                      "id": 9928,
                                      "name": "salt",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9917,
                                      "src": "1089:4:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "src": "1068:26:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_creation_nonpayable$_t_bytes_memory_ptr_$_t_address_$returns$_t_contract$_HybridPool_$9825_$salt",
                                    "typeString": "function (bytes memory,address) returns (contract HybridPool)"
                                  }
                                },
                                "id": 9932,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1068:55:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_HybridPool_$9825",
                                  "typeString": "contract HybridPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_HybridPool_$9825",
                                  "typeString": "contract HybridPool"
                                }
                              ],
                              "id": 9924,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1060:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 9923,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1060:7:41",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 9933,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1060:64:41",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1053:71:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9935,
                        "nodeType": "ExpressionStatement",
                        "src": "1053:71:41"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 9937,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9846,
                              "src": "1148:4:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 9938,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9897,
                              "src": "1154:6:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "id": 9939,
                              "name": "salt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9917,
                              "src": "1162:4:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 9936,
                            "name": "_registerPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11818,
                            "src": "1134:13:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address[] memory,bytes32)"
                            }
                          },
                          "id": 9940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1134:33:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 9941,
                        "nodeType": "ExpressionStatement",
                        "src": "1134:33:41"
                      }
                    ]
                  },
                  "functionSelector": "27c3cae1",
                  "id": 9943,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deployPool",
                  "nameLocation": "372:10:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 9844,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9843,
                        "mutability": "mutable",
                        "name": "_deployData",
                        "nameLocation": "396:11:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 9943,
                        "src": "383:24:41",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 9842,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "383:5:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "382:26:41"
                  },
                  "returnParameters": {
                    "id": 9847,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9846,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "435:4:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 9943,
                        "src": "427:12:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9845,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "427:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "426:14:41"
                  },
                  "scope": 9944,
                  "src": "363:811:41",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 9945,
              "src": "239:937:41",
              "usedErrors": [
                11694,
                11696,
                11698
              ]
            }
          ],
          "src": "46:1131:41"
        },
        "id": 41
      },
      "contracts/pool/IndexPool.sol": {
        "ast": {
          "absolutePath": "contracts/pool/IndexPool.sol",
          "exportedSymbols": {
            "IBentoBoxMinimal": [
              2253
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "ITridentCallee": [
              2482
            ],
            "IndexPool": [
              11592
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "TridentERC20": [
              12279
            ]
          },
          "id": 11593,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 9946,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:42"
            },
            {
              "absolutePath": "contracts/interfaces/IBentoBoxMinimal.sol",
              "file": "../interfaces/IBentoBoxMinimal.sol",
              "id": 9947,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11593,
              "sourceUnit": 2254,
              "src": "72:44:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IMasterDeployer.sol",
              "file": "../interfaces/IMasterDeployer.sol",
              "id": 9948,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11593,
              "sourceUnit": 2357,
              "src": "117:43:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IPool.sol",
              "file": "../interfaces/IPool.sol",
              "id": 9949,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11593,
              "sourceUnit": 2451,
              "src": "161:33:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ITridentCallee.sol",
              "file": "../interfaces/ITridentCallee.sol",
              "id": 9950,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11593,
              "sourceUnit": 2483,
              "src": "195:42:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pool/TridentERC20.sol",
              "file": "./TridentERC20.sol",
              "id": 9951,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11593,
              "sourceUnit": 12280,
              "src": "238:28:42",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 9953,
                    "name": "IPool",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2450,
                    "src": "559:5:42"
                  },
                  "id": 9954,
                  "nodeType": "InheritanceSpecifier",
                  "src": "559:5:42"
                },
                {
                  "baseName": {
                    "id": 9955,
                    "name": "TridentERC20",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 12279,
                    "src": "566:12:42"
                  },
                  "id": 9956,
                  "nodeType": "InheritanceSpecifier",
                  "src": "566:12:42"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 9952,
                "nodeType": "StructuredDocumentation",
                "src": "268:269:42",
                "text": "@notice Trident exchange pool template with constant mean formula for swapping among an array of ERC-20 tokens.\n @dev The reserves are stored as bento shares.\n      The curve is applied to shares as well. This pool does not care about the underlying amounts."
              },
              "fullyImplemented": true,
              "id": 11592,
              "linearizedBaseContracts": [
                11592,
                12279,
                2450
              ],
              "name": "IndexPool",
              "nameLocation": "546:9:42",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 9966,
                  "name": "Mint",
                  "nameLocation": "591:4:42",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 9965,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9958,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "612:6:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9966,
                        "src": "596:22:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9957,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "596:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9960,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "tokenIn",
                        "nameLocation": "628:7:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9966,
                        "src": "620:15:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9959,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "620:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9962,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nameLocation": "645:8:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9966,
                        "src": "637:16:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9961,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "637:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9964,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "671:9:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9966,
                        "src": "655:25:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9963,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "655:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "595:86:42"
                  },
                  "src": "585:97:42"
                },
                {
                  "anonymous": false,
                  "id": 9976,
                  "name": "Burn",
                  "nameLocation": "693:4:42",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 9975,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 9968,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "714:6:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9976,
                        "src": "698:22:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9967,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "698:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9970,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "tokenOut",
                        "nameLocation": "730:8:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9976,
                        "src": "722:16:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9969,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "722:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9972,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "748:9:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9976,
                        "src": "740:17:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 9971,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "740:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9974,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "775:9:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 9976,
                        "src": "759:25:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 9973,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "759:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "697:88:42"
                  },
                  "src": "687:99:42"
                },
                {
                  "constant": false,
                  "functionSelector": "54cf2aeb",
                  "id": 9978,
                  "mutability": "immutable",
                  "name": "swapFee",
                  "nameLocation": "817:7:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "792:32:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9977,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "792:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "0c0a0cd2",
                  "id": 9980,
                  "mutability": "immutable",
                  "name": "barFeeTo",
                  "nameLocation": "856:8:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "831:33:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 9979,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "831:7:42",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "4da31827",
                  "id": 9983,
                  "mutability": "immutable",
                  "name": "bento",
                  "nameLocation": "904:5:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "870:39:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                    "typeString": "contract IBentoBoxMinimal"
                  },
                  "typeName": {
                    "id": 9982,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9981,
                      "name": "IBentoBoxMinimal",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2253,
                      "src": "870:16:42"
                    },
                    "referencedDeclaration": 2253,
                    "src": "870:16:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                      "typeString": "contract IBentoBoxMinimal"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "cf58879a",
                  "id": 9986,
                  "mutability": "immutable",
                  "name": "masterDeployer",
                  "nameLocation": "948:14:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "915:47:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                    "typeString": "contract IMasterDeployer"
                  },
                  "typeName": {
                    "id": 9985,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 9984,
                      "name": "IMasterDeployer",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2356,
                      "src": "915:15:42"
                    },
                    "referencedDeclaration": 2356,
                    "src": "915:15:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                      "typeString": "contract IMasterDeployer"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 9991,
                  "mutability": "constant",
                  "name": "BASE",
                  "nameLocation": "995:4:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "969:39:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9987,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "969:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    },
                    "id": 9990,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "3130",
                      "id": 9988,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1002:2:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "hexValue": "3138",
                      "id": 9989,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1006:2:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_18_by_1",
                        "typeString": "int_const 18"
                      },
                      "value": "18"
                    },
                    "src": "1002:6:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 9994,
                  "mutability": "constant",
                  "name": "MIN_TOKENS",
                  "nameLocation": "1040:10:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "1014:40:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9992,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1014:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "32",
                    "id": 9993,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1053:1:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2_by_1",
                      "typeString": "int_const 2"
                    },
                    "value": "2"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 9997,
                  "mutability": "constant",
                  "name": "MAX_TOKENS",
                  "nameLocation": "1086:10:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "1060:40:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9995,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1060:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "38",
                    "id": 9996,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1099:1:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_8_by_1",
                      "typeString": "int_const 8"
                    },
                    "value": "8"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10004,
                  "mutability": "constant",
                  "name": "MIN_FEE",
                  "nameLocation": "1132:7:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "1106:48:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 9998,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1106:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10003,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 9999,
                      "name": "BASE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9991,
                      "src": "1142:4:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_rational_1000000_by_1",
                        "typeString": "int_const 1000000"
                      },
                      "id": 10002,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "hexValue": "3130",
                        "id": 10000,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1149:2:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "**",
                      "rightExpression": {
                        "hexValue": "36",
                        "id": 10001,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1153:1:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_6_by_1",
                          "typeString": "int_const 6"
                        },
                        "value": "6"
                      },
                      "src": "1149:5:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1000000_by_1",
                        "typeString": "int_const 1000000"
                      }
                    },
                    "src": "1142:12:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10009,
                  "mutability": "constant",
                  "name": "MAX_FEE",
                  "nameLocation": "1186:7:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "1160:45:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10005,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1160:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10008,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 10006,
                      "name": "BASE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9991,
                      "src": "1196:4:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "hexValue": "3130",
                      "id": 10007,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1203:2:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "src": "1196:9:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10012,
                  "mutability": "constant",
                  "name": "MIN_WEIGHT",
                  "nameLocation": "1237:10:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "1211:43:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10010,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1211:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "id": 10011,
                    "name": "BASE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 9991,
                    "src": "1250:4:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10017,
                  "mutability": "constant",
                  "name": "MAX_WEIGHT",
                  "nameLocation": "1286:10:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "1260:48:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10013,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1260:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10016,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 10014,
                      "name": "BASE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9991,
                      "src": "1299:4:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "hexValue": "3530",
                      "id": 10015,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1306:2:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_50_by_1",
                        "typeString": "int_const 50"
                      },
                      "value": "50"
                    },
                    "src": "1299:9:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10022,
                  "mutability": "constant",
                  "name": "MAX_TOTAL_WEIGHT",
                  "nameLocation": "1340:16:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "1314:54:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10018,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1314:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10021,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 10019,
                      "name": "BASE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9991,
                      "src": "1359:4:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "hexValue": "3530",
                      "id": 10020,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1366:2:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_50_by_1",
                        "typeString": "int_const 50"
                      },
                      "value": "50"
                    },
                    "src": "1359:9:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10029,
                  "mutability": "constant",
                  "name": "MIN_BALANCE",
                  "nameLocation": "1400:11:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "1374:53:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10023,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1374:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10028,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 10024,
                      "name": "BASE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9991,
                      "src": "1414:4:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_rational_1000000000000_by_1",
                        "typeString": "int_const 1000000000000"
                      },
                      "id": 10027,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "hexValue": "3130",
                        "id": 10025,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1421:2:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "**",
                      "rightExpression": {
                        "hexValue": "3132",
                        "id": 10026,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1425:2:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_12_by_1",
                          "typeString": "int_const 12"
                        },
                        "value": "12"
                      },
                      "src": "1421:6:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1000000000000_by_1",
                        "typeString": "int_const 1000000000000"
                      }
                    },
                    "src": "1414:13:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10034,
                  "mutability": "constant",
                  "name": "INIT_POOL_SUPPLY",
                  "nameLocation": "1459:16:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "1433:55:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10030,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1433:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10033,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 10031,
                      "name": "BASE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9991,
                      "src": "1478:4:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "hexValue": "313030",
                      "id": 10032,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1485:3:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_100_by_1",
                        "typeString": "int_const 100"
                      },
                      "value": "100"
                    },
                    "src": "1478:10:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10037,
                  "mutability": "constant",
                  "name": "MIN_POW_BASE",
                  "nameLocation": "1520:12:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "1494:42:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10035,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1494:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "31",
                    "id": 10036,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1535:1:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "1"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10045,
                  "mutability": "constant",
                  "name": "MAX_POW_BASE",
                  "nameLocation": "1568:12:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "1542:55:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10038,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1542:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10044,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "hexValue": "32",
                            "id": 10039,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1584:1:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 10040,
                            "name": "BASE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9991,
                            "src": "1588:4:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1584:8:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 10042,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "1583:10:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 10043,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1596:1:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1583:14:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10052,
                  "mutability": "constant",
                  "name": "POW_PRECISION",
                  "nameLocation": "1629:13:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "1603:55:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10046,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1603:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10051,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 10047,
                      "name": "BASE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9991,
                      "src": "1645:4:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_rational_10000000000_by_1",
                        "typeString": "int_const 10000000000"
                      },
                      "id": 10050,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "hexValue": "3130",
                        "id": 10048,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1652:2:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "**",
                      "rightExpression": {
                        "hexValue": "3130",
                        "id": 10049,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1656:2:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "src": "1652:6:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10000000000_by_1",
                        "typeString": "int_const 10000000000"
                      }
                    },
                    "src": "1645:13:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10057,
                  "mutability": "constant",
                  "name": "MAX_IN_RATIO",
                  "nameLocation": "1690:12:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "1664:49:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10053,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1664:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10056,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 10054,
                      "name": "BASE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9991,
                      "src": "1705:4:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "hexValue": "32",
                      "id": 10055,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1712:1:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "src": "1705:8:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 10065,
                  "mutability": "constant",
                  "name": "MAX_OUT_RATIO",
                  "nameLocation": "1745:13:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "1719:56:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10058,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1719:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 10064,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 10059,
                            "name": "BASE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9991,
                            "src": "1762:4:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "hexValue": "33",
                            "id": 10060,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1769:1:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "src": "1762:8:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 10062,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "1761:10:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 10063,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1774:1:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1761:14:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10067,
                  "mutability": "mutable",
                  "name": "totalWeight",
                  "nameLocation": "1799:11:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "1782:28:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint136",
                    "typeString": "uint136"
                  },
                  "typeName": {
                    "id": 10066,
                    "name": "uint136",
                    "nodeType": "ElementaryTypeName",
                    "src": "1782:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint136",
                      "typeString": "uint136"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 10070,
                  "mutability": "mutable",
                  "name": "tokens",
                  "nameLocation": "1835:6:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "1816:25:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 10068,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1816:7:42",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 10069,
                    "nodeType": "ArrayTypeName",
                    "src": "1816:9:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "c14ad802",
                  "id": 10072,
                  "mutability": "mutable",
                  "name": "barFee",
                  "nameLocation": "1863:6:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "1848:21:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10071,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1848:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2408
                  ],
                  "constant": true,
                  "functionSelector": "a69840a8",
                  "id": 10076,
                  "mutability": "constant",
                  "name": "poolIdentifier",
                  "nameLocation": "1909:14:42",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 10074,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1900:8:42"
                  },
                  "scope": 11592,
                  "src": "1876:65:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 10073,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1876:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "54726964656e743a496e646578",
                    "id": 10075,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1926:15:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_763876706b77353e4cba73024257ef3d36f889198d5a54c1d649d95eb7a6f098",
                      "typeString": "literal_string \"Trident:Index\""
                    },
                    "value": "Trident:Index"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 10078,
                  "mutability": "mutable",
                  "name": "unlocked",
                  "nameLocation": "1965:8:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "1948:25:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10077,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1948:7:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10096,
                    "nodeType": "Block",
                    "src": "1995:104:42",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10083,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 10081,
                                "name": "unlocked",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10078,
                                "src": "2013:8:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 10082,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2025:1:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "2013:13:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4c4f434b4544",
                              "id": 10084,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2028:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b",
                                "typeString": "literal_string \"LOCKED\""
                              },
                              "value": "LOCKED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b",
                                "typeString": "literal_string \"LOCKED\""
                              }
                            ],
                            "id": 10080,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2005:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2005:32:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10086,
                        "nodeType": "ExpressionStatement",
                        "src": "2005:32:42"
                      },
                      {
                        "expression": {
                          "id": 10089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10087,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10078,
                            "src": "2047:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "32",
                            "id": 10088,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2058:1:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "2047:12:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10090,
                        "nodeType": "ExpressionStatement",
                        "src": "2047:12:42"
                      },
                      {
                        "id": 10091,
                        "nodeType": "PlaceholderStatement",
                        "src": "2069:1:42"
                      },
                      {
                        "expression": {
                          "id": 10094,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10092,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10078,
                            "src": "2080:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 10093,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2091:1:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2080:12:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10095,
                        "nodeType": "ExpressionStatement",
                        "src": "2080:12:42"
                      }
                    ]
                  },
                  "id": 10097,
                  "name": "lock",
                  "nameLocation": "1988:4:42",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 10079,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1992:2:42"
                  },
                  "src": "1979:120:42",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "469e9067",
                  "id": 10102,
                  "mutability": "mutable",
                  "name": "records",
                  "nameLocation": "2139:7:42",
                  "nodeType": "VariableDeclaration",
                  "scope": 11592,
                  "src": "2105:41:42",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$10107_storage_$",
                    "typeString": "mapping(address => struct IndexPool.Record)"
                  },
                  "typeName": {
                    "id": 10101,
                    "keyType": {
                      "id": 10098,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2113:7:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2105:26:42",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$10107_storage_$",
                      "typeString": "mapping(address => struct IndexPool.Record)"
                    },
                    "valueType": {
                      "id": 10100,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 10099,
                        "name": "Record",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 10107,
                        "src": "2124:6:42"
                      },
                      "referencedDeclaration": 10107,
                      "src": "2124:6:42",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                        "typeString": "struct IndexPool.Record"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "canonicalName": "IndexPool.Record",
                  "id": 10107,
                  "members": [
                    {
                      "constant": false,
                      "id": 10104,
                      "mutability": "mutable",
                      "name": "reserve",
                      "nameLocation": "2184:7:42",
                      "nodeType": "VariableDeclaration",
                      "scope": 10107,
                      "src": "2176:15:42",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint120",
                        "typeString": "uint120"
                      },
                      "typeName": {
                        "id": 10103,
                        "name": "uint120",
                        "nodeType": "ElementaryTypeName",
                        "src": "2176:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint120",
                          "typeString": "uint120"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 10106,
                      "mutability": "mutable",
                      "name": "weight",
                      "nameLocation": "2209:6:42",
                      "nodeType": "VariableDeclaration",
                      "scope": 10107,
                      "src": "2201:14:42",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint136",
                        "typeString": "uint136"
                      },
                      "typeName": {
                        "id": 10105,
                        "name": "uint136",
                        "nodeType": "ElementaryTypeName",
                        "src": "2201:7:42",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint136",
                          "typeString": "uint136"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Record",
                  "nameLocation": "2159:6:42",
                  "nodeType": "StructDefinition",
                  "scope": 11592,
                  "src": "2152:70:42",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10293,
                    "nodeType": "Block",
                    "src": "2291:1312:42",
                    "statements": [
                      {
                        "assignments": [
                          10118,
                          10121,
                          10123
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10118,
                            "mutability": "mutable",
                            "name": "_tokens",
                            "nameLocation": "2319:7:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10293,
                            "src": "2302:24:42",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 10116,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2302:7:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 10117,
                              "nodeType": "ArrayTypeName",
                              "src": "2302:9:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10121,
                            "mutability": "mutable",
                            "name": "_weights",
                            "nameLocation": "2345:8:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10293,
                            "src": "2328:25:42",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                              "typeString": "uint136[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 10119,
                                "name": "uint136",
                                "nodeType": "ElementaryTypeName",
                                "src": "2328:7:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              },
                              "id": 10120,
                              "nodeType": "ArrayTypeName",
                              "src": "2328:9:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint136_$dyn_storage_ptr",
                                "typeString": "uint136[]"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10123,
                            "mutability": "mutable",
                            "name": "_swapFee",
                            "nameLocation": "2363:8:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10293,
                            "src": "2355:16:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10122,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2355:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10137,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 10126,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10109,
                              "src": "2386:11:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "baseExpression": {
                                    "id": 10128,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2400:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 10127,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2400:7:42",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 10129,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2400:9:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_address_$dyn_memory_ptr_$",
                                    "typeString": "type(address[] memory)"
                                  }
                                },
                                {
                                  "baseExpression": {
                                    "id": 10131,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2411:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint136_$",
                                      "typeString": "type(uint136)"
                                    },
                                    "typeName": {
                                      "id": 10130,
                                      "name": "uint136",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2411:7:42",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 10132,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2411:9:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_uint136_$dyn_memory_ptr_$",
                                    "typeString": "type(uint136[] memory)"
                                  }
                                },
                                {
                                  "id": 10134,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2422:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 10133,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2422:7:42",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 10135,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2399:31:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint136_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address[] memory),type(uint136[] memory),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint136_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address[] memory),type(uint136[] memory),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 10124,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "2375:3:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 10125,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "2375:10:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 10136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2375:56:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint136_$dyn_memory_ptr_$_t_uint256_$",
                            "typeString": "tuple(address[] memory,uint136[] memory,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2301:130:42"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 10139,
                                  "name": "_tokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10118,
                                  "src": "2509:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 10140,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "2509:14:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 10141,
                                  "name": "_weights",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10121,
                                  "src": "2527:8:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                                    "typeString": "uint136[] memory"
                                  }
                                },
                                "id": 10142,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "2527:15:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2509:33:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f415252415953",
                              "id": 10144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2544:16:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_00a4856cd405d120cf9a0137dbcece84ecbe301664e8b1f382f9ad760cebc409",
                                "typeString": "literal_string \"INVALID_ARRAYS\""
                              },
                              "value": "INVALID_ARRAYS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_00a4856cd405d120cf9a0137dbcece84ecbe301664e8b1f382f9ad760cebc409",
                                "typeString": "literal_string \"INVALID_ARRAYS\""
                              }
                            ],
                            "id": 10138,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2501:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2501:60:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10146,
                        "nodeType": "ExpressionStatement",
                        "src": "2501:60:42"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 10154,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 10150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 10148,
                                  "name": "MIN_FEE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10004,
                                  "src": "2579:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "id": 10149,
                                  "name": "_swapFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10123,
                                  "src": "2590:8:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2579:19:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 10153,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 10151,
                                  "name": "_swapFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10123,
                                  "src": "2602:8:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "id": 10152,
                                  "name": "MAX_FEE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10009,
                                  "src": "2614:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2602:19:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2579:42:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f535741505f464545",
                              "id": 10155,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2623:18:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1",
                                "typeString": "literal_string \"INVALID_SWAP_FEE\""
                              },
                              "value": "INVALID_SWAP_FEE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1",
                                "typeString": "literal_string \"INVALID_SWAP_FEE\""
                              }
                            ],
                            "id": 10147,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2571:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2571:71:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10157,
                        "nodeType": "ExpressionStatement",
                        "src": "2571:71:42"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 10167,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 10162,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 10159,
                                  "name": "MIN_TOKENS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9994,
                                  "src": "2660:10:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "expression": {
                                    "id": 10160,
                                    "name": "_tokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10118,
                                    "src": "2674:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 10161,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "2674:14:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2660:28:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 10166,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 10163,
                                    "name": "_tokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10118,
                                    "src": "2692:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 10164,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "2692:14:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "id": 10165,
                                  "name": "MAX_TOKENS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9997,
                                  "src": "2710:10:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2692:28:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2660:60:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f544f4b454e535f4c454e475448",
                              "id": 10168,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2722:23:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_75f734113dfa6f453446d4f37ce54f235fdeedec101ae5c27cbf0958b768d046",
                                "typeString": "literal_string \"INVALID_TOKENS_LENGTH\""
                              },
                              "value": "INVALID_TOKENS_LENGTH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_75f734113dfa6f453446d4f37ce54f235fdeedec101ae5c27cbf0958b768d046",
                                "typeString": "literal_string \"INVALID_TOKENS_LENGTH\""
                              }
                            ],
                            "id": 10158,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2652:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2652:94:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10170,
                        "nodeType": "ExpressionStatement",
                        "src": "2652:94:42"
                      },
                      {
                        "body": {
                          "id": 10236,
                          "nodeType": "Block",
                          "src": "2802:323:42",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 10190,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "baseExpression": {
                                        "id": 10183,
                                        "name": "_tokens",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10118,
                                        "src": "2824:7:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 10185,
                                      "indexExpression": {
                                        "id": 10184,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10172,
                                        "src": "2832:1:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2824:10:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 10188,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2846:1:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 10187,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "2838:7:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 10186,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2838:7:42",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 10189,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2838:10:42",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "2824:24:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "5a45524f5f41444452455353",
                                    "id": 10191,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2850:14:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af",
                                      "typeString": "literal_string \"ZERO_ADDRESS\""
                                    },
                                    "value": "ZERO_ADDRESS"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af",
                                      "typeString": "literal_string \"ZERO_ADDRESS\""
                                    }
                                  ],
                                  "id": 10182,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "2816:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 10192,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2816:49:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10193,
                              "nodeType": "ExpressionStatement",
                              "src": "2816:49:42"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 10205,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 10199,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 10195,
                                        "name": "MIN_WEIGHT",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10012,
                                        "src": "2887:10:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "baseExpression": {
                                          "id": 10196,
                                          "name": "_weights",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10121,
                                          "src": "2901:8:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                                            "typeString": "uint136[] memory"
                                          }
                                        },
                                        "id": 10198,
                                        "indexExpression": {
                                          "id": 10197,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10172,
                                          "src": "2910:1:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "2901:11:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint136",
                                          "typeString": "uint136"
                                        }
                                      },
                                      "src": "2887:25:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 10204,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "baseExpression": {
                                          "id": 10200,
                                          "name": "_weights",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10121,
                                          "src": "2916:8:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                                            "typeString": "uint136[] memory"
                                          }
                                        },
                                        "id": 10202,
                                        "indexExpression": {
                                          "id": 10201,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10172,
                                          "src": "2925:1:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "2916:11:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint136",
                                          "typeString": "uint136"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "id": 10203,
                                        "name": "MAX_WEIGHT",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10017,
                                        "src": "2931:10:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "2916:25:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "2887:54:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e56414c49445f574549474854",
                                    "id": 10206,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2943:16:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_87c75609d2efba568b00c7442679e76c5cb56f78d53aa8cdaaa9ad7d0cd20528",
                                      "typeString": "literal_string \"INVALID_WEIGHT\""
                                    },
                                    "value": "INVALID_WEIGHT"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_87c75609d2efba568b00c7442679e76c5cb56f78d53aa8cdaaa9ad7d0cd20528",
                                      "typeString": "literal_string \"INVALID_WEIGHT\""
                                    }
                                  ],
                                  "id": 10194,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "2879:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 10207,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2879:81:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10208,
                              "nodeType": "ExpressionStatement",
                              "src": "2879:81:42"
                            },
                            {
                              "expression": {
                                "id": 10220,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 10209,
                                    "name": "records",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10102,
                                    "src": "2974:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$10107_storage_$",
                                      "typeString": "mapping(address => struct IndexPool.Record storage ref)"
                                    }
                                  },
                                  "id": 10213,
                                  "indexExpression": {
                                    "baseExpression": {
                                      "id": 10210,
                                      "name": "_tokens",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10118,
                                      "src": "2982:7:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 10212,
                                    "indexExpression": {
                                      "id": 10211,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10172,
                                      "src": "2990:1:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2982:10:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2974:19:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$10107_storage",
                                    "typeString": "struct IndexPool.Record storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 10215,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3013:1:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    {
                                      "baseExpression": {
                                        "id": 10216,
                                        "name": "_weights",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10121,
                                        "src": "3024:8:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                                          "typeString": "uint136[] memory"
                                        }
                                      },
                                      "id": 10218,
                                      "indexExpression": {
                                        "id": 10217,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10172,
                                        "src": "3033:1:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3024:11:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint136",
                                        "typeString": "uint136"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      {
                                        "typeIdentifier": "t_uint136",
                                        "typeString": "uint136"
                                      }
                                    ],
                                    "id": 10214,
                                    "name": "Record",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10107,
                                    "src": "2996:6:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_Record_$10107_storage_ptr_$",
                                      "typeString": "type(struct IndexPool.Record storage pointer)"
                                    }
                                  },
                                  "id": 10219,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [
                                    "reserve",
                                    "weight"
                                  ],
                                  "nodeType": "FunctionCall",
                                  "src": "2996:41:42",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$10107_memory_ptr",
                                    "typeString": "struct IndexPool.Record memory"
                                  }
                                },
                                "src": "2974:63:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Record_$10107_storage",
                                  "typeString": "struct IndexPool.Record storage ref"
                                }
                              },
                              "id": 10221,
                              "nodeType": "ExpressionStatement",
                              "src": "2974:63:42"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 10225,
                                      "name": "_tokens",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10118,
                                      "src": "3063:7:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 10227,
                                    "indexExpression": {
                                      "id": 10226,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10172,
                                      "src": "3071:1:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3063:10:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 10222,
                                    "name": "tokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10070,
                                    "src": "3051:6:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 10224,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "push",
                                  "nodeType": "MemberAccess",
                                  "src": "3051:11:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$bound_to$_t_array$_t_address_$dyn_storage_ptr_$",
                                    "typeString": "function (address[] storage pointer,address)"
                                  }
                                },
                                "id": 10228,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3051:23:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10229,
                              "nodeType": "ExpressionStatement",
                              "src": "3051:23:42"
                            },
                            {
                              "expression": {
                                "id": 10234,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 10230,
                                  "name": "totalWeight",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10067,
                                  "src": "3088:11:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint136",
                                    "typeString": "uint136"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "id": 10231,
                                    "name": "_weights",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10121,
                                    "src": "3103:8:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                                      "typeString": "uint136[] memory"
                                    }
                                  },
                                  "id": 10233,
                                  "indexExpression": {
                                    "id": 10232,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10172,
                                    "src": "3112:1:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3103:11:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint136",
                                    "typeString": "uint136"
                                  }
                                },
                                "src": "3088:26:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              },
                              "id": 10235,
                              "nodeType": "ExpressionStatement",
                              "src": "3088:26:42"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10178,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 10175,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10172,
                            "src": "2777:1:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 10176,
                              "name": "_tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10118,
                              "src": "2781:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 10177,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "2781:14:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2777:18:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10237,
                        "initializationExpression": {
                          "assignments": [
                            10172
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 10172,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "2770:1:42",
                              "nodeType": "VariableDeclaration",
                              "scope": 10237,
                              "src": "2762:9:42",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 10171,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2762:7:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 10174,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 10173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2774:1:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2762:13:42"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 10180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2797:3:42",
                            "subExpression": {
                              "id": 10179,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10172,
                              "src": "2797:1:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10181,
                          "nodeType": "ExpressionStatement",
                          "src": "2797:3:42"
                        },
                        "nodeType": "ForStatement",
                        "src": "2757:368:42"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10241,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 10239,
                                "name": "totalWeight",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10067,
                                "src": "3143:11:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 10240,
                                "name": "MAX_TOTAL_WEIGHT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10022,
                                "src": "3158:16:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3143:31:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d41585f544f54414c5f574549474854",
                              "id": 10242,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3176:18:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e75e5d818d3b36fb5c347de52391ac0301ffdae8d8720063773226e186361380",
                                "typeString": "literal_string \"MAX_TOTAL_WEIGHT\""
                              },
                              "value": "MAX_TOTAL_WEIGHT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e75e5d818d3b36fb5c347de52391ac0301ffdae8d8720063773226e186361380",
                                "typeString": "literal_string \"MAX_TOTAL_WEIGHT\""
                              }
                            ],
                            "id": 10238,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3135:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3135:60:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10244,
                        "nodeType": "ExpressionStatement",
                        "src": "3135:60:42"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 10248,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3265:1:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 10247,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3257:7:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10246,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3257:7:42",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10249,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3257:10:42",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10250,
                              "name": "INIT_POOL_SUPPLY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10034,
                              "src": "3269:16:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10245,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12250,
                            "src": "3251:5:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 10251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3251:35:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10252,
                        "nodeType": "ExpressionStatement",
                        "src": "3251:35:42"
                      },
                      {
                        "expression": {
                          "id": 10255,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10253,
                            "name": "swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9978,
                            "src": "3297:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 10254,
                            "name": "_swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10123,
                            "src": "3307:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3297:18:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10256,
                        "nodeType": "ExpressionStatement",
                        "src": "3297:18:42"
                      },
                      {
                        "expression": {
                          "id": 10263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10257,
                            "name": "barFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10072,
                            "src": "3325:6:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 10259,
                                    "name": "_masterDeployer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10111,
                                    "src": "3350:15:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 10258,
                                  "name": "IMasterDeployer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2356,
                                  "src": "3334:15:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                    "typeString": "type(contract IMasterDeployer)"
                                  }
                                },
                                "id": 10260,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3334:32:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                  "typeString": "contract IMasterDeployer"
                                }
                              },
                              "id": 10261,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "barFee",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2324,
                              "src": "3334:39:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 10262,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3334:41:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3325:50:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10264,
                        "nodeType": "ExpressionStatement",
                        "src": "3325:50:42"
                      },
                      {
                        "expression": {
                          "id": 10271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10265,
                            "name": "barFeeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9980,
                            "src": "3385:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 10267,
                                    "name": "_masterDeployer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10111,
                                    "src": "3412:15:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 10266,
                                  "name": "IMasterDeployer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2356,
                                  "src": "3396:15:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                    "typeString": "type(contract IMasterDeployer)"
                                  }
                                },
                                "id": 10268,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3396:32:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                  "typeString": "contract IMasterDeployer"
                                }
                              },
                              "id": 10269,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "barFeeTo",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2329,
                              "src": "3396:41:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                "typeString": "function () view external returns (address)"
                              }
                            },
                            "id": 10270,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3396:43:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3385:54:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 10272,
                        "nodeType": "ExpressionStatement",
                        "src": "3385:54:42"
                      },
                      {
                        "expression": {
                          "id": 10281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10273,
                            "name": "bento",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9983,
                            "src": "3449:5:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 10276,
                                        "name": "_masterDeployer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10111,
                                        "src": "3490:15:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 10275,
                                      "name": "IMasterDeployer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2356,
                                      "src": "3474:15:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                        "typeString": "type(contract IMasterDeployer)"
                                      }
                                    },
                                    "id": 10277,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3474:32:42",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                      "typeString": "contract IMasterDeployer"
                                    }
                                  },
                                  "id": 10278,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "bento",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2334,
                                  "src": "3474:38:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 10279,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3474:40:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 10274,
                              "name": "IBentoBoxMinimal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2253,
                              "src": "3457:16:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IBentoBoxMinimal_$2253_$",
                                "typeString": "type(contract IBentoBoxMinimal)"
                              }
                            },
                            "id": 10280,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3457:58:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "src": "3449:66:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        "id": 10282,
                        "nodeType": "ExpressionStatement",
                        "src": "3449:66:42"
                      },
                      {
                        "expression": {
                          "id": 10287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10283,
                            "name": "masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9986,
                            "src": "3525:14:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                              "typeString": "contract IMasterDeployer"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 10285,
                                "name": "_masterDeployer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10111,
                                "src": "3558:15:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 10284,
                              "name": "IMasterDeployer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2356,
                              "src": "3542:15:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                "typeString": "type(contract IMasterDeployer)"
                              }
                            },
                            "id": 10286,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3542:32:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                              "typeString": "contract IMasterDeployer"
                            }
                          },
                          "src": "3525:49:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                            "typeString": "contract IMasterDeployer"
                          }
                        },
                        "id": 10288,
                        "nodeType": "ExpressionStatement",
                        "src": "3525:49:42"
                      },
                      {
                        "expression": {
                          "id": 10291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10289,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10078,
                            "src": "3584:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 10290,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3595:1:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3584:12:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10292,
                        "nodeType": "ExpressionStatement",
                        "src": "3584:12:42"
                      }
                    ]
                  },
                  "id": 10294,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10112,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10109,
                        "mutability": "mutable",
                        "name": "_deployData",
                        "nameLocation": "2253:11:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10294,
                        "src": "2240:24:42",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10108,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2240:5:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10111,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "2274:15:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10294,
                        "src": "2266:23:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10110,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2266:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2239:51:42"
                  },
                  "returnParameters": {
                    "id": 10113,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2291:0:42"
                  },
                  "scope": 11592,
                  "src": "2228:1375:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2384
                  ],
                  "body": {
                    "id": 10413,
                    "nodeType": "Block",
                    "src": "3886:994:42",
                    "statements": [
                      {
                        "assignments": [
                          10306,
                          10308
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10306,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "3905:9:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10413,
                            "src": "3897:17:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 10305,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3897:7:42",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10308,
                            "mutability": "mutable",
                            "name": "toMint",
                            "nameLocation": "3924:6:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10413,
                            "src": "3916:14:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10307,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3916:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10318,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 10311,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10297,
                              "src": "3945:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 10313,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3952:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 10312,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3952:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 10315,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3961:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 10314,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3961:7:42",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 10316,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3951:18:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 10309,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "3934:3:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 10310,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "3934:10:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 10317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3934:36:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$",
                            "typeString": "tuple(address payable,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3896:74:42"
                      },
                      {
                        "assignments": [
                          10320
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10320,
                            "mutability": "mutable",
                            "name": "ratio",
                            "nameLocation": "3989:5:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10413,
                            "src": "3981:13:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint120",
                              "typeString": "uint120"
                            },
                            "typeName": {
                              "id": 10319,
                              "name": "uint120",
                              "nodeType": "ElementaryTypeName",
                              "src": "3981:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint120",
                                "typeString": "uint120"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10328,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10324,
                                  "name": "toMint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10308,
                                  "src": "4010:6:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 10325,
                                  "name": "totalSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11917,
                                  "src": "4018:11:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 10323,
                                "name": "_div",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11415,
                                "src": "4005:4:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 10326,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4005:25:42",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10322,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3997:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint120_$",
                              "typeString": "type(uint120)"
                            },
                            "typeName": {
                              "id": 10321,
                              "name": "uint120",
                              "nodeType": "ElementaryTypeName",
                              "src": "3997:7:42",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 10327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3997:34:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint120",
                            "typeString": "uint120"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3981:50:42"
                      },
                      {
                        "body": {
                          "id": 10402,
                          "nodeType": "Block",
                          "src": "4086:726:42",
                          "statements": [
                            {
                              "assignments": [
                                10341
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 10341,
                                  "mutability": "mutable",
                                  "name": "tokenIn",
                                  "nameLocation": "4108:7:42",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 10402,
                                  "src": "4100:15:42",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 10340,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4100:7:42",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 10345,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 10342,
                                  "name": "tokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10070,
                                  "src": "4118:6:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                    "typeString": "address[] storage ref"
                                  }
                                },
                                "id": 10344,
                                "indexExpression": {
                                  "id": 10343,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10330,
                                  "src": "4125:1:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4118:9:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4100:27:42"
                            },
                            {
                              "assignments": [
                                10347
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 10347,
                                  "mutability": "mutable",
                                  "name": "reserve",
                                  "nameLocation": "4149:7:42",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 10402,
                                  "src": "4141:15:42",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint120",
                                    "typeString": "uint120"
                                  },
                                  "typeName": {
                                    "id": 10346,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4141:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 10352,
                              "initialValue": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 10348,
                                    "name": "records",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10102,
                                    "src": "4159:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$10107_storage_$",
                                      "typeString": "mapping(address => struct IndexPool.Record storage ref)"
                                    }
                                  },
                                  "id": 10350,
                                  "indexExpression": {
                                    "id": 10349,
                                    "name": "tokenIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10341,
                                    "src": "4167:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4159:16:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$10107_storage",
                                    "typeString": "struct IndexPool.Record storage ref"
                                  }
                                },
                                "id": 10351,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10104,
                                "src": "4159:24:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4141:42:42"
                            },
                            {
                              "assignments": [
                                10354
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 10354,
                                  "mutability": "mutable",
                                  "name": "amountIn",
                                  "nameLocation": "4275:8:42",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 10402,
                                  "src": "4267:16:42",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint120",
                                    "typeString": "uint120"
                                  },
                                  "typeName": {
                                    "id": 10353,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4267:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 10367,
                              "initialValue": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint120",
                                    "typeString": "uint120"
                                  },
                                  "id": 10357,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 10355,
                                    "name": "reserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10347,
                                    "src": "4286:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 10356,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4297:1:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "4286:12:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "id": 10365,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10320,
                                  "src": "4333:5:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint120",
                                    "typeString": "uint120"
                                  }
                                },
                                "id": 10366,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "4286:52:42",
                                "trueExpression": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 10361,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10320,
                                          "src": "4314:5:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint120",
                                            "typeString": "uint120"
                                          }
                                        },
                                        {
                                          "id": 10362,
                                          "name": "reserve",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10347,
                                          "src": "4321:7:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint120",
                                            "typeString": "uint120"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint120",
                                            "typeString": "uint120"
                                          },
                                          {
                                            "typeIdentifier": "t_uint120",
                                            "typeString": "uint120"
                                          }
                                        ],
                                        "id": 10360,
                                        "name": "_mul",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11384,
                                        "src": "4309:4:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 10363,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4309:20:42",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 10359,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4301:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint120_$",
                                      "typeString": "type(uint120)"
                                    },
                                    "typeName": {
                                      "id": 10358,
                                      "name": "uint120",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4301:7:42",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 10364,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4301:29:42",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint120",
                                    "typeString": "uint120"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4267:71:42"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 10371,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 10369,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10354,
                                      "src": "4360:8:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "id": 10370,
                                      "name": "MIN_BALANCE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10029,
                                      "src": "4372:11:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4360:23:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4d494e5f42414c414e4345",
                                    "id": 10372,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4385:13:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6bebbe4a6d03d73ca34b8e24407254be08e942ad0a1388f8e02d78d6cedb6f8f",
                                      "typeString": "literal_string \"MIN_BALANCE\""
                                    },
                                    "value": "MIN_BALANCE"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_6bebbe4a6d03d73ca34b8e24407254be08e942ad0a1388f8e02d78d6cedb6f8f",
                                      "typeString": "literal_string \"MIN_BALANCE\""
                                    }
                                  ],
                                  "id": 10368,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "4352:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 10373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4352:47:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10374,
                              "nodeType": "ExpressionStatement",
                              "src": "4352:47:42"
                            },
                            {
                              "id": 10393,
                              "nodeType": "UncheckedBlock",
                              "src": "4494:243:42",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 10382,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "arguments": [
                                            {
                                              "id": 10377,
                                              "name": "tokenIn",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 10341,
                                              "src": "4621:7:42",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 10376,
                                            "name": "_balance",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10934,
                                            "src": "4612:8:42",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                              "typeString": "function (address) view returns (uint256)"
                                            }
                                          },
                                          "id": 10378,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "4612:17:42",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">=",
                                        "rightExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint120",
                                            "typeString": "uint120"
                                          },
                                          "id": 10381,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 10379,
                                            "name": "amountIn",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10354,
                                            "src": "4633:8:42",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint120",
                                              "typeString": "uint120"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "id": 10380,
                                            "name": "reserve",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10347,
                                            "src": "4644:7:42",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint120",
                                              "typeString": "uint120"
                                            }
                                          },
                                          "src": "4633:18:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint120",
                                            "typeString": "uint120"
                                          }
                                        },
                                        "src": "4612:39:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "hexValue": "4e4f545f5245434549564544",
                                        "id": 10383,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4653:14:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_5bc54dac1e6c6942ca387ee7fa5b266c08fd485e140ffd0f93cb3919d20c5523",
                                          "typeString": "literal_string \"NOT_RECEIVED\""
                                        },
                                        "value": "NOT_RECEIVED"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_5bc54dac1e6c6942ca387ee7fa5b266c08fd485e140ffd0f93cb3919d20c5523",
                                          "typeString": "literal_string \"NOT_RECEIVED\""
                                        }
                                      ],
                                      "id": 10375,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "4604:7:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 10384,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4604:64:42",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 10385,
                                  "nodeType": "ExpressionStatement",
                                  "src": "4604:64:42"
                                },
                                {
                                  "expression": {
                                    "id": 10391,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 10386,
                                          "name": "records",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10102,
                                          "src": "4686:7:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$10107_storage_$",
                                            "typeString": "mapping(address => struct IndexPool.Record storage ref)"
                                          }
                                        },
                                        "id": 10388,
                                        "indexExpression": {
                                          "id": 10387,
                                          "name": "tokenIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10341,
                                          "src": "4694:7:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4686:16:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Record_$10107_storage",
                                          "typeString": "struct IndexPool.Record storage ref"
                                        }
                                      },
                                      "id": 10389,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "reserve",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 10104,
                                      "src": "4686:24:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "id": 10390,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10354,
                                      "src": "4714:8:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "src": "4686:36:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  "id": 10392,
                                  "nodeType": "ExpressionStatement",
                                  "src": "4686:36:42"
                                }
                              ]
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 10395,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "4760:3:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 10396,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "4760:10:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 10397,
                                    "name": "tokenIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10341,
                                    "src": "4772:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 10398,
                                    "name": "amountIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10354,
                                    "src": "4781:8:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  {
                                    "id": 10399,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10306,
                                    "src": "4791:9:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 10394,
                                  "name": "Mint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9966,
                                  "src": "4755:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$__$",
                                    "typeString": "function (address,address,uint256,address)"
                                  }
                                },
                                "id": 10400,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4755:46:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10401,
                              "nodeType": "EmitStatement",
                              "src": "4750:51:42"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 10333,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10330,
                            "src": "4062:1:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 10334,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10070,
                              "src": "4066:6:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 10335,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "4066:13:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4062:17:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10403,
                        "initializationExpression": {
                          "assignments": [
                            10330
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 10330,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "4055:1:42",
                              "nodeType": "VariableDeclaration",
                              "scope": 10403,
                              "src": "4047:9:42",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 10329,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4047:7:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 10332,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 10331,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4059:1:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4047:13:42"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 10338,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4081:3:42",
                            "subExpression": {
                              "id": 10337,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10330,
                              "src": "4081:1:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10339,
                          "nodeType": "ExpressionStatement",
                          "src": "4081:3:42"
                        },
                        "nodeType": "ForStatement",
                        "src": "4042:770:42"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10405,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10306,
                              "src": "4827:9:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10406,
                              "name": "toMint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10308,
                              "src": "4838:6:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10404,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12250,
                            "src": "4821:5:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 10407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4821:24:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10408,
                        "nodeType": "ExpressionStatement",
                        "src": "4821:24:42"
                      },
                      {
                        "expression": {
                          "id": 10411,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10409,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10303,
                            "src": "4855:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 10410,
                            "name": "toMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10308,
                            "src": "4867:6:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4855:18:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10412,
                        "nodeType": "ExpressionStatement",
                        "src": "4855:18:42"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10295,
                    "nodeType": "StructuredDocumentation",
                    "src": "3609:188:42",
                    "text": "@dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\n The router must ensure that sufficient LP tokens are minted by using the return value."
                  },
                  "functionSelector": "7ba0e2e7",
                  "id": 10414,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 10301,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 10300,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 10097,
                        "src": "3853:4:42"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3853:4:42"
                    }
                  ],
                  "name": "mint",
                  "nameLocation": "3811:4:42",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10299,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3844:8:42"
                  },
                  "parameters": {
                    "id": 10298,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10297,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3831:4:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10414,
                        "src": "3816:19:42",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10296,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3816:5:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3815:21:42"
                  },
                  "returnParameters": {
                    "id": 10304,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10303,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "3875:9:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10414,
                        "src": "3867:17:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10302,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3867:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3866:19:42"
                  },
                  "scope": 11592,
                  "src": "3802:1078:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2394
                  ],
                  "body": {
                    "id": 10545,
                    "nodeType": "Block",
                    "src": "5116:937:42",
                    "statements": [
                      {
                        "assignments": [
                          10428,
                          10430,
                          10432
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10428,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "5135:9:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10545,
                            "src": "5127:17:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 10427,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5127:7:42",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10430,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "5151:11:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10545,
                            "src": "5146:16:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 10429,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5146:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10432,
                            "mutability": "mutable",
                            "name": "toBurn",
                            "nameLocation": "5172:6:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10545,
                            "src": "5164:14:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10431,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5164:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10444,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 10435,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10417,
                              "src": "5193:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 10437,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5200:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 10436,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5200:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 10439,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5209:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 10438,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5209:4:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 10441,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5215:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 10440,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5215:7:42",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 10442,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5199:24:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(bool),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(bool),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 10433,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "5182:3:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 10434,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "5182:10:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 10443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5182:42:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(address payable,bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5126:98:42"
                      },
                      {
                        "assignments": [
                          10446
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10446,
                            "mutability": "mutable",
                            "name": "ratio",
                            "nameLocation": "5243:5:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10545,
                            "src": "5235:13:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10445,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5235:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10451,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 10448,
                              "name": "toBurn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10432,
                              "src": "5256:6:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10449,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11917,
                              "src": "5264:11:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10447,
                            "name": "_div",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11415,
                            "src": "5251:4:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 10450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5251:25:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5235:41:42"
                      },
                      {
                        "expression": {
                          "id": 10460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10452,
                            "name": "withdrawnAmounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10425,
                            "src": "5287:16:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 10457,
                                  "name": "tokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10070,
                                  "src": "5324:6:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                    "typeString": "address[] storage ref"
                                  }
                                },
                                "id": 10458,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "5324:13:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 10456,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "5306:17:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (struct IPool.TokenAmount memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 10454,
                                  "nodeType": "UserDefinedTypeName",
                                  "pathNode": {
                                    "id": 10453,
                                    "name": "TokenAmount",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2449,
                                    "src": "5310:11:42"
                                  },
                                  "referencedDeclaration": 2449,
                                  "src": "5310:11:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                                    "typeString": "struct IPool.TokenAmount"
                                  }
                                },
                                "id": 10455,
                                "nodeType": "ArrayTypeName",
                                "src": "5310:13:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                                  "typeString": "struct IPool.TokenAmount[]"
                                }
                              }
                            },
                            "id": 10459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5306:32:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory[] memory"
                            }
                          },
                          "src": "5287:51:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct IPool.TokenAmount memory[] memory"
                          }
                        },
                        "id": 10461,
                        "nodeType": "ExpressionStatement",
                        "src": "5287:51:42"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10465,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "5363:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IndexPool_$11592",
                                    "typeString": "contract IndexPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IndexPool_$11592",
                                    "typeString": "contract IndexPool"
                                  }
                                ],
                                "id": 10464,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5355:7:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10463,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5355:7:42",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10466,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5355:13:42",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10467,
                              "name": "toBurn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10432,
                              "src": "5370:6:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10462,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12278,
                            "src": "5349:5:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 10468,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5349:28:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10469,
                        "nodeType": "ExpressionStatement",
                        "src": "5349:28:42"
                      },
                      {
                        "body": {
                          "id": 10543,
                          "nodeType": "Block",
                          "src": "5432:615:42",
                          "statements": [
                            {
                              "assignments": [
                                10482
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 10482,
                                  "mutability": "mutable",
                                  "name": "tokenOut",
                                  "nameLocation": "5454:8:42",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 10543,
                                  "src": "5446:16:42",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 10481,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5446:7:42",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 10486,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 10483,
                                  "name": "tokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10070,
                                  "src": "5465:6:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                    "typeString": "address[] storage ref"
                                  }
                                },
                                "id": 10485,
                                "indexExpression": {
                                  "id": 10484,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10471,
                                  "src": "5472:1:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5465:9:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5446:28:42"
                            },
                            {
                              "assignments": [
                                10488
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 10488,
                                  "mutability": "mutable",
                                  "name": "balance",
                                  "nameLocation": "5496:7:42",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 10543,
                                  "src": "5488:15:42",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 10487,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5488:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 10493,
                              "initialValue": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 10489,
                                    "name": "records",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10102,
                                    "src": "5506:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$10107_storage_$",
                                      "typeString": "mapping(address => struct IndexPool.Record storage ref)"
                                    }
                                  },
                                  "id": 10491,
                                  "indexExpression": {
                                    "id": 10490,
                                    "name": "tokenOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10482,
                                    "src": "5514:8:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5506:17:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$10107_storage",
                                    "typeString": "struct IndexPool.Record storage ref"
                                  }
                                },
                                "id": 10492,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10104,
                                "src": "5506:25:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5488:43:42"
                            },
                            {
                              "assignments": [
                                10495
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 10495,
                                  "mutability": "mutable",
                                  "name": "amountOut",
                                  "nameLocation": "5553:9:42",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 10543,
                                  "src": "5545:17:42",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint120",
                                    "typeString": "uint120"
                                  },
                                  "typeName": {
                                    "id": 10494,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5545:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 10503,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 10499,
                                        "name": "ratio",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10446,
                                        "src": "5578:5:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 10500,
                                        "name": "balance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10488,
                                        "src": "5585:7:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 10498,
                                      "name": "_mul",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11384,
                                      "src": "5573:4:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 10501,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5573:20:42",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10497,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5565:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint120_$",
                                    "typeString": "type(uint120)"
                                  },
                                  "typeName": {
                                    "id": 10496,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5565:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 10502,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5565:29:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5545:49:42"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    },
                                    "id": 10507,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 10505,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10495,
                                      "src": "5616:9:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 10506,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5629:1:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "5616:14:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "5a45524f5f4f5554",
                                    "id": 10508,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5632:10:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_5cc85f4aca207e790130bbbe0f65d41050b113ebde71647d75b6406db2462409",
                                      "typeString": "literal_string \"ZERO_OUT\""
                                    },
                                    "value": "ZERO_OUT"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_5cc85f4aca207e790130bbbe0f65d41050b113ebde71647d75b6406db2462409",
                                      "typeString": "literal_string \"ZERO_OUT\""
                                    }
                                  ],
                                  "id": 10504,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "5608:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 10509,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5608:35:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10510,
                              "nodeType": "ExpressionStatement",
                              "src": "5608:35:42"
                            },
                            {
                              "id": 10518,
                              "nodeType": "UncheckedBlock",
                              "src": "5736:81:42",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 10516,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 10511,
                                          "name": "records",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10102,
                                          "src": "5764:7:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$10107_storage_$",
                                            "typeString": "mapping(address => struct IndexPool.Record storage ref)"
                                          }
                                        },
                                        "id": 10513,
                                        "indexExpression": {
                                          "id": 10512,
                                          "name": "tokenOut",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10482,
                                          "src": "5772:8:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "5764:17:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Record_$10107_storage",
                                          "typeString": "struct IndexPool.Record storage ref"
                                        }
                                      },
                                      "id": 10514,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "reserve",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 10104,
                                      "src": "5764:25:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "id": 10515,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10495,
                                      "src": "5793:9:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "src": "5764:38:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  "id": 10517,
                                  "nodeType": "ExpressionStatement",
                                  "src": "5764:38:42"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 10520,
                                    "name": "tokenOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10482,
                                    "src": "5840:8:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 10521,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10495,
                                    "src": "5850:9:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  {
                                    "id": 10522,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10428,
                                    "src": "5861:9:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 10523,
                                    "name": "unwrapBento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10430,
                                    "src": "5872:11:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 10519,
                                  "name": "_transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11456,
                                  "src": "5830:9:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,address,bool)"
                                  }
                                },
                                "id": 10524,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5830:54:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10525,
                              "nodeType": "ExpressionStatement",
                              "src": "5830:54:42"
                            },
                            {
                              "expression": {
                                "id": 10533,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 10526,
                                    "name": "withdrawnAmounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10425,
                                    "src": "5898:16:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct IPool.TokenAmount memory[] memory"
                                    }
                                  },
                                  "id": 10528,
                                  "indexExpression": {
                                    "id": 10527,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10471,
                                    "src": "5915:1:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "5898:19:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                    "typeString": "struct IPool.TokenAmount memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 10530,
                                      "name": "tokenOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10482,
                                      "src": "5940:8:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 10531,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10495,
                                      "src": "5958:9:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    ],
                                    "id": 10529,
                                    "name": "TokenAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2449,
                                    "src": "5920:11:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_TokenAmount_$2449_storage_ptr_$",
                                      "typeString": "type(struct IPool.TokenAmount storage pointer)"
                                    }
                                  },
                                  "id": 10532,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [
                                    "token",
                                    "amount"
                                  ],
                                  "nodeType": "FunctionCall",
                                  "src": "5920:49:42",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                    "typeString": "struct IPool.TokenAmount memory"
                                  }
                                },
                                "src": "5898:71:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                  "typeString": "struct IPool.TokenAmount memory"
                                }
                              },
                              "id": 10534,
                              "nodeType": "ExpressionStatement",
                              "src": "5898:71:42"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 10536,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "5993:3:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 10537,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "5993:10:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 10538,
                                    "name": "tokenOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10482,
                                    "src": "6005:8:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 10539,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10495,
                                    "src": "6015:9:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  {
                                    "id": 10540,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10428,
                                    "src": "6026:9:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 10535,
                                  "name": "Burn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9976,
                                  "src": "5988:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$__$",
                                    "typeString": "function (address,address,uint256,address)"
                                  }
                                },
                                "id": 10541,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5988:48:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 10542,
                              "nodeType": "EmitStatement",
                              "src": "5983:53:42"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 10477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 10474,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10471,
                            "src": "5408:1:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 10475,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10070,
                              "src": "5412:6:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 10476,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "5412:13:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5408:17:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 10544,
                        "initializationExpression": {
                          "assignments": [
                            10471
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 10471,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "5401:1:42",
                              "nodeType": "VariableDeclaration",
                              "scope": 10544,
                              "src": "5393:9:42",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 10470,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5393:7:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 10473,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 10472,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5405:1:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "5393:13:42"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 10479,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "5427:3:42",
                            "subExpression": {
                              "id": 10478,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10471,
                              "src": "5427:1:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 10480,
                          "nodeType": "ExpressionStatement",
                          "src": "5427:3:42"
                        },
                        "nodeType": "ForStatement",
                        "src": "5388:659:42"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10415,
                    "nodeType": "StructuredDocumentation",
                    "src": "4886:115:42",
                    "text": "@dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens."
                  },
                  "functionSelector": "2a07b6c7",
                  "id": 10546,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 10421,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 10420,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 10097,
                        "src": "5057:4:42"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5057:4:42"
                    }
                  ],
                  "name": "burn",
                  "nameLocation": "5015:4:42",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10419,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5048:8:42"
                  },
                  "parameters": {
                    "id": 10418,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10417,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5035:4:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10546,
                        "src": "5020:19:42",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10416,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5020:5:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5019:21:42"
                  },
                  "returnParameters": {
                    "id": 10426,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10425,
                        "mutability": "mutable",
                        "name": "withdrawnAmounts",
                        "nameLocation": "5098:16:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10546,
                        "src": "5071:43:42",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IPool.TokenAmount[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 10423,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 10422,
                              "name": "IPool.TokenAmount",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2449,
                              "src": "5071:17:42"
                            },
                            "referencedDeclaration": 2449,
                            "src": "5071:17:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                              "typeString": "struct IPool.TokenAmount"
                            }
                          },
                          "id": 10424,
                          "nodeType": "ArrayTypeName",
                          "src": "5071:19:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                            "typeString": "struct IPool.TokenAmount[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5070:45:42"
                  },
                  "scope": 11592,
                  "src": "5006:1047:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2402
                  ],
                  "body": {
                    "id": 10643,
                    "nodeType": "Block",
                    "src": "6318:739:42",
                    "statements": [
                      {
                        "assignments": [
                          10558,
                          10560,
                          10562,
                          10564
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10558,
                            "mutability": "mutable",
                            "name": "tokenOut",
                            "nameLocation": "6337:8:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10643,
                            "src": "6329:16:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 10557,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6329:7:42",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10560,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "6355:9:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10643,
                            "src": "6347:17:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 10559,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6347:7:42",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10562,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "6371:11:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10643,
                            "src": "6366:16:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 10561,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "6366:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10564,
                            "mutability": "mutable",
                            "name": "toBurn",
                            "nameLocation": "6392:6:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10643,
                            "src": "6384:14:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10563,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6384:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10578,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 10567,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10549,
                              "src": "6413:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 10569,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6420:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 10568,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6420:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 10571,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6429:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 10570,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6429:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 10573,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6438:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 10572,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6438:4:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 10575,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6444:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 10574,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6444:7:42",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 10576,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "6419:33:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 10565,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "6402:3:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 10566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "6402:10:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 10577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6402:51:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(address payable,address payable,bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6328:125:42"
                      },
                      {
                        "assignments": [
                          10581
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10581,
                            "mutability": "mutable",
                            "name": "outRecord",
                            "nameLocation": "6479:9:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10643,
                            "src": "6464:24:42",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                              "typeString": "struct IndexPool.Record"
                            },
                            "typeName": {
                              "id": 10580,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 10579,
                                "name": "Record",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 10107,
                                "src": "6464:6:42"
                              },
                              "referencedDeclaration": 10107,
                              "src": "6464:6:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                "typeString": "struct IndexPool.Record"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10585,
                        "initialValue": {
                          "baseExpression": {
                            "id": 10582,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10102,
                            "src": "6491:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$10107_storage_$",
                              "typeString": "mapping(address => struct IndexPool.Record storage ref)"
                            }
                          },
                          "id": 10584,
                          "indexExpression": {
                            "id": 10583,
                            "name": "tokenOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10558,
                            "src": "6499:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6491:17:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$10107_storage",
                            "typeString": "struct IndexPool.Record storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6464:44:42"
                      },
                      {
                        "expression": {
                          "id": 10597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10586,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10555,
                            "src": "6519:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 10588,
                                  "name": "outRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10581,
                                  "src": "6560:9:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                    "typeString": "struct IndexPool.Record storage pointer"
                                  }
                                },
                                "id": 10589,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10104,
                                "src": "6560:17:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              {
                                "expression": {
                                  "id": 10590,
                                  "name": "outRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10581,
                                  "src": "6579:9:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                    "typeString": "struct IndexPool.Record storage pointer"
                                  }
                                },
                                "id": 10591,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "weight",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10106,
                                "src": "6579:16:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              },
                              {
                                "id": 10592,
                                "name": "totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11917,
                                "src": "6597:11:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 10593,
                                "name": "totalWeight",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10067,
                                "src": "6610:11:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              },
                              {
                                "id": 10594,
                                "name": "toBurn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10564,
                                "src": "6623:6:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 10595,
                                "name": "swapFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9978,
                                "src": "6631:7:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                },
                                {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 10587,
                              "name": "_computeSingleOutGivenPoolIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11145,
                              "src": "6531:28:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 10596,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6531:108:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6519:120:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10598,
                        "nodeType": "ExpressionStatement",
                        "src": "6519:120:42"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10606,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 10600,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10555,
                                "src": "6658:9:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 10602,
                                      "name": "outRecord",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10581,
                                      "src": "6676:9:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                        "typeString": "struct IndexPool.Record storage pointer"
                                      }
                                    },
                                    "id": 10603,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "reserve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 10104,
                                    "src": "6676:17:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  {
                                    "id": 10604,
                                    "name": "MAX_OUT_RATIO",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10065,
                                    "src": "6695:13:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10601,
                                  "name": "_mul",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11384,
                                  "src": "6671:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 10605,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6671:38:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6658:51:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d41585f4f55545f524154494f",
                              "id": 10607,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6711:15:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4c5ad29f1d3e8bb498f3f1a2e1b9ae2d9e0aa620eec7213536f28c96e8c078d5",
                                "typeString": "literal_string \"MAX_OUT_RATIO\""
                              },
                              "value": "MAX_OUT_RATIO"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4c5ad29f1d3e8bb498f3f1a2e1b9ae2d9e0aa620eec7213536f28c96e8c078d5",
                                "typeString": "literal_string \"MAX_OUT_RATIO\""
                              }
                            ],
                            "id": 10599,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6650:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6650:77:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10609,
                        "nodeType": "ExpressionStatement",
                        "src": "6650:77:42"
                      },
                      {
                        "id": 10619,
                        "nodeType": "UncheckedBlock",
                        "src": "6812:74:42",
                        "statements": [
                          {
                            "expression": {
                              "id": 10617,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "expression": {
                                  "id": 10610,
                                  "name": "outRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10581,
                                  "src": "6836:9:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                    "typeString": "struct IndexPool.Record storage pointer"
                                  }
                                },
                                "id": 10612,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10104,
                                "src": "6836:17:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 10615,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10555,
                                    "src": "6865:9:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10614,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6857:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint120_$",
                                    "typeString": "type(uint120)"
                                  },
                                  "typeName": {
                                    "id": 10613,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6857:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 10616,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6857:18:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "src": "6836:39:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint120",
                                "typeString": "uint120"
                              }
                            },
                            "id": 10618,
                            "nodeType": "ExpressionStatement",
                            "src": "6836:39:42"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 10623,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "6909:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IndexPool_$11592",
                                    "typeString": "contract IndexPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IndexPool_$11592",
                                    "typeString": "contract IndexPool"
                                  }
                                ],
                                "id": 10622,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6901:7:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 10621,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6901:7:42",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 10624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6901:13:42",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10625,
                              "name": "toBurn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10564,
                              "src": "6916:6:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10620,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12278,
                            "src": "6895:5:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 10626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6895:28:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10627,
                        "nodeType": "ExpressionStatement",
                        "src": "6895:28:42"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10629,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10558,
                              "src": "6943:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10630,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10555,
                              "src": "6953:9:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10631,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10560,
                              "src": "6964:9:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10632,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10562,
                              "src": "6975:11:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 10628,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11456,
                            "src": "6933:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 10633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6933:54:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10634,
                        "nodeType": "ExpressionStatement",
                        "src": "6933:54:42"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 10636,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "7007:3:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 10637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "7007:10:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10638,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10558,
                              "src": "7019:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10639,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10555,
                              "src": "7029:9:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10640,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10560,
                              "src": "7040:9:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 10635,
                            "name": "Burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9976,
                            "src": "7002:4:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,address,uint256,address)"
                            }
                          },
                          "id": 10641,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7002:48:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10642,
                        "nodeType": "EmitStatement",
                        "src": "6997:53:42"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10547,
                    "nodeType": "StructuredDocumentation",
                    "src": "6059:164:42",
                    "text": "@dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\n - i.e., the user gets a single token out by burning LP tokens."
                  },
                  "functionSelector": "af8c09bf",
                  "id": 10644,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 10553,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 10552,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 10097,
                        "src": "6285:4:42"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6285:4:42"
                    }
                  ],
                  "name": "burnSingle",
                  "nameLocation": "6237:10:42",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10551,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6276:8:42"
                  },
                  "parameters": {
                    "id": 10550,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10549,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6263:4:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10644,
                        "src": "6248:19:42",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10548,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6248:5:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6247:21:42"
                  },
                  "returnParameters": {
                    "id": 10556,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10555,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "6307:9:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10644,
                        "src": "6299:17:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10554,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6299:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6298:19:42"
                  },
                  "scope": 11592,
                  "src": "6228:829:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2368
                  ],
                  "body": {
                    "id": 10766,
                    "nodeType": "Block",
                    "src": "7269:1029:42",
                    "statements": [
                      {
                        "assignments": [
                          10656,
                          10658,
                          10660,
                          10662,
                          10664
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10656,
                            "mutability": "mutable",
                            "name": "tokenIn",
                            "nameLocation": "7288:7:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10766,
                            "src": "7280:15:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 10655,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7280:7:42",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10658,
                            "mutability": "mutable",
                            "name": "tokenOut",
                            "nameLocation": "7305:8:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10766,
                            "src": "7297:16:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 10657,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7297:7:42",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10660,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "7323:9:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10766,
                            "src": "7315:17:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 10659,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7315:7:42",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10662,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "7339:11:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10766,
                            "src": "7334:16:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 10661,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "7334:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10664,
                            "mutability": "mutable",
                            "name": "amountIn",
                            "nameLocation": "7360:8:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10766,
                            "src": "7352:16:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10663,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7352:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10680,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 10667,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10647,
                              "src": "7396:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 10669,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7415:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 10668,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7415:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 10671,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7424:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 10670,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7424:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 10673,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7433:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 10672,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7433:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 10675,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7442:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 10674,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7442:4:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 10677,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7448:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 10676,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7448:7:42",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 10678,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7414:42:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(address),type(address),type(bool),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(address),type(address),type(bool),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 10665,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "7372:3:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 10666,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "7372:10:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 10679,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7372:94:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_address_payable_$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(address payable,address payable,address payable,bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7279:187:42"
                      },
                      {
                        "assignments": [
                          10683
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10683,
                            "mutability": "mutable",
                            "name": "inRecord",
                            "nameLocation": "7492:8:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10766,
                            "src": "7477:23:42",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                              "typeString": "struct IndexPool.Record"
                            },
                            "typeName": {
                              "id": 10682,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 10681,
                                "name": "Record",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 10107,
                                "src": "7477:6:42"
                              },
                              "referencedDeclaration": 10107,
                              "src": "7477:6:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                "typeString": "struct IndexPool.Record"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10687,
                        "initialValue": {
                          "baseExpression": {
                            "id": 10684,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10102,
                            "src": "7503:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$10107_storage_$",
                              "typeString": "mapping(address => struct IndexPool.Record storage ref)"
                            }
                          },
                          "id": 10686,
                          "indexExpression": {
                            "id": 10685,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10656,
                            "src": "7511:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7503:16:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$10107_storage",
                            "typeString": "struct IndexPool.Record storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7477:42:42"
                      },
                      {
                        "assignments": [
                          10690
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10690,
                            "mutability": "mutable",
                            "name": "outRecord",
                            "nameLocation": "7544:9:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10766,
                            "src": "7529:24:42",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                              "typeString": "struct IndexPool.Record"
                            },
                            "typeName": {
                              "id": 10689,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 10688,
                                "name": "Record",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 10107,
                                "src": "7529:6:42"
                              },
                              "referencedDeclaration": 10107,
                              "src": "7529:6:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                "typeString": "struct IndexPool.Record"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10694,
                        "initialValue": {
                          "baseExpression": {
                            "id": 10691,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10102,
                            "src": "7556:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$10107_storage_$",
                              "typeString": "mapping(address => struct IndexPool.Record storage ref)"
                            }
                          },
                          "id": 10693,
                          "indexExpression": {
                            "id": 10692,
                            "name": "tokenOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10658,
                            "src": "7564:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7556:17:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$10107_storage",
                            "typeString": "struct IndexPool.Record storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7529:44:42"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10702,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 10696,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10664,
                                "src": "7592:8:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 10698,
                                      "name": "inRecord",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10683,
                                      "src": "7609:8:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                        "typeString": "struct IndexPool.Record storage pointer"
                                      }
                                    },
                                    "id": 10699,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "reserve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 10104,
                                    "src": "7609:16:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  {
                                    "id": 10700,
                                    "name": "MAX_IN_RATIO",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10057,
                                    "src": "7627:12:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10697,
                                  "name": "_mul",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11384,
                                  "src": "7604:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 10701,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7604:36:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7592:48:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d41585f494e5f524154494f",
                              "id": 10703,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7642:14:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ae8acaa6a695c6235cafd131eee9e0f44d7addbb9b6373a0f80fba9ff8078b7f",
                                "typeString": "literal_string \"MAX_IN_RATIO\""
                              },
                              "value": "MAX_IN_RATIO"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ae8acaa6a695c6235cafd131eee9e0f44d7addbb9b6373a0f80fba9ff8078b7f",
                                "typeString": "literal_string \"MAX_IN_RATIO\""
                              }
                            ],
                            "id": 10695,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7584:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7584:73:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10705,
                        "nodeType": "ExpressionStatement",
                        "src": "7584:73:42"
                      },
                      {
                        "expression": {
                          "id": 10718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10706,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10653,
                            "src": "7668:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 10708,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10664,
                                "src": "7694:8:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 10709,
                                  "name": "inRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10683,
                                  "src": "7704:8:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                    "typeString": "struct IndexPool.Record storage pointer"
                                  }
                                },
                                "id": 10710,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10104,
                                "src": "7704:16:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              {
                                "expression": {
                                  "id": 10711,
                                  "name": "inRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10683,
                                  "src": "7722:8:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                    "typeString": "struct IndexPool.Record storage pointer"
                                  }
                                },
                                "id": 10712,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "weight",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10106,
                                "src": "7722:15:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              },
                              {
                                "expression": {
                                  "id": 10713,
                                  "name": "outRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10690,
                                  "src": "7739:9:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                    "typeString": "struct IndexPool.Record storage pointer"
                                  }
                                },
                                "id": 10714,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10104,
                                "src": "7739:17:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              {
                                "expression": {
                                  "id": 10715,
                                  "name": "outRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10690,
                                  "src": "7758:9:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                    "typeString": "struct IndexPool.Record storage pointer"
                                  }
                                },
                                "id": 10716,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "weight",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10106,
                                "src": "7758:16:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                },
                                {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                },
                                {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                },
                                {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              ],
                              "id": 10707,
                              "name": "_getAmountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10997,
                              "src": "7680:13:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256,uint256,uint256) view returns (uint256)"
                              }
                            },
                            "id": 10717,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7680:95:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7668:107:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10719,
                        "nodeType": "ExpressionStatement",
                        "src": "7668:107:42"
                      },
                      {
                        "id": 10750,
                        "nodeType": "UncheckedBlock",
                        "src": "7862:296:42",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10728,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "id": 10722,
                                        "name": "tokenIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10656,
                                        "src": "7987:7:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 10721,
                                      "name": "_balance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10934,
                                      "src": "7978:8:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address) view returns (uint256)"
                                      }
                                    },
                                    "id": 10723,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7978:17:42",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 10727,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 10724,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10664,
                                      "src": "7999:8:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 10725,
                                        "name": "inRecord",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10683,
                                        "src": "8010:8:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                          "typeString": "struct IndexPool.Record storage pointer"
                                        }
                                      },
                                      "id": 10726,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "reserve",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 10104,
                                      "src": "8010:16:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "src": "7999:27:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7978:48:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "hexValue": "4e4f545f5245434549564544",
                                  "id": 10729,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8028:14:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5bc54dac1e6c6942ca387ee7fa5b266c08fd485e140ffd0f93cb3919d20c5523",
                                    "typeString": "literal_string \"NOT_RECEIVED\""
                                  },
                                  "value": "NOT_RECEIVED"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_5bc54dac1e6c6942ca387ee7fa5b266c08fd485e140ffd0f93cb3919d20c5523",
                                    "typeString": "literal_string \"NOT_RECEIVED\""
                                  }
                                ],
                                "id": 10720,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "7970:7:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 10730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7970:73:42",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 10731,
                            "nodeType": "ExpressionStatement",
                            "src": "7970:73:42"
                          },
                          {
                            "expression": {
                              "id": 10739,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "expression": {
                                  "id": 10732,
                                  "name": "inRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10683,
                                  "src": "8057:8:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                    "typeString": "struct IndexPool.Record storage pointer"
                                  }
                                },
                                "id": 10734,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10104,
                                "src": "8057:16:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 10737,
                                    "name": "amountIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10664,
                                    "src": "8085:8:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10736,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8077:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint120_$",
                                    "typeString": "type(uint120)"
                                  },
                                  "typeName": {
                                    "id": 10735,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8077:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 10738,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8077:17:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "src": "8057:37:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint120",
                                "typeString": "uint120"
                              }
                            },
                            "id": 10740,
                            "nodeType": "ExpressionStatement",
                            "src": "8057:37:42"
                          },
                          {
                            "expression": {
                              "id": 10748,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "expression": {
                                  "id": 10741,
                                  "name": "outRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10690,
                                  "src": "8108:9:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                    "typeString": "struct IndexPool.Record storage pointer"
                                  }
                                },
                                "id": 10743,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10104,
                                "src": "8108:17:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 10746,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10653,
                                    "src": "8137:9:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10745,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8129:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint120_$",
                                    "typeString": "type(uint120)"
                                  },
                                  "typeName": {
                                    "id": 10744,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8129:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 10747,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8129:18:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "src": "8108:39:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint120",
                                "typeString": "uint120"
                              }
                            },
                            "id": 10749,
                            "nodeType": "ExpressionStatement",
                            "src": "8108:39:42"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10752,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10658,
                              "src": "8177:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10753,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10653,
                              "src": "8187:9:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10754,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10660,
                              "src": "8198:9:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10755,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10662,
                              "src": "8209:11:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 10751,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11456,
                            "src": "8167:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 10756,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8167:54:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10757,
                        "nodeType": "ExpressionStatement",
                        "src": "8167:54:42"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 10759,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10660,
                              "src": "8241:9:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10760,
                              "name": "tokenIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10656,
                              "src": "8252:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10761,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10658,
                              "src": "8261:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10762,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10664,
                              "src": "8271:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10763,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10653,
                              "src": "8281:9:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10758,
                            "name": "Swap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2444,
                            "src": "8236:4:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 10764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8236:55:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10765,
                        "nodeType": "EmitStatement",
                        "src": "8231:60:42"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10645,
                    "nodeType": "StructuredDocumentation",
                    "src": "7063:117:42",
                    "text": "@dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage."
                  },
                  "functionSelector": "627dd56a",
                  "id": 10767,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 10651,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 10650,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 10097,
                        "src": "7236:4:42"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7236:4:42"
                    }
                  ],
                  "name": "swap",
                  "nameLocation": "7194:4:42",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10649,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7227:8:42"
                  },
                  "parameters": {
                    "id": 10648,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10647,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "7214:4:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10767,
                        "src": "7199:19:42",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10646,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7199:5:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7198:21:42"
                  },
                  "returnParameters": {
                    "id": 10654,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10653,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "7258:9:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10767,
                        "src": "7250:17:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10652,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7250:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7249:19:42"
                  },
                  "scope": 11592,
                  "src": "7185:1113:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2376
                  ],
                  "body": {
                    "id": 10901,
                    "nodeType": "Block",
                    "src": "8516:1124:42",
                    "statements": [
                      {
                        "assignments": [
                          10779,
                          10781,
                          10783,
                          10785,
                          10787,
                          10789
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10779,
                            "mutability": "mutable",
                            "name": "tokenIn",
                            "nameLocation": "8535:7:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10901,
                            "src": "8527:15:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 10778,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8527:7:42",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10781,
                            "mutability": "mutable",
                            "name": "tokenOut",
                            "nameLocation": "8552:8:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10901,
                            "src": "8544:16:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 10780,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8544:7:42",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10783,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "8570:9:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10901,
                            "src": "8562:17:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 10782,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8562:7:42",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10785,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "8586:11:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10901,
                            "src": "8581:16:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 10784,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "8581:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10787,
                            "mutability": "mutable",
                            "name": "amountIn",
                            "nameLocation": "8607:8:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10901,
                            "src": "8599:16:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10786,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8599:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 10789,
                            "mutability": "mutable",
                            "name": "context",
                            "nameLocation": "8630:7:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10901,
                            "src": "8617:20:42",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 10788,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "8617:5:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10807,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 10792,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10770,
                              "src": "8665:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 10794,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8684:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 10793,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8684:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 10796,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8693:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 10795,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8693:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 10798,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8702:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 10797,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8702:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 10800,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8711:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 10799,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8711:4:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 10802,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8717:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 10801,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8717:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 10804,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8726:5:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 10803,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8726:5:42",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 10805,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "8683:49:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                "typeString": "tuple(type(address),type(address),type(address),type(bool),type(uint256),type(bytes storage pointer))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                "typeString": "tuple(type(address),type(address),type(address),type(bool),type(uint256),type(bytes storage pointer))"
                              }
                            ],
                            "expression": {
                              "id": 10790,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "8641:3:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 10791,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "8641:10:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 10806,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8641:101:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_address_payable_$_t_bool_$_t_uint256_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(address payable,address payable,address payable,bool,uint256,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8526:216:42"
                      },
                      {
                        "assignments": [
                          10810
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10810,
                            "mutability": "mutable",
                            "name": "inRecord",
                            "nameLocation": "8768:8:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10901,
                            "src": "8753:23:42",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                              "typeString": "struct IndexPool.Record"
                            },
                            "typeName": {
                              "id": 10809,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 10808,
                                "name": "Record",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 10107,
                                "src": "8753:6:42"
                              },
                              "referencedDeclaration": 10107,
                              "src": "8753:6:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                "typeString": "struct IndexPool.Record"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10814,
                        "initialValue": {
                          "baseExpression": {
                            "id": 10811,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10102,
                            "src": "8779:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$10107_storage_$",
                              "typeString": "mapping(address => struct IndexPool.Record storage ref)"
                            }
                          },
                          "id": 10813,
                          "indexExpression": {
                            "id": 10812,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10779,
                            "src": "8787:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8779:16:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$10107_storage",
                            "typeString": "struct IndexPool.Record storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8753:42:42"
                      },
                      {
                        "assignments": [
                          10817
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10817,
                            "mutability": "mutable",
                            "name": "outRecord",
                            "nameLocation": "8820:9:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10901,
                            "src": "8805:24:42",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                              "typeString": "struct IndexPool.Record"
                            },
                            "typeName": {
                              "id": 10816,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 10815,
                                "name": "Record",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 10107,
                                "src": "8805:6:42"
                              },
                              "referencedDeclaration": 10107,
                              "src": "8805:6:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                "typeString": "struct IndexPool.Record"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10821,
                        "initialValue": {
                          "baseExpression": {
                            "id": 10818,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10102,
                            "src": "8832:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$10107_storage_$",
                              "typeString": "mapping(address => struct IndexPool.Record storage ref)"
                            }
                          },
                          "id": 10820,
                          "indexExpression": {
                            "id": 10819,
                            "name": "tokenOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10781,
                            "src": "8840:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8832:17:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$10107_storage",
                            "typeString": "struct IndexPool.Record storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8805:44:42"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10829,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 10823,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10787,
                                "src": "8868:8:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 10825,
                                      "name": "inRecord",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10810,
                                      "src": "8885:8:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                        "typeString": "struct IndexPool.Record storage pointer"
                                      }
                                    },
                                    "id": 10826,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "reserve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 10104,
                                    "src": "8885:16:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  {
                                    "id": 10827,
                                    "name": "MAX_IN_RATIO",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10057,
                                    "src": "8903:12:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10824,
                                  "name": "_mul",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11384,
                                  "src": "8880:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 10828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8880:36:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8868:48:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d41585f494e5f524154494f",
                              "id": 10830,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8918:14:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ae8acaa6a695c6235cafd131eee9e0f44d7addbb9b6373a0f80fba9ff8078b7f",
                                "typeString": "literal_string \"MAX_IN_RATIO\""
                              },
                              "value": "MAX_IN_RATIO"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ae8acaa6a695c6235cafd131eee9e0f44d7addbb9b6373a0f80fba9ff8078b7f",
                                "typeString": "literal_string \"MAX_IN_RATIO\""
                              }
                            ],
                            "id": 10822,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8860:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 10831,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8860:73:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10832,
                        "nodeType": "ExpressionStatement",
                        "src": "8860:73:42"
                      },
                      {
                        "expression": {
                          "id": 10845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10833,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10776,
                            "src": "8944:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 10835,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10787,
                                "src": "8970:8:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 10836,
                                  "name": "inRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10810,
                                  "src": "8980:8:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                    "typeString": "struct IndexPool.Record storage pointer"
                                  }
                                },
                                "id": 10837,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10104,
                                "src": "8980:16:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              {
                                "expression": {
                                  "id": 10838,
                                  "name": "inRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10810,
                                  "src": "8998:8:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                    "typeString": "struct IndexPool.Record storage pointer"
                                  }
                                },
                                "id": 10839,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "weight",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10106,
                                "src": "8998:15:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              },
                              {
                                "expression": {
                                  "id": 10840,
                                  "name": "outRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10817,
                                  "src": "9015:9:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                    "typeString": "struct IndexPool.Record storage pointer"
                                  }
                                },
                                "id": 10841,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10104,
                                "src": "9015:17:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              {
                                "expression": {
                                  "id": 10842,
                                  "name": "outRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10817,
                                  "src": "9034:9:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                    "typeString": "struct IndexPool.Record storage pointer"
                                  }
                                },
                                "id": 10843,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "weight",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10106,
                                "src": "9034:16:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                },
                                {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                },
                                {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                },
                                {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              ],
                              "id": 10834,
                              "name": "_getAmountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10997,
                              "src": "8956:13:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256,uint256,uint256) view returns (uint256)"
                              }
                            },
                            "id": 10844,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8956:95:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8944:107:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10846,
                        "nodeType": "ExpressionStatement",
                        "src": "8944:107:42"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10852,
                              "name": "context",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10789,
                              "src": "9109:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 10848,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "9077:3:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 10849,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "9077:10:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 10847,
                                "name": "ITridentCallee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2482,
                                "src": "9062:14:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ITridentCallee_$2482_$",
                                  "typeString": "type(contract ITridentCallee)"
                                }
                              },
                              "id": 10850,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9062:26:42",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ITridentCallee_$2482",
                                "typeString": "contract ITridentCallee"
                              }
                            },
                            "id": 10851,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tridentSwapCallback",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2476,
                            "src": "9062:46:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) external"
                            }
                          },
                          "id": 10853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9062:55:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10854,
                        "nodeType": "ExpressionStatement",
                        "src": "9062:55:42"
                      },
                      {
                        "id": 10885,
                        "nodeType": "UncheckedBlock",
                        "src": "9204:296:42",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10863,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "id": 10857,
                                        "name": "tokenIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10779,
                                        "src": "9329:7:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 10856,
                                      "name": "_balance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10934,
                                      "src": "9320:8:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address) view returns (uint256)"
                                      }
                                    },
                                    "id": 10858,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9320:17:42",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 10862,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 10859,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 10787,
                                      "src": "9341:8:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 10860,
                                        "name": "inRecord",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 10810,
                                        "src": "9352:8:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                          "typeString": "struct IndexPool.Record storage pointer"
                                        }
                                      },
                                      "id": 10861,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "reserve",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 10104,
                                      "src": "9352:16:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "src": "9341:27:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "9320:48:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "hexValue": "4e4f545f5245434549564544",
                                  "id": 10864,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9370:14:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5bc54dac1e6c6942ca387ee7fa5b266c08fd485e140ffd0f93cb3919d20c5523",
                                    "typeString": "literal_string \"NOT_RECEIVED\""
                                  },
                                  "value": "NOT_RECEIVED"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_5bc54dac1e6c6942ca387ee7fa5b266c08fd485e140ffd0f93cb3919d20c5523",
                                    "typeString": "literal_string \"NOT_RECEIVED\""
                                  }
                                ],
                                "id": 10855,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "9312:7:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 10865,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9312:73:42",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 10866,
                            "nodeType": "ExpressionStatement",
                            "src": "9312:73:42"
                          },
                          {
                            "expression": {
                              "id": 10874,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "expression": {
                                  "id": 10867,
                                  "name": "inRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10810,
                                  "src": "9399:8:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                    "typeString": "struct IndexPool.Record storage pointer"
                                  }
                                },
                                "id": 10869,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10104,
                                "src": "9399:16:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 10872,
                                    "name": "amountIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10787,
                                    "src": "9427:8:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10871,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9419:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint120_$",
                                    "typeString": "type(uint120)"
                                  },
                                  "typeName": {
                                    "id": 10870,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9419:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 10873,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9419:17:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "src": "9399:37:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint120",
                                "typeString": "uint120"
                              }
                            },
                            "id": 10875,
                            "nodeType": "ExpressionStatement",
                            "src": "9399:37:42"
                          },
                          {
                            "expression": {
                              "id": 10883,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "expression": {
                                  "id": 10876,
                                  "name": "outRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10817,
                                  "src": "9450:9:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$10107_storage_ptr",
                                    "typeString": "struct IndexPool.Record storage pointer"
                                  }
                                },
                                "id": 10878,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 10104,
                                "src": "9450:17:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 10881,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10776,
                                    "src": "9479:9:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10880,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9471:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint120_$",
                                    "typeString": "type(uint120)"
                                  },
                                  "typeName": {
                                    "id": 10879,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9471:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 10882,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9471:18:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "src": "9450:39:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint120",
                                "typeString": "uint120"
                              }
                            },
                            "id": 10884,
                            "nodeType": "ExpressionStatement",
                            "src": "9450:39:42"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 10887,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10781,
                              "src": "9519:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10888,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10776,
                              "src": "9529:9:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10889,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10783,
                              "src": "9540:9:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10890,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10785,
                              "src": "9551:11:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 10886,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11456,
                            "src": "9509:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 10891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9509:54:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10892,
                        "nodeType": "ExpressionStatement",
                        "src": "9509:54:42"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 10894,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10783,
                              "src": "9583:9:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10895,
                              "name": "tokenIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10779,
                              "src": "9594:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10896,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10781,
                              "src": "9603:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 10897,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10787,
                              "src": "9613:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10898,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10776,
                              "src": "9623:9:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10893,
                            "name": "Swap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2444,
                            "src": "9578:4:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 10899,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9578:55:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 10900,
                        "nodeType": "EmitStatement",
                        "src": "9573:60:42"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10768,
                    "nodeType": "StructuredDocumentation",
                    "src": "8304:118:42",
                    "text": "@dev Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage."
                  },
                  "functionSelector": "053da1c8",
                  "id": 10902,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 10774,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 10773,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 10097,
                        "src": "8483:4:42"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8483:4:42"
                    }
                  ],
                  "name": "flashSwap",
                  "nameLocation": "8436:9:42",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 10772,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8474:8:42"
                  },
                  "parameters": {
                    "id": 10771,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10770,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "8461:4:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10902,
                        "src": "8446:19:42",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 10769,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8446:5:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8445:21:42"
                  },
                  "returnParameters": {
                    "id": 10777,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10776,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "8505:9:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10902,
                        "src": "8497:17:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10775,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8497:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8496:19:42"
                  },
                  "scope": 11592,
                  "src": "8427:1213:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10914,
                    "nodeType": "Block",
                    "src": "9729:66:42",
                    "statements": [
                      {
                        "expression": {
                          "id": 10912,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10906,
                            "name": "barFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10072,
                            "src": "9739:6:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 10908,
                                    "name": "masterDeployer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9986,
                                    "src": "9764:14:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                      "typeString": "contract IMasterDeployer"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                      "typeString": "contract IMasterDeployer"
                                    }
                                  ],
                                  "id": 10907,
                                  "name": "IMasterDeployer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2356,
                                  "src": "9748:15:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                    "typeString": "type(contract IMasterDeployer)"
                                  }
                                },
                                "id": 10909,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9748:31:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                  "typeString": "contract IMasterDeployer"
                                }
                              },
                              "id": 10910,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "barFee",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2324,
                              "src": "9748:38:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 10911,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9748:40:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9739:49:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10913,
                        "nodeType": "ExpressionStatement",
                        "src": "9739:49:42"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 10903,
                    "nodeType": "StructuredDocumentation",
                    "src": "9646:47:42",
                    "text": "@dev Updates `barFee` for Trident protocol."
                  },
                  "functionSelector": "92bc3219",
                  "id": 10915,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updateBarFee",
                  "nameLocation": "9707:12:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10904,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9719:2:42"
                  },
                  "returnParameters": {
                    "id": 10905,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9729:0:42"
                  },
                  "scope": 11592,
                  "src": "9698:97:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 10933,
                    "nodeType": "Block",
                    "src": "9874:64:42",
                    "statements": [
                      {
                        "expression": {
                          "id": 10931,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 10922,
                            "name": "balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10920,
                            "src": "9884:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 10925,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10917,
                                "src": "9910:5:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 10928,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "9925:4:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IndexPool_$11592",
                                      "typeString": "contract IndexPool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IndexPool_$11592",
                                      "typeString": "contract IndexPool"
                                    }
                                  ],
                                  "id": 10927,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9917:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 10926,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9917:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 10929,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9917:13:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 10923,
                                "name": "bento",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9983,
                                "src": "9894:5:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                  "typeString": "contract IBentoBoxMinimal"
                                }
                              },
                              "id": 10924,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2151,
                              "src": "9894:15:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address,address) view external returns (uint256)"
                              }
                            },
                            "id": 10930,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9894:37:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9884:47:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 10932,
                        "nodeType": "ExpressionStatement",
                        "src": "9884:47:42"
                      }
                    ]
                  },
                  "id": 10934,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_balance",
                  "nameLocation": "9810:8:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10918,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10917,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "9827:5:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10934,
                        "src": "9819:13:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 10916,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9819:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9818:15:42"
                  },
                  "returnParameters": {
                    "id": 10921,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10920,
                        "mutability": "mutable",
                        "name": "balance",
                        "nameLocation": "9865:7:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10934,
                        "src": "9857:15:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10919,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9857:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9856:17:42"
                  },
                  "scope": 11592,
                  "src": "9801:137:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 10996,
                    "nodeType": "Block",
                    "src": "10174:465:42",
                    "statements": [
                      {
                        "assignments": [
                          10950
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 10950,
                            "mutability": "mutable",
                            "name": "weightRatio",
                            "nameLocation": "10192:11:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 10996,
                            "src": "10184:19:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 10949,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10184:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 10955,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 10952,
                              "name": "tokenInWeight",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10940,
                              "src": "10211:13:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 10953,
                              "name": "tokenOutWeight",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10944,
                              "src": "10226:14:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 10951,
                            "name": "_div",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11415,
                            "src": "10206:4:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 10954,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10206:35:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10184:57:42"
                      },
                      {
                        "id": 10995,
                        "nodeType": "UncheckedBlock",
                        "src": "10331:302:42",
                        "statements": [
                          {
                            "assignments": [
                              10957
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 10957,
                                "mutability": "mutable",
                                "name": "adjustedIn",
                                "nameLocation": "10363:10:42",
                                "nodeType": "VariableDeclaration",
                                "scope": 10995,
                                "src": "10355:18:42",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 10956,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10355:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 10965,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 10959,
                                  "name": "tokenInAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10936,
                                  "src": "10381:13:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 10962,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 10960,
                                        "name": "BASE",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9991,
                                        "src": "10397:4:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 10961,
                                        "name": "swapFee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9978,
                                        "src": "10404:7:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "10397:14:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 10963,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "10396:16:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 10958,
                                "name": "_mul",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11384,
                                "src": "10376:4:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 10964,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10376:37:42",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "10355:58:42"
                          },
                          {
                            "assignments": [
                              10967
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 10967,
                                "mutability": "mutable",
                                "name": "a",
                                "nameLocation": "10435:1:42",
                                "nodeType": "VariableDeclaration",
                                "scope": 10995,
                                "src": "10427:9:42",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 10966,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10427:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 10974,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 10969,
                                  "name": "tokenInBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10938,
                                  "src": "10444:14:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 10972,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 10970,
                                    "name": "tokenInBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10938,
                                    "src": "10460:14:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "id": 10971,
                                    "name": "adjustedIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10957,
                                    "src": "10477:10:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10460:27:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 10968,
                                "name": "_div",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11415,
                                "src": "10439:4:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 10973,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10439:49:42",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "10427:61:42"
                          },
                          {
                            "assignments": [
                              10976
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 10976,
                                "mutability": "mutable",
                                "name": "b",
                                "nameLocation": "10510:1:42",
                                "nodeType": "VariableDeclaration",
                                "scope": 10995,
                                "src": "10502:9:42",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 10975,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10502:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 10981,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 10978,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10967,
                                  "src": "10523:1:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 10979,
                                  "name": "weightRatio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10950,
                                  "src": "10526:11:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 10977,
                                "name": "_compute",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11065,
                                "src": "10514:8:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 10980,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10514:24:42",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "10502:36:42"
                          },
                          {
                            "assignments": [
                              10983
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 10983,
                                "mutability": "mutable",
                                "name": "c",
                                "nameLocation": "10560:1:42",
                                "nodeType": "VariableDeclaration",
                                "scope": 10995,
                                "src": "10552:9:42",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 10982,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10552:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 10987,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 10986,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 10984,
                                "name": "BASE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9991,
                                "src": "10564:4:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "id": 10985,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10976,
                                "src": "10571:1:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10564:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "10552:20:42"
                          },
                          {
                            "expression": {
                              "id": 10993,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 10988,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10947,
                                "src": "10586:9:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 10990,
                                    "name": "tokenOutBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10942,
                                    "src": "10603:15:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 10991,
                                    "name": "c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 10983,
                                    "src": "10620:1:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 10989,
                                  "name": "_mul",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11384,
                                  "src": "10598:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 10992,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10598:24:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10586:36:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 10994,
                            "nodeType": "ExpressionStatement",
                            "src": "10586:36:42"
                          }
                        ]
                      }
                    ]
                  },
                  "id": 10997,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getAmountOut",
                  "nameLocation": "9953:13:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 10945,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10936,
                        "mutability": "mutable",
                        "name": "tokenInAmount",
                        "nameLocation": "9984:13:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10997,
                        "src": "9976:21:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10935,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9976:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10938,
                        "mutability": "mutable",
                        "name": "tokenInBalance",
                        "nameLocation": "10015:14:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10997,
                        "src": "10007:22:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10937,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10007:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10940,
                        "mutability": "mutable",
                        "name": "tokenInWeight",
                        "nameLocation": "10047:13:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10997,
                        "src": "10039:21:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10939,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10039:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10942,
                        "mutability": "mutable",
                        "name": "tokenOutBalance",
                        "nameLocation": "10078:15:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10997,
                        "src": "10070:23:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10941,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10070:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 10944,
                        "mutability": "mutable",
                        "name": "tokenOutWeight",
                        "nameLocation": "10111:14:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10997,
                        "src": "10103:22:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10943,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10103:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9966:165:42"
                  },
                  "returnParameters": {
                    "id": 10948,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10947,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "10163:9:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 10997,
                        "src": "10155:17:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10946,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10155:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10154:19:42"
                  },
                  "scope": 11592,
                  "src": "9944:695:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11064,
                    "nodeType": "Block",
                    "src": "10729:390:42",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 11013,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11009,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11007,
                                  "name": "MIN_POW_BASE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10037,
                                  "src": "10747:12:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "id": 11008,
                                  "name": "base",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10999,
                                  "src": "10763:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10747:20:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11012,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11010,
                                  "name": "base",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10999,
                                  "src": "10771:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "id": 11011,
                                  "name": "MAX_POW_BASE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 10045,
                                  "src": "10779:12:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10771:20:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "10747:44:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f42415345",
                              "id": 11014,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10793:14:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4277c8319fd149a95e69be42a3e123adc1b4da419a70e9b9baf1b89820d48e58",
                                "typeString": "literal_string \"INVALID_BASE\""
                              },
                              "value": "INVALID_BASE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4277c8319fd149a95e69be42a3e123adc1b4da419a70e9b9baf1b89820d48e58",
                                "typeString": "literal_string \"INVALID_BASE\""
                              }
                            ],
                            "id": 11006,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10739:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 11015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10739:69:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11016,
                        "nodeType": "ExpressionStatement",
                        "src": "10739:69:42"
                      },
                      {
                        "assignments": [
                          11018
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11018,
                            "mutability": "mutable",
                            "name": "whole",
                            "nameLocation": "10827:5:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11064,
                            "src": "10819:13:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11017,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10819:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11025,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11021,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11019,
                                  "name": "exp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11001,
                                  "src": "10836:3:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 11020,
                                  "name": "BASE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9991,
                                  "src": "10842:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10836:10:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 11022,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "10835:12:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 11023,
                            "name": "BASE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9991,
                            "src": "10850:4:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10835:19:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10819:35:42"
                      },
                      {
                        "assignments": [
                          11027
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11027,
                            "mutability": "mutable",
                            "name": "remain",
                            "nameLocation": "10872:6:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11064,
                            "src": "10864:14:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11026,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10864:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11031,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11028,
                            "name": "exp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11001,
                            "src": "10881:3:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 11029,
                            "name": "whole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11018,
                            "src": "10887:5:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10881:11:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10864:28:42"
                      },
                      {
                        "assignments": [
                          11033
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11033,
                            "mutability": "mutable",
                            "name": "wholePow",
                            "nameLocation": "10910:8:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11064,
                            "src": "10902:16:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11032,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10902:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11040,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11035,
                              "name": "base",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10999,
                              "src": "10926:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11038,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11036,
                                "name": "whole",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11018,
                                "src": "10932:5:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "id": 11037,
                                "name": "BASE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9991,
                                "src": "10940:4:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10932:12:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11034,
                            "name": "_pow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11196,
                            "src": "10921:4:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 11039,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10921:24:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10902:43:42"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11041,
                            "name": "remain",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11027,
                            "src": "10960:6:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 11042,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10970:1:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "10960:11:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11048,
                        "nodeType": "IfStatement",
                        "src": "10956:34:42",
                        "trueBody": {
                          "expression": {
                            "id": 11046,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 11044,
                              "name": "output",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11004,
                              "src": "10973:6:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "id": 11045,
                              "name": "wholePow",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11033,
                              "src": "10982:8:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "10973:17:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11047,
                          "nodeType": "ExpressionStatement",
                          "src": "10973:17:42"
                        }
                      },
                      {
                        "assignments": [
                          11050
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11050,
                            "mutability": "mutable",
                            "name": "partialResult",
                            "nameLocation": "11009:13:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11064,
                            "src": "11001:21:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11049,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11001:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11056,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11052,
                              "name": "base",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10999,
                              "src": "11036:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 11053,
                              "name": "remain",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11027,
                              "src": "11042:6:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 11054,
                              "name": "POW_PRECISION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10052,
                              "src": "11050:13:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11051,
                            "name": "_powApprox",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11314,
                            "src": "11025:10:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 11055,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11025:39:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11001:63:42"
                      },
                      {
                        "expression": {
                          "id": 11062,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11057,
                            "name": "output",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11004,
                            "src": "11074:6:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 11059,
                                "name": "wholePow",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11033,
                                "src": "11088:8:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 11060,
                                "name": "partialResult",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11050,
                                "src": "11098:13:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 11058,
                              "name": "_mul",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11384,
                              "src": "11083:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 11061,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11083:29:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11074:38:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11063,
                        "nodeType": "ExpressionStatement",
                        "src": "11074:38:42"
                      }
                    ]
                  },
                  "id": 11065,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_compute",
                  "nameLocation": "10654:8:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11002,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 10999,
                        "mutability": "mutable",
                        "name": "base",
                        "nameLocation": "10671:4:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11065,
                        "src": "10663:12:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 10998,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10663:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11001,
                        "mutability": "mutable",
                        "name": "exp",
                        "nameLocation": "10685:3:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11065,
                        "src": "10677:11:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11000,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10677:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10662:27:42"
                  },
                  "returnParameters": {
                    "id": 11005,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11004,
                        "mutability": "mutable",
                        "name": "output",
                        "nameLocation": "10721:6:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11065,
                        "src": "10713:14:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11003,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10713:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10712:16:42"
                  },
                  "scope": 11592,
                  "src": "10645:474:42",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11144,
                    "nodeType": "Block",
                    "src": "11386:553:42",
                    "statements": [
                      {
                        "assignments": [
                          11083
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11083,
                            "mutability": "mutable",
                            "name": "normalizedWeight",
                            "nameLocation": "11404:16:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11144,
                            "src": "11396:24:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11082,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11396:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11088,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11085,
                              "name": "tokenOutWeight",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11069,
                              "src": "11428:14:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 11086,
                              "name": "_totalWeight",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11073,
                              "src": "11444:12:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11084,
                            "name": "_div",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11415,
                            "src": "11423:4:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 11087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11423:34:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11396:61:42"
                      },
                      {
                        "assignments": [
                          11090
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11090,
                            "mutability": "mutable",
                            "name": "newPoolSupply",
                            "nameLocation": "11475:13:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11144,
                            "src": "11467:21:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11089,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11467:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11094,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11093,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11091,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11071,
                            "src": "11491:12:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 11092,
                            "name": "toBurn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11075,
                            "src": "11506:6:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11491:21:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11467:45:42"
                      },
                      {
                        "assignments": [
                          11096
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11096,
                            "mutability": "mutable",
                            "name": "poolRatio",
                            "nameLocation": "11530:9:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11144,
                            "src": "11522:17:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11095,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11522:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11101,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11098,
                              "name": "newPoolSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11090,
                              "src": "11547:13:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 11099,
                              "name": "_totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11071,
                              "src": "11562:12:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11097,
                            "name": "_div",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11415,
                            "src": "11542:4:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 11100,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11542:33:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11522:53:42"
                      },
                      {
                        "assignments": [
                          11103
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11103,
                            "mutability": "mutable",
                            "name": "tokenOutRatio",
                            "nameLocation": "11593:13:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11144,
                            "src": "11585:21:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11102,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11585:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11111,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11105,
                              "name": "poolRatio",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11096,
                              "src": "11614:9:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 11107,
                                  "name": "BASE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9991,
                                  "src": "11630:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 11108,
                                  "name": "normalizedWeight",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11083,
                                  "src": "11636:16:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 11106,
                                "name": "_div",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11415,
                                "src": "11625:4:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 11109,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11625:28:42",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11104,
                            "name": "_pow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11196,
                            "src": "11609:4:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 11110,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11609:45:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11585:69:42"
                      },
                      {
                        "assignments": [
                          11113
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11113,
                            "mutability": "mutable",
                            "name": "newBalanceOut",
                            "nameLocation": "11672:13:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11144,
                            "src": "11664:21:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11112,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11664:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11118,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11115,
                              "name": "tokenOutRatio",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11103,
                              "src": "11693:13:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 11116,
                              "name": "tokenOutBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11067,
                              "src": "11708:15:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11114,
                            "name": "_mul",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11384,
                            "src": "11688:4:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 11117,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11688:36:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11664:60:42"
                      },
                      {
                        "assignments": [
                          11120
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11120,
                            "mutability": "mutable",
                            "name": "tokenAmountOutBeforeSwapFee",
                            "nameLocation": "11742:27:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11144,
                            "src": "11734:35:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11119,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11734:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11124,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11121,
                            "name": "tokenOutBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11067,
                            "src": "11772:15:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 11122,
                            "name": "newBalanceOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11113,
                            "src": "11790:13:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11772:31:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11734:69:42"
                      },
                      {
                        "assignments": [
                          11126
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11126,
                            "mutability": "mutable",
                            "name": "zaz",
                            "nameLocation": "11821:3:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11144,
                            "src": "11813:11:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11125,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11813:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11133,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11129,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11127,
                                  "name": "BASE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9991,
                                  "src": "11828:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 11128,
                                  "name": "normalizedWeight",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11083,
                                  "src": "11835:16:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11828:23:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 11130,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "11827:25:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 11131,
                            "name": "_swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11077,
                            "src": "11855:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11827:36:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11813:50:42"
                      },
                      {
                        "expression": {
                          "id": 11142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11134,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11080,
                            "src": "11873:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 11136,
                                "name": "tokenAmountOutBeforeSwapFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11120,
                                "src": "11890:27:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 11139,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 11137,
                                      "name": "BASE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9991,
                                      "src": "11920:4:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "id": 11138,
                                      "name": "zaz",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11126,
                                      "src": "11927:3:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11920:10:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 11140,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "11919:12:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 11135,
                              "name": "_mul",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11384,
                              "src": "11885:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 11141,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11885:47:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11873:59:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11143,
                        "nodeType": "ExpressionStatement",
                        "src": "11873:59:42"
                      }
                    ]
                  },
                  "id": 11145,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_computeSingleOutGivenPoolIn",
                  "nameLocation": "11134:28:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11078,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11067,
                        "mutability": "mutable",
                        "name": "tokenOutBalance",
                        "nameLocation": "11180:15:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11145,
                        "src": "11172:23:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11066,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11172:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11069,
                        "mutability": "mutable",
                        "name": "tokenOutWeight",
                        "nameLocation": "11213:14:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11145,
                        "src": "11205:22:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11068,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11205:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11071,
                        "mutability": "mutable",
                        "name": "_totalSupply",
                        "nameLocation": "11245:12:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11145,
                        "src": "11237:20:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11070,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11237:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11073,
                        "mutability": "mutable",
                        "name": "_totalWeight",
                        "nameLocation": "11275:12:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11145,
                        "src": "11267:20:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11072,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11267:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11075,
                        "mutability": "mutable",
                        "name": "toBurn",
                        "nameLocation": "11305:6:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11145,
                        "src": "11297:14:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11074,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11297:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11077,
                        "mutability": "mutable",
                        "name": "_swapFee",
                        "nameLocation": "11329:8:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11145,
                        "src": "11321:16:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11076,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11321:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11162:181:42"
                  },
                  "returnParameters": {
                    "id": 11081,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11080,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "11375:9:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11145,
                        "src": "11367:17:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11079,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11367:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11366:19:42"
                  },
                  "scope": 11592,
                  "src": "11125:814:42",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11195,
                    "nodeType": "Block",
                    "src": "12020:140:42",
                    "statements": [
                      {
                        "expression": {
                          "id": 11163,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11154,
                            "name": "output",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11152,
                            "src": "12030:6:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11157,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11155,
                                  "name": "n",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11149,
                                  "src": "12039:1:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "%",
                                "rightExpression": {
                                  "hexValue": "32",
                                  "id": 11156,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12043:1:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "12039:5:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 11158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12048:1:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "12039:10:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "id": 11161,
                              "name": "BASE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9991,
                              "src": "12056:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 11162,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "12039:21:42",
                            "trueExpression": {
                              "id": 11160,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11147,
                              "src": "12052:1:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12030:30:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11164,
                        "nodeType": "ExpressionStatement",
                        "src": "12030:30:42"
                      },
                      {
                        "body": {
                          "expression": {
                            "id": 11180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 11176,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11147,
                              "src": "12099:1:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11179,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11177,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11147,
                                "src": "12103:1:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 11178,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11147,
                                "src": "12107:1:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12103:5:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "12099:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11181,
                          "nodeType": "ExpressionStatement",
                          "src": "12099:9:42"
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11169,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11149,
                            "src": "12083:1:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 11170,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12088:1:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12083:6:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11182,
                        "initializationExpression": {
                          "expression": {
                            "id": 11167,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 11165,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11149,
                              "src": "12075:1:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "/=",
                            "rightHandSide": {
                              "hexValue": "32",
                              "id": 11166,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12080:1:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "12075:6:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11168,
                          "nodeType": "ExpressionStatement",
                          "src": "12075:6:42"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 11174,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 11172,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11149,
                              "src": "12091:1:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "/=",
                            "rightHandSide": {
                              "hexValue": "32",
                              "id": 11173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12096:1:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "12091:6:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11175,
                          "nodeType": "ExpressionStatement",
                          "src": "12091:6:42"
                        },
                        "nodeType": "ForStatement",
                        "src": "12070:38:42"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11187,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11185,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 11183,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11149,
                              "src": "12122:1:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "hexValue": "32",
                              "id": 11184,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12126:1:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "12122:5:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 11186,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12131:1:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12122:10:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11194,
                        "nodeType": "IfStatement",
                        "src": "12118:35:42",
                        "trueBody": {
                          "expression": {
                            "id": 11192,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 11188,
                              "name": "output",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11152,
                              "src": "12134:6:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11191,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11189,
                                "name": "output",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11152,
                                "src": "12143:6:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 11190,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11147,
                                "src": "12152:1:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12143:10:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "12134:19:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11193,
                          "nodeType": "ExpressionStatement",
                          "src": "12134:19:42"
                        }
                      }
                    ]
                  },
                  "id": 11196,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_pow",
                  "nameLocation": "11954:4:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11150,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11147,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "11967:1:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11196,
                        "src": "11959:9:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11146,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11959:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11149,
                        "mutability": "mutable",
                        "name": "n",
                        "nameLocation": "11978:1:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11196,
                        "src": "11970:9:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11148,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11970:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11958:22:42"
                  },
                  "returnParameters": {
                    "id": 11153,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11152,
                        "mutability": "mutable",
                        "name": "output",
                        "nameLocation": "12012:6:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11196,
                        "src": "12004:14:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11151,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12004:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12003:16:42"
                  },
                  "scope": 11592,
                  "src": "11945:215:42",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11313,
                    "nodeType": "Block",
                    "src": "12298:659:42",
                    "statements": [
                      {
                        "assignments": [
                          11208
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11208,
                            "mutability": "mutable",
                            "name": "a",
                            "nameLocation": "12316:1:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11313,
                            "src": "12308:9:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11207,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12308:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11210,
                        "initialValue": {
                          "id": 11209,
                          "name": "exp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11200,
                          "src": "12320:3:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12308:15:42"
                      },
                      {
                        "assignments": [
                          11212,
                          11214
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11212,
                            "mutability": "mutable",
                            "name": "x",
                            "nameLocation": "12342:1:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11313,
                            "src": "12334:9:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11211,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12334:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 11214,
                            "mutability": "mutable",
                            "name": "xneg",
                            "nameLocation": "12350:4:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11313,
                            "src": "12345:9:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 11213,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "12345:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11219,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11216,
                              "name": "base",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11198,
                              "src": "12367:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 11217,
                              "name": "BASE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9991,
                              "src": "12373:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 11215,
                            "name": "_subFlag",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11353,
                            "src": "12358:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_bool_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256,bool)"
                            }
                          },
                          "id": 11218,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12358:20:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                            "typeString": "tuple(uint256,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12333:45:42"
                      },
                      {
                        "assignments": [
                          11221
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11221,
                            "mutability": "mutable",
                            "name": "term",
                            "nameLocation": "12396:4:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11313,
                            "src": "12388:12:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11220,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12388:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11223,
                        "initialValue": {
                          "id": 11222,
                          "name": "BASE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9991,
                          "src": "12403:4:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12388:19:42"
                      },
                      {
                        "expression": {
                          "id": 11226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11224,
                            "name": "sum",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11205,
                            "src": "12417:3:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 11225,
                            "name": "term",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11221,
                            "src": "12423:4:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12417:10:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11227,
                        "nodeType": "ExpressionStatement",
                        "src": "12417:10:42"
                      },
                      {
                        "assignments": [
                          11229
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11229,
                            "mutability": "mutable",
                            "name": "negative",
                            "nameLocation": "12442:8:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11313,
                            "src": "12437:13:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 11228,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "12437:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11230,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12437:13:42"
                      },
                      {
                        "body": {
                          "id": 11311,
                          "nodeType": "Block",
                          "src": "12505:446:42",
                          "statements": [
                            {
                              "assignments": [
                                11242
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 11242,
                                  "mutability": "mutable",
                                  "name": "bigK",
                                  "nameLocation": "12527:4:42",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 11311,
                                  "src": "12519:12:42",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 11241,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12519:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11246,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11245,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11243,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11232,
                                  "src": "12534:1:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 11244,
                                  "name": "BASE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9991,
                                  "src": "12538:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12534:8:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12519:23:42"
                            },
                            {
                              "assignments": [
                                11248,
                                11250
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 11248,
                                  "mutability": "mutable",
                                  "name": "c",
                                  "nameLocation": "12565:1:42",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 11311,
                                  "src": "12557:9:42",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 11247,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12557:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 11250,
                                  "mutability": "mutable",
                                  "name": "cneg",
                                  "nameLocation": "12573:4:42",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 11311,
                                  "src": "12568:9:42",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 11249,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12568:4:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11258,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 11252,
                                    "name": "a",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11208,
                                    "src": "12590:1:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 11255,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 11253,
                                          "name": "bigK",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11242,
                                          "src": "12594:4:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 11254,
                                          "name": "BASE",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 9991,
                                          "src": "12601:4:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "12594:11:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 11256,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "12593:13:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 11251,
                                  "name": "_subFlag",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11353,
                                  "src": "12581:8:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_bool_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256,bool)"
                                  }
                                },
                                "id": 11257,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12581:26:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                                  "typeString": "tuple(uint256,bool)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "12556:51:42"
                            },
                            {
                              "expression": {
                                "id": 11267,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 11259,
                                  "name": "term",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11221,
                                  "src": "12621:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 11261,
                                      "name": "term",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11221,
                                      "src": "12633:4:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "id": 11263,
                                          "name": "c",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11248,
                                          "src": "12644:1:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 11264,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11212,
                                          "src": "12647:1:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 11262,
                                        "name": "_mul",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11384,
                                        "src": "12639:4:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 11265,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12639:10:42",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 11260,
                                    "name": "_mul",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11384,
                                    "src": "12628:4:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 11266,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12628:22:42",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12621:29:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11268,
                              "nodeType": "ExpressionStatement",
                              "src": "12621:29:42"
                            },
                            {
                              "expression": {
                                "id": 11274,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 11269,
                                  "name": "term",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11221,
                                  "src": "12664:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 11271,
                                      "name": "term",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11221,
                                      "src": "12676:4:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 11272,
                                      "name": "bigK",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11242,
                                      "src": "12682:4:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 11270,
                                    "name": "_div",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11415,
                                    "src": "12671:4:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 11273,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12671:16:42",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12664:23:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11275,
                              "nodeType": "ExpressionStatement",
                              "src": "12664:23:42"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11278,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11276,
                                  "name": "term",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11221,
                                  "src": "12705:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 11277,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12713:1:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "12705:9:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 11280,
                              "nodeType": "IfStatement",
                              "src": "12701:20:42",
                              "trueBody": {
                                "id": 11279,
                                "nodeType": "Break",
                                "src": "12716:5:42"
                              }
                            },
                            {
                              "condition": {
                                "id": 11281,
                                "name": "xneg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11214,
                                "src": "12739:4:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 11287,
                              "nodeType": "IfStatement",
                              "src": "12735:30:42",
                              "trueBody": {
                                "expression": {
                                  "id": 11285,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 11282,
                                    "name": "negative",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11229,
                                    "src": "12745:8:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "id": 11284,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "!",
                                    "prefix": true,
                                    "src": "12756:9:42",
                                    "subExpression": {
                                      "id": 11283,
                                      "name": "negative",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11229,
                                      "src": "12757:8:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "12745:20:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 11286,
                                "nodeType": "ExpressionStatement",
                                "src": "12745:20:42"
                              }
                            },
                            {
                              "condition": {
                                "id": 11288,
                                "name": "cneg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11250,
                                "src": "12783:4:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 11294,
                              "nodeType": "IfStatement",
                              "src": "12779:30:42",
                              "trueBody": {
                                "expression": {
                                  "id": 11292,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 11289,
                                    "name": "negative",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11229,
                                    "src": "12789:8:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "id": 11291,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "!",
                                    "prefix": true,
                                    "src": "12800:9:42",
                                    "subExpression": {
                                      "id": 11290,
                                      "name": "negative",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11229,
                                      "src": "12801:8:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "12789:20:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 11293,
                                "nodeType": "ExpressionStatement",
                                "src": "12789:20:42"
                              }
                            },
                            {
                              "condition": {
                                "id": 11295,
                                "name": "negative",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11229,
                                "src": "12827:8:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 11309,
                                "nodeType": "Block",
                                "src": "12892:49:42",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 11307,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 11303,
                                        "name": "sum",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11205,
                                        "src": "12910:3:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 11306,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 11304,
                                          "name": "sum",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11205,
                                          "src": "12916:3:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "id": 11305,
                                          "name": "term",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11221,
                                          "src": "12922:4:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "12916:10:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "12910:16:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 11308,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12910:16:42"
                                  }
                                ]
                              },
                              "id": 11310,
                              "nodeType": "IfStatement",
                              "src": "12823:118:42",
                              "trueBody": {
                                "id": 11302,
                                "nodeType": "Block",
                                "src": "12837:49:42",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 11300,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 11296,
                                        "name": "sum",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11205,
                                        "src": "12855:3:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 11299,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 11297,
                                          "name": "sum",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11205,
                                          "src": "12861:3:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 11298,
                                          "name": "term",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11221,
                                          "src": "12867:4:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "12861:10:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "12855:16:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 11301,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12855:16:42"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11235,
                            "name": "term",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11221,
                            "src": "12481:4:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "id": 11236,
                            "name": "precision",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11202,
                            "src": "12489:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12481:17:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11312,
                        "initializationExpression": {
                          "assignments": [
                            11232
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 11232,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "12474:1:42",
                              "nodeType": "VariableDeclaration",
                              "scope": 11312,
                              "src": "12466:9:42",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 11231,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "12466:7:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 11234,
                          "initialValue": {
                            "hexValue": "31",
                            "id": 11233,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12478:1:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "12466:13:42"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 11239,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "12500:3:42",
                            "subExpression": {
                              "id": 11238,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11232,
                              "src": "12500:1:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11240,
                          "nodeType": "ExpressionStatement",
                          "src": "12500:3:42"
                        },
                        "nodeType": "ForStatement",
                        "src": "12461:490:42"
                      }
                    ]
                  },
                  "id": 11314,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_powApprox",
                  "nameLocation": "12175:10:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11203,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11198,
                        "mutability": "mutable",
                        "name": "base",
                        "nameLocation": "12203:4:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11314,
                        "src": "12195:12:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11197,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12195:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11200,
                        "mutability": "mutable",
                        "name": "exp",
                        "nameLocation": "12225:3:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11314,
                        "src": "12217:11:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11199,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12217:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11202,
                        "mutability": "mutable",
                        "name": "precision",
                        "nameLocation": "12246:9:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11314,
                        "src": "12238:17:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11201,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12238:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12185:76:42"
                  },
                  "returnParameters": {
                    "id": 11206,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11205,
                        "mutability": "mutable",
                        "name": "sum",
                        "nameLocation": "12293:3:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11314,
                        "src": "12285:11:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11204,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12285:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12284:13:42"
                  },
                  "scope": 11592,
                  "src": "12166:791:42",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11352,
                    "nodeType": "Block",
                    "src": "13057:279:42",
                    "statements": [
                      {
                        "id": 11351,
                        "nodeType": "UncheckedBlock",
                        "src": "13143:187:42",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11325,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11316,
                                "src": "13171:1:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 11326,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11318,
                                "src": "13176:1:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13171:6:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 11349,
                              "nodeType": "Block",
                              "src": "13253:67:42",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 11347,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "components": [
                                        {
                                          "id": 11339,
                                          "name": "difference",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11321,
                                          "src": "13272:10:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 11340,
                                          "name": "flag",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11323,
                                          "src": "13284:4:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 11341,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "TupleExpression",
                                      "src": "13271:18:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                                        "typeString": "tuple(uint256,bool)"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 11344,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 11342,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 11318,
                                            "src": "13293:1:42",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 11343,
                                            "name": "a",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 11316,
                                            "src": "13297:1:42",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "13293:5:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "74727565",
                                          "id": 11345,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "13300:4:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "true"
                                        }
                                      ],
                                      "id": 11346,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "13292:13:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                                        "typeString": "tuple(uint256,bool)"
                                      }
                                    },
                                    "src": "13271:34:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 11348,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13271:34:42"
                                }
                              ]
                            },
                            "id": 11350,
                            "nodeType": "IfStatement",
                            "src": "13167:153:42",
                            "trueBody": {
                              "id": 11338,
                              "nodeType": "Block",
                              "src": "13179:68:42",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 11336,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "components": [
                                        {
                                          "id": 11328,
                                          "name": "difference",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11321,
                                          "src": "13198:10:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 11329,
                                          "name": "flag",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11323,
                                          "src": "13210:4:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 11330,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "TupleExpression",
                                      "src": "13197:18:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                                        "typeString": "tuple(uint256,bool)"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 11333,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 11331,
                                            "name": "a",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 11316,
                                            "src": "13219:1:42",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 11332,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 11318,
                                            "src": "13223:1:42",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "13219:5:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "66616c7365",
                                          "id": 11334,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "13226:5:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "false"
                                        }
                                      ],
                                      "id": 11335,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "13218:14:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                                        "typeString": "tuple(uint256,bool)"
                                      }
                                    },
                                    "src": "13197:35:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 11337,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13197:35:42"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  },
                  "id": 11353,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_subFlag",
                  "nameLocation": "12972:8:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11319,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11316,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "12989:1:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11353,
                        "src": "12981:9:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11315,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12981:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11318,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "13000:1:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11353,
                        "src": "12992:9:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11317,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12992:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12980:22:42"
                  },
                  "returnParameters": {
                    "id": 11324,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11321,
                        "mutability": "mutable",
                        "name": "difference",
                        "nameLocation": "13034:10:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11353,
                        "src": "13026:18:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11320,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13026:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11323,
                        "mutability": "mutable",
                        "name": "flag",
                        "nameLocation": "13051:4:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11353,
                        "src": "13046:9:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 11322,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13046:4:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13025:31:42"
                  },
                  "scope": 11592,
                  "src": "12963:373:42",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11383,
                    "nodeType": "Block",
                    "src": "13413:97:42",
                    "statements": [
                      {
                        "assignments": [
                          11363
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11363,
                            "mutability": "mutable",
                            "name": "c0",
                            "nameLocation": "13431:2:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11383,
                            "src": "13423:10:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11362,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13423:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11367,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11364,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11355,
                            "src": "13436:1:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 11365,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11357,
                            "src": "13440:1:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13436:5:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13423:18:42"
                      },
                      {
                        "assignments": [
                          11369
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11369,
                            "mutability": "mutable",
                            "name": "c1",
                            "nameLocation": "13459:2:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11383,
                            "src": "13451:10:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11368,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13451:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11376,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11370,
                            "name": "c0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11363,
                            "src": "13464:2:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11371,
                                  "name": "BASE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 9991,
                                  "src": "13470:4:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "hexValue": "32",
                                  "id": 11372,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13477:1:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "13470:8:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 11374,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "13469:10:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13464:15:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13451:28:42"
                      },
                      {
                        "expression": {
                          "id": 11381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11377,
                            "name": "c2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11360,
                            "src": "13489:2:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11380,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 11378,
                              "name": "c1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11369,
                              "src": "13494:2:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 11379,
                              "name": "BASE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9991,
                              "src": "13499:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13494:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13489:14:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11382,
                        "nodeType": "ExpressionStatement",
                        "src": "13489:14:42"
                      }
                    ]
                  },
                  "id": 11384,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mul",
                  "nameLocation": "13351:4:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11358,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11355,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "13364:1:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11384,
                        "src": "13356:9:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11354,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13356:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11357,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "13375:1:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11384,
                        "src": "13367:9:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11356,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13367:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13355:22:42"
                  },
                  "returnParameters": {
                    "id": 11361,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11360,
                        "mutability": "mutable",
                        "name": "c2",
                        "nameLocation": "13409:2:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11384,
                        "src": "13401:10:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11359,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13401:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13400:12:42"
                  },
                  "scope": 11592,
                  "src": "13342:168:42",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11414,
                    "nodeType": "Block",
                    "src": "13587:94:42",
                    "statements": [
                      {
                        "assignments": [
                          11394
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11394,
                            "mutability": "mutable",
                            "name": "c0",
                            "nameLocation": "13605:2:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11414,
                            "src": "13597:10:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11393,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13597:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11398,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11395,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11386,
                            "src": "13610:1:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 11396,
                            "name": "BASE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9991,
                            "src": "13614:4:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13610:8:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13597:21:42"
                      },
                      {
                        "assignments": [
                          11400
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11400,
                            "mutability": "mutable",
                            "name": "c1",
                            "nameLocation": "13636:2:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11414,
                            "src": "13628:10:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11399,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13628:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11407,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11401,
                            "name": "c0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11394,
                            "src": "13641:2:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 11402,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11388,
                                  "src": "13647:1:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "hexValue": "32",
                                  "id": 11403,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13651:1:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "13647:5:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 11405,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "13646:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13641:12:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13628:25:42"
                      },
                      {
                        "expression": {
                          "id": 11412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11408,
                            "name": "c2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11391,
                            "src": "13663:2:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11411,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 11409,
                              "name": "c1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11400,
                              "src": "13668:2:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 11410,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11388,
                              "src": "13673:1:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13668:6:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13663:11:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11413,
                        "nodeType": "ExpressionStatement",
                        "src": "13663:11:42"
                      }
                    ]
                  },
                  "id": 11415,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_div",
                  "nameLocation": "13525:4:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11389,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11386,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "13538:1:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11415,
                        "src": "13530:9:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11385,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13530:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11388,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "13549:1:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11415,
                        "src": "13541:9:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11387,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13541:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13529:22:42"
                  },
                  "returnParameters": {
                    "id": 11392,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11391,
                        "mutability": "mutable",
                        "name": "c2",
                        "nameLocation": "13583:2:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11415,
                        "src": "13575:10:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11390,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13575:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13574:12:42"
                  },
                  "scope": 11592,
                  "src": "13516:165:42",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11455,
                    "nodeType": "Block",
                    "src": "13814:188:42",
                    "statements": [
                      {
                        "condition": {
                          "id": 11426,
                          "name": "unwrapBento",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11423,
                          "src": "13828:11:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 11453,
                          "nodeType": "Block",
                          "src": "13923:73:42",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 11444,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11417,
                                    "src": "13952:5:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 11447,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "13967:4:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IndexPool_$11592",
                                          "typeString": "contract IndexPool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IndexPool_$11592",
                                          "typeString": "contract IndexPool"
                                        }
                                      ],
                                      "id": 11446,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "13959:7:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 11445,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13959:7:42",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 11448,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13959:13:42",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 11449,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11421,
                                    "src": "13974:2:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 11450,
                                    "name": "shares",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11419,
                                    "src": "13978:6:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 11441,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9983,
                                    "src": "13937:5:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 11443,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2227,
                                  "src": "13937:14:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,uint256) external"
                                  }
                                },
                                "id": 11451,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13937:48:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 11452,
                              "nodeType": "ExpressionStatement",
                              "src": "13937:48:42"
                            }
                          ]
                        },
                        "id": 11454,
                        "nodeType": "IfStatement",
                        "src": "13824:172:42",
                        "trueBody": {
                          "id": 11440,
                          "nodeType": "Block",
                          "src": "13841:76:42",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 11430,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11417,
                                    "src": "13870:5:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 11433,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "13885:4:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IndexPool_$11592",
                                          "typeString": "contract IndexPool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IndexPool_$11592",
                                          "typeString": "contract IndexPool"
                                        }
                                      ],
                                      "id": 11432,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "13877:7:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 11431,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13877:7:42",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 11434,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13877:13:42",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 11435,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11421,
                                    "src": "13892:2:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 11436,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13896:1:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "id": 11437,
                                    "name": "shares",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11419,
                                    "src": "13899:6:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 11427,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9983,
                                    "src": "13855:5:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 11429,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "withdraw",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2215,
                                  "src": "13855:14:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (address,address,address,uint256,uint256) external returns (uint256,uint256)"
                                  }
                                },
                                "id": 11438,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13855:51:42",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "id": 11439,
                              "nodeType": "ExpressionStatement",
                              "src": "13855:51:42"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 11456,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nameLocation": "13696:9:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11424,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11417,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "13723:5:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11456,
                        "src": "13715:13:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11416,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13715:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11419,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "13746:6:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11456,
                        "src": "13738:14:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11418,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13738:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11421,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "13770:2:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11456,
                        "src": "13762:10:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11420,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13762:7:42",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11423,
                        "mutability": "mutable",
                        "name": "unwrapBento",
                        "nameLocation": "13787:11:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11456,
                        "src": "13782:16:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 11422,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13782:4:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13705:99:42"
                  },
                  "returnParameters": {
                    "id": 11425,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13814:0:42"
                  },
                  "scope": 11592,
                  "src": "13687:315:42",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2415
                  ],
                  "body": {
                    "id": 11467,
                    "nodeType": "Block",
                    "src": "14084:32:42",
                    "statements": [
                      {
                        "expression": {
                          "id": 11465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11463,
                            "name": "assets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11461,
                            "src": "14094:6:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 11464,
                            "name": "tokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10070,
                            "src": "14103:6:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "src": "14094:15:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 11466,
                        "nodeType": "ExpressionStatement",
                        "src": "14094:15:42"
                      }
                    ]
                  },
                  "functionSelector": "67e4ac2c",
                  "id": 11468,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAssets",
                  "nameLocation": "14017:9:42",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11458,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "14041:8:42"
                  },
                  "parameters": {
                    "id": 11457,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14026:2:42"
                  },
                  "returnParameters": {
                    "id": 11462,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11461,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "14076:6:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11468,
                        "src": "14059:23:42",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11459,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "14059:7:42",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 11460,
                          "nodeType": "ArrayTypeName",
                          "src": "14059:9:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14058:25:42"
                  },
                  "scope": 11592,
                  "src": "14008:108:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2423
                  ],
                  "body": {
                    "id": 11512,
                    "nodeType": "Block",
                    "src": "14214:329:42",
                    "statements": [
                      {
                        "assignments": [
                          11477,
                          11479,
                          11481,
                          11483,
                          11485
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11477,
                            "mutability": "mutable",
                            "name": "tokenInAmount",
                            "nameLocation": "14233:13:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11512,
                            "src": "14225:21:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11476,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14225:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 11479,
                            "mutability": "mutable",
                            "name": "tokenInBalance",
                            "nameLocation": "14256:14:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11512,
                            "src": "14248:22:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11478,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14248:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 11481,
                            "mutability": "mutable",
                            "name": "tokenInWeight",
                            "nameLocation": "14280:13:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11512,
                            "src": "14272:21:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11480,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14272:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 11483,
                            "mutability": "mutable",
                            "name": "tokenOutBalance",
                            "nameLocation": "14303:15:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11512,
                            "src": "14295:23:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11482,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14295:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 11485,
                            "mutability": "mutable",
                            "name": "tokenOutWeight",
                            "nameLocation": "14328:14:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11512,
                            "src": "14320:22:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11484,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14320:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11501,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11488,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11470,
                              "src": "14370:4:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 11490,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14377:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 11489,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14377:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 11492,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14386:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 11491,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14386:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 11494,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14395:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 11493,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14395:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 11496,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14404:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 11495,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14404:7:42",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 11498,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "14413:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 11497,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14413:7:42",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 11499,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "14376:45:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(uint256),type(uint256),type(uint256),type(uint256),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(uint256),type(uint256),type(uint256),type(uint256),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 11486,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "14346:3:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 11487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "14346:23:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 11500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14346:76:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14224:198:42"
                      },
                      {
                        "expression": {
                          "id": 11510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11502,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11474,
                            "src": "14432:9:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 11504,
                                "name": "tokenInAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11477,
                                "src": "14458:13:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 11505,
                                "name": "tokenInBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11479,
                                "src": "14473:14:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 11506,
                                "name": "tokenInWeight",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11481,
                                "src": "14489:13:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 11507,
                                "name": "tokenOutBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11483,
                                "src": "14504:15:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 11508,
                                "name": "tokenOutWeight",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11485,
                                "src": "14521:14:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 11503,
                              "name": "_getAmountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10997,
                              "src": "14444:13:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256,uint256,uint256) view returns (uint256)"
                              }
                            },
                            "id": 11509,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14444:92:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14432:104:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11511,
                        "nodeType": "ExpressionStatement",
                        "src": "14432:104:42"
                      }
                    ]
                  },
                  "functionSelector": "a8f1f52e",
                  "id": 11513,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountOut",
                  "nameLocation": "14131:12:42",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11472,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "14177:8:42"
                  },
                  "parameters": {
                    "id": 11471,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11470,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "14159:4:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11513,
                        "src": "14144:19:42",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 11469,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "14144:5:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14143:21:42"
                  },
                  "returnParameters": {
                    "id": 11475,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11474,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "14203:9:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11513,
                        "src": "14195:17:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11473,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14195:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14194:19:42"
                  },
                  "scope": 11592,
                  "src": "14122:421:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2431
                  ],
                  "body": {
                    "id": 11524,
                    "nodeType": "Block",
                    "src": "14625:25:42",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 11521,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "14635:6:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 11522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14635:8:42",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11523,
                        "nodeType": "ExpressionStatement",
                        "src": "14635:8:42"
                      }
                    ]
                  },
                  "functionSelector": "499a3c50",
                  "id": 11525,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountIn",
                  "nameLocation": "14558:11:42",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 11517,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "14598:8:42"
                  },
                  "parameters": {
                    "id": 11516,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11515,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11525,
                        "src": "14570:14:42",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 11514,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "14570:5:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14569:16:42"
                  },
                  "returnParameters": {
                    "id": 11520,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11519,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 11525,
                        "src": "14616:7:42",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11518,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14616:7:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14615:9:42"
                  },
                  "scope": 11592,
                  "src": "14549:101:42",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11590,
                    "nodeType": "Block",
                    "src": "14763:419:42",
                    "statements": [
                      {
                        "assignments": [
                          11535
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11535,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "14781:6:42",
                            "nodeType": "VariableDeclaration",
                            "scope": 11590,
                            "src": "14773:14:42",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11534,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14773:7:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11538,
                        "initialValue": {
                          "expression": {
                            "id": 11536,
                            "name": "tokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10070,
                            "src": "14790:6:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 11537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "14790:13:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14773:30:42"
                      },
                      {
                        "expression": {
                          "id": 11545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11539,
                            "name": "reserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11529,
                            "src": "14813:8:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 11543,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11535,
                                "src": "14838:6:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 11542,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "14824:13:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (uint256[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 11540,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14828:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 11541,
                                "nodeType": "ArrayTypeName",
                                "src": "14828:9:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                  "typeString": "uint256[]"
                                }
                              }
                            },
                            "id": 11544,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14824:21:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "14813:32:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 11546,
                        "nodeType": "ExpressionStatement",
                        "src": "14813:32:42"
                      },
                      {
                        "expression": {
                          "id": 11553,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11547,
                            "name": "weights",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11532,
                            "src": "14855:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                              "typeString": "uint136[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 11551,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11535,
                                "src": "14879:6:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 11550,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "14865:13:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint136_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (uint136[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 11548,
                                  "name": "uint136",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "14869:7:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint136",
                                    "typeString": "uint136"
                                  }
                                },
                                "id": 11549,
                                "nodeType": "ArrayTypeName",
                                "src": "14869:9:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint136_$dyn_storage_ptr",
                                  "typeString": "uint136[]"
                                }
                              }
                            },
                            "id": 11552,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14865:21:42",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                              "typeString": "uint136[] memory"
                            }
                          },
                          "src": "14855:31:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                            "typeString": "uint136[] memory"
                          }
                        },
                        "id": 11554,
                        "nodeType": "ExpressionStatement",
                        "src": "14855:31:42"
                      },
                      {
                        "id": 11589,
                        "nodeType": "UncheckedBlock",
                        "src": "14976:200:42",
                        "statements": [
                          {
                            "body": {
                              "id": 11587,
                              "nodeType": "Block",
                              "src": "15037:129:42",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 11574,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "baseExpression": {
                                        "id": 11565,
                                        "name": "reserves",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11529,
                                        "src": "15055:8:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 11567,
                                      "indexExpression": {
                                        "id": 11566,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11556,
                                        "src": "15064:1:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "15055:11:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 11568,
                                          "name": "records",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10102,
                                          "src": "15069:7:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$10107_storage_$",
                                            "typeString": "mapping(address => struct IndexPool.Record storage ref)"
                                          }
                                        },
                                        "id": 11572,
                                        "indexExpression": {
                                          "baseExpression": {
                                            "id": 11569,
                                            "name": "tokens",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10070,
                                            "src": "15077:6:42",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                              "typeString": "address[] storage ref"
                                            }
                                          },
                                          "id": 11571,
                                          "indexExpression": {
                                            "id": 11570,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 11556,
                                            "src": "15084:1:42",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "15077:9:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "15069:18:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Record_$10107_storage",
                                          "typeString": "struct IndexPool.Record storage ref"
                                        }
                                      },
                                      "id": 11573,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "reserve",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 10104,
                                      "src": "15069:26:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "src": "15055:40:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 11575,
                                  "nodeType": "ExpressionStatement",
                                  "src": "15055:40:42"
                                },
                                {
                                  "expression": {
                                    "id": 11585,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "baseExpression": {
                                        "id": 11576,
                                        "name": "weights",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11532,
                                        "src": "15113:7:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                                          "typeString": "uint136[] memory"
                                        }
                                      },
                                      "id": 11578,
                                      "indexExpression": {
                                        "id": 11577,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11556,
                                        "src": "15121:1:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "15113:10:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint136",
                                        "typeString": "uint136"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 11579,
                                          "name": "records",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 10102,
                                          "src": "15126:7:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$10107_storage_$",
                                            "typeString": "mapping(address => struct IndexPool.Record storage ref)"
                                          }
                                        },
                                        "id": 11583,
                                        "indexExpression": {
                                          "baseExpression": {
                                            "id": 11580,
                                            "name": "tokens",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 10070,
                                            "src": "15134:6:42",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                              "typeString": "address[] storage ref"
                                            }
                                          },
                                          "id": 11582,
                                          "indexExpression": {
                                            "id": 11581,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 11556,
                                            "src": "15141:1:42",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "15134:9:42",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "15126:18:42",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Record_$10107_storage",
                                          "typeString": "struct IndexPool.Record storage ref"
                                        }
                                      },
                                      "id": 11584,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "weight",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 10106,
                                      "src": "15126:25:42",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint136",
                                        "typeString": "uint136"
                                      }
                                    },
                                    "src": "15113:38:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint136",
                                      "typeString": "uint136"
                                    }
                                  },
                                  "id": 11586,
                                  "nodeType": "ExpressionStatement",
                                  "src": "15113:38:42"
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11561,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11559,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11556,
                                "src": "15020:1:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 11560,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11535,
                                "src": "15024:6:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "15020:10:42",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 11588,
                            "initializationExpression": {
                              "assignments": [
                                11556
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 11556,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nameLocation": "15013:1:42",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 11588,
                                  "src": "15005:9:42",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 11555,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15005:7:42",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11558,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 11557,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15017:1:42",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15005:13:42"
                            },
                            "loopExpression": {
                              "expression": {
                                "id": 11563,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "15032:3:42",
                                "subExpression": {
                                  "id": 11562,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11556,
                                  "src": "15032:1:42",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11564,
                              "nodeType": "ExpressionStatement",
                              "src": "15032:3:42"
                            },
                            "nodeType": "ForStatement",
                            "src": "15000:166:42"
                          }
                        ]
                      }
                    ]
                  },
                  "functionSelector": "8ae45441",
                  "id": 11591,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReservesAndWeights",
                  "nameLocation": "14665:21:42",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11526,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14686:2:42"
                  },
                  "returnParameters": {
                    "id": 11533,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11529,
                        "mutability": "mutable",
                        "name": "reserves",
                        "nameLocation": "14727:8:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11591,
                        "src": "14710:25:42",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11527,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "14710:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11528,
                          "nodeType": "ArrayTypeName",
                          "src": "14710:9:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11532,
                        "mutability": "mutable",
                        "name": "weights",
                        "nameLocation": "14754:7:42",
                        "nodeType": "VariableDeclaration",
                        "scope": 11591,
                        "src": "14737:24:42",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                          "typeString": "uint136[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11530,
                            "name": "uint136",
                            "nodeType": "ElementaryTypeName",
                            "src": "14737:7:42",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint136",
                              "typeString": "uint136"
                            }
                          },
                          "id": 11531,
                          "nodeType": "ArrayTypeName",
                          "src": "14737:9:42",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint136_$dyn_storage_ptr",
                            "typeString": "uint136[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14709:53:42"
                  },
                  "scope": 11592,
                  "src": "14656:526:42",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 11593,
              "src": "537:14647:42",
              "usedErrors": []
            }
          ],
          "src": "46:15139:42"
        },
        "id": 42
      },
      "contracts/pool/IndexPoolFactory.sol": {
        "ast": {
          "absolutePath": "contracts/pool/IndexPoolFactory.sol",
          "exportedSymbols": {
            "IBentoBoxMinimal": [
              2253
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "ITridentCallee": [
              2482
            ],
            "IndexPool": [
              11592
            ],
            "IndexPoolFactory": [
              11676
            ],
            "PoolDeployer": [
              11887
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "TridentERC20": [
              12279
            ]
          },
          "id": 11677,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11594,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:43"
            },
            {
              "absolutePath": "contracts/pool/IndexPool.sol",
              "file": "./IndexPool.sol",
              "id": 11595,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11677,
              "sourceUnit": 11593,
              "src": "72:25:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pool/PoolDeployer.sol",
              "file": "./PoolDeployer.sol",
              "id": 11596,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 11677,
              "sourceUnit": 11888,
              "src": "98:28:43",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 11598,
                    "name": "PoolDeployer",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11887,
                    "src": "265:12:43"
                  },
                  "id": 11599,
                  "nodeType": "InheritanceSpecifier",
                  "src": "265:12:43"
                }
              ],
              "contractDependencies": [
                11592
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 11597,
                "nodeType": "StructuredDocumentation",
                "src": "128:108:43",
                "text": "@notice Contract for deploying Trident exchange Index Pool with configurations.\n @author Mudit Gupta"
              },
              "fullyImplemented": true,
              "id": 11676,
              "linearizedBaseContracts": [
                11676,
                11887
              ],
              "name": "IndexPoolFactory",
              "nameLocation": "245:16:43",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 11607,
                    "nodeType": "Block",
                    "src": "351:2:43",
                    "statements": []
                  },
                  "id": 11608,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 11604,
                          "name": "_masterDeployer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11601,
                          "src": "334:15:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 11605,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 11603,
                        "name": "PoolDeployer",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11887,
                        "src": "321:12:43"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "321:29:43"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11602,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11601,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "304:15:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 11608,
                        "src": "296:23:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11600,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "296:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "295:25:43"
                  },
                  "returnParameters": {
                    "id": 11606,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "351:0:43"
                  },
                  "scope": 11676,
                  "src": "284:69:43",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11674,
                    "nodeType": "Block",
                    "src": "437:534:43",
                    "statements": [
                      {
                        "assignments": [
                          11619,
                          11622,
                          11624
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11619,
                            "mutability": "mutable",
                            "name": "tokens",
                            "nameLocation": "465:6:43",
                            "nodeType": "VariableDeclaration",
                            "scope": 11674,
                            "src": "448:23:43",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 11617,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "448:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 11618,
                              "nodeType": "ArrayTypeName",
                              "src": "448:9:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 11622,
                            "mutability": "mutable",
                            "name": "weights",
                            "nameLocation": "490:7:43",
                            "nodeType": "VariableDeclaration",
                            "scope": 11674,
                            "src": "473:24:43",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                              "typeString": "uint136[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 11620,
                                "name": "uint136",
                                "nodeType": "ElementaryTypeName",
                                "src": "473:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              },
                              "id": 11621,
                              "nodeType": "ArrayTypeName",
                              "src": "473:9:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint136_$dyn_storage_ptr",
                                "typeString": "uint136[]"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 11624,
                            "mutability": "mutable",
                            "name": "swapFee",
                            "nameLocation": "507:7:43",
                            "nodeType": "VariableDeclaration",
                            "scope": 11674,
                            "src": "499:15:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 11623,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "499:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11638,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11627,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11610,
                              "src": "529:11:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "baseExpression": {
                                    "id": 11629,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "543:7:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 11628,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "543:7:43",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 11630,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "543:9:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_address_$dyn_memory_ptr_$",
                                    "typeString": "type(address[] memory)"
                                  }
                                },
                                {
                                  "baseExpression": {
                                    "id": 11632,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "554:7:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint136_$",
                                      "typeString": "type(uint136)"
                                    },
                                    "typeName": {
                                      "id": 11631,
                                      "name": "uint136",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "554:7:43",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 11633,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "554:9:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_uint136_$dyn_memory_ptr_$",
                                    "typeString": "type(uint136[] memory)"
                                  }
                                },
                                {
                                  "id": 11635,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "565:7:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 11634,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "565:7:43",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 11636,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "542:31:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint136_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address[] memory),type(uint136[] memory),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint136_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address[] memory),type(uint136[] memory),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 11625,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "518:3:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 11626,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "518:10:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 11637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "518:56:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint136_$dyn_memory_ptr_$_t_uint256_$",
                            "typeString": "tuple(address[] memory,uint136[] memory,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "447:127:43"
                      },
                      {
                        "expression": {
                          "id": 11646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11639,
                            "name": "_deployData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11610,
                            "src": "624:11:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 11642,
                                "name": "tokens",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11619,
                                "src": "649:6:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              {
                                "id": 11643,
                                "name": "weights",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11622,
                                "src": "657:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                                  "typeString": "uint136[] memory"
                                }
                              },
                              {
                                "id": 11644,
                                "name": "swapFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11624,
                                "src": "666:7:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                                  "typeString": "uint136[] memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 11640,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "638:3:43",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 11641,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "src": "638:10:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 11645,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "638:36:43",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "624:50:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 11647,
                        "nodeType": "ExpressionStatement",
                        "src": "624:50:43"
                      },
                      {
                        "assignments": [
                          11649
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 11649,
                            "mutability": "mutable",
                            "name": "salt",
                            "nameLocation": "812:4:43",
                            "nodeType": "VariableDeclaration",
                            "scope": 11674,
                            "src": "804:12:43",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 11648,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "804:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 11653,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 11651,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11610,
                              "src": "829:11:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 11650,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "819:9:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 11652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "819:22:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "804:37:43"
                      },
                      {
                        "expression": {
                          "id": 11666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11654,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11613,
                            "src": "851:4:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 11662,
                                    "name": "_deployData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11610,
                                    "src": "892:11:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 11663,
                                    "name": "masterDeployer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11681,
                                    "src": "905:14:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 11659,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "866:13:43",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_creation_nonpayable$_t_bytes_memory_ptr_$_t_address_$returns$_t_contract$_IndexPool_$11592_$",
                                      "typeString": "function (bytes memory,address) returns (contract IndexPool)"
                                    },
                                    "typeName": {
                                      "id": 11658,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 11657,
                                        "name": "IndexPool",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 11592,
                                        "src": "870:9:43"
                                      },
                                      "referencedDeclaration": 11592,
                                      "src": "870:9:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IndexPool_$11592",
                                        "typeString": "contract IndexPool"
                                      }
                                    }
                                  },
                                  "id": 11661,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "names": [
                                    "salt"
                                  ],
                                  "nodeType": "FunctionCallOptions",
                                  "options": [
                                    {
                                      "id": 11660,
                                      "name": "salt",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11649,
                                      "src": "886:4:43",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "src": "866:25:43",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_creation_nonpayable$_t_bytes_memory_ptr_$_t_address_$returns$_t_contract$_IndexPool_$11592_$salt",
                                    "typeString": "function (bytes memory,address) returns (contract IndexPool)"
                                  }
                                },
                                "id": 11664,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "866:54:43",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IndexPool_$11592",
                                  "typeString": "contract IndexPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IndexPool_$11592",
                                  "typeString": "contract IndexPool"
                                }
                              ],
                              "id": 11656,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "858:7:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 11655,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "858:7:43",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 11665,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "858:63:43",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "851:70:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 11667,
                        "nodeType": "ExpressionStatement",
                        "src": "851:70:43"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 11669,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11613,
                              "src": "945:4:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 11670,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11619,
                              "src": "951:6:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "id": 11671,
                              "name": "salt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11649,
                              "src": "959:4:43",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 11668,
                            "name": "_registerPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11818,
                            "src": "931:13:43",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address[] memory,bytes32)"
                            }
                          },
                          "id": 11672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "931:33:43",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11673,
                        "nodeType": "ExpressionStatement",
                        "src": "931:33:43"
                      }
                    ]
                  },
                  "functionSelector": "27c3cae1",
                  "id": 11675,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deployPool",
                  "nameLocation": "368:10:43",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11611,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11610,
                        "mutability": "mutable",
                        "name": "_deployData",
                        "nameLocation": "392:11:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 11675,
                        "src": "379:24:43",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 11609,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "379:5:43",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "378:26:43"
                  },
                  "returnParameters": {
                    "id": 11614,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11613,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "431:4:43",
                        "nodeType": "VariableDeclaration",
                        "scope": 11675,
                        "src": "423:12:43",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11612,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "423:7:43",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "422:14:43"
                  },
                  "scope": 11676,
                  "src": "359:612:43",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 11677,
              "src": "236:737:43",
              "usedErrors": [
                11694,
                11696,
                11698
              ]
            }
          ],
          "src": "46:928:43"
        },
        "id": 43
      },
      "contracts/pool/PoolDeployer.sol": {
        "ast": {
          "absolutePath": "contracts/pool/PoolDeployer.sol",
          "exportedSymbols": {
            "PoolDeployer": [
              11887
            ]
          },
          "id": 11888,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11678,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:44"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 11679,
                "nodeType": "StructuredDocumentation",
                "src": "72:95:44",
                "text": "@notice Trident pool deployer for whitelisted template factories.\n @author Mudit Gupta."
              },
              "fullyImplemented": true,
              "id": 11887,
              "linearizedBaseContracts": [
                11887
              ],
              "name": "PoolDeployer",
              "nameLocation": "185:12:44",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "functionSelector": "cf58879a",
                  "id": 11681,
                  "mutability": "immutable",
                  "name": "masterDeployer",
                  "nameLocation": "229:14:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 11887,
                  "src": "204:39:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11680,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "204:7:44",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "169c4cef",
                  "id": 11688,
                  "mutability": "mutable",
                  "name": "pools",
                  "nameLocation": "307:5:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 11887,
                  "src": "250:62:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$_$",
                    "typeString": "mapping(address => mapping(address => address[]))"
                  },
                  "typeName": {
                    "id": 11687,
                    "keyType": {
                      "id": 11682,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "258:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "250:49:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$_$",
                      "typeString": "mapping(address => mapping(address => address[]))"
                    },
                    "valueType": {
                      "id": 11686,
                      "keyType": {
                        "id": 11683,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "277:7:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "269:29:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                        "typeString": "mapping(address => address[])"
                      },
                      "valueType": {
                        "baseType": {
                          "id": 11684,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "288:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 11685,
                        "nodeType": "ArrayTypeName",
                        "src": "288:9:44",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "f6ab6d99",
                  "id": 11692,
                  "mutability": "mutable",
                  "name": "configAddress",
                  "nameLocation": "353:13:44",
                  "nodeType": "VariableDeclaration",
                  "scope": 11887,
                  "src": "318:48:44",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                    "typeString": "mapping(bytes32 => address)"
                  },
                  "typeName": {
                    "id": 11691,
                    "keyType": {
                      "id": 11689,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "326:7:44",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "318:27:44",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                      "typeString": "mapping(bytes32 => address)"
                    },
                    "valueType": {
                      "id": 11690,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "337:7:44",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "id": 11694,
                  "name": "UnauthorisedDeployer",
                  "nameLocation": "379:20:44",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 11693,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "399:2:44"
                  },
                  "src": "373:29:44"
                },
                {
                  "id": 11696,
                  "name": "ZeroAddress",
                  "nameLocation": "413:11:44",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 11695,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "424:2:44"
                  },
                  "src": "407:20:44"
                },
                {
                  "id": 11698,
                  "name": "InvalidTokenOrder",
                  "nameLocation": "438:17:44",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 11697,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "455:2:44"
                  },
                  "src": "432:26:44"
                },
                {
                  "body": {
                    "id": 11709,
                    "nodeType": "Block",
                    "src": "486:91:44",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 11703,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 11700,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "500:3:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 11701,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "500:10:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 11702,
                            "name": "masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11681,
                            "src": "514:14:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "500:28:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11707,
                        "nodeType": "IfStatement",
                        "src": "496:63:44",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 11704,
                              "name": "UnauthorisedDeployer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11694,
                              "src": "537:20:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 11705,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "537:22:44",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 11706,
                          "nodeType": "RevertStatement",
                          "src": "530:29:44"
                        }
                      },
                      {
                        "id": 11708,
                        "nodeType": "PlaceholderStatement",
                        "src": "569:1:44"
                      }
                    ]
                  },
                  "id": 11710,
                  "name": "onlyMaster",
                  "nameLocation": "473:10:44",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 11699,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "483:2:44"
                  },
                  "src": "464:113:44",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11729,
                    "nodeType": "Block",
                    "src": "620:114:44",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 11720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11715,
                            "name": "_masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11712,
                            "src": "634:15:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 11718,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "661:1:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 11717,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "653:7:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 11716,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "653:7:44",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 11719,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "653:10:44",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "634:29:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11724,
                        "nodeType": "IfStatement",
                        "src": "630:55:44",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 11721,
                              "name": "ZeroAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11696,
                              "src": "672:11:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 11722,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "672:13:44",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 11723,
                          "nodeType": "RevertStatement",
                          "src": "665:20:44"
                        }
                      },
                      {
                        "expression": {
                          "id": 11727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11725,
                            "name": "masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11681,
                            "src": "695:14:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 11726,
                            "name": "_masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11712,
                            "src": "712:15:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "695:32:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 11728,
                        "nodeType": "ExpressionStatement",
                        "src": "695:32:44"
                      }
                    ]
                  },
                  "id": 11730,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11713,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11712,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "603:15:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 11730,
                        "src": "595:23:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11711,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "595:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "594:25:44"
                  },
                  "returnParameters": {
                    "id": 11714,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "620:0:44"
                  },
                  "scope": 11887,
                  "src": "583:151:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11817,
                    "nodeType": "Block",
                    "src": "866:663:44",
                    "statements": [
                      {
                        "expression": {
                          "id": 11746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 11742,
                              "name": "configAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11692,
                              "src": "936:13:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                "typeString": "mapping(bytes32 => address)"
                              }
                            },
                            "id": 11744,
                            "indexExpression": {
                              "id": 11743,
                              "name": "salt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11737,
                              "src": "950:4:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "936:19:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 11745,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11732,
                            "src": "958:4:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "936:26:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 11747,
                        "nodeType": "ExpressionStatement",
                        "src": "936:26:44"
                      },
                      {
                        "id": 11816,
                        "nodeType": "UncheckedBlock",
                        "src": "1150:373:44",
                        "statements": [
                          {
                            "body": {
                              "id": 11814,
                              "nodeType": "Block",
                              "src": "1218:295:44",
                              "statements": [
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 11768,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "baseExpression": {
                                        "id": 11760,
                                        "name": "tokens",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11735,
                                        "src": "1240:6:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 11762,
                                      "indexExpression": {
                                        "id": 11761,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11749,
                                        "src": "1247:1:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1240:9:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "baseExpression": {
                                        "id": 11763,
                                        "name": "tokens",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11735,
                                        "src": "1253:6:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 11767,
                                      "indexExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 11766,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 11764,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11749,
                                          "src": "1260:1:44",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "hexValue": "31",
                                          "id": 11765,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1264:1:44",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "1260:5:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1253:13:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "1240:26:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 11772,
                                  "nodeType": "IfStatement",
                                  "src": "1236:58:44",
                                  "trueBody": {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 11769,
                                        "name": "InvalidTokenOrder",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11698,
                                        "src": "1275:17:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 11770,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1275:19:44",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 11771,
                                    "nodeType": "RevertStatement",
                                    "src": "1268:26:44"
                                  }
                                },
                                {
                                  "body": {
                                    "id": 11812,
                                    "nodeType": "Block",
                                    "src": "1360:139:44",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 11796,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 11732,
                                              "src": "1415:4:44",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "expression": {
                                              "baseExpression": {
                                                "baseExpression": {
                                                  "id": 11786,
                                                  "name": "pools",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 11688,
                                                  "src": "1382:5:44",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$_$",
                                                    "typeString": "mapping(address => mapping(address => address[] storage ref))"
                                                  }
                                                },
                                                "id": 11793,
                                                "indexExpression": {
                                                  "baseExpression": {
                                                    "id": 11787,
                                                    "name": "tokens",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 11735,
                                                    "src": "1388:6:44",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                      "typeString": "address[] memory"
                                                    }
                                                  },
                                                  "id": 11789,
                                                  "indexExpression": {
                                                    "id": 11788,
                                                    "name": "i",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 11749,
                                                    "src": "1395:1:44",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "1388:9:44",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "1382:16:44",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                  "typeString": "mapping(address => address[] storage ref)"
                                                }
                                              },
                                              "id": 11794,
                                              "indexExpression": {
                                                "baseExpression": {
                                                  "id": 11790,
                                                  "name": "tokens",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 11735,
                                                  "src": "1399:6:44",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                    "typeString": "address[] memory"
                                                  }
                                                },
                                                "id": 11792,
                                                "indexExpression": {
                                                  "id": 11791,
                                                  "name": "j",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 11774,
                                                  "src": "1406:1:44",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "1399:9:44",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "1382:27:44",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                "typeString": "address[] storage ref"
                                              }
                                            },
                                            "id": 11795,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "push",
                                            "nodeType": "MemberAccess",
                                            "src": "1382:32:44",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$bound_to$_t_array$_t_address_$dyn_storage_ptr_$",
                                              "typeString": "function (address[] storage pointer,address)"
                                            }
                                          },
                                          "id": 11797,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1382:38:44",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 11798,
                                        "nodeType": "ExpressionStatement",
                                        "src": "1382:38:44"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 11809,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 11732,
                                              "src": "1475:4:44",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "expression": {
                                              "baseExpression": {
                                                "baseExpression": {
                                                  "id": 11799,
                                                  "name": "pools",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 11688,
                                                  "src": "1442:5:44",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$_$",
                                                    "typeString": "mapping(address => mapping(address => address[] storage ref))"
                                                  }
                                                },
                                                "id": 11806,
                                                "indexExpression": {
                                                  "baseExpression": {
                                                    "id": 11800,
                                                    "name": "tokens",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 11735,
                                                    "src": "1448:6:44",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                      "typeString": "address[] memory"
                                                    }
                                                  },
                                                  "id": 11802,
                                                  "indexExpression": {
                                                    "id": 11801,
                                                    "name": "j",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 11774,
                                                    "src": "1455:1:44",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "IndexAccess",
                                                  "src": "1448:9:44",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "1442:16:44",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                                  "typeString": "mapping(address => address[] storage ref)"
                                                }
                                              },
                                              "id": 11807,
                                              "indexExpression": {
                                                "baseExpression": {
                                                  "id": 11803,
                                                  "name": "tokens",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 11735,
                                                  "src": "1459:6:44",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                    "typeString": "address[] memory"
                                                  }
                                                },
                                                "id": 11805,
                                                "indexExpression": {
                                                  "id": 11804,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 11749,
                                                  "src": "1466:1:44",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "1459:9:44",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "1442:27:44",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                "typeString": "address[] storage ref"
                                              }
                                            },
                                            "id": 11808,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "push",
                                            "nodeType": "MemberAccess",
                                            "src": "1442:32:44",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$bound_to$_t_array$_t_address_$dyn_storage_ptr_$",
                                              "typeString": "function (address[] storage pointer,address)"
                                            }
                                          },
                                          "id": 11810,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1442:38:44",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 11811,
                                        "nodeType": "ExpressionStatement",
                                        "src": "1442:38:44"
                                      }
                                    ]
                                  },
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 11782,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 11779,
                                      "name": "j",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11774,
                                      "src": "1336:1:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 11780,
                                        "name": "tokens",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11735,
                                        "src": "1340:6:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 11781,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "1340:13:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1336:17:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 11813,
                                  "initializationExpression": {
                                    "assignments": [
                                      11774
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 11774,
                                        "mutability": "mutable",
                                        "name": "j",
                                        "nameLocation": "1325:1:44",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 11813,
                                        "src": "1317:9:44",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 11773,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1317:7:44",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 11778,
                                    "initialValue": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 11777,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 11775,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11749,
                                        "src": "1329:1:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 11776,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1333:1:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "1329:5:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "1317:17:44"
                                  },
                                  "loopExpression": {
                                    "expression": {
                                      "id": 11784,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": false,
                                      "src": "1355:3:44",
                                      "subExpression": {
                                        "id": 11783,
                                        "name": "j",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11774,
                                        "src": "1355:1:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 11785,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1355:3:44"
                                  },
                                  "nodeType": "ForStatement",
                                  "src": "1312:187:44"
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 11756,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 11751,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11749,
                                "src": "1190:1:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 11755,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 11752,
                                    "name": "tokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11735,
                                    "src": "1194:6:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 11753,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "1194:13:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 11754,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1210:1:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "1194:17:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1190:21:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 11815,
                            "initializationExpression": {
                              "assignments": [
                                11749
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 11749,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nameLocation": "1187:1:44",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 11815,
                                  "src": "1179:9:44",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 11748,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1179:7:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11750,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1179:9:44"
                            },
                            "loopExpression": {
                              "expression": {
                                "id": 11758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "1213:3:44",
                                "subExpression": {
                                  "id": 11757,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11749,
                                  "src": "1213:1:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 11759,
                              "nodeType": "ExpressionStatement",
                              "src": "1213:3:44"
                            },
                            "nodeType": "ForStatement",
                            "src": "1174:339:44"
                          }
                        ]
                      }
                    ]
                  },
                  "id": 11818,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 11740,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 11739,
                        "name": "onlyMaster",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11710,
                        "src": "855:10:44"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "855:10:44"
                    }
                  ],
                  "name": "_registerPool",
                  "nameLocation": "749:13:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11738,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11732,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "780:4:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 11818,
                        "src": "772:12:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11731,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "772:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11735,
                        "mutability": "mutable",
                        "name": "tokens",
                        "nameLocation": "811:6:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 11818,
                        "src": "794:23:44",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11733,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "794:7:44",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 11734,
                          "nodeType": "ArrayTypeName",
                          "src": "794:9:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11737,
                        "mutability": "mutable",
                        "name": "salt",
                        "nameLocation": "835:4:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 11818,
                        "src": "827:12:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 11736,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "827:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "762:83:44"
                  },
                  "returnParameters": {
                    "id": 11741,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "866:0:44"
                  },
                  "scope": 11887,
                  "src": "740:789:44",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11836,
                    "nodeType": "Block",
                    "src": "1625:53:44",
                    "statements": [
                      {
                        "expression": {
                          "id": 11834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11827,
                            "name": "count",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11825,
                            "src": "1635:5:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "baseExpression": {
                                "baseExpression": {
                                  "id": 11828,
                                  "name": "pools",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11688,
                                  "src": "1643:5:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$_$",
                                    "typeString": "mapping(address => mapping(address => address[] storage ref))"
                                  }
                                },
                                "id": 11830,
                                "indexExpression": {
                                  "id": 11829,
                                  "name": "token0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11820,
                                  "src": "1649:6:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1643:13:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                  "typeString": "mapping(address => address[] storage ref)"
                                }
                              },
                              "id": 11832,
                              "indexExpression": {
                                "id": 11831,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11822,
                                "src": "1657:6:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1643:21:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 11833,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1643:28:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1635:36:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11835,
                        "nodeType": "ExpressionStatement",
                        "src": "1635:36:44"
                      }
                    ]
                  },
                  "functionSelector": "5bc93d6c",
                  "id": 11837,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "poolsCount",
                  "nameLocation": "1544:10:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11823,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11820,
                        "mutability": "mutable",
                        "name": "token0",
                        "nameLocation": "1563:6:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 11837,
                        "src": "1555:14:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11819,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1555:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11822,
                        "mutability": "mutable",
                        "name": "token1",
                        "nameLocation": "1579:6:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 11837,
                        "src": "1571:14:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11821,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1571:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1554:32:44"
                  },
                  "returnParameters": {
                    "id": 11826,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11825,
                        "mutability": "mutable",
                        "name": "count",
                        "nameLocation": "1618:5:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 11837,
                        "src": "1610:13:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11824,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1610:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1609:15:44"
                  },
                  "scope": 11887,
                  "src": "1535:143:44",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 11885,
                    "nodeType": "Block",
                    "src": "1858:171:44",
                    "statements": [
                      {
                        "expression": {
                          "id": 11857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11851,
                            "name": "pairPools",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11849,
                            "src": "1868:9:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 11855,
                                "name": "count",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11845,
                                "src": "1894:5:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 11854,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1880:13:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (address[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 11852,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1884:7:44",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 11853,
                                "nodeType": "ArrayTypeName",
                                "src": "1884:9:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                  "typeString": "address[]"
                                }
                              }
                            },
                            "id": 11856,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1880:20:44",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "1868:32:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 11858,
                        "nodeType": "ExpressionStatement",
                        "src": "1868:32:44"
                      },
                      {
                        "body": {
                          "id": 11883,
                          "nodeType": "Block",
                          "src": "1946:77:44",
                          "statements": [
                            {
                              "expression": {
                                "id": 11881,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 11869,
                                    "name": "pairPools",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11849,
                                    "src": "1960:9:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 11871,
                                  "indexExpression": {
                                    "id": 11870,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11860,
                                    "src": "1970:1:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1960:12:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "baseExpression": {
                                        "id": 11872,
                                        "name": "pools",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11688,
                                        "src": "1975:5:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$_$",
                                          "typeString": "mapping(address => mapping(address => address[] storage ref))"
                                        }
                                      },
                                      "id": 11874,
                                      "indexExpression": {
                                        "id": 11873,
                                        "name": "token0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11839,
                                        "src": "1981:6:44",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1975:13:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_address_$dyn_storage_$",
                                        "typeString": "mapping(address => address[] storage ref)"
                                      }
                                    },
                                    "id": 11876,
                                    "indexExpression": {
                                      "id": 11875,
                                      "name": "token1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11841,
                                      "src": "1989:6:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1975:21:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 11880,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 11879,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 11877,
                                      "name": "startIndex",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11843,
                                      "src": "1997:10:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "id": 11878,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11860,
                                      "src": "2010:1:44",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1997:14:44",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1975:37:44",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "1960:52:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 11882,
                              "nodeType": "ExpressionStatement",
                              "src": "1960:52:44"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 11863,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11860,
                            "src": "1930:1:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 11864,
                            "name": "count",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11845,
                            "src": "1934:5:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1930:9:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 11884,
                        "initializationExpression": {
                          "assignments": [
                            11860
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 11860,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "1923:1:44",
                              "nodeType": "VariableDeclaration",
                              "scope": 11884,
                              "src": "1915:9:44",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 11859,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1915:7:44",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 11862,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 11861,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1927:1:44",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1915:13:44"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 11867,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "1941:3:44",
                            "subExpression": {
                              "id": 11866,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11860,
                              "src": "1941:1:44",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 11868,
                          "nodeType": "ExpressionStatement",
                          "src": "1941:3:44"
                        },
                        "nodeType": "ForStatement",
                        "src": "1910:113:44"
                      }
                    ]
                  },
                  "functionSelector": "71a25812",
                  "id": 11886,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPools",
                  "nameLocation": "1693:8:44",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11846,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11839,
                        "mutability": "mutable",
                        "name": "token0",
                        "nameLocation": "1719:6:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 11886,
                        "src": "1711:14:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11838,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1711:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11841,
                        "mutability": "mutable",
                        "name": "token1",
                        "nameLocation": "1743:6:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 11886,
                        "src": "1735:14:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11840,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1735:7:44",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11843,
                        "mutability": "mutable",
                        "name": "startIndex",
                        "nameLocation": "1767:10:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 11886,
                        "src": "1759:18:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11842,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1759:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11845,
                        "mutability": "mutable",
                        "name": "count",
                        "nameLocation": "1795:5:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 11886,
                        "src": "1787:13:44",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11844,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1787:7:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1701:105:44"
                  },
                  "returnParameters": {
                    "id": 11850,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11849,
                        "mutability": "mutable",
                        "name": "pairPools",
                        "nameLocation": "1847:9:44",
                        "nodeType": "VariableDeclaration",
                        "scope": 11886,
                        "src": "1830:26:44",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 11847,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1830:7:44",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 11848,
                          "nodeType": "ArrayTypeName",
                          "src": "1830:9:44",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1829:28:44"
                  },
                  "scope": 11887,
                  "src": "1684:345:44",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 11888,
              "src": "167:1864:44",
              "usedErrors": [
                11694,
                11696,
                11698
              ]
            }
          ],
          "src": "46:1986:44"
        },
        "id": 44
      },
      "contracts/pool/TridentERC20.sol": {
        "ast": {
          "absolutePath": "contracts/pool/TridentERC20.sol",
          "exportedSymbols": {
            "TridentERC20": [
              12279
            ]
          },
          "id": 12280,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 11889,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:45"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 11890,
                "nodeType": "StructuredDocumentation",
                "src": "72:205:45",
                "text": "@notice Trident pool ERC-20 with EIP-2612 extension.\n @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol,\n License-Identifier: AGPL-3.0-only."
              },
              "fullyImplemented": true,
              "id": 12279,
              "linearizedBaseContracts": [
                12279
              ],
              "name": "TridentERC20",
              "nameLocation": "295:12:45",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 11898,
                  "name": "Transfer",
                  "nameLocation": "320:8:45",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 11897,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11892,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "345:6:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 11898,
                        "src": "329:22:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11891,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "329:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11894,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "369:9:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 11898,
                        "src": "353:25:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11893,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "353:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11896,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "388:6:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 11898,
                        "src": "380:14:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11895,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "380:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "328:67:45"
                  },
                  "src": "314:82:45"
                },
                {
                  "anonymous": false,
                  "id": 11906,
                  "name": "Approval",
                  "nameLocation": "407:8:45",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 11905,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11900,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "432:5:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 11906,
                        "src": "416:21:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11899,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "416:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11902,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "455:7:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 11906,
                        "src": "439:23:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 11901,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "439:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 11904,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "472:6:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 11906,
                        "src": "464:14:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11903,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "464:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "415:64:45"
                  },
                  "src": "401:79:45"
                },
                {
                  "constant": true,
                  "functionSelector": "06fdde03",
                  "id": 11909,
                  "mutability": "constant",
                  "name": "name",
                  "nameLocation": "509:4:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 12279,
                  "src": "486:46:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 11907,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "486:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "hexValue": "5375736869204c5020546f6b656e",
                    "id": 11908,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "516:16:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_c2bf45081e840722410522aa366600d7fe4da5bfb5a5b417f4d5125b4ed180a4",
                      "typeString": "literal_string \"Sushi LP Token\""
                    },
                    "value": "Sushi LP Token"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "95d89b41",
                  "id": 11912,
                  "mutability": "constant",
                  "name": "symbol",
                  "nameLocation": "561:6:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 12279,
                  "src": "538:37:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 11910,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "538:6:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "hexValue": "534c50",
                    "id": 11911,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "570:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_e0136b3661826a483734248681e4f59ae66bc6065ceb43fdd469ecb22c21d745",
                      "typeString": "literal_string \"SLP\""
                    },
                    "value": "SLP"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "313ce567",
                  "id": 11915,
                  "mutability": "constant",
                  "name": "decimals",
                  "nameLocation": "603:8:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 12279,
                  "src": "581:35:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 11913,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "581:5:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "3138",
                    "id": 11914,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "614:2:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_18_by_1",
                      "typeString": "int_const 18"
                    },
                    "value": "18"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "18160ddd",
                  "id": 11917,
                  "mutability": "mutable",
                  "name": "totalSupply",
                  "nameLocation": "638:11:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 12279,
                  "src": "623:26:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11916,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "623:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 11918,
                    "nodeType": "StructuredDocumentation",
                    "src": "655:37:45",
                    "text": "@notice owner -> balance mapping."
                  },
                  "functionSelector": "70a08231",
                  "id": 11922,
                  "mutability": "mutable",
                  "name": "balanceOf",
                  "nameLocation": "732:9:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 12279,
                  "src": "697:44:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 11921,
                    "keyType": {
                      "id": 11919,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "705:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "697:27:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 11920,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "716:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 11923,
                    "nodeType": "StructuredDocumentation",
                    "src": "747:50:45",
                    "text": "@notice owner -> spender -> allowance mapping."
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 11929,
                  "mutability": "mutable",
                  "name": "allowance",
                  "nameLocation": "857:9:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 12279,
                  "src": "802:64:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 11928,
                    "keyType": {
                      "id": 11924,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "810:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "802:47:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 11927,
                      "keyType": {
                        "id": 11925,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "829:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "821:27:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 11926,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "840:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 11930,
                    "nodeType": "StructuredDocumentation",
                    "src": "873:51:45",
                    "text": "@notice Chain Id at this contract's deployment."
                  },
                  "id": 11932,
                  "mutability": "immutable",
                  "name": "DOMAIN_SEPARATOR_CHAIN_ID",
                  "nameLocation": "956:25:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 12279,
                  "src": "929:52:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11931,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "929:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 11933,
                    "nodeType": "StructuredDocumentation",
                    "src": "987:70:45",
                    "text": "@notice EIP-712 typehash for this contract's domain at deployment."
                  },
                  "id": 11935,
                  "mutability": "immutable",
                  "name": "_DOMAIN_SEPARATOR",
                  "nameLocation": "1089:17:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 12279,
                  "src": "1062:44:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11934,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1062:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 11936,
                    "nodeType": "StructuredDocumentation",
                    "src": "1112:65:45",
                    "text": "@notice EIP-712 typehash for this contract's {permit} struct."
                  },
                  "functionSelector": "30adf81f",
                  "id": 11941,
                  "mutability": "constant",
                  "name": "PERMIT_TYPEHASH",
                  "nameLocation": "1206:15:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 12279,
                  "src": "1182:145:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11937,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1182:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529",
                        "id": 11939,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1242:84:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9",
                          "typeString": "literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""
                        },
                        "value": "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9",
                          "typeString": "literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""
                        }
                      ],
                      "id": 11938,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1232:9:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 11940,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1232:95:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 11942,
                    "nodeType": "StructuredDocumentation",
                    "src": "1333:52:45",
                    "text": "@notice owner -> nonce mapping used in {permit}."
                  },
                  "functionSelector": "7ecebe00",
                  "id": 11946,
                  "mutability": "mutable",
                  "name": "nonces",
                  "nameLocation": "1425:6:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 12279,
                  "src": "1390:41:45",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 11945,
                    "keyType": {
                      "id": 11943,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1398:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1390:27:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 11944,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1409:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 11959,
                    "nodeType": "Block",
                    "src": "1452:115:45",
                    "statements": [
                      {
                        "expression": {
                          "id": 11952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11949,
                            "name": "DOMAIN_SEPARATOR_CHAIN_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11932,
                            "src": "1462:25:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 11950,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "1490:5:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 11951,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "chainid",
                            "nodeType": "MemberAccess",
                            "src": "1490:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1462:41:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11953,
                        "nodeType": "ExpressionStatement",
                        "src": "1462:41:45"
                      },
                      {
                        "expression": {
                          "id": 11957,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11954,
                            "name": "_DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11935,
                            "src": "1513:17:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 11955,
                              "name": "_calculateDomainSeparator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11995,
                              "src": "1533:25:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                                "typeString": "function () view returns (bytes32)"
                              }
                            },
                            "id": 11956,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1533:27:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "1513:47:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 11958,
                        "nodeType": "ExpressionStatement",
                        "src": "1513:47:45"
                      }
                    ]
                  },
                  "id": 11960,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11947,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1449:2:45"
                  },
                  "returnParameters": {
                    "id": 11948,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1452:0:45"
                  },
                  "scope": 12279,
                  "src": "1438:129:45",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 11994,
                    "nodeType": "Block",
                    "src": "1658:346:45",
                    "statements": [
                      {
                        "expression": {
                          "id": 11992,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 11965,
                            "name": "domainSeperator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11963,
                            "src": "1668:15:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                                        "id": 11970,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1747:84:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                          "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                        },
                                        "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                          "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                        }
                                      ],
                                      "id": 11969,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "1737:9:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 11971,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1737:95:45",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 11975,
                                            "name": "name",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 11909,
                                            "src": "1866:4:45",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          ],
                                          "id": 11974,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1860:5:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": {
                                            "id": 11973,
                                            "name": "bytes",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1860:5:45",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 11976,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1860:11:45",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 11972,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "1850:9:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 11977,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1850:22:45",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "hexValue": "31",
                                            "id": 11981,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1906:3:45",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                              "typeString": "literal_string \"1\""
                                            },
                                            "value": "1"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                              "typeString": "literal_string \"1\""
                                            }
                                          ],
                                          "id": 11980,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1900:5:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": {
                                            "id": 11979,
                                            "name": "bytes",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1900:5:45",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 11982,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1900:10:45",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 11978,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "1890:9:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 11983,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1890:21:45",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 11984,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "1929:5:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 11985,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "chainid",
                                    "nodeType": "MemberAccess",
                                    "src": "1929:13:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 11988,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "1968:4:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_TridentERC20_$12279",
                                          "typeString": "contract TridentERC20"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_TridentERC20_$12279",
                                          "typeString": "contract TridentERC20"
                                        }
                                      ],
                                      "id": 11987,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1960:7:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 11986,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1960:7:45",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 11989,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1960:13:45",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 11967,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "1709:3:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 11968,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "src": "1709:10:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 11990,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1709:278:45",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 11966,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "1686:9:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 11991,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1686:311:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "1668:329:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 11993,
                        "nodeType": "ExpressionStatement",
                        "src": "1668:329:45"
                      }
                    ]
                  },
                  "id": 11995,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_calculateDomainSeparator",
                  "nameLocation": "1582:25:45",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11961,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1607:2:45"
                  },
                  "returnParameters": {
                    "id": 11964,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11963,
                        "mutability": "mutable",
                        "name": "domainSeperator",
                        "nameLocation": "1641:15:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 11995,
                        "src": "1633:23:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 11962,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1633:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1632:25:45"
                  },
                  "scope": 12279,
                  "src": "1573:431:45",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12012,
                    "nodeType": "Block",
                    "src": "2145:127:45",
                    "statements": [
                      {
                        "expression": {
                          "id": 12010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12001,
                            "name": "domainSeperator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11999,
                            "src": "2155:15:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 12005,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 12002,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "2173:5:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 12003,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "chainid",
                                "nodeType": "MemberAccess",
                                "src": "2173:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 12004,
                                "name": "DOMAIN_SEPARATOR_CHAIN_ID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11932,
                                "src": "2190:25:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2173:42:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 12007,
                                "name": "_calculateDomainSeparator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11995,
                                "src": "2238:25:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                                  "typeString": "function () view returns (bytes32)"
                                }
                              },
                              "id": 12008,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2238:27:45",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "id": 12009,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "2173:92:45",
                            "trueExpression": {
                              "id": 12006,
                              "name": "_DOMAIN_SEPARATOR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11935,
                              "src": "2218:17:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2155:110:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 12011,
                        "nodeType": "ExpressionStatement",
                        "src": "2155:110:45"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 11996,
                    "nodeType": "StructuredDocumentation",
                    "src": "2010:56:45",
                    "text": "@notice EIP-712 typehash for this contract's domain."
                  },
                  "functionSelector": "3644e515",
                  "id": 12013,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "DOMAIN_SEPARATOR",
                  "nameLocation": "2080:16:45",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 11997,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2096:2:45"
                  },
                  "returnParameters": {
                    "id": 12000,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 11999,
                        "mutability": "mutable",
                        "name": "domainSeperator",
                        "nameLocation": "2128:15:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12013,
                        "src": "2120:23:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 11998,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2120:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2119:25:45"
                  },
                  "scope": 12279,
                  "src": "2071:201:45",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 12041,
                    "nodeType": "Block",
                    "src": "2655:129:45",
                    "statements": [
                      {
                        "expression": {
                          "id": 12030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 12023,
                                "name": "allowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11929,
                                "src": "2665:9:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 12027,
                              "indexExpression": {
                                "expression": {
                                  "id": 12024,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "2675:3:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 12025,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "2675:10:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2665:21:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 12028,
                            "indexExpression": {
                              "id": 12026,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12016,
                              "src": "2687:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2665:30:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12029,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12018,
                            "src": "2698:6:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2665:39:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12031,
                        "nodeType": "ExpressionStatement",
                        "src": "2665:39:45"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 12033,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2728:3:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12034,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2728:10:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12035,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12016,
                              "src": "2740:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12036,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12018,
                              "src": "2749:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12032,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11906,
                            "src": "2719:8:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 12037,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2719:37:45",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12038,
                        "nodeType": "EmitStatement",
                        "src": "2714:42:45"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 12039,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2773:4:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 12022,
                        "id": 12040,
                        "nodeType": "Return",
                        "src": "2766:11:45"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12014,
                    "nodeType": "StructuredDocumentation",
                    "src": "2278:298:45",
                    "text": "@notice Approves `amount` from `msg.sender` to be spent by `spender`.\n @param spender Address of the party that can pull tokens from `msg.sender`'s account.\n @param amount The maximum collective `amount` that `spender` can pull.\n @return (bool) Returns 'true' if succeeded."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 12042,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "2590:7:45",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12019,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12016,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "2606:7:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12042,
                        "src": "2598:15:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12015,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2598:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12018,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2623:6:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12042,
                        "src": "2615:14:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12017,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2615:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2597:33:45"
                  },
                  "returnParameters": {
                    "id": 12022,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12021,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12042,
                        "src": "2649:4:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12020,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2649:4:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2648:6:45"
                  },
                  "scope": 12279,
                  "src": "2581:203:45",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 12075,
                    "nodeType": "Block",
                    "src": "3101:316:45",
                    "statements": [
                      {
                        "expression": {
                          "id": 12057,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 12052,
                              "name": "balanceOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11922,
                              "src": "3111:9:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 12055,
                            "indexExpression": {
                              "expression": {
                                "id": 12053,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3121:3:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12054,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "3121:10:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3111:21:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 12056,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12047,
                            "src": "3136:6:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3111:31:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12058,
                        "nodeType": "ExpressionStatement",
                        "src": "3111:31:45"
                      },
                      {
                        "id": 12065,
                        "nodeType": "UncheckedBlock",
                        "src": "3271:65:45",
                        "statements": [
                          {
                            "expression": {
                              "id": 12063,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 12059,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11922,
                                  "src": "3295:9:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 12061,
                                "indexExpression": {
                                  "id": 12060,
                                  "name": "recipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12045,
                                  "src": "3305:9:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "3295:20:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "id": 12062,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12047,
                                "src": "3319:6:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3295:30:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 12064,
                            "nodeType": "ExpressionStatement",
                            "src": "3295:30:45"
                          }
                        ]
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 12067,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3359:3:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12068,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "3359:10:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12069,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12045,
                              "src": "3371:9:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12070,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12047,
                              "src": "3382:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12066,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11898,
                            "src": "3350:8:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 12071,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3350:39:45",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12072,
                        "nodeType": "EmitStatement",
                        "src": "3345:44:45"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 12073,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3406:4:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 12051,
                        "id": 12074,
                        "nodeType": "Return",
                        "src": "3399:11:45"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12043,
                    "nodeType": "StructuredDocumentation",
                    "src": "2790:229:45",
                    "text": "@notice Transfers `amount` tokens from `msg.sender` to `recipient`.\n @param recipient The address to move tokens to.\n @param amount The token `amount` to move.\n @return (bool) Returns 'true' if succeeded."
                  },
                  "functionSelector": "a9059cbb",
                  "id": 12076,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nameLocation": "3033:8:45",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12048,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12045,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "3050:9:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12076,
                        "src": "3042:17:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12044,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3042:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12047,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "3069:6:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12076,
                        "src": "3061:14:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12046,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3061:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3041:35:45"
                  },
                  "returnParameters": {
                    "id": 12051,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12050,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12076,
                        "src": "3095:4:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12049,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3095:4:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3094:6:45"
                  },
                  "scope": 12279,
                  "src": "3024:393:45",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 12132,
                    "nodeType": "Block",
                    "src": "3868:437:45",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 12088,
                                "name": "allowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11929,
                                "src": "3882:9:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 12090,
                              "indexExpression": {
                                "id": 12089,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12079,
                                "src": "3892:6:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3882:17:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 12093,
                            "indexExpression": {
                              "expression": {
                                "id": 12091,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3900:3:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 12092,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "3900:10:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3882:29:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 12096,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3920:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 12095,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3920:7:45",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  }
                                ],
                                "id": 12094,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "3915:4:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 12097,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3915:13:45",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint256",
                                "typeString": "type(uint256)"
                              }
                            },
                            "id": 12098,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "3915:17:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3882:50:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12110,
                        "nodeType": "IfStatement",
                        "src": "3878:120:45",
                        "trueBody": {
                          "id": 12109,
                          "nodeType": "Block",
                          "src": "3934:64:45",
                          "statements": [
                            {
                              "expression": {
                                "id": 12107,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 12100,
                                      "name": "allowance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11929,
                                      "src": "3948:9:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 12104,
                                    "indexExpression": {
                                      "id": 12101,
                                      "name": "sender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12079,
                                      "src": "3958:6:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3948:17:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 12105,
                                  "indexExpression": {
                                    "expression": {
                                      "id": 12102,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "3966:3:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 12103,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "3966:10:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3948:29:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 12106,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12083,
                                  "src": "3981:6:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3948:39:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12108,
                              "nodeType": "ExpressionStatement",
                              "src": "3948:39:45"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 12115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 12111,
                              "name": "balanceOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11922,
                              "src": "4007:9:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 12113,
                            "indexExpression": {
                              "id": 12112,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12079,
                              "src": "4017:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4007:17:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 12114,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12083,
                            "src": "4028:6:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4007:27:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12116,
                        "nodeType": "ExpressionStatement",
                        "src": "4007:27:45"
                      },
                      {
                        "id": 12123,
                        "nodeType": "UncheckedBlock",
                        "src": "4163:65:45",
                        "statements": [
                          {
                            "expression": {
                              "id": 12121,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 12117,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11922,
                                  "src": "4187:9:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 12119,
                                "indexExpression": {
                                  "id": 12118,
                                  "name": "recipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12081,
                                  "src": "4197:9:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "4187:20:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "id": 12120,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12083,
                                "src": "4211:6:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4187:30:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 12122,
                            "nodeType": "ExpressionStatement",
                            "src": "4187:30:45"
                          }
                        ]
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 12125,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12079,
                              "src": "4251:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12126,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12081,
                              "src": "4259:9:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12127,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12083,
                              "src": "4270:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12124,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11898,
                            "src": "4242:8:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 12128,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4242:35:45",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12129,
                        "nodeType": "EmitStatement",
                        "src": "4237:40:45"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 12130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4294:4:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 12087,
                        "id": 12131,
                        "nodeType": "Return",
                        "src": "4287:11:45"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12077,
                    "nodeType": "StructuredDocumentation",
                    "src": "3423:313:45",
                    "text": "@notice Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\n @param sender Address to pull tokens `from`.\n @param recipient The address to move tokens to.\n @param amount The token `amount` to move.\n @return (bool) Returns 'true' if succeeded."
                  },
                  "functionSelector": "23b872dd",
                  "id": 12133,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "3750:12:45",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12084,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12079,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "3780:6:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12133,
                        "src": "3772:14:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12078,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3772:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12081,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "3804:9:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12133,
                        "src": "3796:17:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12080,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3796:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12083,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "3831:6:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12133,
                        "src": "3823:14:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12082,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3823:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3762:81:45"
                  },
                  "returnParameters": {
                    "id": 12087,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12086,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 12133,
                        "src": "3862:4:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 12085,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3862:4:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3861:6:45"
                  },
                  "scope": 12279,
                  "src": "3741:564:45",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 12221,
                    "nodeType": "Block",
                    "src": "4969:612:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 12155,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12152,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12142,
                                "src": "4987:8:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "expression": {
                                  "id": 12153,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "4999:5:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 12154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "4999:15:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4987:27:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5045524d49545f444541444c494e455f45585049524544",
                              "id": 12156,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5016:25:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e",
                                "typeString": "literal_string \"PERMIT_DEADLINE_EXPIRED\""
                              },
                              "value": "PERMIT_DEADLINE_EXPIRED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e",
                                "typeString": "literal_string \"PERMIT_DEADLINE_EXPIRED\""
                              }
                            ],
                            "id": 12151,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4979:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12157,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4979:63:45",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12158,
                        "nodeType": "ExpressionStatement",
                        "src": "4979:63:45"
                      },
                      {
                        "assignments": [
                          12160
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12160,
                            "mutability": "mutable",
                            "name": "digest",
                            "nameLocation": "5060:6:45",
                            "nodeType": "VariableDeclaration",
                            "scope": 12221,
                            "src": "5052:14:45",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 12159,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5052:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12183,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "1901",
                                  "id": 12164,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5126:10:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 12165,
                                    "name": "DOMAIN_SEPARATOR",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12013,
                                    "src": "5154:16:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                                      "typeString": "function () view returns (bytes32)"
                                    }
                                  },
                                  "id": 12166,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5154:18:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 12170,
                                          "name": "PERMIT_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11941,
                                          "src": "5211:15:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "id": 12171,
                                          "name": "owner",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12136,
                                          "src": "5228:5:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 12172,
                                          "name": "spender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12138,
                                          "src": "5235:7:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 12173,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12140,
                                          "src": "5244:6:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 12177,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "UnaryOperation",
                                          "operator": "++",
                                          "prefix": false,
                                          "src": "5252:15:45",
                                          "subExpression": {
                                            "baseExpression": {
                                              "id": 12174,
                                              "name": "nonces",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 11946,
                                              "src": "5252:6:45",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                "typeString": "mapping(address => uint256)"
                                              }
                                            },
                                            "id": 12176,
                                            "indexExpression": {
                                              "id": 12175,
                                              "name": "owner",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 12136,
                                              "src": "5259:5:45",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "5252:13:45",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 12178,
                                          "name": "deadline",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12142,
                                          "src": "5269:8:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 12168,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "5200:3:45",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 12169,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "src": "5200:10:45",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 12179,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5200:78:45",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 12167,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "5190:9:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 12180,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5190:89:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 12162,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "5092:3:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 12163,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "5092:16:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 12181,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5092:201:45",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 12161,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "5069:9:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 12182,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5069:234:45",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5052:251:45"
                      },
                      {
                        "assignments": [
                          12185
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12185,
                            "mutability": "mutable",
                            "name": "recoveredAddress",
                            "nameLocation": "5321:16:45",
                            "nodeType": "VariableDeclaration",
                            "scope": 12221,
                            "src": "5313:24:45",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12184,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5313:7:45",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12192,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 12187,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12160,
                              "src": "5350:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 12188,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12144,
                              "src": "5358:1:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 12189,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12146,
                              "src": "5361:1:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 12190,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12148,
                              "src": "5364:1:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 12186,
                            "name": "ecrecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -6,
                            "src": "5340:9:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                            }
                          },
                          "id": 12191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5340:26:45",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5313:53:45"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 12203,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 12199,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 12194,
                                  "name": "recoveredAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12185,
                                  "src": "5384:16:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 12197,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5412:1:45",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 12196,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5404:7:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 12195,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5404:7:45",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 12198,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5404:10:45",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5384:30:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 12202,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 12200,
                                  "name": "recoveredAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12185,
                                  "src": "5418:16:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 12201,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12136,
                                  "src": "5438:5:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5418:25:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5384:59:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f5045524d49545f5349474e4154555245",
                              "id": 12204,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5445:26:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb",
                                "typeString": "literal_string \"INVALID_PERMIT_SIGNATURE\""
                              },
                              "value": "INVALID_PERMIT_SIGNATURE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb",
                                "typeString": "literal_string \"INVALID_PERMIT_SIGNATURE\""
                              }
                            ],
                            "id": 12193,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5376:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 12205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5376:96:45",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12206,
                        "nodeType": "ExpressionStatement",
                        "src": "5376:96:45"
                      },
                      {
                        "expression": {
                          "id": 12213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 12207,
                                "name": "allowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11929,
                                "src": "5482:9:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 12210,
                              "indexExpression": {
                                "id": 12208,
                                "name": "recoveredAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12185,
                                "src": "5492:16:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5482:27:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 12211,
                            "indexExpression": {
                              "id": 12209,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12138,
                              "src": "5510:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5482:36:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12212,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12140,
                            "src": "5521:6:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5482:45:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12214,
                        "nodeType": "ExpressionStatement",
                        "src": "5482:45:45"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 12216,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12136,
                              "src": "5551:5:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12217,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12138,
                              "src": "5558:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12218,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12140,
                              "src": "5567:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12215,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11906,
                            "src": "5542:8:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 12219,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5542:32:45",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12220,
                        "nodeType": "EmitStatement",
                        "src": "5537:37:45"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12134,
                    "nodeType": "StructuredDocumentation",
                    "src": "4311:469:45",
                    "text": "@notice Triggers an approval from `owner` to `spender`.\n @param owner The address to approve from.\n @param spender The address to be approved.\n @param amount The number of tokens that are approved (2^256-1 means infinite).\n @param deadline The time at which to expire the signature.\n @param v The recovery byte of the signature.\n @param r Half of the ECDSA signature pair.\n @param s Half of the ECDSA signature pair."
                  },
                  "functionSelector": "d505accf",
                  "id": 12222,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permit",
                  "nameLocation": "4794:6:45",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12149,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12136,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "4818:5:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12222,
                        "src": "4810:13:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12135,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4810:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12138,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "4841:7:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12222,
                        "src": "4833:15:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12137,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4833:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12140,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "4866:6:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12222,
                        "src": "4858:14:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12139,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4858:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12142,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nameLocation": "4890:8:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12222,
                        "src": "4882:16:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12141,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4882:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12144,
                        "mutability": "mutable",
                        "name": "v",
                        "nameLocation": "4914:1:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12222,
                        "src": "4908:7:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 12143,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "4908:5:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12146,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "4933:1:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12222,
                        "src": "4925:9:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12145,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4925:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12148,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "4952:1:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12222,
                        "src": "4944:9:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12147,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4944:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4800:159:45"
                  },
                  "returnParameters": {
                    "id": 12150,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4969:0:45"
                  },
                  "scope": 12279,
                  "src": "4785:796:45",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 12249,
                    "nodeType": "Block",
                    "src": "5646:285:45",
                    "statements": [
                      {
                        "expression": {
                          "id": 12231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12229,
                            "name": "totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11917,
                            "src": "5656:11:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 12230,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12226,
                            "src": "5671:6:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5656:21:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12232,
                        "nodeType": "ExpressionStatement",
                        "src": "5656:21:45"
                      },
                      {
                        "id": 12239,
                        "nodeType": "UncheckedBlock",
                        "src": "5806:65:45",
                        "statements": [
                          {
                            "expression": {
                              "id": 12237,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 12233,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11922,
                                  "src": "5830:9:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 12235,
                                "indexExpression": {
                                  "id": 12234,
                                  "name": "recipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12224,
                                  "src": "5840:9:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "5830:20:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "id": 12236,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12226,
                                "src": "5854:6:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5830:30:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 12238,
                            "nodeType": "ExpressionStatement",
                            "src": "5830:30:45"
                          }
                        ]
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 12243,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5902:1:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 12242,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5894:7:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 12241,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5894:7:45",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 12244,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5894:10:45",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12245,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12224,
                              "src": "5906:9:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12246,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12226,
                              "src": "5917:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12240,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11898,
                            "src": "5885:8:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 12247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5885:39:45",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12248,
                        "nodeType": "EmitStatement",
                        "src": "5880:44:45"
                      }
                    ]
                  },
                  "id": 12250,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nameLocation": "5596:5:45",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12227,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12224,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "5610:9:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12250,
                        "src": "5602:17:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12223,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5602:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12226,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5629:6:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12250,
                        "src": "5621:14:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12225,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5621:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5601:35:45"
                  },
                  "returnParameters": {
                    "id": 12228,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5646:0:45"
                  },
                  "scope": 12279,
                  "src": "5587:344:45",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12277,
                    "nodeType": "Block",
                    "src": "5993:276:45",
                    "statements": [
                      {
                        "expression": {
                          "id": 12261,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 12257,
                              "name": "balanceOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11922,
                              "src": "6003:9:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 12259,
                            "indexExpression": {
                              "id": 12258,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12252,
                              "src": "6013:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6003:17:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 12260,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12254,
                            "src": "6024:6:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6003:27:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12262,
                        "nodeType": "ExpressionStatement",
                        "src": "6003:27:45"
                      },
                      {
                        "id": 12267,
                        "nodeType": "UncheckedBlock",
                        "src": "6156:56:45",
                        "statements": [
                          {
                            "expression": {
                              "id": 12265,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 12263,
                                "name": "totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11917,
                                "src": "6180:11:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "id": 12264,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12254,
                                "src": "6195:6:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6180:21:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 12266,
                            "nodeType": "ExpressionStatement",
                            "src": "6180:21:45"
                          }
                        ]
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 12269,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12252,
                              "src": "6235:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 12272,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6251:1:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 12271,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6243:7:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 12270,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6243:7:45",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 12273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6243:10:45",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12274,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12254,
                              "src": "6255:6:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 12268,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11898,
                            "src": "6226:8:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 12275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6226:36:45",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12276,
                        "nodeType": "EmitStatement",
                        "src": "6221:41:45"
                      }
                    ]
                  },
                  "id": 12278,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nameLocation": "5946:5:45",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12255,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12252,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "5960:6:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12278,
                        "src": "5952:14:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12251,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5952:7:45",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12254,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5976:6:45",
                        "nodeType": "VariableDeclaration",
                        "scope": 12278,
                        "src": "5968:14:45",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12253,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5968:7:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5951:32:45"
                  },
                  "returnParameters": {
                    "id": 12256,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5993:0:45"
                  },
                  "scope": 12279,
                  "src": "5937:332:45",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 12280,
              "src": "277:5994:45",
              "usedErrors": []
            }
          ],
          "src": "46:6226:45"
        },
        "id": 45
      },
      "contracts/pool/concentrated/ConcentratedLiquidityPool.sol": {
        "ast": {
          "absolutePath": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol",
          "exportedSymbols": {
            "ConcentratedLiquidityPool": [
              14653
            ],
            "DyDxMath": [
              3409
            ],
            "FullMath": [
              3590
            ],
            "IBentoBoxMinimal": [
              2253
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "IPositionManager": [
              2819
            ],
            "ITridentCallee": [
              2482
            ],
            "ITridentRouter": [
              2573
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "SwapLib": [
              3674
            ],
            "TickMath": [
              4217
            ],
            "Ticks": [
              4906
            ],
            "UnsafeMath": [
              4922
            ],
            "console": [
              32437
            ]
          },
          "id": 14654,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 12281,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:46"
            },
            {
              "absolutePath": "contracts/interfaces/IBentoBoxMinimal.sol",
              "file": "../../interfaces/IBentoBoxMinimal.sol",
              "id": 12282,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 2254,
              "src": "72:47:46",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IMasterDeployer.sol",
              "file": "../../interfaces/IMasterDeployer.sol",
              "id": 12283,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 2357,
              "src": "120:46:46",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IPool.sol",
              "file": "../../interfaces/IPool.sol",
              "id": 12284,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 2451,
              "src": "167:36:46",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/concentratedPool/IPositionManager.sol",
              "file": "../../interfaces/concentratedPool/IPositionManager.sol",
              "id": 12285,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 2820,
              "src": "204:64:46",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ITridentCallee.sol",
              "file": "../../interfaces/ITridentCallee.sol",
              "id": 12286,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 2483,
              "src": "269:45:46",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ITridentRouter.sol",
              "file": "../../interfaces/ITridentRouter.sol",
              "id": 12287,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 2574,
              "src": "315:45:46",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/concentratedPool/FullMath.sol",
              "file": "../../libraries/concentratedPool/FullMath.sol",
              "id": 12288,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 3591,
              "src": "361:55:46",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/concentratedPool/TickMath.sol",
              "file": "../../libraries/concentratedPool/TickMath.sol",
              "id": 12289,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 4218,
              "src": "417:55:46",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/concentratedPool/UnsafeMath.sol",
              "file": "../../libraries/concentratedPool/UnsafeMath.sol",
              "id": 12290,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 4923,
              "src": "473:57:46",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/concentratedPool/DyDxMath.sol",
              "file": "../../libraries/concentratedPool/DyDxMath.sol",
              "id": 12291,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 3410,
              "src": "531:55:46",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/concentratedPool/SwapLib.sol",
              "file": "../../libraries/concentratedPool/SwapLib.sol",
              "id": 12292,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 3675,
              "src": "587:54:46",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/concentratedPool/Ticks.sol",
              "file": "../../libraries/concentratedPool/Ticks.sol",
              "id": 12293,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14654,
              "sourceUnit": 4907,
              "src": "642:52:46",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 12295,
                    "name": "IPool",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2450,
                    "src": "913:5:46"
                  },
                  "id": 12296,
                  "nodeType": "InheritanceSpecifier",
                  "src": "913:5:46"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 12294,
                "nodeType": "StructuredDocumentation",
                "src": "696:179:46",
                "text": "@notice Trident exchange pool template implementing concentrated liquidity for swapping between an ERC-20 token pair.\n @dev Amounts are considered to be in Bentobox shared"
              },
              "fullyImplemented": true,
              "id": 14653,
              "linearizedBaseContracts": [
                14653,
                2450
              ],
              "name": "ConcentratedLiquidityPool",
              "nameLocation": "884:25:46",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 12302,
                  "libraryName": {
                    "id": 12297,
                    "name": "Ticks",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 4906,
                    "src": "931:5:46"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "925:45:46",
                  "typeName": {
                    "id": 12301,
                    "keyType": {
                      "id": 12298,
                      "name": "int24",
                      "nodeType": "ElementaryTypeName",
                      "src": "949:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "941:28:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                      "typeString": "mapping(int24 => struct Ticks.Tick)"
                    },
                    "valueType": {
                      "id": 12300,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12299,
                        "name": "Ticks.Tick",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 4235,
                        "src": "958:10:46"
                      },
                      "referencedDeclaration": 4235,
                      "src": "958:10:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                        "typeString": "struct Ticks.Tick"
                      }
                    }
                  }
                },
                {
                  "anonymous": false,
                  "id": 12310,
                  "name": "Mint",
                  "nameLocation": "982:4:46",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12309,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12304,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1003:5:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 12310,
                        "src": "987:21:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12303,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "987:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12306,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount0",
                        "nameLocation": "1018:7:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 12310,
                        "src": "1010:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12305,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1010:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12308,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount1",
                        "nameLocation": "1035:7:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 12310,
                        "src": "1027:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12307,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1027:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "986:57:46"
                  },
                  "src": "976:68:46"
                },
                {
                  "anonymous": false,
                  "id": 12318,
                  "name": "Burn",
                  "nameLocation": "1055:4:46",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12317,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12312,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1076:5:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 12318,
                        "src": "1060:21:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12311,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1060:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12314,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount0",
                        "nameLocation": "1091:7:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 12318,
                        "src": "1083:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12313,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1083:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12316,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount1",
                        "nameLocation": "1108:7:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 12318,
                        "src": "1100:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12315,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1100:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1059:57:46"
                  },
                  "src": "1049:68:46"
                },
                {
                  "anonymous": false,
                  "id": 12326,
                  "name": "Collect",
                  "nameLocation": "1128:7:46",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12325,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12320,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "1152:6:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 12326,
                        "src": "1136:22:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 12319,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1136:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12322,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount0",
                        "nameLocation": "1168:7:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 12326,
                        "src": "1160:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12321,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1160:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12324,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount1",
                        "nameLocation": "1185:7:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 12326,
                        "src": "1177:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12323,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1177:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1135:58:46"
                  },
                  "src": "1122:72:46"
                },
                {
                  "anonymous": false,
                  "id": 12332,
                  "name": "Sync",
                  "nameLocation": "1205:4:46",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 12331,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12328,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "reserveShares0",
                        "nameLocation": "1218:14:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 12332,
                        "src": "1210:22:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12327,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1210:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12330,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "reserveShares1",
                        "nameLocation": "1242:14:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 12332,
                        "src": "1234:22:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12329,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1234:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1209:48:46"
                  },
                  "src": "1199:59:46"
                },
                {
                  "baseFunctions": [
                    2408
                  ],
                  "constant": true,
                  "functionSelector": "a69840a8",
                  "id": 12336,
                  "mutability": "constant",
                  "name": "poolIdentifier",
                  "nameLocation": "1297:14:46",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 12334,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1288:8:46"
                  },
                  "scope": 14653,
                  "src": "1264:81:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 12333,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1264:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "54726964656e743a436f6e63656e7472617465644c6971756964697479",
                    "id": 12335,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1314:31:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_525d9fe6da651454d9d86408d6491c044cabf89fda2b3766fcae2d1d65912abb",
                      "typeString": "literal_string \"Trident:ConcentratedLiquidity\""
                    },
                    "value": "Trident:ConcentratedLiquidity"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 12339,
                  "mutability": "constant",
                  "name": "MAX_FEE",
                  "nameLocation": "1377:7:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "1352:41:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint24",
                    "typeString": "uint24"
                  },
                  "typeName": {
                    "id": 12337,
                    "name": "uint24",
                    "nodeType": "ElementaryTypeName",
                    "src": "1352:6:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint24",
                      "typeString": "uint24"
                    }
                  },
                  "value": {
                    "hexValue": "313030303030",
                    "id": 12338,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1387:6:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_100000_by_1",
                      "typeString": "int_const 100000"
                    },
                    "value": "100000"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 12340,
                    "nodeType": "StructuredDocumentation",
                    "src": "1395:120:46",
                    "text": "@dev Maximum `swapFee` is 10%.\n @dev References for tickSpacing:\n 100 tickSpacing -> 2% between ticks."
                  },
                  "id": 12342,
                  "mutability": "immutable",
                  "name": "tickSpacing",
                  "nameLocation": "1546:11:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "1520:37:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint24",
                    "typeString": "uint24"
                  },
                  "typeName": {
                    "id": 12341,
                    "name": "uint24",
                    "nodeType": "ElementaryTypeName",
                    "src": "1520:6:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint24",
                      "typeString": "uint24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12344,
                  "mutability": "immutable",
                  "name": "swapFee",
                  "nameLocation": "1589:7:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "1563:33:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint24",
                    "typeString": "uint24"
                  },
                  "typeName": {
                    "id": 12343,
                    "name": "uint24",
                    "nodeType": "ElementaryTypeName",
                    "src": "1563:6:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint24",
                      "typeString": "uint24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 12345,
                    "nodeType": "StructuredDocumentation",
                    "src": "1598:63:46",
                    "text": "@dev 1000 corresponds to 0.1% fee. Fee is measured in pips."
                  },
                  "id": 12347,
                  "mutability": "immutable",
                  "name": "MAX_TICK_LIQUIDITY",
                  "nameLocation": "1693:18:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "1666:45:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 12346,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "1666:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12349,
                  "mutability": "immutable",
                  "name": "barFeeTo",
                  "nameLocation": "1745:8:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "1718:35:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12348,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1718:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12352,
                  "mutability": "immutable",
                  "name": "bento",
                  "nameLocation": "1795:5:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "1759:41:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                    "typeString": "contract IBentoBoxMinimal"
                  },
                  "typeName": {
                    "id": 12351,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 12350,
                      "name": "IBentoBoxMinimal",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2253,
                      "src": "1759:16:46"
                    },
                    "referencedDeclaration": 2253,
                    "src": "1759:16:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                      "typeString": "contract IBentoBoxMinimal"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12355,
                  "mutability": "immutable",
                  "name": "masterDeployer",
                  "nameLocation": "1841:14:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "1806:49:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                    "typeString": "contract IMasterDeployer"
                  },
                  "typeName": {
                    "id": 12354,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 12353,
                      "name": "IMasterDeployer",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2356,
                      "src": "1806:15:46"
                    },
                    "referencedDeclaration": 2356,
                    "src": "1806:15:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                      "typeString": "contract IMasterDeployer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12357,
                  "mutability": "immutable",
                  "name": "token0",
                  "nameLocation": "1889:6:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "1862:33:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12356,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1862:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12359,
                  "mutability": "immutable",
                  "name": "token1",
                  "nameLocation": "1928:6:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "1901:33:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 12358,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1901:7:46",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "1a686502",
                  "id": 12361,
                  "mutability": "mutable",
                  "name": "liquidity",
                  "nameLocation": "1956:9:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "1941:24:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 12360,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "1941:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 12363,
                  "mutability": "mutable",
                  "name": "secondsGrowthGlobal",
                  "nameLocation": "1989:19:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "1972:36:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 12362,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "1972:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 12364,
                    "nodeType": "StructuredDocumentation",
                    "src": "2010:29:46",
                    "text": "@dev Multiplied by 2^128."
                  },
                  "id": 12366,
                  "mutability": "mutable",
                  "name": "lastObservation",
                  "nameLocation": "2060:15:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "2044:31:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 12365,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2044:6:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "9da12096",
                  "id": 12368,
                  "mutability": "mutable",
                  "name": "feeGrowthGlobal0",
                  "nameLocation": "2097:16:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "2082:31:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12367,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2082:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 12369,
                    "nodeType": "StructuredDocumentation",
                    "src": "2115:57:46",
                    "text": "@dev All fee growth counters are multiplied by 2^128."
                  },
                  "functionSelector": "cf78756b",
                  "id": 12371,
                  "mutability": "mutable",
                  "name": "feeGrowthGlobal1",
                  "nameLocation": "2192:16:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "2177:31:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12370,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2177:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "c14ad802",
                  "id": 12373,
                  "mutability": "mutable",
                  "name": "barFee",
                  "nameLocation": "2230:6:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "2215:21:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12372,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2215:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 12375,
                  "mutability": "mutable",
                  "name": "token0ProtocolFee",
                  "nameLocation": "2260:17:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "2243:34:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 12374,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "2243:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12377,
                  "mutability": "mutable",
                  "name": "token1ProtocolFee",
                  "nameLocation": "2300:17:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "2283:34:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 12376,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "2283:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12379,
                  "mutability": "mutable",
                  "name": "reserve0",
                  "nameLocation": "2341:8:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "2324:25:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 12378,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "2324:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 12380,
                    "nodeType": "StructuredDocumentation",
                    "src": "2351:39:46",
                    "text": "@dev `bento` share balance tracker."
                  },
                  "id": 12382,
                  "mutability": "mutable",
                  "name": "reserve1",
                  "nameLocation": "2412:8:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "2395:25:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 12381,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "2395:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 12384,
                  "mutability": "mutable",
                  "name": "price",
                  "nameLocation": "2444:5:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "2427:22:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 12383,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "2427:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 12385,
                    "nodeType": "StructuredDocumentation",
                    "src": "2451:57:46",
                    "text": "@dev Sqrt of price aka. √(y/x), multiplied by 2^96."
                  },
                  "id": 12387,
                  "mutability": "mutable",
                  "name": "nearestTick",
                  "nameLocation": "2528:11:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "2513:26:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int24",
                    "typeString": "int24"
                  },
                  "typeName": {
                    "id": 12386,
                    "name": "int24",
                    "nodeType": "ElementaryTypeName",
                    "src": "2513:5:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int24",
                      "typeString": "int24"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 12388,
                    "nodeType": "StructuredDocumentation",
                    "src": "2541:52:46",
                    "text": "@dev Tick that is just below the current price."
                  },
                  "id": 12390,
                  "mutability": "mutable",
                  "name": "unlocked",
                  "nameLocation": "2615:8:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "2598:25:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 12389,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2598:7:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "f30dba93",
                  "id": 12395,
                  "mutability": "mutable",
                  "name": "ticks",
                  "nameLocation": "2666:5:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "2630:41:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                    "typeString": "mapping(int24 => struct Ticks.Tick)"
                  },
                  "typeName": {
                    "id": 12394,
                    "keyType": {
                      "id": 12391,
                      "name": "int24",
                      "nodeType": "ElementaryTypeName",
                      "src": "2638:5:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2630:28:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                      "typeString": "mapping(int24 => struct Ticks.Tick)"
                    },
                    "valueType": {
                      "id": 12393,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 12392,
                        "name": "Ticks.Tick",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 4235,
                        "src": "2647:10:46"
                      },
                      "referencedDeclaration": 4235,
                      "src": "2647:10:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                        "typeString": "struct Ticks.Tick"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "aaca1b4d",
                  "id": 12404,
                  "mutability": "mutable",
                  "name": "positions",
                  "nameLocation": "2749:9:46",
                  "nodeType": "VariableDeclaration",
                  "scope": 14653,
                  "src": "2677:81:46",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_int24_$_t_mapping$_t_int24_$_t_struct$_Position_$12411_storage_$_$_$",
                    "typeString": "mapping(address => mapping(int24 => mapping(int24 => struct ConcentratedLiquidityPool.Position)))"
                  },
                  "typeName": {
                    "id": 12403,
                    "keyType": {
                      "id": 12396,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2685:7:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2677:64:46",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_int24_$_t_mapping$_t_int24_$_t_struct$_Position_$12411_storage_$_$_$",
                      "typeString": "mapping(address => mapping(int24 => mapping(int24 => struct ConcentratedLiquidityPool.Position)))"
                    },
                    "valueType": {
                      "id": 12402,
                      "keyType": {
                        "id": 12397,
                        "name": "int24",
                        "nodeType": "ElementaryTypeName",
                        "src": "2704:5:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "2696:44:46",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_int24_$_t_mapping$_t_int24_$_t_struct$_Position_$12411_storage_$_$",
                        "typeString": "mapping(int24 => mapping(int24 => struct ConcentratedLiquidityPool.Position))"
                      },
                      "valueType": {
                        "id": 12401,
                        "keyType": {
                          "id": 12398,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "2721:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "2713:26:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Position_$12411_storage_$",
                          "typeString": "mapping(int24 => struct ConcentratedLiquidityPool.Position)"
                        },
                        "valueType": {
                          "id": 12400,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 12399,
                            "name": "Position",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 12411,
                            "src": "2730:8:46"
                          },
                          "referencedDeclaration": 12411,
                          "src": "2730:8:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Position_$12411_storage_ptr",
                            "typeString": "struct ConcentratedLiquidityPool.Position"
                          }
                        }
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "canonicalName": "ConcentratedLiquidityPool.Position",
                  "id": 12411,
                  "members": [
                    {
                      "constant": false,
                      "id": 12406,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nameLocation": "2799:9:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12411,
                      "src": "2791:17:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 12405,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "2791:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12408,
                      "mutability": "mutable",
                      "name": "feeGrowthInside0Last",
                      "nameLocation": "2826:20:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12411,
                      "src": "2818:28:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12407,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2818:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12410,
                      "mutability": "mutable",
                      "name": "feeGrowthInside1Last",
                      "nameLocation": "2864:20:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12411,
                      "src": "2856:28:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12409,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2856:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Position",
                  "nameLocation": "2772:8:46",
                  "nodeType": "StructDefinition",
                  "scope": 14653,
                  "src": "2765:126:46",
                  "visibility": "public"
                },
                {
                  "canonicalName": "ConcentratedLiquidityPool.SwapCache",
                  "id": 12430,
                  "members": [
                    {
                      "constant": false,
                      "id": 12413,
                      "mutability": "mutable",
                      "name": "feeAmount",
                      "nameLocation": "2932:9:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12430,
                      "src": "2924:17:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12412,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2924:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12415,
                      "mutability": "mutable",
                      "name": "totalFeeAmount",
                      "nameLocation": "2959:14:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12430,
                      "src": "2951:22:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12414,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2951:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12417,
                      "mutability": "mutable",
                      "name": "protocolFee",
                      "nameLocation": "2991:11:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12430,
                      "src": "2983:19:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12416,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "2983:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12419,
                      "mutability": "mutable",
                      "name": "feeGrowthGlobalA",
                      "nameLocation": "3020:16:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12430,
                      "src": "3012:24:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12418,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3012:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12421,
                      "mutability": "mutable",
                      "name": "feeGrowthGlobalB",
                      "nameLocation": "3054:16:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12430,
                      "src": "3046:24:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12420,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3046:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12423,
                      "mutability": "mutable",
                      "name": "currentPrice",
                      "nameLocation": "3088:12:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12430,
                      "src": "3080:20:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12422,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3080:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12425,
                      "mutability": "mutable",
                      "name": "currentLiquidity",
                      "nameLocation": "3118:16:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12430,
                      "src": "3110:24:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12424,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3110:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12427,
                      "mutability": "mutable",
                      "name": "input",
                      "nameLocation": "3152:5:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12430,
                      "src": "3144:13:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12426,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3144:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12429,
                      "mutability": "mutable",
                      "name": "nextTickToCross",
                      "nameLocation": "3173:15:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12430,
                      "src": "3167:21:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      },
                      "typeName": {
                        "id": 12428,
                        "name": "int24",
                        "nodeType": "ElementaryTypeName",
                        "src": "3167:5:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "SwapCache",
                  "nameLocation": "2904:9:46",
                  "nodeType": "StructDefinition",
                  "scope": 14653,
                  "src": "2897:298:46",
                  "visibility": "public"
                },
                {
                  "canonicalName": "ConcentratedLiquidityPool.MintParams",
                  "id": 12453,
                  "members": [
                    {
                      "constant": false,
                      "id": 12432,
                      "mutability": "mutable",
                      "name": "lowerOld",
                      "nameLocation": "3235:8:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12453,
                      "src": "3229:14:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      },
                      "typeName": {
                        "id": 12431,
                        "name": "int24",
                        "nodeType": "ElementaryTypeName",
                        "src": "3229:5:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12434,
                      "mutability": "mutable",
                      "name": "lower",
                      "nameLocation": "3259:5:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12453,
                      "src": "3253:11:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      },
                      "typeName": {
                        "id": 12433,
                        "name": "int24",
                        "nodeType": "ElementaryTypeName",
                        "src": "3253:5:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12436,
                      "mutability": "mutable",
                      "name": "upperOld",
                      "nameLocation": "3280:8:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12453,
                      "src": "3274:14:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      },
                      "typeName": {
                        "id": 12435,
                        "name": "int24",
                        "nodeType": "ElementaryTypeName",
                        "src": "3274:5:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12438,
                      "mutability": "mutable",
                      "name": "upper",
                      "nameLocation": "3304:5:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12453,
                      "src": "3298:11:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      },
                      "typeName": {
                        "id": 12437,
                        "name": "int24",
                        "nodeType": "ElementaryTypeName",
                        "src": "3298:5:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12440,
                      "mutability": "mutable",
                      "name": "amount0Desired",
                      "nameLocation": "3327:14:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12453,
                      "src": "3319:22:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12439,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3319:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12442,
                      "mutability": "mutable",
                      "name": "amount1Desired",
                      "nameLocation": "3359:14:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12453,
                      "src": "3351:22:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12441,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3351:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12444,
                      "mutability": "mutable",
                      "name": "token0native",
                      "nameLocation": "3388:12:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12453,
                      "src": "3383:17:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 12443,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3383:4:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12446,
                      "mutability": "mutable",
                      "name": "token1native",
                      "nameLocation": "3415:12:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12453,
                      "src": "3410:17:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 12445,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3410:4:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12448,
                      "mutability": "mutable",
                      "name": "positionOwner",
                      "nameLocation": "3445:13:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12453,
                      "src": "3437:21:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 12447,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3437:7:46",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12450,
                      "mutability": "mutable",
                      "name": "positionRecipient",
                      "nameLocation": "3559:17:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12453,
                      "src": "3551:25:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 12449,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3551:7:46",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 12452,
                      "mutability": "mutable",
                      "name": "positionId",
                      "nameLocation": "3594:10:46",
                      "nodeType": "VariableDeclaration",
                      "scope": 12453,
                      "src": "3586:18:46",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 12451,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3586:7:46",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "MintParams",
                  "nameLocation": "3208:10:46",
                  "nodeType": "StructDefinition",
                  "scope": 14653,
                  "src": "3201:410:46",
                  "visibility": "public"
                },
                {
                  "documentation": {
                    "id": 12454,
                    "nodeType": "StructuredDocumentation",
                    "src": "3617:57:46",
                    "text": "@dev Error list to optimize around pool requirements."
                  },
                  "id": 12456,
                  "name": "Locked",
                  "nameLocation": "3685:6:46",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 12455,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3691:2:46"
                  },
                  "src": "3679:15:46"
                },
                {
                  "id": 12458,
                  "name": "ZeroAddress",
                  "nameLocation": "3705:11:46",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 12457,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3716:2:46"
                  },
                  "src": "3699:20:46"
                },
                {
                  "id": 12460,
                  "name": "InvalidToken",
                  "nameLocation": "3730:12:46",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 12459,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3742:2:46"
                  },
                  "src": "3724:21:46"
                },
                {
                  "id": 12462,
                  "name": "InvalidSwapFee",
                  "nameLocation": "3756:14:46",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 12461,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3770:2:46"
                  },
                  "src": "3750:23:46"
                },
                {
                  "id": 12464,
                  "name": "LiquidityOverflow",
                  "nameLocation": "3784:17:46",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 12463,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3801:2:46"
                  },
                  "src": "3778:26:46"
                },
                {
                  "id": 12466,
                  "name": "Token0Missing",
                  "nameLocation": "3815:13:46",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 12465,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3828:2:46"
                  },
                  "src": "3809:22:46"
                },
                {
                  "id": 12468,
                  "name": "Token1Missing",
                  "nameLocation": "3842:13:46",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 12467,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3855:2:46"
                  },
                  "src": "3836:22:46"
                },
                {
                  "id": 12470,
                  "name": "InvalidTick",
                  "nameLocation": "3869:11:46",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 12469,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3880:2:46"
                  },
                  "src": "3863:20:46"
                },
                {
                  "id": 12472,
                  "name": "LowerEven",
                  "nameLocation": "3894:9:46",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 12471,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3903:2:46"
                  },
                  "src": "3888:18:46"
                },
                {
                  "id": 12474,
                  "name": "UpperOdd",
                  "nameLocation": "3917:8:46",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 12473,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3925:2:46"
                  },
                  "src": "3911:17:46"
                },
                {
                  "id": 12476,
                  "name": "MaxTickLiquidity",
                  "nameLocation": "3939:16:46",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 12475,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3955:2:46"
                  },
                  "src": "3933:25:46"
                },
                {
                  "id": 12478,
                  "name": "Overflow",
                  "nameLocation": "3969:8:46",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 12477,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3977:2:46"
                  },
                  "src": "3963:17:46"
                },
                {
                  "body": {
                    "id": 12496,
                    "nodeType": "Block",
                    "src": "4002:106:46",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 12482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12480,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12390,
                            "src": "4016:8:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "32",
                            "id": 12481,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4028:1:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "4016:13:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12486,
                        "nodeType": "IfStatement",
                        "src": "4012:34:46",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 12483,
                              "name": "Locked",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12456,
                              "src": "4038:6:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 12484,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4038:8:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 12485,
                          "nodeType": "RevertStatement",
                          "src": "4031:15:46"
                        }
                      },
                      {
                        "expression": {
                          "id": 12489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12487,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12390,
                            "src": "4056:8:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "32",
                            "id": 12488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4067:1:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "4056:12:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12490,
                        "nodeType": "ExpressionStatement",
                        "src": "4056:12:46"
                      },
                      {
                        "id": 12491,
                        "nodeType": "PlaceholderStatement",
                        "src": "4078:1:46"
                      },
                      {
                        "expression": {
                          "id": 12494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12492,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12390,
                            "src": "4089:8:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 12493,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4100:1:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "4089:12:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12495,
                        "nodeType": "ExpressionStatement",
                        "src": "4089:12:46"
                      }
                    ]
                  },
                  "id": 12497,
                  "name": "lock",
                  "nameLocation": "3995:4:46",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 12479,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3999:2:46"
                  },
                  "src": "3986:122:46",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 12669,
                    "nodeType": "Block",
                    "src": "4276:1205:46",
                    "statements": [
                      {
                        "assignments": [
                          12507,
                          12509,
                          12511,
                          12513,
                          12515
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12507,
                            "mutability": "mutable",
                            "name": "_token0",
                            "nameLocation": "4295:7:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 12669,
                            "src": "4287:15:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12506,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4287:7:46",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 12509,
                            "mutability": "mutable",
                            "name": "_token1",
                            "nameLocation": "4312:7:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 12669,
                            "src": "4304:15:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 12508,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4304:7:46",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 12511,
                            "mutability": "mutable",
                            "name": "_swapFee",
                            "nameLocation": "4328:8:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 12669,
                            "src": "4321:15:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            },
                            "typeName": {
                              "id": 12510,
                              "name": "uint24",
                              "nodeType": "ElementaryTypeName",
                              "src": "4321:6:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint24",
                                "typeString": "uint24"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 12513,
                            "mutability": "mutable",
                            "name": "_price",
                            "nameLocation": "4346:6:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 12669,
                            "src": "4338:14:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            },
                            "typeName": {
                              "id": 12512,
                              "name": "uint160",
                              "nodeType": "ElementaryTypeName",
                              "src": "4338:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 12515,
                            "mutability": "mutable",
                            "name": "_tickSpacing",
                            "nameLocation": "4361:12:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 12669,
                            "src": "4354:19:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            },
                            "typeName": {
                              "id": 12514,
                              "name": "uint24",
                              "nodeType": "ElementaryTypeName",
                              "src": "4354:6:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint24",
                                "typeString": "uint24"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12531,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 12518,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12500,
                              "src": "4401:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 12520,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4427:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 12519,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4427:7:46",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 12522,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4436:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 12521,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4436:7:46",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 12524,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4445:6:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint24_$",
                                    "typeString": "type(uint24)"
                                  },
                                  "typeName": {
                                    "id": 12523,
                                    "name": "uint24",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4445:6:46",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 12526,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4453:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 12525,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4453:7:46",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 12528,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4462:6:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint24_$",
                                    "typeString": "type(uint24)"
                                  },
                                  "typeName": {
                                    "id": 12527,
                                    "name": "uint24",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4462:6:46",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 12529,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "4426:43:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint24_$_$_t_type$_t_uint160_$_$_t_type$_t_uint24_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint24),type(uint160),type(uint24))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint24_$_$_t_type$_t_uint160_$_$_t_type$_t_uint24_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint24),type(uint160),type(uint24))"
                              }
                            ],
                            "expression": {
                              "id": 12516,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "4377:3:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 12517,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "4377:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 12530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4377:102:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_uint24_$_t_uint160_$_t_uint24_$",
                            "typeString": "tuple(address payable,address payable,uint24,uint160,uint24)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4286:193:46"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 12537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12532,
                            "name": "_token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12507,
                            "src": "4494:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 12535,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4513:1:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 12534,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4505:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 12533,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4505:7:46",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12536,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4505:10:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4494:21:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12541,
                        "nodeType": "IfStatement",
                        "src": "4490:47:46",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 12538,
                              "name": "ZeroAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12458,
                              "src": "4524:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 12539,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4524:13:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 12540,
                          "nodeType": "RevertStatement",
                          "src": "4517:20:46"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 12547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12542,
                            "name": "_token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12507,
                            "src": "4551:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 12545,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "4570:4:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                  "typeString": "contract ConcentratedLiquidityPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                  "typeString": "contract ConcentratedLiquidityPool"
                                }
                              ],
                              "id": 12544,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4562:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 12543,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4562:7:46",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12546,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4562:13:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4551:24:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12551,
                        "nodeType": "IfStatement",
                        "src": "4547:51:46",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 12548,
                              "name": "InvalidToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12460,
                              "src": "4584:12:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 12549,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4584:14:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 12550,
                          "nodeType": "RevertStatement",
                          "src": "4577:21:46"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 12557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12552,
                            "name": "_token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12509,
                            "src": "4612:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 12555,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "4631:4:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                  "typeString": "contract ConcentratedLiquidityPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                  "typeString": "contract ConcentratedLiquidityPool"
                                }
                              ],
                              "id": 12554,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4623:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 12553,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4623:7:46",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12556,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4623:13:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4612:24:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12561,
                        "nodeType": "IfStatement",
                        "src": "4608:51:46",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 12558,
                              "name": "InvalidToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12460,
                              "src": "4645:12:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 12559,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4645:14:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 12560,
                          "nodeType": "RevertStatement",
                          "src": "4638:21:46"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          },
                          "id": 12564,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 12562,
                            "name": "_swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12511,
                            "src": "4673:8:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 12563,
                            "name": "MAX_FEE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12339,
                            "src": "4684:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "src": "4673:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12568,
                        "nodeType": "IfStatement",
                        "src": "4669:47:46",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 12565,
                              "name": "InvalidSwapFee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12462,
                              "src": "4700:14:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 12566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4700:16:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 12567,
                          "nodeType": "RevertStatement",
                          "src": "4693:23:46"
                        }
                      },
                      {
                        "expression": {
                          "id": 12571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12569,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12357,
                            "src": "4727:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12570,
                            "name": "_token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12507,
                            "src": "4736:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4727:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 12572,
                        "nodeType": "ExpressionStatement",
                        "src": "4727:16:46"
                      },
                      {
                        "expression": {
                          "id": 12575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12573,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12359,
                            "src": "4753:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12574,
                            "name": "_token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12509,
                            "src": "4762:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4753:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 12576,
                        "nodeType": "ExpressionStatement",
                        "src": "4753:16:46"
                      },
                      {
                        "expression": {
                          "id": 12579,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12577,
                            "name": "swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12344,
                            "src": "4779:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12578,
                            "name": "_swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12511,
                            "src": "4789:8:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "src": "4779:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "id": 12580,
                        "nodeType": "ExpressionStatement",
                        "src": "4779:18:46"
                      },
                      {
                        "expression": {
                          "id": 12583,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12581,
                            "name": "price",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12384,
                            "src": "4807:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12582,
                            "name": "_price",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12513,
                            "src": "4815:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "src": "4807:14:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "id": 12584,
                        "nodeType": "ExpressionStatement",
                        "src": "4807:14:46"
                      },
                      {
                        "expression": {
                          "id": 12587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12585,
                            "name": "tickSpacing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12342,
                            "src": "4831:11:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12586,
                            "name": "_tickSpacing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12515,
                            "src": "4845:12:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "src": "4831:26:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "id": 12588,
                        "nodeType": "ExpressionStatement",
                        "src": "4831:26:46"
                      },
                      {
                        "expression": {
                          "id": 12594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12589,
                            "name": "MAX_TICK_LIQUIDITY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12347,
                            "src": "4952:18:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 12592,
                                "name": "_tickSpacing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12515,
                                "src": "4995:12:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint24",
                                  "typeString": "uint24"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint24",
                                  "typeString": "uint24"
                                }
                              ],
                              "expression": {
                                "id": 12590,
                                "name": "Ticks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4906,
                                "src": "4973:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Ticks_$4906_$",
                                  "typeString": "type(library Ticks)"
                                }
                              },
                              "id": 12591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getMaxLiquidity",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4266,
                              "src": "4973:21:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_delegatecall_pure$_t_uint24_$returns$_t_uint128_$",
                                "typeString": "function (uint24) pure returns (uint128)"
                              }
                            },
                            "id": 12593,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4973:35:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "4952:56:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 12595,
                        "nodeType": "ExpressionStatement",
                        "src": "4952:56:46"
                      },
                      {
                        "expression": {
                          "id": 12614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 12596,
                              "name": "ticks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12395,
                              "src": "5018:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                              }
                            },
                            "id": 12599,
                            "indexExpression": {
                              "expression": {
                                "id": 12597,
                                "name": "TickMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4217,
                                "src": "5024:8:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                  "typeString": "type(library TickMath)"
                                }
                              },
                              "id": 12598,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MIN_TICK",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3682,
                              "src": "5024:17:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5018:24:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tick_$4235_storage",
                              "typeString": "struct Ticks.Tick storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 12602,
                                  "name": "TickMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4217,
                                  "src": "5056:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                    "typeString": "type(library TickMath)"
                                  }
                                },
                                "id": 12603,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "MIN_TICK",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3682,
                                "src": "5056:17:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "expression": {
                                  "id": 12604,
                                  "name": "TickMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4217,
                                  "src": "5075:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                    "typeString": "type(library TickMath)"
                                  }
                                },
                                "id": 12605,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "MAX_TICK",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3687,
                                "src": "5075:17:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 12608,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5102:1:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 12607,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5094:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  },
                                  "typeName": {
                                    "id": 12606,
                                    "name": "uint128",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5094:7:46",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12609,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5094:10:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              {
                                "hexValue": "30",
                                "id": 12610,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5106:1:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "hexValue": "30",
                                "id": 12611,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5109:1:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "hexValue": "30",
                                "id": 12612,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5112:1:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "expression": {
                                "id": 12600,
                                "name": "Ticks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4906,
                                "src": "5045:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Ticks_$4906_$",
                                  "typeString": "type(library Ticks)"
                                }
                              },
                              "id": 12601,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "Tick",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4235,
                              "src": "5045:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_Tick_$4235_storage_ptr_$",
                                "typeString": "type(struct Ticks.Tick storage pointer)"
                              }
                            },
                            "id": 12613,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5045:69:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                              "typeString": "struct Ticks.Tick memory"
                            }
                          },
                          "src": "5018:96:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tick_$4235_storage",
                            "typeString": "struct Ticks.Tick storage ref"
                          }
                        },
                        "id": 12615,
                        "nodeType": "ExpressionStatement",
                        "src": "5018:96:46"
                      },
                      {
                        "expression": {
                          "id": 12634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 12616,
                              "name": "ticks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12395,
                              "src": "5124:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                              }
                            },
                            "id": 12619,
                            "indexExpression": {
                              "expression": {
                                "id": 12617,
                                "name": "TickMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4217,
                                "src": "5130:8:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                  "typeString": "type(library TickMath)"
                                }
                              },
                              "id": 12618,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "MAX_TICK",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3687,
                              "src": "5130:17:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5124:24:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tick_$4235_storage",
                              "typeString": "struct Ticks.Tick storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 12622,
                                  "name": "TickMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4217,
                                  "src": "5162:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                    "typeString": "type(library TickMath)"
                                  }
                                },
                                "id": 12623,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "MIN_TICK",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3682,
                                "src": "5162:17:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "expression": {
                                  "id": 12624,
                                  "name": "TickMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4217,
                                  "src": "5181:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                    "typeString": "type(library TickMath)"
                                  }
                                },
                                "id": 12625,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "MAX_TICK",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3687,
                                "src": "5181:17:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 12628,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5208:1:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 12627,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5200:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  },
                                  "typeName": {
                                    "id": 12626,
                                    "name": "uint128",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5200:7:46",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12629,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5200:10:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              {
                                "hexValue": "30",
                                "id": 12630,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5212:1:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "hexValue": "30",
                                "id": 12631,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5215:1:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "hexValue": "30",
                                "id": 12632,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5218:1:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "expression": {
                                "id": 12620,
                                "name": "Ticks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4906,
                                "src": "5151:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Ticks_$4906_$",
                                  "typeString": "type(library Ticks)"
                                }
                              },
                              "id": 12621,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "Tick",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4235,
                              "src": "5151:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_Tick_$4235_storage_ptr_$",
                                "typeString": "type(struct Ticks.Tick storage pointer)"
                              }
                            },
                            "id": 12633,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5151:69:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                              "typeString": "struct Ticks.Tick memory"
                            }
                          },
                          "src": "5124:96:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tick_$4235_storage",
                            "typeString": "struct Ticks.Tick storage ref"
                          }
                        },
                        "id": 12635,
                        "nodeType": "ExpressionStatement",
                        "src": "5124:96:46"
                      },
                      {
                        "expression": {
                          "id": 12639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12636,
                            "name": "nearestTick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12387,
                            "src": "5230:11:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 12637,
                              "name": "TickMath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4217,
                              "src": "5244:8:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                "typeString": "type(library TickMath)"
                              }
                            },
                            "id": 12638,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "MIN_TICK",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3682,
                            "src": "5244:17:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "src": "5230:31:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "id": 12640,
                        "nodeType": "ExpressionStatement",
                        "src": "5230:31:46"
                      },
                      {
                        "expression": {
                          "id": 12647,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12641,
                            "name": "bento",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12352,
                            "src": "5271:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 12643,
                                    "name": "_masterDeployer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12503,
                                    "src": "5296:15:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                      "typeString": "contract IMasterDeployer"
                                    }
                                  },
                                  "id": 12644,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "bento",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2334,
                                  "src": "5296:21:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                    "typeString": "function () view external returns (address)"
                                  }
                                },
                                "id": 12645,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5296:23:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 12642,
                              "name": "IBentoBoxMinimal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2253,
                              "src": "5279:16:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IBentoBoxMinimal_$2253_$",
                                "typeString": "type(contract IBentoBoxMinimal)"
                              }
                            },
                            "id": 12646,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5279:41:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "src": "5271:49:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        "id": 12648,
                        "nodeType": "ExpressionStatement",
                        "src": "5271:49:46"
                      },
                      {
                        "expression": {
                          "id": 12653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12649,
                            "name": "barFeeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12349,
                            "src": "5330:8:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 12650,
                                "name": "_masterDeployer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12503,
                                "src": "5341:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                  "typeString": "contract IMasterDeployer"
                                }
                              },
                              "id": 12651,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "barFeeTo",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2329,
                              "src": "5341:24:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                "typeString": "function () view external returns (address)"
                              }
                            },
                            "id": 12652,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5341:26:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5330:37:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 12654,
                        "nodeType": "ExpressionStatement",
                        "src": "5330:37:46"
                      },
                      {
                        "expression": {
                          "id": 12659,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12655,
                            "name": "barFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12373,
                            "src": "5377:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 12656,
                                "name": "_masterDeployer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12503,
                                "src": "5386:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                  "typeString": "contract IMasterDeployer"
                                }
                              },
                              "id": 12657,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "barFee",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2324,
                              "src": "5386:22:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 12658,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5386:24:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5377:33:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12660,
                        "nodeType": "ExpressionStatement",
                        "src": "5377:33:46"
                      },
                      {
                        "expression": {
                          "id": 12663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12661,
                            "name": "masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12355,
                            "src": "5420:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                              "typeString": "contract IMasterDeployer"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 12662,
                            "name": "_masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12503,
                            "src": "5437:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                              "typeString": "contract IMasterDeployer"
                            }
                          },
                          "src": "5420:32:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                            "typeString": "contract IMasterDeployer"
                          }
                        },
                        "id": 12664,
                        "nodeType": "ExpressionStatement",
                        "src": "5420:32:46"
                      },
                      {
                        "expression": {
                          "id": 12667,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12665,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12390,
                            "src": "5462:8:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 12666,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5473:1:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "5462:12:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12668,
                        "nodeType": "ExpressionStatement",
                        "src": "5462:12:46"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12498,
                    "nodeType": "StructuredDocumentation",
                    "src": "4114:86:46",
                    "text": "@dev Only set immutable variables here - state changes made here will not be used."
                  },
                  "id": 12670,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 12504,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12500,
                        "mutability": "mutable",
                        "name": "_deployData",
                        "nameLocation": "4230:11:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 12670,
                        "src": "4217:24:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 12499,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4217:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 12503,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "4259:15:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 12670,
                        "src": "4243:31:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                          "typeString": "contract IMasterDeployer"
                        },
                        "typeName": {
                          "id": 12502,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 12501,
                            "name": "IMasterDeployer",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2356,
                            "src": "4243:15:46"
                          },
                          "referencedDeclaration": 2356,
                          "src": "4243:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                            "typeString": "contract IMasterDeployer"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4216:59:46"
                  },
                  "returnParameters": {
                    "id": 12505,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4276:0:46"
                  },
                  "scope": 14653,
                  "src": "4205:1276:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2384
                  ],
                  "body": {
                    "id": 12995,
                    "nodeType": "Block",
                    "src": "5744:3347:46",
                    "statements": [
                      {
                        "assignments": [
                          12683
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12683,
                            "mutability": "mutable",
                            "name": "mintParams",
                            "nameLocation": "5772:10:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 12995,
                            "src": "5754:28:46",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                              "typeString": "struct ConcentratedLiquidityPool.MintParams"
                            },
                            "typeName": {
                              "id": 12682,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 12681,
                                "name": "MintParams",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 12453,
                                "src": "5754:10:46"
                              },
                              "referencedDeclaration": 12453,
                              "src": "5754:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintParams_$12453_storage_ptr",
                                "typeString": "struct ConcentratedLiquidityPool.MintParams"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12690,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 12686,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12673,
                              "src": "5796:4:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 12687,
                                  "name": "MintParams",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12453,
                                  "src": "5803:10:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_struct$_MintParams_$12453_storage_ptr_$",
                                    "typeString": "type(struct ConcentratedLiquidityPool.MintParams storage pointer)"
                                  }
                                }
                              ],
                              "id": 12688,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5802:12:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_MintParams_$12453_storage_ptr_$",
                                "typeString": "type(struct ConcentratedLiquidityPool.MintParams storage pointer)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_type$_t_struct$_MintParams_$12453_storage_ptr_$",
                                "typeString": "type(struct ConcentratedLiquidityPool.MintParams storage pointer)"
                              }
                            ],
                            "expression": {
                              "id": 12684,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "5785:3:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 12685,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "5785:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 12689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5785:30:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                            "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5754:61:46"
                      },
                      {
                        "assignments": [
                          12692
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12692,
                            "mutability": "mutable",
                            "name": "priceLower",
                            "nameLocation": "5834:10:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 12995,
                            "src": "5826:18:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12691,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5826:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12701,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 12697,
                                    "name": "mintParams",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12683,
                                    "src": "5883:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                      "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                    }
                                  },
                                  "id": 12698,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lower",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12434,
                                  "src": "5883:16:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                ],
                                "expression": {
                                  "id": 12695,
                                  "name": "TickMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4217,
                                  "src": "5855:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                    "typeString": "type(library TickMath)"
                                  }
                                },
                                "id": 12696,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getSqrtRatioAtTick",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4077,
                                "src": "5855:27:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$",
                                  "typeString": "function (int24) pure returns (uint160)"
                                }
                              },
                              "id": 12699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5855:45:46",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 12694,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5847:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 12693,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5847:7:46",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 12700,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5847:54:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5826:75:46"
                      },
                      {
                        "assignments": [
                          12703
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12703,
                            "mutability": "mutable",
                            "name": "priceUpper",
                            "nameLocation": "5919:10:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 12995,
                            "src": "5911:18:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12702,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5911:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12712,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 12708,
                                    "name": "mintParams",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12683,
                                    "src": "5968:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                      "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                    }
                                  },
                                  "id": 12709,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "upper",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12438,
                                  "src": "5968:16:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                ],
                                "expression": {
                                  "id": 12706,
                                  "name": "TickMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4217,
                                  "src": "5940:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                    "typeString": "type(library TickMath)"
                                  }
                                },
                                "id": 12707,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getSqrtRatioAtTick",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4077,
                                "src": "5940:27:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$",
                                  "typeString": "function (int24) pure returns (uint160)"
                                }
                              },
                              "id": 12710,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5940:45:46",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 12705,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5932:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 12704,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5932:7:46",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 12711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5932:54:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5911:75:46"
                      },
                      {
                        "assignments": [
                          12714
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12714,
                            "mutability": "mutable",
                            "name": "currentPrice",
                            "nameLocation": "6004:12:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 12995,
                            "src": "5996:20:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12713,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5996:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12719,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 12717,
                              "name": "price",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12384,
                              "src": "6027:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "id": 12716,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6019:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 12715,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6019:7:46",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 12718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6019:14:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5996:37:46"
                      },
                      {
                        "expression": {
                          "id": 12731,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12720,
                            "name": "_liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12679,
                            "src": "6044:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 12723,
                                "name": "priceLower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12692,
                                "src": "6102:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 12724,
                                "name": "priceUpper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12703,
                                "src": "6126:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 12725,
                                "name": "currentPrice",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12714,
                                "src": "6150:12:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 12726,
                                  "name": "mintParams",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12683,
                                  "src": "6176:10:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                    "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                  }
                                },
                                "id": 12727,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount1Desired",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12442,
                                "src": "6176:25:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 12728,
                                  "name": "mintParams",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12683,
                                  "src": "6215:10:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                    "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                  }
                                },
                                "id": 12729,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount0Desired",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12440,
                                "src": "6215:25:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 12721,
                                "name": "DyDxMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3409,
                                "src": "6057:8:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_DyDxMath_$3409_$",
                                  "typeString": "type(library DyDxMath)"
                                }
                              },
                              "id": 12722,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getLiquidityForAmounts",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3327,
                              "src": "6057:31:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_delegatecall_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 12730,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6057:193:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6044:206:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 12732,
                        "nodeType": "ExpressionStatement",
                        "src": "6044:206:46"
                      },
                      {
                        "id": 12793,
                        "nodeType": "UncheckedBlock",
                        "src": "6261:626:46",
                        "statements": [
                          {
                            "assignments": [
                              12734,
                              12736,
                              null
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 12734,
                                "mutability": "mutable",
                                "name": "amount0fees",
                                "nameLocation": "6294:11:46",
                                "nodeType": "VariableDeclaration",
                                "scope": 12793,
                                "src": "6286:19:46",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 12733,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6286:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 12736,
                                "mutability": "mutable",
                                "name": "amount1fees",
                                "nameLocation": "6315:11:46",
                                "nodeType": "VariableDeclaration",
                                "scope": 12793,
                                "src": "6307:19:46",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 12735,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6307:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              },
                              null
                            ],
                            "id": 12752,
                            "initialValue": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 12738,
                                    "name": "mintParams",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12683,
                                    "src": "6365:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                      "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                    }
                                  },
                                  "id": 12739,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "positionOwner",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12448,
                                  "src": "6365:24:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 12740,
                                    "name": "mintParams",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12683,
                                    "src": "6407:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                      "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                    }
                                  },
                                  "id": 12741,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "lower",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12434,
                                  "src": "6407:16:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 12742,
                                    "name": "mintParams",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12683,
                                    "src": "6441:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                      "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                    }
                                  },
                                  "id": 12743,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "upper",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12438,
                                  "src": "6441:16:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 12748,
                                          "name": "_liquidity",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12679,
                                          "src": "6490:10:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 12747,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "6482:7:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint128_$",
                                          "typeString": "type(uint128)"
                                        },
                                        "typeName": {
                                          "id": 12746,
                                          "name": "uint128",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6482:7:46",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 12749,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6482:19:46",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    ],
                                    "id": 12745,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "6475:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_int128_$",
                                      "typeString": "type(int128)"
                                    },
                                    "typeName": {
                                      "id": 12744,
                                      "name": "int128",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6475:6:46",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 12750,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6475:27:46",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int128",
                                    "typeString": "int128"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  },
                                  {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  },
                                  {
                                    "typeIdentifier": "t_int128",
                                    "typeString": "int128"
                                  }
                                ],
                                "id": 12737,
                                "name": "_updatePosition",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14223,
                                "src": "6332:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_int24_$_t_int24_$_t_int128_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                  "typeString": "function (address,int24,int24,int128) returns (uint256,uint256,uint256)"
                                }
                              },
                              "id": 12751,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6332:184:46",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256,uint256)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "6285:231:46"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 12755,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12753,
                                "name": "amount0fees",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12734,
                                "src": "6534:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 12754,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6548:1:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "6534:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 12772,
                            "nodeType": "IfStatement",
                            "src": "6530:167:46",
                            "trueBody": {
                              "id": 12771,
                              "nodeType": "Block",
                              "src": "6551:146:46",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 12757,
                                        "name": "token0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12357,
                                        "src": "6579:6:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 12758,
                                        "name": "amount0fees",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12734,
                                        "src": "6587:11:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 12759,
                                          "name": "mintParams",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12683,
                                          "src": "6600:10:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                            "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                          }
                                        },
                                        "id": 12760,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "positionOwner",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12448,
                                        "src": "6600:24:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "hexValue": "66616c7365",
                                        "id": 12761,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6626:5:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 12756,
                                      "name": "_transfer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14283,
                                      "src": "6569:9:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                        "typeString": "function (address,uint256,address,bool)"
                                      }
                                    },
                                    "id": 12762,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6569:63:46",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 12763,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6569:63:46"
                                },
                                {
                                  "expression": {
                                    "id": 12769,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 12764,
                                      "name": "reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12379,
                                      "src": "6650:8:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 12767,
                                          "name": "amount0fees",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12734,
                                          "src": "6670:11:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 12766,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "6662:7:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint128_$",
                                          "typeString": "type(uint128)"
                                        },
                                        "typeName": {
                                          "id": 12765,
                                          "name": "uint128",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6662:7:46",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 12768,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6662:20:46",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "src": "6650:32:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "id": 12770,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6650:32:46"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 12775,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12773,
                                "name": "amount1fees",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12736,
                                "src": "6714:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 12774,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6728:1:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "6714:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 12792,
                            "nodeType": "IfStatement",
                            "src": "6710:167:46",
                            "trueBody": {
                              "id": 12791,
                              "nodeType": "Block",
                              "src": "6731:146:46",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 12777,
                                        "name": "token1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12359,
                                        "src": "6759:6:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 12778,
                                        "name": "amount1fees",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12736,
                                        "src": "6767:11:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 12779,
                                          "name": "mintParams",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12683,
                                          "src": "6780:10:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                            "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                          }
                                        },
                                        "id": 12780,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "positionOwner",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12448,
                                        "src": "6780:24:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "hexValue": "66616c7365",
                                        "id": 12781,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6806:5:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 12776,
                                      "name": "_transfer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14283,
                                      "src": "6749:9:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                        "typeString": "function (address,uint256,address,bool)"
                                      }
                                    },
                                    "id": 12782,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6749:63:46",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 12783,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6749:63:46"
                                },
                                {
                                  "expression": {
                                    "id": 12789,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 12784,
                                      "name": "reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12382,
                                      "src": "6830:8:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 12787,
                                          "name": "amount1fees",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12736,
                                          "src": "6850:11:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 12786,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "6842:7:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint128_$",
                                          "typeString": "type(uint128)"
                                        },
                                        "typeName": {
                                          "id": 12785,
                                          "name": "uint128",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6842:7:46",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 12788,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6842:20:46",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "src": "6830:32:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "id": 12790,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6830:32:46"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "id": 12809,
                        "nodeType": "UncheckedBlock",
                        "src": "6897:127:46",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 12800,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 12796,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 12794,
                                  "name": "priceLower",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12692,
                                  "src": "6925:10:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 12795,
                                  "name": "currentPrice",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12714,
                                  "src": "6938:12:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6925:25:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 12799,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 12797,
                                  "name": "currentPrice",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12714,
                                  "src": "6954:12:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 12798,
                                  "name": "priceUpper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12703,
                                  "src": "6969:10:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6954:25:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "6925:54:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 12808,
                            "nodeType": "IfStatement",
                            "src": "6921:92:46",
                            "trueBody": {
                              "expression": {
                                "id": 12806,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 12801,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12361,
                                  "src": "6981:9:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 12804,
                                      "name": "_liquidity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12679,
                                      "src": "7002:10:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 12803,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "6994:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint128_$",
                                      "typeString": "type(uint128)"
                                    },
                                    "typeName": {
                                      "id": 12802,
                                      "name": "uint128",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6994:7:46",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 12805,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6994:19:46",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "6981:32:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 12807,
                              "nodeType": "ExpressionStatement",
                              "src": "6981:32:46"
                            }
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 12811,
                                "name": "mintParams",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12683,
                                "src": "7053:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                  "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                }
                              },
                              "id": 12812,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lower",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12434,
                              "src": "7053:16:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            {
                              "expression": {
                                "id": 12813,
                                "name": "mintParams",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12683,
                                "src": "7071:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                  "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                }
                              },
                              "id": 12814,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "upper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12438,
                              "src": "7071:16:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              },
                              {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            ],
                            "id": 12810,
                            "name": "_ensureTickSpacing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13995,
                            "src": "7034:18:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_int24_$_t_int24_$returns$__$",
                              "typeString": "function (int24,int24) view"
                            }
                          },
                          "id": 12815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7034:54:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12816,
                        "nodeType": "ExpressionStatement",
                        "src": "7034:54:46"
                      },
                      {
                        "expression": {
                          "id": 12842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 12817,
                            "name": "nearestTick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12387,
                            "src": "7099:11:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 12820,
                                "name": "ticks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12395,
                                "src": "7139:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                  "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                }
                              },
                              {
                                "id": 12821,
                                "name": "feeGrowthGlobal0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12368,
                                "src": "7158:16:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 12822,
                                "name": "feeGrowthGlobal1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12371,
                                "src": "7188:16:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 12823,
                                "name": "secondsGrowthGlobal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12363,
                                "src": "7218:19:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              {
                                "expression": {
                                  "id": 12824,
                                  "name": "mintParams",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12683,
                                  "src": "7251:10:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                    "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                  }
                                },
                                "id": 12825,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "lowerOld",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12432,
                                "src": "7251:19:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "expression": {
                                  "id": 12826,
                                  "name": "mintParams",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12683,
                                  "src": "7284:10:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                    "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                  }
                                },
                                "id": 12827,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "lower",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12434,
                                "src": "7284:16:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "expression": {
                                  "id": 12828,
                                  "name": "mintParams",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12683,
                                  "src": "7314:10:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                    "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                  }
                                },
                                "id": 12829,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "upperOld",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12436,
                                "src": "7314:19:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "expression": {
                                  "id": 12830,
                                  "name": "mintParams",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12683,
                                  "src": "7347:10:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                    "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                  }
                                },
                                "id": 12831,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "upper",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12438,
                                "src": "7347:16:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 12834,
                                    "name": "_liquidity",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12679,
                                    "src": "7385:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12833,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7377:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  },
                                  "typeName": {
                                    "id": 12832,
                                    "name": "uint128",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7377:7:46",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12835,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7377:19:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              {
                                "id": 12836,
                                "name": "nearestTick",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12387,
                                "src": "7410:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 12839,
                                    "name": "currentPrice",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12714,
                                    "src": "7443:12:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 12838,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7435:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 12837,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7435:7:46",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 12840,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7435:21:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                  "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "expression": {
                                "id": 12818,
                                "name": "Ticks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4906,
                                "src": "7113:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Ticks_$4906_$",
                                  "typeString": "type(library Ticks)"
                                }
                              },
                              "id": 12819,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "insert",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4735,
                              "src": "7113:12:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_delegatecall_nonpayable$_t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$_$_t_uint256_$_t_uint256_$_t_uint160_$_t_int24_$_t_int24_$_t_int24_$_t_int24_$_t_uint128_$_t_int24_$_t_uint160_$returns$_t_int24_$",
                                "typeString": "function (mapping(int24 => struct Ticks.Tick storage ref),uint256,uint256,uint160,int24,int24,int24,int24,uint128,int24,uint160) returns (int24)"
                              }
                            },
                            "id": 12841,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7113:353:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "src": "7099:367:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "id": 12843,
                        "nodeType": "ExpressionStatement",
                        "src": "7099:367:46"
                      },
                      {
                        "assignments": [
                          12845,
                          12847
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12845,
                            "mutability": "mutable",
                            "name": "amount0Actual",
                            "nameLocation": "7486:13:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 12995,
                            "src": "7478:21:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            },
                            "typeName": {
                              "id": 12844,
                              "name": "uint128",
                              "nodeType": "ElementaryTypeName",
                              "src": "7478:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 12847,
                            "mutability": "mutable",
                            "name": "amount1Actual",
                            "nameLocation": "7509:13:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 12995,
                            "src": "7501:21:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            },
                            "typeName": {
                              "id": 12846,
                              "name": "uint128",
                              "nodeType": "ElementaryTypeName",
                              "src": "7501:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12856,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 12850,
                              "name": "priceLower",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12692,
                              "src": "7571:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 12851,
                              "name": "priceUpper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12703,
                              "src": "7595:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 12852,
                              "name": "currentPrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12714,
                              "src": "7619:12:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 12853,
                              "name": "_liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12679,
                              "src": "7645:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 12854,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7669:4:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "id": 12848,
                              "name": "DyDxMath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3409,
                              "src": "7526:8:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_DyDxMath_$3409_$",
                                "typeString": "type(library DyDxMath)"
                              }
                            },
                            "id": 12849,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsForLiquidity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3408,
                            "src": "7526:31:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint128_$_t_uint128_$",
                              "typeString": "function (uint256,uint256,uint256,uint256,bool) pure returns (uint128,uint128)"
                            }
                          },
                          "id": 12855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7526:157:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$",
                            "typeString": "tuple(uint128,uint128)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7477:206:46"
                      },
                      {
                        "id": 12905,
                        "nodeType": "Block",
                        "src": "7694:405:46",
                        "statements": [
                          {
                            "assignments": [
                              12862
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 12862,
                                "mutability": "mutable",
                                "name": "callbackData",
                                "nameLocation": "7743:12:46",
                                "nodeType": "VariableDeclaration",
                                "scope": 12905,
                                "src": "7708:47:46",
                                "stateVariable": false,
                                "storageLocation": "memory",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct ITridentRouter.TokenInput[]"
                                },
                                "typeName": {
                                  "baseType": {
                                    "id": 12860,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 12859,
                                      "name": "ITridentRouter.TokenInput",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 2530,
                                      "src": "7708:25:46"
                                    },
                                    "referencedDeclaration": 2530,
                                    "src": "7708:25:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_TokenInput_$2530_storage_ptr",
                                      "typeString": "struct ITridentRouter.TokenInput"
                                    }
                                  },
                                  "id": 12861,
                                  "nodeType": "ArrayTypeName",
                                  "src": "7708:27:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_storage_$dyn_storage_ptr",
                                    "typeString": "struct ITridentRouter.TokenInput[]"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 12869,
                            "initialValue": {
                              "arguments": [
                                {
                                  "hexValue": "32",
                                  "id": 12867,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7790:1:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  }
                                ],
                                "id": 12866,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "7758:31:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (struct ITridentRouter.TokenInput memory[] memory)"
                                },
                                "typeName": {
                                  "baseType": {
                                    "id": 12864,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 12863,
                                      "name": "ITridentRouter.TokenInput",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 2530,
                                      "src": "7762:25:46"
                                    },
                                    "referencedDeclaration": 2530,
                                    "src": "7762:25:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_TokenInput_$2530_storage_ptr",
                                      "typeString": "struct ITridentRouter.TokenInput"
                                    }
                                  },
                                  "id": 12865,
                                  "nodeType": "ArrayTypeName",
                                  "src": "7762:27:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_storage_$dyn_storage_ptr",
                                    "typeString": "struct ITridentRouter.TokenInput[]"
                                  }
                                }
                              },
                              "id": 12868,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7758:34:46",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct ITridentRouter.TokenInput memory[] memory"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "7708:84:46"
                          },
                          {
                            "expression": {
                              "id": 12880,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 12870,
                                  "name": "callbackData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12862,
                                  "src": "7806:12:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct ITridentRouter.TokenInput memory[] memory"
                                  }
                                },
                                "id": 12872,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 12871,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7819:1:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "7806:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                  "typeString": "struct ITridentRouter.TokenInput memory"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 12875,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12357,
                                    "src": "7850:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 12876,
                                      "name": "mintParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12683,
                                      "src": "7858:10:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                        "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                      }
                                    },
                                    "id": 12877,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "token0native",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12444,
                                    "src": "7858:23:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "id": 12878,
                                    "name": "amount0Actual",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12845,
                                    "src": "7883:13:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "expression": {
                                    "id": 12873,
                                    "name": "ITridentRouter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2573,
                                    "src": "7824:14:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ITridentRouter_$2573_$",
                                      "typeString": "type(contract ITridentRouter)"
                                    }
                                  },
                                  "id": 12874,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "TokenInput",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2530,
                                  "src": "7824:25:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_struct$_TokenInput_$2530_storage_ptr_$",
                                    "typeString": "type(struct ITridentRouter.TokenInput storage pointer)"
                                  }
                                },
                                "id": 12879,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "structConstructorCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7824:73:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                  "typeString": "struct ITridentRouter.TokenInput memory"
                                }
                              },
                              "src": "7806:91:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                "typeString": "struct ITridentRouter.TokenInput memory"
                              }
                            },
                            "id": 12881,
                            "nodeType": "ExpressionStatement",
                            "src": "7806:91:46"
                          },
                          {
                            "expression": {
                              "id": 12892,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 12882,
                                  "name": "callbackData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12862,
                                  "src": "7911:12:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct ITridentRouter.TokenInput memory[] memory"
                                  }
                                },
                                "id": 12884,
                                "indexExpression": {
                                  "hexValue": "31",
                                  "id": 12883,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7924:1:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "7911:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                  "typeString": "struct ITridentRouter.TokenInput memory"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 12887,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12359,
                                    "src": "7955:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 12888,
                                      "name": "mintParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12683,
                                      "src": "7963:10:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                        "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                      }
                                    },
                                    "id": 12889,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "token1native",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12446,
                                    "src": "7963:23:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "id": 12890,
                                    "name": "amount1Actual",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12847,
                                    "src": "7988:13:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "expression": {
                                    "id": 12885,
                                    "name": "ITridentRouter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2573,
                                    "src": "7929:14:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ITridentRouter_$2573_$",
                                      "typeString": "type(contract ITridentRouter)"
                                    }
                                  },
                                  "id": 12886,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "TokenInput",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2530,
                                  "src": "7929:25:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_struct$_TokenInput_$2530_storage_ptr_$",
                                    "typeString": "type(struct ITridentRouter.TokenInput storage pointer)"
                                  }
                                },
                                "id": 12891,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "structConstructorCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7929:73:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                  "typeString": "struct ITridentRouter.TokenInput memory"
                                }
                              },
                              "src": "7911:91:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_TokenInput_$2530_memory_ptr",
                                "typeString": "struct ITridentRouter.TokenInput memory"
                              }
                            },
                            "id": 12893,
                            "nodeType": "ExpressionStatement",
                            "src": "7911:91:46"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 12901,
                                      "name": "callbackData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12862,
                                      "src": "8074:12:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct ITridentRouter.TokenInput memory[] memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_array$_t_struct$_TokenInput_$2530_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct ITridentRouter.TokenInput memory[] memory"
                                      }
                                    ],
                                    "expression": {
                                      "id": 12899,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "8063:3:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 12900,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encode",
                                    "nodeType": "MemberAccess",
                                    "src": "8063:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 12902,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8063:24:46",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 12895,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "8031:3:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 12896,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "8031:10:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 12894,
                                    "name": "ITridentCallee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2482,
                                    "src": "8016:14:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ITridentCallee_$2482_$",
                                      "typeString": "type(contract ITridentCallee)"
                                    }
                                  },
                                  "id": 12897,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8016:26:46",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ITridentCallee_$2482",
                                    "typeString": "contract ITridentCallee"
                                  }
                                },
                                "id": 12898,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "tridentMintCallback",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2481,
                                "src": "8016:46:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                                  "typeString": "function (bytes memory) external"
                                }
                              },
                              "id": 12903,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8016:72:46",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 12904,
                            "nodeType": "ExpressionStatement",
                            "src": "8016:72:46"
                          }
                        ]
                      },
                      {
                        "id": 12946,
                        "nodeType": "UncheckedBlock",
                        "src": "8109:390:46",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              "id": 12908,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12906,
                                "name": "amount0Actual",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12845,
                                "src": "8137:13:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 12907,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8154:1:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "8137:18:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 12925,
                            "nodeType": "IfStatement",
                            "src": "8133:171:46",
                            "trueBody": {
                              "id": 12924,
                              "nodeType": "Block",
                              "src": "8157:147:46",
                              "statements": [
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 12915,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      },
                                      "id": 12911,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 12909,
                                        "name": "amount0Actual",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12845,
                                        "src": "8179:13:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "id": 12910,
                                        "name": "reserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12379,
                                        "src": "8195:8:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "8179:24:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "id": 12913,
                                          "name": "token0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12357,
                                          "src": "8215:6:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 12912,
                                        "name": "_balance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14242,
                                        "src": "8206:8:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                          "typeString": "function (address) view returns (uint256)"
                                        }
                                      },
                                      "id": 12914,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8206:16:46",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8179:43:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 12919,
                                  "nodeType": "IfStatement",
                                  "src": "8175:71:46",
                                  "trueBody": {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 12916,
                                        "name": "Token0Missing",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12466,
                                        "src": "8231:13:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 12917,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8231:15:46",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 12918,
                                    "nodeType": "RevertStatement",
                                    "src": "8224:22:46"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 12922,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 12920,
                                      "name": "reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12379,
                                      "src": "8264:8:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "id": 12921,
                                      "name": "amount0Actual",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12845,
                                      "src": "8276:13:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "src": "8264:25:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "id": 12923,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8264:25:46"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              "id": 12928,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 12926,
                                "name": "amount1Actual",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12847,
                                "src": "8322:13:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 12927,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8339:1:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "8322:18:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 12945,
                            "nodeType": "IfStatement",
                            "src": "8318:171:46",
                            "trueBody": {
                              "id": 12944,
                              "nodeType": "Block",
                              "src": "8342:147:46",
                              "statements": [
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 12935,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      },
                                      "id": 12931,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 12929,
                                        "name": "amount1Actual",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12847,
                                        "src": "8364:13:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "id": 12930,
                                        "name": "reserve1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12382,
                                        "src": "8380:8:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "8364:24:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "id": 12933,
                                          "name": "token1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12359,
                                          "src": "8400:6:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 12932,
                                        "name": "_balance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14242,
                                        "src": "8391:8:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                          "typeString": "function (address) view returns (uint256)"
                                        }
                                      },
                                      "id": 12934,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8391:16:46",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8364:43:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 12939,
                                  "nodeType": "IfStatement",
                                  "src": "8360:71:46",
                                  "trueBody": {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 12936,
                                        "name": "Token1Missing",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12468,
                                        "src": "8416:13:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 12937,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8416:15:46",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 12938,
                                    "nodeType": "RevertStatement",
                                    "src": "8409:22:46"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 12942,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 12940,
                                      "name": "reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12382,
                                      "src": "8449:8:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "id": 12941,
                                      "name": "amount1Actual",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12847,
                                      "src": "8461:13:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "src": "8449:25:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "id": 12943,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8449:25:46"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "assignments": [
                          12948,
                          12950
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 12948,
                            "mutability": "mutable",
                            "name": "feeGrowth0",
                            "nameLocation": "8518:10:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 12995,
                            "src": "8510:18:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12947,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8510:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 12950,
                            "mutability": "mutable",
                            "name": "feeGrowth1",
                            "nameLocation": "8538:10:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 12995,
                            "src": "8530:18:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 12949,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8530:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 12957,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 12952,
                                "name": "mintParams",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12683,
                                "src": "8567:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                  "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                }
                              },
                              "id": 12953,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lower",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12434,
                              "src": "8567:16:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            {
                              "expression": {
                                "id": 12954,
                                "name": "mintParams",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12683,
                                "src": "8585:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                  "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                }
                              },
                              "id": 12955,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "upper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12438,
                              "src": "8585:16:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              },
                              {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            ],
                            "id": 12951,
                            "name": "rangeFeeGrowth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14480,
                            "src": "8552:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_int24_$_t_int24_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (int24,int24) view returns (uint256,uint256)"
                            }
                          },
                          "id": 12956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8552:50:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8509:93:46"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 12964,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 12958,
                              "name": "mintParams",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12683,
                              "src": "8617:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                              }
                            },
                            "id": 12959,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "positionRecipient",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12450,
                            "src": "8617:28:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 12962,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8657:1:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 12961,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8649:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 12960,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8649:7:46",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 12963,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8649:10:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "8617:42:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 12987,
                        "nodeType": "IfStatement",
                        "src": "8613:396:46",
                        "trueBody": {
                          "id": 12986,
                          "nodeType": "Block",
                          "src": "8661:348:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 12970,
                                      "name": "mintParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12683,
                                      "src": "8756:10:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                        "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                      }
                                    },
                                    "id": 12971,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "positionRecipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12450,
                                    "src": "8756:28:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 12972,
                                      "name": "mintParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12683,
                                      "src": "8802:10:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                        "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                      }
                                    },
                                    "id": 12973,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lower",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12434,
                                    "src": "8802:16:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 12974,
                                      "name": "mintParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12683,
                                      "src": "8836:10:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                        "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                      }
                                    },
                                    "id": 12975,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "upper",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12438,
                                    "src": "8836:16:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 12978,
                                        "name": "_liquidity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12679,
                                        "src": "8878:10:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 12977,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8870:7:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint128_$",
                                        "typeString": "type(uint128)"
                                      },
                                      "typeName": {
                                        "id": 12976,
                                        "name": "uint128",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8870:7:46",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 12979,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8870:19:46",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  {
                                    "id": 12980,
                                    "name": "feeGrowth0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12948,
                                    "src": "8907:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 12981,
                                    "name": "feeGrowth1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12950,
                                    "src": "8935:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 12982,
                                      "name": "mintParams",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12683,
                                      "src": "8963:10:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                        "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                      }
                                    },
                                    "id": 12983,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "positionId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 12452,
                                    "src": "8963:21:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    },
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 12966,
                                          "name": "mintParams",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12683,
                                          "src": "8692:10:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                            "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                          }
                                        },
                                        "id": 12967,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "positionOwner",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12448,
                                        "src": "8692:24:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 12965,
                                      "name": "IPositionManager",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2819,
                                      "src": "8675:16:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IPositionManager_$2819_$",
                                        "typeString": "type(contract IPositionManager)"
                                      }
                                    },
                                    "id": 12968,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8675:42:46",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IPositionManager_$2819",
                                      "typeString": "contract IPositionManager"
                                    }
                                  },
                                  "id": 12969,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "positionMintCallback",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2818,
                                  "src": "8675:63:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_int24_$_t_int24_$_t_uint128_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,int24,int24,uint128,uint256,uint256,uint256) external returns (uint256)"
                                  }
                                },
                                "id": 12984,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8675:323:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 12985,
                              "nodeType": "ExpressionStatement",
                              "src": "8675:323:46"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 12989,
                                "name": "mintParams",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12683,
                                "src": "9029:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MintParams_$12453_memory_ptr",
                                  "typeString": "struct ConcentratedLiquidityPool.MintParams memory"
                                }
                              },
                              "id": 12990,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "positionOwner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12448,
                              "src": "9029:24:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 12991,
                              "name": "amount0Actual",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12845,
                              "src": "9055:13:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            {
                              "id": 12992,
                              "name": "amount1Actual",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12847,
                              "src": "9070:13:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            ],
                            "id": 12988,
                            "name": "Mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12310,
                            "src": "9024:4:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 12993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9024:60:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 12994,
                        "nodeType": "EmitStatement",
                        "src": "9019:65:46"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12671,
                    "nodeType": "StructuredDocumentation",
                    "src": "5487:167:46",
                    "text": "@dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\n The router must ensure that sufficient liquidity has been minted."
                  },
                  "functionSelector": "7ba0e2e7",
                  "id": 12996,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 12677,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 12676,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12497,
                        "src": "5710:4:46"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5710:4:46"
                    }
                  ],
                  "name": "mint",
                  "nameLocation": "5668:4:46",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 12675,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5701:8:46"
                  },
                  "parameters": {
                    "id": 12674,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12673,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5688:4:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 12996,
                        "src": "5673:19:46",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 12672,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5673:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5672:21:46"
                  },
                  "returnParameters": {
                    "id": 12680,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12679,
                        "mutability": "mutable",
                        "name": "_liquidity",
                        "nameLocation": "5732:10:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 12996,
                        "src": "5724:18:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 12678,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5724:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5723:20:46"
                  },
                  "scope": 14653,
                  "src": "5659:3432:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 13224,
                    "nodeType": "Block",
                    "src": "9600:1849:46",
                    "statements": [
                      {
                        "assignments": [
                          13021
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13021,
                            "mutability": "mutable",
                            "name": "amount0",
                            "nameLocation": "9618:7:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 13224,
                            "src": "9610:15:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13020,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9610:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13022,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9610:15:46"
                      },
                      {
                        "assignments": [
                          13024
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13024,
                            "mutability": "mutable",
                            "name": "amount1",
                            "nameLocation": "9643:7:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 13224,
                            "src": "9635:15:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13023,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9635:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13025,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9635:15:46"
                      },
                      {
                        "id": 13082,
                        "nodeType": "Block",
                        "src": "9661:577:46",
                        "statements": [
                          {
                            "assignments": [
                              13027
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 13027,
                                "mutability": "mutable",
                                "name": "priceLower",
                                "nameLocation": "9683:10:46",
                                "nodeType": "VariableDeclaration",
                                "scope": 13082,
                                "src": "9675:18:46",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                "typeName": {
                                  "id": 13026,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9675:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 13032,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 13030,
                                  "name": "lower",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12999,
                                  "src": "9724:5:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                ],
                                "expression": {
                                  "id": 13028,
                                  "name": "TickMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4217,
                                  "src": "9696:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                    "typeString": "type(library TickMath)"
                                  }
                                },
                                "id": 13029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getSqrtRatioAtTick",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4077,
                                "src": "9696:27:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$",
                                  "typeString": "function (int24) pure returns (uint160)"
                                }
                              },
                              "id": 13031,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9696:34:46",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "9675:55:46"
                          },
                          {
                            "assignments": [
                              13034
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 13034,
                                "mutability": "mutable",
                                "name": "priceUpper",
                                "nameLocation": "9752:10:46",
                                "nodeType": "VariableDeclaration",
                                "scope": 13082,
                                "src": "9744:18:46",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                "typeName": {
                                  "id": 13033,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9744:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 13039,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 13037,
                                  "name": "upper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13001,
                                  "src": "9793:5:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                ],
                                "expression": {
                                  "id": 13035,
                                  "name": "TickMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4217,
                                  "src": "9765:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                    "typeString": "type(library TickMath)"
                                  }
                                },
                                "id": 13036,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "getSqrtRatioAtTick",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4077,
                                "src": "9765:27:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$",
                                  "typeString": "function (int24) pure returns (uint160)"
                                }
                              },
                              "id": 13038,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9765:34:46",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "9744:55:46"
                          },
                          {
                            "assignments": [
                              13041
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 13041,
                                "mutability": "mutable",
                                "name": "currentPrice",
                                "nameLocation": "9821:12:46",
                                "nodeType": "VariableDeclaration",
                                "scope": 13082,
                                "src": "9813:20:46",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                "typeName": {
                                  "id": 13040,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9813:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 13043,
                            "initialValue": {
                              "id": 13042,
                              "name": "price",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12384,
                              "src": "9836:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "9813:28:46"
                          },
                          {
                            "id": 13056,
                            "nodeType": "UncheckedBlock",
                            "src": "9856:122:46",
                            "statements": [
                              {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 13050,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    },
                                    "id": 13046,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 13044,
                                      "name": "priceLower",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13027,
                                      "src": "9888:10:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "id": 13045,
                                      "name": "currentPrice",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13041,
                                      "src": "9901:12:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      }
                                    },
                                    "src": "9888:25:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    },
                                    "id": 13049,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 13047,
                                      "name": "currentPrice",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13041,
                                      "src": "9917:12:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "id": 13048,
                                      "name": "priceUpper",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13034,
                                      "src": "9932:10:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      }
                                    },
                                    "src": "9917:25:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "9888:54:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 13055,
                                "nodeType": "IfStatement",
                                "src": "9884:79:46",
                                "trueBody": {
                                  "expression": {
                                    "id": 13053,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 13051,
                                      "name": "liquidity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12361,
                                      "src": "9944:9:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "id": 13052,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13003,
                                      "src": "9957:6:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    "src": "9944:19:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "id": 13054,
                                  "nodeType": "ExpressionStatement",
                                  "src": "9944:19:46"
                                }
                              }
                            ]
                          },
                          {
                            "expression": {
                              "id": 13080,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "components": [
                                  {
                                    "id": 13057,
                                    "name": "amount0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13021,
                                    "src": "9993:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 13058,
                                    "name": "amount1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13024,
                                    "src": "10002:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 13059,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "TupleExpression",
                                "src": "9992:18:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 13064,
                                        "name": "priceLower",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13027,
                                        "src": "10070:10:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      ],
                                      "id": 13063,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "10062:7:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 13062,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10062:7:46",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 13065,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10062:19:46",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 13068,
                                        "name": "priceUpper",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13034,
                                        "src": "10107:10:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      ],
                                      "id": 13067,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "10099:7:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 13066,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10099:7:46",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 13069,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10099:19:46",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 13072,
                                        "name": "currentPrice",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13041,
                                        "src": "10144:12:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint160",
                                          "typeString": "uint160"
                                        }
                                      ],
                                      "id": 13071,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "10136:7:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 13070,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10136:7:46",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 13073,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10136:21:46",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 13076,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13003,
                                        "src": "10183:6:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      ],
                                      "id": 13075,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "10175:7:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 13074,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10175:7:46",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 13077,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10175:15:46",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "66616c7365",
                                    "id": 13078,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10208:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "id": 13060,
                                    "name": "DyDxMath",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3409,
                                    "src": "10013:8:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_DyDxMath_$3409_$",
                                      "typeString": "type(library DyDxMath)"
                                    }
                                  },
                                  "id": 13061,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getAmountsForLiquidity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3408,
                                  "src": "10013:31:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint128_$_t_uint128_$",
                                    "typeString": "function (uint256,uint256,uint256,uint256,bool) pure returns (uint128,uint128)"
                                  }
                                },
                                "id": 13079,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10013:214:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$",
                                  "typeString": "tuple(uint128,uint128)"
                                }
                              },
                              "src": "9992:235:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 13081,
                            "nodeType": "ExpressionStatement",
                            "src": "9992:235:46"
                          }
                        ]
                      },
                      {
                        "id": 13183,
                        "nodeType": "Block",
                        "src": "10248:880:46",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              "id": 13092,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 13083,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13003,
                                "src": "10332:6:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 13088,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "10354:6:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_int128_$",
                                            "typeString": "type(int128)"
                                          },
                                          "typeName": {
                                            "id": 13087,
                                            "name": "int128",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "10354:6:46",
                                            "typeDescriptions": {}
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_type$_t_int128_$",
                                            "typeString": "type(int128)"
                                          }
                                        ],
                                        "id": 13086,
                                        "name": "type",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -27,
                                        "src": "10349:4:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 13089,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10349:12:46",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_meta_type_t_int128",
                                        "typeString": "type(int128)"
                                      }
                                    },
                                    "id": 13090,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "max",
                                    "nodeType": "MemberAccess",
                                    "src": "10349:16:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int128",
                                      "typeString": "int128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int128",
                                      "typeString": "int128"
                                    }
                                  ],
                                  "id": 13085,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10341:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  },
                                  "typeName": {
                                    "id": 13084,
                                    "name": "uint128",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10341:7:46",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 13091,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10341:25:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "10332:34:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 13096,
                            "nodeType": "IfStatement",
                            "src": "10328:57:46",
                            "trueBody": {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 13093,
                                  "name": "Overflow",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12478,
                                  "src": "10375:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 13094,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10375:10:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 13095,
                              "nodeType": "RevertStatement",
                              "src": "10368:17:46"
                            }
                          },
                          {
                            "assignments": [
                              13098
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 13098,
                                "mutability": "mutable",
                                "name": "amount0fees",
                                "nameLocation": "10408:11:46",
                                "nodeType": "VariableDeclaration",
                                "scope": 13183,
                                "src": "10400:19:46",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 13097,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10400:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 13099,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "10400:19:46"
                          },
                          {
                            "assignments": [
                              13101
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 13101,
                                "mutability": "mutable",
                                "name": "amount1fees",
                                "nameLocation": "10441:11:46",
                                "nodeType": "VariableDeclaration",
                                "scope": 13183,
                                "src": "10433:19:46",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 13100,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10433:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 13102,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "10433:19:46"
                          },
                          {
                            "expression": {
                              "id": 13118,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "components": [
                                  {
                                    "id": 13103,
                                    "name": "amount0fees",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13098,
                                    "src": "10467:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 13104,
                                    "name": "amount1fees",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13101,
                                    "src": "10480:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 13105,
                                    "name": "oldLiquidity",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13018,
                                    "src": "10493:12:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 13106,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "TupleExpression",
                                "src": "10466:40:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256,uint256)"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 13108,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "10525:3:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 13109,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "10525:10:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13110,
                                    "name": "lower",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12999,
                                    "src": "10537:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  {
                                    "id": 13111,
                                    "name": "upper",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13001,
                                    "src": "10544:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  {
                                    "id": 13116,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "10551:15:46",
                                    "subExpression": {
                                      "arguments": [
                                        {
                                          "id": 13114,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13003,
                                          "src": "10559:6:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint128",
                                            "typeString": "uint128"
                                          }
                                        ],
                                        "id": 13113,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "10552:6:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_int128_$",
                                          "typeString": "type(int128)"
                                        },
                                        "typeName": {
                                          "id": 13112,
                                          "name": "int128",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "10552:6:46",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 13115,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10552:14:46",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int128",
                                        "typeString": "int128"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int128",
                                      "typeString": "int128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    },
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    },
                                    {
                                      "typeIdentifier": "t_int128",
                                      "typeString": "int128"
                                    }
                                  ],
                                  "id": 13107,
                                  "name": "_updatePosition",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14223,
                                  "src": "10509:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_int24_$_t_int24_$_t_int128_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (address,int24,int24,int128) returns (uint256,uint256,uint256)"
                                  }
                                },
                                "id": 13117,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10509:58:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256,uint256)"
                                }
                              },
                              "src": "10466:101:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 13119,
                            "nodeType": "ExpressionStatement",
                            "src": "10466:101:46"
                          },
                          {
                            "expression": {
                              "id": 13127,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 13120,
                                "name": "withdrawnAmounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13012,
                                "src": "10582:16:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct IPool.TokenAmount memory[] memory"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "hexValue": "32",
                                    "id": 13125,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10619:1:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    }
                                  ],
                                  "id": 13124,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "NewExpression",
                                  "src": "10601:17:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256) pure returns (struct IPool.TokenAmount memory[] memory)"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 13122,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 13121,
                                        "name": "TokenAmount",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 2449,
                                        "src": "10605:11:46"
                                      },
                                      "referencedDeclaration": 2449,
                                      "src": "10605:11:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                                        "typeString": "struct IPool.TokenAmount"
                                      }
                                    },
                                    "id": 13123,
                                    "nodeType": "ArrayTypeName",
                                    "src": "10605:13:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                                      "typeString": "struct IPool.TokenAmount[]"
                                    }
                                  }
                                },
                                "id": 13126,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10601:20:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct IPool.TokenAmount memory[] memory"
                                }
                              },
                              "src": "10582:39:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IPool.TokenAmount memory[] memory"
                              }
                            },
                            "id": 13128,
                            "nodeType": "ExpressionStatement",
                            "src": "10582:39:46"
                          },
                          {
                            "expression": {
                              "id": 13136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 13129,
                                  "name": "withdrawnAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13012,
                                  "src": "10635:16:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct IPool.TokenAmount memory[] memory"
                                  }
                                },
                                "id": 13131,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 13130,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10652:1:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "10635:19:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                  "typeString": "struct IPool.TokenAmount memory"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 13133,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12357,
                                    "src": "10677:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13134,
                                    "name": "amount0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13021,
                                    "src": "10693:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 13132,
                                  "name": "TokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2449,
                                  "src": "10657:11:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_struct$_TokenAmount_$2449_storage_ptr_$",
                                    "typeString": "type(struct IPool.TokenAmount storage pointer)"
                                  }
                                },
                                "id": 13135,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "structConstructorCall",
                                "lValueRequested": false,
                                "names": [
                                  "token",
                                  "amount"
                                ],
                                "nodeType": "FunctionCall",
                                "src": "10657:45:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                  "typeString": "struct IPool.TokenAmount memory"
                                }
                              },
                              "src": "10635:67:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                "typeString": "struct IPool.TokenAmount memory"
                              }
                            },
                            "id": 13137,
                            "nodeType": "ExpressionStatement",
                            "src": "10635:67:46"
                          },
                          {
                            "expression": {
                              "id": 13145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 13138,
                                  "name": "withdrawnAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13012,
                                  "src": "10716:16:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct IPool.TokenAmount memory[] memory"
                                  }
                                },
                                "id": 13140,
                                "indexExpression": {
                                  "hexValue": "31",
                                  "id": 13139,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10733:1:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "10716:19:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                  "typeString": "struct IPool.TokenAmount memory"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 13142,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12359,
                                    "src": "10758:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13143,
                                    "name": "amount1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13024,
                                    "src": "10774:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 13141,
                                  "name": "TokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2449,
                                  "src": "10738:11:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_struct$_TokenAmount_$2449_storage_ptr_$",
                                    "typeString": "type(struct IPool.TokenAmount storage pointer)"
                                  }
                                },
                                "id": 13144,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "structConstructorCall",
                                "lValueRequested": false,
                                "names": [
                                  "token",
                                  "amount"
                                ],
                                "nodeType": "FunctionCall",
                                "src": "10738:45:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                  "typeString": "struct IPool.TokenAmount memory"
                                }
                              },
                              "src": "10716:67:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                "typeString": "struct IPool.TokenAmount memory"
                              }
                            },
                            "id": 13146,
                            "nodeType": "ExpressionStatement",
                            "src": "10716:67:46"
                          },
                          {
                            "expression": {
                              "id": 13154,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 13147,
                                "name": "feesWithdrawn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13016,
                                "src": "10798:13:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct IPool.TokenAmount memory[] memory"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "hexValue": "32",
                                    "id": 13152,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10832:1:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    }
                                  ],
                                  "id": 13151,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "NewExpression",
                                  "src": "10814:17:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256) pure returns (struct IPool.TokenAmount memory[] memory)"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 13149,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 13148,
                                        "name": "TokenAmount",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 2449,
                                        "src": "10818:11:46"
                                      },
                                      "referencedDeclaration": 2449,
                                      "src": "10818:11:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                                        "typeString": "struct IPool.TokenAmount"
                                      }
                                    },
                                    "id": 13150,
                                    "nodeType": "ArrayTypeName",
                                    "src": "10818:13:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                                      "typeString": "struct IPool.TokenAmount[]"
                                    }
                                  }
                                },
                                "id": 13153,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10814:20:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct IPool.TokenAmount memory[] memory"
                                }
                              },
                              "src": "10798:36:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IPool.TokenAmount memory[] memory"
                              }
                            },
                            "id": 13155,
                            "nodeType": "ExpressionStatement",
                            "src": "10798:36:46"
                          },
                          {
                            "expression": {
                              "id": 13163,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 13156,
                                  "name": "feesWithdrawn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13016,
                                  "src": "10848:13:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct IPool.TokenAmount memory[] memory"
                                  }
                                },
                                "id": 13158,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 13157,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10862:1:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "10848:16:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                  "typeString": "struct IPool.TokenAmount memory"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 13160,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12357,
                                    "src": "10887:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13161,
                                    "name": "amount0fees",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13098,
                                    "src": "10903:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 13159,
                                  "name": "TokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2449,
                                  "src": "10867:11:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_struct$_TokenAmount_$2449_storage_ptr_$",
                                    "typeString": "type(struct IPool.TokenAmount storage pointer)"
                                  }
                                },
                                "id": 13162,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "structConstructorCall",
                                "lValueRequested": false,
                                "names": [
                                  "token",
                                  "amount"
                                ],
                                "nodeType": "FunctionCall",
                                "src": "10867:49:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                  "typeString": "struct IPool.TokenAmount memory"
                                }
                              },
                              "src": "10848:68:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                "typeString": "struct IPool.TokenAmount memory"
                              }
                            },
                            "id": 13164,
                            "nodeType": "ExpressionStatement",
                            "src": "10848:68:46"
                          },
                          {
                            "expression": {
                              "id": 13172,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 13165,
                                  "name": "feesWithdrawn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13016,
                                  "src": "10930:13:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct IPool.TokenAmount memory[] memory"
                                  }
                                },
                                "id": 13167,
                                "indexExpression": {
                                  "hexValue": "31",
                                  "id": 13166,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10944:1:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "10930:16:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                  "typeString": "struct IPool.TokenAmount memory"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 13169,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12359,
                                    "src": "10969:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13170,
                                    "name": "amount1fees",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13101,
                                    "src": "10985:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 13168,
                                  "name": "TokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2449,
                                  "src": "10949:11:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_struct$_TokenAmount_$2449_storage_ptr_$",
                                    "typeString": "type(struct IPool.TokenAmount storage pointer)"
                                  }
                                },
                                "id": 13171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "structConstructorCall",
                                "lValueRequested": false,
                                "names": [
                                  "token",
                                  "amount"
                                ],
                                "nodeType": "FunctionCall",
                                "src": "10949:49:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                  "typeString": "struct IPool.TokenAmount memory"
                                }
                              },
                              "src": "10930:68:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                "typeString": "struct IPool.TokenAmount memory"
                              }
                            },
                            "id": 13173,
                            "nodeType": "ExpressionStatement",
                            "src": "10930:68:46"
                          },
                          {
                            "id": 13182,
                            "nodeType": "UncheckedBlock",
                            "src": "11013:105:46",
                            "statements": [
                              {
                                "expression": {
                                  "id": 13176,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 13174,
                                    "name": "amount0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13021,
                                    "src": "11041:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "+=",
                                  "rightHandSide": {
                                    "id": 13175,
                                    "name": "amount0fees",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13098,
                                    "src": "11052:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "11041:22:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 13177,
                                "nodeType": "ExpressionStatement",
                                "src": "11041:22:46"
                              },
                              {
                                "expression": {
                                  "id": 13180,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 13178,
                                    "name": "amount1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13024,
                                    "src": "11081:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "+=",
                                  "rightHandSide": {
                                    "id": 13179,
                                    "name": "amount1fees",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13101,
                                    "src": "11092:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "11081:22:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 13181,
                                "nodeType": "ExpressionStatement",
                                "src": "11081:22:46"
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "id": 13198,
                        "nodeType": "UncheckedBlock",
                        "src": "11138:105:46",
                        "statements": [
                          {
                            "expression": {
                              "id": 13189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 13184,
                                "name": "reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12379,
                                "src": "11162:8:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 13187,
                                    "name": "amount0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13021,
                                    "src": "11182:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 13186,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11174:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  },
                                  "typeName": {
                                    "id": 13185,
                                    "name": "uint128",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11174:7:46",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 13188,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11174:16:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "11162:28:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "id": 13190,
                            "nodeType": "ExpressionStatement",
                            "src": "11162:28:46"
                          },
                          {
                            "expression": {
                              "id": 13196,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 13191,
                                "name": "reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12382,
                                "src": "11204:8:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 13194,
                                    "name": "amount1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13024,
                                    "src": "11224:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 13193,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11216:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  },
                                  "typeName": {
                                    "id": 13192,
                                    "name": "uint128",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11216:7:46",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 13195,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11216:16:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "11204:28:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "id": 13197,
                            "nodeType": "ExpressionStatement",
                            "src": "11204:28:46"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13200,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13005,
                              "src": "11273:9:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13201,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13021,
                              "src": "11284:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 13202,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13024,
                              "src": "11293:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 13203,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13007,
                              "src": "11302:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 13199,
                            "name": "_transferBothTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14349,
                            "src": "11253:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bool)"
                            }
                          },
                          "id": 13204,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11253:61:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13205,
                        "nodeType": "ExpressionStatement",
                        "src": "11253:61:46"
                      },
                      {
                        "expression": {
                          "id": 13215,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13206,
                            "name": "nearestTick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12387,
                            "src": "11325:11:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 13209,
                                "name": "ticks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12395,
                                "src": "11352:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                  "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                }
                              },
                              {
                                "id": 13210,
                                "name": "lower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12999,
                                "src": "11359:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "id": 13211,
                                "name": "upper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13001,
                                "src": "11366:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "id": 13212,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13003,
                                "src": "11373:6:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              {
                                "id": 13213,
                                "name": "nearestTick",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12387,
                                "src": "11381:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                  "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              ],
                              "expression": {
                                "id": 13207,
                                "name": "Ticks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4906,
                                "src": "11339:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Ticks_$4906_$",
                                  "typeString": "type(library Ticks)"
                                }
                              },
                              "id": 13208,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "remove",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4905,
                              "src": "11339:12:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_delegatecall_nonpayable$_t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$_$_t_int24_$_t_int24_$_t_uint128_$_t_int24_$returns$_t_int24_$",
                                "typeString": "function (mapping(int24 => struct Ticks.Tick storage ref),int24,int24,uint128,int24) returns (int24)"
                              }
                            },
                            "id": 13214,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11339:54:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "src": "11325:68:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "id": 13216,
                        "nodeType": "ExpressionStatement",
                        "src": "11325:68:46"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 13218,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "11413:3:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 13219,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "11413:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13220,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13021,
                              "src": "11425:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 13221,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13024,
                              "src": "11434:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 13217,
                            "name": "Burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12318,
                            "src": "11408:4:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 13222,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11408:34:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13223,
                        "nodeType": "EmitStatement",
                        "src": "11403:39:46"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 12997,
                    "nodeType": "StructuredDocumentation",
                    "src": "9097:155:46",
                    "text": "@notice Burn function that cannpt conform to the IPool interface due to having three return values.\n @dev Burns LP tokens sent to this contract."
                  },
                  "functionSelector": "6289db82",
                  "id": 13225,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decreaseLiquidity",
                  "nameLocation": "9266:17:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13008,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 12999,
                        "mutability": "mutable",
                        "name": "lower",
                        "nameLocation": "9299:5:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13225,
                        "src": "9293:11:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 12998,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "9293:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13001,
                        "mutability": "mutable",
                        "name": "upper",
                        "nameLocation": "9320:5:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13225,
                        "src": "9314:11:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 13000,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "9314:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13003,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "9343:6:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13225,
                        "src": "9335:14:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 13002,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "9335:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13005,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "9367:9:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13225,
                        "src": "9359:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13004,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9359:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13007,
                        "mutability": "mutable",
                        "name": "unwrapBento",
                        "nameLocation": "9391:11:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13225,
                        "src": "9386:16:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13006,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9386:4:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9283:125:46"
                  },
                  "returnParameters": {
                    "id": 13019,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13012,
                        "mutability": "mutable",
                        "name": "withdrawnAmounts",
                        "nameLocation": "9481:16:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13225,
                        "src": "9454:43:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IPool.TokenAmount[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13010,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 13009,
                              "name": "IPool.TokenAmount",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2449,
                              "src": "9454:17:46"
                            },
                            "referencedDeclaration": 2449,
                            "src": "9454:17:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                              "typeString": "struct IPool.TokenAmount"
                            }
                          },
                          "id": 13011,
                          "nodeType": "ArrayTypeName",
                          "src": "9454:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                            "typeString": "struct IPool.TokenAmount[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13016,
                        "mutability": "mutable",
                        "name": "feesWithdrawn",
                        "nameLocation": "9538:13:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13225,
                        "src": "9511:40:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IPool.TokenAmount[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13014,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 13013,
                              "name": "IPool.TokenAmount",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2449,
                              "src": "9511:17:46"
                            },
                            "referencedDeclaration": 2449,
                            "src": "9511:17:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                              "typeString": "struct IPool.TokenAmount"
                            }
                          },
                          "id": 13015,
                          "nodeType": "ArrayTypeName",
                          "src": "9511:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                            "typeString": "struct IPool.TokenAmount[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13018,
                        "mutability": "mutable",
                        "name": "oldLiquidity",
                        "nameLocation": "9573:12:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13225,
                        "src": "9565:20:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13017,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9565:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9440:155:46"
                  },
                  "scope": 14653,
                  "src": "9257:2192:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2394
                  ],
                  "body": {
                    "id": 13238,
                    "nodeType": "Block",
                    "src": "11543:25:46",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 13235,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "11553:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 13236,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11553:8:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13237,
                        "nodeType": "ExpressionStatement",
                        "src": "11553:8:46"
                      }
                    ]
                  },
                  "functionSelector": "2a07b6c7",
                  "id": 13239,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burn",
                  "nameLocation": "11464:4:46",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13229,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "11497:8:46"
                  },
                  "parameters": {
                    "id": 13228,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13227,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13239,
                        "src": "11469:14:46",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 13226,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "11469:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11468:16:46"
                  },
                  "returnParameters": {
                    "id": 13234,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13233,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13239,
                        "src": "11515:26:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IPool.TokenAmount[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 13231,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 13230,
                              "name": "IPool.TokenAmount",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2449,
                              "src": "11515:17:46"
                            },
                            "referencedDeclaration": 2449,
                            "src": "11515:17:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                              "typeString": "struct IPool.TokenAmount"
                            }
                          },
                          "id": 13232,
                          "nodeType": "ArrayTypeName",
                          "src": "11515:19:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                            "typeString": "struct IPool.TokenAmount[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11514:28:46"
                  },
                  "scope": 14653,
                  "src": "11455:113:46",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2402
                  ],
                  "body": {
                    "id": 13250,
                    "nodeType": "Block",
                    "src": "11649:25:46",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 13247,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "11659:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 13248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11659:8:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13249,
                        "nodeType": "ExpressionStatement",
                        "src": "11659:8:46"
                      }
                    ]
                  },
                  "functionSelector": "af8c09bf",
                  "id": 13251,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnSingle",
                  "nameLocation": "11583:10:46",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13243,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "11622:8:46"
                  },
                  "parameters": {
                    "id": 13242,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13241,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13251,
                        "src": "11594:14:46",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 13240,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "11594:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11593:16:46"
                  },
                  "returnParameters": {
                    "id": 13246,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13245,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13251,
                        "src": "11640:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13244,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11640:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11639:9:46"
                  },
                  "scope": 14653,
                  "src": "11574:100:46",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 13308,
                    "nodeType": "Block",
                    "src": "11861:318:46",
                    "statements": [
                      {
                        "expression": {
                          "id": 13278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 13268,
                                "name": "amount0fees",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13264,
                                "src": "11872:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 13269,
                                "name": "amount1fees",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13266,
                                "src": "11885:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              null
                            ],
                            "id": 13270,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "11871:28:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$__$",
                              "typeString": "tuple(uint256,uint256,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 13272,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "11918:3:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 13273,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "11918:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 13274,
                                "name": "lower",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13253,
                                "src": "11930:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "id": 13275,
                                "name": "upper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13255,
                                "src": "11937:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "hexValue": "30",
                                "id": 13276,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11944:1:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 13271,
                              "name": "_updatePosition",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14223,
                              "src": "11902:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_int24_$_t_int24_$_t_int128_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (address,int24,int24,int128) returns (uint256,uint256,uint256)"
                              }
                            },
                            "id": 13277,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11902:44:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256)"
                            }
                          },
                          "src": "11871:75:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13279,
                        "nodeType": "ExpressionStatement",
                        "src": "11871:75:46"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13281,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13257,
                              "src": "11977:9:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13282,
                              "name": "amount0fees",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13264,
                              "src": "11988:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 13283,
                              "name": "amount1fees",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13266,
                              "src": "12001:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 13284,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13259,
                              "src": "12014:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 13280,
                            "name": "_transferBothTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14349,
                            "src": "11957:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bool)"
                            }
                          },
                          "id": 13285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11957:69:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13286,
                        "nodeType": "ExpressionStatement",
                        "src": "11957:69:46"
                      },
                      {
                        "expression": {
                          "id": 13292,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13287,
                            "name": "reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12379,
                            "src": "12037:8:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 13290,
                                "name": "amount0fees",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13264,
                                "src": "12057:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 13289,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12049:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 13288,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "12049:7:46",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 13291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12049:20:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "12037:32:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 13293,
                        "nodeType": "ExpressionStatement",
                        "src": "12037:32:46"
                      },
                      {
                        "expression": {
                          "id": 13299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13294,
                            "name": "reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12382,
                            "src": "12079:8:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 13297,
                                "name": "amount1fees",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13266,
                                "src": "12099:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 13296,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12091:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 13295,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "12091:7:46",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 13298,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12091:20:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "12079:32:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 13300,
                        "nodeType": "ExpressionStatement",
                        "src": "12079:32:46"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 13302,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "12135:3:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 13303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "12135:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 13304,
                              "name": "amount0fees",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13264,
                              "src": "12147:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 13305,
                              "name": "amount1fees",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13266,
                              "src": "12160:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 13301,
                            "name": "Collect",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12326,
                            "src": "12127:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 13306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12127:45:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13307,
                        "nodeType": "EmitStatement",
                        "src": "12122:50:46"
                      }
                    ]
                  },
                  "functionSelector": "fb39d628",
                  "id": 13309,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 13262,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 13261,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12497,
                        "src": "11805:4:46"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "11805:4:46"
                    }
                  ],
                  "name": "collect",
                  "nameLocation": "11689:7:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13260,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13253,
                        "mutability": "mutable",
                        "name": "lower",
                        "nameLocation": "11712:5:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13309,
                        "src": "11706:11:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 13252,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "11706:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13255,
                        "mutability": "mutable",
                        "name": "upper",
                        "nameLocation": "11733:5:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13309,
                        "src": "11727:11:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 13254,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "11727:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13257,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "11756:9:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13309,
                        "src": "11748:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 13256,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11748:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13259,
                        "mutability": "mutable",
                        "name": "unwrapBento",
                        "nameLocation": "11780:11:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13309,
                        "src": "11775:16:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13258,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11775:4:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11696:101:46"
                  },
                  "returnParameters": {
                    "id": 13267,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13264,
                        "mutability": "mutable",
                        "name": "amount0fees",
                        "nameLocation": "11827:11:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13309,
                        "src": "11819:19:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13263,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11819:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13266,
                        "mutability": "mutable",
                        "name": "amount1fees",
                        "nameLocation": "11848:11:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13309,
                        "src": "11840:19:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13265,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11840:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11818:42:46"
                  },
                  "scope": 14653,
                  "src": "11680:499:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2368
                  ],
                  "body": {
                    "id": 13843,
                    "nodeType": "Block",
                    "src": "12486:7149:46",
                    "statements": [
                      {
                        "assignments": [
                          13321,
                          13323,
                          13325,
                          13327
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13321,
                            "mutability": "mutable",
                            "name": "zeroForOne",
                            "nameLocation": "12502:10:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 13843,
                            "src": "12497:15:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 13320,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "12497:4:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 13323,
                            "mutability": "mutable",
                            "name": "inAmount",
                            "nameLocation": "12522:8:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 13843,
                            "src": "12514:16:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 13322,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12514:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 13325,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "12540:9:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 13843,
                            "src": "12532:17:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 13324,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12532:7:46",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 13327,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "12556:11:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 13843,
                            "src": "12551:16:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 13326,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "12551:4:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13341,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 13330,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13312,
                              "src": "12582:4:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 13332,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12589:4:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 13331,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12589:4:46",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 13334,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12595:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 13333,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12595:7:46",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 13336,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12604:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 13335,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12604:7:46",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 13338,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12613:4:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 13337,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12613:4:46",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 13339,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "12588:30:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(bool),type(uint256),type(address),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(bool),type(uint256),type(address),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 13328,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "12571:3:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 13329,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "12571:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 13340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12571:48:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$_t_address_payable_$_t_bool_$",
                            "typeString": "tuple(bool,uint256,address payable,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12496:123:46"
                      },
                      {
                        "assignments": [
                          13344
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13344,
                            "mutability": "mutable",
                            "name": "cache",
                            "nameLocation": "12647:5:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 13843,
                            "src": "12630:22:46",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                              "typeString": "struct ConcentratedLiquidityPool.SwapCache"
                            },
                            "typeName": {
                              "id": 13343,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 13342,
                                "name": "SwapCache",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 12430,
                                "src": "12630:9:46"
                              },
                              "referencedDeclaration": 12430,
                              "src": "12630:9:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapCache_$12430_storage_ptr",
                                "typeString": "struct ConcentratedLiquidityPool.SwapCache"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13374,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 13346,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12690:1:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "hexValue": "30",
                              "id": 13347,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12721:1:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "hexValue": "30",
                              "id": 13348,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12749:1:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "condition": {
                                "id": 13349,
                                "name": "zeroForOne",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13321,
                                "src": "12782:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "id": 13351,
                                "name": "feeGrowthGlobal0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12368,
                                "src": "12814:16:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13352,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "12782:48:46",
                              "trueExpression": {
                                "id": 13350,
                                "name": "feeGrowthGlobal1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12371,
                                "src": "12795:16:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "condition": {
                                "id": 13353,
                                "name": "zeroForOne",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13321,
                                "src": "12862:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "id": 13355,
                                "name": "feeGrowthGlobal1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12371,
                                "src": "12894:16:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 13356,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "12862:48:46",
                              "trueExpression": {
                                "id": 13354,
                                "name": "feeGrowthGlobal0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12368,
                                "src": "12875:16:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 13359,
                                  "name": "price",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12384,
                                  "src": "12946:5:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                ],
                                "id": 13358,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12938:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 13357,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12938:7:46",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13360,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12938:14:46",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 13363,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12361,
                                  "src": "12992:9:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                ],
                                "id": 13362,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "12984:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 13361,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12984:7:46",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13364,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12984:18:46",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 13365,
                              "name": "inAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13323,
                              "src": "13023:8:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "condition": {
                                "id": 13366,
                                "name": "zeroForOne",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13321,
                                "src": "13062:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 13368,
                                    "name": "ticks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12395,
                                    "src": "13089:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                      "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                    }
                                  },
                                  "id": 13370,
                                  "indexExpression": {
                                    "id": 13369,
                                    "name": "nearestTick",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12387,
                                    "src": "13095:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "13089:18:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                    "typeString": "struct Ticks.Tick storage ref"
                                  }
                                },
                                "id": 13371,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "nextTick",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4226,
                                "src": "13089:27:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "id": 13372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "13062:54:46",
                              "trueExpression": {
                                "id": 13367,
                                "name": "nearestTick",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12387,
                                "src": "13075:11:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            ],
                            "id": 13345,
                            "name": "SwapCache",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12430,
                            "src": "12655:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_SwapCache_$12430_storage_ptr_$",
                              "typeString": "type(struct ConcentratedLiquidityPool.SwapCache storage pointer)"
                            }
                          },
                          "id": 13373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "structConstructorCall",
                          "lValueRequested": false,
                          "names": [
                            "feeAmount",
                            "totalFeeAmount",
                            "protocolFee",
                            "feeGrowthGlobalA",
                            "feeGrowthGlobalB",
                            "currentPrice",
                            "currentLiquidity",
                            "input",
                            "nextTickToCross"
                          ],
                          "nodeType": "FunctionCall",
                          "src": "12655:472:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                            "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12630:497:46"
                      },
                      {
                        "id": 13417,
                        "nodeType": "UncheckedBlock",
                        "src": "13138:387:46",
                        "statements": [
                          {
                            "assignments": [
                              13376
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 13376,
                                "mutability": "mutable",
                                "name": "timestamp",
                                "nameLocation": "13170:9:46",
                                "nodeType": "VariableDeclaration",
                                "scope": 13417,
                                "src": "13162:17:46",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 13375,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13162:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 13379,
                            "initialValue": {
                              "expression": {
                                "id": 13377,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "13182:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 13378,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "src": "13182:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13162:35:46"
                          },
                          {
                            "assignments": [
                              13381
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 13381,
                                "mutability": "mutable",
                                "name": "diff",
                                "nameLocation": "13219:4:46",
                                "nodeType": "VariableDeclaration",
                                "scope": 13417,
                                "src": "13211:12:46",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 13380,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13211:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 13388,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 13387,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 13382,
                                "name": "timestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13376,
                                "src": "13226:9:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 13385,
                                    "name": "lastObservation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12366,
                                    "src": "13246:15:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  ],
                                  "id": 13384,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13238:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 13383,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13238:7:46",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 13386,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13238:24:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13226:36:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13211:51:46"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 13395,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 13391,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 13389,
                                  "name": "diff",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13381,
                                  "src": "13345:4:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 13390,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13352:1:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13345:8:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                "id": 13394,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 13392,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12361,
                                  "src": "13357:9:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 13393,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13369:1:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13357:13:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "13345:25:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 13416,
                            "nodeType": "IfStatement",
                            "src": "13341:174:46",
                            "trueBody": {
                              "id": 13415,
                              "nodeType": "Block",
                              "src": "13372:143:46",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 13401,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 13396,
                                      "name": "lastObservation",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12366,
                                      "src": "13390:15:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 13399,
                                          "name": "timestamp",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13376,
                                          "src": "13415:9:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 13398,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "13408:6:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint32_$",
                                          "typeString": "type(uint32)"
                                        },
                                        "typeName": {
                                          "id": 13397,
                                          "name": "uint32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "13408:6:46",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 13400,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13408:17:46",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "13390:35:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "id": 13402,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13390:35:46"
                                },
                                {
                                  "expression": {
                                    "id": 13413,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 13403,
                                      "name": "secondsGrowthGlobal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12363,
                                      "src": "13443:19:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 13411,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 13408,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 13406,
                                                  "name": "diff",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13381,
                                                  "src": "13475:4:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "<<",
                                                "rightExpression": {
                                                  "hexValue": "313238",
                                                  "id": 13407,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "13483:3:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_128_by_1",
                                                    "typeString": "int_const 128"
                                                  },
                                                  "value": "128"
                                                },
                                                "src": "13475:11:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 13409,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "13474:13:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "/",
                                          "rightExpression": {
                                            "id": 13410,
                                            "name": "liquidity",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12361,
                                            "src": "13490:9:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint128",
                                              "typeString": "uint128"
                                            }
                                          },
                                          "src": "13474:25:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 13405,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "13466:7:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint160_$",
                                          "typeString": "type(uint160)"
                                        },
                                        "typeName": {
                                          "id": 13404,
                                          "name": "uint160",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "13466:7:46",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 13412,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13466:34:46",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      }
                                    },
                                    "src": "13443:57:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  },
                                  "id": 13414,
                                  "nodeType": "ExpressionStatement",
                                  "src": "13443:57:46"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "body": {
                          "id": 13750,
                          "nodeType": "Block",
                          "src": "13560:5274:46",
                          "statements": [
                            {
                              "assignments": [
                                13423
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 13423,
                                  "mutability": "mutable",
                                  "name": "nextTickPrice",
                                  "nameLocation": "13582:13:46",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 13750,
                                  "src": "13574:21:46",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 13422,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13574:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 13432,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 13428,
                                          "name": "cache",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13344,
                                          "src": "13634:5:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                            "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                          }
                                        },
                                        "id": 13429,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nextTickToCross",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12429,
                                        "src": "13634:21:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        }
                                      ],
                                      "expression": {
                                        "id": 13426,
                                        "name": "TickMath",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4217,
                                        "src": "13606:8:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                          "typeString": "type(library TickMath)"
                                        }
                                      },
                                      "id": 13427,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getSqrtRatioAtTick",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4077,
                                      "src": "13606:27:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$",
                                        "typeString": "function (int24) pure returns (uint160)"
                                      }
                                    },
                                    "id": 13430,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13606:50:46",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  ],
                                  "id": 13425,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13598:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 13424,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13598:7:46",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 13431,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13598:59:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13574:83:46"
                            },
                            {
                              "assignments": [
                                13434
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 13434,
                                  "mutability": "mutable",
                                  "name": "output",
                                  "nameLocation": "13679:6:46",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 13750,
                                  "src": "13671:14:46",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 13433,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13671:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 13436,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 13435,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13688:1:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13671:18:46"
                            },
                            {
                              "assignments": [
                                13438
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 13438,
                                  "mutability": "mutable",
                                  "name": "cross",
                                  "nameLocation": "13708:5:46",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 13750,
                                  "src": "13703:10:46",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 13437,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13703:4:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 13440,
                              "initialValue": {
                                "hexValue": "66616c7365",
                                "id": 13439,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13716:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13703:18:46"
                            },
                            {
                              "condition": {
                                "id": 13441,
                                "name": "zeroForOne",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13321,
                                "src": "13740:10:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 13654,
                                "nodeType": "Block",
                                "src": "15925:1221:46",
                                "statements": [
                                  {
                                    "assignments": [
                                      13570
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 13570,
                                        "mutability": "mutable",
                                        "name": "maxDy",
                                        "nameLocation": "16080:5:46",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 13654,
                                        "src": "16072:13:46",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 13569,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "16072:7:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 13580,
                                    "initialValue": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 13573,
                                            "name": "cache",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13344,
                                            "src": "16103:5:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                              "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                            }
                                          },
                                          "id": 13574,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "currentLiquidity",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12425,
                                          "src": "16103:22:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 13575,
                                            "name": "cache",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13344,
                                            "src": "16127:5:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                              "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                            }
                                          },
                                          "id": 13576,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "currentPrice",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12423,
                                          "src": "16127:18:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 13577,
                                          "name": "nextTickPrice",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13423,
                                          "src": "16147:13:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "66616c7365",
                                          "id": 13578,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "16162:5:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "false"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "expression": {
                                          "id": 13571,
                                          "name": "DyDxMath",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3409,
                                          "src": "16088:8:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_DyDxMath_$3409_$",
                                            "typeString": "type(library DyDxMath)"
                                          }
                                        },
                                        "id": 13572,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "getDy",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3185,
                                        "src": "16088:14:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256,bool) pure returns (uint256)"
                                        }
                                      },
                                      "id": 13579,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16088:80:46",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "16072:96:46"
                                  },
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 13584,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 13581,
                                          "name": "cache",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13344,
                                          "src": "16191:5:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                            "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                          }
                                        },
                                        "id": 13582,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "input",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12427,
                                        "src": "16191:11:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "id": 13583,
                                        "name": "maxDy",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13570,
                                        "src": "16206:5:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "16191:20:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 13652,
                                      "nodeType": "Block",
                                      "src": "16824:308:46",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 13634,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 13624,
                                              "name": "output",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13434,
                                              "src": "16892:6:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "arguments": [
                                                {
                                                  "expression": {
                                                    "id": 13627,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13344,
                                                    "src": "16916:5:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                      "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 13628,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "currentLiquidity",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12425,
                                                  "src": "16916:22:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "expression": {
                                                    "id": 13629,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13344,
                                                    "src": "16940:5:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                      "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 13630,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "currentPrice",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12423,
                                                  "src": "16940:18:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "id": 13631,
                                                  "name": "nextTickPrice",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13423,
                                                  "src": "16960:13:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "hexValue": "66616c7365",
                                                  "id": 13632,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "bool",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "16975:5:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  },
                                                  "value": "false"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                ],
                                                "expression": {
                                                  "id": 13625,
                                                  "name": "DyDxMath",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3409,
                                                  "src": "16901:8:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_DyDxMath_$3409_$",
                                                    "typeString": "type(library DyDxMath)"
                                                  }
                                                },
                                                "id": 13626,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "getDx",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 3236,
                                                "src": "16901:14:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256,uint256,bool) pure returns (uint256)"
                                                }
                                              },
                                              "id": 13633,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "16901:80:46",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "16892:89:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 13635,
                                          "nodeType": "ExpressionStatement",
                                          "src": "16892:89:46"
                                        },
                                        {
                                          "expression": {
                                            "id": 13640,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "expression": {
                                                "id": 13636,
                                                "name": "cache",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 13344,
                                                "src": "17003:5:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                  "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                }
                                              },
                                              "id": 13638,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "currentPrice",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12423,
                                              "src": "17003:18:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 13639,
                                              "name": "nextTickPrice",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13423,
                                              "src": "17024:13:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "17003:34:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 13641,
                                          "nodeType": "ExpressionStatement",
                                          "src": "17003:34:46"
                                        },
                                        {
                                          "expression": {
                                            "id": 13644,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 13642,
                                              "name": "cross",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13438,
                                              "src": "17059:5:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "hexValue": "74727565",
                                              "id": 13643,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "bool",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "17067:4:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              "value": "true"
                                            },
                                            "src": "17059:12:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "id": 13645,
                                          "nodeType": "ExpressionStatement",
                                          "src": "17059:12:46"
                                        },
                                        {
                                          "expression": {
                                            "id": 13650,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "expression": {
                                                "id": 13646,
                                                "name": "cache",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 13344,
                                                "src": "17093:5:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                  "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                }
                                              },
                                              "id": 13648,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "input",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12427,
                                              "src": "17093:11:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "-=",
                                            "rightHandSide": {
                                              "id": 13649,
                                              "name": "maxDy",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13570,
                                              "src": "17108:5:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "17093:20:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 13651,
                                          "nodeType": "ExpressionStatement",
                                          "src": "17093:20:46"
                                        }
                                      ]
                                    },
                                    "id": 13653,
                                    "nodeType": "IfStatement",
                                    "src": "16187:945:46",
                                    "trueBody": {
                                      "id": 13623,
                                      "nodeType": "Block",
                                      "src": "16213:605:46",
                                      "statements": [
                                        {
                                          "assignments": [
                                            13586
                                          ],
                                          "declarations": [
                                            {
                                              "constant": false,
                                              "id": 13586,
                                              "mutability": "mutable",
                                              "name": "newPrice",
                                              "nameLocation": "16372:8:46",
                                              "nodeType": "VariableDeclaration",
                                              "scope": 13623,
                                              "src": "16364:16:46",
                                              "stateVariable": false,
                                              "storageLocation": "default",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "typeName": {
                                                "id": 13585,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "16364:7:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "visibility": "internal"
                                            }
                                          ],
                                          "id": 13598,
                                          "initialValue": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 13597,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "expression": {
                                                "id": 13587,
                                                "name": "cache",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 13344,
                                                "src": "16383:5:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                  "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                }
                                              },
                                              "id": 13588,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "currentPrice",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12423,
                                              "src": "16383:18:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "arguments": [
                                                {
                                                  "expression": {
                                                    "id": 13591,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13344,
                                                    "src": "16444:5:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                      "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 13592,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "input",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12427,
                                                  "src": "16444:11:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "hexValue": "307831303030303030303030303030303030303030303030303030",
                                                  "id": 13593,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "16457:27:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_79228162514264337593543950336_by_1",
                                                    "typeString": "int_const 79228162514264337593543950336"
                                                  },
                                                  "value": "0x1000000000000000000000000"
                                                },
                                                {
                                                  "expression": {
                                                    "id": 13594,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13344,
                                                    "src": "16486:5:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                      "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 13595,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "currentLiquidity",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12425,
                                                  "src": "16486:22:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_rational_79228162514264337593543950336_by_1",
                                                    "typeString": "int_const 79228162514264337593543950336"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "id": 13589,
                                                  "name": "FullMath",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3590,
                                                  "src": "16428:8:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_FullMath_$3590_$",
                                                    "typeString": "type(library FullMath)"
                                                  }
                                                },
                                                "id": 13590,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "mulDiv",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 3545,
                                                "src": "16428:15:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 13596,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "16428:81:46",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "16383:126:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "VariableDeclarationStatement",
                                          "src": "16364:145:46"
                                        },
                                        {
                                          "expression": {
                                            "id": 13609,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 13599,
                                              "name": "output",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13434,
                                              "src": "16627:6:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "arguments": [
                                                {
                                                  "expression": {
                                                    "id": 13602,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13344,
                                                    "src": "16651:5:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                      "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 13603,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "currentLiquidity",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12425,
                                                  "src": "16651:22:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "expression": {
                                                    "id": 13604,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13344,
                                                    "src": "16675:5:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                      "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 13605,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "currentPrice",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12423,
                                                  "src": "16675:18:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "id": 13606,
                                                  "name": "newPrice",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13586,
                                                  "src": "16695:8:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "hexValue": "66616c7365",
                                                  "id": 13607,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "bool",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "16705:5:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  },
                                                  "value": "false"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                ],
                                                "expression": {
                                                  "id": 13600,
                                                  "name": "DyDxMath",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3409,
                                                  "src": "16636:8:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_DyDxMath_$3409_$",
                                                    "typeString": "type(library DyDxMath)"
                                                  }
                                                },
                                                "id": 13601,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "getDx",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 3236,
                                                "src": "16636:14:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256,uint256,bool) pure returns (uint256)"
                                                }
                                              },
                                              "id": 13608,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "16636:75:46",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "16627:84:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 13610,
                                          "nodeType": "ExpressionStatement",
                                          "src": "16627:84:46"
                                        },
                                        {
                                          "expression": {
                                            "id": 13615,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "expression": {
                                                "id": 13611,
                                                "name": "cache",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 13344,
                                                "src": "16733:5:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                  "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                }
                                              },
                                              "id": 13613,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "currentPrice",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12423,
                                              "src": "16733:18:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 13614,
                                              "name": "newPrice",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13586,
                                              "src": "16754:8:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "16733:29:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 13616,
                                          "nodeType": "ExpressionStatement",
                                          "src": "16733:29:46"
                                        },
                                        {
                                          "expression": {
                                            "id": 13621,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "expression": {
                                                "id": 13617,
                                                "name": "cache",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 13344,
                                                "src": "16784:5:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                  "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                }
                                              },
                                              "id": 13619,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "input",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12427,
                                              "src": "16784:11:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "hexValue": "30",
                                              "id": 13620,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "16798:1:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "src": "16784:15:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 13622,
                                          "nodeType": "ExpressionStatement",
                                          "src": "16784:15:46"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              "id": 13655,
                              "nodeType": "IfStatement",
                              "src": "13736:3410:46",
                              "trueBody": {
                                "id": 13568,
                                "nodeType": "Block",
                                "src": "13752:2167:46",
                                "statements": [
                                  {
                                    "assignments": [
                                      13443
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 13443,
                                        "mutability": "mutable",
                                        "name": "maxDx",
                                        "nameLocation": "13967:5:46",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 13568,
                                        "src": "13959:13:46",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 13442,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "13959:7:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 13453,
                                    "initialValue": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 13446,
                                            "name": "cache",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13344,
                                            "src": "13990:5:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                              "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                            }
                                          },
                                          "id": 13447,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "currentLiquidity",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12425,
                                          "src": "13990:22:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 13448,
                                          "name": "nextTickPrice",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13423,
                                          "src": "14014:13:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 13449,
                                            "name": "cache",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13344,
                                            "src": "14029:5:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                              "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                            }
                                          },
                                          "id": 13450,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "currentPrice",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 12423,
                                          "src": "14029:18:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "66616c7365",
                                          "id": 13451,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "14049:5:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "false"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        ],
                                        "expression": {
                                          "id": 13444,
                                          "name": "DyDxMath",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3409,
                                          "src": "13975:8:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_DyDxMath_$3409_$",
                                            "typeString": "type(library DyDxMath)"
                                          }
                                        },
                                        "id": 13445,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "getDx",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3236,
                                        "src": "13975:14:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256,bool) pure returns (uint256)"
                                        }
                                      },
                                      "id": 13452,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13975:80:46",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "13959:96:46"
                                  },
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 13457,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 13454,
                                          "name": "cache",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13344,
                                          "src": "14078:5:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                            "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                          }
                                        },
                                        "id": 13455,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "input",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12427,
                                        "src": "14078:11:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "id": 13456,
                                        "name": "maxDx",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13443,
                                        "src": "14093:5:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "14078:20:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 13566,
                                      "nodeType": "Block",
                                      "src": "15582:323:46",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 13548,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 13538,
                                              "name": "output",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13434,
                                              "src": "15665:6:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "arguments": [
                                                {
                                                  "expression": {
                                                    "id": 13541,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13344,
                                                    "src": "15689:5:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                      "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 13542,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "currentLiquidity",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12425,
                                                  "src": "15689:22:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "id": 13543,
                                                  "name": "nextTickPrice",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13423,
                                                  "src": "15713:13:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "expression": {
                                                    "id": 13544,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13344,
                                                    "src": "15728:5:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                      "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 13545,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "currentPrice",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12423,
                                                  "src": "15728:18:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "hexValue": "66616c7365",
                                                  "id": 13546,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "bool",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "15748:5:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  },
                                                  "value": "false"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                ],
                                                "expression": {
                                                  "id": 13539,
                                                  "name": "DyDxMath",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3409,
                                                  "src": "15674:8:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_DyDxMath_$3409_$",
                                                    "typeString": "type(library DyDxMath)"
                                                  }
                                                },
                                                "id": 13540,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "getDy",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 3185,
                                                "src": "15674:14:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256,uint256,bool) pure returns (uint256)"
                                                }
                                              },
                                              "id": 13547,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "15674:80:46",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "15665:89:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 13549,
                                          "nodeType": "ExpressionStatement",
                                          "src": "15665:89:46"
                                        },
                                        {
                                          "expression": {
                                            "id": 13554,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "expression": {
                                                "id": 13550,
                                                "name": "cache",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 13344,
                                                "src": "15776:5:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                  "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                }
                                              },
                                              "id": 13552,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "currentPrice",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12423,
                                              "src": "15776:18:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 13553,
                                              "name": "nextTickPrice",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13423,
                                              "src": "15797:13:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "15776:34:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 13555,
                                          "nodeType": "ExpressionStatement",
                                          "src": "15776:34:46"
                                        },
                                        {
                                          "expression": {
                                            "id": 13558,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 13556,
                                              "name": "cross",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13438,
                                              "src": "15832:5:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "hexValue": "74727565",
                                              "id": 13557,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "bool",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "15840:4:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              "value": "true"
                                            },
                                            "src": "15832:12:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "id": 13559,
                                          "nodeType": "ExpressionStatement",
                                          "src": "15832:12:46"
                                        },
                                        {
                                          "expression": {
                                            "id": 13564,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "expression": {
                                                "id": 13560,
                                                "name": "cache",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 13344,
                                                "src": "15866:5:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                  "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                }
                                              },
                                              "id": 13562,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "input",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12427,
                                              "src": "15866:11:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "-=",
                                            "rightHandSide": {
                                              "id": 13563,
                                              "name": "maxDx",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13443,
                                              "src": "15881:5:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "15866:20:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 13565,
                                          "nodeType": "ExpressionStatement",
                                          "src": "15866:20:46"
                                        }
                                      ]
                                    },
                                    "id": 13567,
                                    "nodeType": "IfStatement",
                                    "src": "14074:1831:46",
                                    "trueBody": {
                                      "id": 13537,
                                      "nodeType": "Block",
                                      "src": "14100:1476:46",
                                      "statements": [
                                        {
                                          "assignments": [
                                            13459
                                          ],
                                          "declarations": [
                                            {
                                              "constant": false,
                                              "id": 13459,
                                              "mutability": "mutable",
                                              "name": "liquidityPadded",
                                              "nameLocation": "14191:15:46",
                                              "nodeType": "VariableDeclaration",
                                              "scope": 13537,
                                              "src": "14183:23:46",
                                              "stateVariable": false,
                                              "storageLocation": "default",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "typeName": {
                                                "id": 13458,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "14183:7:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "visibility": "internal"
                                            }
                                          ],
                                          "id": 13464,
                                          "initialValue": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 13463,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "expression": {
                                                "id": 13460,
                                                "name": "cache",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 13344,
                                                "src": "14209:5:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                  "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                }
                                              },
                                              "id": 13461,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "currentLiquidity",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12425,
                                              "src": "14209:22:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<<",
                                            "rightExpression": {
                                              "hexValue": "3936",
                                              "id": 13462,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "14235:2:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_96_by_1",
                                                "typeString": "int_const 96"
                                              },
                                              "value": "96"
                                            },
                                            "src": "14209:28:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "VariableDeclarationStatement",
                                          "src": "14183:54:46"
                                        },
                                        {
                                          "assignments": [
                                            13466
                                          ],
                                          "declarations": [
                                            {
                                              "constant": false,
                                              "id": 13466,
                                              "mutability": "mutable",
                                              "name": "newPrice",
                                              "nameLocation": "14748:8:46",
                                              "nodeType": "VariableDeclaration",
                                              "scope": 13537,
                                              "src": "14740:16:46",
                                              "stateVariable": false,
                                              "storageLocation": "default",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "typeName": {
                                                "id": 13465,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "14740:7:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "visibility": "internal"
                                            }
                                          ],
                                          "id": 13483,
                                          "initialValue": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 13471,
                                                    "name": "liquidityPadded",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13459,
                                                    "src": "14818:15:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  {
                                                    "expression": {
                                                      "id": 13472,
                                                      "name": "cache",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 13344,
                                                      "src": "14835:5:46",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                        "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                      }
                                                    },
                                                    "id": 13473,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "currentPrice",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 12423,
                                                    "src": "14835:18:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 13480,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "id": 13474,
                                                      "name": "liquidityPadded",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 13459,
                                                      "src": "14855:15:46",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 13479,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "expression": {
                                                          "id": 13475,
                                                          "name": "cache",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 13344,
                                                          "src": "14873:5:46",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                            "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                          }
                                                        },
                                                        "id": 13476,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "currentPrice",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 12423,
                                                        "src": "14873:18:46",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "*",
                                                      "rightExpression": {
                                                        "expression": {
                                                          "id": 13477,
                                                          "name": "cache",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 13344,
                                                          "src": "14894:5:46",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                            "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                          }
                                                        },
                                                        "id": 13478,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "input",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 12427,
                                                        "src": "14894:11:46",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "src": "14873:32:46",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "14855:50:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "id": 13469,
                                                    "name": "FullMath",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3590,
                                                    "src": "14792:8:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_contract$_FullMath_$3590_$",
                                                      "typeString": "type(library FullMath)"
                                                    }
                                                  },
                                                  "id": 13470,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "mulDivRoundingUp",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 3589,
                                                  "src": "14792:25:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                                  }
                                                },
                                                "id": 13481,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "14792:114:46",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 13468,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "14759:7:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 13467,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "14759:7:46",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 13482,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "14759:169:46",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "VariableDeclarationStatement",
                                          "src": "14740:188:46"
                                        },
                                        {
                                          "condition": {
                                            "id": 13493,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "!",
                                            "prefix": true,
                                            "src": "14955:61:46",
                                            "subExpression": {
                                              "components": [
                                                {
                                                  "commonType": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  },
                                                  "id": 13491,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 13486,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "id": 13484,
                                                      "name": "nextTickPrice",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 13423,
                                                      "src": "14957:13:46",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<=",
                                                    "rightExpression": {
                                                      "id": 13485,
                                                      "name": "newPrice",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 13466,
                                                      "src": "14974:8:46",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "14957:25:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "&&",
                                                  "rightExpression": {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 13490,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "id": 13487,
                                                      "name": "newPrice",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 13466,
                                                      "src": "14986:8:46",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                      "expression": {
                                                        "id": 13488,
                                                        "name": "cache",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 13344,
                                                        "src": "14997:5:46",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                          "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                        }
                                                      },
                                                      "id": 13489,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "currentPrice",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 12423,
                                                      "src": "14997:18:46",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "14986:29:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    }
                                                  },
                                                  "src": "14957:58:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                }
                                              ],
                                              "id": 13492,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "14956:60:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "id": 13512,
                                          "nodeType": "IfStatement",
                                          "src": "14951:308:46",
                                          "trueBody": {
                                            "id": 13511,
                                            "nodeType": "Block",
                                            "src": "15018:241:46",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "id": 13509,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftHandSide": {
                                                    "id": 13494,
                                                    "name": "newPrice",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13466,
                                                    "src": "15123:8:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "Assignment",
                                                  "operator": "=",
                                                  "rightHandSide": {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "id": 13499,
                                                            "name": "liquidityPadded",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 13459,
                                                            "src": "15167:15:46",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          },
                                                          {
                                                            "commonType": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            },
                                                            "id": 13506,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                              "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              },
                                                              "id": 13503,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "leftExpression": {
                                                                "id": 13500,
                                                                "name": "liquidityPadded",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 13459,
                                                                "src": "15184:15:46",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              },
                                                              "nodeType": "BinaryOperation",
                                                              "operator": "/",
                                                              "rightExpression": {
                                                                "expression": {
                                                                  "id": 13501,
                                                                  "name": "cache",
                                                                  "nodeType": "Identifier",
                                                                  "overloadedDeclarations": [],
                                                                  "referencedDeclaration": 13344,
                                                                  "src": "15202:5:46",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                                    "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                                  }
                                                                },
                                                                "id": 13502,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "currentPrice",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 12423,
                                                                "src": "15202:18:46",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_uint256",
                                                                  "typeString": "uint256"
                                                                }
                                                              },
                                                              "src": "15184:36:46",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "+",
                                                            "rightExpression": {
                                                              "expression": {
                                                                "id": 13504,
                                                                "name": "cache",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 13344,
                                                                "src": "15223:5:46",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                                  "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                                }
                                                              },
                                                              "id": 13505,
                                                              "isConstant": false,
                                                              "isLValue": true,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "memberName": "input",
                                                              "nodeType": "MemberAccess",
                                                              "referencedDeclaration": 12427,
                                                              "src": "15223:11:46",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                              }
                                                            },
                                                            "src": "15184:50:46",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          }
                                                        ],
                                                        "expression": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            },
                                                            {
                                                              "typeIdentifier": "t_uint256",
                                                              "typeString": "uint256"
                                                            }
                                                          ],
                                                          "expression": {
                                                            "id": 13497,
                                                            "name": "UnsafeMath",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4922,
                                                            "src": "15142:10:46",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_type$_t_contract$_UnsafeMath_$4922_$",
                                                              "typeString": "type(library UnsafeMath)"
                                                            }
                                                          },
                                                          "id": 13498,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "memberName": "divRoundingUp",
                                                          "nodeType": "MemberAccess",
                                                          "referencedDeclaration": 4921,
                                                          "src": "15142:24:46",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                          }
                                                        },
                                                        "id": 13507,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "15142:93:46",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      ],
                                                      "id": 13496,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "nodeType": "ElementaryTypeNameExpression",
                                                      "src": "15134:7:46",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_uint160_$",
                                                        "typeString": "type(uint160)"
                                                      },
                                                      "typeName": {
                                                        "id": 13495,
                                                        "name": "uint160",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "15134:7:46",
                                                        "typeDescriptions": {}
                                                      }
                                                    },
                                                    "id": 13508,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "15134:102:46",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint160",
                                                      "typeString": "uint160"
                                                    }
                                                  },
                                                  "src": "15123:113:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 13510,
                                                "nodeType": "ExpressionStatement",
                                                "src": "15123:113:46"
                                              }
                                            ]
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 13523,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 13513,
                                              "name": "output",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13434,
                                              "src": "15385:6:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "arguments": [
                                                {
                                                  "expression": {
                                                    "id": 13516,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13344,
                                                    "src": "15409:5:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                      "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 13517,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "currentLiquidity",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12425,
                                                  "src": "15409:22:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "id": 13518,
                                                  "name": "newPrice",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13466,
                                                  "src": "15433:8:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "expression": {
                                                    "id": 13519,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13344,
                                                    "src": "15443:5:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                      "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 13520,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "currentPrice",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12423,
                                                  "src": "15443:18:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "hexValue": "66616c7365",
                                                  "id": 13521,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "bool",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "15463:5:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  },
                                                  "value": "false"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                ],
                                                "expression": {
                                                  "id": 13514,
                                                  "name": "DyDxMath",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3409,
                                                  "src": "15394:8:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_DyDxMath_$3409_$",
                                                    "typeString": "type(library DyDxMath)"
                                                  }
                                                },
                                                "id": 13515,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "getDy",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 3185,
                                                "src": "15394:14:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256,uint256,bool) pure returns (uint256)"
                                                }
                                              },
                                              "id": 13522,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "15394:75:46",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "15385:84:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 13524,
                                          "nodeType": "ExpressionStatement",
                                          "src": "15385:84:46"
                                        },
                                        {
                                          "expression": {
                                            "id": 13529,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "expression": {
                                                "id": 13525,
                                                "name": "cache",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 13344,
                                                "src": "15491:5:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                  "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                }
                                              },
                                              "id": 13527,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "currentPrice",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12423,
                                              "src": "15491:18:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 13528,
                                              "name": "newPrice",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13466,
                                              "src": "15512:8:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "15491:29:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 13530,
                                          "nodeType": "ExpressionStatement",
                                          "src": "15491:29:46"
                                        },
                                        {
                                          "expression": {
                                            "id": 13535,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "expression": {
                                                "id": 13531,
                                                "name": "cache",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 13344,
                                                "src": "15542:5:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                  "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                }
                                              },
                                              "id": 13533,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "input",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12427,
                                              "src": "15542:11:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "hexValue": "30",
                                              "id": 13534,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "15556:1:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                              },
                                              "value": "0"
                                            },
                                            "src": "15542:15:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 13536,
                                          "nodeType": "ExpressionStatement",
                                          "src": "15542:15:46"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 13680,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "expression": {
                                        "id": 13656,
                                        "name": "cache",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13344,
                                        "src": "17296:5:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                          "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                        }
                                      },
                                      "id": 13658,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "totalFeeAmount",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12415,
                                      "src": "17296:20:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 13659,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13318,
                                      "src": "17318:9:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 13660,
                                        "name": "cache",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13344,
                                        "src": "17329:5:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                          "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                        }
                                      },
                                      "id": 13661,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "protocolFee",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12417,
                                      "src": "17329:17:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 13662,
                                        "name": "cache",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13344,
                                        "src": "17348:5:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                          "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                        }
                                      },
                                      "id": 13663,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "feeGrowthGlobalA",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12419,
                                      "src": "17348:22:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 13664,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "17295:76:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 13667,
                                      "name": "output",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13434,
                                      "src": "17410:6:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 13668,
                                      "name": "swapFee",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12344,
                                      "src": "17434:7:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint24",
                                        "typeString": "uint24"
                                      }
                                    },
                                    {
                                      "id": 13669,
                                      "name": "barFee",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 12373,
                                      "src": "17459:6:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 13670,
                                        "name": "cache",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13344,
                                        "src": "17483:5:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                          "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                        }
                                      },
                                      "id": 13671,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "currentLiquidity",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12425,
                                      "src": "17483:22:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 13672,
                                        "name": "cache",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13344,
                                        "src": "17523:5:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                          "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                        }
                                      },
                                      "id": 13673,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "totalFeeAmount",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12415,
                                      "src": "17523:20:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 13674,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 13318,
                                      "src": "17561:9:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 13675,
                                        "name": "cache",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13344,
                                        "src": "17588:5:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                          "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                        }
                                      },
                                      "id": 13676,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "protocolFee",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12417,
                                      "src": "17588:17:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 13677,
                                        "name": "cache",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13344,
                                        "src": "17623:5:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                          "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                        }
                                      },
                                      "id": 13678,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "feeGrowthGlobalA",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12419,
                                      "src": "17623:22:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint24",
                                        "typeString": "uint24"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 13665,
                                      "name": "SwapLib",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3674,
                                      "src": "17374:7:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_SwapLib_$3674_$",
                                        "typeString": "type(library SwapLib)"
                                      }
                                    },
                                    "id": 13666,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "handleFees",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3673,
                                    "src": "17374:18:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint24_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                      "typeString": "function (uint256,uint24,uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256,uint256,uint256,uint256)"
                                    }
                                  },
                                  "id": 13679,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17374:285:46",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256,uint256,uint256)"
                                  }
                                },
                                "src": "17295:364:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 13681,
                              "nodeType": "ExpressionStatement",
                              "src": "17295:364:46"
                            },
                            {
                              "condition": {
                                "id": 13682,
                                "name": "cross",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13438,
                                "src": "17677:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 13749,
                              "nodeType": "IfStatement",
                              "src": "17673:1151:46",
                              "trueBody": {
                                "id": 13748,
                                "nodeType": "Block",
                                "src": "17684:1140:46",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 13704,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "components": [
                                          {
                                            "expression": {
                                              "id": 13683,
                                              "name": "cache",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13344,
                                              "src": "17703:5:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                              }
                                            },
                                            "id": 13685,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "currentLiquidity",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12425,
                                            "src": "17703:22:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 13686,
                                              "name": "cache",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13344,
                                              "src": "17727:5:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                              }
                                            },
                                            "id": 13687,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "nextTickToCross",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12429,
                                            "src": "17727:21:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          }
                                        ],
                                        "id": 13688,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "TupleExpression",
                                        "src": "17702:47:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint256_$_t_int24_$",
                                          "typeString": "tuple(uint256,int24)"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 13691,
                                            "name": "ticks",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12395,
                                            "src": "17785:5:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                              "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 13692,
                                              "name": "cache",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13344,
                                              "src": "17812:5:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                              }
                                            },
                                            "id": 13693,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "nextTickToCross",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12429,
                                            "src": "17812:21:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            }
                                          },
                                          {
                                            "id": 13694,
                                            "name": "secondsGrowthGlobal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12363,
                                            "src": "17855:19:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint160",
                                              "typeString": "uint160"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 13695,
                                              "name": "cache",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13344,
                                              "src": "17896:5:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                              }
                                            },
                                            "id": 13696,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "currentLiquidity",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12425,
                                            "src": "17896:22:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 13697,
                                              "name": "cache",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13344,
                                              "src": "17940:5:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                              }
                                            },
                                            "id": 13698,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "feeGrowthGlobalA",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12419,
                                            "src": "17940:22:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 13699,
                                              "name": "cache",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 13344,
                                              "src": "17984:5:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                              }
                                            },
                                            "id": 13700,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "feeGrowthGlobalB",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12421,
                                            "src": "17984:22:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 13701,
                                            "name": "zeroForOne",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 13321,
                                            "src": "18028:10:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          {
                                            "id": 13702,
                                            "name": "tickSpacing",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 12342,
                                            "src": "18060:11:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint24",
                                              "typeString": "uint24"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                              "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                            },
                                            {
                                              "typeIdentifier": "t_int24",
                                              "typeString": "int24"
                                            },
                                            {
                                              "typeIdentifier": "t_uint160",
                                              "typeString": "uint160"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            {
                                              "typeIdentifier": "t_uint24",
                                              "typeString": "uint24"
                                            }
                                          ],
                                          "expression": {
                                            "id": 13689,
                                            "name": "Ticks",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4906,
                                            "src": "17752:5:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_Ticks_$4906_$",
                                              "typeString": "type(library Ticks)"
                                            }
                                          },
                                          "id": 13690,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "cross",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4431,
                                          "src": "17752:11:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$_$_t_int24_$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint24_$returns$_t_uint256_$_t_int24_$",
                                            "typeString": "function (mapping(int24 => struct Ticks.Tick storage ref),int24,uint160,uint256,uint256,uint256,bool,uint24) returns (uint256,int24)"
                                          }
                                        },
                                        "id": 13703,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "17752:337:46",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint256_$_t_int24_$",
                                          "typeString": "tuple(uint256,int24)"
                                        }
                                      },
                                      "src": "17702:387:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 13705,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17702:387:46"
                                  },
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 13709,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 13706,
                                          "name": "cache",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 13344,
                                          "src": "18111:5:46",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                            "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                          }
                                        },
                                        "id": 13707,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "currentLiquidity",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 12425,
                                        "src": "18111:22:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "hexValue": "30",
                                        "id": 13708,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "18137:1:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "18111:27:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 13747,
                                    "nodeType": "IfStatement",
                                    "src": "18107:703:46",
                                    "trueBody": {
                                      "id": 13746,
                                      "nodeType": "Block",
                                      "src": "18140:670:46",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 13721,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "expression": {
                                                "id": 13710,
                                                "name": "cache",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 13344,
                                                "src": "18266:5:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                  "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                }
                                              },
                                              "id": 13712,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "memberName": "currentPrice",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 12423,
                                              "src": "18266:18:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "expression": {
                                                        "id": 13717,
                                                        "name": "cache",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 13344,
                                                        "src": "18323:5:46",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                          "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                        }
                                                      },
                                                      "id": 13718,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "nextTickToCross",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 12429,
                                                      "src": "18323:21:46",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_int24",
                                                        "typeString": "int24"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_int24",
                                                        "typeString": "int24"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "id": 13715,
                                                      "name": "TickMath",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 4217,
                                                      "src": "18295:8:46",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                                        "typeString": "type(library TickMath)"
                                                      }
                                                    },
                                                    "id": 13716,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "getSqrtRatioAtTick",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 4077,
                                                    "src": "18295:27:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$",
                                                      "typeString": "function (int24) pure returns (uint160)"
                                                    }
                                                  },
                                                  "id": 13719,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "18295:50:46",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint160",
                                                    "typeString": "uint160"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint160",
                                                    "typeString": "uint160"
                                                  }
                                                ],
                                                "id": 13714,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "18287:7:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_uint256_$",
                                                  "typeString": "type(uint256)"
                                                },
                                                "typeName": {
                                                  "id": 13713,
                                                  "name": "uint256",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "18287:7:46",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 13720,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "18287:59:46",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "18266:80:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 13722,
                                          "nodeType": "ExpressionStatement",
                                          "src": "18266:80:46"
                                        },
                                        {
                                          "expression": {
                                            "id": 13744,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "components": [
                                                {
                                                  "expression": {
                                                    "id": 13723,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13344,
                                                    "src": "18369:5:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                      "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 13725,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": true,
                                                  "memberName": "currentLiquidity",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12425,
                                                  "src": "18369:22:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "expression": {
                                                    "id": 13726,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13344,
                                                    "src": "18393:5:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                      "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 13727,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": true,
                                                  "memberName": "nextTickToCross",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12429,
                                                  "src": "18393:21:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_int24",
                                                    "typeString": "int24"
                                                  }
                                                }
                                              ],
                                              "id": 13728,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "TupleExpression",
                                              "src": "18368:47:46",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$_t_uint256_$_t_int24_$",
                                                "typeString": "tuple(uint256,int24)"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "arguments": [
                                                {
                                                  "id": 13731,
                                                  "name": "ticks",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 12395,
                                                  "src": "18455:5:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                                    "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                                  }
                                                },
                                                {
                                                  "expression": {
                                                    "id": 13732,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13344,
                                                    "src": "18486:5:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                      "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 13733,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "nextTickToCross",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12429,
                                                  "src": "18486:21:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_int24",
                                                    "typeString": "int24"
                                                  }
                                                },
                                                {
                                                  "id": 13734,
                                                  "name": "secondsGrowthGlobal",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 12363,
                                                  "src": "18533:19:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint160",
                                                    "typeString": "uint160"
                                                  }
                                                },
                                                {
                                                  "expression": {
                                                    "id": 13735,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13344,
                                                    "src": "18578:5:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                      "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 13736,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "currentLiquidity",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12425,
                                                  "src": "18578:22:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "expression": {
                                                    "id": 13737,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13344,
                                                    "src": "18626:5:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                      "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 13738,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "feeGrowthGlobalA",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12419,
                                                  "src": "18626:22:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "expression": {
                                                    "id": 13739,
                                                    "name": "cache",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 13344,
                                                    "src": "18674:5:46",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                                      "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                                    }
                                                  },
                                                  "id": 13740,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "feeGrowthGlobalB",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 12421,
                                                  "src": "18674:22:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                {
                                                  "id": 13741,
                                                  "name": "zeroForOne",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 13321,
                                                  "src": "18722:10:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                },
                                                {
                                                  "id": 13742,
                                                  "name": "tickSpacing",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 12342,
                                                  "src": "18758:11:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint24",
                                                    "typeString": "uint24"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                                    "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_int24",
                                                    "typeString": "int24"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint160",
                                                    "typeString": "uint160"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_uint24",
                                                    "typeString": "uint24"
                                                  }
                                                ],
                                                "expression": {
                                                  "id": 13729,
                                                  "name": "Ticks",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4906,
                                                  "src": "18418:5:46",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Ticks_$4906_$",
                                                    "typeString": "type(library Ticks)"
                                                  }
                                                },
                                                "id": 13730,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "cross",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4431,
                                                "src": "18418:11:46",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$_$_t_int24_$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint24_$returns$_t_uint256_$_t_int24_$",
                                                  "typeString": "function (mapping(int24 => struct Ticks.Tick storage ref),int24,uint160,uint256,uint256,uint256,bool,uint24) returns (uint256,int24)"
                                                }
                                              },
                                              "id": 13743,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "18418:373:46",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$_t_uint256_$_t_int24_$",
                                                "typeString": "tuple(uint256,int24)"
                                              }
                                            },
                                            "src": "18368:423:46",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 13745,
                                          "nodeType": "ExpressionStatement",
                                          "src": "18368:423:46"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 13421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 13418,
                              "name": "cache",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13344,
                              "src": "13542:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                              }
                            },
                            "id": 13419,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "input",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12427,
                            "src": "13542:11:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 13420,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13557:1:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13542:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13751,
                        "nodeType": "WhileStatement",
                        "src": "13535:5299:46"
                      },
                      {
                        "expression": {
                          "id": 13758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13752,
                            "name": "price",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12384,
                            "src": "18844:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 13755,
                                  "name": "cache",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13344,
                                  "src": "18860:5:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                    "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                  }
                                },
                                "id": 13756,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "currentPrice",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12423,
                                "src": "18860:18:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 13754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "18852:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint160_$",
                                "typeString": "type(uint160)"
                              },
                              "typeName": {
                                "id": 13753,
                                "name": "uint160",
                                "nodeType": "ElementaryTypeName",
                                "src": "18852:7:46",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 13757,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18852:27:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "src": "18844:35:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "id": 13759,
                        "nodeType": "ExpressionStatement",
                        "src": "18844:35:46"
                      },
                      {
                        "assignments": [
                          13761
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 13761,
                            "mutability": "mutable",
                            "name": "newNearestTick",
                            "nameLocation": "18896:14:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 13843,
                            "src": "18890:20:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            "typeName": {
                              "id": 13760,
                              "name": "int24",
                              "nodeType": "ElementaryTypeName",
                              "src": "18890:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 13771,
                        "initialValue": {
                          "condition": {
                            "id": 13762,
                            "name": "zeroForOne",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13321,
                            "src": "18913:10:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 13765,
                                "name": "ticks",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12395,
                                "src": "18950:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                                  "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                                }
                              },
                              "id": 13768,
                              "indexExpression": {
                                "expression": {
                                  "id": 13766,
                                  "name": "cache",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13344,
                                  "src": "18956:5:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                    "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                  }
                                },
                                "id": 13767,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "nextTickToCross",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12429,
                                "src": "18956:21:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18950:28:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Tick_$4235_storage",
                                "typeString": "struct Ticks.Tick storage ref"
                              }
                            },
                            "id": 13769,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "previousTick",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4224,
                            "src": "18950:41:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "id": 13770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "18913:78:46",
                          "trueExpression": {
                            "expression": {
                              "id": 13763,
                              "name": "cache",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13344,
                              "src": "18926:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                              }
                            },
                            "id": 13764,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "nextTickToCross",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12429,
                            "src": "18926:21:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18890:101:46"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "id": 13774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13772,
                            "name": "nearestTick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12387,
                            "src": "19006:11:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 13773,
                            "name": "newNearestTick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 13761,
                            "src": "19021:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "src": "19006:29:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13788,
                        "nodeType": "IfStatement",
                        "src": "19002:145:46",
                        "trueBody": {
                          "id": 13787,
                          "nodeType": "Block",
                          "src": "19037:110:46",
                          "statements": [
                            {
                              "expression": {
                                "id": 13777,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 13775,
                                  "name": "nearestTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12387,
                                  "src": "19051:11:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 13776,
                                  "name": "newNearestTick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13761,
                                  "src": "19065:14:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "src": "19051:28:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "id": 13778,
                              "nodeType": "ExpressionStatement",
                              "src": "19051:28:46"
                            },
                            {
                              "expression": {
                                "id": 13785,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 13779,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12361,
                                  "src": "19093:9:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 13782,
                                        "name": "cache",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 13344,
                                        "src": "19113:5:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                          "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                        }
                                      },
                                      "id": 13783,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "currentLiquidity",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 12425,
                                      "src": "19113:22:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 13781,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "19105:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint128_$",
                                      "typeString": "type(uint128)"
                                    },
                                    "typeName": {
                                      "id": 13780,
                                      "name": "uint128",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "19105:7:46",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 13784,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19105:31:46",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "19093:43:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 13786,
                              "nodeType": "ExpressionStatement",
                              "src": "19093:43:46"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13790,
                              "name": "zeroForOne",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13321,
                              "src": "19173:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 13793,
                                  "name": "inAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13323,
                                  "src": "19193:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 13792,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "19185:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint128_$",
                                  "typeString": "type(uint128)"
                                },
                                "typeName": {
                                  "id": 13791,
                                  "name": "uint128",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "19185:7:46",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13794,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19185:17:46",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            {
                              "id": 13795,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13318,
                              "src": "19204:9:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 13789,
                            "name": "_updateReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14075,
                            "src": "19157:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_uint128_$_t_uint256_$returns$__$",
                              "typeString": "function (bool,uint128,uint256)"
                            }
                          },
                          "id": 13796,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19157:57:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13797,
                        "nodeType": "ExpressionStatement",
                        "src": "19157:57:46"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 13799,
                              "name": "zeroForOne",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13321,
                              "src": "19237:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "expression": {
                                "id": 13800,
                                "name": "cache",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13344,
                                "src": "19249:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                  "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                }
                              },
                              "id": 13801,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "feeGrowthGlobalA",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 12419,
                              "src": "19249:22:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 13804,
                                    "name": "cache",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13344,
                                    "src": "19281:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SwapCache_$12430_memory_ptr",
                                      "typeString": "struct ConcentratedLiquidityPool.SwapCache memory"
                                    }
                                  },
                                  "id": 13805,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "protocolFee",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12417,
                                  "src": "19281:17:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 13803,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "19273:7:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint128_$",
                                  "typeString": "type(uint128)"
                                },
                                "typeName": {
                                  "id": 13802,
                                  "name": "uint128",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "19273:7:46",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13806,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19273:26:46",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            ],
                            "id": 13798,
                            "name": "_updateFees",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14105,
                            "src": "19225:11:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$_t_uint256_$_t_uint128_$returns$__$",
                              "typeString": "function (bool,uint256,uint128)"
                            }
                          },
                          "id": 13807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19225:75:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13808,
                        "nodeType": "ExpressionStatement",
                        "src": "19225:75:46"
                      },
                      {
                        "condition": {
                          "id": 13809,
                          "name": "zeroForOne",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13321,
                          "src": "19315:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 13841,
                          "nodeType": "Block",
                          "src": "19481:148:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 13827,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12357,
                                    "src": "19505:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13828,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13318,
                                    "src": "19513:9:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 13829,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13325,
                                    "src": "19524:9:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13830,
                                    "name": "unwrapBento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13327,
                                    "src": "19535:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 13826,
                                  "name": "_transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14283,
                                  "src": "19495:9:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,address,bool)"
                                  }
                                },
                                "id": 13831,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19495:52:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 13832,
                              "nodeType": "ExpressionStatement",
                              "src": "19495:52:46"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 13834,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13325,
                                    "src": "19571:9:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13835,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12359,
                                    "src": "19582:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13836,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12357,
                                    "src": "19590:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13837,
                                    "name": "inAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13323,
                                    "src": "19598:8:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 13838,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13318,
                                    "src": "19608:9:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 13833,
                                  "name": "Swap",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2444,
                                  "src": "19566:4:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,uint256)"
                                  }
                                },
                                "id": 13839,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19566:52:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 13840,
                              "nodeType": "EmitStatement",
                              "src": "19561:57:46"
                            }
                          ]
                        },
                        "id": 13842,
                        "nodeType": "IfStatement",
                        "src": "19311:318:46",
                        "trueBody": {
                          "id": 13825,
                          "nodeType": "Block",
                          "src": "19327:148:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 13811,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12359,
                                    "src": "19351:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13812,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13318,
                                    "src": "19359:9:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 13813,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13325,
                                    "src": "19370:9:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13814,
                                    "name": "unwrapBento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13327,
                                    "src": "19381:11:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 13810,
                                  "name": "_transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14283,
                                  "src": "19341:9:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,address,bool)"
                                  }
                                },
                                "id": 13815,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19341:52:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 13816,
                              "nodeType": "ExpressionStatement",
                              "src": "19341:52:46"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 13818,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13325,
                                    "src": "19417:9:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13819,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12357,
                                    "src": "19428:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13820,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12359,
                                    "src": "19436:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13821,
                                    "name": "inAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13323,
                                    "src": "19444:8:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 13822,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13318,
                                    "src": "19454:9:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 13817,
                                  "name": "Swap",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2444,
                                  "src": "19412:4:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,uint256)"
                                  }
                                },
                                "id": 13823,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19412:52:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 13824,
                              "nodeType": "EmitStatement",
                              "src": "19407:57:46"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13310,
                    "nodeType": "StructuredDocumentation",
                    "src": "12185:214:46",
                    "text": "@dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage\n - price is √(y/x)\n - x is token0\n - zero for one -> price will move down."
                  },
                  "functionSelector": "627dd56a",
                  "id": 13844,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 13316,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 13315,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12497,
                        "src": "12453:4:46"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "12453:4:46"
                    }
                  ],
                  "name": "swap",
                  "nameLocation": "12413:4:46",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13314,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "12444:8:46"
                  },
                  "parameters": {
                    "id": 13313,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13312,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "12431:4:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13844,
                        "src": "12418:17:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 13311,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "12418:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12417:19:46"
                  },
                  "returnParameters": {
                    "id": 13319,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13318,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "12475:9:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13844,
                        "src": "12467:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13317,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12467:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12466:19:46"
                  },
                  "scope": 14653,
                  "src": "12404:7231:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2376
                  ],
                  "body": {
                    "id": 13856,
                    "nodeType": "Block",
                    "src": "19748:25:46",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 13853,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "19758:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 13854,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19758:8:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 13855,
                        "nodeType": "ExpressionStatement",
                        "src": "19758:8:46"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13845,
                    "nodeType": "StructuredDocumentation",
                    "src": "19641:28:46",
                    "text": "@dev Reserved for IPool."
                  },
                  "functionSelector": "053da1c8",
                  "id": 13857,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "flashSwap",
                  "nameLocation": "19683:9:46",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 13849,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "19721:8:46"
                  },
                  "parameters": {
                    "id": 13848,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13847,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13857,
                        "src": "19693:14:46",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 13846,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "19693:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19692:16:46"
                  },
                  "returnParameters": {
                    "id": 13852,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13851,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 13857,
                        "src": "19739:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 13850,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19739:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19738:9:46"
                  },
                  "scope": 14653,
                  "src": "19674:99:46",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 13869,
                    "nodeType": "Block",
                    "src": "19862:66:46",
                    "statements": [
                      {
                        "expression": {
                          "id": 13867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 13861,
                            "name": "barFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12373,
                            "src": "19872:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 13863,
                                    "name": "masterDeployer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12355,
                                    "src": "19897:14:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                      "typeString": "contract IMasterDeployer"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                      "typeString": "contract IMasterDeployer"
                                    }
                                  ],
                                  "id": 13862,
                                  "name": "IMasterDeployer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2356,
                                  "src": "19881:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                    "typeString": "type(contract IMasterDeployer)"
                                  }
                                },
                                "id": 13864,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19881:31:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                  "typeString": "contract IMasterDeployer"
                                }
                              },
                              "id": 13865,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "barFee",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2324,
                              "src": "19881:38:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                "typeString": "function () view external returns (uint256)"
                              }
                            },
                            "id": 13866,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19881:40:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19872:49:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 13868,
                        "nodeType": "ExpressionStatement",
                        "src": "19872:49:46"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13858,
                    "nodeType": "StructuredDocumentation",
                    "src": "19779:47:46",
                    "text": "@dev Updates `barFee` for Trident protocol."
                  },
                  "functionSelector": "92bc3219",
                  "id": 13870,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updateBarFee",
                  "nameLocation": "19840:12:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13859,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19852:2:46"
                  },
                  "returnParameters": {
                    "id": 13860,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19862:0:46"
                  },
                  "scope": 14653,
                  "src": "19831:97:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 13932,
                    "nodeType": "Block",
                    "src": "20068:441:46",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "id": 13882,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13880,
                            "name": "token0ProtocolFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12375,
                            "src": "20082:17:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 13881,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20102:1:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "20082:21:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13905,
                        "nodeType": "IfStatement",
                        "src": "20078:208:46",
                        "trueBody": {
                          "id": 13904,
                          "nodeType": "Block",
                          "src": "20105:181:46",
                          "statements": [
                            {
                              "expression": {
                                "id": 13887,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 13883,
                                  "name": "amount0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13876,
                                  "src": "20119:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "id": 13886,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 13884,
                                    "name": "token0ProtocolFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12375,
                                    "src": "20129:17:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 13885,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20149:1:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "20129:21:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "20119:31:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 13888,
                              "nodeType": "ExpressionStatement",
                              "src": "20119:31:46"
                            },
                            {
                              "expression": {
                                "id": 13891,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 13889,
                                  "name": "token0ProtocolFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12375,
                                  "src": "20164:17:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 13890,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20184:1:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "20164:21:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 13892,
                              "nodeType": "ExpressionStatement",
                              "src": "20164:21:46"
                            },
                            {
                              "expression": {
                                "id": 13895,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 13893,
                                  "name": "reserve0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12379,
                                  "src": "20199:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 13894,
                                  "name": "amount0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13876,
                                  "src": "20211:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "20199:19:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 13896,
                              "nodeType": "ExpressionStatement",
                              "src": "20199:19:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 13898,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12357,
                                    "src": "20242:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13899,
                                    "name": "amount0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13876,
                                    "src": "20250:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  {
                                    "id": 13900,
                                    "name": "barFeeTo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12349,
                                    "src": "20259:8:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "66616c7365",
                                    "id": 13901,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20269:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 13897,
                                  "name": "_transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14283,
                                  "src": "20232:9:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,address,bool)"
                                  }
                                },
                                "id": 13902,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20232:43:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 13903,
                              "nodeType": "ExpressionStatement",
                              "src": "20232:43:46"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "id": 13908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 13906,
                            "name": "token1ProtocolFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12377,
                            "src": "20299:17:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 13907,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20319:1:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "20299:21:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13931,
                        "nodeType": "IfStatement",
                        "src": "20295:208:46",
                        "trueBody": {
                          "id": 13930,
                          "nodeType": "Block",
                          "src": "20322:181:46",
                          "statements": [
                            {
                              "expression": {
                                "id": 13913,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 13909,
                                  "name": "amount1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13878,
                                  "src": "20336:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "id": 13912,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 13910,
                                    "name": "token1ProtocolFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12377,
                                    "src": "20346:17:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 13911,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20366:1:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "20346:21:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "20336:31:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 13914,
                              "nodeType": "ExpressionStatement",
                              "src": "20336:31:46"
                            },
                            {
                              "expression": {
                                "id": 13917,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 13915,
                                  "name": "token1ProtocolFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12377,
                                  "src": "20381:17:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 13916,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20401:1:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "20381:21:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 13918,
                              "nodeType": "ExpressionStatement",
                              "src": "20381:21:46"
                            },
                            {
                              "expression": {
                                "id": 13921,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 13919,
                                  "name": "reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12382,
                                  "src": "20416:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 13920,
                                  "name": "amount1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13878,
                                  "src": "20428:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "20416:19:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 13922,
                              "nodeType": "ExpressionStatement",
                              "src": "20416:19:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 13924,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12359,
                                    "src": "20459:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 13925,
                                    "name": "amount1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13878,
                                    "src": "20467:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  {
                                    "id": 13926,
                                    "name": "barFeeTo",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12349,
                                    "src": "20476:8:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "66616c7365",
                                    "id": 13927,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20486:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 13923,
                                  "name": "_transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14283,
                                  "src": "20449:9:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,address,bool)"
                                  }
                                },
                                "id": 13928,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20449:43:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 13929,
                              "nodeType": "ExpressionStatement",
                              "src": "20449:43:46"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 13871,
                    "nodeType": "StructuredDocumentation",
                    "src": "19934:44:46",
                    "text": "@dev Collects fees for Trident protocol."
                  },
                  "functionSelector": "caa4b46a",
                  "id": 13933,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 13874,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 13873,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 12497,
                        "src": "20020:4:46"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "20020:4:46"
                    }
                  ],
                  "name": "collectProtocolFee",
                  "nameLocation": "19992:18:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13872,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20010:2:46"
                  },
                  "returnParameters": {
                    "id": 13879,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13876,
                        "mutability": "mutable",
                        "name": "amount0",
                        "nameLocation": "20042:7:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13933,
                        "src": "20034:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 13875,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "20034:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13878,
                        "mutability": "mutable",
                        "name": "amount1",
                        "nameLocation": "20059:7:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13933,
                        "src": "20051:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 13877,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "20051:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20033:34:46"
                  },
                  "scope": 14653,
                  "src": "19983:526:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 13994,
                    "nodeType": "Block",
                    "src": "20583:282:46",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "id": 13947,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            "id": 13945,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 13940,
                              "name": "lower",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13935,
                              "src": "20597:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "id": 13943,
                                  "name": "tickSpacing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12342,
                                  "src": "20611:11:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint24",
                                    "typeString": "uint24"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint24",
                                    "typeString": "uint24"
                                  }
                                ],
                                "id": 13942,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "20605:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int24_$",
                                  "typeString": "type(int24)"
                                },
                                "typeName": {
                                  "id": 13941,
                                  "name": "int24",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "20605:5:46",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13944,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20605:18:46",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "src": "20597:26:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 13946,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20627:1:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "20597:31:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13951,
                        "nodeType": "IfStatement",
                        "src": "20593:57:46",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 13948,
                              "name": "InvalidTick",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12470,
                              "src": "20637:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 13949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20637:13:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 13950,
                          "nodeType": "RevertStatement",
                          "src": "20630:20:46"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "id": 13962,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            "id": 13960,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  },
                                  "id": 13957,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 13952,
                                    "name": "lower",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13935,
                                    "src": "20665:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "id": 13955,
                                        "name": "tickSpacing",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12342,
                                        "src": "20679:11:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint24",
                                          "typeString": "uint24"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint24",
                                          "typeString": "uint24"
                                        }
                                      ],
                                      "id": 13954,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "20673:5:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int24_$",
                                        "typeString": "type(int24)"
                                      },
                                      "typeName": {
                                        "id": 13953,
                                        "name": "int24",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "20673:5:46",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 13956,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "20673:18:46",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "src": "20665:26:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                }
                              ],
                              "id": 13958,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "20664:28:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "hexValue": "32",
                              "id": 13959,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20695:1:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "20664:32:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 13961,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20700:1:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "20664:37:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13966,
                        "nodeType": "IfStatement",
                        "src": "20660:61:46",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 13963,
                              "name": "LowerEven",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12472,
                              "src": "20710:9:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 13964,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20710:11:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 13965,
                          "nodeType": "RevertStatement",
                          "src": "20703:18:46"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "id": 13974,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            "id": 13972,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 13967,
                              "name": "upper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13937,
                              "src": "20735:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "id": 13970,
                                  "name": "tickSpacing",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12342,
                                  "src": "20749:11:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint24",
                                    "typeString": "uint24"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint24",
                                    "typeString": "uint24"
                                  }
                                ],
                                "id": 13969,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "20743:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_int24_$",
                                  "typeString": "type(int24)"
                                },
                                "typeName": {
                                  "id": 13968,
                                  "name": "int24",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "20743:5:46",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 13971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20743:18:46",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "src": "20735:26:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 13973,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20765:1:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "20735:31:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13978,
                        "nodeType": "IfStatement",
                        "src": "20731:57:46",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 13975,
                              "name": "InvalidTick",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12470,
                              "src": "20775:11:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 13976,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20775:13:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 13977,
                          "nodeType": "RevertStatement",
                          "src": "20768:20:46"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "id": 13989,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            "id": 13987,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  },
                                  "id": 13984,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 13979,
                                    "name": "upper",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 13937,
                                    "src": "20803:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "id": 13982,
                                        "name": "tickSpacing",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 12342,
                                        "src": "20817:11:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint24",
                                          "typeString": "uint24"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint24",
                                          "typeString": "uint24"
                                        }
                                      ],
                                      "id": 13981,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "20811:5:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int24_$",
                                        "typeString": "type(int24)"
                                      },
                                      "typeName": {
                                        "id": 13980,
                                        "name": "int24",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "20811:5:46",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 13983,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "20811:18:46",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  "src": "20803:26:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                }
                              ],
                              "id": 13985,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "20802:28:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "hexValue": "32",
                              "id": 13986,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20833:1:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "20802:32:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 13988,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "20838:1:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "20802:37:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 13993,
                        "nodeType": "IfStatement",
                        "src": "20798:60:46",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 13990,
                              "name": "UpperOdd",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 12474,
                              "src": "20848:8:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 13991,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20848:10:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 13992,
                          "nodeType": "RevertStatement",
                          "src": "20841:17:46"
                        }
                      }
                    ]
                  },
                  "id": 13995,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_ensureTickSpacing",
                  "nameLocation": "20524:18:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 13938,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13935,
                        "mutability": "mutable",
                        "name": "lower",
                        "nameLocation": "20549:5:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13995,
                        "src": "20543:11:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 13934,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "20543:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13937,
                        "mutability": "mutable",
                        "name": "upper",
                        "nameLocation": "20562:5:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 13995,
                        "src": "20556:11:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 13936,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "20556:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20542:26:46"
                  },
                  "returnParameters": {
                    "id": 13939,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20583:0:46"
                  },
                  "scope": 14653,
                  "src": "20515:350:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14074,
                    "nodeType": "Block",
                    "src": "20989:597:46",
                    "statements": [
                      {
                        "condition": {
                          "id": 14004,
                          "name": "zeroForOne",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 13997,
                          "src": "21003:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 14072,
                          "nodeType": "Block",
                          "src": "21315:265:46",
                          "statements": [
                            {
                              "assignments": [
                                14040
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 14040,
                                  "mutability": "mutable",
                                  "name": "balance1",
                                  "nameLocation": "21337:8:46",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 14072,
                                  "src": "21329:16:46",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 14039,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "21329:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 14044,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 14042,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12359,
                                    "src": "21357:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 14041,
                                  "name": "_balance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14242,
                                  "src": "21348:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view returns (uint256)"
                                  }
                                },
                                "id": 14043,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "21348:16:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "21329:35:46"
                            },
                            {
                              "assignments": [
                                14046
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 14046,
                                  "mutability": "mutable",
                                  "name": "newBalance",
                                  "nameLocation": "21386:10:46",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 14072,
                                  "src": "21378:18:46",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "typeName": {
                                    "id": 14045,
                                    "name": "uint128",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "21378:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 14050,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                "id": 14049,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 14047,
                                  "name": "reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12382,
                                  "src": "21399:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 14048,
                                  "name": "inAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13999,
                                  "src": "21410:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "21399:19:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "21378:40:46"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 14053,
                                      "name": "newBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14046,
                                      "src": "21444:10:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    ],
                                    "id": 14052,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "21436:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 14051,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "21436:7:46",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 14054,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21436:19:46",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "id": 14055,
                                  "name": "balance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14040,
                                  "src": "21458:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "21436:30:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 14060,
                              "nodeType": "IfStatement",
                              "src": "21432:58:46",
                              "trueBody": {
                                "errorCall": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 14057,
                                    "name": "Token1Missing",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12468,
                                    "src": "21475:13:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 14058,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21475:15:46",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 14059,
                                "nodeType": "RevertStatement",
                                "src": "21468:22:46"
                              }
                            },
                            {
                              "expression": {
                                "id": 14063,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14061,
                                  "name": "reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12382,
                                  "src": "21504:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 14062,
                                  "name": "newBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14046,
                                  "src": "21515:10:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "21504:21:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 14064,
                              "nodeType": "ExpressionStatement",
                              "src": "21504:21:46"
                            },
                            {
                              "expression": {
                                "id": 14070,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14065,
                                  "name": "reserve0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12379,
                                  "src": "21539:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 14068,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14001,
                                      "src": "21559:9:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 14067,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "21551:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint128_$",
                                      "typeString": "type(uint128)"
                                    },
                                    "typeName": {
                                      "id": 14066,
                                      "name": "uint128",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "21551:7:46",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 14069,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21551:18:46",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "21539:30:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 14071,
                              "nodeType": "ExpressionStatement",
                              "src": "21539:30:46"
                            }
                          ]
                        },
                        "id": 14073,
                        "nodeType": "IfStatement",
                        "src": "20999:581:46",
                        "trueBody": {
                          "id": 14038,
                          "nodeType": "Block",
                          "src": "21015:294:46",
                          "statements": [
                            {
                              "assignments": [
                                14006
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 14006,
                                  "mutability": "mutable",
                                  "name": "balance0",
                                  "nameLocation": "21037:8:46",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 14038,
                                  "src": "21029:16:46",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 14005,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "21029:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 14010,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 14008,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12357,
                                    "src": "21057:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 14007,
                                  "name": "_balance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14242,
                                  "src": "21048:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view returns (uint256)"
                                  }
                                },
                                "id": 14009,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "21048:16:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "21029:35:46"
                            },
                            {
                              "assignments": [
                                14012
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 14012,
                                  "mutability": "mutable",
                                  "name": "newBalance",
                                  "nameLocation": "21086:10:46",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 14038,
                                  "src": "21078:18:46",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  },
                                  "typeName": {
                                    "id": 14011,
                                    "name": "uint128",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "21078:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 14016,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                "id": 14015,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 14013,
                                  "name": "reserve0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12379,
                                  "src": "21099:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 14014,
                                  "name": "inAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13999,
                                  "src": "21110:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "21099:19:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "21078:40:46"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14022,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 14019,
                                      "name": "newBalance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14012,
                                      "src": "21144:10:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    ],
                                    "id": 14018,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "21136:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 14017,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "21136:7:46",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 14020,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21136:19:46",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "id": 14021,
                                  "name": "balance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14006,
                                  "src": "21158:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "21136:30:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 14026,
                              "nodeType": "IfStatement",
                              "src": "21132:58:46",
                              "trueBody": {
                                "errorCall": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 14023,
                                    "name": "Token0Missing",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12466,
                                    "src": "21175:13:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 14024,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21175:15:46",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 14025,
                                "nodeType": "RevertStatement",
                                "src": "21168:22:46"
                              }
                            },
                            {
                              "expression": {
                                "id": 14029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14027,
                                  "name": "reserve0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12379,
                                  "src": "21204:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 14028,
                                  "name": "newBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14012,
                                  "src": "21215:10:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "21204:21:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 14030,
                              "nodeType": "ExpressionStatement",
                              "src": "21204:21:46"
                            },
                            {
                              "expression": {
                                "id": 14036,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14031,
                                  "name": "reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12382,
                                  "src": "21239:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 14034,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14001,
                                      "src": "21259:9:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 14033,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "21251:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint128_$",
                                      "typeString": "type(uint128)"
                                    },
                                    "typeName": {
                                      "id": 14032,
                                      "name": "uint128",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "21251:7:46",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 14035,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21251:18:46",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "21239:30:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 14037,
                              "nodeType": "ExpressionStatement",
                              "src": "21239:30:46"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 14075,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_updateReserves",
                  "nameLocation": "20880:15:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14002,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13997,
                        "mutability": "mutable",
                        "name": "zeroForOne",
                        "nameLocation": "20910:10:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14075,
                        "src": "20905:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 13996,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "20905:4:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 13999,
                        "mutability": "mutable",
                        "name": "inAmount",
                        "nameLocation": "20938:8:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14075,
                        "src": "20930:16:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 13998,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "20930:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14001,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "20964:9:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14075,
                        "src": "20956:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14000,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20956:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20895:84:46"
                  },
                  "returnParameters": {
                    "id": 14003,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20989:0:46"
                  },
                  "scope": 14653,
                  "src": "20871:715:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14104,
                    "nodeType": "Block",
                    "src": "21715:248:46",
                    "statements": [
                      {
                        "condition": {
                          "id": 14084,
                          "name": "zeroForOne",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14077,
                          "src": "21729:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 14102,
                          "nodeType": "Block",
                          "src": "21852:105:46",
                          "statements": [
                            {
                              "expression": {
                                "id": 14096,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14094,
                                  "name": "feeGrowthGlobal0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12368,
                                  "src": "21866:16:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 14095,
                                  "name": "feeGrowthGlobal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14079,
                                  "src": "21885:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "21866:34:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14097,
                              "nodeType": "ExpressionStatement",
                              "src": "21866:34:46"
                            },
                            {
                              "expression": {
                                "id": 14100,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14098,
                                  "name": "token0ProtocolFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12375,
                                  "src": "21914:17:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 14099,
                                  "name": "protocolFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14081,
                                  "src": "21935:11:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "21914:32:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 14101,
                              "nodeType": "ExpressionStatement",
                              "src": "21914:32:46"
                            }
                          ]
                        },
                        "id": 14103,
                        "nodeType": "IfStatement",
                        "src": "21725:232:46",
                        "trueBody": {
                          "id": 14093,
                          "nodeType": "Block",
                          "src": "21741:105:46",
                          "statements": [
                            {
                              "expression": {
                                "id": 14087,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14085,
                                  "name": "feeGrowthGlobal1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12371,
                                  "src": "21755:16:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 14086,
                                  "name": "feeGrowthGlobal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14079,
                                  "src": "21774:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "21755:34:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14088,
                              "nodeType": "ExpressionStatement",
                              "src": "21755:34:46"
                            },
                            {
                              "expression": {
                                "id": 14091,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14089,
                                  "name": "token1ProtocolFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12377,
                                  "src": "21803:17:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "id": 14090,
                                  "name": "protocolFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14081,
                                  "src": "21824:11:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "21803:32:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 14092,
                              "nodeType": "ExpressionStatement",
                              "src": "21803:32:46"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 14105,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_updateFees",
                  "nameLocation": "21601:11:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14082,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14077,
                        "mutability": "mutable",
                        "name": "zeroForOne",
                        "nameLocation": "21627:10:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14105,
                        "src": "21622:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 14076,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "21622:4:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14079,
                        "mutability": "mutable",
                        "name": "feeGrowthGlobal",
                        "nameLocation": "21655:15:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14105,
                        "src": "21647:23:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14078,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21647:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14081,
                        "mutability": "mutable",
                        "name": "protocolFee",
                        "nameLocation": "21688:11:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14105,
                        "src": "21680:19:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 14080,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "21680:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21612:93:46"
                  },
                  "returnParameters": {
                    "id": 14083,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21715:0:46"
                  },
                  "scope": 14653,
                  "src": "21592:371:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14222,
                    "nodeType": "Block",
                    "src": "22236:965:46",
                    "statements": [
                      {
                        "assignments": [
                          14124
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14124,
                            "mutability": "mutable",
                            "name": "position",
                            "nameLocation": "22263:8:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 14222,
                            "src": "22246:25:46",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Position_$12411_storage_ptr",
                              "typeString": "struct ConcentratedLiquidityPool.Position"
                            },
                            "typeName": {
                              "id": 14123,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 14122,
                                "name": "Position",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 12411,
                                "src": "22246:8:46"
                              },
                              "referencedDeclaration": 12411,
                              "src": "22246:8:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Position_$12411_storage_ptr",
                                "typeString": "struct ConcentratedLiquidityPool.Position"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14132,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 14125,
                                "name": "positions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12404,
                                "src": "22274:9:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_int24_$_t_mapping$_t_int24_$_t_struct$_Position_$12411_storage_$_$_$",
                                  "typeString": "mapping(address => mapping(int24 => mapping(int24 => struct ConcentratedLiquidityPool.Position storage ref)))"
                                }
                              },
                              "id": 14127,
                              "indexExpression": {
                                "id": 14126,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14107,
                                "src": "22284:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "22274:16:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_int24_$_t_mapping$_t_int24_$_t_struct$_Position_$12411_storage_$_$",
                                "typeString": "mapping(int24 => mapping(int24 => struct ConcentratedLiquidityPool.Position storage ref))"
                              }
                            },
                            "id": 14129,
                            "indexExpression": {
                              "id": 14128,
                              "name": "lower",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14109,
                              "src": "22291:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "22274:23:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Position_$12411_storage_$",
                              "typeString": "mapping(int24 => struct ConcentratedLiquidityPool.Position storage ref)"
                            }
                          },
                          "id": 14131,
                          "indexExpression": {
                            "id": 14130,
                            "name": "upper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14111,
                            "src": "22298:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "22274:30:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Position_$12411_storage",
                            "typeString": "struct ConcentratedLiquidityPool.Position storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22246:58:46"
                      },
                      {
                        "assignments": [
                          14134,
                          14136
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14134,
                            "mutability": "mutable",
                            "name": "growth0current",
                            "nameLocation": "22324:14:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 14222,
                            "src": "22316:22:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14133,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22316:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 14136,
                            "mutability": "mutable",
                            "name": "growth1current",
                            "nameLocation": "22348:14:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 14222,
                            "src": "22340:22:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14135,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22340:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14141,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 14138,
                              "name": "lower",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14109,
                              "src": "22381:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            {
                              "id": 14139,
                              "name": "upper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14111,
                              "src": "22388:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              },
                              {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            ],
                            "id": 14137,
                            "name": "rangeFeeGrowth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14480,
                            "src": "22366:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_int24_$_t_int24_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (int24,int24) view returns (uint256,uint256)"
                            }
                          },
                          "id": 14140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22366:28:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22315:79:46"
                      },
                      {
                        "expression": {
                          "id": 14153,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14142,
                            "name": "amount0fees",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14116,
                            "src": "22404:11:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14148,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 14145,
                                  "name": "growth0current",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14134,
                                  "src": "22447:14:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "expression": {
                                    "id": 14146,
                                    "name": "position",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14124,
                                    "src": "22464:8:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Position_$12411_storage_ptr",
                                      "typeString": "struct ConcentratedLiquidityPool.Position storage pointer"
                                    }
                                  },
                                  "id": 14147,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeGrowthInside0Last",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12408,
                                  "src": "22464:29:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "22447:46:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 14149,
                                  "name": "position",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14124,
                                  "src": "22507:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Position_$12411_storage_ptr",
                                    "typeString": "struct ConcentratedLiquidityPool.Position storage pointer"
                                  }
                                },
                                "id": 14150,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "liquidity",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12406,
                                "src": "22507:18:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              {
                                "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                                "id": 14151,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22539:35:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                  "typeString": "int_const 3402...(31 digits omitted)...1456"
                                },
                                "value": "0x100000000000000000000000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                  "typeString": "int_const 3402...(31 digits omitted)...1456"
                                }
                              ],
                              "expression": {
                                "id": 14143,
                                "name": "FullMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3590,
                                "src": "22418:8:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_FullMath_$3590_$",
                                  "typeString": "type(library FullMath)"
                                }
                              },
                              "id": 14144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mulDiv",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3545,
                              "src": "22418:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 14152,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22418:166:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22404:180:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14154,
                        "nodeType": "ExpressionStatement",
                        "src": "22404:180:46"
                      },
                      {
                        "expression": {
                          "id": 14166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14155,
                            "name": "amount1fees",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14118,
                            "src": "22595:11:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 14161,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 14158,
                                  "name": "growth1current",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14136,
                                  "src": "22638:14:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "expression": {
                                    "id": 14159,
                                    "name": "position",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14124,
                                    "src": "22655:8:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Position_$12411_storage_ptr",
                                      "typeString": "struct ConcentratedLiquidityPool.Position storage pointer"
                                    }
                                  },
                                  "id": 14160,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeGrowthInside1Last",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12410,
                                  "src": "22655:29:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "22638:46:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 14162,
                                  "name": "position",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14124,
                                  "src": "22698:8:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Position_$12411_storage_ptr",
                                    "typeString": "struct ConcentratedLiquidityPool.Position storage pointer"
                                  }
                                },
                                "id": 14163,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "liquidity",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 12406,
                                "src": "22698:18:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              {
                                "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                                "id": 14164,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22730:35:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                  "typeString": "int_const 3402...(31 digits omitted)...1456"
                                },
                                "value": "0x100000000000000000000000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                  "typeString": "int_const 3402...(31 digits omitted)...1456"
                                }
                              ],
                              "expression": {
                                "id": 14156,
                                "name": "FullMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3590,
                                "src": "22609:8:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_FullMath_$3590_$",
                                  "typeString": "type(library FullMath)"
                                }
                              },
                              "id": 14157,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mulDiv",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3545,
                              "src": "22609:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 14165,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22609:166:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22595:180:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14167,
                        "nodeType": "ExpressionStatement",
                        "src": "22595:180:46"
                      },
                      {
                        "expression": {
                          "id": 14171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14168,
                            "name": "oldLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14120,
                            "src": "22786:12:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 14169,
                              "name": "position",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14124,
                              "src": "22801:8:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Position_$12411_storage_ptr",
                                "typeString": "struct ConcentratedLiquidityPool.Position storage pointer"
                              }
                            },
                            "id": 14170,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "liquidity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12406,
                            "src": "22801:18:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "22786:33:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14172,
                        "nodeType": "ExpressionStatement",
                        "src": "22786:33:46"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          },
                          "id": 14175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 14173,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14113,
                            "src": "22834:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 14174,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22843:1:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "22834:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14187,
                        "nodeType": "IfStatement",
                        "src": "22830:79:46",
                        "trueBody": {
                          "id": 14186,
                          "nodeType": "Block",
                          "src": "22846:63:46",
                          "statements": [
                            {
                              "expression": {
                                "id": 14184,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 14176,
                                    "name": "position",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14124,
                                    "src": "22860:8:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Position_$12411_storage_ptr",
                                      "typeString": "struct ConcentratedLiquidityPool.Position storage pointer"
                                    }
                                  },
                                  "id": 14178,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "liquidity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12406,
                                  "src": "22860:18:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 14182,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "-",
                                      "prefix": true,
                                      "src": "22890:7:46",
                                      "subExpression": {
                                        "id": 14181,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14113,
                                        "src": "22891:6:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int128",
                                          "typeString": "int128"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int128",
                                        "typeString": "int128"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int128",
                                        "typeString": "int128"
                                      }
                                    ],
                                    "id": 14180,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "22882:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint128_$",
                                      "typeString": "type(uint128)"
                                    },
                                    "typeName": {
                                      "id": 14179,
                                      "name": "uint128",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "22882:7:46",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 14183,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "22882:16:46",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "22860:38:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 14185,
                              "nodeType": "ExpressionStatement",
                              "src": "22860:38:46"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          },
                          "id": 14190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 14188,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14113,
                            "src": "22923:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int128",
                              "typeString": "int128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 14189,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "22932:1:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "22923:10:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14209,
                        "nodeType": "IfStatement",
                        "src": "22919:163:46",
                        "trueBody": {
                          "id": 14208,
                          "nodeType": "Block",
                          "src": "22935:147:46",
                          "statements": [
                            {
                              "expression": {
                                "id": 14198,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 14191,
                                    "name": "position",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14124,
                                    "src": "22949:8:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Position_$12411_storage_ptr",
                                      "typeString": "struct ConcentratedLiquidityPool.Position storage pointer"
                                    }
                                  },
                                  "id": 14193,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "liquidity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12406,
                                  "src": "22949:18:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 14196,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14113,
                                      "src": "22979:6:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int128",
                                        "typeString": "int128"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int128",
                                        "typeString": "int128"
                                      }
                                    ],
                                    "id": 14195,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "22971:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint128_$",
                                      "typeString": "type(uint128)"
                                    },
                                    "typeName": {
                                      "id": 14194,
                                      "name": "uint128",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "22971:7:46",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 14197,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "22971:15:46",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "22949:37:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 14199,
                              "nodeType": "ExpressionStatement",
                              "src": "22949:37:46"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                "id": 14203,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 14200,
                                    "name": "position",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14124,
                                    "src": "23004:8:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Position_$12411_storage_ptr",
                                      "typeString": "struct ConcentratedLiquidityPool.Position storage pointer"
                                    }
                                  },
                                  "id": 14201,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "liquidity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 12406,
                                  "src": "23004:18:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "id": 14202,
                                  "name": "MAX_TICK_LIQUIDITY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 12347,
                                  "src": "23025:18:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "23004:39:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 14207,
                              "nodeType": "IfStatement",
                              "src": "23000:71:46",
                              "trueBody": {
                                "errorCall": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "id": 14204,
                                    "name": "LiquidityOverflow",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12464,
                                    "src": "23052:17:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 14205,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "23052:19:46",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 14206,
                                "nodeType": "RevertStatement",
                                "src": "23045:26:46"
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 14214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 14210,
                              "name": "position",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14124,
                              "src": "23092:8:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Position_$12411_storage_ptr",
                                "typeString": "struct ConcentratedLiquidityPool.Position storage pointer"
                              }
                            },
                            "id": 14212,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "feeGrowthInside0Last",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12408,
                            "src": "23092:29:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14213,
                            "name": "growth0current",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14134,
                            "src": "23124:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23092:46:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14215,
                        "nodeType": "ExpressionStatement",
                        "src": "23092:46:46"
                      },
                      {
                        "expression": {
                          "id": 14220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 14216,
                              "name": "position",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14124,
                              "src": "23148:8:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Position_$12411_storage_ptr",
                                "typeString": "struct ConcentratedLiquidityPool.Position storage pointer"
                              }
                            },
                            "id": 14218,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "feeGrowthInside1Last",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 12410,
                            "src": "23148:29:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14219,
                            "name": "growth1current",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14136,
                            "src": "23180:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23148:46:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14221,
                        "nodeType": "ExpressionStatement",
                        "src": "23148:46:46"
                      }
                    ]
                  },
                  "id": 14223,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_updatePosition",
                  "nameLocation": "21978:15:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14114,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14107,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "22011:5:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14223,
                        "src": "22003:13:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14106,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22003:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14109,
                        "mutability": "mutable",
                        "name": "lower",
                        "nameLocation": "22032:5:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14223,
                        "src": "22026:11:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 14108,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "22026:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14111,
                        "mutability": "mutable",
                        "name": "upper",
                        "nameLocation": "22053:5:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14223,
                        "src": "22047:11:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 14110,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "22047:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14113,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "22075:6:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14223,
                        "src": "22068:13:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int128",
                          "typeString": "int128"
                        },
                        "typeName": {
                          "id": 14112,
                          "name": "int128",
                          "nodeType": "ElementaryTypeName",
                          "src": "22068:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int128",
                            "typeString": "int128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21993:94:46"
                  },
                  "returnParameters": {
                    "id": 14121,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14116,
                        "mutability": "mutable",
                        "name": "amount0fees",
                        "nameLocation": "22143:11:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14223,
                        "src": "22135:19:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14115,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22135:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14118,
                        "mutability": "mutable",
                        "name": "amount1fees",
                        "nameLocation": "22176:11:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14223,
                        "src": "22168:19:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14117,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22168:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14120,
                        "mutability": "mutable",
                        "name": "oldLiquidity",
                        "nameLocation": "22209:12:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14223,
                        "src": "22201:20:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14119,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22201:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22121:110:46"
                  },
                  "scope": 14653,
                  "src": "21969:1232:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14241,
                    "nodeType": "Block",
                    "src": "23280:64:46",
                    "statements": [
                      {
                        "expression": {
                          "id": 14239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14230,
                            "name": "balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14228,
                            "src": "23290:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 14233,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14225,
                                "src": "23316:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 14236,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "23331:4:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                      "typeString": "contract ConcentratedLiquidityPool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                      "typeString": "contract ConcentratedLiquidityPool"
                                    }
                                  ],
                                  "id": 14235,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "23323:7:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 14234,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "23323:7:46",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 14237,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23323:13:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "id": 14231,
                                "name": "bento",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 12352,
                                "src": "23300:5:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                  "typeString": "contract IBentoBoxMinimal"
                                }
                              },
                              "id": 14232,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2151,
                              "src": "23300:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address,address) view external returns (uint256)"
                              }
                            },
                            "id": 14238,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23300:37:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23290:47:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14240,
                        "nodeType": "ExpressionStatement",
                        "src": "23290:47:46"
                      }
                    ]
                  },
                  "id": 14242,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_balance",
                  "nameLocation": "23216:8:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14226,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14225,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "23233:5:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14242,
                        "src": "23225:13:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14224,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23225:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23224:15:46"
                  },
                  "returnParameters": {
                    "id": 14229,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14228,
                        "mutability": "mutable",
                        "name": "balance",
                        "nameLocation": "23271:7:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14242,
                        "src": "23263:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14227,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23263:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23262:17:46"
                  },
                  "scope": 14653,
                  "src": "23207:137:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14282,
                    "nodeType": "Block",
                    "src": "23477:188:46",
                    "statements": [
                      {
                        "condition": {
                          "id": 14253,
                          "name": "unwrapBento",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14250,
                          "src": "23491:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 14280,
                          "nodeType": "Block",
                          "src": "23586:73:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 14271,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14244,
                                    "src": "23615:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 14274,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "23630:4:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                          "typeString": "contract ConcentratedLiquidityPool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                          "typeString": "contract ConcentratedLiquidityPool"
                                        }
                                      ],
                                      "id": 14273,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "23622:7:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 14272,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "23622:7:46",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 14275,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "23622:13:46",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 14276,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14248,
                                    "src": "23637:2:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 14277,
                                    "name": "shares",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14246,
                                    "src": "23641:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 14268,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12352,
                                    "src": "23600:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 14270,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2227,
                                  "src": "23600:14:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,uint256) external"
                                  }
                                },
                                "id": 14278,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23600:48:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14279,
                              "nodeType": "ExpressionStatement",
                              "src": "23600:48:46"
                            }
                          ]
                        },
                        "id": 14281,
                        "nodeType": "IfStatement",
                        "src": "23487:172:46",
                        "trueBody": {
                          "id": 14267,
                          "nodeType": "Block",
                          "src": "23504:76:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 14257,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14244,
                                    "src": "23533:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 14260,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "23548:4:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                          "typeString": "contract ConcentratedLiquidityPool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                          "typeString": "contract ConcentratedLiquidityPool"
                                        }
                                      ],
                                      "id": 14259,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "23540:7:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 14258,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "23540:7:46",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 14261,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "23540:13:46",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 14262,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14248,
                                    "src": "23555:2:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 14263,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23559:1:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "id": 14264,
                                    "name": "shares",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14246,
                                    "src": "23562:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 14254,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12352,
                                    "src": "23518:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 14256,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "withdraw",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2215,
                                  "src": "23518:14:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (address,address,address,uint256,uint256) external returns (uint256,uint256)"
                                  }
                                },
                                "id": 14265,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23518:51:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "id": 14266,
                              "nodeType": "ExpressionStatement",
                              "src": "23518:51:46"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 14283,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nameLocation": "23359:9:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14251,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14244,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "23386:5:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14283,
                        "src": "23378:13:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14243,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23378:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14246,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "23409:6:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14283,
                        "src": "23401:14:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14245,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23401:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14248,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "23433:2:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14283,
                        "src": "23425:10:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14247,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23425:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14250,
                        "mutability": "mutable",
                        "name": "unwrapBento",
                        "nameLocation": "23450:11:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14283,
                        "src": "23445:16:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 14249,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23445:4:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23368:99:46"
                  },
                  "returnParameters": {
                    "id": 14252,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23477:0:46"
                  },
                  "scope": 14653,
                  "src": "23350:315:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14348,
                    "nodeType": "Block",
                    "src": "23811:323:46",
                    "statements": [
                      {
                        "condition": {
                          "id": 14294,
                          "name": "unwrapBento",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14291,
                          "src": "23825:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 14346,
                          "nodeType": "Block",
                          "src": "23989:139:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 14325,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12357,
                                    "src": "24018:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 14328,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "24034:4:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                          "typeString": "contract ConcentratedLiquidityPool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                          "typeString": "contract ConcentratedLiquidityPool"
                                        }
                                      ],
                                      "id": 14327,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "24026:7:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 14326,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "24026:7:46",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 14329,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "24026:13:46",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 14330,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14285,
                                    "src": "24041:2:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 14331,
                                    "name": "shares0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14287,
                                    "src": "24045:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 14322,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12352,
                                    "src": "24003:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 14324,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2227,
                                  "src": "24003:14:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,uint256) external"
                                  }
                                },
                                "id": 14332,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24003:50:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14333,
                              "nodeType": "ExpressionStatement",
                              "src": "24003:50:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 14337,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12359,
                                    "src": "24082:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 14340,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "24098:4:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                          "typeString": "contract ConcentratedLiquidityPool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                          "typeString": "contract ConcentratedLiquidityPool"
                                        }
                                      ],
                                      "id": 14339,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "24090:7:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 14338,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "24090:7:46",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 14341,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "24090:13:46",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 14342,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14285,
                                    "src": "24105:2:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 14343,
                                    "name": "shares1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14289,
                                    "src": "24109:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 14334,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12352,
                                    "src": "24067:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 14336,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2227,
                                  "src": "24067:14:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,uint256) external"
                                  }
                                },
                                "id": 14344,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24067:50:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14345,
                              "nodeType": "ExpressionStatement",
                              "src": "24067:50:46"
                            }
                          ]
                        },
                        "id": 14347,
                        "nodeType": "IfStatement",
                        "src": "23821:307:46",
                        "trueBody": {
                          "id": 14321,
                          "nodeType": "Block",
                          "src": "23838:145:46",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 14298,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12357,
                                    "src": "23867:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 14301,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "23883:4:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                          "typeString": "contract ConcentratedLiquidityPool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                          "typeString": "contract ConcentratedLiquidityPool"
                                        }
                                      ],
                                      "id": 14300,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "23875:7:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 14299,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "23875:7:46",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 14302,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "23875:13:46",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 14303,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14285,
                                    "src": "23890:2:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 14304,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23894:1:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "id": 14305,
                                    "name": "shares0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14287,
                                    "src": "23897:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 14295,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12352,
                                    "src": "23852:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 14297,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "withdraw",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2215,
                                  "src": "23852:14:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (address,address,address,uint256,uint256) external returns (uint256,uint256)"
                                  }
                                },
                                "id": 14306,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23852:53:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "id": 14307,
                              "nodeType": "ExpressionStatement",
                              "src": "23852:53:46"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 14311,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12359,
                                    "src": "23934:6:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 14314,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "23950:4:46",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                          "typeString": "contract ConcentratedLiquidityPool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                          "typeString": "contract ConcentratedLiquidityPool"
                                        }
                                      ],
                                      "id": 14313,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "23942:7:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 14312,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "23942:7:46",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 14315,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "23942:13:46",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 14316,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14285,
                                    "src": "23957:2:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 14317,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "23961:1:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "id": 14318,
                                    "name": "shares1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14289,
                                    "src": "23964:7:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 14308,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 12352,
                                    "src": "23919:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 14310,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "withdraw",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2215,
                                  "src": "23919:14:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (address,address,address,uint256,uint256) external returns (uint256,uint256)"
                                  }
                                },
                                "id": 14319,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "23919:53:46",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "id": 14320,
                              "nodeType": "ExpressionStatement",
                              "src": "23919:53:46"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 14349,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferBothTokens",
                  "nameLocation": "23680:19:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14292,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14285,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "23717:2:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14349,
                        "src": "23709:10:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14284,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23709:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14287,
                        "mutability": "mutable",
                        "name": "shares0",
                        "nameLocation": "23737:7:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14349,
                        "src": "23729:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14286,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23729:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14289,
                        "mutability": "mutable",
                        "name": "shares1",
                        "nameLocation": "23762:7:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14349,
                        "src": "23754:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14288,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "23754:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14291,
                        "mutability": "mutable",
                        "name": "unwrapBento",
                        "nameLocation": "23784:11:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14349,
                        "src": "23779:16:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 14290,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23779:4:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23699:102:46"
                  },
                  "returnParameters": {
                    "id": 14293,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23811:0:46"
                  },
                  "scope": 14653,
                  "src": "23671:463:46",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 14479,
                    "nodeType": "Block",
                    "src": "25156:1263:46",
                    "statements": [
                      {
                        "assignments": [
                          14362
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14362,
                            "mutability": "mutable",
                            "name": "currentTick",
                            "nameLocation": "25172:11:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 14479,
                            "src": "25166:17:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            "typeName": {
                              "id": 14361,
                              "name": "int24",
                              "nodeType": "ElementaryTypeName",
                              "src": "25166:5:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14364,
                        "initialValue": {
                          "id": 14363,
                          "name": "nearestTick",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12387,
                          "src": "25186:11:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25166:31:46"
                      },
                      {
                        "assignments": [
                          14369
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14369,
                            "mutability": "mutable",
                            "name": "lower",
                            "nameLocation": "25227:5:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 14479,
                            "src": "25208:24:46",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                              "typeString": "struct Ticks.Tick"
                            },
                            "typeName": {
                              "id": 14368,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 14367,
                                "name": "Ticks.Tick",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4235,
                                "src": "25208:10:46"
                              },
                              "referencedDeclaration": 4235,
                              "src": "25208:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                "typeString": "struct Ticks.Tick"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14373,
                        "initialValue": {
                          "baseExpression": {
                            "id": 14370,
                            "name": "ticks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12395,
                            "src": "25235:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                              "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                            }
                          },
                          "id": 14372,
                          "indexExpression": {
                            "id": 14371,
                            "name": "lowerTick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14352,
                            "src": "25241:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "25235:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tick_$4235_storage",
                            "typeString": "struct Ticks.Tick storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25208:43:46"
                      },
                      {
                        "assignments": [
                          14378
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14378,
                            "mutability": "mutable",
                            "name": "upper",
                            "nameLocation": "25280:5:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 14479,
                            "src": "25261:24:46",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                              "typeString": "struct Ticks.Tick"
                            },
                            "typeName": {
                              "id": 14377,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 14376,
                                "name": "Ticks.Tick",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4235,
                                "src": "25261:10:46"
                              },
                              "referencedDeclaration": 4235,
                              "src": "25261:10:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                "typeString": "struct Ticks.Tick"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14382,
                        "initialValue": {
                          "baseExpression": {
                            "id": 14379,
                            "name": "ticks",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12395,
                            "src": "25288:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Tick_$4235_storage_$",
                              "typeString": "mapping(int24 => struct Ticks.Tick storage ref)"
                            }
                          },
                          "id": 14381,
                          "indexExpression": {
                            "id": 14380,
                            "name": "upperTick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14354,
                            "src": "25294:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "25288:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tick_$4235_storage",
                            "typeString": "struct Ticks.Tick storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25261:43:46"
                      },
                      {
                        "assignments": [
                          14384
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14384,
                            "mutability": "mutable",
                            "name": "_feeGrowthGlobal0",
                            "nameLocation": "25370:17:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 14479,
                            "src": "25362:25:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14383,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "25362:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14386,
                        "initialValue": {
                          "id": 14385,
                          "name": "feeGrowthGlobal0",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12368,
                          "src": "25390:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25362:44:46"
                      },
                      {
                        "assignments": [
                          14388
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14388,
                            "mutability": "mutable",
                            "name": "_feeGrowthGlobal1",
                            "nameLocation": "25424:17:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 14479,
                            "src": "25416:25:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14387,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "25416:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14390,
                        "initialValue": {
                          "id": 14389,
                          "name": "feeGrowthGlobal1",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 12371,
                          "src": "25444:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25416:44:46"
                      },
                      {
                        "assignments": [
                          14392
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14392,
                            "mutability": "mutable",
                            "name": "feeGrowthBelow0",
                            "nameLocation": "25478:15:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 14479,
                            "src": "25470:23:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14391,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "25470:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14393,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25470:23:46"
                      },
                      {
                        "assignments": [
                          14395
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14395,
                            "mutability": "mutable",
                            "name": "feeGrowthBelow1",
                            "nameLocation": "25511:15:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 14479,
                            "src": "25503:23:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14394,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "25503:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14396,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25503:23:46"
                      },
                      {
                        "assignments": [
                          14398
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14398,
                            "mutability": "mutable",
                            "name": "feeGrowthAbove0",
                            "nameLocation": "25544:15:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 14479,
                            "src": "25536:23:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14397,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "25536:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14399,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25536:23:46"
                      },
                      {
                        "assignments": [
                          14401
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14401,
                            "mutability": "mutable",
                            "name": "feeGrowthAbove1",
                            "nameLocation": "25577:15:46",
                            "nodeType": "VariableDeclaration",
                            "scope": 14479,
                            "src": "25569:23:46",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 14400,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "25569:7:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14402,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "25569:23:46"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "id": 14405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 14403,
                            "name": "lowerTick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14352,
                            "src": "25607:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "id": 14404,
                            "name": "currentTick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14362,
                            "src": "25620:11:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "src": "25607:24:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 14431,
                          "nodeType": "Block",
                          "src": "25760:161:46",
                          "statements": [
                            {
                              "expression": {
                                "id": 14422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14417,
                                  "name": "feeGrowthBelow0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14392,
                                  "src": "25774:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14421,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 14418,
                                    "name": "_feeGrowthGlobal0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14384,
                                    "src": "25792:17:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 14419,
                                      "name": "lower",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14369,
                                      "src": "25812:5:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                        "typeString": "struct Ticks.Tick storage pointer"
                                      }
                                    },
                                    "id": 14420,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "feeGrowthOutside0",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4230,
                                    "src": "25812:23:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "25792:43:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25774:61:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14423,
                              "nodeType": "ExpressionStatement",
                              "src": "25774:61:46"
                            },
                            {
                              "expression": {
                                "id": 14429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14424,
                                  "name": "feeGrowthBelow1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14395,
                                  "src": "25849:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14428,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 14425,
                                    "name": "_feeGrowthGlobal1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14388,
                                    "src": "25867:17:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 14426,
                                      "name": "lower",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14369,
                                      "src": "25887:5:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                        "typeString": "struct Ticks.Tick storage pointer"
                                      }
                                    },
                                    "id": 14427,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "feeGrowthOutside1",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4232,
                                    "src": "25887:23:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "25867:43:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25849:61:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14430,
                              "nodeType": "ExpressionStatement",
                              "src": "25849:61:46"
                            }
                          ]
                        },
                        "id": 14432,
                        "nodeType": "IfStatement",
                        "src": "25603:318:46",
                        "trueBody": {
                          "id": 14416,
                          "nodeType": "Block",
                          "src": "25633:121:46",
                          "statements": [
                            {
                              "expression": {
                                "id": 14409,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14406,
                                  "name": "feeGrowthBelow0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14392,
                                  "src": "25647:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 14407,
                                    "name": "lower",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14369,
                                    "src": "25665:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick storage pointer"
                                    }
                                  },
                                  "id": 14408,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeGrowthOutside0",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4230,
                                  "src": "25665:23:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25647:41:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14410,
                              "nodeType": "ExpressionStatement",
                              "src": "25647:41:46"
                            },
                            {
                              "expression": {
                                "id": 14414,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14411,
                                  "name": "feeGrowthBelow1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14395,
                                  "src": "25702:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 14412,
                                    "name": "lower",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14369,
                                    "src": "25720:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick storage pointer"
                                    }
                                  },
                                  "id": 14413,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeGrowthOutside1",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4232,
                                  "src": "25720:23:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25702:41:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14415,
                              "nodeType": "ExpressionStatement",
                              "src": "25702:41:46"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "id": 14435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 14433,
                            "name": "currentTick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14362,
                            "src": "25935:11:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 14434,
                            "name": "upperTick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14354,
                            "src": "25949:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "src": "25935:23:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 14461,
                          "nodeType": "Block",
                          "src": "26087:161:46",
                          "statements": [
                            {
                              "expression": {
                                "id": 14452,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14447,
                                  "name": "feeGrowthAbove0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14398,
                                  "src": "26101:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14451,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 14448,
                                    "name": "_feeGrowthGlobal0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14384,
                                    "src": "26119:17:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 14449,
                                      "name": "upper",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14378,
                                      "src": "26139:5:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                        "typeString": "struct Ticks.Tick storage pointer"
                                      }
                                    },
                                    "id": 14450,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "feeGrowthOutside0",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4230,
                                    "src": "26139:23:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "26119:43:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "26101:61:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14453,
                              "nodeType": "ExpressionStatement",
                              "src": "26101:61:46"
                            },
                            {
                              "expression": {
                                "id": 14459,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14454,
                                  "name": "feeGrowthAbove1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14401,
                                  "src": "26176:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 14458,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 14455,
                                    "name": "_feeGrowthGlobal1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14388,
                                    "src": "26194:17:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 14456,
                                      "name": "upper",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14378,
                                      "src": "26214:5:46",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                        "typeString": "struct Ticks.Tick storage pointer"
                                      }
                                    },
                                    "id": 14457,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "feeGrowthOutside1",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4232,
                                    "src": "26214:23:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "26194:43:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "26176:61:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14460,
                              "nodeType": "ExpressionStatement",
                              "src": "26176:61:46"
                            }
                          ]
                        },
                        "id": 14462,
                        "nodeType": "IfStatement",
                        "src": "25931:317:46",
                        "trueBody": {
                          "id": 14446,
                          "nodeType": "Block",
                          "src": "25960:121:46",
                          "statements": [
                            {
                              "expression": {
                                "id": 14439,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14436,
                                  "name": "feeGrowthAbove0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14398,
                                  "src": "25974:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 14437,
                                    "name": "upper",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14378,
                                    "src": "25992:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick storage pointer"
                                    }
                                  },
                                  "id": 14438,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeGrowthOutside0",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4230,
                                  "src": "25992:23:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "25974:41:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14440,
                              "nodeType": "ExpressionStatement",
                              "src": "25974:41:46"
                            },
                            {
                              "expression": {
                                "id": 14444,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14441,
                                  "name": "feeGrowthAbove1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14401,
                                  "src": "26029:15:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 14442,
                                    "name": "upper",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14378,
                                    "src": "26047:5:46",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                      "typeString": "struct Ticks.Tick storage pointer"
                                    }
                                  },
                                  "id": 14443,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeGrowthOutside1",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4232,
                                  "src": "26047:23:46",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "26029:41:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 14445,
                              "nodeType": "ExpressionStatement",
                              "src": "26029:41:46"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 14469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14463,
                            "name": "feeGrowthInside0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14357,
                            "src": "26258:16:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 14468,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 14466,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 14464,
                                "name": "_feeGrowthGlobal0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14384,
                                "src": "26277:17:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "id": 14465,
                                "name": "feeGrowthBelow0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14392,
                                "src": "26297:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "26277:35:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 14467,
                              "name": "feeGrowthAbove0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14398,
                              "src": "26315:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "26277:53:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26258:72:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14470,
                        "nodeType": "ExpressionStatement",
                        "src": "26258:72:46"
                      },
                      {
                        "expression": {
                          "id": 14477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14471,
                            "name": "feeGrowthInside1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14359,
                            "src": "26340:16:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 14476,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 14474,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 14472,
                                "name": "_feeGrowthGlobal1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14388,
                                "src": "26359:17:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "id": 14473,
                                "name": "feeGrowthBelow1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14395,
                                "src": "26379:15:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "26359:35:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 14475,
                              "name": "feeGrowthAbove1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14401,
                              "src": "26397:15:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "26359:53:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26340:72:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 14478,
                        "nodeType": "ExpressionStatement",
                        "src": "26340:72:46"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14350,
                    "nodeType": "StructuredDocumentation",
                    "src": "24835:185:46",
                    "text": "@notice Calculates the fee growth inside a range (per unit of liquidity).\n @dev Multiply `rangeFeeGrowth` delta by the provided liquidity to get accrued fees for some period."
                  },
                  "functionSelector": "acfe88f8",
                  "id": 14480,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rangeFeeGrowth",
                  "nameLocation": "25034:14:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14355,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14352,
                        "mutability": "mutable",
                        "name": "lowerTick",
                        "nameLocation": "25055:9:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14480,
                        "src": "25049:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 14351,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "25049:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14354,
                        "mutability": "mutable",
                        "name": "upperTick",
                        "nameLocation": "25072:9:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14480,
                        "src": "25066:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 14353,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "25066:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25048:34:46"
                  },
                  "returnParameters": {
                    "id": 14360,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14357,
                        "mutability": "mutable",
                        "name": "feeGrowthInside0",
                        "nameLocation": "25112:16:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14480,
                        "src": "25104:24:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14356,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25104:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14359,
                        "mutability": "mutable",
                        "name": "feeGrowthInside1",
                        "nameLocation": "25138:16:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14480,
                        "src": "25130:24:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14358,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "25130:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25103:52:46"
                  },
                  "scope": 14653,
                  "src": "25025:1394:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2415
                  ],
                  "body": {
                    "id": 14507,
                    "nodeType": "Block",
                    "src": "26501:98:46",
                    "statements": [
                      {
                        "expression": {
                          "id": 14493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14487,
                            "name": "assets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14485,
                            "src": "26511:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "32",
                                "id": 14491,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "26534:1:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                }
                              ],
                              "id": 14490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "26520:13:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (address[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 14488,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "26524:7:46",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 14489,
                                "nodeType": "ArrayTypeName",
                                "src": "26524:9:46",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                  "typeString": "address[]"
                                }
                              }
                            },
                            "id": 14492,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26520:16:46",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "26511:25:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 14494,
                        "nodeType": "ExpressionStatement",
                        "src": "26511:25:46"
                      },
                      {
                        "expression": {
                          "id": 14499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 14495,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14485,
                              "src": "26546:6:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 14497,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 14496,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26553:1:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "26546:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14498,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12357,
                            "src": "26558:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "26546:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 14500,
                        "nodeType": "ExpressionStatement",
                        "src": "26546:18:46"
                      },
                      {
                        "expression": {
                          "id": 14505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 14501,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14485,
                              "src": "26574:6:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 14503,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 14502,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "26581:1:46",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "26574:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14504,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12359,
                            "src": "26586:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "26574:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 14506,
                        "nodeType": "ExpressionStatement",
                        "src": "26574:18:46"
                      }
                    ]
                  },
                  "functionSelector": "67e4ac2c",
                  "id": 14508,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAssets",
                  "nameLocation": "26434:9:46",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14482,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "26458:8:46"
                  },
                  "parameters": {
                    "id": 14481,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "26443:2:46"
                  },
                  "returnParameters": {
                    "id": 14486,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14485,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "26493:6:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14508,
                        "src": "26476:23:46",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 14483,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "26476:7:46",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 14484,
                          "nodeType": "ArrayTypeName",
                          "src": "26476:9:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26475:25:46"
                  },
                  "scope": 14653,
                  "src": "26425:174:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2423
                  ],
                  "body": {
                    "id": 14520,
                    "nodeType": "Block",
                    "src": "26715:25:46",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 14517,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "26725:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 14518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26725:8:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14519,
                        "nodeType": "ExpressionStatement",
                        "src": "26725:8:46"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14509,
                    "nodeType": "StructuredDocumentation",
                    "src": "26605:28:46",
                    "text": "@dev Reserved for IPool."
                  },
                  "functionSelector": "a8f1f52e",
                  "id": 14521,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountOut",
                  "nameLocation": "26647:12:46",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14513,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "26688:8:46"
                  },
                  "parameters": {
                    "id": 14512,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14511,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14521,
                        "src": "26660:14:46",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14510,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "26660:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26659:16:46"
                  },
                  "returnParameters": {
                    "id": 14516,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14515,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14521,
                        "src": "26706:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14514,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26706:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26705:9:46"
                  },
                  "scope": 14653,
                  "src": "26638:102:46",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2431
                  ],
                  "body": {
                    "id": 14533,
                    "nodeType": "Block",
                    "src": "26855:25:46",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 14530,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "26865:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 14531,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26865:8:46",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14532,
                        "nodeType": "ExpressionStatement",
                        "src": "26865:8:46"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 14522,
                    "nodeType": "StructuredDocumentation",
                    "src": "26746:28:46",
                    "text": "@dev Reserved for IPool."
                  },
                  "functionSelector": "499a3c50",
                  "id": 14534,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountIn",
                  "nameLocation": "26788:11:46",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14526,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "26828:8:46"
                  },
                  "parameters": {
                    "id": 14525,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14524,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14534,
                        "src": "26800:14:46",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14523,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "26800:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26799:16:46"
                  },
                  "returnParameters": {
                    "id": 14529,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14528,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14534,
                        "src": "26846:7:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14527,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26846:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26845:9:46"
                  },
                  "scope": 14653,
                  "src": "26779:101:46",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14587,
                    "nodeType": "Block",
                    "src": "27244:302:46",
                    "statements": [
                      {
                        "expression": {
                          "id": 14557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14555,
                            "name": "_MAX_TICK_LIQUIDITY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14537,
                            "src": "27254:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14556,
                            "name": "MAX_TICK_LIQUIDITY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12347,
                            "src": "27276:18:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "27254:40:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 14558,
                        "nodeType": "ExpressionStatement",
                        "src": "27254:40:46"
                      },
                      {
                        "expression": {
                          "id": 14561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14559,
                            "name": "_tickSpacing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14539,
                            "src": "27304:12:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14560,
                            "name": "tickSpacing",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12342,
                            "src": "27319:11:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "src": "27304:26:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "id": 14562,
                        "nodeType": "ExpressionStatement",
                        "src": "27304:26:46"
                      },
                      {
                        "expression": {
                          "id": 14565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14563,
                            "name": "_swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14541,
                            "src": "27340:8:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14564,
                            "name": "swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12344,
                            "src": "27351:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            }
                          },
                          "src": "27340:18:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "id": 14566,
                        "nodeType": "ExpressionStatement",
                        "src": "27340:18:46"
                      },
                      {
                        "expression": {
                          "id": 14569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14567,
                            "name": "_barFeeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14543,
                            "src": "27401:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14568,
                            "name": "barFeeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12349,
                            "src": "27413:8:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "27401:20:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 14570,
                        "nodeType": "ExpressionStatement",
                        "src": "27401:20:46"
                      },
                      {
                        "expression": {
                          "id": 14573,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14571,
                            "name": "_bento",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14546,
                            "src": "27431:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14572,
                            "name": "bento",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12352,
                            "src": "27440:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "src": "27431:14:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        "id": 14574,
                        "nodeType": "ExpressionStatement",
                        "src": "27431:14:46"
                      },
                      {
                        "expression": {
                          "id": 14577,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14575,
                            "name": "_masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14549,
                            "src": "27455:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                              "typeString": "contract IMasterDeployer"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14576,
                            "name": "masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12355,
                            "src": "27473:14:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                              "typeString": "contract IMasterDeployer"
                            }
                          },
                          "src": "27455:32:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                            "typeString": "contract IMasterDeployer"
                          }
                        },
                        "id": 14578,
                        "nodeType": "ExpressionStatement",
                        "src": "27455:32:46"
                      },
                      {
                        "expression": {
                          "id": 14581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14579,
                            "name": "_token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14551,
                            "src": "27497:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14580,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12357,
                            "src": "27507:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "27497:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 14582,
                        "nodeType": "ExpressionStatement",
                        "src": "27497:16:46"
                      },
                      {
                        "expression": {
                          "id": 14585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14583,
                            "name": "_token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14553,
                            "src": "27523:7:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14584,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12359,
                            "src": "27533:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "27523:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 14586,
                        "nodeType": "ExpressionStatement",
                        "src": "27523:16:46"
                      }
                    ]
                  },
                  "functionSelector": "bcdb4dad",
                  "id": 14588,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getImmutables",
                  "nameLocation": "26895:13:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14535,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "26908:2:46"
                  },
                  "returnParameters": {
                    "id": 14554,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14537,
                        "mutability": "mutable",
                        "name": "_MAX_TICK_LIQUIDITY",
                        "nameLocation": "26977:19:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14588,
                        "src": "26969:27:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 14536,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "26969:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14539,
                        "mutability": "mutable",
                        "name": "_tickSpacing",
                        "nameLocation": "27017:12:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14588,
                        "src": "27010:19:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        },
                        "typeName": {
                          "id": 14538,
                          "name": "uint24",
                          "nodeType": "ElementaryTypeName",
                          "src": "27010:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14541,
                        "mutability": "mutable",
                        "name": "_swapFee",
                        "nameLocation": "27050:8:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14588,
                        "src": "27043:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        },
                        "typeName": {
                          "id": 14540,
                          "name": "uint24",
                          "nodeType": "ElementaryTypeName",
                          "src": "27043:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14543,
                        "mutability": "mutable",
                        "name": "_barFeeTo",
                        "nameLocation": "27080:9:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14588,
                        "src": "27072:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14542,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27072:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14546,
                        "mutability": "mutable",
                        "name": "_bento",
                        "nameLocation": "27120:6:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14588,
                        "src": "27103:23:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                          "typeString": "contract IBentoBoxMinimal"
                        },
                        "typeName": {
                          "id": 14545,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 14544,
                            "name": "IBentoBoxMinimal",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2253,
                            "src": "27103:16:46"
                          },
                          "referencedDeclaration": 2253,
                          "src": "27103:16:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14549,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "27156:15:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14588,
                        "src": "27140:31:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                          "typeString": "contract IMasterDeployer"
                        },
                        "typeName": {
                          "id": 14548,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 14547,
                            "name": "IMasterDeployer",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2356,
                            "src": "27140:15:46"
                          },
                          "referencedDeclaration": 2356,
                          "src": "27140:15:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                            "typeString": "contract IMasterDeployer"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14551,
                        "mutability": "mutable",
                        "name": "_token0",
                        "nameLocation": "27193:7:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14588,
                        "src": "27185:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14550,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27185:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14553,
                        "mutability": "mutable",
                        "name": "_token1",
                        "nameLocation": "27222:7:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14588,
                        "src": "27214:15:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14552,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27214:7:46",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26955:284:46"
                  },
                  "scope": 14653,
                  "src": "26886:660:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14603,
                    "nodeType": "Block",
                    "src": "27644:67:46",
                    "statements": [
                      {
                        "expression": {
                          "id": 14597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14595,
                            "name": "_price",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14591,
                            "src": "27654:6:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14596,
                            "name": "price",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12384,
                            "src": "27663:5:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "src": "27654:14:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "id": 14598,
                        "nodeType": "ExpressionStatement",
                        "src": "27654:14:46"
                      },
                      {
                        "expression": {
                          "id": 14601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14599,
                            "name": "_nearestTick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14593,
                            "src": "27678:12:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14600,
                            "name": "nearestTick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12387,
                            "src": "27693:11:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "src": "27678:26:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "id": 14602,
                        "nodeType": "ExpressionStatement",
                        "src": "27678:26:46"
                      }
                    ]
                  },
                  "functionSelector": "8c347f9b",
                  "id": 14604,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPriceAndNearestTicks",
                  "nameLocation": "27561:23:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14589,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27584:2:46"
                  },
                  "returnParameters": {
                    "id": 14594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14591,
                        "mutability": "mutable",
                        "name": "_price",
                        "nameLocation": "27616:6:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14604,
                        "src": "27608:14:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "typeName": {
                          "id": 14590,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "27608:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14593,
                        "mutability": "mutable",
                        "name": "_nearestTick",
                        "nameLocation": "27630:12:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14604,
                        "src": "27624:18:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 14592,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "27624:5:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27607:36:46"
                  },
                  "scope": 14653,
                  "src": "27552:159:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14619,
                    "nodeType": "Block",
                    "src": "27826:103:46",
                    "statements": [
                      {
                        "expression": {
                          "id": 14613,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14611,
                            "name": "_token0ProtocolFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14607,
                            "src": "27836:18:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14612,
                            "name": "token0ProtocolFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12375,
                            "src": "27857:17:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "27836:38:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 14614,
                        "nodeType": "ExpressionStatement",
                        "src": "27836:38:46"
                      },
                      {
                        "expression": {
                          "id": 14617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14615,
                            "name": "_token1ProtocolFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14609,
                            "src": "27884:18:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14616,
                            "name": "token1ProtocolFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12377,
                            "src": "27905:17:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "27884:38:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 14618,
                        "nodeType": "ExpressionStatement",
                        "src": "27884:38:46"
                      }
                    ]
                  },
                  "functionSelector": "fb5d80b3",
                  "id": 14620,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTokenProtocolFees",
                  "nameLocation": "27726:20:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14605,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27746:2:46"
                  },
                  "returnParameters": {
                    "id": 14610,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14607,
                        "mutability": "mutable",
                        "name": "_token0ProtocolFee",
                        "nameLocation": "27778:18:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14620,
                        "src": "27770:26:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 14606,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "27770:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14609,
                        "mutability": "mutable",
                        "name": "_token1ProtocolFee",
                        "nameLocation": "27806:18:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14620,
                        "src": "27798:26:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 14608,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "27798:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27769:56:46"
                  },
                  "scope": 14653,
                  "src": "27717:212:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14635,
                    "nodeType": "Block",
                    "src": "28017:67:46",
                    "statements": [
                      {
                        "expression": {
                          "id": 14629,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14627,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14623,
                            "src": "28027:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14628,
                            "name": "reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12379,
                            "src": "28039:8:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "28027:20:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 14630,
                        "nodeType": "ExpressionStatement",
                        "src": "28027:20:46"
                      },
                      {
                        "expression": {
                          "id": 14633,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14631,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14625,
                            "src": "28057:9:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14632,
                            "name": "reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12382,
                            "src": "28069:8:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "28057:20:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 14634,
                        "nodeType": "ExpressionStatement",
                        "src": "28057:20:46"
                      }
                    ]
                  },
                  "functionSelector": "0902f1ac",
                  "id": 14636,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReserves",
                  "nameLocation": "27944:11:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14621,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27955:2:46"
                  },
                  "returnParameters": {
                    "id": 14626,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14623,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "27987:9:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14636,
                        "src": "27979:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 14622,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "27979:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14625,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "28006:9:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14636,
                        "src": "27998:17:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 14624,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "27998:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27978:38:46"
                  },
                  "scope": 14653,
                  "src": "27935:149:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14651,
                    "nodeType": "Block",
                    "src": "28212:103:46",
                    "statements": [
                      {
                        "expression": {
                          "id": 14645,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14643,
                            "name": "_secondsGrowthGlobal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14639,
                            "src": "28222:20:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14644,
                            "name": "secondsGrowthGlobal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12363,
                            "src": "28245:19:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "src": "28222:42:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "id": 14646,
                        "nodeType": "ExpressionStatement",
                        "src": "28222:42:46"
                      },
                      {
                        "expression": {
                          "id": 14649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14647,
                            "name": "_lastObservation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14641,
                            "src": "28274:16:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14648,
                            "name": "lastObservation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 12366,
                            "src": "28293:15:46",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "28274:34:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 14650,
                        "nodeType": "ExpressionStatement",
                        "src": "28274:34:46"
                      }
                    ]
                  },
                  "functionSelector": "6d59d802",
                  "id": 14652,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSecondsGrowthAndLastObservation",
                  "nameLocation": "28099:34:46",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14637,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "28133:2:46"
                  },
                  "returnParameters": {
                    "id": 14642,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14639,
                        "mutability": "mutable",
                        "name": "_secondsGrowthGlobal",
                        "nameLocation": "28165:20:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14652,
                        "src": "28157:28:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "typeName": {
                          "id": 14638,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "28157:7:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14641,
                        "mutability": "mutable",
                        "name": "_lastObservation",
                        "nameLocation": "28194:16:46",
                        "nodeType": "VariableDeclaration",
                        "scope": 14652,
                        "src": "28187:23:46",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 14640,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "28187:6:46",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28156:55:46"
                  },
                  "scope": 14653,
                  "src": "28090:225:46",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 14654,
              "src": "875:27442:46",
              "usedErrors": [
                3697,
                12456,
                12458,
                12460,
                12462,
                12464,
                12466,
                12468,
                12470,
                12472,
                12474,
                12476,
                12478
              ]
            }
          ],
          "src": "46:28272:46"
        },
        "id": 46
      },
      "contracts/pool/concentrated/ConcentratedLiquidityPoolFactory.sol": {
        "ast": {
          "absolutePath": "contracts/pool/concentrated/ConcentratedLiquidityPoolFactory.sol",
          "exportedSymbols": {
            "ConcentratedLiquidityPool": [
              14653
            ],
            "ConcentratedLiquidityPoolFactory": [
              14779
            ],
            "DyDxMath": [
              3409
            ],
            "FullMath": [
              3590
            ],
            "IBentoBoxMinimal": [
              2253
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "IPositionManager": [
              2819
            ],
            "ITridentCallee": [
              2482
            ],
            "ITridentRouter": [
              2573
            ],
            "PoolDeployer": [
              11887
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "SwapLib": [
              3674
            ],
            "TickMath": [
              4217
            ],
            "Ticks": [
              4906
            ],
            "UnsafeMath": [
              4922
            ],
            "console": [
              32437
            ]
          },
          "id": 14780,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14655,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:47"
            },
            {
              "absolutePath": "contracts/pool/concentrated/ConcentratedLiquidityPool.sol",
              "file": "./ConcentratedLiquidityPool.sol",
              "id": 14656,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14780,
              "sourceUnit": 14654,
              "src": "72:41:47",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pool/PoolDeployer.sol",
              "file": "../PoolDeployer.sol",
              "id": 14657,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14780,
              "sourceUnit": 11888,
              "src": "114:29:47",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 14659,
                    "name": "PoolDeployer",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11887,
                    "src": "316:12:47"
                  },
                  "id": 14660,
                  "nodeType": "InheritanceSpecifier",
                  "src": "316:12:47"
                }
              ],
              "contractDependencies": [
                14653
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 14658,
                "nodeType": "StructuredDocumentation",
                "src": "145:126:47",
                "text": "@notice Contract for deploying Trident exchange Concentrated Liquidity Pool with configurations.\n @author Mudit Gupta."
              },
              "fullyImplemented": true,
              "id": 14779,
              "linearizedBaseContracts": [
                14779,
                11887
              ],
              "name": "ConcentratedLiquidityPoolFactory",
              "nameLocation": "280:32:47",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 14668,
                    "nodeType": "Block",
                    "src": "402:2:47",
                    "statements": []
                  },
                  "id": 14669,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 14665,
                          "name": "_masterDeployer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14662,
                          "src": "385:15:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 14666,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 14664,
                        "name": "PoolDeployer",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11887,
                        "src": "372:12:47"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "372:29:47"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14663,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14662,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "355:15:47",
                        "nodeType": "VariableDeclaration",
                        "scope": 14669,
                        "src": "347:23:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14661,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "347:7:47",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "346:25:47"
                  },
                  "returnParameters": {
                    "id": 14667,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "402:0:47"
                  },
                  "scope": 14779,
                  "src": "335:69:47",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14777,
                    "nodeType": "Block",
                    "src": "488:845:47",
                    "statements": [
                      {
                        "assignments": [
                          14677,
                          14679,
                          14681,
                          14683,
                          14685
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14677,
                            "mutability": "mutable",
                            "name": "tokenA",
                            "nameLocation": "507:6:47",
                            "nodeType": "VariableDeclaration",
                            "scope": 14777,
                            "src": "499:14:47",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 14676,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "499:7:47",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 14679,
                            "mutability": "mutable",
                            "name": "tokenB",
                            "nameLocation": "523:6:47",
                            "nodeType": "VariableDeclaration",
                            "scope": 14777,
                            "src": "515:14:47",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 14678,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "515:7:47",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 14681,
                            "mutability": "mutable",
                            "name": "swapFee",
                            "nameLocation": "538:7:47",
                            "nodeType": "VariableDeclaration",
                            "scope": 14777,
                            "src": "531:14:47",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            },
                            "typeName": {
                              "id": 14680,
                              "name": "uint24",
                              "nodeType": "ElementaryTypeName",
                              "src": "531:6:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint24",
                                "typeString": "uint24"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 14683,
                            "mutability": "mutable",
                            "name": "price",
                            "nameLocation": "555:5:47",
                            "nodeType": "VariableDeclaration",
                            "scope": 14777,
                            "src": "547:13:47",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            },
                            "typeName": {
                              "id": 14682,
                              "name": "uint160",
                              "nodeType": "ElementaryTypeName",
                              "src": "547:7:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 14685,
                            "mutability": "mutable",
                            "name": "tickSpacing",
                            "nameLocation": "569:11:47",
                            "nodeType": "VariableDeclaration",
                            "scope": 14777,
                            "src": "562:18:47",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            },
                            "typeName": {
                              "id": 14684,
                              "name": "uint24",
                              "nodeType": "ElementaryTypeName",
                              "src": "562:6:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint24",
                                "typeString": "uint24"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14701,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 14688,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14671,
                              "src": "608:11:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 14690,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "634:7:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 14689,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "634:7:47",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 14692,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "643:7:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 14691,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "643:7:47",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 14694,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "652:6:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint24_$",
                                    "typeString": "type(uint24)"
                                  },
                                  "typeName": {
                                    "id": 14693,
                                    "name": "uint24",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "652:6:47",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 14696,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "660:7:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 14695,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "660:7:47",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 14698,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "669:6:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint24_$",
                                    "typeString": "type(uint24)"
                                  },
                                  "typeName": {
                                    "id": 14697,
                                    "name": "uint24",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "669:6:47",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 14699,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "633:43:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint24_$_$_t_type$_t_uint160_$_$_t_type$_t_uint24_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint24),type(uint160),type(uint24))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint24_$_$_t_type$_t_uint160_$_$_t_type$_t_uint24_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint24),type(uint160),type(uint24))"
                              }
                            ],
                            "expression": {
                              "id": 14686,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "584:3:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 14687,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "584:10:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 14700,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "584:102:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_uint24_$_t_uint160_$_t_uint24_$",
                            "typeString": "tuple(address payable,address payable,uint24,uint160,uint24)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "498:188:47"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 14704,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 14702,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14677,
                            "src": "700:6:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 14703,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14679,
                            "src": "709:6:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "700:15:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14714,
                        "nodeType": "IfStatement",
                        "src": "696:81:47",
                        "trueBody": {
                          "id": 14713,
                          "nodeType": "Block",
                          "src": "717:60:47",
                          "statements": [
                            {
                              "expression": {
                                "id": 14711,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 14705,
                                      "name": "tokenA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14677,
                                      "src": "732:6:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 14706,
                                      "name": "tokenB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14679,
                                      "src": "740:6:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "id": 14707,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "731:16:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                    "typeString": "tuple(address,address)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "components": [
                                    {
                                      "id": 14708,
                                      "name": "tokenB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14679,
                                      "src": "751:6:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 14709,
                                      "name": "tokenA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14677,
                                      "src": "759:6:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "id": 14710,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "750:16:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                    "typeString": "tuple(address,address)"
                                  }
                                },
                                "src": "731:35:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 14712,
                              "nodeType": "ExpressionStatement",
                              "src": "731:35:47"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 14724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14715,
                            "name": "_deployData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14671,
                            "src": "825:11:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 14718,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14677,
                                "src": "850:6:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 14719,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14679,
                                "src": "858:6:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 14720,
                                "name": "swapFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14681,
                                "src": "866:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint24",
                                  "typeString": "uint24"
                                }
                              },
                              {
                                "id": 14721,
                                "name": "price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14683,
                                "src": "875:5:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              {
                                "id": 14722,
                                "name": "tickSpacing",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14685,
                                "src": "882:11:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint24",
                                  "typeString": "uint24"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint24",
                                  "typeString": "uint24"
                                },
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                {
                                  "typeIdentifier": "t_uint24",
                                  "typeString": "uint24"
                                }
                              ],
                              "expression": {
                                "id": 14716,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "839:3:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 14717,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "src": "839:10:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 14723,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "839:55:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "825:69:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 14725,
                        "nodeType": "ExpressionStatement",
                        "src": "825:69:47"
                      },
                      {
                        "assignments": [
                          14730
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14730,
                            "mutability": "mutable",
                            "name": "tokens",
                            "nameLocation": "922:6:47",
                            "nodeType": "VariableDeclaration",
                            "scope": 14777,
                            "src": "905:23:47",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 14728,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "905:7:47",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 14729,
                              "nodeType": "ArrayTypeName",
                              "src": "905:9:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14736,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "32",
                              "id": 14734,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "945:1:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "id": 14733,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "931:13:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 14731,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "935:7:47",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 14732,
                              "nodeType": "ArrayTypeName",
                              "src": "935:9:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 14735,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "931:16:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "905:42:47"
                      },
                      {
                        "expression": {
                          "id": 14741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 14737,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14730,
                              "src": "957:6:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 14739,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 14738,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "964:1:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "957:9:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14740,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14677,
                            "src": "969:6:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "957:18:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 14742,
                        "nodeType": "ExpressionStatement",
                        "src": "957:18:47"
                      },
                      {
                        "expression": {
                          "id": 14747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 14743,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14730,
                              "src": "985:6:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 14745,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 14744,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "992:1:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "985:9:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14746,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14679,
                            "src": "997:6:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "985:18:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 14748,
                        "nodeType": "ExpressionStatement",
                        "src": "985:18:47"
                      },
                      {
                        "assignments": [
                          14750
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14750,
                            "mutability": "mutable",
                            "name": "salt",
                            "nameLocation": "1141:4:47",
                            "nodeType": "VariableDeclaration",
                            "scope": 14777,
                            "src": "1133:12:47",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 14749,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1133:7:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14754,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 14752,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14671,
                              "src": "1158:11:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 14751,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "1148:9:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 14753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1148:22:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1133:37:47"
                      },
                      {
                        "expression": {
                          "id": 14769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14755,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14674,
                            "src": "1180:4:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 14763,
                                    "name": "_deployData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14671,
                                    "src": "1237:11:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 14765,
                                        "name": "masterDeployer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11681,
                                        "src": "1266:14:47",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 14764,
                                      "name": "IMasterDeployer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2356,
                                      "src": "1250:15:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                        "typeString": "type(contract IMasterDeployer)"
                                      }
                                    },
                                    "id": 14766,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1250:31:47",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                      "typeString": "contract IMasterDeployer"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                      "typeString": "contract IMasterDeployer"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                        "typeString": "contract IMasterDeployer"
                                      }
                                    ],
                                    "id": 14760,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "1195:29:47",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_creation_nonpayable$_t_bytes_memory_ptr_$_t_contract$_IMasterDeployer_$2356_$returns$_t_contract$_ConcentratedLiquidityPool_$14653_$",
                                      "typeString": "function (bytes memory,contract IMasterDeployer) returns (contract ConcentratedLiquidityPool)"
                                    },
                                    "typeName": {
                                      "id": 14759,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 14758,
                                        "name": "ConcentratedLiquidityPool",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 14653,
                                        "src": "1199:25:47"
                                      },
                                      "referencedDeclaration": 14653,
                                      "src": "1199:25:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                        "typeString": "contract ConcentratedLiquidityPool"
                                      }
                                    }
                                  },
                                  "id": 14762,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "names": [
                                    "salt"
                                  ],
                                  "nodeType": "FunctionCallOptions",
                                  "options": [
                                    {
                                      "id": 14761,
                                      "name": "salt",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14750,
                                      "src": "1231:4:47",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "src": "1195:41:47",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_creation_nonpayable$_t_bytes_memory_ptr_$_t_contract$_IMasterDeployer_$2356_$returns$_t_contract$_ConcentratedLiquidityPool_$14653_$salt",
                                    "typeString": "function (bytes memory,contract IMasterDeployer) returns (contract ConcentratedLiquidityPool)"
                                  }
                                },
                                "id": 14767,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1195:87:47",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                  "typeString": "contract ConcentratedLiquidityPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ConcentratedLiquidityPool_$14653",
                                  "typeString": "contract ConcentratedLiquidityPool"
                                }
                              ],
                              "id": 14757,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1187:7:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 14756,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1187:7:47",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 14768,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1187:96:47",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1180:103:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 14770,
                        "nodeType": "ExpressionStatement",
                        "src": "1180:103:47"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 14772,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14674,
                              "src": "1307:4:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 14773,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14730,
                              "src": "1313:6:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "id": 14774,
                              "name": "salt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14750,
                              "src": "1321:4:47",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 14771,
                            "name": "_registerPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11818,
                            "src": "1293:13:47",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address[] memory,bytes32)"
                            }
                          },
                          "id": 14775,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1293:33:47",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14776,
                        "nodeType": "ExpressionStatement",
                        "src": "1293:33:47"
                      }
                    ]
                  },
                  "functionSelector": "27c3cae1",
                  "id": 14778,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deployPool",
                  "nameLocation": "419:10:47",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14672,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14671,
                        "mutability": "mutable",
                        "name": "_deployData",
                        "nameLocation": "443:11:47",
                        "nodeType": "VariableDeclaration",
                        "scope": 14778,
                        "src": "430:24:47",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 14670,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "430:5:47",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "429:26:47"
                  },
                  "returnParameters": {
                    "id": 14675,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14674,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "482:4:47",
                        "nodeType": "VariableDeclaration",
                        "scope": 14778,
                        "src": "474:12:47",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14673,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "474:7:47",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "473:14:47"
                  },
                  "scope": 14779,
                  "src": "410:923:47",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 14780,
              "src": "271:1064:47",
              "usedErrors": [
                11694,
                11696,
                11698
              ]
            }
          ],
          "src": "46:1290:47"
        },
        "id": 47
      },
      "contracts/pool/concentrated/ConcentratedLiquidityPoolHelper.sol": {
        "ast": {
          "absolutePath": "contracts/pool/concentrated/ConcentratedLiquidityPoolHelper.sol",
          "exportedSymbols": {
            "ConcentratedLiquidityPoolHelper": [
              14879
            ],
            "IBentoBoxMinimal": [
              2253
            ],
            "IConcentratedLiquidityPool": [
              2753
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "TickMath": [
              4217
            ],
            "Ticks": [
              4906
            ],
            "console": [
              32437
            ]
          },
          "id": 14880,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14781,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:48"
            },
            {
              "absolutePath": "contracts/interfaces/concentratedPool/IConcentratedLiquidityPool.sol",
              "file": "../../interfaces/concentratedPool/IConcentratedLiquidityPool.sol",
              "id": 14782,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14880,
              "sourceUnit": 2754,
              "src": "72:74:48",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/concentratedPool/TickMath.sol",
              "file": "../../libraries/concentratedPool/TickMath.sol",
              "id": 14783,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14880,
              "sourceUnit": 4218,
              "src": "147:55:48",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/concentratedPool/Ticks.sol",
              "file": "../../libraries/concentratedPool/Ticks.sol",
              "id": 14784,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 14880,
              "sourceUnit": 4907,
              "src": "203:52:48",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 14785,
                "nodeType": "StructuredDocumentation",
                "src": "257:82:48",
                "text": "@notice Trident Concentrated Liquidity Pool periphery contract to read state."
              },
              "fullyImplemented": true,
              "id": 14879,
              "linearizedBaseContracts": [
                14879
              ],
              "name": "ConcentratedLiquidityPoolHelper",
              "nameLocation": "348:31:48",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "ConcentratedLiquidityPoolHelper.SimpleTick",
                  "id": 14790,
                  "members": [
                    {
                      "constant": false,
                      "id": 14787,
                      "mutability": "mutable",
                      "name": "index",
                      "nameLocation": "420:5:48",
                      "nodeType": "VariableDeclaration",
                      "scope": 14790,
                      "src": "414:11:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int24",
                        "typeString": "int24"
                      },
                      "typeName": {
                        "id": 14786,
                        "name": "int24",
                        "nodeType": "ElementaryTypeName",
                        "src": "414:5:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 14789,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nameLocation": "443:9:48",
                      "nodeType": "VariableDeclaration",
                      "scope": 14790,
                      "src": "435:17:48",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      },
                      "typeName": {
                        "id": 14788,
                        "name": "uint128",
                        "nodeType": "ElementaryTypeName",
                        "src": "435:7:48",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "SimpleTick",
                  "nameLocation": "393:10:48",
                  "nodeType": "StructDefinition",
                  "scope": 14879,
                  "src": "386:73:48",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14877,
                    "nodeType": "Block",
                    "src": "582:573:48",
                    "statements": [
                      {
                        "assignments": [
                          14806
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14806,
                            "mutability": "mutable",
                            "name": "ticks",
                            "nameLocation": "612:5:48",
                            "nodeType": "VariableDeclaration",
                            "scope": 14877,
                            "src": "592:25:48",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_SimpleTick_$14790_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct ConcentratedLiquidityPoolHelper.SimpleTick[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 14804,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 14803,
                                  "name": "SimpleTick",
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 14790,
                                  "src": "592:10:48"
                                },
                                "referencedDeclaration": 14790,
                                "src": "592:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SimpleTick_$14790_storage_ptr",
                                  "typeString": "struct ConcentratedLiquidityPoolHelper.SimpleTick"
                                }
                              },
                              "id": 14805,
                              "nodeType": "ArrayTypeName",
                              "src": "592:12:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_SimpleTick_$14790_storage_$dyn_storage_ptr",
                                "typeString": "struct ConcentratedLiquidityPoolHelper.SimpleTick[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14813,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 14811,
                              "name": "tickCount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14795,
                              "src": "637:9:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint24",
                                "typeString": "uint24"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint24",
                                "typeString": "uint24"
                              }
                            ],
                            "id": 14810,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "620:16:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_SimpleTick_$14790_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (struct ConcentratedLiquidityPoolHelper.SimpleTick memory[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 14808,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 14807,
                                  "name": "SimpleTick",
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 14790,
                                  "src": "624:10:48"
                                },
                                "referencedDeclaration": 14790,
                                "src": "624:10:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SimpleTick_$14790_storage_ptr",
                                  "typeString": "struct ConcentratedLiquidityPoolHelper.SimpleTick"
                                }
                              },
                              "id": 14809,
                              "nodeType": "ArrayTypeName",
                              "src": "624:12:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_SimpleTick_$14790_storage_$dyn_storage_ptr",
                                "typeString": "struct ConcentratedLiquidityPoolHelper.SimpleTick[]"
                              }
                            }
                          },
                          "id": 14812,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "620:27:48",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_SimpleTick_$14790_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct ConcentratedLiquidityPoolHelper.SimpleTick memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "592:55:48"
                      },
                      {
                        "assignments": [
                          14818
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14818,
                            "mutability": "mutable",
                            "name": "tick",
                            "nameLocation": "720:4:48",
                            "nodeType": "VariableDeclaration",
                            "scope": 14877,
                            "src": "702:22:48",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                              "typeString": "struct Ticks.Tick"
                            },
                            "typeName": {
                              "id": 14817,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 14816,
                                "name": "Ticks.Tick",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4235,
                                "src": "702:10:48"
                              },
                              "referencedDeclaration": 4235,
                              "src": "702:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                "typeString": "struct Ticks.Tick"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14819,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "702:22:48"
                      },
                      {
                        "assignments": [
                          14821
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14821,
                            "mutability": "mutable",
                            "name": "i",
                            "nameLocation": "741:1:48",
                            "nodeType": "VariableDeclaration",
                            "scope": 14877,
                            "src": "734:8:48",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint24",
                              "typeString": "uint24"
                            },
                            "typeName": {
                              "id": 14820,
                              "name": "uint24",
                              "nodeType": "ElementaryTypeName",
                              "src": "734:6:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint24",
                                "typeString": "uint24"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14822,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "734:8:48"
                      },
                      {
                        "assignments": [
                          14824
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14824,
                            "mutability": "mutable",
                            "name": "current",
                            "nameLocation": "758:7:48",
                            "nodeType": "VariableDeclaration",
                            "scope": 14877,
                            "src": "752:13:48",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            "typeName": {
                              "id": 14823,
                              "name": "int24",
                              "nodeType": "ElementaryTypeName",
                              "src": "752:5:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14827,
                        "initialValue": {
                          "expression": {
                            "id": 14825,
                            "name": "TickMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4217,
                            "src": "768:8:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                              "typeString": "type(library TickMath)"
                            }
                          },
                          "id": 14826,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "MIN_TICK",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3682,
                          "src": "768:17:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "752:33:48"
                      },
                      {
                        "body": {
                          "id": 14855,
                          "nodeType": "Block",
                          "src": "833:170:48",
                          "statements": [
                            {
                              "expression": {
                                "id": 14837,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14832,
                                  "name": "tick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14818,
                                  "src": "847:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                                    "typeString": "struct Ticks.Tick memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 14835,
                                      "name": "current",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14824,
                                      "src": "865:7:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    ],
                                    "expression": {
                                      "id": 14833,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14793,
                                      "src": "854:4:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                        "typeString": "contract IConcentratedLiquidityPool"
                                      }
                                    },
                                    "id": 14834,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "ticks",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2644,
                                    "src": "854:10:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_int24_$returns$_t_struct$_Tick_$4235_memory_ptr_$",
                                      "typeString": "function (int24) view external returns (struct Ticks.Tick memory)"
                                    }
                                  },
                                  "id": 14836,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "854:19:48",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                                    "typeString": "struct Ticks.Tick memory"
                                  }
                                },
                                "src": "847:26:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                                  "typeString": "struct Ticks.Tick memory"
                                }
                              },
                              "id": 14838,
                              "nodeType": "ExpressionStatement",
                              "src": "847:26:48"
                            },
                            {
                              "expression": {
                                "id": 14848,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 14839,
                                    "name": "ticks",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14806,
                                    "src": "887:5:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_SimpleTick_$14790_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct ConcentratedLiquidityPoolHelper.SimpleTick memory[] memory"
                                    }
                                  },
                                  "id": 14842,
                                  "indexExpression": {
                                    "id": 14841,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": false,
                                    "src": "893:3:48",
                                    "subExpression": {
                                      "id": 14840,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14821,
                                      "src": "893:1:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint24",
                                        "typeString": "uint24"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint24",
                                      "typeString": "uint24"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "887:10:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_SimpleTick_$14790_memory_ptr",
                                    "typeString": "struct ConcentratedLiquidityPoolHelper.SimpleTick memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 14844,
                                      "name": "current",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14824,
                                      "src": "919:7:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 14845,
                                        "name": "tick",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14818,
                                        "src": "939:4:48",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                                          "typeString": "struct Ticks.Tick memory"
                                        }
                                      },
                                      "id": 14846,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "liquidity",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4228,
                                      "src": "939:14:48",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      },
                                      {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    ],
                                    "id": 14843,
                                    "name": "SimpleTick",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14790,
                                    "src": "900:10:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_SimpleTick_$14790_storage_ptr_$",
                                      "typeString": "type(struct ConcentratedLiquidityPoolHelper.SimpleTick storage pointer)"
                                    }
                                  },
                                  "id": 14847,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [
                                    "index",
                                    "liquidity"
                                  ],
                                  "nodeType": "FunctionCall",
                                  "src": "900:55:48",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_SimpleTick_$14790_memory_ptr",
                                    "typeString": "struct ConcentratedLiquidityPoolHelper.SimpleTick memory"
                                  }
                                },
                                "src": "887:68:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SimpleTick_$14790_memory_ptr",
                                  "typeString": "struct ConcentratedLiquidityPoolHelper.SimpleTick memory"
                                }
                              },
                              "id": 14849,
                              "nodeType": "ExpressionStatement",
                              "src": "887:68:48"
                            },
                            {
                              "expression": {
                                "id": 14853,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 14850,
                                  "name": "current",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14824,
                                  "src": "969:7:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 14851,
                                    "name": "tick",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14818,
                                    "src": "979:4:48",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                                      "typeString": "struct Ticks.Tick memory"
                                    }
                                  },
                                  "id": 14852,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "nextTick",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4226,
                                  "src": "979:13:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int24",
                                    "typeString": "int24"
                                  }
                                },
                                "src": "969:23:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              "id": 14854,
                              "nodeType": "ExpressionStatement",
                              "src": "969:23:48"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "id": 14831,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 14828,
                            "name": "current",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14824,
                            "src": "803:7:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "id": 14829,
                              "name": "TickMath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4217,
                              "src": "814:8:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                "typeString": "type(library TickMath)"
                              }
                            },
                            "id": 14830,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "MAX_TICK",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3687,
                            "src": "814:17:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "src": "803:28:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 14856,
                        "nodeType": "WhileStatement",
                        "src": "796:207:48"
                      },
                      {
                        "expression": {
                          "id": 14862,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14857,
                            "name": "tick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14818,
                            "src": "1013:4:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                              "typeString": "struct Ticks.Tick memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 14860,
                                "name": "current",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14824,
                                "src": "1031:7:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              ],
                              "expression": {
                                "id": 14858,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14793,
                                "src": "1020:4:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                  "typeString": "contract IConcentratedLiquidityPool"
                                }
                              },
                              "id": 14859,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "ticks",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2644,
                              "src": "1020:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_int24_$returns$_t_struct$_Tick_$4235_memory_ptr_$",
                                "typeString": "function (int24) view external returns (struct Ticks.Tick memory)"
                              }
                            },
                            "id": 14861,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1020:19:48",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                              "typeString": "struct Ticks.Tick memory"
                            }
                          },
                          "src": "1013:26:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                            "typeString": "struct Ticks.Tick memory"
                          }
                        },
                        "id": 14863,
                        "nodeType": "ExpressionStatement",
                        "src": "1013:26:48"
                      },
                      {
                        "expression": {
                          "id": 14873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 14864,
                              "name": "ticks",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14806,
                              "src": "1049:5:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_SimpleTick_$14790_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct ConcentratedLiquidityPoolHelper.SimpleTick memory[] memory"
                              }
                            },
                            "id": 14866,
                            "indexExpression": {
                              "id": 14865,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14821,
                              "src": "1055:1:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint24",
                                "typeString": "uint24"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1049:8:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SimpleTick_$14790_memory_ptr",
                              "typeString": "struct ConcentratedLiquidityPoolHelper.SimpleTick memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 14868,
                                  "name": "TickMath",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4217,
                                  "src": "1079:8:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                    "typeString": "type(library TickMath)"
                                  }
                                },
                                "id": 14869,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "MAX_TICK",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3687,
                                "src": "1079:17:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "expression": {
                                  "id": 14870,
                                  "name": "tick",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14818,
                                  "src": "1109:4:48",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                                    "typeString": "struct Ticks.Tick memory"
                                  }
                                },
                                "id": 14871,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "liquidity",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4228,
                                "src": "1109:14:48",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "id": 14867,
                              "name": "SimpleTick",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14790,
                              "src": "1060:10:48",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_SimpleTick_$14790_storage_ptr_$",
                                "typeString": "type(struct ConcentratedLiquidityPoolHelper.SimpleTick storage pointer)"
                              }
                            },
                            "id": 14872,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "index",
                              "liquidity"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "1060:65:48",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SimpleTick_$14790_memory_ptr",
                              "typeString": "struct ConcentratedLiquidityPoolHelper.SimpleTick memory"
                            }
                          },
                          "src": "1049:76:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SimpleTick_$14790_memory_ptr",
                            "typeString": "struct ConcentratedLiquidityPoolHelper.SimpleTick memory"
                          }
                        },
                        "id": 14874,
                        "nodeType": "ExpressionStatement",
                        "src": "1049:76:48"
                      },
                      {
                        "expression": {
                          "id": 14875,
                          "name": "ticks",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 14806,
                          "src": "1143:5:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_SimpleTick_$14790_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct ConcentratedLiquidityPoolHelper.SimpleTick memory[] memory"
                          }
                        },
                        "functionReturnParameters": 14801,
                        "id": 14876,
                        "nodeType": "Return",
                        "src": "1136:12:48"
                      }
                    ]
                  },
                  "functionSelector": "f01a1b68",
                  "id": 14878,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTickState",
                  "nameLocation": "474:12:48",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14796,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14793,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "514:4:48",
                        "nodeType": "VariableDeclaration",
                        "scope": 14878,
                        "src": "487:31:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                          "typeString": "contract IConcentratedLiquidityPool"
                        },
                        "typeName": {
                          "id": 14792,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 14791,
                            "name": "IConcentratedLiquidityPool",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2753,
                            "src": "487:26:48"
                          },
                          "referencedDeclaration": 2753,
                          "src": "487:26:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                            "typeString": "contract IConcentratedLiquidityPool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14795,
                        "mutability": "mutable",
                        "name": "tickCount",
                        "nameLocation": "527:9:48",
                        "nodeType": "VariableDeclaration",
                        "scope": 14878,
                        "src": "520:16:48",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint24",
                          "typeString": "uint24"
                        },
                        "typeName": {
                          "id": 14794,
                          "name": "uint24",
                          "nodeType": "ElementaryTypeName",
                          "src": "520:6:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint24",
                            "typeString": "uint24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "486:51:48"
                  },
                  "returnParameters": {
                    "id": 14801,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14800,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 14878,
                        "src": "561:19:48",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_SimpleTick_$14790_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct ConcentratedLiquidityPoolHelper.SimpleTick[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 14798,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 14797,
                              "name": "SimpleTick",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 14790,
                              "src": "561:10:48"
                            },
                            "referencedDeclaration": 14790,
                            "src": "561:10:48",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SimpleTick_$14790_storage_ptr",
                              "typeString": "struct ConcentratedLiquidityPoolHelper.SimpleTick"
                            }
                          },
                          "id": 14799,
                          "nodeType": "ArrayTypeName",
                          "src": "561:12:48",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_SimpleTick_$14790_storage_$dyn_storage_ptr",
                            "typeString": "struct ConcentratedLiquidityPoolHelper.SimpleTick[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "560:21:48"
                  },
                  "scope": 14879,
                  "src": "465:690:48",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 14880,
              "src": "339:818:48",
              "usedErrors": []
            }
          ],
          "src": "46:1112:48"
        },
        "id": 48
      },
      "contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol": {
        "ast": {
          "absolutePath": "contracts/pool/concentrated/ConcentratedLiquidityPoolManager.sol",
          "exportedSymbols": {
            "ConcentratedLiquidityPoolManager": [
              15577
            ],
            "DyDxMath": [
              3409
            ],
            "FullMath": [
              3590
            ],
            "IBentoBoxMinimal": [
              2253
            ],
            "IConcentratedLiquidityPool": [
              2753
            ],
            "IConcentratedLiquidityPoolManager": [
              2796
            ],
            "IConcentratedLiquidityPoolManagerStruct": [
              2776
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "IPositionManager": [
              2819
            ],
            "ITridentNFT": [
              2493
            ],
            "ITridentRouter": [
              2573
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "TickMath": [
              4217
            ],
            "Ticks": [
              4906
            ],
            "TridentBatchable": [
              24150
            ],
            "TridentNFT": [
              17166
            ],
            "UnsafeMath": [
              4922
            ],
            "console": [
              32437
            ]
          },
          "id": 15578,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 14881,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:49"
            },
            {
              "absolutePath": "contracts/interfaces/concentratedPool/IConcentratedLiquidityPoolManager.sol",
              "file": "../../interfaces/concentratedPool/IConcentratedLiquidityPoolManager.sol",
              "id": 14882,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15578,
              "sourceUnit": 2797,
              "src": "72:81:49",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/concentratedPool/IPositionManager.sol",
              "file": "../../interfaces/concentratedPool/IPositionManager.sol",
              "id": 14883,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15578,
              "sourceUnit": 2820,
              "src": "154:64:49",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IMasterDeployer.sol",
              "file": "../../interfaces/IMasterDeployer.sol",
              "id": 14884,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15578,
              "sourceUnit": 2357,
              "src": "219:46:49",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IBentoBoxMinimal.sol",
              "file": "../../interfaces/IBentoBoxMinimal.sol",
              "id": 14885,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15578,
              "sourceUnit": 2254,
              "src": "266:47:49",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ITridentRouter.sol",
              "file": "../../interfaces/ITridentRouter.sol",
              "id": 14886,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15578,
              "sourceUnit": 2574,
              "src": "314:45:49",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/concentratedPool/FullMath.sol",
              "file": "../../libraries/concentratedPool/FullMath.sol",
              "id": 14887,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15578,
              "sourceUnit": 3591,
              "src": "360:55:49",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/concentratedPool/TickMath.sol",
              "file": "../../libraries/concentratedPool/TickMath.sol",
              "id": 14888,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15578,
              "sourceUnit": 4218,
              "src": "416:55:49",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/concentratedPool/DyDxMath.sol",
              "file": "../../libraries/concentratedPool/DyDxMath.sol",
              "id": 14889,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15578,
              "sourceUnit": 3410,
              "src": "472:55:49",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/utils/TridentBatchable.sol",
              "file": "../../utils/TridentBatchable.sol",
              "id": 14890,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15578,
              "sourceUnit": 24151,
              "src": "528:42:49",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pool/concentrated/TridentNFT.sol",
              "file": "./TridentNFT.sol",
              "id": 14891,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 15578,
              "sourceUnit": 17167,
              "src": "571:26:49",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 14893,
                    "name": "IPositionManager",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2819,
                    "src": "771:16:49"
                  },
                  "id": 14894,
                  "nodeType": "InheritanceSpecifier",
                  "src": "771:16:49"
                },
                {
                  "baseName": {
                    "id": 14895,
                    "name": "IConcentratedLiquidityPoolManagerStruct",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2776,
                    "src": "789:39:49"
                  },
                  "id": 14896,
                  "nodeType": "InheritanceSpecifier",
                  "src": "789:39:49"
                },
                {
                  "baseName": {
                    "id": 14897,
                    "name": "TridentNFT",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 17166,
                    "src": "830:10:49"
                  },
                  "id": 14898,
                  "nodeType": "InheritanceSpecifier",
                  "src": "830:10:49"
                },
                {
                  "baseName": {
                    "id": 14899,
                    "name": "TridentBatchable",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 24150,
                    "src": "842:16:49"
                  },
                  "id": 14900,
                  "nodeType": "InheritanceSpecifier",
                  "src": "842:16:49"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 14892,
                "nodeType": "StructuredDocumentation",
                "src": "599:127:49",
                "text": "@notice Trident Concentrated Liquidity Pool periphery contract that combines non-fungible position management and staking."
              },
              "fullyImplemented": true,
              "id": 15577,
              "linearizedBaseContracts": [
                15577,
                24150,
                17166,
                2776,
                2819
              ],
              "name": "ConcentratedLiquidityPoolManager",
              "nameLocation": "735:32:49",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 14910,
                  "name": "IncreaseLiquidity",
                  "nameLocation": "871:17:49",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14909,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14902,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "905:4:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 14910,
                        "src": "889:20:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14901,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "889:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14904,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "927:5:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 14910,
                        "src": "911:21:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14903,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "911:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14906,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "positionId",
                        "nameLocation": "950:10:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 14910,
                        "src": "934:26:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14905,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "934:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14908,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "970:9:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 14910,
                        "src": "962:17:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 14907,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "962:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "888:92:49"
                  },
                  "src": "865:116:49"
                },
                {
                  "anonymous": false,
                  "id": 14920,
                  "name": "DecreaseLiquidity",
                  "nameLocation": "992:17:49",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 14919,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14912,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "1026:4:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 14920,
                        "src": "1010:20:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14911,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1010:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14914,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "1048:5:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 14920,
                        "src": "1032:21:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14913,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1032:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14916,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "positionId",
                        "nameLocation": "1071:10:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 14920,
                        "src": "1055:26:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14915,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1055:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14918,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "1091:9:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 14920,
                        "src": "1083:17:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 14917,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1083:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1009:92:49"
                  },
                  "src": "986:116:49"
                },
                {
                  "constant": false,
                  "functionSelector": "4da31827",
                  "id": 14923,
                  "mutability": "immutable",
                  "name": "bento",
                  "nameLocation": "1142:5:49",
                  "nodeType": "VariableDeclaration",
                  "scope": 15577,
                  "src": "1108:39:49",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                    "typeString": "contract IBentoBoxMinimal"
                  },
                  "typeName": {
                    "id": 14922,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 14921,
                      "name": "IBentoBoxMinimal",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2253,
                      "src": "1108:16:49"
                    },
                    "referencedDeclaration": 2253,
                    "src": "1108:16:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                      "typeString": "contract IBentoBoxMinimal"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "cf58879a",
                  "id": 14926,
                  "mutability": "immutable",
                  "name": "masterDeployer",
                  "nameLocation": "1186:14:49",
                  "nodeType": "VariableDeclaration",
                  "scope": 15577,
                  "src": "1153:47:49",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                    "typeString": "contract IMasterDeployer"
                  },
                  "typeName": {
                    "id": 14925,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 14924,
                      "name": "IMasterDeployer",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2356,
                      "src": "1153:15:49"
                    },
                    "referencedDeclaration": 2356,
                    "src": "1153:15:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                      "typeString": "contract IMasterDeployer"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "99fbab88",
                  "id": 14931,
                  "mutability": "mutable",
                  "name": "positions",
                  "nameLocation": "1243:9:49",
                  "nodeType": "VariableDeclaration",
                  "scope": 15577,
                  "src": "1207:45:49",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Position_$2775_storage_$",
                    "typeString": "mapping(uint256 => struct IConcentratedLiquidityPoolManagerStruct.Position)"
                  },
                  "typeName": {
                    "id": 14930,
                    "keyType": {
                      "id": 14927,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1215:7:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1207:28:49",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Position_$2775_storage_$",
                      "typeString": "mapping(uint256 => struct IConcentratedLiquidityPoolManagerStruct.Position)"
                    },
                    "valueType": {
                      "id": 14929,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 14928,
                        "name": "Position",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2775,
                        "src": "1226:8:49"
                      },
                      "referencedDeclaration": 2775,
                      "src": "1226:8:49",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                        "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 14969,
                    "nodeType": "Block",
                    "src": "1296:246:49",
                    "statements": [
                      {
                        "expression": {
                          "id": 14940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14936,
                            "name": "masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14926,
                            "src": "1306:14:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                              "typeString": "contract IMasterDeployer"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 14938,
                                "name": "_masterDeployer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 14933,
                                "src": "1339:15:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 14937,
                              "name": "IMasterDeployer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2356,
                              "src": "1323:15:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                "typeString": "type(contract IMasterDeployer)"
                              }
                            },
                            "id": 14939,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1323:32:49",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                              "typeString": "contract IMasterDeployer"
                            }
                          },
                          "src": "1306:49:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                            "typeString": "contract IMasterDeployer"
                          }
                        },
                        "id": 14941,
                        "nodeType": "ExpressionStatement",
                        "src": "1306:49:49"
                      },
                      {
                        "assignments": [
                          14944
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 14944,
                            "mutability": "mutable",
                            "name": "_bento",
                            "nameLocation": "1382:6:49",
                            "nodeType": "VariableDeclaration",
                            "scope": 14969,
                            "src": "1365:23:49",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            },
                            "typeName": {
                              "id": 14943,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 14942,
                                "name": "IBentoBoxMinimal",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2253,
                                "src": "1365:16:49"
                              },
                              "referencedDeclaration": 2253,
                              "src": "1365:16:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                "typeString": "contract IBentoBoxMinimal"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 14952,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 14947,
                                      "name": "_masterDeployer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14933,
                                      "src": "1424:15:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 14946,
                                    "name": "IMasterDeployer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2356,
                                    "src": "1408:15:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                      "typeString": "type(contract IMasterDeployer)"
                                    }
                                  },
                                  "id": 14948,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1408:32:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                    "typeString": "contract IMasterDeployer"
                                  }
                                },
                                "id": 14949,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "bento",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2334,
                                "src": "1408:38:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 14950,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1408:40:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 14945,
                            "name": "IBentoBoxMinimal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2253,
                            "src": "1391:16:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IBentoBoxMinimal_$2253_$",
                              "typeString": "type(contract IBentoBoxMinimal)"
                            }
                          },
                          "id": 14951,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1391:58:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1365:84:49"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 14953,
                              "name": "_bento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14944,
                              "src": "1459:6:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                "typeString": "contract IBentoBoxMinimal"
                              }
                            },
                            "id": 14955,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "registerProtocol",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2179,
                            "src": "1459:23:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                              "typeString": "function () external"
                            }
                          },
                          "id": 14956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1459:25:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14957,
                        "nodeType": "ExpressionStatement",
                        "src": "1459:25:49"
                      },
                      {
                        "expression": {
                          "id": 14960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 14958,
                            "name": "bento",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14923,
                            "src": "1494:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 14959,
                            "name": "_bento",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14944,
                            "src": "1502:6:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "src": "1494:14:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        "id": 14961,
                        "nodeType": "ExpressionStatement",
                        "src": "1494:14:49"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 14965,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1532:1:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 14964,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1524:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 14963,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1524:7:49",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 14966,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1524:10:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 14962,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17096,
                            "src": "1518:5:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 14967,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1518:17:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 14968,
                        "nodeType": "ExpressionStatement",
                        "src": "1518:17:49"
                      }
                    ]
                  },
                  "id": 14970,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 14934,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14933,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "1279:15:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 14970,
                        "src": "1271:23:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14932,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1271:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1270:25:49"
                  },
                  "returnParameters": {
                    "id": 14935,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1296:0:49"
                  },
                  "scope": 15577,
                  "src": "1259:283:49",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2818
                  ],
                  "body": {
                    "id": 15112,
                    "nodeType": "Block",
                    "src": "1821:1321:49",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 14995,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "1877:3:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 14996,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "1877:10:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 14992,
                                      "name": "masterDeployer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14926,
                                      "src": "1855:14:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                        "typeString": "contract IMasterDeployer"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                        "typeString": "contract IMasterDeployer"
                                      }
                                    ],
                                    "id": 14991,
                                    "name": "IMasterDeployer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2356,
                                    "src": "1839:15:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                      "typeString": "type(contract IMasterDeployer)"
                                    }
                                  },
                                  "id": 14993,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1839:31:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                    "typeString": "contract IMasterDeployer"
                                  }
                                },
                                "id": 14994,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "pools",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2346,
                                "src": "1839:37:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                                  "typeString": "function (address) view external returns (bool)"
                                }
                              },
                              "id": 14997,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1839:49:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e4f545f504f4f4c",
                              "id": 14998,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1890:10:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9c8054bffc0758b4ef58b6bf591b4f1d69207559757d350a1dbc6e95379c7a18",
                                "typeString": "literal_string \"NOT_POOL\""
                              },
                              "value": "NOT_POOL"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9c8054bffc0758b4ef58b6bf591b4f1d69207559757d350a1dbc6e95379c7a18",
                                "typeString": "literal_string \"NOT_POOL\""
                              }
                            ],
                            "id": 14990,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1831:7:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 14999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1831:70:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15000,
                        "nodeType": "ExpressionStatement",
                        "src": "1831:70:49"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 15003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 15001,
                            "name": "_positionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14984,
                            "src": "1916:11:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 15002,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1931:1:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1916:16:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            },
                            "id": 15044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 15042,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14978,
                              "src": "2517:6:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 15043,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2526:1:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "2517:10:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 15110,
                          "nodeType": "IfStatement",
                          "src": "2513:623:49",
                          "trueBody": {
                            "id": 15109,
                            "nodeType": "Block",
                            "src": "2529:607:49",
                            "statements": [
                              {
                                "assignments": [
                                  15047
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 15047,
                                    "mutability": "mutable",
                                    "name": "position",
                                    "nameLocation": "2618:8:49",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 15109,
                                    "src": "2601:25:49",
                                    "stateVariable": false,
                                    "storageLocation": "storage",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                      "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position"
                                    },
                                    "typeName": {
                                      "id": 15046,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 15045,
                                        "name": "Position",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 2775,
                                        "src": "2601:8:49"
                                      },
                                      "referencedDeclaration": 2775,
                                      "src": "2601:8:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                        "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 15051,
                                "initialValue": {
                                  "baseExpression": {
                                    "id": 15048,
                                    "name": "positions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14931,
                                    "src": "2629:9:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Position_$2775_storage_$",
                                      "typeString": "mapping(uint256 => struct IConcentratedLiquidityPoolManagerStruct.Position storage ref)"
                                    }
                                  },
                                  "id": 15050,
                                  "indexExpression": {
                                    "id": 15049,
                                    "name": "_positionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14984,
                                    "src": "2639:11:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2629:22:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Position_$2775_storage",
                                    "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage ref"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "2601:50:49"
                              },
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 15055,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 15053,
                                        "name": "_positionId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 14984,
                                        "src": "2673:11:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "id": 15054,
                                        "name": "totalSupply",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16489,
                                        "src": "2687:11:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "2673:25:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "hexValue": "494e56414c49445f504f534954494f4e",
                                      "id": 15056,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2700:18:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_5f394f9c228ccba9127c56502b41d7c2b5ccd3e02de4b5a7321f8499ea750e52",
                                        "typeString": "literal_string \"INVALID_POSITION\""
                                      },
                                      "value": "INVALID_POSITION"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_5f394f9c228ccba9127c56502b41d7c2b5ccd3e02de4b5a7321f8499ea750e52",
                                        "typeString": "literal_string \"INVALID_POSITION\""
                                      }
                                    ],
                                    "id": 15052,
                                    "name": "require",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -18,
                                      -18
                                    ],
                                    "referencedDeclaration": -18,
                                    "src": "2665:7:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (bool,string memory) pure"
                                    }
                                  },
                                  "id": 15057,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2665:54:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 15058,
                                "nodeType": "ExpressionStatement",
                                "src": "2665:54:49"
                              },
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 15068,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        },
                                        "id": 15063,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 15060,
                                            "name": "position",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 15047,
                                            "src": "2741:8:49",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                              "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                            }
                                          },
                                          "id": 15061,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "lower",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2765,
                                          "src": "2741:14:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "id": 15062,
                                          "name": "lower",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14974,
                                          "src": "2759:5:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        },
                                        "src": "2741:23:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&&",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_int24",
                                          "typeString": "int24"
                                        },
                                        "id": 15067,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 15064,
                                            "name": "position",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 15047,
                                            "src": "2768:8:49",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                              "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                            }
                                          },
                                          "id": 15065,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "upper",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2767,
                                          "src": "2768:14:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "id": 15066,
                                          "name": "upper",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14976,
                                          "src": "2786:5:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int24",
                                            "typeString": "int24"
                                          }
                                        },
                                        "src": "2768:23:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "2741:50:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "hexValue": "52414e47455f4d49535f4d41544348",
                                      "id": 15069,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2793:17:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_2ba0a472d889b88ae8a055d178e3d84efcf5a713d16aa7a9879db3c5b3701a97",
                                        "typeString": "literal_string \"RANGE_MIS_MATCH\""
                                      },
                                      "value": "RANGE_MIS_MATCH"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_2ba0a472d889b88ae8a055d178e3d84efcf5a713d16aa7a9879db3c5b3701a97",
                                        "typeString": "literal_string \"RANGE_MIS_MATCH\""
                                      }
                                    ],
                                    "id": 15059,
                                    "name": "require",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -18,
                                      -18
                                    ],
                                    "referencedDeclaration": -18,
                                    "src": "2733:7:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (bool,string memory) pure"
                                    }
                                  },
                                  "id": 15070,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2733:78:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 15071,
                                "nodeType": "ExpressionStatement",
                                "src": "2733:78:49"
                              },
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "id": 15081,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 15076,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 15073,
                                            "name": "position",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 15047,
                                            "src": "2833:8:49",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                              "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                            }
                                          },
                                          "id": 15074,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "feeGrowthInside0",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2771,
                                          "src": "2833:25:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "id": 15075,
                                          "name": "feeGrowthInside0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14980,
                                          "src": "2862:16:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "2833:45:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "&&",
                                      "rightExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 15080,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 15077,
                                            "name": "position",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 15047,
                                            "src": "2882:8:49",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                              "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                            }
                                          },
                                          "id": 15078,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "feeGrowthInside1",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2774,
                                          "src": "2882:25:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "id": 15079,
                                          "name": "feeGrowthInside1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 14982,
                                          "src": "2911:16:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "2882:45:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "2833:94:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "hexValue": "554e434c41494d4544",
                                      "id": 15082,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2929:11:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_3913df11fc3ef68f58caac321c143116ca9eca562aa90d85e5408b7f67e66fc2",
                                        "typeString": "literal_string \"UNCLAIMED\""
                                      },
                                      "value": "UNCLAIMED"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_3913df11fc3ef68f58caac321c143116ca9eca562aa90d85e5408b7f67e66fc2",
                                        "typeString": "literal_string \"UNCLAIMED\""
                                      }
                                    ],
                                    "id": 15072,
                                    "name": "require",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -18,
                                      -18
                                    ],
                                    "referencedDeclaration": -18,
                                    "src": "2825:7:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (bool,string memory) pure"
                                    }
                                  },
                                  "id": 15083,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2825:116:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 15084,
                                "nodeType": "ExpressionStatement",
                                "src": "2825:116:49"
                              },
                              {
                                "expression": {
                                  "id": 15089,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "expression": {
                                      "id": 15085,
                                      "name": "position",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15047,
                                      "src": "2955:8:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                        "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                      }
                                    },
                                    "id": 15087,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "liquidity",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2763,
                                    "src": "2955:18:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "+=",
                                  "rightHandSide": {
                                    "id": 15088,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14978,
                                    "src": "2977:6:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "src": "2955:28:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "id": 15090,
                                "nodeType": "ExpressionStatement",
                                "src": "2955:28:49"
                              },
                              {
                                "expression": {
                                  "id": 15099,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "expression": {
                                      "id": 15091,
                                      "name": "position",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15047,
                                      "src": "2997:8:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                        "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                      }
                                    },
                                    "id": 15093,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "memberName": "latestAddition",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2769,
                                    "src": "2997:23:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 15096,
                                          "name": "block",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -4,
                                          "src": "3030:5:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_block",
                                            "typeString": "block"
                                          }
                                        },
                                        "id": 15097,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "timestamp",
                                        "nodeType": "MemberAccess",
                                        "src": "3030:15:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 15095,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3023:6:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint32_$",
                                        "typeString": "type(uint32)"
                                      },
                                      "typeName": {
                                        "id": 15094,
                                        "name": "uint32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3023:6:49",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 15098,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3023:23:49",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "src": "2997:49:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "id": 15100,
                                "nodeType": "ExpressionStatement",
                                "src": "2997:49:49"
                              },
                              {
                                "eventCall": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 15102,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "3083:3:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 15103,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "3083:10:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 15104,
                                      "name": "recipient",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14972,
                                      "src": "3095:9:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 15105,
                                      "name": "positionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14988,
                                      "src": "3106:10:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 15106,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14978,
                                      "src": "3118:6:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    ],
                                    "id": 15101,
                                    "name": "IncreaseLiquidity",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14910,
                                    "src": "3065:17:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint128_$returns$__$",
                                      "typeString": "function (address,address,uint256,uint128)"
                                    }
                                  },
                                  "id": 15107,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3065:60:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 15108,
                                "nodeType": "EmitStatement",
                                "src": "3060:65:49"
                              }
                            ]
                          }
                        },
                        "id": 15111,
                        "nodeType": "IfStatement",
                        "src": "1912:1224:49",
                        "trueBody": {
                          "id": 15041,
                          "nodeType": "Block",
                          "src": "1934:573:49",
                          "statements": [
                            {
                              "expression": {
                                "id": 15023,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 15004,
                                    "name": "positions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14931,
                                    "src": "1982:9:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Position_$2775_storage_$",
                                      "typeString": "mapping(uint256 => struct IConcentratedLiquidityPoolManagerStruct.Position storage ref)"
                                    }
                                  },
                                  "id": 15006,
                                  "indexExpression": {
                                    "id": 15005,
                                    "name": "totalSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16489,
                                    "src": "1992:11:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1982:22:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Position_$2775_storage",
                                    "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 15009,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "2067:3:49",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 15010,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "src": "2067:10:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 15008,
                                        "name": "IConcentratedLiquidityPool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2753,
                                        "src": "2040:26:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IConcentratedLiquidityPool_$2753_$",
                                          "typeString": "type(contract IConcentratedLiquidityPool)"
                                        }
                                      },
                                      "id": 15011,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2040:38:49",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                        "typeString": "contract IConcentratedLiquidityPool"
                                      }
                                    },
                                    {
                                      "id": 15012,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14978,
                                      "src": "2107:6:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    {
                                      "id": 15013,
                                      "name": "lower",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14974,
                                      "src": "2138:5:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    {
                                      "id": 15014,
                                      "name": "upper",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14976,
                                      "src": "2168:5:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 15017,
                                            "name": "block",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -4,
                                            "src": "2214:5:49",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_block",
                                              "typeString": "block"
                                            }
                                          },
                                          "id": 15018,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "timestamp",
                                          "nodeType": "MemberAccess",
                                          "src": "2214:15:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 15016,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "2207:6:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint32_$",
                                          "typeString": "type(uint32)"
                                        },
                                        "typeName": {
                                          "id": 15015,
                                          "name": "uint32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2207:6:49",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 15019,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2207:23:49",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    {
                                      "id": 15020,
                                      "name": "feeGrowthInside0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14980,
                                      "src": "2266:16:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 15021,
                                      "name": "feeGrowthInside1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 14982,
                                      "src": "2318:16:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                        "typeString": "contract IConcentratedLiquidityPool"
                                      },
                                      {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      },
                                      {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      },
                                      {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      },
                                      {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 15007,
                                    "name": "Position",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2775,
                                    "src": "2007:8:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_Position_$2775_storage_ptr_$",
                                      "typeString": "type(struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer)"
                                    }
                                  },
                                  "id": 15022,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [
                                    "pool",
                                    "liquidity",
                                    "lower",
                                    "upper",
                                    "latestAddition",
                                    "feeGrowthInside0",
                                    "feeGrowthInside1"
                                  ],
                                  "nodeType": "FunctionCall",
                                  "src": "2007:342:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                                    "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                                  }
                                },
                                "src": "1982:367:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Position_$2775_storage",
                                  "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage ref"
                                }
                              },
                              "id": 15024,
                              "nodeType": "ExpressionStatement",
                              "src": "1982:367:49"
                            },
                            {
                              "expression": {
                                "id": 15027,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 15025,
                                  "name": "positionId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14988,
                                  "src": "2363:10:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 15026,
                                  "name": "totalSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16489,
                                  "src": "2376:11:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2363:24:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 15028,
                              "nodeType": "ExpressionStatement",
                              "src": "2363:24:49"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 15030,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14972,
                                    "src": "2407:9:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 15029,
                                  "name": "_mint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17096,
                                  "src": "2401:5:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 15031,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2401:16:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 15032,
                              "nodeType": "ExpressionStatement",
                              "src": "2401:16:49"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 15034,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "2454:3:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 15035,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "2454:10:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 15036,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14972,
                                    "src": "2466:9:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 15037,
                                    "name": "positionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14988,
                                    "src": "2477:10:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 15038,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14978,
                                    "src": "2489:6:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  ],
                                  "id": 15033,
                                  "name": "IncreaseLiquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 14910,
                                  "src": "2436:17:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint128_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint128)"
                                  }
                                },
                                "id": 15039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2436:60:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 15040,
                              "nodeType": "EmitStatement",
                              "src": "2431:65:49"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "functionSelector": "6d59ebe1",
                  "id": 15113,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "positionMintCallback",
                  "nameLocation": "1557:20:49",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 14986,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1783:8:49"
                  },
                  "parameters": {
                    "id": 14985,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14972,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "1595:9:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15113,
                        "src": "1587:17:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14971,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1587:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14974,
                        "mutability": "mutable",
                        "name": "lower",
                        "nameLocation": "1620:5:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15113,
                        "src": "1614:11:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 14973,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "1614:5:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14976,
                        "mutability": "mutable",
                        "name": "upper",
                        "nameLocation": "1641:5:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15113,
                        "src": "1635:11:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 14975,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "1635:5:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14978,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1664:6:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15113,
                        "src": "1656:14:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 14977,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "1656:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14980,
                        "mutability": "mutable",
                        "name": "feeGrowthInside0",
                        "nameLocation": "1688:16:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15113,
                        "src": "1680:24:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14979,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1680:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14982,
                        "mutability": "mutable",
                        "name": "feeGrowthInside1",
                        "nameLocation": "1722:16:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15113,
                        "src": "1714:24:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14981,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1714:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 14984,
                        "mutability": "mutable",
                        "name": "_positionId",
                        "nameLocation": "1756:11:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15113,
                        "src": "1748:19:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14983,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1748:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1577:196:49"
                  },
                  "returnParameters": {
                    "id": 14989,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 14988,
                        "mutability": "mutable",
                        "name": "positionId",
                        "nameLocation": "1809:10:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15113,
                        "src": "1801:18:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 14987,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1801:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1800:20:49"
                  },
                  "scope": 15577,
                  "src": "1548:1594:49",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15313,
                    "nodeType": "Block",
                    "src": "3292:1581:49",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 15130,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 15125,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "3310:3:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 15126,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "3310:10:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "baseExpression": {
                                  "id": 15127,
                                  "name": "ownerOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16499,
                                  "src": "3324:7:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 15129,
                                "indexExpression": {
                                  "id": 15128,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15115,
                                  "src": "3332:7:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3324:16:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3310:30:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e4f545f49445f4f574e4552",
                              "id": 15131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3342:14:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4192981dee7e8bfb48280ce8c787f48b721f216d4db7f6a4070c234e0356cb15",
                                "typeString": "literal_string \"NOT_ID_OWNER\""
                              },
                              "value": "NOT_ID_OWNER"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4192981dee7e8bfb48280ce8c787f48b721f216d4db7f6a4070c234e0356cb15",
                                "typeString": "literal_string \"NOT_ID_OWNER\""
                              }
                            ],
                            "id": 15124,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3302:7:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3302:55:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15133,
                        "nodeType": "ExpressionStatement",
                        "src": "3302:55:49"
                      },
                      {
                        "assignments": [
                          15136
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15136,
                            "mutability": "mutable",
                            "name": "position",
                            "nameLocation": "3384:8:49",
                            "nodeType": "VariableDeclaration",
                            "scope": 15313,
                            "src": "3367:25:49",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                              "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position"
                            },
                            "typeName": {
                              "id": 15135,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 15134,
                                "name": "Position",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2775,
                                "src": "3367:8:49"
                              },
                              "referencedDeclaration": 2775,
                              "src": "3367:8:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15140,
                        "initialValue": {
                          "baseExpression": {
                            "id": 15137,
                            "name": "positions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14931,
                            "src": "3395:9:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Position_$2775_storage_$",
                              "typeString": "mapping(uint256 => struct IConcentratedLiquidityPoolManagerStruct.Position storage ref)"
                            }
                          },
                          "id": 15139,
                          "indexExpression": {
                            "id": 15138,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15115,
                            "src": "3405:7:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3395:18:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Position_$2775_storage",
                            "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3367:46:49"
                      },
                      {
                        "assignments": [
                          15146
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15146,
                            "mutability": "mutable",
                            "name": "withdrawAmounts",
                            "nameLocation": "3451:15:49",
                            "nodeType": "VariableDeclaration",
                            "scope": 15313,
                            "src": "3424:42:49",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct IPool.TokenAmount[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 15144,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 15143,
                                  "name": "IPool.TokenAmount",
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 2449,
                                  "src": "3424:17:49"
                                },
                                "referencedDeclaration": 2449,
                                "src": "3424:17:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                                  "typeString": "struct IPool.TokenAmount"
                                }
                              },
                              "id": 15145,
                              "nodeType": "ArrayTypeName",
                              "src": "3424:19:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                                "typeString": "struct IPool.TokenAmount[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15147,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3424:42:49"
                      },
                      {
                        "assignments": [
                          15153
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15153,
                            "mutability": "mutable",
                            "name": "feeAmounts",
                            "nameLocation": "3503:10:49",
                            "nodeType": "VariableDeclaration",
                            "scope": 15313,
                            "src": "3476:37:49",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct IPool.TokenAmount[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 15151,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 15150,
                                  "name": "IPool.TokenAmount",
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 2449,
                                  "src": "3476:17:49"
                                },
                                "referencedDeclaration": 2449,
                                "src": "3476:17:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                                  "typeString": "struct IPool.TokenAmount"
                                }
                              },
                              "id": 15152,
                              "nodeType": "ArrayTypeName",
                              "src": "3476:19:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                                "typeString": "struct IPool.TokenAmount[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15154,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3476:37:49"
                      },
                      {
                        "assignments": [
                          15156
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15156,
                            "mutability": "mutable",
                            "name": "oldLiquidity",
                            "nameLocation": "3531:12:49",
                            "nodeType": "VariableDeclaration",
                            "scope": 15313,
                            "src": "3523:20:49",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15155,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3523:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15157,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3523:20:49"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          },
                          "id": 15161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 15158,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15117,
                            "src": "3558:6:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 15159,
                              "name": "position",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15136,
                              "src": "3567:8:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                              }
                            },
                            "id": 15160,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "liquidity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2763,
                            "src": "3567:18:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "3558:27:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 15235,
                          "nodeType": "Block",
                          "src": "4026:339:49",
                          "statements": [
                            {
                              "expression": {
                                "id": 15224,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 15205,
                                      "name": "withdrawAmounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15146,
                                      "src": "4041:15:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct IPool.TokenAmount memory[] memory"
                                      }
                                    },
                                    {
                                      "id": 15206,
                                      "name": "feeAmounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15153,
                                      "src": "4058:10:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct IPool.TokenAmount memory[] memory"
                                      }
                                    },
                                    {
                                      "id": 15207,
                                      "name": "oldLiquidity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15156,
                                      "src": "4070:12:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 15208,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "4040:43:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$_t_uint256_$",
                                    "typeString": "tuple(struct IPool.TokenAmount memory[] memory,struct IPool.TokenAmount memory[] memory,uint256)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 15212,
                                        "name": "position",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15136,
                                        "src": "4135:8:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                          "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                        }
                                      },
                                      "id": 15213,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lower",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2765,
                                      "src": "4135:14:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 15214,
                                        "name": "position",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15136,
                                        "src": "4167:8:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                          "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                        }
                                      },
                                      "id": 15215,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "upper",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2767,
                                      "src": "4167:14:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 15216,
                                        "name": "position",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15136,
                                        "src": "4199:8:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                          "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                        }
                                      },
                                      "id": 15217,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "liquidity",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2763,
                                      "src": "4199:18:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "id": 15220,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -28,
                                          "src": "4243:4:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolManager_$15577",
                                            "typeString": "contract ConcentratedLiquidityPoolManager"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolManager_$15577",
                                            "typeString": "contract ConcentratedLiquidityPoolManager"
                                          }
                                        ],
                                        "id": 15219,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "4235:7:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 15218,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "4235:7:49",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 15221,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4235:13:49",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 15222,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4266:5:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      },
                                      {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      },
                                      {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "expression": {
                                      "expression": {
                                        "id": 15209,
                                        "name": "position",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15136,
                                        "src": "4086:8:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                          "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                        }
                                      },
                                      "id": 15210,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "pool",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2761,
                                      "src": "4086:13:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                        "typeString": "contract IConcentratedLiquidityPool"
                                      }
                                    },
                                    "id": 15211,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "decreaseLiquidity",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2703,
                                    "src": "4086:31:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_int24_$_t_int24_$_t_uint128_$_t_address_$_t_bool_$returns$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$_t_uint256_$",
                                      "typeString": "function (int24,int24,uint128,address,bool) external returns (struct IPool.TokenAmount memory[] memory,struct IPool.TokenAmount memory[] memory,uint256)"
                                    }
                                  },
                                  "id": 15223,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4086:199:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$_t_uint256_$",
                                    "typeString": "tuple(struct IPool.TokenAmount memory[] memory,struct IPool.TokenAmount memory[] memory,uint256)"
                                  }
                                },
                                "src": "4040:245:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 15225,
                              "nodeType": "ExpressionStatement",
                              "src": "4040:245:49"
                            },
                            {
                              "expression": {
                                "id": 15229,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "delete",
                                "prefix": true,
                                "src": "4300:25:49",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 15226,
                                    "name": "positions",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14931,
                                    "src": "4307:9:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Position_$2775_storage_$",
                                      "typeString": "mapping(uint256 => struct IConcentratedLiquidityPoolManagerStruct.Position storage ref)"
                                    }
                                  },
                                  "id": 15228,
                                  "indexExpression": {
                                    "id": 15227,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15115,
                                    "src": "4317:7:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4307:18:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Position_$2775_storage",
                                    "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage ref"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 15230,
                              "nodeType": "ExpressionStatement",
                              "src": "4300:25:49"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 15232,
                                    "name": "tokenId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15115,
                                    "src": "4346:7:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 15231,
                                  "name": "_burn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17127,
                                  "src": "4340:5:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256)"
                                  }
                                },
                                "id": 15233,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4340:14:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 15234,
                              "nodeType": "ExpressionStatement",
                              "src": "4340:14:49"
                            }
                          ]
                        },
                        "id": 15236,
                        "nodeType": "IfStatement",
                        "src": "3554:811:49",
                        "trueBody": {
                          "id": 15204,
                          "nodeType": "Block",
                          "src": "3587:433:49",
                          "statements": [
                            {
                              "expression": {
                                "id": 15180,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 15162,
                                      "name": "withdrawAmounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15146,
                                      "src": "3602:15:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct IPool.TokenAmount memory[] memory"
                                      }
                                    },
                                    {
                                      "id": 15163,
                                      "name": "feeAmounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15153,
                                      "src": "3619:10:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct IPool.TokenAmount memory[] memory"
                                      }
                                    },
                                    {
                                      "id": 15164,
                                      "name": "oldLiquidity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15156,
                                      "src": "3631:12:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 15165,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "3601:43:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$_t_uint256_$",
                                    "typeString": "tuple(struct IPool.TokenAmount memory[] memory,struct IPool.TokenAmount memory[] memory,uint256)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 15169,
                                        "name": "position",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15136,
                                        "src": "3696:8:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                          "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                        }
                                      },
                                      "id": 15170,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lower",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2765,
                                      "src": "3696:14:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 15171,
                                        "name": "position",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15136,
                                        "src": "3728:8:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                          "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                        }
                                      },
                                      "id": 15172,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "upper",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2767,
                                      "src": "3728:14:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    {
                                      "id": 15173,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15117,
                                      "src": "3760:6:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "id": 15176,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -28,
                                          "src": "3792:4:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolManager_$15577",
                                            "typeString": "contract ConcentratedLiquidityPoolManager"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolManager_$15577",
                                            "typeString": "contract ConcentratedLiquidityPoolManager"
                                          }
                                        ],
                                        "id": 15175,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3784:7:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 15174,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3784:7:49",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 15177,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3784:13:49",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 15178,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3815:5:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      },
                                      {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      },
                                      {
                                        "typeIdentifier": "t_uint128",
                                        "typeString": "uint128"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "expression": {
                                      "expression": {
                                        "id": 15166,
                                        "name": "position",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15136,
                                        "src": "3647:8:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                          "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                        }
                                      },
                                      "id": 15167,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "pool",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2761,
                                      "src": "3647:13:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                        "typeString": "contract IConcentratedLiquidityPool"
                                      }
                                    },
                                    "id": 15168,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "decreaseLiquidity",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2703,
                                    "src": "3647:31:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_int24_$_t_int24_$_t_uint128_$_t_address_$_t_bool_$returns$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$_t_uint256_$",
                                      "typeString": "function (int24,int24,uint128,address,bool) external returns (struct IPool.TokenAmount memory[] memory,struct IPool.TokenAmount memory[] memory,uint256)"
                                    }
                                  },
                                  "id": 15179,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3647:187:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$_t_uint256_$",
                                    "typeString": "tuple(struct IPool.TokenAmount memory[] memory,struct IPool.TokenAmount memory[] memory,uint256)"
                                  }
                                },
                                "src": "3601:233:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 15181,
                              "nodeType": "ExpressionStatement",
                              "src": "3601:233:49"
                            },
                            {
                              "expression": {
                                "id": 15196,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "expression": {
                                        "id": 15182,
                                        "name": "position",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15136,
                                        "src": "3850:8:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                          "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                        }
                                      },
                                      "id": 15184,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "feeGrowthInside0",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2771,
                                      "src": "3850:25:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 15185,
                                        "name": "position",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15136,
                                        "src": "3877:8:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                          "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                        }
                                      },
                                      "id": 15186,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "feeGrowthInside1",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2774,
                                      "src": "3877:25:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 15187,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "3849:54:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 15191,
                                        "name": "position",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15136,
                                        "src": "3935:8:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                          "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                        }
                                      },
                                      "id": 15192,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lower",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2765,
                                      "src": "3935:14:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 15193,
                                        "name": "position",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15136,
                                        "src": "3951:8:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                          "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                        }
                                      },
                                      "id": 15194,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "upper",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2767,
                                      "src": "3951:14:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      },
                                      {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    ],
                                    "expression": {
                                      "expression": {
                                        "id": 15188,
                                        "name": "position",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15136,
                                        "src": "3906:8:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                          "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                        }
                                      },
                                      "id": 15189,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "pool",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2761,
                                      "src": "3906:13:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                        "typeString": "contract IConcentratedLiquidityPool"
                                      }
                                    },
                                    "id": 15190,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "rangeFeeGrowth",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2665,
                                    "src": "3906:28:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_int24_$_t_int24_$returns$_t_uint256_$_t_uint256_$",
                                      "typeString": "function (int24,int24) view external returns (uint256,uint256)"
                                    }
                                  },
                                  "id": 15195,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3906:60:49",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256)"
                                  }
                                },
                                "src": "3849:117:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 15197,
                              "nodeType": "ExpressionStatement",
                              "src": "3849:117:49"
                            },
                            {
                              "expression": {
                                "id": 15202,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 15198,
                                    "name": "position",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15136,
                                    "src": "3981:8:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                      "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                    }
                                  },
                                  "id": 15200,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "liquidity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2763,
                                  "src": "3981:18:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 15201,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15117,
                                  "src": "4003:6:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "3981:28:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 15203,
                              "nodeType": "ExpressionStatement",
                              "src": "3981:28:49"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          15238
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15238,
                            "mutability": "mutable",
                            "name": "token0Amount",
                            "nameLocation": "4383:12:49",
                            "nodeType": "VariableDeclaration",
                            "scope": 15313,
                            "src": "4375:20:49",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15237,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4375:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15254,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 15253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 15239,
                                "name": "withdrawAmounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15146,
                                "src": "4398:15:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct IPool.TokenAmount memory[] memory"
                                }
                              },
                              "id": 15241,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 15240,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4414:1:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4398:18:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                "typeString": "struct IPool.TokenAmount memory"
                              }
                            },
                            "id": 15242,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2448,
                            "src": "4398:25:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 15251,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 15248,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "baseExpression": {
                                            "id": 15243,
                                            "name": "feeAmounts",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 15153,
                                            "src": "4428:10:49",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                              "typeString": "struct IPool.TokenAmount memory[] memory"
                                            }
                                          },
                                          "id": 15245,
                                          "indexExpression": {
                                            "hexValue": "30",
                                            "id": 15244,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4439:1:49",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "4428:13:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                            "typeString": "struct IPool.TokenAmount memory"
                                          }
                                        },
                                        "id": 15246,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "amount",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2448,
                                        "src": "4428:20:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 15247,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15117,
                                        "src": "4451:6:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "4428:29:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 15249,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "4427:31:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 15250,
                                  "name": "oldLiquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15156,
                                  "src": "4461:12:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4427:46:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 15252,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "4426:48:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4398:76:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4375:99:49"
                      },
                      {
                        "assignments": [
                          15256
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15256,
                            "mutability": "mutable",
                            "name": "token1Amount",
                            "nameLocation": "4492:12:49",
                            "nodeType": "VariableDeclaration",
                            "scope": 15313,
                            "src": "4484:20:49",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15255,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4484:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15272,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 15271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 15257,
                                "name": "withdrawAmounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15146,
                                "src": "4507:15:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct IPool.TokenAmount memory[] memory"
                                }
                              },
                              "id": 15259,
                              "indexExpression": {
                                "hexValue": "31",
                                "id": 15258,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4523:1:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4507:18:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                "typeString": "struct IPool.TokenAmount memory"
                              }
                            },
                            "id": 15260,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2448,
                            "src": "4507:25:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 15269,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 15266,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "baseExpression": {
                                            "id": 15261,
                                            "name": "feeAmounts",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 15153,
                                            "src": "4537:10:49",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                              "typeString": "struct IPool.TokenAmount memory[] memory"
                                            }
                                          },
                                          "id": 15263,
                                          "indexExpression": {
                                            "hexValue": "31",
                                            "id": 15262,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4548:1:49",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "4537:13:49",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                            "typeString": "struct IPool.TokenAmount memory"
                                          }
                                        },
                                        "id": 15264,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "amount",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2448,
                                        "src": "4537:20:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 15265,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15117,
                                        "src": "4560:6:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "4537:29:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 15267,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "4536:31:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 15268,
                                  "name": "oldLiquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15156,
                                  "src": "4570:12:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4536:46:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 15270,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "4535:48:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4507:76:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4484:99:49"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 15274,
                                  "name": "withdrawAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15146,
                                  "src": "4604:15:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct IPool.TokenAmount memory[] memory"
                                  }
                                },
                                "id": 15276,
                                "indexExpression": {
                                  "hexValue": "30",
                                  "id": 15275,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4620:1:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4604:18:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                  "typeString": "struct IPool.TokenAmount memory"
                                }
                              },
                              "id": 15277,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "token",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2446,
                              "src": "4604:24:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 15280,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "4638:4:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolManager_$15577",
                                    "typeString": "contract ConcentratedLiquidityPoolManager"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolManager_$15577",
                                    "typeString": "contract ConcentratedLiquidityPoolManager"
                                  }
                                ],
                                "id": 15279,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4630:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 15278,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4630:7:49",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15281,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4630:13:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 15282,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15119,
                              "src": "4645:9:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 15283,
                              "name": "token0Amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15238,
                              "src": "4656:12:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 15284,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15121,
                              "src": "4670:11:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 15273,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              15576,
                              17165
                            ],
                            "referencedDeclaration": 15576,
                            "src": "4594:9:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bool)"
                            }
                          },
                          "id": 15285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4594:88:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15286,
                        "nodeType": "ExpressionStatement",
                        "src": "4594:88:49"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 15288,
                                  "name": "withdrawAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15146,
                                  "src": "4702:15:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct IPool.TokenAmount memory[] memory"
                                  }
                                },
                                "id": 15290,
                                "indexExpression": {
                                  "hexValue": "31",
                                  "id": 15289,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4718:1:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4702:18:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                  "typeString": "struct IPool.TokenAmount memory"
                                }
                              },
                              "id": 15291,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "token",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2446,
                              "src": "4702:24:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 15294,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "4736:4:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolManager_$15577",
                                    "typeString": "contract ConcentratedLiquidityPoolManager"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolManager_$15577",
                                    "typeString": "contract ConcentratedLiquidityPoolManager"
                                  }
                                ],
                                "id": 15293,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4728:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 15292,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4728:7:49",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15295,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4728:13:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 15296,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15119,
                              "src": "4743:9:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 15297,
                              "name": "token1Amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15256,
                              "src": "4754:12:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 15298,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15121,
                              "src": "4768:11:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 15287,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              15576,
                              17165
                            ],
                            "referencedDeclaration": 15576,
                            "src": "4692:9:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bool)"
                            }
                          },
                          "id": 15299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4692:88:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15300,
                        "nodeType": "ExpressionStatement",
                        "src": "4692:88:49"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 15304,
                                    "name": "position",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15136,
                                    "src": "4822:8:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                      "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                    }
                                  },
                                  "id": 15305,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pool",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2761,
                                  "src": "4822:13:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                    "typeString": "contract IConcentratedLiquidityPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                    "typeString": "contract IConcentratedLiquidityPool"
                                  }
                                ],
                                "id": 15303,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4814:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 15302,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4814:7:49",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15306,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4814:22:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 15307,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4838:3:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 15308,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "4838:10:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 15309,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15115,
                              "src": "4850:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 15310,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15117,
                              "src": "4859:6:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            ],
                            "id": 15301,
                            "name": "DecreaseLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14920,
                            "src": "4796:17:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint128_$returns$__$",
                              "typeString": "function (address,address,uint256,uint128)"
                            }
                          },
                          "id": 15311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4796:70:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15312,
                        "nodeType": "EmitStatement",
                        "src": "4791:75:49"
                      }
                    ]
                  },
                  "functionSelector": "f745f815",
                  "id": 15314,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decreaseLiquidity",
                  "nameLocation": "3157:17:49",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15122,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15115,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3192:7:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15314,
                        "src": "3184:15:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15114,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3184:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15117,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "3217:6:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15314,
                        "src": "3209:14:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        "typeName": {
                          "id": 15116,
                          "name": "uint128",
                          "nodeType": "ElementaryTypeName",
                          "src": "3209:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15119,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "3241:9:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15314,
                        "src": "3233:17:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15118,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3233:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15121,
                        "mutability": "mutable",
                        "name": "unwrapBento",
                        "nameLocation": "3265:11:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15314,
                        "src": "3260:16:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 15120,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3260:4:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3174:108:49"
                  },
                  "returnParameters": {
                    "id": 15123,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3292:0:49"
                  },
                  "scope": 15577,
                  "src": "3148:1725:49",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 15477,
                    "nodeType": "Block",
                    "src": "5040:1273:49",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 15333,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 15328,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "5058:3:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 15329,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "5058:10:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "baseExpression": {
                                  "id": 15330,
                                  "name": "ownerOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16499,
                                  "src": "5072:7:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 15332,
                                "indexExpression": {
                                  "id": 15331,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15316,
                                  "src": "5080:7:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5072:16:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "5058:30:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e4f545f49445f4f574e4552",
                              "id": 15334,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5090:14:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4192981dee7e8bfb48280ce8c787f48b721f216d4db7f6a4070c234e0356cb15",
                                "typeString": "literal_string \"NOT_ID_OWNER\""
                              },
                              "value": "NOT_ID_OWNER"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4192981dee7e8bfb48280ce8c787f48b721f216d4db7f6a4070c234e0356cb15",
                                "typeString": "literal_string \"NOT_ID_OWNER\""
                              }
                            ],
                            "id": 15327,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5050:7:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5050:55:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15336,
                        "nodeType": "ExpressionStatement",
                        "src": "5050:55:49"
                      },
                      {
                        "assignments": [
                          15339
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15339,
                            "mutability": "mutable",
                            "name": "position",
                            "nameLocation": "5132:8:49",
                            "nodeType": "VariableDeclaration",
                            "scope": 15477,
                            "src": "5115:25:49",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                              "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position"
                            },
                            "typeName": {
                              "id": 15338,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 15337,
                                "name": "Position",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2775,
                                "src": "5115:8:49"
                              },
                              "referencedDeclaration": 2775,
                              "src": "5115:8:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15343,
                        "initialValue": {
                          "baseExpression": {
                            "id": 15340,
                            "name": "positions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14931,
                            "src": "5143:9:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Position_$2775_storage_$",
                              "typeString": "mapping(uint256 => struct IConcentratedLiquidityPoolManagerStruct.Position storage ref)"
                            }
                          },
                          "id": 15342,
                          "indexExpression": {
                            "id": 15341,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15316,
                            "src": "5153:7:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5143:18:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Position_$2775_storage",
                            "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5115:46:49"
                      },
                      {
                        "assignments": [
                          15348
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15348,
                            "mutability": "mutable",
                            "name": "tokens",
                            "nameLocation": "5189:6:49",
                            "nodeType": "VariableDeclaration",
                            "scope": 15477,
                            "src": "5172:23:49",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 15346,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5172:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 15347,
                              "nodeType": "ArrayTypeName",
                              "src": "5172:9:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15353,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "expression": {
                                "id": 15349,
                                "name": "position",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15339,
                                "src": "5198:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                  "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                }
                              },
                              "id": 15350,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pool",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2761,
                              "src": "5198:13:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                "typeString": "contract IConcentratedLiquidityPool"
                              }
                            },
                            "id": 15351,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAssets",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2415,
                            "src": "5198:23:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function () view external returns (address[] memory)"
                            }
                          },
                          "id": 15352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5198:25:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5172:51:49"
                      },
                      {
                        "assignments": [
                          15355
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15355,
                            "mutability": "mutable",
                            "name": "token0",
                            "nameLocation": "5241:6:49",
                            "nodeType": "VariableDeclaration",
                            "scope": 15477,
                            "src": "5233:14:49",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 15354,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5233:7:49",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15359,
                        "initialValue": {
                          "baseExpression": {
                            "id": 15356,
                            "name": "tokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15348,
                            "src": "5250:6:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 15358,
                          "indexExpression": {
                            "hexValue": "30",
                            "id": 15357,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5257:1:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5250:9:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5233:26:49"
                      },
                      {
                        "assignments": [
                          15361
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15361,
                            "mutability": "mutable",
                            "name": "token1",
                            "nameLocation": "5277:6:49",
                            "nodeType": "VariableDeclaration",
                            "scope": 15477,
                            "src": "5269:14:49",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 15360,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5269:7:49",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15365,
                        "initialValue": {
                          "baseExpression": {
                            "id": 15362,
                            "name": "tokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15348,
                            "src": "5286:6:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 15364,
                          "indexExpression": {
                            "hexValue": "31",
                            "id": 15363,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5293:1:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5286:9:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5269:26:49"
                      },
                      {
                        "expression": {
                          "id": 15376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 15366,
                                "name": "token0amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15323,
                                "src": "5307:12:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 15367,
                                "name": "token1amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15325,
                                "src": "5321:12:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 15368,
                                  "name": "position",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15339,
                                  "src": "5335:8:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                    "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                  }
                                },
                                "id": 15369,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "feeGrowthInside0",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2771,
                                "src": "5335:25:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 15370,
                                  "name": "position",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15339,
                                  "src": "5362:8:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                    "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                  }
                                },
                                "id": 15371,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "feeGrowthInside1",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2774,
                                "src": "5362:25:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 15372,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "5306:82:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 15374,
                                "name": "tokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15316,
                                "src": "5404:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 15373,
                              "name": "positionFees",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15539,
                              "src": "5391:12:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256) view returns (uint256,uint256,uint256,uint256)"
                              }
                            },
                            "id": 15375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5391:21:49",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256,uint256,uint256)"
                            }
                          },
                          "src": "5306:106:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15377,
                        "nodeType": "ExpressionStatement",
                        "src": "5306:106:49"
                      },
                      {
                        "assignments": [
                          15379
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15379,
                            "mutability": "mutable",
                            "name": "balance0",
                            "nameLocation": "5431:8:49",
                            "nodeType": "VariableDeclaration",
                            "scope": 15477,
                            "src": "5423:16:49",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15378,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5423:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15388,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 15382,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15355,
                              "src": "5458:6:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 15385,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "5474:4:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolManager_$15577",
                                    "typeString": "contract ConcentratedLiquidityPoolManager"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolManager_$15577",
                                    "typeString": "contract ConcentratedLiquidityPoolManager"
                                  }
                                ],
                                "id": 15384,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5466:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 15383,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5466:7:49",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5466:13:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 15380,
                              "name": "bento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14923,
                              "src": "5442:5:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                "typeString": "contract IBentoBoxMinimal"
                              }
                            },
                            "id": 15381,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2151,
                            "src": "5442:15:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256)"
                            }
                          },
                          "id": 15387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5442:38:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5423:57:49"
                      },
                      {
                        "assignments": [
                          15390
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15390,
                            "mutability": "mutable",
                            "name": "balance1",
                            "nameLocation": "5498:8:49",
                            "nodeType": "VariableDeclaration",
                            "scope": 15477,
                            "src": "5490:16:49",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 15389,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5490:7:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15399,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 15393,
                              "name": "token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15361,
                              "src": "5525:6:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 15396,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "5541:4:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolManager_$15577",
                                    "typeString": "contract ConcentratedLiquidityPoolManager"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolManager_$15577",
                                    "typeString": "contract ConcentratedLiquidityPoolManager"
                                  }
                                ],
                                "id": 15395,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5533:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 15394,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5533:7:49",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15397,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5533:13:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "id": 15391,
                              "name": "bento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 14923,
                              "src": "5509:5:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                "typeString": "contract IBentoBoxMinimal"
                              }
                            },
                            "id": 15392,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2151,
                            "src": "5509:15:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address,address) view external returns (uint256)"
                            }
                          },
                          "id": 15398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5509:38:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5490:57:49"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 15406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 15402,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 15400,
                              "name": "balance0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15379,
                              "src": "5562:8:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "id": 15401,
                              "name": "token0amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15323,
                              "src": "5573:12:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5562:23:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 15405,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 15403,
                              "name": "balance1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15390,
                              "src": "5589:8:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "id": 15404,
                              "name": "token1amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15325,
                              "src": "5600:12:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5589:23:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5562:50:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 15454,
                        "nodeType": "IfStatement",
                        "src": "5558:588:49",
                        "trueBody": {
                          "id": 15453,
                          "nodeType": "Block",
                          "src": "5614:532:49",
                          "statements": [
                            {
                              "assignments": [
                                15408,
                                15410
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 15408,
                                  "mutability": "mutable",
                                  "name": "amount0fees",
                                  "nameLocation": "5637:11:49",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 15453,
                                  "src": "5629:19:49",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 15407,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5629:7:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 15410,
                                  "mutability": "mutable",
                                  "name": "amount1fees",
                                  "nameLocation": "5658:11:49",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 15453,
                                  "src": "5650:19:49",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 15409,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5650:7:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 15424,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 15414,
                                      "name": "position",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15339,
                                      "src": "5695:8:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                        "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                      }
                                    },
                                    "id": 15415,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "lower",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2765,
                                    "src": "5695:14:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 15416,
                                      "name": "position",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15339,
                                      "src": "5711:8:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                        "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                      }
                                    },
                                    "id": 15417,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "upper",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2767,
                                    "src": "5711:14:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 15420,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "5735:4:49",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolManager_$15577",
                                          "typeString": "contract ConcentratedLiquidityPoolManager"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolManager_$15577",
                                          "typeString": "contract ConcentratedLiquidityPoolManager"
                                        }
                                      ],
                                      "id": 15419,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5727:7:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 15418,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5727:7:49",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 15421,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5727:13:49",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "66616c7365",
                                    "id": 15422,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5742:5:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    },
                                    {
                                      "typeIdentifier": "t_int24",
                                      "typeString": "int24"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "expression": {
                                      "id": 15411,
                                      "name": "position",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15339,
                                      "src": "5673:8:49",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                        "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage pointer"
                                      }
                                    },
                                    "id": 15412,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "pool",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2761,
                                    "src": "5673:13:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                      "typeString": "contract IConcentratedLiquidityPool"
                                    }
                                  },
                                  "id": 15413,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "collect",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2680,
                                  "src": "5673:21:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_int24_$_t_int24_$_t_address_$_t_bool_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (int24,int24,address,bool) external returns (uint256,uint256)"
                                  }
                                },
                                "id": 15423,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5673:75:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5628:120:49"
                            },
                            {
                              "assignments": [
                                15426
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 15426,
                                  "mutability": "mutable",
                                  "name": "newBalance0",
                                  "nameLocation": "5771:11:49",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 15453,
                                  "src": "5763:19:49",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 15425,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5763:7:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 15430,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 15429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 15427,
                                  "name": "amount0fees",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15408,
                                  "src": "5785:11:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 15428,
                                  "name": "balance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15379,
                                  "src": "5799:8:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5785:22:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5763:44:49"
                            },
                            {
                              "assignments": [
                                15432
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 15432,
                                  "mutability": "mutable",
                                  "name": "newBalance1",
                                  "nameLocation": "5829:11:49",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 15453,
                                  "src": "5821:19:49",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 15431,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5821:7:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 15436,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 15435,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 15433,
                                  "name": "amount1fees",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15410,
                                  "src": "5843:11:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 15434,
                                  "name": "balance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15390,
                                  "src": "5857:8:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5843:22:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5821:44:49"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 15439,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 15437,
                                  "name": "token0amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15323,
                                  "src": "6009:12:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "id": 15438,
                                  "name": "newBalance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15426,
                                  "src": "6024:11:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6009:26:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "documentation": "@dev Rounding errors due to frequent claiming of other users in the same position may cost us some wei units",
                              "id": 15444,
                              "nodeType": "IfStatement",
                              "src": "6005:58:49",
                              "trueBody": {
                                "expression": {
                                  "id": 15442,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 15440,
                                    "name": "token0amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15323,
                                    "src": "6037:12:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "id": 15441,
                                    "name": "newBalance0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15426,
                                    "src": "6052:11:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6037:26:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 15443,
                                "nodeType": "ExpressionStatement",
                                "src": "6037:26:49"
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 15447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 15445,
                                  "name": "token1amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15325,
                                  "src": "6081:12:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "id": 15446,
                                  "name": "newBalance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15432,
                                  "src": "6096:11:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6081:26:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 15452,
                              "nodeType": "IfStatement",
                              "src": "6077:58:49",
                              "trueBody": {
                                "expression": {
                                  "id": 15450,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 15448,
                                    "name": "token1amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15325,
                                    "src": "6109:12:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "id": 15449,
                                    "name": "newBalance1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15432,
                                    "src": "6124:11:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6109:26:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 15451,
                                "nodeType": "ExpressionStatement",
                                "src": "6109:26:49"
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 15456,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15355,
                              "src": "6166:6:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 15459,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "6182:4:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolManager_$15577",
                                    "typeString": "contract ConcentratedLiquidityPoolManager"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolManager_$15577",
                                    "typeString": "contract ConcentratedLiquidityPoolManager"
                                  }
                                ],
                                "id": 15458,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6174:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 15457,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6174:7:49",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15460,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6174:13:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 15461,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15318,
                              "src": "6189:9:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 15462,
                              "name": "token0amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15323,
                              "src": "6200:12:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 15463,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15320,
                              "src": "6214:11:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 15455,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              15576,
                              17165
                            ],
                            "referencedDeclaration": 15576,
                            "src": "6156:9:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bool)"
                            }
                          },
                          "id": 15464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6156:70:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15465,
                        "nodeType": "ExpressionStatement",
                        "src": "6156:70:49"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 15467,
                              "name": "token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15361,
                              "src": "6246:6:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 15470,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "6262:4:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolManager_$15577",
                                    "typeString": "contract ConcentratedLiquidityPoolManager"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolManager_$15577",
                                    "typeString": "contract ConcentratedLiquidityPoolManager"
                                  }
                                ],
                                "id": 15469,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6254:7:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 15468,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6254:7:49",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6254:13:49",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 15472,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15318,
                              "src": "6269:9:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 15473,
                              "name": "token1amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15325,
                              "src": "6280:12:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 15474,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15320,
                              "src": "6294:11:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 15466,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              15576,
                              17165
                            ],
                            "referencedDeclaration": 15576,
                            "src": "6236:9:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bool)"
                            }
                          },
                          "id": 15475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6236:70:49",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15476,
                        "nodeType": "ExpressionStatement",
                        "src": "6236:70:49"
                      }
                    ]
                  },
                  "functionSelector": "8c6ab013",
                  "id": 15478,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "collect",
                  "nameLocation": "4888:7:49",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15321,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15316,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "4913:7:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15478,
                        "src": "4905:15:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15315,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4905:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15318,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "4938:9:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15478,
                        "src": "4930:17:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15317,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4930:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15320,
                        "mutability": "mutable",
                        "name": "unwrapBento",
                        "nameLocation": "4962:11:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15478,
                        "src": "4957:16:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 15319,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4957:4:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4895:84:49"
                  },
                  "returnParameters": {
                    "id": 15326,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15323,
                        "mutability": "mutable",
                        "name": "token0amount",
                        "nameLocation": "5004:12:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15478,
                        "src": "4996:20:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15322,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4996:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15325,
                        "mutability": "mutable",
                        "name": "token1amount",
                        "nameLocation": "5026:12:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15478,
                        "src": "5018:20:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15324,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5018:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4995:44:49"
                  },
                  "scope": 15577,
                  "src": "4879:1434:49",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 15538,
                    "nodeType": "Block",
                    "src": "6657:552:49",
                    "statements": [
                      {
                        "assignments": [
                          15494
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15494,
                            "mutability": "mutable",
                            "name": "position",
                            "nameLocation": "6683:8:49",
                            "nodeType": "VariableDeclaration",
                            "scope": 15538,
                            "src": "6667:24:49",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                              "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position"
                            },
                            "typeName": {
                              "id": 15493,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 15492,
                                "name": "Position",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2775,
                                "src": "6667:8:49"
                              },
                              "referencedDeclaration": 2775,
                              "src": "6667:8:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15498,
                        "initialValue": {
                          "baseExpression": {
                            "id": 15495,
                            "name": "positions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 14931,
                            "src": "6694:9:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Position_$2775_storage_$",
                              "typeString": "mapping(uint256 => struct IConcentratedLiquidityPoolManagerStruct.Position storage ref)"
                            }
                          },
                          "id": 15497,
                          "indexExpression": {
                            "id": 15496,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15481,
                            "src": "6704:7:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6694:18:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Position_$2775_storage",
                            "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6667:45:49"
                      },
                      {
                        "expression": {
                          "id": 15510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 15499,
                                "name": "feeGrowthInside0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15488,
                                "src": "6724:16:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 15500,
                                "name": "feeGrowthInside1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15490,
                                "src": "6742:16:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 15501,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "6723:36:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 15505,
                                  "name": "position",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15494,
                                  "src": "6791:8:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                                    "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                                  }
                                },
                                "id": 15506,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "lower",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2765,
                                "src": "6791:14:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              },
                              {
                                "expression": {
                                  "id": 15507,
                                  "name": "position",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15494,
                                  "src": "6807:8:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                                    "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                                  }
                                },
                                "id": 15508,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "upper",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2767,
                                "src": "6807:14:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                },
                                {
                                  "typeIdentifier": "t_int24",
                                  "typeString": "int24"
                                }
                              ],
                              "expression": {
                                "expression": {
                                  "id": 15502,
                                  "name": "position",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15494,
                                  "src": "6762:8:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                                    "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                                  }
                                },
                                "id": 15503,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "pool",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2761,
                                "src": "6762:13:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                  "typeString": "contract IConcentratedLiquidityPool"
                                }
                              },
                              "id": 15504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "rangeFeeGrowth",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2665,
                              "src": "6762:28:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_int24_$_t_int24_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (int24,int24) view external returns (uint256,uint256)"
                              }
                            },
                            "id": 15509,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6762:60:49",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "6723:99:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15511,
                        "nodeType": "ExpressionStatement",
                        "src": "6723:99:49"
                      },
                      {
                        "expression": {
                          "id": 15523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 15512,
                            "name": "token0amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15484,
                            "src": "6833:12:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 15518,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 15515,
                                  "name": "feeGrowthInside0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15488,
                                  "src": "6877:16:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "expression": {
                                    "id": 15516,
                                    "name": "position",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15494,
                                    "src": "6896:8:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                                      "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                                    }
                                  },
                                  "id": 15517,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeGrowthInside0",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2771,
                                  "src": "6896:25:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6877:44:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 15519,
                                  "name": "position",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15494,
                                  "src": "6935:8:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                                    "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                                  }
                                },
                                "id": 15520,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "liquidity",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2763,
                                "src": "6935:18:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              {
                                "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                                "id": 15521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6967:35:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                  "typeString": "int_const 3402...(31 digits omitted)...1456"
                                },
                                "value": "0x100000000000000000000000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                  "typeString": "int_const 3402...(31 digits omitted)...1456"
                                }
                              ],
                              "expression": {
                                "id": 15513,
                                "name": "FullMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3590,
                                "src": "6848:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_FullMath_$3590_$",
                                  "typeString": "type(library FullMath)"
                                }
                              },
                              "id": 15514,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mulDiv",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3545,
                              "src": "6848:15:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 15522,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6848:164:49",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6833:179:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 15524,
                        "nodeType": "ExpressionStatement",
                        "src": "6833:179:49"
                      },
                      {
                        "expression": {
                          "id": 15536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 15525,
                            "name": "token1amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15486,
                            "src": "7023:12:49",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 15531,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 15528,
                                  "name": "feeGrowthInside1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15490,
                                  "src": "7067:16:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "expression": {
                                    "id": 15529,
                                    "name": "position",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15494,
                                    "src": "7086:8:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                                      "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                                    }
                                  },
                                  "id": 15530,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeGrowthInside1",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2774,
                                  "src": "7086:25:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7067:44:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 15532,
                                  "name": "position",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15494,
                                  "src": "7125:8:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                                    "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                                  }
                                },
                                "id": 15533,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "liquidity",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2763,
                                "src": "7125:18:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              {
                                "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                                "id": 15534,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7157:35:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                  "typeString": "int_const 3402...(31 digits omitted)...1456"
                                },
                                "value": "0x100000000000000000000000000000000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                {
                                  "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                                  "typeString": "int_const 3402...(31 digits omitted)...1456"
                                }
                              ],
                              "expression": {
                                "id": 15526,
                                "name": "FullMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3590,
                                "src": "7038:8:49",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_FullMath_$3590_$",
                                  "typeString": "type(library FullMath)"
                                }
                              },
                              "id": 15527,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mulDiv",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3545,
                              "src": "7038:15:49",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 15535,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7038:164:49",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7023:179:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 15537,
                        "nodeType": "ExpressionStatement",
                        "src": "7023:179:49"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15479,
                    "nodeType": "StructuredDocumentation",
                    "src": "6319:91:49",
                    "text": "@notice Returns the claimable fees and the fee growth accumulators of a given position."
                  },
                  "functionSelector": "ed7bba9a",
                  "id": 15539,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "positionFees",
                  "nameLocation": "6424:12:49",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15482,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15481,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "6445:7:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15539,
                        "src": "6437:15:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15480,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6437:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6436:17:49"
                  },
                  "returnParameters": {
                    "id": 15491,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15484,
                        "mutability": "mutable",
                        "name": "token0amount",
                        "nameLocation": "6520:12:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15539,
                        "src": "6512:20:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15483,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6512:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15486,
                        "mutability": "mutable",
                        "name": "token1amount",
                        "nameLocation": "6554:12:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15539,
                        "src": "6546:20:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15485,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6546:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15488,
                        "mutability": "mutable",
                        "name": "feeGrowthInside0",
                        "nameLocation": "6588:16:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15539,
                        "src": "6580:24:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15487,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6580:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15490,
                        "mutability": "mutable",
                        "name": "feeGrowthInside1",
                        "nameLocation": "6626:16:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15539,
                        "src": "6618:24:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15489,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6618:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6498:154:49"
                  },
                  "scope": 15577,
                  "src": "6415:794:49",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 15575,
                    "nodeType": "Block",
                    "src": "7364:170:49",
                    "statements": [
                      {
                        "condition": {
                          "id": 15552,
                          "name": "unwrapBento",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15549,
                          "src": "7378:11:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 15573,
                          "nodeType": "Block",
                          "src": "7464:64:49",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 15567,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15541,
                                    "src": "7493:5:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 15568,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15543,
                                    "src": "7500:4:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 15569,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15545,
                                    "src": "7506:2:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 15570,
                                    "name": "shares",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15547,
                                    "src": "7510:6:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 15564,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14923,
                                    "src": "7478:5:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 15566,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2227,
                                  "src": "7478:14:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,uint256) external"
                                  }
                                },
                                "id": 15571,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7478:39:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 15572,
                              "nodeType": "ExpressionStatement",
                              "src": "7478:39:49"
                            }
                          ]
                        },
                        "id": 15574,
                        "nodeType": "IfStatement",
                        "src": "7374:154:49",
                        "trueBody": {
                          "id": 15563,
                          "nodeType": "Block",
                          "src": "7391:67:49",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 15556,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15541,
                                    "src": "7420:5:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 15557,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15543,
                                    "src": "7427:4:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 15558,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15545,
                                    "src": "7433:2:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 15559,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7437:1:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "id": 15560,
                                    "name": "shares",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15547,
                                    "src": "7440:6:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 15553,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 14923,
                                    "src": "7405:5:49",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 15555,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "withdraw",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2215,
                                  "src": "7405:14:49",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (address,address,address,uint256,uint256) external returns (uint256,uint256)"
                                  }
                                },
                                "id": 15561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7405:42:49",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "id": 15562,
                              "nodeType": "ExpressionStatement",
                              "src": "7405:42:49"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 15576,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nameLocation": "7224:9:49",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15550,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15541,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "7251:5:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15576,
                        "src": "7243:13:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15540,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7243:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15543,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "7274:4:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15576,
                        "src": "7266:12:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15542,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7266:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15545,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "7296:2:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15576,
                        "src": "7288:10:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15544,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7288:7:49",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15547,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "7316:6:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15576,
                        "src": "7308:14:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15546,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7308:7:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15549,
                        "mutability": "mutable",
                        "name": "unwrapBento",
                        "nameLocation": "7337:11:49",
                        "nodeType": "VariableDeclaration",
                        "scope": 15576,
                        "src": "7332:16:49",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 15548,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7332:4:49",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7233:121:49"
                  },
                  "returnParameters": {
                    "id": 15551,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7364:0:49"
                  },
                  "scope": 15577,
                  "src": "7215:319:49",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 15578,
              "src": "726:6810:49",
              "usedErrors": []
            }
          ],
          "src": "46:7491:49"
        },
        "id": 49
      },
      "contracts/pool/concentrated/ConcentratedLiquidityPoolStaker.sol": {
        "ast": {
          "absolutePath": "contracts/pool/concentrated/ConcentratedLiquidityPoolStaker.sol",
          "exportedSymbols": {
            "ConcentratedLiquidityPoolStaker": [
              16453
            ],
            "IBentoBoxMinimal": [
              2253
            ],
            "IConcentratedLiquidityPool": [
              2753
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "IPoolManager": [
              2796
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "TickMath": [
              4217
            ],
            "Ticks": [
              4906
            ],
            "console": [
              32437
            ]
          },
          "id": 16454,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 15579,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:50"
            },
            {
              "absolutePath": "contracts/interfaces/concentratedPool/IConcentratedLiquidityPool.sol",
              "file": "../../interfaces/concentratedPool/IConcentratedLiquidityPool.sol",
              "id": 15580,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 16454,
              "sourceUnit": 2754,
              "src": "72:74:50",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/concentratedPool/Ticks.sol",
              "file": "../../libraries/concentratedPool/Ticks.sol",
              "id": 15581,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 16454,
              "sourceUnit": 4907,
              "src": "147:52:50",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IBentoBoxMinimal.sol",
              "file": "../../interfaces/IBentoBoxMinimal.sol",
              "id": 15582,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 16454,
              "sourceUnit": 2254,
              "src": "200:47:50",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/concentratedPool/IConcentratedLiquidityPoolManager.sol",
              "file": "../../interfaces/concentratedPool/IConcentratedLiquidityPoolManager.sol",
              "id": 15584,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 16454,
              "sourceUnit": 2797,
              "src": "248:138:50",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 15583,
                    "name": "IConcentratedLiquidityPoolManager",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "src": "256:33:50",
                    "typeDescriptions": {}
                  },
                  "local": "IPoolManager",
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 15585,
                "nodeType": "StructuredDocumentation",
                "src": "388:127:50",
                "text": "@notice Trident Concentrated Liquidity Pool periphery contract that combines non-fungible position management and staking."
              },
              "fullyImplemented": true,
              "id": 16453,
              "linearizedBaseContracts": [
                16453
              ],
              "name": "ConcentratedLiquidityPoolStaker",
              "nameLocation": "524:31:50",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 15594,
                  "name": "AddIncentive",
                  "nameLocation": "568:12:50",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 15593,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15588,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "616:4:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15594,
                        "src": "581:39:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                          "typeString": "contract IConcentratedLiquidityPool"
                        },
                        "typeName": {
                          "id": 15587,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 15586,
                            "name": "IConcentratedLiquidityPool",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2753,
                            "src": "581:26:50"
                          },
                          "referencedDeclaration": 2753,
                          "src": "581:26:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                            "typeString": "contract IConcentratedLiquidityPool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15590,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "incentiveId",
                        "nameLocation": "638:11:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15594,
                        "src": "622:27:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15589,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "622:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15592,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "rewardToken",
                        "nameLocation": "667:11:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15594,
                        "src": "651:27:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15591,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "651:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "580:99:50"
                  },
                  "src": "562:118:50"
                },
                {
                  "anonymous": false,
                  "id": 15600,
                  "name": "Subscribe",
                  "nameLocation": "691:9:50",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 15599,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15596,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "positionId",
                        "nameLocation": "717:10:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15600,
                        "src": "701:26:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15595,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "701:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15598,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "incentiveId",
                        "nameLocation": "745:11:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15600,
                        "src": "729:27:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15597,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "729:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "700:57:50"
                  },
                  "src": "685:73:50"
                },
                {
                  "anonymous": false,
                  "id": 15610,
                  "name": "ClaimReward",
                  "nameLocation": "769:11:50",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 15609,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15602,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "positionId",
                        "nameLocation": "797:10:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15610,
                        "src": "781:26:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15601,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "781:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15604,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "incentiveId",
                        "nameLocation": "825:11:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15610,
                        "src": "809:27:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15603,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "809:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15606,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "854:9:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15610,
                        "src": "838:25:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15605,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "838:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15608,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "872:6:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15610,
                        "src": "865:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 15607,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "865:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "780:99:50"
                  },
                  "src": "763:117:50"
                },
                {
                  "anonymous": false,
                  "id": 15619,
                  "name": "ReclaimIncentive",
                  "nameLocation": "891:16:50",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 15618,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15613,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "943:4:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15619,
                        "src": "908:39:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                          "typeString": "contract IConcentratedLiquidityPool"
                        },
                        "typeName": {
                          "id": 15612,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 15611,
                            "name": "IConcentratedLiquidityPool",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2753,
                            "src": "908:26:50"
                          },
                          "referencedDeclaration": 2753,
                          "src": "908:26:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                            "typeString": "contract IConcentratedLiquidityPool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15615,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "incentiveId",
                        "nameLocation": "965:11:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15619,
                        "src": "949:27:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15614,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "949:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15617,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "986:6:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15619,
                        "src": "978:14:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15616,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "978:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "907:86:50"
                  },
                  "src": "885:109:50"
                },
                {
                  "canonicalName": "ConcentratedLiquidityPoolStaker.Incentive",
                  "id": 15634,
                  "members": [
                    {
                      "constant": false,
                      "id": 15621,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "1035:5:50",
                      "nodeType": "VariableDeclaration",
                      "scope": 15634,
                      "src": "1027:13:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 15620,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1027:7:50",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 15623,
                      "mutability": "mutable",
                      "name": "token",
                      "nameLocation": "1058:5:50",
                      "nodeType": "VariableDeclaration",
                      "scope": 15634,
                      "src": "1050:13:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 15622,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1050:7:50",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 15625,
                      "mutability": "mutable",
                      "name": "startTime",
                      "nameLocation": "1080:9:50",
                      "nodeType": "VariableDeclaration",
                      "scope": 15634,
                      "src": "1073:16:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 15624,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1073:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 15627,
                      "mutability": "mutable",
                      "name": "endTime",
                      "nameLocation": "1106:7:50",
                      "nodeType": "VariableDeclaration",
                      "scope": 15634,
                      "src": "1099:14:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 15626,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1099:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 15629,
                      "mutability": "mutable",
                      "name": "expiry",
                      "nameLocation": "1130:6:50",
                      "nodeType": "VariableDeclaration",
                      "scope": 15634,
                      "src": "1123:13:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 15628,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1123:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 15631,
                      "mutability": "mutable",
                      "name": "secondsClaimed",
                      "nameLocation": "1154:14:50",
                      "nodeType": "VariableDeclaration",
                      "scope": 15634,
                      "src": "1146:22:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      },
                      "typeName": {
                        "id": 15630,
                        "name": "uint160",
                        "nodeType": "ElementaryTypeName",
                        "src": "1146:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 15633,
                      "mutability": "mutable",
                      "name": "rewardsUnclaimed",
                      "nameLocation": "1199:16:50",
                      "nodeType": "VariableDeclaration",
                      "scope": 15634,
                      "src": "1192:23:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint96",
                        "typeString": "uint96"
                      },
                      "typeName": {
                        "id": 15632,
                        "name": "uint96",
                        "nodeType": "ElementaryTypeName",
                        "src": "1192:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Incentive",
                  "nameLocation": "1007:9:50",
                  "nodeType": "StructDefinition",
                  "scope": 16453,
                  "src": "1000:222:50",
                  "visibility": "public"
                },
                {
                  "canonicalName": "ConcentratedLiquidityPoolStaker.Stake",
                  "id": 15639,
                  "members": [
                    {
                      "constant": false,
                      "id": 15636,
                      "mutability": "mutable",
                      "name": "secondsGrowthInsideLast",
                      "nameLocation": "1259:23:50",
                      "nodeType": "VariableDeclaration",
                      "scope": 15639,
                      "src": "1251:31:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      },
                      "typeName": {
                        "id": 15635,
                        "name": "uint160",
                        "nodeType": "ElementaryTypeName",
                        "src": "1251:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 15638,
                      "mutability": "mutable",
                      "name": "timestamp",
                      "nameLocation": "1313:9:50",
                      "nodeType": "VariableDeclaration",
                      "scope": 15639,
                      "src": "1306:16:50",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 15637,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1306:6:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Stake",
                  "nameLocation": "1235:5:50",
                  "nodeType": "StructDefinition",
                  "scope": 16453,
                  "src": "1228:101:50",
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "4da31827",
                  "id": 15642,
                  "mutability": "immutable",
                  "name": "bento",
                  "nameLocation": "1369:5:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 16453,
                  "src": "1335:39:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                    "typeString": "contract IBentoBoxMinimal"
                  },
                  "typeName": {
                    "id": 15641,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 15640,
                      "name": "IBentoBoxMinimal",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2253,
                      "src": "1335:16:50"
                    },
                    "referencedDeclaration": 2253,
                    "src": "1335:16:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                      "typeString": "contract IBentoBoxMinimal"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "dc4c90d3",
                  "id": 15645,
                  "mutability": "mutable",
                  "name": "poolManager",
                  "nameLocation": "1400:11:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 16453,
                  "src": "1380:31:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IConcentratedLiquidityPoolManager_$2796",
                    "typeString": "contract IConcentratedLiquidityPoolManager"
                  },
                  "typeName": {
                    "id": 15644,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 15643,
                      "name": "IPoolManager",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2796,
                      "src": "1380:12:50"
                    },
                    "referencedDeclaration": 2796,
                    "src": "1380:12:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IConcentratedLiquidityPoolManager_$2796",
                      "typeString": "contract IConcentratedLiquidityPoolManager"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "71fa6b4d",
                  "id": 15650,
                  "mutability": "mutable",
                  "name": "incentiveCount",
                  "nameLocation": "1472:14:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 16453,
                  "src": "1418:68:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_contract$_IConcentratedLiquidityPool_$2753_$_t_uint256_$",
                    "typeString": "mapping(contract IConcentratedLiquidityPool => uint256)"
                  },
                  "typeName": {
                    "id": 15649,
                    "keyType": {
                      "id": 15647,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 15646,
                        "name": "IConcentratedLiquidityPool",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2753,
                        "src": "1426:26:50"
                      },
                      "referencedDeclaration": 2753,
                      "src": "1426:26:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                        "typeString": "contract IConcentratedLiquidityPool"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1418:46:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_contract$_IConcentratedLiquidityPool_$2753_$_t_uint256_$",
                      "typeString": "mapping(contract IConcentratedLiquidityPool => uint256)"
                    },
                    "valueType": {
                      "id": 15648,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1456:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "32e2e213",
                  "id": 15658,
                  "mutability": "mutable",
                  "name": "incentives",
                  "nameLocation": "1568:10:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 16453,
                  "src": "1492:86:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_contract$_IConcentratedLiquidityPool_$2753_$_t_mapping$_t_uint256_$_t_struct$_Incentive_$15634_storage_$_$",
                    "typeString": "mapping(contract IConcentratedLiquidityPool => mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Incentive))"
                  },
                  "typeName": {
                    "id": 15657,
                    "keyType": {
                      "id": 15652,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 15651,
                        "name": "IConcentratedLiquidityPool",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2753,
                        "src": "1500:26:50"
                      },
                      "referencedDeclaration": 2753,
                      "src": "1500:26:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                        "typeString": "contract IConcentratedLiquidityPool"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1492:68:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_contract$_IConcentratedLiquidityPool_$2753_$_t_mapping$_t_uint256_$_t_struct$_Incentive_$15634_storage_$_$",
                      "typeString": "mapping(contract IConcentratedLiquidityPool => mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Incentive))"
                    },
                    "valueType": {
                      "id": 15656,
                      "keyType": {
                        "id": 15653,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1538:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1530:29:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Incentive_$15634_storage_$",
                        "typeString": "mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Incentive)"
                      },
                      "valueType": {
                        "id": 15655,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 15654,
                          "name": "Incentive",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 15634,
                          "src": "1549:9:50"
                        },
                        "referencedDeclaration": 15634,
                        "src": "1549:9:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                          "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive"
                        }
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 15659,
                    "nodeType": "StructuredDocumentation",
                    "src": "1584:188:50",
                    "text": "@dev When subscribing to an incentive we take a snapshot of the position secondsGrowth accumulator.\n @dev positionId to incentiveId to position's secondsGrowth snapshot mapping."
                  },
                  "functionSelector": "b221e5fd",
                  "id": 15666,
                  "mutability": "mutable",
                  "name": "stakes",
                  "nameLocation": "1830:6:50",
                  "nodeType": "VariableDeclaration",
                  "scope": 16453,
                  "src": "1777:59:50",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Stake_$15639_storage_$_$",
                    "typeString": "mapping(uint256 => mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Stake))"
                  },
                  "typeName": {
                    "id": 15665,
                    "keyType": {
                      "id": 15660,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1785:7:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1777:45:50",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Stake_$15639_storage_$_$",
                      "typeString": "mapping(uint256 => mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Stake))"
                    },
                    "valueType": {
                      "id": 15664,
                      "keyType": {
                        "id": 15661,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1804:7:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1796:25:50",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Stake_$15639_storage_$",
                        "typeString": "mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Stake)"
                      },
                      "valueType": {
                        "id": 15663,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 15662,
                          "name": "Stake",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 15639,
                          "src": "1815:5:50"
                        },
                        "referencedDeclaration": 15639,
                        "src": "1815:5:50",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Stake_$15639_storage_ptr",
                          "typeString": "struct ConcentratedLiquidityPoolStaker.Stake"
                        }
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 15694,
                    "nodeType": "Block",
                    "src": "1882:176:50",
                    "statements": [
                      {
                        "expression": {
                          "id": 15674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 15672,
                            "name": "poolManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15645,
                            "src": "1892:11:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConcentratedLiquidityPoolManager_$2796",
                              "typeString": "contract IConcentratedLiquidityPoolManager"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 15673,
                            "name": "_poolManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15669,
                            "src": "1906:12:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConcentratedLiquidityPoolManager_$2796",
                              "typeString": "contract IConcentratedLiquidityPoolManager"
                            }
                          },
                          "src": "1892:26:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConcentratedLiquidityPoolManager_$2796",
                            "typeString": "contract IConcentratedLiquidityPoolManager"
                          }
                        },
                        "id": 15675,
                        "nodeType": "ExpressionStatement",
                        "src": "1892:26:50"
                      },
                      {
                        "assignments": [
                          15678
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15678,
                            "mutability": "mutable",
                            "name": "_bento",
                            "nameLocation": "1945:6:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 15694,
                            "src": "1928:23:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            },
                            "typeName": {
                              "id": 15677,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 15676,
                                "name": "IBentoBoxMinimal",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2253,
                                "src": "1928:16:50"
                              },
                              "referencedDeclaration": 2253,
                              "src": "1928:16:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                "typeString": "contract IBentoBoxMinimal"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15684,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 15680,
                                  "name": "_poolManager",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15669,
                                  "src": "1971:12:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConcentratedLiquidityPoolManager_$2796",
                                    "typeString": "contract IConcentratedLiquidityPoolManager"
                                  }
                                },
                                "id": 15681,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "bento",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2795,
                                "src": "1971:18:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_IBentoBoxMinimal_$2253_$",
                                  "typeString": "function () view external returns (contract IBentoBoxMinimal)"
                                }
                              },
                              "id": 15682,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1971:20:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                "typeString": "contract IBentoBoxMinimal"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                "typeString": "contract IBentoBoxMinimal"
                              }
                            ],
                            "id": 15679,
                            "name": "IBentoBoxMinimal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2253,
                            "src": "1954:16:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_IBentoBoxMinimal_$2253_$",
                              "typeString": "type(contract IBentoBoxMinimal)"
                            }
                          },
                          "id": 15683,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1954:38:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1928:64:50"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 15685,
                              "name": "_bento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15678,
                              "src": "2002:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                "typeString": "contract IBentoBoxMinimal"
                              }
                            },
                            "id": 15687,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "registerProtocol",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2179,
                            "src": "2002:23:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                              "typeString": "function () external"
                            }
                          },
                          "id": 15688,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2002:25:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15689,
                        "nodeType": "ExpressionStatement",
                        "src": "2002:25:50"
                      },
                      {
                        "expression": {
                          "id": 15692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 15690,
                            "name": "bento",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15642,
                            "src": "2037:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 15691,
                            "name": "_bento",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15678,
                            "src": "2045:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "src": "2037:14:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        "id": 15693,
                        "nodeType": "ExpressionStatement",
                        "src": "2037:14:50"
                      }
                    ]
                  },
                  "id": 15695,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15670,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15669,
                        "mutability": "mutable",
                        "name": "_poolManager",
                        "nameLocation": "1868:12:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15695,
                        "src": "1855:25:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConcentratedLiquidityPoolManager_$2796",
                          "typeString": "contract IConcentratedLiquidityPoolManager"
                        },
                        "typeName": {
                          "id": 15668,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 15667,
                            "name": "IPoolManager",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2796,
                            "src": "1855:12:50"
                          },
                          "referencedDeclaration": 2796,
                          "src": "1855:12:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConcentratedLiquidityPoolManager_$2796",
                            "typeString": "contract IConcentratedLiquidityPoolManager"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1854:27:50"
                  },
                  "returnParameters": {
                    "id": 15671,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1882:0:50"
                  },
                  "scope": 16453,
                  "src": "1843:215:50",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 15788,
                    "nodeType": "Block",
                    "src": "2154:619:50",
                    "statements": [
                      {
                        "assignments": [
                          15705
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15705,
                            "mutability": "mutable",
                            "name": "current",
                            "nameLocation": "2171:7:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 15788,
                            "src": "2164:14:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 15704,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2164:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15711,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 15708,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "2188:5:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 15709,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "src": "2188:15:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15707,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2181:6:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint32_$",
                              "typeString": "type(uint32)"
                            },
                            "typeName": {
                              "id": 15706,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2181:6:50",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 15710,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2181:23:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2164:40:50"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 15716,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 15713,
                                "name": "current",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15705,
                                "src": "2222:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "expression": {
                                  "id": 15714,
                                  "name": "incentive",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15701,
                                  "src": "2233:9:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                                    "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive memory"
                                  }
                                },
                                "id": 15715,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "startTime",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15625,
                                "src": "2233:19:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "2222:30:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "414c52454144595f53544152544544",
                              "id": 15717,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2254:17:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ea6ed4625640eb1dff8225844a4e5f7792382b166e25557d7f33dc0f8b3e70c5",
                                "typeString": "literal_string \"ALREADY_STARTED\""
                              },
                              "value": "ALREADY_STARTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ea6ed4625640eb1dff8225844a4e5f7792382b166e25557d7f33dc0f8b3e70c5",
                                "typeString": "literal_string \"ALREADY_STARTED\""
                              }
                            ],
                            "id": 15712,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2214:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2214:58:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15719,
                        "nodeType": "ExpressionStatement",
                        "src": "2214:58:50"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 15725,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 15721,
                                  "name": "incentive",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15701,
                                  "src": "2290:9:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                                    "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive memory"
                                  }
                                },
                                "id": 15722,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "startTime",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15625,
                                "src": "2290:19:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "expression": {
                                  "id": 15723,
                                  "name": "incentive",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15701,
                                  "src": "2312:9:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                                    "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive memory"
                                  }
                                },
                                "id": 15724,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "endTime",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15627,
                                "src": "2312:17:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "2290:39:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "53544152545f504153545f454e44",
                              "id": 15726,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2331:16:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cb08e19888fb6866cabe4cfca6b2fc10e6b2f64c2d301614e286b434a55023ad",
                                "typeString": "literal_string \"START_PAST_END\""
                              },
                              "value": "START_PAST_END"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cb08e19888fb6866cabe4cfca6b2fc10e6b2f64c2d301614e286b434a55023ad",
                                "typeString": "literal_string \"START_PAST_END\""
                              }
                            ],
                            "id": 15720,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2282:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2282:66:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15728,
                        "nodeType": "ExpressionStatement",
                        "src": "2282:66:50"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 15736,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 15733,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 15730,
                                    "name": "incentive",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15701,
                                    "src": "2366:9:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                                      "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive memory"
                                    }
                                  },
                                  "id": 15731,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "endTime",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15627,
                                  "src": "2366:17:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "hexValue": "3930",
                                  "id": 15732,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2386:7:50",
                                  "subdenomination": "days",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_7776000_by_1",
                                    "typeString": "int_const 7776000"
                                  },
                                  "value": "90"
                                },
                                "src": "2366:27:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "expression": {
                                  "id": 15734,
                                  "name": "incentive",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15701,
                                  "src": "2396:9:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                                    "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive memory"
                                  }
                                },
                                "id": 15735,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "expiry",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15629,
                                "src": "2396:16:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "2366:46:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "454e445f504153545f425546464552",
                              "id": 15737,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2414:17:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dcd44d1be4a080a39dedf638ab6fc06e5bda24b9361a1312339045cc5bc524f5",
                                "typeString": "literal_string \"END_PAST_BUFFER\""
                              },
                              "value": "END_PAST_BUFFER"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dcd44d1be4a080a39dedf638ab6fc06e5bda24b9361a1312339045cc5bc524f5",
                                "typeString": "literal_string \"END_PAST_BUFFER\""
                              }
                            ],
                            "id": 15729,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2358:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2358:74:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15739,
                        "nodeType": "ExpressionStatement",
                        "src": "2358:74:50"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 15744,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 15741,
                                  "name": "incentive",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15701,
                                  "src": "2450:9:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                                    "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive memory"
                                  }
                                },
                                "id": 15742,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rewardsUnclaimed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15633,
                                "src": "2450:26:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 15743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2480:1:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2450:31:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e4f5f52455741524453",
                              "id": 15745,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2483:12:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ab0fdba2fca8284866a3134aeb0c4fadcca0955bd6b23b868986ab51970d31c4",
                                "typeString": "literal_string \"NO_REWARDS\""
                              },
                              "value": "NO_REWARDS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ab0fdba2fca8284866a3134aeb0c4fadcca0955bd6b23b868986ab51970d31c4",
                                "typeString": "literal_string \"NO_REWARDS\""
                              }
                            ],
                            "id": 15740,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2442:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2442:54:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15747,
                        "nodeType": "ExpressionStatement",
                        "src": "2442:54:50"
                      },
                      {
                        "expression": {
                          "id": 15752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 15748,
                              "name": "incentive",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15701,
                              "src": "2506:9:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                                "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive memory"
                              }
                            },
                            "id": 15750,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "secondsClaimed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15631,
                            "src": "2506:24:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "30",
                            "id": 15751,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2533:1:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2506:28:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "id": 15753,
                        "nodeType": "ExpressionStatement",
                        "src": "2506:28:50"
                      },
                      {
                        "expression": {
                          "id": 15763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 15754,
                                "name": "incentives",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15658,
                                "src": "2544:10:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_contract$_IConcentratedLiquidityPool_$2753_$_t_mapping$_t_uint256_$_t_struct$_Incentive_$15634_storage_$_$",
                                  "typeString": "mapping(contract IConcentratedLiquidityPool => mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Incentive storage ref))"
                                }
                              },
                              "id": 15760,
                              "indexExpression": {
                                "id": 15755,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15698,
                                "src": "2555:4:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                  "typeString": "contract IConcentratedLiquidityPool"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2544:16:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Incentive_$15634_storage_$",
                                "typeString": "mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Incentive storage ref)"
                              }
                            },
                            "id": 15761,
                            "indexExpression": {
                              "id": 15759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": false,
                              "src": "2561:22:50",
                              "subExpression": {
                                "baseExpression": {
                                  "id": 15756,
                                  "name": "incentiveCount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15650,
                                  "src": "2561:14:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_contract$_IConcentratedLiquidityPool_$2753_$_t_uint256_$",
                                    "typeString": "mapping(contract IConcentratedLiquidityPool => uint256)"
                                  }
                                },
                                "id": 15758,
                                "indexExpression": {
                                  "id": 15757,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15698,
                                  "src": "2576:4:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                    "typeString": "contract IConcentratedLiquidityPool"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "2561:20:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2544:40:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Incentive_$15634_storage",
                              "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 15762,
                            "name": "incentive",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15701,
                            "src": "2587:9:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                              "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive memory"
                            }
                          },
                          "src": "2544:52:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Incentive_$15634_storage",
                            "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive storage ref"
                          }
                        },
                        "id": 15764,
                        "nodeType": "ExpressionStatement",
                        "src": "2544:52:50"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 15766,
                                "name": "incentive",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15701,
                                "src": "2616:9:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                                  "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive memory"
                                }
                              },
                              "id": 15767,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "token",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15623,
                              "src": "2616:15:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 15768,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2633:3:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 15769,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2633:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 15772,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "2653:4:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolStaker_$16453",
                                    "typeString": "contract ConcentratedLiquidityPoolStaker"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolStaker_$16453",
                                    "typeString": "contract ConcentratedLiquidityPoolStaker"
                                  }
                                ],
                                "id": 15771,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2645:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 15770,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2645:7:50",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15773,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2645:13:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 15774,
                                "name": "incentive",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15701,
                                "src": "2660:9:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                                  "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive memory"
                                }
                              },
                              "id": 15775,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "rewardsUnclaimed",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15633,
                              "src": "2660:26:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 15776,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2688:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 15765,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16452,
                            "src": "2606:9:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bool)"
                            }
                          },
                          "id": 15777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2606:88:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15778,
                        "nodeType": "ExpressionStatement",
                        "src": "2606:88:50"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 15780,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15698,
                              "src": "2722:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                "typeString": "contract IConcentratedLiquidityPool"
                              }
                            },
                            {
                              "baseExpression": {
                                "id": 15781,
                                "name": "incentiveCount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15650,
                                "src": "2728:14:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_contract$_IConcentratedLiquidityPool_$2753_$_t_uint256_$",
                                  "typeString": "mapping(contract IConcentratedLiquidityPool => uint256)"
                                }
                              },
                              "id": 15783,
                              "indexExpression": {
                                "id": 15782,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15698,
                                "src": "2743:4:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                  "typeString": "contract IConcentratedLiquidityPool"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2728:20:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 15784,
                                "name": "incentive",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15701,
                                "src": "2750:9:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                                  "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive memory"
                                }
                              },
                              "id": 15785,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "token",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15623,
                              "src": "2750:15:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                "typeString": "contract IConcentratedLiquidityPool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 15779,
                            "name": "AddIncentive",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15594,
                            "src": "2709:12:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConcentratedLiquidityPool_$2753_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (contract IConcentratedLiquidityPool,uint256,address)"
                            }
                          },
                          "id": 15786,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2709:57:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15787,
                        "nodeType": "EmitStatement",
                        "src": "2704:62:50"
                      }
                    ]
                  },
                  "functionSelector": "8dde6dba",
                  "id": 15789,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "addIncentive",
                  "nameLocation": "2073:12:50",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15702,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15698,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "2113:4:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15789,
                        "src": "2086:31:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                          "typeString": "contract IConcentratedLiquidityPool"
                        },
                        "typeName": {
                          "id": 15697,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 15696,
                            "name": "IConcentratedLiquidityPool",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2753,
                            "src": "2086:26:50"
                          },
                          "referencedDeclaration": 2753,
                          "src": "2086:26:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                            "typeString": "contract IConcentratedLiquidityPool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15701,
                        "mutability": "mutable",
                        "name": "incentive",
                        "nameLocation": "2136:9:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15789,
                        "src": "2119:26:50",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                          "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive"
                        },
                        "typeName": {
                          "id": 15700,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 15699,
                            "name": "Incentive",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 15634,
                            "src": "2119:9:50"
                          },
                          "referencedDeclaration": 15634,
                          "src": "2119:9:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                            "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2085:61:50"
                  },
                  "returnParameters": {
                    "id": 15703,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2154:0:50"
                  },
                  "scope": 16453,
                  "src": "2064:709:50",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 15866,
                    "nodeType": "Block",
                    "src": "3019:469:50",
                    "statements": [
                      {
                        "assignments": [
                          15806
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15806,
                            "mutability": "mutable",
                            "name": "incentive",
                            "nameLocation": "3047:9:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 15866,
                            "src": "3029:27:50",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                              "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive"
                            },
                            "typeName": {
                              "id": 15805,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 15804,
                                "name": "Incentive",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 15634,
                                "src": "3029:9:50"
                              },
                              "referencedDeclaration": 15634,
                              "src": "3029:9:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                                "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15812,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 15807,
                              "name": "incentives",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15658,
                              "src": "3059:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_contract$_IConcentratedLiquidityPool_$2753_$_t_mapping$_t_uint256_$_t_struct$_Incentive_$15634_storage_$_$",
                                "typeString": "mapping(contract IConcentratedLiquidityPool => mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Incentive storage ref))"
                              }
                            },
                            "id": 15809,
                            "indexExpression": {
                              "id": 15808,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15793,
                              "src": "3070:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                "typeString": "contract IConcentratedLiquidityPool"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3059:16:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Incentive_$15634_storage_$",
                              "typeString": "mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Incentive storage ref)"
                            }
                          },
                          "id": 15811,
                          "indexExpression": {
                            "id": 15810,
                            "name": "incentiveId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15795,
                            "src": "3076:11:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "3059:29:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Incentive_$15634_storage",
                            "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3029:59:50"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 15818,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 15814,
                                  "name": "incentive",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15806,
                                  "src": "3106:9:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                                    "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive storage pointer"
                                  }
                                },
                                "id": 15815,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "owner",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15621,
                                "src": "3106:15:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 15816,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "3125:3:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 15817,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "3125:10:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3106:29:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e4f545f4f574e4552",
                              "id": 15819,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3137:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2",
                                "typeString": "literal_string \"NOT_OWNER\""
                              },
                              "value": "NOT_OWNER"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2",
                                "typeString": "literal_string \"NOT_OWNER\""
                              }
                            ],
                            "id": 15813,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3098:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15820,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3098:51:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15821,
                        "nodeType": "ExpressionStatement",
                        "src": "3098:51:50"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 15827,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 15823,
                                  "name": "incentive",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15806,
                                  "src": "3167:9:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                                    "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive storage pointer"
                                  }
                                },
                                "id": 15824,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "expiry",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15629,
                                "src": "3167:16:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "expression": {
                                  "id": 15825,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "3186:5:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 15826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "3186:15:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3167:34:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45585049524544",
                              "id": 15828,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3203:9:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a",
                                "typeString": "literal_string \"EXPIRED\""
                              },
                              "value": "EXPIRED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a",
                                "typeString": "literal_string \"EXPIRED\""
                              }
                            ],
                            "id": 15822,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3159:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3159:54:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15830,
                        "nodeType": "ExpressionStatement",
                        "src": "3159:54:50"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              "id": 15835,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 15832,
                                  "name": "incentive",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15806,
                                  "src": "3231:9:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                                    "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive storage pointer"
                                  }
                                },
                                "id": 15833,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "rewardsUnclaimed",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 15633,
                                "src": "3231:26:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 15834,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15799,
                                "src": "3261:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "src": "3231:36:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "414c52454144595f434c41494d4544",
                              "id": 15836,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3269:17:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fc7a4f08369e04191e5d601ef52230a181560bfbd7431497090a8eabc5119861",
                                "typeString": "literal_string \"ALREADY_CLAIMED\""
                              },
                              "value": "ALREADY_CLAIMED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fc7a4f08369e04191e5d601ef52230a181560bfbd7431497090a8eabc5119861",
                                "typeString": "literal_string \"ALREADY_CLAIMED\""
                              }
                            ],
                            "id": 15831,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3223:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3223:64:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15838,
                        "nodeType": "ExpressionStatement",
                        "src": "3223:64:50"
                      },
                      {
                        "expression": {
                          "id": 15846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "id": 15839,
                              "name": "incentive",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15806,
                              "src": "3297:9:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                                "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive storage pointer"
                              }
                            },
                            "id": 15841,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "rewardsUnclaimed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15633,
                            "src": "3297:26:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 15844,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15799,
                                "src": "3334:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              ],
                              "id": 15843,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3327:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint96_$",
                                "typeString": "type(uint96)"
                              },
                              "typeName": {
                                "id": 15842,
                                "name": "uint96",
                                "nodeType": "ElementaryTypeName",
                                "src": "3327:6:50",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 15845,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3327:14:50",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint96",
                              "typeString": "uint96"
                            }
                          },
                          "src": "3297:44:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "id": 15847,
                        "nodeType": "ExpressionStatement",
                        "src": "3297:44:50"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 15849,
                                "name": "incentive",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15806,
                                "src": "3361:9:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                                  "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive storage pointer"
                                }
                              },
                              "id": 15850,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "token",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 15623,
                              "src": "3361:15:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 15853,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "3386:4:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolStaker_$16453",
                                    "typeString": "contract ConcentratedLiquidityPoolStaker"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolStaker_$16453",
                                    "typeString": "contract ConcentratedLiquidityPoolStaker"
                                  }
                                ],
                                "id": 15852,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3378:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 15851,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3378:7:50",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15854,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3378:13:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 15855,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15797,
                              "src": "3393:8:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 15856,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15799,
                              "src": "3403:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            },
                            {
                              "id": 15857,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15801,
                              "src": "3411:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 15848,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16452,
                            "src": "3351:9:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bool)"
                            }
                          },
                          "id": 15858,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3351:72:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15859,
                        "nodeType": "ExpressionStatement",
                        "src": "3351:72:50"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 15861,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15793,
                              "src": "3455:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                "typeString": "contract IConcentratedLiquidityPool"
                              }
                            },
                            {
                              "id": 15862,
                              "name": "incentiveId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15795,
                              "src": "3461:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 15863,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15799,
                              "src": "3474:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                "typeString": "contract IConcentratedLiquidityPool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint96",
                                "typeString": "uint96"
                              }
                            ],
                            "id": 15860,
                            "name": "ReclaimIncentive",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15619,
                            "src": "3438:16:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_contract$_IConcentratedLiquidityPool_$2753_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (contract IConcentratedLiquidityPool,uint256,uint256)"
                            }
                          },
                          "id": 15864,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3438:43:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15865,
                        "nodeType": "EmitStatement",
                        "src": "3433:48:50"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15790,
                    "nodeType": "StructuredDocumentation",
                    "src": "2779:51:50",
                    "text": "@dev Withdraws any unclaimed incentive rewards."
                  },
                  "functionSelector": "55a93140",
                  "id": 15867,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "reclaimIncentive",
                  "nameLocation": "2844:16:50",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15802,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15793,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "2897:4:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15867,
                        "src": "2870:31:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                          "typeString": "contract IConcentratedLiquidityPool"
                        },
                        "typeName": {
                          "id": 15792,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 15791,
                            "name": "IConcentratedLiquidityPool",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2753,
                            "src": "2870:26:50"
                          },
                          "referencedDeclaration": 2753,
                          "src": "2870:26:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                            "typeString": "contract IConcentratedLiquidityPool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15795,
                        "mutability": "mutable",
                        "name": "incentiveId",
                        "nameLocation": "2919:11:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15867,
                        "src": "2911:19:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15794,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2911:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15797,
                        "mutability": "mutable",
                        "name": "receiver",
                        "nameLocation": "2948:8:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15867,
                        "src": "2940:16:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 15796,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2940:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15799,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2973:6:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15867,
                        "src": "2966:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint96",
                          "typeString": "uint96"
                        },
                        "typeName": {
                          "id": 15798,
                          "name": "uint96",
                          "nodeType": "ElementaryTypeName",
                          "src": "2966:6:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint96",
                            "typeString": "uint96"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15801,
                        "mutability": "mutable",
                        "name": "unwrapBento",
                        "nameLocation": "2994:11:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 15867,
                        "src": "2989:16:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 15800,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2989:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2860:151:50"
                  },
                  "returnParameters": {
                    "id": 15803,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3019:0:50"
                  },
                  "scope": 16453,
                  "src": "2835:653:50",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16006,
                    "nodeType": "Block",
                    "src": "3645:929:50",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 15883,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 15879,
                                    "name": "positionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15870,
                                    "src": "3683:10:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 15877,
                                    "name": "poolManager",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15645,
                                    "src": "3663:11:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConcentratedLiquidityPoolManager_$2796",
                                      "typeString": "contract IConcentratedLiquidityPoolManager"
                                    }
                                  },
                                  "id": 15878,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "ownerOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2492,
                                  "src": "3663:19:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                                    "typeString": "function (uint256) view external returns (address)"
                                  }
                                },
                                "id": 15880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3663:31:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 15881,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "3698:3:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 15882,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "3698:10:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3663:45:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e4f545f4f574e4552",
                              "id": 15884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3710:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2",
                                "typeString": "literal_string \"NOT_OWNER\""
                              },
                              "value": "NOT_OWNER"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2",
                                "typeString": "literal_string \"NOT_OWNER\""
                              }
                            ],
                            "id": 15876,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3655:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3655:67:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15886,
                        "nodeType": "ExpressionStatement",
                        "src": "3655:67:50"
                      },
                      {
                        "assignments": [
                          15891
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15891,
                            "mutability": "mutable",
                            "name": "position",
                            "nameLocation": "3761:8:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 16006,
                            "src": "3732:37:50",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                              "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position"
                            },
                            "typeName": {
                              "id": 15890,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 15889,
                                "name": "IPoolManager.Position",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2775,
                                "src": "3732:21:50"
                              },
                              "referencedDeclaration": 2775,
                              "src": "3732:21:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15896,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 15894,
                              "name": "positionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15870,
                              "src": "3794:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 15892,
                              "name": "poolManager",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15645,
                              "src": "3772:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConcentratedLiquidityPoolManager_$2796",
                                "typeString": "contract IConcentratedLiquidityPoolManager"
                              }
                            },
                            "id": 15893,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "positions",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2789,
                            "src": "3772:21:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_Position_$2775_memory_ptr_$",
                              "typeString": "function (uint256) view external returns (struct IConcentratedLiquidityPoolManagerStruct.Position memory)"
                            }
                          },
                          "id": 15895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3772:33:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                            "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3732:73:50"
                      },
                      {
                        "assignments": [
                          15899
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15899,
                            "mutability": "mutable",
                            "name": "pool",
                            "nameLocation": "3842:4:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 16006,
                            "src": "3815:31:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                              "typeString": "contract IConcentratedLiquidityPool"
                            },
                            "typeName": {
                              "id": 15898,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 15897,
                                "name": "IConcentratedLiquidityPool",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2753,
                                "src": "3815:26:50"
                              },
                              "referencedDeclaration": 2753,
                              "src": "3815:26:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                "typeString": "contract IConcentratedLiquidityPool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15902,
                        "initialValue": {
                          "expression": {
                            "id": 15900,
                            "name": "position",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15891,
                            "src": "3849:8:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                              "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                            }
                          },
                          "id": 15901,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pool",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2761,
                          "src": "3849:13:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                            "typeString": "contract IConcentratedLiquidityPool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3815:47:50"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              "id": 15907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 15904,
                                  "name": "position",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15891,
                                  "src": "3880:8:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                                    "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                                  }
                                },
                                "id": 15905,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "liquidity",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2763,
                                "src": "3880:18:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 15906,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3902:1:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3880:23:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e414354495645",
                              "id": 15908,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3905:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0e71c910d536b61fcef69518c42a88c159e7af67bb3870c8551c6d0c8616ea97",
                                "typeString": "literal_string \"INACTIVE\""
                              },
                              "value": "INACTIVE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0e71c910d536b61fcef69518c42a88c159e7af67bb3870c8551c6d0c8616ea97",
                                "typeString": "literal_string \"INACTIVE\""
                              }
                            ],
                            "id": 15903,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3872:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 15909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3872:44:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15910,
                        "nodeType": "ExpressionStatement",
                        "src": "3872:44:50"
                      },
                      {
                        "assignments": [
                          15913
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 15913,
                            "mutability": "mutable",
                            "name": "stakeData",
                            "nameLocation": "3939:9:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 16006,
                            "src": "3926:22:50",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Stake_$15639_memory_ptr",
                              "typeString": "struct ConcentratedLiquidityPoolStaker.Stake"
                            },
                            "typeName": {
                              "id": 15912,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 15911,
                                "name": "Stake",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 15639,
                                "src": "3926:5:50"
                              },
                              "referencedDeclaration": 15639,
                              "src": "3926:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Stake_$15639_storage_ptr",
                                "typeString": "struct ConcentratedLiquidityPoolStaker.Stake"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 15931,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 15918,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15899,
                                      "src": "3984:4:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                        "typeString": "contract IConcentratedLiquidityPool"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 15919,
                                        "name": "position",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15891,
                                        "src": "3990:8:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                                          "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                                        }
                                      },
                                      "id": 15920,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lower",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2765,
                                      "src": "3990:14:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 15921,
                                        "name": "position",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15891,
                                        "src": "4006:8:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                                          "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                                        }
                                      },
                                      "id": 15922,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "upper",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2767,
                                      "src": "4006:14:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                        "typeString": "contract IConcentratedLiquidityPool"
                                      },
                                      {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      },
                                      {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    ],
                                    "id": 15917,
                                    "name": "rangeSecondsInside",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16415,
                                    "src": "3965:18:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_contract$_IConcentratedLiquidityPool_$2753_$_t_int24_$_t_int24_$returns$_t_uint256_$",
                                      "typeString": "function (contract IConcentratedLiquidityPool,int24,int24) view returns (uint256)"
                                    }
                                  },
                                  "id": 15923,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3965:56:50",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 15916,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3957:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint160_$",
                                  "typeString": "type(uint160)"
                                },
                                "typeName": {
                                  "id": 15915,
                                  "name": "uint160",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3957:7:50",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15924,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3957:65:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 15927,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "4031:5:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 15928,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "src": "4031:15:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 15926,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4024:6:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint32_$",
                                  "typeString": "type(uint32)"
                                },
                                "typeName": {
                                  "id": 15925,
                                  "name": "uint32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4024:6:50",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 15929,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4024:23:50",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 15914,
                            "name": "Stake",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15639,
                            "src": "3951:5:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_Stake_$15639_storage_ptr_$",
                              "typeString": "type(struct ConcentratedLiquidityPoolStaker.Stake storage pointer)"
                            }
                          },
                          "id": 15930,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "structConstructorCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3951:97:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Stake_$15639_memory_ptr",
                            "typeString": "struct ConcentratedLiquidityPoolStaker.Stake memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3926:122:50"
                      },
                      {
                        "body": {
                          "id": 16004,
                          "nodeType": "Block",
                          "src": "4103:465:50",
                          "statements": [
                            {
                              "assignments": [
                                15944
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 15944,
                                  "mutability": "mutable",
                                  "name": "incentive",
                                  "nameLocation": "4134:9:50",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16004,
                                  "src": "4117:26:50",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                                    "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive"
                                  },
                                  "typeName": {
                                    "id": 15943,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 15942,
                                      "name": "Incentive",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 15634,
                                      "src": "4117:9:50"
                                    },
                                    "referencedDeclaration": 15634,
                                    "src": "4117:9:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                                      "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 15952,
                              "initialValue": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 15945,
                                    "name": "incentives",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15658,
                                    "src": "4146:10:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_contract$_IConcentratedLiquidityPool_$2753_$_t_mapping$_t_uint256_$_t_struct$_Incentive_$15634_storage_$_$",
                                      "typeString": "mapping(contract IConcentratedLiquidityPool => mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Incentive storage ref))"
                                    }
                                  },
                                  "id": 15947,
                                  "indexExpression": {
                                    "id": 15946,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15899,
                                    "src": "4157:4:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                      "typeString": "contract IConcentratedLiquidityPool"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4146:16:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Incentive_$15634_storage_$",
                                    "typeString": "mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Incentive storage ref)"
                                  }
                                },
                                "id": 15951,
                                "indexExpression": {
                                  "baseExpression": {
                                    "id": 15948,
                                    "name": "incentiveId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15873,
                                    "src": "4163:11:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  "id": 15950,
                                  "indexExpression": {
                                    "id": 15949,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15933,
                                    "src": "4175:1:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4163:14:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4146:32:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Incentive_$15634_storage",
                                  "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4117:61:50"
                            },
                            {
                              "assignments": [
                                15955
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 15955,
                                  "mutability": "mutable",
                                  "name": "stake",
                                  "nameLocation": "4206:5:50",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16004,
                                  "src": "4192:19:50",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Stake_$15639_storage_ptr",
                                    "typeString": "struct ConcentratedLiquidityPoolStaker.Stake"
                                  },
                                  "typeName": {
                                    "id": 15954,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 15953,
                                      "name": "Stake",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 15639,
                                      "src": "4192:5:50"
                                    },
                                    "referencedDeclaration": 15639,
                                    "src": "4192:5:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Stake_$15639_storage_ptr",
                                      "typeString": "struct ConcentratedLiquidityPoolStaker.Stake"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 15963,
                              "initialValue": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 15956,
                                    "name": "stakes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15666,
                                    "src": "4214:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Stake_$15639_storage_$_$",
                                      "typeString": "mapping(uint256 => mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Stake storage ref))"
                                    }
                                  },
                                  "id": 15958,
                                  "indexExpression": {
                                    "id": 15957,
                                    "name": "positionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15870,
                                    "src": "4221:10:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4214:18:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Stake_$15639_storage_$",
                                    "typeString": "mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Stake storage ref)"
                                  }
                                },
                                "id": 15962,
                                "indexExpression": {
                                  "baseExpression": {
                                    "id": 15959,
                                    "name": "incentiveId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15873,
                                    "src": "4233:11:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                      "typeString": "uint256[] calldata"
                                    }
                                  },
                                  "id": 15961,
                                  "indexExpression": {
                                    "id": 15960,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15933,
                                    "src": "4245:1:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4233:14:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4214:34:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Stake_$15639_storage",
                                  "typeString": "struct ConcentratedLiquidityPoolStaker.Stake storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4192:56:50"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    },
                                    "id": 15968,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 15965,
                                        "name": "stake",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 15955,
                                        "src": "4270:5:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Stake_$15639_storage_ptr",
                                          "typeString": "struct ConcentratedLiquidityPoolStaker.Stake storage pointer"
                                        }
                                      },
                                      "id": 15966,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "secondsGrowthInsideLast",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 15636,
                                      "src": "4270:29:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 15967,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4303:1:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "4270:34:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "53554253435249424544",
                                    "id": 15969,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4306:12:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_bef79342ff5beb9be70ce1261196de6c0c107d0391ce9a239f19bb0d16391251",
                                      "typeString": "literal_string \"SUBSCRIBED\""
                                    },
                                    "value": "SUBSCRIBED"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_bef79342ff5beb9be70ce1261196de6c0c107d0391ce9a239f19bb0d16391251",
                                      "typeString": "literal_string \"SUBSCRIBED\""
                                    }
                                  ],
                                  "id": 15964,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "4262:7:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 15970,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4262:57:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 15971,
                              "nodeType": "ExpressionStatement",
                              "src": "4262:57:50"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 15983,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 15977,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 15973,
                                          "name": "block",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -4,
                                          "src": "4341:5:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_block",
                                            "typeString": "block"
                                          }
                                        },
                                        "id": 15974,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "timestamp",
                                        "nodeType": "MemberAccess",
                                        "src": "4341:15:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "expression": {
                                          "id": 15975,
                                          "name": "incentive",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15944,
                                          "src": "4360:9:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                                            "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive memory"
                                          }
                                        },
                                        "id": 15976,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "startTime",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 15625,
                                        "src": "4360:19:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "4341:38:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 15982,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 15978,
                                          "name": "block",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -4,
                                          "src": "4383:5:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_block",
                                            "typeString": "block"
                                          }
                                        },
                                        "id": 15979,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "timestamp",
                                        "nodeType": "MemberAccess",
                                        "src": "4383:15:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "expression": {
                                          "id": 15980,
                                          "name": "incentive",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 15944,
                                          "src": "4401:9:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                                            "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive memory"
                                          }
                                        },
                                        "id": 15981,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "endTime",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 15627,
                                        "src": "4401:17:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "4383:35:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "4341:77:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e4143544956455f494e43454e54495645",
                                    "id": 15984,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4420:20:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_f7b418992ebaaccd3e55c9e3733f16e2ff7ae544a45c007051e0c530639f99d1",
                                      "typeString": "literal_string \"INACTIVE_INCENTIVE\""
                                    },
                                    "value": "INACTIVE_INCENTIVE"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_f7b418992ebaaccd3e55c9e3733f16e2ff7ae544a45c007051e0c530639f99d1",
                                      "typeString": "literal_string \"INACTIVE_INCENTIVE\""
                                    }
                                  ],
                                  "id": 15972,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "4333:7:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 15985,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4333:108:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 15986,
                              "nodeType": "ExpressionStatement",
                              "src": "4333:108:50"
                            },
                            {
                              "expression": {
                                "id": 15995,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 15987,
                                      "name": "stakes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15666,
                                      "src": "4455:6:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Stake_$15639_storage_$_$",
                                        "typeString": "mapping(uint256 => mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Stake storage ref))"
                                      }
                                    },
                                    "id": 15992,
                                    "indexExpression": {
                                      "id": 15988,
                                      "name": "positionId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15870,
                                      "src": "4462:10:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4455:18:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Stake_$15639_storage_$",
                                      "typeString": "mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Stake storage ref)"
                                    }
                                  },
                                  "id": 15993,
                                  "indexExpression": {
                                    "baseExpression": {
                                      "id": 15989,
                                      "name": "incentiveId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15873,
                                      "src": "4474:11:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 15991,
                                    "indexExpression": {
                                      "id": 15990,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15933,
                                      "src": "4486:1:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4474:14:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4455:34:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Stake_$15639_storage",
                                    "typeString": "struct ConcentratedLiquidityPoolStaker.Stake storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 15994,
                                  "name": "stakeData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15913,
                                  "src": "4492:9:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Stake_$15639_memory_ptr",
                                    "typeString": "struct ConcentratedLiquidityPoolStaker.Stake memory"
                                  }
                                },
                                "src": "4455:46:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Stake_$15639_storage",
                                  "typeString": "struct ConcentratedLiquidityPoolStaker.Stake storage ref"
                                }
                              },
                              "id": 15996,
                              "nodeType": "ExpressionStatement",
                              "src": "4455:46:50"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 15998,
                                    "name": "positionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15870,
                                    "src": "4530:10:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 15999,
                                      "name": "incentiveId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15873,
                                      "src": "4542:11:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 16001,
                                    "indexExpression": {
                                      "id": 16000,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15933,
                                      "src": "4554:1:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4542:14:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 15997,
                                  "name": "Subscribe",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15600,
                                  "src": "4520:9:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint256)"
                                  }
                                },
                                "id": 16002,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4520:37:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 16003,
                              "nodeType": "EmitStatement",
                              "src": "4515:42:50"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 15938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 15935,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15933,
                            "src": "4074:1:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 15936,
                              "name": "incentiveId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15873,
                              "src": "4078:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            "id": 15937,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "4078:18:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4074:22:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16005,
                        "initializationExpression": {
                          "assignments": [
                            15933
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 15933,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "4071:1:50",
                              "nodeType": "VariableDeclaration",
                              "scope": 16005,
                              "src": "4063:9:50",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 15932,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4063:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 15934,
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4063:9:50"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 15940,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4098:3:50",
                            "subExpression": {
                              "id": 15939,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15933,
                              "src": "4098:1:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 15941,
                          "nodeType": "ExpressionStatement",
                          "src": "4098:3:50"
                        },
                        "nodeType": "ForStatement",
                        "src": "4058:510:50"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 15868,
                    "nodeType": "StructuredDocumentation",
                    "src": "3494:66:50",
                    "text": "@dev Subscribes a non-fungible position token to an incentive."
                  },
                  "functionSelector": "897217bc",
                  "id": 16007,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "subscribe",
                  "nameLocation": "3574:9:50",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 15874,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 15870,
                        "mutability": "mutable",
                        "name": "positionId",
                        "nameLocation": "3592:10:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 16007,
                        "src": "3584:18:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 15869,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3584:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15873,
                        "mutability": "mutable",
                        "name": "incentiveId",
                        "nameLocation": "3623:11:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 16007,
                        "src": "3604:30:50",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 15871,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3604:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 15872,
                          "nodeType": "ArrayTypeName",
                          "src": "3604:9:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3583:52:50"
                  },
                  "returnParameters": {
                    "id": 15875,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3645:0:50"
                  },
                  "scope": 16453,
                  "src": "3565:1009:50",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 16209,
                    "nodeType": "Block",
                    "src": "4735:1635:50",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 16026,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 16022,
                                    "name": "positionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16009,
                                    "src": "4773:10:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 16020,
                                    "name": "poolManager",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15645,
                                    "src": "4753:11:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConcentratedLiquidityPoolManager_$2796",
                                      "typeString": "contract IConcentratedLiquidityPoolManager"
                                    }
                                  },
                                  "id": 16021,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "ownerOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2492,
                                  "src": "4753:19:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                                    "typeString": "function (uint256) view external returns (address)"
                                  }
                                },
                                "id": 16023,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4753:31:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 16024,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "4788:3:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 16025,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "4788:10:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4753:45:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e4f545f4f574e4552",
                              "id": 16027,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4800:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2",
                                "typeString": "literal_string \"NOT_OWNER\""
                              },
                              "value": "NOT_OWNER"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2",
                                "typeString": "literal_string \"NOT_OWNER\""
                              }
                            ],
                            "id": 16019,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4745:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4745:67:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16029,
                        "nodeType": "ExpressionStatement",
                        "src": "4745:67:50"
                      },
                      {
                        "assignments": [
                          16034
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16034,
                            "mutability": "mutable",
                            "name": "position",
                            "nameLocation": "4852:8:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 16209,
                            "src": "4823:37:50",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                              "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position"
                            },
                            "typeName": {
                              "id": 16033,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 16032,
                                "name": "IPoolManager.Position",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2775,
                                "src": "4823:21:50"
                              },
                              "referencedDeclaration": 2775,
                              "src": "4823:21:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16039,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 16037,
                              "name": "positionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16009,
                              "src": "4885:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 16035,
                              "name": "poolManager",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15645,
                              "src": "4863:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConcentratedLiquidityPoolManager_$2796",
                                "typeString": "contract IConcentratedLiquidityPoolManager"
                              }
                            },
                            "id": 16036,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "positions",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2789,
                            "src": "4863:21:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_Position_$2775_memory_ptr_$",
                              "typeString": "function (uint256) view external returns (struct IConcentratedLiquidityPoolManagerStruct.Position memory)"
                            }
                          },
                          "id": 16038,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4863:33:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                            "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4823:73:50"
                      },
                      {
                        "assignments": [
                          16042
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16042,
                            "mutability": "mutable",
                            "name": "pool",
                            "nameLocation": "4933:4:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 16209,
                            "src": "4906:31:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                              "typeString": "contract IConcentratedLiquidityPool"
                            },
                            "typeName": {
                              "id": 16041,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 16040,
                                "name": "IConcentratedLiquidityPool",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2753,
                                "src": "4906:26:50"
                              },
                              "referencedDeclaration": 2753,
                              "src": "4906:26:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                "typeString": "contract IConcentratedLiquidityPool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16045,
                        "initialValue": {
                          "expression": {
                            "id": 16043,
                            "name": "position",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16034,
                            "src": "4940:8:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                              "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                            }
                          },
                          "id": 16044,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pool",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2761,
                          "src": "4940:13:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                            "typeString": "contract IConcentratedLiquidityPool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4906:47:50"
                      },
                      {
                        "assignments": [
                          16047
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16047,
                            "mutability": "mutable",
                            "name": "currentSecondsGrowth",
                            "nameLocation": "4972:20:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 16209,
                            "src": "4964:28:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16046,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4964:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16055,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 16049,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16042,
                              "src": "5014:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                "typeString": "contract IConcentratedLiquidityPool"
                              }
                            },
                            {
                              "expression": {
                                "id": 16050,
                                "name": "position",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16034,
                                "src": "5020:8:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                                  "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                                }
                              },
                              "id": 16051,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "lower",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2765,
                              "src": "5020:14:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            {
                              "expression": {
                                "id": 16052,
                                "name": "position",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16034,
                                "src": "5036:8:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                                  "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                                }
                              },
                              "id": 16053,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "upper",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2767,
                              "src": "5036:14:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                "typeString": "contract IConcentratedLiquidityPool"
                              },
                              {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              },
                              {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            ],
                            "id": 16048,
                            "name": "rangeSecondsInside",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16415,
                            "src": "4995:18:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_contract$_IConcentratedLiquidityPool_$2753_$_t_int24_$_t_int24_$returns$_t_uint256_$",
                              "typeString": "function (contract IConcentratedLiquidityPool,int24,int24) view returns (uint256)"
                            }
                          },
                          "id": 16054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4995:56:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4964:87:50"
                      },
                      {
                        "body": {
                          "id": 16207,
                          "nodeType": "Block",
                          "src": "5112:1252:50",
                          "statements": [
                            {
                              "assignments": [
                                16069
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 16069,
                                  "mutability": "mutable",
                                  "name": "incentive",
                                  "nameLocation": "5144:9:50",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16207,
                                  "src": "5126:27:50",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                                    "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive"
                                  },
                                  "typeName": {
                                    "id": 16068,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 16067,
                                      "name": "Incentive",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 15634,
                                      "src": "5126:9:50"
                                    },
                                    "referencedDeclaration": 15634,
                                    "src": "5126:9:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                                      "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 16077,
                              "initialValue": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 16070,
                                    "name": "incentives",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15658,
                                    "src": "5156:10:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_contract$_IConcentratedLiquidityPool_$2753_$_t_mapping$_t_uint256_$_t_struct$_Incentive_$15634_storage_$_$",
                                      "typeString": "mapping(contract IConcentratedLiquidityPool => mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Incentive storage ref))"
                                    }
                                  },
                                  "id": 16072,
                                  "indexExpression": {
                                    "id": 16071,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16042,
                                    "src": "5167:4:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                      "typeString": "contract IConcentratedLiquidityPool"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5156:16:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Incentive_$15634_storage_$",
                                    "typeString": "mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Incentive storage ref)"
                                  }
                                },
                                "id": 16076,
                                "indexExpression": {
                                  "baseExpression": {
                                    "id": 16073,
                                    "name": "incentiveIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16012,
                                    "src": "5173:12:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 16075,
                                  "indexExpression": {
                                    "id": 16074,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16057,
                                    "src": "5186:1:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5173:15:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5156:33:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Incentive_$15634_storage",
                                  "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5126:63:50"
                            },
                            {
                              "assignments": [
                                16080
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 16080,
                                  "mutability": "mutable",
                                  "name": "stake",
                                  "nameLocation": "5217:5:50",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16207,
                                  "src": "5203:19:50",
                                  "stateVariable": false,
                                  "storageLocation": "storage",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Stake_$15639_storage_ptr",
                                    "typeString": "struct ConcentratedLiquidityPoolStaker.Stake"
                                  },
                                  "typeName": {
                                    "id": 16079,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 16078,
                                      "name": "Stake",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 15639,
                                      "src": "5203:5:50"
                                    },
                                    "referencedDeclaration": 15639,
                                    "src": "5203:5:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Stake_$15639_storage_ptr",
                                      "typeString": "struct ConcentratedLiquidityPoolStaker.Stake"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 16088,
                              "initialValue": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 16081,
                                    "name": "stakes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15666,
                                    "src": "5225:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Stake_$15639_storage_$_$",
                                      "typeString": "mapping(uint256 => mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Stake storage ref))"
                                    }
                                  },
                                  "id": 16083,
                                  "indexExpression": {
                                    "id": 16082,
                                    "name": "positionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16009,
                                    "src": "5232:10:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5225:18:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Stake_$15639_storage_$",
                                    "typeString": "mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Stake storage ref)"
                                  }
                                },
                                "id": 16087,
                                "indexExpression": {
                                  "baseExpression": {
                                    "id": 16084,
                                    "name": "incentiveIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16012,
                                    "src": "5244:12:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 16086,
                                  "indexExpression": {
                                    "id": 16085,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16057,
                                    "src": "5257:1:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5244:15:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5225:35:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Stake_$15639_storage",
                                  "typeString": "struct ConcentratedLiquidityPoolStaker.Stake storage ref"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5203:57:50"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 16094,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 16090,
                                        "name": "stake",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16080,
                                        "src": "5283:5:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Stake_$15639_storage_ptr",
                                          "typeString": "struct ConcentratedLiquidityPoolStaker.Stake storage pointer"
                                        }
                                      },
                                      "id": 16091,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 15638,
                                      "src": "5283:15:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 16092,
                                        "name": "position",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16034,
                                        "src": "5302:8:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                                          "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                                        }
                                      },
                                      "id": 16093,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "latestAddition",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2769,
                                      "src": "5302:23:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "5283:42:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4d5553545f5245535542534352494245",
                                    "id": 16095,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5327:18:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_236deface2a03101838156d5ccd245101656bb61b7c02b358c9d5b10c7c6d4bd",
                                      "typeString": "literal_string \"MUST_RESUBSCRIBE\""
                                    },
                                    "value": "MUST_RESUBSCRIBE"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_236deface2a03101838156d5ccd245101656bb61b7c02b358c9d5b10c7c6d4bd",
                                      "typeString": "literal_string \"MUST_RESUBSCRIBE\""
                                    }
                                  ],
                                  "id": 16089,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "5275:7:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 16096,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5275:71:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 16097,
                              "nodeType": "ExpressionStatement",
                              "src": "5275:71:50"
                            },
                            {
                              "assignments": [
                                16099
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 16099,
                                  "mutability": "mutable",
                                  "name": "rewards",
                                  "nameLocation": "5369:7:50",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16207,
                                  "src": "5361:15:50",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 16098,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5361:7:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 16100,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5361:15:50"
                            },
                            {
                              "assignments": [
                                16102
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 16102,
                                  "mutability": "mutable",
                                  "name": "secondsInside",
                                  "nameLocation": "5398:13:50",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16207,
                                  "src": "5390:21:50",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 16101,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5390:7:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 16103,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5390:21:50"
                            },
                            {
                              "id": 16155,
                              "nodeType": "Block",
                              "src": "5426:552:50",
                              "statements": [
                                {
                                  "assignments": [
                                    16105
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 16105,
                                      "mutability": "mutable",
                                      "name": "secondsGrowth",
                                      "nameLocation": "5452:13:50",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 16155,
                                      "src": "5444:21:50",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 16104,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5444:7:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 16110,
                                  "initialValue": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16109,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 16106,
                                      "name": "currentSecondsGrowth",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16047,
                                      "src": "5468:20:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 16107,
                                        "name": "stake",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16080,
                                        "src": "5491:5:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Stake_$15639_storage_ptr",
                                          "typeString": "struct ConcentratedLiquidityPoolStaker.Stake storage pointer"
                                        }
                                      },
                                      "id": 16108,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "secondsGrowthInsideLast",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 15636,
                                      "src": "5491:29:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      }
                                    },
                                    "src": "5468:52:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "5444:76:50"
                                },
                                {
                                  "assignments": [
                                    16112
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 16112,
                                      "mutability": "mutable",
                                      "name": "maxTime",
                                      "nameLocation": "5546:7:50",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 16155,
                                      "src": "5538:15:50",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 16111,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5538:7:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 16123,
                                  "initialValue": {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 16117,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 16113,
                                          "name": "block",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -4,
                                          "src": "5556:5:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_block",
                                            "typeString": "block"
                                          }
                                        },
                                        "id": 16114,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "timestamp",
                                        "nodeType": "MemberAccess",
                                        "src": "5556:15:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "expression": {
                                          "id": 16115,
                                          "name": "incentive",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16069,
                                          "src": "5574:9:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                                            "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive storage pointer"
                                          }
                                        },
                                        "id": 16116,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "endTime",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 15627,
                                        "src": "5574:17:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      },
                                      "src": "5556:35:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseExpression": {
                                      "expression": {
                                        "id": 16120,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "5614:5:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 16121,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "src": "5614:15:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 16122,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "Conditional",
                                    "src": "5556:73:50",
                                    "trueExpression": {
                                      "expression": {
                                        "id": 16118,
                                        "name": "incentive",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16069,
                                        "src": "5594:9:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                                          "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive storage pointer"
                                        }
                                      },
                                      "id": 16119,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "endTime",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 15627,
                                      "src": "5594:17:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "5538:91:50"
                                },
                                {
                                  "assignments": [
                                    16125
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 16125,
                                      "mutability": "mutable",
                                      "name": "secondsUnclaimed",
                                      "nameLocation": "5655:16:50",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 16155,
                                      "src": "5647:24:50",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 16124,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5647:7:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 16137,
                                  "initialValue": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 16136,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 16132,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 16129,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 16126,
                                                  "name": "maxTime",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 16112,
                                                  "src": "5676:7:50",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "-",
                                                "rightExpression": {
                                                  "expression": {
                                                    "id": 16127,
                                                    "name": "incentive",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 16069,
                                                    "src": "5686:9:50",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                                                      "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive storage pointer"
                                                    }
                                                  },
                                                  "id": 16128,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "startTime",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 15625,
                                                  "src": "5686:19:50",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                  }
                                                },
                                                "src": "5676:29:50",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 16130,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "5675:31:50",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<<",
                                          "rightExpression": {
                                            "hexValue": "313238",
                                            "id": 16131,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5710:3:50",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_128_by_1",
                                              "typeString": "int_const 128"
                                            },
                                            "value": "128"
                                          },
                                          "src": "5675:38:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 16133,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "5674:40:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 16134,
                                        "name": "incentive",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16069,
                                        "src": "5717:9:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                                          "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive storage pointer"
                                        }
                                      },
                                      "id": 16135,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "secondsClaimed",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 15631,
                                      "src": "5717:24:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint160",
                                        "typeString": "uint160"
                                      }
                                    },
                                    "src": "5674:67:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "5647:94:50"
                                },
                                {
                                  "expression": {
                                    "id": 16143,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 16138,
                                      "name": "secondsInside",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16102,
                                      "src": "5759:13:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 16142,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 16139,
                                        "name": "secondsGrowth",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16105,
                                        "src": "5775:13:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "expression": {
                                          "id": 16140,
                                          "name": "position",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16034,
                                          "src": "5791:8:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                                            "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                                          }
                                        },
                                        "id": 16141,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "liquidity",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2763,
                                        "src": "5791:18:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint128",
                                          "typeString": "uint128"
                                        }
                                      },
                                      "src": "5775:34:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5759:50:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 16144,
                                  "nodeType": "ExpressionStatement",
                                  "src": "5759:50:50"
                                },
                                {
                                  "expression": {
                                    "id": 16153,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 16145,
                                      "name": "rewards",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16099,
                                      "src": "5868:7:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 16152,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 16149,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "expression": {
                                                "id": 16146,
                                                "name": "incentive",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 16069,
                                                "src": "5879:9:50",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                                                  "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive storage pointer"
                                                }
                                              },
                                              "id": 16147,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "rewardsUnclaimed",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 15633,
                                              "src": "5879:26:50",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint96",
                                                "typeString": "uint96"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "id": 16148,
                                              "name": "secondsInside",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 16102,
                                              "src": "5908:13:50",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "5879:42:50",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 16150,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "5878:44:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "id": 16151,
                                        "name": "secondsUnclaimed",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16125,
                                        "src": "5925:16:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5878:63:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5868:73:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 16154,
                                  "nodeType": "ExpressionStatement",
                                  "src": "5868:73:50"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "id": 16163,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 16156,
                                    "name": "stake",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16080,
                                    "src": "5992:5:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Stake_$15639_storage_ptr",
                                      "typeString": "struct ConcentratedLiquidityPoolStaker.Stake storage pointer"
                                    }
                                  },
                                  "id": 16158,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "secondsGrowthInsideLast",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15636,
                                  "src": "5992:29:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 16161,
                                      "name": "currentSecondsGrowth",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16047,
                                      "src": "6032:20:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 16160,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "6024:7:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint160_$",
                                      "typeString": "type(uint160)"
                                    },
                                    "typeName": {
                                      "id": 16159,
                                      "name": "uint160",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6024:7:50",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 16162,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6024:29:50",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                "src": "5992:61:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              "id": 16164,
                              "nodeType": "ExpressionStatement",
                              "src": "5992:61:50"
                            },
                            {
                              "expression": {
                                "id": 16172,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 16165,
                                    "name": "incentive",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16069,
                                    "src": "6067:9:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                                      "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive storage pointer"
                                    }
                                  },
                                  "id": 16167,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "secondsClaimed",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15631,
                                  "src": "6067:24:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 16170,
                                      "name": "secondsInside",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16102,
                                      "src": "6103:13:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 16169,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "6095:7:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint160_$",
                                      "typeString": "type(uint160)"
                                    },
                                    "typeName": {
                                      "id": 16168,
                                      "name": "uint160",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6095:7:50",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 16171,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6095:22:50",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                "src": "6067:50:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              "id": 16173,
                              "nodeType": "ExpressionStatement",
                              "src": "6067:50:50"
                            },
                            {
                              "expression": {
                                "id": 16181,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 16174,
                                    "name": "incentive",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16069,
                                    "src": "6131:9:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                                      "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive storage pointer"
                                    }
                                  },
                                  "id": 16176,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "rewardsUnclaimed",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15633,
                                  "src": "6131:26:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 16179,
                                      "name": "rewards",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16099,
                                      "src": "6168:7:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 16178,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "6161:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint96_$",
                                      "typeString": "type(uint96)"
                                    },
                                    "typeName": {
                                      "id": 16177,
                                      "name": "uint96",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6161:6:50",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 16180,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6161:15:50",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint96",
                                    "typeString": "uint96"
                                  }
                                },
                                "src": "6131:45:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint96",
                                  "typeString": "uint96"
                                }
                              },
                              "id": 16182,
                              "nodeType": "ExpressionStatement",
                              "src": "6131:45:50"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 16184,
                                      "name": "incentive",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16069,
                                      "src": "6201:9:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                                        "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive storage pointer"
                                      }
                                    },
                                    "id": 16185,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "token",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 15623,
                                    "src": "6201:15:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 16188,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "6226:4:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolStaker_$16453",
                                          "typeString": "contract ConcentratedLiquidityPoolStaker"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_ConcentratedLiquidityPoolStaker_$16453",
                                          "typeString": "contract ConcentratedLiquidityPoolStaker"
                                        }
                                      ],
                                      "id": 16187,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6218:7:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 16186,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6218:7:50",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 16189,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6218:13:50",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 16190,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16014,
                                    "src": "6233:9:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 16191,
                                    "name": "rewards",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16099,
                                    "src": "6244:7:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 16192,
                                    "name": "unwrapBento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16016,
                                    "src": "6253:11:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 16183,
                                  "name": "_transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16452,
                                  "src": "6191:9:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,bool)"
                                  }
                                },
                                "id": 16193,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6191:74:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 16194,
                              "nodeType": "ExpressionStatement",
                              "src": "6191:74:50"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 16196,
                                    "name": "positionId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16009,
                                    "src": "6297:10:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 16197,
                                      "name": "incentiveIds",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16012,
                                      "src": "6309:12:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 16199,
                                    "indexExpression": {
                                      "id": 16198,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16057,
                                      "src": "6322:1:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6309:15:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 16200,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16014,
                                    "src": "6326:9:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 16203,
                                        "name": "rewards",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16099,
                                        "src": "6344:7:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 16202,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6337:6:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint96_$",
                                        "typeString": "type(uint96)"
                                      },
                                      "typeName": {
                                        "id": 16201,
                                        "name": "uint96",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6337:6:50",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 16204,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6337:15:50",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint96",
                                      "typeString": "uint96"
                                    }
                                  ],
                                  "id": 16195,
                                  "name": "ClaimReward",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15610,
                                  "src": "6285:11:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_uint96_$returns$__$",
                                    "typeString": "function (uint256,uint256,address,uint96)"
                                  }
                                },
                                "id": 16205,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6285:68:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 16206,
                              "nodeType": "EmitStatement",
                              "src": "6280:73:50"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 16060,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16057,
                            "src": "5082:1:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 16061,
                              "name": "incentiveIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16012,
                              "src": "5086:12:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 16062,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "5086:19:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5082:23:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16208,
                        "initializationExpression": {
                          "assignments": [
                            16057
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 16057,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "5075:1:50",
                              "nodeType": "VariableDeclaration",
                              "scope": 16208,
                              "src": "5067:9:50",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 16056,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5067:7:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 16059,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 16058,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5079:1:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "5067:13:50"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 16065,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "5107:3:50",
                            "subExpression": {
                              "id": 16064,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16057,
                              "src": "5107:1:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 16066,
                          "nodeType": "ExpressionStatement",
                          "src": "5107:3:50"
                        },
                        "nodeType": "ForStatement",
                        "src": "5062:1302:50"
                      }
                    ]
                  },
                  "functionSelector": "cc6fa8c9",
                  "id": 16210,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimRewards",
                  "nameLocation": "4589:12:50",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16017,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16009,
                        "mutability": "mutable",
                        "name": "positionId",
                        "nameLocation": "4619:10:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 16210,
                        "src": "4611:18:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16008,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4611:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16012,
                        "mutability": "mutable",
                        "name": "incentiveIds",
                        "nameLocation": "4656:12:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 16210,
                        "src": "4639:29:50",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 16010,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4639:7:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 16011,
                          "nodeType": "ArrayTypeName",
                          "src": "4639:9:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16014,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "4686:9:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 16210,
                        "src": "4678:17:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16013,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4678:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16016,
                        "mutability": "mutable",
                        "name": "unwrapBento",
                        "nameLocation": "4710:11:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 16210,
                        "src": "4705:16:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16015,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4705:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4601:126:50"
                  },
                  "returnParameters": {
                    "id": 16018,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4735:0:50"
                  },
                  "scope": 16453,
                  "src": "4580:1790:50",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16318,
                    "nodeType": "Block",
                    "src": "6497:811:50",
                    "statements": [
                      {
                        "assignments": [
                          16225
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16225,
                            "mutability": "mutable",
                            "name": "position",
                            "nameLocation": "6536:8:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 16318,
                            "src": "6507:37:50",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                              "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position"
                            },
                            "typeName": {
                              "id": 16224,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 16223,
                                "name": "IPoolManager.Position",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2775,
                                "src": "6507:21:50"
                              },
                              "referencedDeclaration": 2775,
                              "src": "6507:21:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Position_$2775_storage_ptr",
                                "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16230,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 16228,
                              "name": "positionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16212,
                              "src": "6569:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 16226,
                              "name": "poolManager",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15645,
                              "src": "6547:11:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConcentratedLiquidityPoolManager_$2796",
                                "typeString": "contract IConcentratedLiquidityPoolManager"
                              }
                            },
                            "id": 16227,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "positions",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2789,
                            "src": "6547:21:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_struct$_Position_$2775_memory_ptr_$",
                              "typeString": "function (uint256) view external returns (struct IConcentratedLiquidityPoolManagerStruct.Position memory)"
                            }
                          },
                          "id": 16229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6547:33:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                            "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6507:73:50"
                      },
                      {
                        "assignments": [
                          16233
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16233,
                            "mutability": "mutable",
                            "name": "pool",
                            "nameLocation": "6617:4:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 16318,
                            "src": "6590:31:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                              "typeString": "contract IConcentratedLiquidityPool"
                            },
                            "typeName": {
                              "id": 16232,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 16231,
                                "name": "IConcentratedLiquidityPool",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 2753,
                                "src": "6590:26:50"
                              },
                              "referencedDeclaration": 2753,
                              "src": "6590:26:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                "typeString": "contract IConcentratedLiquidityPool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16236,
                        "initialValue": {
                          "expression": {
                            "id": 16234,
                            "name": "position",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16225,
                            "src": "6624:8:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                              "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                            }
                          },
                          "id": 16235,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pool",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2761,
                          "src": "6624:13:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                            "typeString": "contract IConcentratedLiquidityPool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6590:47:50"
                      },
                      {
                        "assignments": [
                          16239
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16239,
                            "mutability": "mutable",
                            "name": "incentive",
                            "nameLocation": "6664:9:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 16318,
                            "src": "6647:26:50",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                              "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive"
                            },
                            "typeName": {
                              "id": 16238,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 16237,
                                "name": "Incentive",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 15634,
                                "src": "6647:9:50"
                              },
                              "referencedDeclaration": 15634,
                              "src": "6647:9:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Incentive_$15634_storage_ptr",
                                "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16245,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 16240,
                              "name": "incentives",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15658,
                              "src": "6676:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_contract$_IConcentratedLiquidityPool_$2753_$_t_mapping$_t_uint256_$_t_struct$_Incentive_$15634_storage_$_$",
                                "typeString": "mapping(contract IConcentratedLiquidityPool => mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Incentive storage ref))"
                              }
                            },
                            "id": 16242,
                            "indexExpression": {
                              "id": 16241,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16233,
                              "src": "6687:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                "typeString": "contract IConcentratedLiquidityPool"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6676:16:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Incentive_$15634_storage_$",
                              "typeString": "mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Incentive storage ref)"
                            }
                          },
                          "id": 16244,
                          "indexExpression": {
                            "id": 16243,
                            "name": "positionId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16212,
                            "src": "6693:10:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6676:28:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Incentive_$15634_storage",
                            "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6647:57:50"
                      },
                      {
                        "assignments": [
                          16248
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16248,
                            "mutability": "mutable",
                            "name": "stake",
                            "nameLocation": "6727:5:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 16318,
                            "src": "6714:18:50",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Stake_$15639_memory_ptr",
                              "typeString": "struct ConcentratedLiquidityPoolStaker.Stake"
                            },
                            "typeName": {
                              "id": 16247,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 16246,
                                "name": "Stake",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 15639,
                                "src": "6714:5:50"
                              },
                              "referencedDeclaration": 15639,
                              "src": "6714:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Stake_$15639_storage_ptr",
                                "typeString": "struct ConcentratedLiquidityPoolStaker.Stake"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16254,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 16249,
                              "name": "stakes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15666,
                              "src": "6735:6:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_Stake_$15639_storage_$_$",
                                "typeString": "mapping(uint256 => mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Stake storage ref))"
                              }
                            },
                            "id": 16251,
                            "indexExpression": {
                              "id": 16250,
                              "name": "positionId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16212,
                              "src": "6742:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6735:18:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Stake_$15639_storage_$",
                              "typeString": "mapping(uint256 => struct ConcentratedLiquidityPoolStaker.Stake storage ref)"
                            }
                          },
                          "id": 16253,
                          "indexExpression": {
                            "id": 16252,
                            "name": "incentiveId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16214,
                            "src": "6754:11:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6735:31:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Stake_$15639_storage",
                            "typeString": "struct ConcentratedLiquidityPoolStaker.Stake storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6714:52:50"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 16258,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 16255,
                              "name": "stake",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16248,
                              "src": "6780:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Stake_$15639_memory_ptr",
                                "typeString": "struct ConcentratedLiquidityPoolStaker.Stake memory"
                              }
                            },
                            "id": 16256,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 15638,
                            "src": "6780:15:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 16257,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6798:1:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6780:19:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16317,
                        "nodeType": "IfStatement",
                        "src": "6776:526:50",
                        "trueBody": {
                          "id": 16316,
                          "nodeType": "Block",
                          "src": "6801:501:50",
                          "statements": [
                            {
                              "assignments": [
                                16260
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 16260,
                                  "mutability": "mutable",
                                  "name": "secondsGrowth",
                                  "nameLocation": "6823:13:50",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16316,
                                  "src": "6815:21:50",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 16259,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6815:7:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 16271,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16270,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 16262,
                                      "name": "pool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16233,
                                      "src": "6858:4:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                        "typeString": "contract IConcentratedLiquidityPool"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 16263,
                                        "name": "position",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16225,
                                        "src": "6864:8:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                                          "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                                        }
                                      },
                                      "id": 16264,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "lower",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2765,
                                      "src": "6864:14:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 16265,
                                        "name": "position",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16225,
                                        "src": "6880:8:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                                          "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                                        }
                                      },
                                      "id": 16266,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "upper",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2767,
                                      "src": "6880:14:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                        "typeString": "contract IConcentratedLiquidityPool"
                                      },
                                      {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      },
                                      {
                                        "typeIdentifier": "t_int24",
                                        "typeString": "int24"
                                      }
                                    ],
                                    "id": 16261,
                                    "name": "rangeSecondsInside",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16415,
                                    "src": "6839:18:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_contract$_IConcentratedLiquidityPool_$2753_$_t_int24_$_t_int24_$returns$_t_uint256_$",
                                      "typeString": "function (contract IConcentratedLiquidityPool,int24,int24) view returns (uint256)"
                                    }
                                  },
                                  "id": 16267,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6839:56:50",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "expression": {
                                    "id": 16268,
                                    "name": "stake",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16248,
                                    "src": "6898:5:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Stake_$15639_memory_ptr",
                                      "typeString": "struct ConcentratedLiquidityPoolStaker.Stake memory"
                                    }
                                  },
                                  "id": 16269,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "secondsGrowthInsideLast",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15636,
                                  "src": "6898:29:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                "src": "6839:88:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6815:112:50"
                            },
                            {
                              "expression": {
                                "id": 16277,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 16272,
                                  "name": "secondsInside",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16219,
                                  "src": "6941:13:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16276,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 16273,
                                    "name": "secondsGrowth",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16260,
                                    "src": "6957:13:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 16274,
                                      "name": "position",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16225,
                                      "src": "6973:8:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Position_$2775_memory_ptr",
                                        "typeString": "struct IConcentratedLiquidityPoolManagerStruct.Position memory"
                                      }
                                    },
                                    "id": 16275,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "liquidity",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2763,
                                    "src": "6973:18:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint128",
                                      "typeString": "uint128"
                                    }
                                  },
                                  "src": "6957:34:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6941:50:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 16278,
                              "nodeType": "ExpressionStatement",
                              "src": "6941:50:50"
                            },
                            {
                              "assignments": [
                                16280
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 16280,
                                  "mutability": "mutable",
                                  "name": "maxTime",
                                  "nameLocation": "7013:7:50",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16316,
                                  "src": "7005:15:50",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 16279,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7005:7:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 16291,
                              "initialValue": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16285,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 16281,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "7023:5:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 16282,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "src": "7023:15:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 16283,
                                      "name": "incentive",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16239,
                                      "src": "7041:9:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                                        "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive memory"
                                      }
                                    },
                                    "id": 16284,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endTime",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 15627,
                                    "src": "7041:17:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "src": "7023:35:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "expression": {
                                    "id": 16288,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "7081:5:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 16289,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "timestamp",
                                  "nodeType": "MemberAccess",
                                  "src": "7081:15:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 16290,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "7023:73:50",
                                "trueExpression": {
                                  "expression": {
                                    "id": 16286,
                                    "name": "incentive",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16239,
                                    "src": "7061:9:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                                      "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive memory"
                                    }
                                  },
                                  "id": 16287,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "endTime",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15627,
                                  "src": "7061:17:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7005:91:50"
                            },
                            {
                              "assignments": [
                                16293
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 16293,
                                  "mutability": "mutable",
                                  "name": "secondsUnclaimed",
                                  "nameLocation": "7118:16:50",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16316,
                                  "src": "7110:24:50",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 16292,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7110:7:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 16305,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 16304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 16300,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 16297,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 16294,
                                              "name": "maxTime",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 16280,
                                              "src": "7139:7:50",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "expression": {
                                                "id": 16295,
                                                "name": "incentive",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 16239,
                                                "src": "7149:9:50",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                                                  "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive memory"
                                                }
                                              },
                                              "id": 16296,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "startTime",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 15625,
                                              "src": "7149:19:50",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                              }
                                            },
                                            "src": "7139:29:50",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 16298,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "7138:31:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<<",
                                      "rightExpression": {
                                        "hexValue": "313238",
                                        "id": 16299,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7173:3:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_128_by_1",
                                          "typeString": "int_const 128"
                                        },
                                        "value": "128"
                                      },
                                      "src": "7138:38:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 16301,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "7137:40:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "expression": {
                                    "id": 16302,
                                    "name": "incentive",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16239,
                                    "src": "7180:9:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                                      "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive memory"
                                    }
                                  },
                                  "id": 16303,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "secondsClaimed",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15631,
                                  "src": "7180:24:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                "src": "7137:67:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7110:94:50"
                            },
                            {
                              "expression": {
                                "id": 16314,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 16306,
                                  "name": "rewards",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16217,
                                  "src": "7218:7:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16313,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 16310,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 16307,
                                            "name": "incentive",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 16239,
                                            "src": "7229:9:50",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Incentive_$15634_memory_ptr",
                                              "typeString": "struct ConcentratedLiquidityPoolStaker.Incentive memory"
                                            }
                                          },
                                          "id": 16308,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "rewardsUnclaimed",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 15633,
                                          "src": "7229:26:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint96",
                                            "typeString": "uint96"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 16309,
                                          "name": "secondsInside",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 16219,
                                          "src": "7258:13:50",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "7229:42:50",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 16311,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "7228:44:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 16312,
                                    "name": "secondsUnclaimed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16293,
                                    "src": "7275:16:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "7228:63:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7218:73:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 16315,
                              "nodeType": "ExpressionStatement",
                              "src": "7218:73:50"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "functionSelector": "b90bc519",
                  "id": 16319,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReward",
                  "nameLocation": "6385:9:50",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16215,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16212,
                        "mutability": "mutable",
                        "name": "positionId",
                        "nameLocation": "6403:10:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 16319,
                        "src": "6395:18:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16211,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6395:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16214,
                        "mutability": "mutable",
                        "name": "incentiveId",
                        "nameLocation": "6423:11:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 16319,
                        "src": "6415:19:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16213,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6415:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6394:41:50"
                  },
                  "returnParameters": {
                    "id": 16220,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16217,
                        "mutability": "mutable",
                        "name": "rewards",
                        "nameLocation": "6465:7:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 16319,
                        "src": "6457:15:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16216,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6457:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16219,
                        "mutability": "mutable",
                        "name": "secondsInside",
                        "nameLocation": "6482:13:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 16319,
                        "src": "6474:21:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16218,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6474:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6456:40:50"
                  },
                  "scope": 16453,
                  "src": "6376:932:50",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16414,
                    "nodeType": "Block",
                    "src": "7560:807:50",
                    "statements": [
                      {
                        "assignments": [
                          null,
                          16333
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 16333,
                            "mutability": "mutable",
                            "name": "currentTick",
                            "nameLocation": "7579:11:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 16414,
                            "src": "7573:17:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            },
                            "typeName": {
                              "id": 16332,
                              "name": "int24",
                              "nodeType": "ElementaryTypeName",
                              "src": "7573:5:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16337,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 16334,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16323,
                              "src": "7594:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                "typeString": "contract IConcentratedLiquidityPool"
                              }
                            },
                            "id": 16335,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getPriceAndNearestTicks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2731,
                            "src": "7594:28:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint160_$_t_int24_$",
                              "typeString": "function () view external returns (uint160,int24)"
                            }
                          },
                          "id": 16336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7594:30:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint160_$_t_int24_$",
                            "typeString": "tuple(uint160,int24)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7570:54:50"
                      },
                      {
                        "assignments": [
                          16342
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16342,
                            "mutability": "mutable",
                            "name": "lower",
                            "nameLocation": "7653:5:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 16414,
                            "src": "7635:23:50",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                              "typeString": "struct Ticks.Tick"
                            },
                            "typeName": {
                              "id": 16341,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 16340,
                                "name": "Ticks.Tick",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4235,
                                "src": "7635:10:50"
                              },
                              "referencedDeclaration": 4235,
                              "src": "7635:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                "typeString": "struct Ticks.Tick"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16347,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 16345,
                              "name": "lowerTick",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16325,
                              "src": "7672:9:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            ],
                            "expression": {
                              "id": 16343,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16323,
                              "src": "7661:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                "typeString": "contract IConcentratedLiquidityPool"
                              }
                            },
                            "id": 16344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "ticks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2644,
                            "src": "7661:10:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_int24_$returns$_t_struct$_Tick_$4235_memory_ptr_$",
                              "typeString": "function (int24) view external returns (struct Ticks.Tick memory)"
                            }
                          },
                          "id": 16346,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7661:21:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                            "typeString": "struct Ticks.Tick memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7635:47:50"
                      },
                      {
                        "assignments": [
                          16352
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16352,
                            "mutability": "mutable",
                            "name": "upper",
                            "nameLocation": "7710:5:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 16414,
                            "src": "7692:23:50",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                              "typeString": "struct Ticks.Tick"
                            },
                            "typeName": {
                              "id": 16351,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 16350,
                                "name": "Ticks.Tick",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4235,
                                "src": "7692:10:50"
                              },
                              "referencedDeclaration": 4235,
                              "src": "7692:10:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Tick_$4235_storage_ptr",
                                "typeString": "struct Ticks.Tick"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16357,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 16355,
                              "name": "upperTick",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16327,
                              "src": "7729:9:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            ],
                            "expression": {
                              "id": 16353,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16323,
                              "src": "7718:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                "typeString": "contract IConcentratedLiquidityPool"
                              }
                            },
                            "id": 16354,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "ticks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2644,
                            "src": "7718:10:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_int24_$returns$_t_struct$_Tick_$4235_memory_ptr_$",
                              "typeString": "function (int24) view external returns (struct Ticks.Tick memory)"
                            }
                          },
                          "id": 16356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7718:21:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                            "typeString": "struct Ticks.Tick memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7692:47:50"
                      },
                      {
                        "assignments": [
                          16359,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16359,
                            "mutability": "mutable",
                            "name": "secondsGrowthGlobal",
                            "nameLocation": "7759:19:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 16414,
                            "src": "7751:27:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16358,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7751:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 16363,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 16360,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16323,
                              "src": "7784:4:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                                "typeString": "contract IConcentratedLiquidityPool"
                              }
                            },
                            "id": 16361,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getSecondsGrowthAndLastObservation",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2752,
                            "src": "7784:39:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint160_$_t_uint32_$",
                              "typeString": "function () view external returns (uint160,uint32)"
                            }
                          },
                          "id": 16362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7784:41:50",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint160_$_t_uint32_$",
                            "typeString": "tuple(uint160,uint32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7750:75:50"
                      },
                      {
                        "assignments": [
                          16365
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16365,
                            "mutability": "mutable",
                            "name": "secondsBelow",
                            "nameLocation": "7843:12:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 16414,
                            "src": "7835:20:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16364,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7835:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16366,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7835:20:50"
                      },
                      {
                        "assignments": [
                          16368
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16368,
                            "mutability": "mutable",
                            "name": "secondsAbove",
                            "nameLocation": "7873:12:50",
                            "nodeType": "VariableDeclaration",
                            "scope": 16414,
                            "src": "7865:20:50",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 16367,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7865:7:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16369,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7865:20:50"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "id": 16372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 16370,
                            "name": "lowerTick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16325,
                            "src": "7900:9:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "id": 16371,
                            "name": "currentTick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16333,
                            "src": "7913:11:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "src": "7900:24:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 16386,
                          "nodeType": "Block",
                          "src": "7998:88:50",
                          "statements": [
                            {
                              "expression": {
                                "id": 16384,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 16379,
                                  "name": "secondsBelow",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16365,
                                  "src": "8012:12:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16383,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 16380,
                                    "name": "secondsGrowthGlobal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16359,
                                    "src": "8027:19:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 16381,
                                      "name": "lower",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16342,
                                      "src": "8049:5:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                                        "typeString": "struct Ticks.Tick memory"
                                      }
                                    },
                                    "id": 16382,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "secondsGrowthOutside",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4234,
                                    "src": "8049:26:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  },
                                  "src": "8027:48:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8012:63:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 16385,
                              "nodeType": "ExpressionStatement",
                              "src": "8012:63:50"
                            }
                          ]
                        },
                        "id": 16387,
                        "nodeType": "IfStatement",
                        "src": "7896:190:50",
                        "trueBody": {
                          "id": 16378,
                          "nodeType": "Block",
                          "src": "7926:66:50",
                          "statements": [
                            {
                              "expression": {
                                "id": 16376,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 16373,
                                  "name": "secondsBelow",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16365,
                                  "src": "7940:12:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 16374,
                                    "name": "lower",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16342,
                                    "src": "7955:5:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                                      "typeString": "struct Ticks.Tick memory"
                                    }
                                  },
                                  "id": 16375,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "secondsGrowthOutside",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4234,
                                  "src": "7955:26:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                "src": "7940:41:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 16377,
                              "nodeType": "ExpressionStatement",
                              "src": "7940:41:50"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          },
                          "id": 16390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 16388,
                            "name": "currentTick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16333,
                            "src": "8100:11:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 16389,
                            "name": "upperTick",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16327,
                            "src": "8114:9:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int24",
                              "typeString": "int24"
                            }
                          },
                          "src": "8100:23:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 16404,
                          "nodeType": "Block",
                          "src": "8197:88:50",
                          "statements": [
                            {
                              "expression": {
                                "id": 16402,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 16397,
                                  "name": "secondsAbove",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16368,
                                  "src": "8211:12:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 16401,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 16398,
                                    "name": "secondsGrowthGlobal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16359,
                                    "src": "8226:19:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 16399,
                                      "name": "upper",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16352,
                                      "src": "8248:5:50",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                                        "typeString": "struct Ticks.Tick memory"
                                      }
                                    },
                                    "id": 16400,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "secondsGrowthOutside",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4234,
                                    "src": "8248:26:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint160",
                                      "typeString": "uint160"
                                    }
                                  },
                                  "src": "8226:48:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8211:63:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 16403,
                              "nodeType": "ExpressionStatement",
                              "src": "8211:63:50"
                            }
                          ]
                        },
                        "id": 16405,
                        "nodeType": "IfStatement",
                        "src": "8096:189:50",
                        "trueBody": {
                          "id": 16396,
                          "nodeType": "Block",
                          "src": "8125:66:50",
                          "statements": [
                            {
                              "expression": {
                                "id": 16394,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 16391,
                                  "name": "secondsAbove",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16368,
                                  "src": "8139:12:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "id": 16392,
                                    "name": "upper",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16352,
                                    "src": "8154:5:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Tick_$4235_memory_ptr",
                                      "typeString": "struct Ticks.Tick memory"
                                    }
                                  },
                                  "id": 16393,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "secondsGrowthOutside",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4234,
                                  "src": "8154:26:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                "src": "8139:41:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 16395,
                              "nodeType": "ExpressionStatement",
                              "src": "8139:41:50"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 16412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 16406,
                            "name": "secondsInside",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16330,
                            "src": "8295:13:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 16411,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16409,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 16407,
                                "name": "secondsGrowthGlobal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16359,
                                "src": "8311:19:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "id": 16408,
                                "name": "secondsBelow",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16365,
                                "src": "8333:12:50",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8311:34:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 16410,
                              "name": "secondsAbove",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16368,
                              "src": "8348:12:50",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8311:49:50",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8295:65:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16413,
                        "nodeType": "ExpressionStatement",
                        "src": "8295:65:50"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16320,
                    "nodeType": "StructuredDocumentation",
                    "src": "7314:72:50",
                    "text": "@dev Calculates the \"seconds per liquidity\" accumulator for a range."
                  },
                  "functionSelector": "df674218",
                  "id": 16415,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "rangeSecondsInside",
                  "nameLocation": "7400:18:50",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16328,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16323,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "7455:4:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 16415,
                        "src": "7428:31:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                          "typeString": "contract IConcentratedLiquidityPool"
                        },
                        "typeName": {
                          "id": 16322,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 16321,
                            "name": "IConcentratedLiquidityPool",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2753,
                            "src": "7428:26:50"
                          },
                          "referencedDeclaration": 2753,
                          "src": "7428:26:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IConcentratedLiquidityPool_$2753",
                            "typeString": "contract IConcentratedLiquidityPool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16325,
                        "mutability": "mutable",
                        "name": "lowerTick",
                        "nameLocation": "7475:9:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 16415,
                        "src": "7469:15:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 16324,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "7469:5:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16327,
                        "mutability": "mutable",
                        "name": "upperTick",
                        "nameLocation": "7500:9:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 16415,
                        "src": "7494:15:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 16326,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "7494:5:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7418:97:50"
                  },
                  "returnParameters": {
                    "id": 16331,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16330,
                        "mutability": "mutable",
                        "name": "secondsInside",
                        "nameLocation": "7545:13:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 16415,
                        "src": "7537:21:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16329,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7537:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7536:23:50"
                  },
                  "scope": 16453,
                  "src": "7391:976:50",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16451,
                    "nodeType": "Block",
                    "src": "8522:170:50",
                    "statements": [
                      {
                        "condition": {
                          "id": 16428,
                          "name": "unwrapBento",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16425,
                          "src": "8536:11:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 16449,
                          "nodeType": "Block",
                          "src": "8622:64:50",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 16443,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16417,
                                    "src": "8651:5:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 16444,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16419,
                                    "src": "8658:4:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 16445,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16421,
                                    "src": "8664:2:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 16446,
                                    "name": "shares",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16423,
                                    "src": "8668:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 16440,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15642,
                                    "src": "8636:5:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 16442,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2227,
                                  "src": "8636:14:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,uint256) external"
                                  }
                                },
                                "id": 16447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8636:39:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 16448,
                              "nodeType": "ExpressionStatement",
                              "src": "8636:39:50"
                            }
                          ]
                        },
                        "id": 16450,
                        "nodeType": "IfStatement",
                        "src": "8532:154:50",
                        "trueBody": {
                          "id": 16439,
                          "nodeType": "Block",
                          "src": "8549:67:50",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 16432,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16417,
                                    "src": "8578:5:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 16433,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16419,
                                    "src": "8585:4:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 16434,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16421,
                                    "src": "8591:2:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 16435,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8595:1:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "id": 16436,
                                    "name": "shares",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16423,
                                    "src": "8598:6:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 16429,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 15642,
                                    "src": "8563:5:50",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                      "typeString": "contract IBentoBoxMinimal"
                                    }
                                  },
                                  "id": 16431,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "withdraw",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2215,
                                  "src": "8563:14:50",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (address,address,address,uint256,uint256) external returns (uint256,uint256)"
                                  }
                                },
                                "id": 16437,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8563:42:50",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "id": 16438,
                              "nodeType": "ExpressionStatement",
                              "src": "8563:42:50"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 16452,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nameLocation": "8382:9:50",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16426,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16417,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "8409:5:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 16452,
                        "src": "8401:13:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16416,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8401:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16419,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "8432:4:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 16452,
                        "src": "8424:12:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16418,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8424:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16421,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "8454:2:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 16452,
                        "src": "8446:10:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16420,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8446:7:50",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16423,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "8474:6:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 16452,
                        "src": "8466:14:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16422,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8466:7:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16425,
                        "mutability": "mutable",
                        "name": "unwrapBento",
                        "nameLocation": "8495:11:50",
                        "nodeType": "VariableDeclaration",
                        "scope": 16452,
                        "src": "8490:16:50",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16424,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8490:4:50",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8391:121:50"
                  },
                  "returnParameters": {
                    "id": 16427,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8522:0:50"
                  },
                  "scope": 16453,
                  "src": "8373:319:50",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 16454,
              "src": "515:8179:50",
              "usedErrors": []
            }
          ],
          "src": "46:8649:50"
        },
        "id": 50
      },
      "contracts/pool/concentrated/TridentNFT.sol": {
        "ast": {
          "absolutePath": "contracts/pool/concentrated/TridentNFT.sol",
          "exportedSymbols": {
            "TridentNFT": [
              17166
            ]
          },
          "id": 17167,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 16455,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:51"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 16456,
                "nodeType": "StructuredDocumentation",
                "src": "242:111:51",
                "text": "@author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc721/ERC721.sol,"
              },
              "fullyImplemented": true,
              "id": 17166,
              "linearizedBaseContracts": [
                17166
              ],
              "name": "TridentNFT",
              "nameLocation": "526:10:51",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 16464,
                  "name": "Transfer",
                  "nameLocation": "549:8:51",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 16463,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16458,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "574:6:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16464,
                        "src": "558:22:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16457,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "558:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16460,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "598:9:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16464,
                        "src": "582:25:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16459,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "582:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16462,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "625:7:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16464,
                        "src": "609:23:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16461,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "609:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "557:76:51"
                  },
                  "src": "543:91:51"
                },
                {
                  "anonymous": false,
                  "id": 16472,
                  "name": "Approval",
                  "nameLocation": "645:8:51",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 16471,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16466,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "670:5:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16472,
                        "src": "654:21:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16465,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "654:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16468,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "693:7:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16472,
                        "src": "677:23:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16467,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "677:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16470,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "718:7:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16472,
                        "src": "702:23:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16469,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "702:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "653:73:51"
                  },
                  "src": "639:88:51"
                },
                {
                  "anonymous": false,
                  "id": 16480,
                  "name": "ApprovalForAll",
                  "nameLocation": "738:14:51",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 16479,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16474,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "769:5:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16480,
                        "src": "753:21:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16473,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "753:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16476,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "792:8:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16480,
                        "src": "776:24:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16475,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "776:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16478,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "807:8:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16480,
                        "src": "802:13:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16477,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "802:4:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "752:64:51"
                  },
                  "src": "732:85:51"
                },
                {
                  "constant": true,
                  "functionSelector": "06fdde03",
                  "id": 16483,
                  "mutability": "constant",
                  "name": "name",
                  "nameLocation": "846:4:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 17166,
                  "src": "823:42:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16481,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "823:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "hexValue": "54726964656e744e4654",
                    "id": 16482,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "853:12:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_790a7a9b65ea2ce0cf93ce97615ad3ceeb0a6082b5ad238c5227302f947047b0",
                      "typeString": "literal_string \"TridentNFT\""
                    },
                    "value": "TridentNFT"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "95d89b41",
                  "id": 16486,
                  "mutability": "constant",
                  "name": "symbol",
                  "nameLocation": "894:6:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 17166,
                  "src": "871:38:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 16484,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "871:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "hexValue": "744e4654",
                    "id": 16485,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "903:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_3b4d765256193eec2fc5b5b06be605a77cf9e116b62446c9ec2ed68292378251",
                      "typeString": "literal_string \"tNFT\""
                    },
                    "value": "tNFT"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 16487,
                    "nodeType": "StructuredDocumentation",
                    "src": "915:51:51",
                    "text": "@notice Tracks total liquidity range positions."
                  },
                  "functionSelector": "18160ddd",
                  "id": 16489,
                  "mutability": "mutable",
                  "name": "totalSupply",
                  "nameLocation": "986:11:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 17166,
                  "src": "971:26:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16488,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "971:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 16490,
                    "nodeType": "StructuredDocumentation",
                    "src": "1003:39:51",
                    "text": "@notice 'owner' -> balance mapping."
                  },
                  "functionSelector": "70a08231",
                  "id": 16494,
                  "mutability": "mutable",
                  "name": "balanceOf",
                  "nameLocation": "1082:9:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 17166,
                  "src": "1047:44:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 16493,
                    "keyType": {
                      "id": 16491,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1055:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1047:27:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 16492,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1066:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 16495,
                    "nodeType": "StructuredDocumentation",
                    "src": "1097:41:51",
                    "text": "@notice `tokenId` -> 'owner' mapping."
                  },
                  "functionSelector": "6352211e",
                  "id": 16499,
                  "mutability": "mutable",
                  "name": "ownerOf",
                  "nameLocation": "1178:7:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 17166,
                  "src": "1143:42:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                    "typeString": "mapping(uint256 => address)"
                  },
                  "typeName": {
                    "id": 16498,
                    "keyType": {
                      "id": 16496,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1151:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1143:27:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                      "typeString": "mapping(uint256 => address)"
                    },
                    "valueType": {
                      "id": 16497,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1162:7:51",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 16500,
                    "nodeType": "StructuredDocumentation",
                    "src": "1191:43:51",
                    "text": "@notice `tokenId` -> 'spender' mapping."
                  },
                  "functionSelector": "081812fc",
                  "id": 16504,
                  "mutability": "mutable",
                  "name": "getApproved",
                  "nameLocation": "1274:11:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 17166,
                  "src": "1239:46:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                    "typeString": "mapping(uint256 => address)"
                  },
                  "typeName": {
                    "id": 16503,
                    "keyType": {
                      "id": 16501,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1247:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1239:27:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                      "typeString": "mapping(uint256 => address)"
                    },
                    "valueType": {
                      "id": 16502,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1258:7:51",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 16505,
                    "nodeType": "StructuredDocumentation",
                    "src": "1291:49:51",
                    "text": "@notice 'owner' -> 'operator' status mapping."
                  },
                  "functionSelector": "e985e9c5",
                  "id": 16511,
                  "mutability": "mutable",
                  "name": "isApprovedForAll",
                  "nameLocation": "1397:16:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 17166,
                  "src": "1345:68:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(address => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 16510,
                    "keyType": {
                      "id": 16506,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1353:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1345:44:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(address => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 16509,
                      "keyType": {
                        "id": 16507,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1372:7:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1364:24:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 16508,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1383:4:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 16512,
                    "nodeType": "StructuredDocumentation",
                    "src": "1420:79:51",
                    "text": "@notice EIP-712 typehash for this contract's {permit} struct for {approve}."
                  },
                  "functionSelector": "30adf81f",
                  "id": 16517,
                  "mutability": "constant",
                  "name": "PERMIT_TYPEHASH",
                  "nameLocation": "1528:15:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 17166,
                  "src": "1504:125:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16513,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1504:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "5065726d69742861646472657373207370656e6465722c75696e7432353620746f6b656e49642c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529",
                        "id": 16515,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1556:72:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad",
                          "typeString": "literal_string \"Permit(address spender,uint256 tokenId,uint256 nonce,uint256 deadline)\""
                        },
                        "value": "Permit(address spender,uint256 tokenId,uint256 nonce,uint256 deadline)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad",
                          "typeString": "literal_string \"Permit(address spender,uint256 tokenId,uint256 nonce,uint256 deadline)\""
                        }
                      ],
                      "id": 16514,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1546:9:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 16516,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1546:83:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 16518,
                    "nodeType": "StructuredDocumentation",
                    "src": "1635:92:51",
                    "text": "@notice EIP-712 typehash for this contract's {permitAll} struct for {setApprovalForAll}."
                  },
                  "functionSelector": "b4e13c8d",
                  "id": 16523,
                  "mutability": "constant",
                  "name": "PERMIT_ALL_TYPEHASH",
                  "nameLocation": "1756:19:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 17166,
                  "src": "1732:127:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16519,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1732:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529",
                        "id": 16521,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1788:70:51",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_daab21af31ece73a508939fedd476a5ee5129a5ed4bb091f3236ffb45394df62",
                          "typeString": "literal_string \"Permit(address owner,address spender,uint256 nonce,uint256 deadline)\""
                        },
                        "value": "Permit(address owner,address spender,uint256 nonce,uint256 deadline)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_daab21af31ece73a508939fedd476a5ee5129a5ed4bb091f3236ffb45394df62",
                          "typeString": "literal_string \"Permit(address owner,address spender,uint256 nonce,uint256 deadline)\""
                        }
                      ],
                      "id": 16520,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1778:9:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 16522,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1778:81:51",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 16524,
                    "nodeType": "StructuredDocumentation",
                    "src": "1866:51:51",
                    "text": "@notice Chain Id at this contract's deployment."
                  },
                  "id": 16526,
                  "mutability": "immutable",
                  "name": "DOMAIN_SEPARATOR_CHAIN_ID",
                  "nameLocation": "1949:25:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 17166,
                  "src": "1922:52:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 16525,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1922:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 16527,
                    "nodeType": "StructuredDocumentation",
                    "src": "1980:70:51",
                    "text": "@notice EIP-712 typehash for this contract's domain at deployment."
                  },
                  "id": 16529,
                  "mutability": "immutable",
                  "name": "_DOMAIN_SEPARATOR",
                  "nameLocation": "2082:17:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 17166,
                  "src": "2055:44:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 16528,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2055:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 16530,
                    "nodeType": "StructuredDocumentation",
                    "src": "2105:72:51",
                    "text": "@notice 'tokenId' -> `nonce` mapping used in {permit} for {approve}."
                  },
                  "functionSelector": "141a468c",
                  "id": 16534,
                  "mutability": "mutable",
                  "name": "nonces",
                  "nameLocation": "2217:6:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 17166,
                  "src": "2182:41:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 16533,
                    "keyType": {
                      "id": 16531,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2190:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2182:27:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 16532,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2201:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 16535,
                    "nodeType": "StructuredDocumentation",
                    "src": "2229:85:51",
                    "text": "@notice 'owner' -> `tokenId` mapping used in {permitAll} for {setApprovalForAll}."
                  },
                  "functionSelector": "904dfb8e",
                  "id": 16539,
                  "mutability": "mutable",
                  "name": "noncesForAll",
                  "nameLocation": "2354:12:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 17166,
                  "src": "2319:47:51",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 16538,
                    "keyType": {
                      "id": 16536,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2327:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2319:27:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 16537,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2338:7:51",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16552,
                    "nodeType": "Block",
                    "src": "2387:115:51",
                    "statements": [
                      {
                        "expression": {
                          "id": 16545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 16542,
                            "name": "DOMAIN_SEPARATOR_CHAIN_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16526,
                            "src": "2397:25:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 16543,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "2425:5:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 16544,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "chainid",
                            "nodeType": "MemberAccess",
                            "src": "2425:13:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2397:41:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 16546,
                        "nodeType": "ExpressionStatement",
                        "src": "2397:41:51"
                      },
                      {
                        "expression": {
                          "id": 16550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 16547,
                            "name": "_DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16529,
                            "src": "2448:17:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 16548,
                              "name": "_calculateDomainSeparator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16588,
                              "src": "2468:25:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                                "typeString": "function () view returns (bytes32)"
                              }
                            },
                            "id": 16549,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2468:27:51",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2448:47:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 16551,
                        "nodeType": "ExpressionStatement",
                        "src": "2448:47:51"
                      }
                    ]
                  },
                  "id": 16553,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16540,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2384:2:51"
                  },
                  "returnParameters": {
                    "id": 16541,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2387:0:51"
                  },
                  "scope": 17166,
                  "src": "2373:129:51",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16587,
                    "nodeType": "Block",
                    "src": "2593:346:51",
                    "statements": [
                      {
                        "expression": {
                          "id": 16585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 16558,
                            "name": "domainSeperator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16556,
                            "src": "2603:15:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                                        "id": 16563,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2682:84:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                          "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                        },
                                        "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                          "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                        }
                                      ],
                                      "id": 16562,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "2672:9:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 16564,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2672:95:51",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 16568,
                                            "name": "name",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 16483,
                                            "src": "2801:4:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          ],
                                          "id": 16567,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "2795:5:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": {
                                            "id": 16566,
                                            "name": "bytes",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "2795:5:51",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 16569,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2795:11:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 16565,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "2785:9:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 16570,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2785:22:51",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "hexValue": "31",
                                            "id": 16574,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2841:3:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                              "typeString": "literal_string \"1\""
                                            },
                                            "value": "1"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                              "typeString": "literal_string \"1\""
                                            }
                                          ],
                                          "id": 16573,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "2835:5:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": {
                                            "id": 16572,
                                            "name": "bytes",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "2835:5:51",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 16575,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2835:10:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 16571,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "2825:9:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 16576,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2825:21:51",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 16577,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "2864:5:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 16578,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "chainid",
                                    "nodeType": "MemberAccess",
                                    "src": "2864:13:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 16581,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "2903:4:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_TridentNFT_$17166",
                                          "typeString": "contract TridentNFT"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_TridentNFT_$17166",
                                          "typeString": "contract TridentNFT"
                                        }
                                      ],
                                      "id": 16580,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2895:7:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 16579,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2895:7:51",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 16582,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2895:13:51",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 16560,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "2644:3:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 16561,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "src": "2644:10:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 16583,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2644:278:51",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 16559,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "2621:9:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 16584,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2621:311:51",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2603:329:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 16586,
                        "nodeType": "ExpressionStatement",
                        "src": "2603:329:51"
                      }
                    ]
                  },
                  "id": 16588,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_calculateDomainSeparator",
                  "nameLocation": "2517:25:51",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16554,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2542:2:51"
                  },
                  "returnParameters": {
                    "id": 16557,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16556,
                        "mutability": "mutable",
                        "name": "domainSeperator",
                        "nameLocation": "2576:15:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16588,
                        "src": "2568:23:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 16555,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2568:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2567:25:51"
                  },
                  "scope": 17166,
                  "src": "2508:431:51",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 16605,
                    "nodeType": "Block",
                    "src": "3080:127:51",
                    "statements": [
                      {
                        "expression": {
                          "id": 16603,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 16594,
                            "name": "domainSeperator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16592,
                            "src": "3090:15:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16598,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 16595,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "3108:5:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 16596,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "chainid",
                                "nodeType": "MemberAccess",
                                "src": "3108:13:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 16597,
                                "name": "DOMAIN_SEPARATOR_CHAIN_ID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16526,
                                "src": "3125:25:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3108:42:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 16600,
                                "name": "_calculateDomainSeparator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16588,
                                "src": "3173:25:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                                  "typeString": "function () view returns (bytes32)"
                                }
                              },
                              "id": 16601,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3173:27:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "id": 16602,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "3108:92:51",
                            "trueExpression": {
                              "id": 16599,
                              "name": "_DOMAIN_SEPARATOR",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16529,
                              "src": "3153:17:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "3090:110:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 16604,
                        "nodeType": "ExpressionStatement",
                        "src": "3090:110:51"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16589,
                    "nodeType": "StructuredDocumentation",
                    "src": "2945:56:51",
                    "text": "@notice EIP-712 typehash for this contract's domain."
                  },
                  "functionSelector": "3644e515",
                  "id": 16606,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "DOMAIN_SEPARATOR",
                  "nameLocation": "3015:16:51",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16590,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3031:2:51"
                  },
                  "returnParameters": {
                    "id": 16593,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16592,
                        "mutability": "mutable",
                        "name": "domainSeperator",
                        "nameLocation": "3063:15:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16606,
                        "src": "3055:23:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 16591,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3055:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3054:25:51"
                  },
                  "scope": 17166,
                  "src": "3006:201:51",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16624,
                    "nodeType": "Block",
                    "src": "3577:83:51",
                    "statements": [
                      {
                        "expression": {
                          "id": 16622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 16614,
                            "name": "supported",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16612,
                            "src": "3587:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 16621,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 16617,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 16615,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16609,
                                "src": "3599:11:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30783830616335386364",
                                "id": 16616,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3614:10:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2158778573_by_1",
                                  "typeString": "int_const 2158778573"
                                },
                                "value": "0x80ac58cd"
                              },
                              "src": "3599:25:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 16620,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 16618,
                                "name": "interfaceId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16609,
                                "src": "3628:11:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30783562356531333966",
                                "id": 16619,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3643:10:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1532892063_by_1",
                                  "typeString": "int_const 1532892063"
                                },
                                "value": "0x5b5e139f"
                              },
                              "src": "3628:25:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "3599:54:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3587:66:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16623,
                        "nodeType": "ExpressionStatement",
                        "src": "3587:66:51"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16607,
                    "nodeType": "StructuredDocumentation",
                    "src": "3213:273:51",
                    "text": "@notice Provides ERC-165-compatible confirmation for ERC-721 interfaces supported by this contract.\n @param interfaceId XOR of all function selectors in the reference interface.\n @return supported Returns 'true' if `interfaceId` is flagged as implemented."
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 16625,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nameLocation": "3500:17:51",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16610,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16609,
                        "mutability": "mutable",
                        "name": "interfaceId",
                        "nameLocation": "3525:11:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16625,
                        "src": "3518:18:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 16608,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "3518:6:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3517:20:51"
                  },
                  "returnParameters": {
                    "id": 16613,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16612,
                        "mutability": "mutable",
                        "name": "supported",
                        "nameLocation": "3566:9:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16625,
                        "src": "3561:14:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16611,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3561:4:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3560:16:51"
                  },
                  "scope": 17166,
                  "src": "3491:169:51",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 16666,
                    "nodeType": "Block",
                    "src": "3975:230:51",
                    "statements": [
                      {
                        "assignments": [
                          16634
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16634,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "3993:5:51",
                            "nodeType": "VariableDeclaration",
                            "scope": 16666,
                            "src": "3985:13:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 16633,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3985:7:51",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16638,
                        "initialValue": {
                          "baseExpression": {
                            "id": 16635,
                            "name": "ownerOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16499,
                            "src": "4001:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 16637,
                          "indexExpression": {
                            "id": 16636,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16630,
                            "src": "4009:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4001:16:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3985:32:51"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 16650,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 16643,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 16640,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "4035:3:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 16641,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "4035:10:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 16642,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16634,
                                  "src": "4049:5:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4035:19:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 16644,
                                    "name": "isApprovedForAll",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16511,
                                    "src": "4058:16:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                      "typeString": "mapping(address => mapping(address => bool))"
                                    }
                                  },
                                  "id": 16646,
                                  "indexExpression": {
                                    "id": 16645,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16634,
                                    "src": "4075:5:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4058:23:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 16649,
                                "indexExpression": {
                                  "expression": {
                                    "id": 16647,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "4082:3:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 16648,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "4082:10:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4058:35:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "4035:58:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e4f545f415050524f564544",
                              "id": 16651,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4095:14:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5036b6b1196e0e260c3f6c86c35b3544b8ac944b03f4f4c94ebef3efe3125047",
                                "typeString": "literal_string \"NOT_APPROVED\""
                              },
                              "value": "NOT_APPROVED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5036b6b1196e0e260c3f6c86c35b3544b8ac944b03f4f4c94ebef3efe3125047",
                                "typeString": "literal_string \"NOT_APPROVED\""
                              }
                            ],
                            "id": 16639,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4027:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4027:83:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16653,
                        "nodeType": "ExpressionStatement",
                        "src": "4027:83:51"
                      },
                      {
                        "expression": {
                          "id": 16658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 16654,
                              "name": "getApproved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16504,
                              "src": "4120:11:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 16656,
                            "indexExpression": {
                              "id": 16655,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16630,
                              "src": "4132:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4120:20:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 16657,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16628,
                            "src": "4143:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4120:30:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 16659,
                        "nodeType": "ExpressionStatement",
                        "src": "4120:30:51"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 16661,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16634,
                              "src": "4174:5:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 16662,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16628,
                              "src": "4181:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 16663,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16630,
                              "src": "4190:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16660,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16472,
                            "src": "4165:8:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 16664,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4165:33:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16665,
                        "nodeType": "EmitStatement",
                        "src": "4160:38:51"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16626,
                    "nodeType": "StructuredDocumentation",
                    "src": "3666:244:51",
                    "text": "@notice Approves `tokenId` from `msg.sender` 'owner' or 'operator' to be spent by `spender`.\n @param spender Address of the party that can pull `tokenId` from 'owner''s account.\n @param tokenId The Id to approve for `spender`."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 16667,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "3924:7:51",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16631,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16628,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "3940:7:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16667,
                        "src": "3932:15:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16627,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3932:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16630,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "3957:7:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16667,
                        "src": "3949:15:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16629,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3949:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3931:34:51"
                  },
                  "returnParameters": {
                    "id": 16632,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3975:0:51"
                  },
                  "scope": 17166,
                  "src": "3915:290:51",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 16701,
                    "nodeType": "Block",
                    "src": "4586:188:51",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 16681,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 16676,
                                "name": "operator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16670,
                                "src": "4604:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 16679,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4624:1:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 16678,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4616:7:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 16677,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4616:7:51",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 16680,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4616:10:51",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4604:22:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f4f50455241544f52",
                              "id": 16682,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4628:18:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5f5e0bde2fff1c9840ee5b42dd85e8f0d5b9b295bcee54dd3d6381f17c21c473",
                                "typeString": "literal_string \"INVALID_OPERATOR\""
                              },
                              "value": "INVALID_OPERATOR"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5f5e0bde2fff1c9840ee5b42dd85e8f0d5b9b295bcee54dd3d6381f17c21c473",
                                "typeString": "literal_string \"INVALID_OPERATOR\""
                              }
                            ],
                            "id": 16675,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4596:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16683,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4596:51:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16684,
                        "nodeType": "ExpressionStatement",
                        "src": "4596:51:51"
                      },
                      {
                        "expression": {
                          "id": 16692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 16685,
                                "name": "isApprovedForAll",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16511,
                                "src": "4657:16:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 16689,
                              "indexExpression": {
                                "expression": {
                                  "id": 16686,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "4674:3:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 16687,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "4674:10:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4657:28:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 16690,
                            "indexExpression": {
                              "id": 16688,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16670,
                              "src": "4686:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "4657:38:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 16691,
                            "name": "approved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16672,
                            "src": "4698:8:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4657:49:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16693,
                        "nodeType": "ExpressionStatement",
                        "src": "4657:49:51"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 16695,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4736:3:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 16696,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "4736:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 16697,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16670,
                              "src": "4748:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 16698,
                              "name": "approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16672,
                              "src": "4758:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 16694,
                            "name": "ApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16480,
                            "src": "4721:14:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 16699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4721:46:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16700,
                        "nodeType": "EmitStatement",
                        "src": "4716:51:51"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16668,
                    "nodeType": "StructuredDocumentation",
                    "src": "4211:301:51",
                    "text": "@notice Approves an 'operator' for `msg.sender` 'owner' that can spend or {approve} spends of 'owner''s `tokenId`s.\n @param operator Address of the party that can pull `tokenId`s from 'owner''s account or approve others to do same.\n @param approved The approval status of `operator`."
                  },
                  "functionSelector": "a22cb465",
                  "id": 16702,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nameLocation": "4526:17:51",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16673,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16670,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "4552:8:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16702,
                        "src": "4544:16:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16669,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4544:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16672,
                        "mutability": "mutable",
                        "name": "approved",
                        "nameLocation": "4567:8:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16702,
                        "src": "4562:13:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 16671,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4562:4:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4543:33:51"
                  },
                  "returnParameters": {
                    "id": 16674,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4586:0:51"
                  },
                  "scope": 17166,
                  "src": "4517:257:51",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 16727,
                    "nodeType": "Block",
                    "src": "5030:120:51",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 16716,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 16711,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "5048:3:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 16712,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "5048:10:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "baseExpression": {
                                  "id": 16713,
                                  "name": "ownerOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16499,
                                  "src": "5062:7:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 16715,
                                "indexExpression": {
                                  "id": 16714,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16707,
                                  "src": "5070:7:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5062:16:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "5048:30:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e4f545f4f574e4552",
                              "id": 16717,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5080:11:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2",
                                "typeString": "literal_string \"NOT_OWNER\""
                              },
                              "value": "NOT_OWNER"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2",
                                "typeString": "literal_string \"NOT_OWNER\""
                              }
                            ],
                            "id": 16710,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5040:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5040:52:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16719,
                        "nodeType": "ExpressionStatement",
                        "src": "5040:52:51"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 16721,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "5112:3:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 16722,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "5112:10:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 16723,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16705,
                              "src": "5124:9:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 16724,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16707,
                              "src": "5135:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16720,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17165,
                            "src": "5102:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 16725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5102:41:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16726,
                        "nodeType": "ExpressionStatement",
                        "src": "5102:41:51"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16703,
                    "nodeType": "StructuredDocumentation",
                    "src": "4780:182:51",
                    "text": "@notice Transfers `tokenId` from 'owner' to `recipient`. Caller needs ownership.\n @param recipient The address to move `tokenId` to.\n @param tokenId The Id to move."
                  },
                  "functionSelector": "a9059cbb",
                  "id": 16728,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nameLocation": "4976:8:51",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16708,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16705,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "4993:9:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16728,
                        "src": "4985:17:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16704,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4985:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16707,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "5012:7:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16728,
                        "src": "5004:15:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16706,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5004:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4984:36:51"
                  },
                  "returnParameters": {
                    "id": 16709,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5030:0:51"
                  },
                  "scope": 17166,
                  "src": "4967:183:51",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 16772,
                    "nodeType": "Block",
                    "src": "5472:226:51",
                    "statements": [
                      {
                        "assignments": [
                          16739
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16739,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "5490:5:51",
                            "nodeType": "VariableDeclaration",
                            "scope": 16772,
                            "src": "5482:13:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 16738,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5482:7:51",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16743,
                        "initialValue": {
                          "baseExpression": {
                            "id": 16740,
                            "name": "ownerOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16499,
                            "src": "5498:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 16742,
                          "indexExpression": {
                            "id": 16741,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16735,
                            "src": "5506:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5498:16:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5482:32:51"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 16762,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 16755,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 16748,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 16745,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "5532:3:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 16746,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "5532:10:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 16747,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16739,
                                    "src": "5546:5:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "5532:19:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 16754,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 16749,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "5555:3:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 16750,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "5555:10:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "baseExpression": {
                                      "id": 16751,
                                      "name": "getApproved",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16504,
                                      "src": "5569:11:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                        "typeString": "mapping(uint256 => address)"
                                      }
                                    },
                                    "id": 16753,
                                    "indexExpression": {
                                      "id": 16752,
                                      "name": "tokenId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16735,
                                      "src": "5581:7:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5569:20:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "5555:34:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "5532:57:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 16756,
                                    "name": "isApprovedForAll",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16511,
                                    "src": "5593:16:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                      "typeString": "mapping(address => mapping(address => bool))"
                                    }
                                  },
                                  "id": 16758,
                                  "indexExpression": {
                                    "id": 16757,
                                    "name": "owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16739,
                                    "src": "5610:5:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5593:23:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                    "typeString": "mapping(address => bool)"
                                  }
                                },
                                "id": 16761,
                                "indexExpression": {
                                  "expression": {
                                    "id": 16759,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "5617:3:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 16760,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "5617:10:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5593:35:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5532:96:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e4f545f415050524f564544",
                              "id": 16763,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5630:14:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5036b6b1196e0e260c3f6c86c35b3544b8ac944b03f4f4c94ebef3efe3125047",
                                "typeString": "literal_string \"NOT_APPROVED\""
                              },
                              "value": "NOT_APPROVED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5036b6b1196e0e260c3f6c86c35b3544b8ac944b03f4f4c94ebef3efe3125047",
                                "typeString": "literal_string \"NOT_APPROVED\""
                              }
                            ],
                            "id": 16744,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5524:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5524:121:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16765,
                        "nodeType": "ExpressionStatement",
                        "src": "5524:121:51"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 16767,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16739,
                              "src": "5665:5:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 16768,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16733,
                              "src": "5672:9:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 16769,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16735,
                              "src": "5683:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16766,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17165,
                            "src": "5655:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 16770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5655:36:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16771,
                        "nodeType": "ExpressionStatement",
                        "src": "5655:36:51"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16729,
                    "nodeType": "StructuredDocumentation",
                    "src": "5156:207:51",
                    "text": "@notice Transfers `tokenId` from 'owner' to `recipient`. Caller needs ownership or approval from 'owner'.\n @param recipient The address to move `tokenId` to.\n @param tokenId The Id to move."
                  },
                  "functionSelector": "23b872dd",
                  "id": 16773,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "5377:12:51",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16736,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16731,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16773,
                        "src": "5399:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16730,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5399:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16733,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "5424:9:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16773,
                        "src": "5416:17:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16732,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5416:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16735,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "5451:7:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16773,
                        "src": "5443:15:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16734,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5443:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5389:75:51"
                  },
                  "returnParameters": {
                    "id": 16737,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5472:0:51"
                  },
                  "scope": 17166,
                  "src": "5368:330:51",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16793,
                    "nodeType": "Block",
                    "src": "6113:69:51",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 16786,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6148:1:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 16785,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6140:7:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 16784,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6140:7:51",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 16787,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6140:10:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 16788,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16778,
                              "src": "6152:9:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 16789,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16780,
                              "src": "6163:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 16790,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6172:2:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 16783,
                            "name": "safeTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16858,
                            "src": "6123:16:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,bytes memory)"
                            }
                          },
                          "id": 16791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6123:52:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16792,
                        "nodeType": "ExpressionStatement",
                        "src": "6123:52:51"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16774,
                    "nodeType": "StructuredDocumentation",
                    "src": "5704:294:51",
                    "text": "@notice Transfers `tokenId` from 'owner' to `recipient` with no data. Caller needs ownership or approval from 'owner',\n and `recipient` must have compatible {onERC721Received} function.\n @param recipient The address to move `tokenId` to.\n @param tokenId The Id to move."
                  },
                  "functionSelector": "42842e0e",
                  "id": 16794,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "6012:16:51",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16781,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16776,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16794,
                        "src": "6038:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16775,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6038:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16778,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "6063:9:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16794,
                        "src": "6055:17:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16777,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6055:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16780,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "6090:7:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16794,
                        "src": "6082:15:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16779,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6082:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6028:75:51"
                  },
                  "returnParameters": {
                    "id": 16782,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6113:0:51"
                  },
                  "scope": 17166,
                  "src": "6003:179:51",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 16857,
                    "nodeType": "Block",
                    "src": "6619:449:51",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 16809,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6650:1:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 16808,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6642:7:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 16807,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6642:7:51",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 16810,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6642:10:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 16811,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16799,
                              "src": "6654:9:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 16812,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16801,
                              "src": "6665:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16806,
                            "name": "transferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16773,
                            "src": "6629:12:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 16813,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6629:44:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16814,
                        "nodeType": "ExpressionStatement",
                        "src": "6629:44:51"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 16819,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "expression": {
                                "id": 16815,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16799,
                                "src": "6687:9:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 16816,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "code",
                              "nodeType": "MemberAccess",
                              "src": "6687:14:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 16817,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "6687:21:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 16818,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6712:1:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6687:26:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 16856,
                        "nodeType": "IfStatement",
                        "src": "6683:379:51",
                        "trueBody": {
                          "id": 16855,
                          "nodeType": "Block",
                          "src": "6715:347:51",
                          "statements": [
                            {
                              "assignments": [
                                null,
                                16821
                              ],
                              "declarations": [
                                null,
                                {
                                  "constant": false,
                                  "id": 16821,
                                  "mutability": "mutable",
                                  "name": "returned",
                                  "nameLocation": "6814:8:51",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16855,
                                  "src": "6801:21:51",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 16820,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6801:5:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "documentation": "@dev `onERC721Received(address,address,uint,bytes)`.",
                              "id": 16837,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30783135306237613032",
                                        "id": 16826,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "6870:10:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_353073666_by_1",
                                          "typeString": "int_const 353073666"
                                        },
                                        "value": "0x150b7a02"
                                      },
                                      {
                                        "expression": {
                                          "id": 16827,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -15,
                                          "src": "6882:3:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 16828,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "6882:10:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "hexValue": "30",
                                            "id": 16831,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6902:1:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            }
                                          ],
                                          "id": 16830,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "6894:7:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 16829,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "6894:7:51",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 16832,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6894:10:51",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 16833,
                                        "name": "tokenId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16801,
                                        "src": "6906:7:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 16834,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16803,
                                        "src": "6915:4:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_353073666_by_1",
                                          "typeString": "int_const 353073666"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "expression": {
                                        "id": 16824,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "6847:3:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 16825,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encodeWithSelector",
                                      "nodeType": "MemberAccess",
                                      "src": "6847:22:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes4) pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 16835,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6847:73:51",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 16822,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16799,
                                    "src": "6826:9:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 16823,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "staticcall",
                                  "nodeType": "MemberAccess",
                                  "src": "6826:20:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                                  }
                                },
                                "id": 16836,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6826:95:51",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6798:123:51"
                            },
                            {
                              "assignments": [
                                16839
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 16839,
                                  "mutability": "mutable",
                                  "name": "selector",
                                  "nameLocation": "6942:8:51",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 16855,
                                  "src": "6935:15:51",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 16838,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6935:6:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 16847,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 16842,
                                    "name": "returned",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16821,
                                    "src": "6964:8:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "components": [
                                      {
                                        "id": 16844,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "6975:6:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes4_$",
                                          "typeString": "type(bytes4)"
                                        },
                                        "typeName": {
                                          "id": 16843,
                                          "name": "bytes4",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6975:6:51",
                                          "typeDescriptions": {}
                                        }
                                      }
                                    ],
                                    "id": 16845,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "6974:8:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes4_$",
                                      "typeString": "type(bytes4)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_type$_t_bytes4_$",
                                      "typeString": "type(bytes4)"
                                    }
                                  ],
                                  "expression": {
                                    "id": 16840,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "6953:3:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 16841,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "decode",
                                  "nodeType": "MemberAccess",
                                  "src": "6953:10:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 16846,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6953:30:51",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6935:48:51"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    "id": 16851,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 16849,
                                      "name": "selector",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16839,
                                      "src": "7005:8:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30783135306237613032",
                                      "id": 16850,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7017:10:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_353073666_by_1",
                                        "typeString": "int_const 353073666"
                                      },
                                      "value": "0x150b7a02"
                                    },
                                    "src": "7005:22:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4e4f545f4552433732315f5245434549564552",
                                    "id": 16852,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7029:21:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c04b5fb25a69354210ab22b09345d0b9caace9678d659f670b0674d722abad2d",
                                      "typeString": "literal_string \"NOT_ERC721_RECEIVER\""
                                    },
                                    "value": "NOT_ERC721_RECEIVER"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c04b5fb25a69354210ab22b09345d0b9caace9678d659f670b0674d722abad2d",
                                      "typeString": "literal_string \"NOT_ERC721_RECEIVER\""
                                    }
                                  ],
                                  "id": 16848,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "6997:7:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 16853,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6997:54:51",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 16854,
                              "nodeType": "ExpressionStatement",
                              "src": "6997:54:51"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16795,
                    "nodeType": "StructuredDocumentation",
                    "src": "6188:291:51",
                    "text": "@notice Transfers `tokenId` from 'owner' to `recipient` with data. Caller needs ownership or approval from 'owner',\n and `recipient` must have compatible {onERC721Received} function.\n @param recipient The address to move `tokenId` to.\n @param tokenId The Id to move."
                  },
                  "functionSelector": "b88d4fde",
                  "id": 16858,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "6493:16:51",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16804,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16797,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 16858,
                        "src": "6519:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16796,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6519:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16799,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "6544:9:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16858,
                        "src": "6536:17:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16798,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6536:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16801,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "6571:7:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16858,
                        "src": "6563:15:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16800,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6563:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16803,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6601:4:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16858,
                        "src": "6588:17:51",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 16802,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6588:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6509:102:51"
                  },
                  "returnParameters": {
                    "id": 16805,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6619:0:51"
                  },
                  "scope": 17166,
                  "src": "6484:584:51",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 16957,
                    "nodeType": "Block",
                    "src": "7657:960:51",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 16875,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16865,
                                "src": "7675:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "expression": {
                                  "id": 16876,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "7687:5:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 16877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "7687:15:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7675:27:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5045524d49545f444541444c494e455f45585049524544",
                              "id": 16879,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7704:25:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e",
                                "typeString": "literal_string \"PERMIT_DEADLINE_EXPIRED\""
                              },
                              "value": "PERMIT_DEADLINE_EXPIRED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e",
                                "typeString": "literal_string \"PERMIT_DEADLINE_EXPIRED\""
                              }
                            ],
                            "id": 16874,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7667:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7667:63:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16881,
                        "nodeType": "ExpressionStatement",
                        "src": "7667:63:51"
                      },
                      {
                        "assignments": [
                          16883
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 16883,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "7748:5:51",
                            "nodeType": "VariableDeclaration",
                            "scope": 16957,
                            "src": "7740:13:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 16882,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7740:7:51",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 16887,
                        "initialValue": {
                          "baseExpression": {
                            "id": 16884,
                            "name": "ownerOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16499,
                            "src": "7756:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 16886,
                          "indexExpression": {
                            "id": 16885,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16863,
                            "src": "7764:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7756:16:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7740:32:51"
                      },
                      {
                        "documentation": "@dev This is reasonably safe from overflow - incrementing `nonces` beyond",
                        "id": 16944,
                        "nodeType": "UncheckedBlock",
                        "src": "7958:565:51",
                        "statements": [
                          {
                            "assignments": [
                              16889
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 16889,
                                "mutability": "mutable",
                                "name": "digest",
                                "nameLocation": "7990:6:51",
                                "nodeType": "VariableDeclaration",
                                "scope": 16944,
                                "src": "7982:14:51",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "typeName": {
                                  "id": 16888,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7982:7:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 16911,
                            "initialValue": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "1901",
                                      "id": 16893,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8064:10:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                        "typeString": "literal_string hex\"1901\""
                                      },
                                      "value": "\u0019\u0001"
                                    },
                                    {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 16894,
                                        "name": "DOMAIN_SEPARATOR",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16606,
                                        "src": "8096:16:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                                          "typeString": "function () view returns (bytes32)"
                                        }
                                      },
                                      "id": 16895,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8096:18:51",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 16899,
                                              "name": "PERMIT_TYPEHASH",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 16517,
                                              "src": "8157:15:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            {
                                              "id": 16900,
                                              "name": "spender",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 16861,
                                              "src": "8174:7:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "id": 16901,
                                              "name": "tokenId",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 16863,
                                              "src": "8183:7:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "id": 16905,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "UnaryOperation",
                                              "operator": "++",
                                              "prefix": false,
                                              "src": "8192:17:51",
                                              "subExpression": {
                                                "baseExpression": {
                                                  "id": 16902,
                                                  "name": "nonces",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 16534,
                                                  "src": "8192:6:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                    "typeString": "mapping(uint256 => uint256)"
                                                  }
                                                },
                                                "id": 16904,
                                                "indexExpression": {
                                                  "id": 16903,
                                                  "name": "tokenId",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 16863,
                                                  "src": "8199:7:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": true,
                                                "nodeType": "IndexAccess",
                                                "src": "8192:15:51",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "id": 16906,
                                              "name": "deadline",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 16865,
                                              "src": "8211:8:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              },
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "id": 16897,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -1,
                                              "src": "8146:3:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 16898,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "encode",
                                            "nodeType": "MemberAccess",
                                            "src": "8146:10:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                              "typeString": "function () pure returns (bytes memory)"
                                            }
                                          },
                                          "id": 16907,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "8146:74:51",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 16896,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "8136:9:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 16908,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8136:85:51",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                        "typeString": "literal_string hex\"1901\""
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "expression": {
                                      "id": 16891,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "8026:3:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 16892,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "src": "8026:16:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 16909,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8026:213:51",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 16890,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "7999:9:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 16910,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7999:254:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "7982:271:51"
                          },
                          {
                            "assignments": [
                              16913
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 16913,
                                "mutability": "mutable",
                                "name": "recoveredAddress",
                                "nameLocation": "8275:16:51",
                                "nodeType": "VariableDeclaration",
                                "scope": 16944,
                                "src": "8267:24:51",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 16912,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8267:7:51",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 16920,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 16915,
                                  "name": "digest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16889,
                                  "src": "8304:6:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 16916,
                                  "name": "v",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16867,
                                  "src": "8312:1:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                {
                                  "id": 16917,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16869,
                                  "src": "8315:1:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 16918,
                                  "name": "s",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16871,
                                  "src": "8318:1:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 16914,
                                "name": "ecrecover",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -6,
                                "src": "8294:9:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                                  "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                                }
                              },
                              "id": 16919,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8294:26:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "8267:53:51"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 16927,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 16922,
                                    "name": "recoveredAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16913,
                                    "src": "8342:16:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 16925,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8370:1:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 16924,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8362:7:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 16923,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8362:7:51",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 16926,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8362:10:51",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "8342:30:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "hexValue": "494e56414c49445f5045524d49545f5349474e4154555245",
                                  "id": 16928,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8374:26:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb",
                                    "typeString": "literal_string \"INVALID_PERMIT_SIGNATURE\""
                                  },
                                  "value": "INVALID_PERMIT_SIGNATURE"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb",
                                    "typeString": "literal_string \"INVALID_PERMIT_SIGNATURE\""
                                  }
                                ],
                                "id": 16921,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "8334:7:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 16929,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8334:67:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 16930,
                            "nodeType": "ExpressionStatement",
                            "src": "8334:67:51"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 16940,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 16934,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 16932,
                                      "name": "recoveredAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16913,
                                      "src": "8423:16:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 16933,
                                      "name": "owner",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16883,
                                      "src": "8443:5:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "8423:25:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "baseExpression": {
                                      "baseExpression": {
                                        "id": 16935,
                                        "name": "isApprovedForAll",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16511,
                                        "src": "8452:16:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                          "typeString": "mapping(address => mapping(address => bool))"
                                        }
                                      },
                                      "id": 16937,
                                      "indexExpression": {
                                        "id": 16936,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16883,
                                        "src": "8469:5:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "8452:23:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                        "typeString": "mapping(address => bool)"
                                      }
                                    },
                                    "id": 16939,
                                    "indexExpression": {
                                      "id": 16938,
                                      "name": "recoveredAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16913,
                                      "src": "8476:16:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "8452:41:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "8423:70:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "hexValue": "494e56414c49445f5349474e4552",
                                  "id": 16941,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8495:16:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_ba2319f5fa9f0c8e55f0d6899910b7354e6f643d1d349de47190066d85e68a1c",
                                    "typeString": "literal_string \"INVALID_SIGNER\""
                                  },
                                  "value": "INVALID_SIGNER"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_ba2319f5fa9f0c8e55f0d6899910b7354e6f643d1d349de47190066d85e68a1c",
                                    "typeString": "literal_string \"INVALID_SIGNER\""
                                  }
                                ],
                                "id": 16931,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "8415:7:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 16942,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8415:97:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 16943,
                            "nodeType": "ExpressionStatement",
                            "src": "8415:97:51"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 16949,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 16945,
                              "name": "getApproved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16504,
                              "src": "8532:11:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 16947,
                            "indexExpression": {
                              "id": 16946,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16863,
                              "src": "8544:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8532:20:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 16948,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16861,
                            "src": "8555:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "8532:30:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 16950,
                        "nodeType": "ExpressionStatement",
                        "src": "8532:30:51"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 16952,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16883,
                              "src": "8586:5:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 16953,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16861,
                              "src": "8593:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 16954,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16863,
                              "src": "8602:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 16951,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16472,
                            "src": "8577:8:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 16955,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8577:33:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16956,
                        "nodeType": "EmitStatement",
                        "src": "8572:38:51"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16859,
                    "nodeType": "StructuredDocumentation",
                    "src": "7074:416:51",
                    "text": "@notice Triggers an approval from 'owner' to `spender` for a given `tokenId`.\n @param spender The address to be approved.\n @param tokenId The Id that is approved for `spender`.\n @param deadline The time at which to expire the signature.\n @param v The recovery byte of the signature.\n @param r Half of the ECDSA signature pair.\n @param s Half of the ECDSA signature pair."
                  },
                  "functionSelector": "7ac2ff7b",
                  "id": 16958,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permit",
                  "nameLocation": "7504:6:51",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16872,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16861,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "7528:7:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16958,
                        "src": "7520:15:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16860,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7520:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16863,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "7553:7:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16958,
                        "src": "7545:15:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16862,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7545:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16865,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nameLocation": "7578:8:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16958,
                        "src": "7570:16:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16864,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7570:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16867,
                        "mutability": "mutable",
                        "name": "v",
                        "nameLocation": "7602:1:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16958,
                        "src": "7596:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 16866,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "7596:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16869,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "7621:1:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16958,
                        "src": "7613:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 16868,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7613:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16871,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "7640:1:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 16958,
                        "src": "7632:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 16870,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7632:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7510:137:51"
                  },
                  "returnParameters": {
                    "id": 16873,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7657:0:51"
                  },
                  "scope": 17166,
                  "src": "7495:1122:51",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 17051,
                    "nodeType": "Block",
                    "src": "9305:950:51",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 16978,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 16975,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16965,
                                "src": "9323:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "expression": {
                                  "id": 16976,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "9335:5:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 16977,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "9335:15:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9323:27:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5045524d49545f444541444c494e455f45585049524544",
                              "id": 16979,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9352:25:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e",
                                "typeString": "literal_string \"PERMIT_DEADLINE_EXPIRED\""
                              },
                              "value": "PERMIT_DEADLINE_EXPIRED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e",
                                "typeString": "literal_string \"PERMIT_DEADLINE_EXPIRED\""
                              }
                            ],
                            "id": 16974,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9315:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 16980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9315:63:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 16981,
                        "nodeType": "ExpressionStatement",
                        "src": "9315:63:51"
                      },
                      {
                        "documentation": "@dev This is reasonably safe from overflow - incrementing `nonces` beyond",
                        "id": 17036,
                        "nodeType": "UncheckedBlock",
                        "src": "9564:583:51",
                        "statements": [
                          {
                            "assignments": [
                              16983
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 16983,
                                "mutability": "mutable",
                                "name": "digest",
                                "nameLocation": "9596:6:51",
                                "nodeType": "VariableDeclaration",
                                "scope": 17036,
                                "src": "9588:14:51",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "typeName": {
                                  "id": 16982,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9588:7:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 17005,
                            "initialValue": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "1901",
                                      "id": 16987,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9670:10:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                        "typeString": "literal_string hex\"1901\""
                                      },
                                      "value": "\u0019\u0001"
                                    },
                                    {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 16988,
                                        "name": "DOMAIN_SEPARATOR",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16606,
                                        "src": "9702:16:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                                          "typeString": "function () view returns (bytes32)"
                                        }
                                      },
                                      "id": 16989,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9702:18:51",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 16993,
                                              "name": "PERMIT_ALL_TYPEHASH",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 16523,
                                              "src": "9763:19:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            {
                                              "id": 16994,
                                              "name": "owner",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 16961,
                                              "src": "9784:5:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "id": 16995,
                                              "name": "operator",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 16963,
                                              "src": "9791:8:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "id": 16999,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "UnaryOperation",
                                              "operator": "++",
                                              "prefix": false,
                                              "src": "9801:21:51",
                                              "subExpression": {
                                                "baseExpression": {
                                                  "id": 16996,
                                                  "name": "noncesForAll",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 16539,
                                                  "src": "9801:12:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                  }
                                                },
                                                "id": 16998,
                                                "indexExpression": {
                                                  "id": 16997,
                                                  "name": "owner",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 16961,
                                                  "src": "9814:5:51",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": true,
                                                "nodeType": "IndexAccess",
                                                "src": "9801:19:51",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "id": 17000,
                                              "name": "deadline",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 16965,
                                              "src": "9824:8:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              },
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "id": 16991,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -1,
                                              "src": "9752:3:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 16992,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "encode",
                                            "nodeType": "MemberAccess",
                                            "src": "9752:10:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                              "typeString": "function () pure returns (bytes memory)"
                                            }
                                          },
                                          "id": 17001,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "9752:81:51",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 16990,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "9742:9:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 17002,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9742:92:51",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                        "typeString": "literal_string hex\"1901\""
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "expression": {
                                      "id": 16985,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "9632:3:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 16986,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "src": "9632:16:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 17003,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9632:220:51",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 16984,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "9605:9:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 17004,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9605:261:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "9588:278:51"
                          },
                          {
                            "assignments": [
                              17007
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 17007,
                                "mutability": "mutable",
                                "name": "recoveredAddress",
                                "nameLocation": "9888:16:51",
                                "nodeType": "VariableDeclaration",
                                "scope": 17036,
                                "src": "9880:24:51",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 17006,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9880:7:51",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 17014,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 17009,
                                  "name": "digest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16983,
                                  "src": "9917:6:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 17010,
                                  "name": "v",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16967,
                                  "src": "9925:1:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                {
                                  "id": 17011,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16969,
                                  "src": "9928:1:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 17012,
                                  "name": "s",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16971,
                                  "src": "9931:1:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 17008,
                                "name": "ecrecover",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -6,
                                "src": "9907:9:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                                  "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                                }
                              },
                              "id": 17013,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9907:26:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "9880:53:51"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 17032,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "id": 17025,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          "id": 17021,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 17016,
                                            "name": "recoveredAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17007,
                                            "src": "9973:16:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "arguments": [
                                              {
                                                "hexValue": "30",
                                                "id": 17019,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10001:1:51",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                }
                                              ],
                                              "id": 17018,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "9993:7:51",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 17017,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "9993:7:51",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 17020,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "9993:10:51",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "src": "9973:30:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&&",
                                        "rightExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          "id": 17024,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 17022,
                                            "name": "recoveredAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17007,
                                            "src": "10007:16:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "id": 17023,
                                            "name": "owner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 16961,
                                            "src": "10027:5:51",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "src": "10007:25:51",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "src": "9973:59:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "id": 17026,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "9972:61:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "baseExpression": {
                                      "baseExpression": {
                                        "id": 17027,
                                        "name": "isApprovedForAll",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16511,
                                        "src": "10037:16:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                          "typeString": "mapping(address => mapping(address => bool))"
                                        }
                                      },
                                      "id": 17029,
                                      "indexExpression": {
                                        "id": 17028,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 16961,
                                        "src": "10054:5:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "10037:23:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                        "typeString": "mapping(address => bool)"
                                      }
                                    },
                                    "id": 17031,
                                    "indexExpression": {
                                      "id": 17030,
                                      "name": "recoveredAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17007,
                                      "src": "10061:16:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "10037:41:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "9972:106:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "hexValue": "494e56414c49445f5045524d49545f5349474e4154555245",
                                  "id": 17033,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10096:26:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb",
                                    "typeString": "literal_string \"INVALID_PERMIT_SIGNATURE\""
                                  },
                                  "value": "INVALID_PERMIT_SIGNATURE"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb",
                                    "typeString": "literal_string \"INVALID_PERMIT_SIGNATURE\""
                                  }
                                ],
                                "id": 17015,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "9947:7:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 17034,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9947:189:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 17035,
                            "nodeType": "ExpressionStatement",
                            "src": "9947:189:51"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 17043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 17037,
                                "name": "isApprovedForAll",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16511,
                                "src": "10156:16:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 17040,
                              "indexExpression": {
                                "id": 17038,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16961,
                                "src": "10173:5:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10156:23:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 17041,
                            "indexExpression": {
                              "id": 17039,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16963,
                              "src": "10180:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10156:33:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 17042,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10192:4:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "10156:40:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17044,
                        "nodeType": "ExpressionStatement",
                        "src": "10156:40:51"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 17046,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16961,
                              "src": "10226:5:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17047,
                              "name": "operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16963,
                              "src": "10233:8:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 17048,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10243:4:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 17045,
                            "name": "ApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16480,
                            "src": "10211:14:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 17049,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10211:37:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17050,
                        "nodeType": "EmitStatement",
                        "src": "10206:42:51"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 16959,
                    "nodeType": "StructuredDocumentation",
                    "src": "8623:513:51",
                    "text": "@notice Triggers an approval from 'owner' to `operator` that can spend or {approve} spends of 'owner''s `tokenId`s.\n @param owner The address to be approved.\n @param operator Address of the party that can pull `tokenId`s from 'owner''s account or approve others to do same.\n @param deadline The time at which to expire the signature.\n @param v The recovery byte of the signature.\n @param r Half of the ECDSA signature pair.\n @param s Half of the ECDSA signature pair."
                  },
                  "functionSelector": "aba07847",
                  "id": 17052,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permitAll",
                  "nameLocation": "9150:9:51",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 16972,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 16961,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "9177:5:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 17052,
                        "src": "9169:13:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16960,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9169:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16963,
                        "mutability": "mutable",
                        "name": "operator",
                        "nameLocation": "9200:8:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 17052,
                        "src": "9192:16:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 16962,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9192:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16965,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nameLocation": "9226:8:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 17052,
                        "src": "9218:16:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 16964,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9218:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16967,
                        "mutability": "mutable",
                        "name": "v",
                        "nameLocation": "9250:1:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 17052,
                        "src": "9244:7:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 16966,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "9244:5:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16969,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "9269:1:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 17052,
                        "src": "9261:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 16968,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9261:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 16971,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "9288:1:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 17052,
                        "src": "9280:9:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 16970,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9280:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9159:136:51"
                  },
                  "returnParameters": {
                    "id": 16973,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9305:0:51"
                  },
                  "scope": 17166,
                  "src": "9141:1114:51",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 17095,
                    "nodeType": "Block",
                    "src": "10304:457:51",
                    "statements": [
                      {
                        "documentation": "@dev This is reasonably safe from overflow - incrementing beyond",
                        "id": 17094,
                        "nodeType": "UncheckedBlock",
                        "src": "10481:274:51",
                        "statements": [
                          {
                            "assignments": [
                              17058
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 17058,
                                "mutability": "mutable",
                                "name": "tokenId",
                                "nameLocation": "10513:7:51",
                                "nodeType": "VariableDeclaration",
                                "scope": 17094,
                                "src": "10505:15:51",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 17057,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10505:7:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 17061,
                            "initialValue": {
                              "id": 17060,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": false,
                              "src": "10523:13:51",
                              "subExpression": {
                                "id": 17059,
                                "name": "totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16489,
                                "src": "10523:11:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "10505:31:51"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 17070,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "baseExpression": {
                                      "id": 17063,
                                      "name": "ownerOf",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 16499,
                                      "src": "10558:7:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                        "typeString": "mapping(uint256 => address)"
                                      }
                                    },
                                    "id": 17065,
                                    "indexExpression": {
                                      "id": 17064,
                                      "name": "tokenId",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17058,
                                      "src": "10566:7:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "10558:16:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 17068,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10586:1:51",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 17067,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "10578:7:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 17066,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10578:7:51",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 17069,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10578:10:51",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "10558:30:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "hexValue": "414c52454144595f4d494e544544",
                                  "id": 17071,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10590:16:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e3f56786f4dc15ea567a5bcea1aa6e11424106cac78b0acf41b1b7deccad9f1b",
                                    "typeString": "literal_string \"ALREADY_MINTED\""
                                  },
                                  "value": "ALREADY_MINTED"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_e3f56786f4dc15ea567a5bcea1aa6e11424106cac78b0acf41b1b7deccad9f1b",
                                    "typeString": "literal_string \"ALREADY_MINTED\""
                                  }
                                ],
                                "id": 17062,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "10550:7:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 17072,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10550:57:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 17073,
                            "nodeType": "ExpressionStatement",
                            "src": "10550:57:51"
                          },
                          {
                            "expression": {
                              "id": 17077,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": false,
                              "src": "10621:22:51",
                              "subExpression": {
                                "baseExpression": {
                                  "id": 17074,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16494,
                                  "src": "10621:9:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 17076,
                                "indexExpression": {
                                  "id": 17075,
                                  "name": "recipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17054,
                                  "src": "10631:9:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "10621:20:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17078,
                            "nodeType": "ExpressionStatement",
                            "src": "10621:22:51"
                          },
                          {
                            "expression": {
                              "id": 17083,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 17079,
                                  "name": "ownerOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16499,
                                  "src": "10657:7:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 17081,
                                "indexExpression": {
                                  "id": 17080,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17058,
                                  "src": "10665:7:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "10657:16:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "id": 17082,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17054,
                                "src": "10676:9:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10657:28:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 17084,
                            "nodeType": "ExpressionStatement",
                            "src": "10657:28:51"
                          },
                          {
                            "eventCall": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 17088,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10721:1:51",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 17087,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10713:7:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 17086,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10713:7:51",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 17089,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10713:10:51",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 17090,
                                  "name": "recipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17054,
                                  "src": "10725:9:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 17091,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17058,
                                  "src": "10736:7:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 17085,
                                "name": "Transfer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16464,
                                "src": "10704:8:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,uint256)"
                                }
                              },
                              "id": 17092,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10704:40:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 17093,
                            "nodeType": "EmitStatement",
                            "src": "10699:45:51"
                          }
                        ]
                      }
                    ]
                  },
                  "id": 17096,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nameLocation": "10270:5:51",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17055,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17054,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "10284:9:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 17096,
                        "src": "10276:17:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17053,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10276:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10275:19:51"
                  },
                  "returnParameters": {
                    "id": 17056,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10304:0:51"
                  },
                  "scope": 17166,
                  "src": "10261:500:51",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 17126,
                    "nodeType": "Block",
                    "src": "10808:246:51",
                    "statements": [
                      {
                        "assignments": [
                          17102
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17102,
                            "mutability": "mutable",
                            "name": "owner",
                            "nameLocation": "10924:5:51",
                            "nodeType": "VariableDeclaration",
                            "scope": 17126,
                            "src": "10916:13:51",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 17101,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10916:7:51",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17106,
                        "initialValue": {
                          "baseExpression": {
                            "id": 17103,
                            "name": "ownerOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16499,
                            "src": "10932:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                              "typeString": "mapping(uint256 => address)"
                            }
                          },
                          "id": 17105,
                          "indexExpression": {
                            "id": 17104,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17098,
                            "src": "10940:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10932:16:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10916:32:51"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17113,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 17108,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17102,
                                "src": "10966:5:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 17111,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10983:1:51",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 17110,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10975:7:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 17109,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10975:7:51",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 17112,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10975:10:51",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "10966:19:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e4f545f4d494e544544",
                              "id": 17114,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10987:12:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e904b298bc24890ae0c043938d840f08b90773c1635904efe1336d6f851f98ca",
                                "typeString": "literal_string \"NOT_MINTED\""
                              },
                              "value": "NOT_MINTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e904b298bc24890ae0c043938d840f08b90773c1635904efe1336d6f851f98ca",
                                "typeString": "literal_string \"NOT_MINTED\""
                              }
                            ],
                            "id": 17107,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10958:7:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10958:42:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17116,
                        "nodeType": "ExpressionStatement",
                        "src": "10958:42:51"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17118,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17102,
                              "src": "11020:5:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 17121,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11035:1:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 17120,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11027:7:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 17119,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11027:7:51",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 17122,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11027:10:51",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17123,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17098,
                              "src": "11039:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17117,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17165,
                            "src": "11010:9:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 17124,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11010:37:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17125,
                        "nodeType": "ExpressionStatement",
                        "src": "11010:37:51"
                      }
                    ]
                  },
                  "id": 17127,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nameLocation": "10776:5:51",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17099,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17098,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "10790:7:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 17127,
                        "src": "10782:15:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17097,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10782:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10781:17:51"
                  },
                  "returnParameters": {
                    "id": 17100,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10808:0:51"
                  },
                  "scope": 17166,
                  "src": "10767:287:51",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 17164,
                    "nodeType": "Block",
                    "src": "11161:407:51",
                    "statements": [
                      {
                        "documentation": "@dev This is safe from under/overflow -",
                        "id": 17146,
                        "nodeType": "UncheckedBlock",
                        "src": "11371:81:51",
                        "statements": [
                          {
                            "expression": {
                              "id": 17139,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "--",
                              "prefix": false,
                              "src": "11395:17:51",
                              "subExpression": {
                                "baseExpression": {
                                  "id": 17136,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16494,
                                  "src": "11395:9:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 17138,
                                "indexExpression": {
                                  "id": 17137,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17129,
                                  "src": "11405:4:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "11395:15:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17140,
                            "nodeType": "ExpressionStatement",
                            "src": "11395:17:51"
                          },
                          {
                            "expression": {
                              "id": 17144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "++",
                              "prefix": false,
                              "src": "11426:15:51",
                              "subExpression": {
                                "baseExpression": {
                                  "id": 17141,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16494,
                                  "src": "11426:9:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 17143,
                                "indexExpression": {
                                  "id": 17142,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17131,
                                  "src": "11436:2:51",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "11426:13:51",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17145,
                            "nodeType": "ExpressionStatement",
                            "src": "11426:15:51"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 17150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "11461:27:51",
                          "subExpression": {
                            "baseExpression": {
                              "id": 17147,
                              "name": "getApproved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16504,
                              "src": "11468:11:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 17149,
                            "indexExpression": {
                              "id": 17148,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17133,
                              "src": "11480:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11468:20:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17151,
                        "nodeType": "ExpressionStatement",
                        "src": "11461:27:51"
                      },
                      {
                        "expression": {
                          "id": 17156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 17152,
                              "name": "ownerOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16499,
                              "src": "11498:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 17154,
                            "indexExpression": {
                              "id": 17153,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17133,
                              "src": "11506:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "11498:16:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 17155,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17131,
                            "src": "11517:2:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11498:21:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 17157,
                        "nodeType": "ExpressionStatement",
                        "src": "11498:21:51"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 17159,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17129,
                              "src": "11543:4:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17160,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17131,
                              "src": "11549:2:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17161,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17133,
                              "src": "11553:7:51",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17158,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16464,
                            "src": "11534:8:51",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 17162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11534:27:51",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17163,
                        "nodeType": "EmitStatement",
                        "src": "11529:32:51"
                      }
                    ]
                  },
                  "id": 17165,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nameLocation": "11069:9:51",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17134,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17129,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "11096:4:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 17165,
                        "src": "11088:12:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17128,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11088:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17131,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "11118:2:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 17165,
                        "src": "11110:10:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17130,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11110:7:51",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17133,
                        "mutability": "mutable",
                        "name": "tokenId",
                        "nameLocation": "11138:7:51",
                        "nodeType": "VariableDeclaration",
                        "scope": 17165,
                        "src": "11130:15:51",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17132,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11130:7:51",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11078:73:51"
                  },
                  "returnParameters": {
                    "id": 17135,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11161:0:51"
                  },
                  "scope": 17166,
                  "src": "11060:508:51",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 17167,
              "src": "508:11062:51",
              "usedErrors": []
            }
          ],
          "src": "46:11525:51"
        },
        "id": 51
      },
      "contracts/pool/franchised/FranchisedConstantProductPool.sol": {
        "ast": {
          "absolutePath": "contracts/pool/franchised/FranchisedConstantProductPool.sol",
          "exportedSymbols": {
            "FranchisedConstantProductPool": [
              18952
            ],
            "IBentoBoxMinimal": [
              2253
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "ITridentCallee": [
              2482
            ],
            "IWhiteListManager": [
              2612
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "TridentFranchisedERC20": [
              23629
            ],
            "TridentMath": [
              3139
            ]
          },
          "id": 18953,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 17168,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:52"
            },
            {
              "absolutePath": "contracts/interfaces/IBentoBoxMinimal.sol",
              "file": "../../interfaces/IBentoBoxMinimal.sol",
              "id": 17169,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18953,
              "sourceUnit": 2254,
              "src": "72:47:52",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IMasterDeployer.sol",
              "file": "../../interfaces/IMasterDeployer.sol",
              "id": 17170,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18953,
              "sourceUnit": 2357,
              "src": "120:46:52",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IPool.sol",
              "file": "../../interfaces/IPool.sol",
              "id": 17171,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18953,
              "sourceUnit": 2451,
              "src": "167:36:52",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ITridentCallee.sol",
              "file": "../../interfaces/ITridentCallee.sol",
              "id": 17172,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18953,
              "sourceUnit": 2483,
              "src": "204:45:52",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/TridentMath.sol",
              "file": "../../libraries/TridentMath.sol",
              "id": 17173,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18953,
              "sourceUnit": 3140,
              "src": "250:41:52",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pool/franchised/TridentFranchisedERC20.sol",
              "file": "./TridentFranchisedERC20.sol",
              "id": 17174,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 18953,
              "sourceUnit": 23630,
              "src": "292:38:52",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 17176,
                    "name": "IPool",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2450,
                    "src": "654:5:52"
                  },
                  "id": 17177,
                  "nodeType": "InheritanceSpecifier",
                  "src": "654:5:52"
                },
                {
                  "baseName": {
                    "id": 17178,
                    "name": "TridentFranchisedERC20",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 23629,
                    "src": "661:22:52"
                  },
                  "id": 17179,
                  "nodeType": "InheritanceSpecifier",
                  "src": "661:22:52"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 17175,
                "nodeType": "StructuredDocumentation",
                "src": "332:280:52",
                "text": "@notice Trident exchange franchised pool template with constant product formula for swapping between an ERC-20 token pair.\n @dev The reserves are stored as bento shares.\n      The curve is applied to shares as well. This pool does not care about the underlying amounts."
              },
              "fullyImplemented": true,
              "id": 18952,
              "linearizedBaseContracts": [
                18952,
                23629,
                2450
              ],
              "name": "FranchisedConstantProductPool",
              "nameLocation": "621:29:52",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 17191,
                  "name": "Mint",
                  "nameLocation": "696:4:52",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17190,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17181,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "717:6:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 17191,
                        "src": "701:22:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17180,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "701:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17183,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount0",
                        "nameLocation": "733:7:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 17191,
                        "src": "725:15:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17182,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "725:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17185,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount1",
                        "nameLocation": "750:7:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 17191,
                        "src": "742:15:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17184,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "742:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17187,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "775:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 17191,
                        "src": "759:25:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17186,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "759:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17189,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "794:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 17191,
                        "src": "786:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17188,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "786:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "700:104:52"
                  },
                  "src": "690:115:52"
                },
                {
                  "anonymous": false,
                  "id": 17203,
                  "name": "Burn",
                  "nameLocation": "816:4:52",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17202,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17193,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "837:6:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 17203,
                        "src": "821:22:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17192,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "821:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17195,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount0",
                        "nameLocation": "853:7:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 17203,
                        "src": "845:15:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17194,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "845:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17197,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount1",
                        "nameLocation": "870:7:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 17203,
                        "src": "862:15:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17196,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "862:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17199,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "895:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 17203,
                        "src": "879:25:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17198,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "879:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17201,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "914:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 17203,
                        "src": "906:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17200,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "906:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "820:104:52"
                  },
                  "src": "810:115:52"
                },
                {
                  "anonymous": false,
                  "id": 17209,
                  "name": "Sync",
                  "nameLocation": "936:4:52",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 17208,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17205,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "reserve0",
                        "nameLocation": "949:8:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 17209,
                        "src": "941:16:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17204,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "941:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17207,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "reserve1",
                        "nameLocation": "967:8:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 17209,
                        "src": "959:16:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17206,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "959:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "940:36:52"
                  },
                  "src": "930:47:52"
                },
                {
                  "constant": true,
                  "id": 17212,
                  "mutability": "constant",
                  "name": "MINIMUM_LIQUIDITY",
                  "nameLocation": "1009:17:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "983:50:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17210,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "983:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "31303030",
                    "id": 17211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1029:4:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000_by_1",
                      "typeString": "int_const 1000"
                    },
                    "value": "1000"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 17215,
                  "mutability": "constant",
                  "name": "PRECISION",
                  "nameLocation": "1064:9:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "1040:39:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 17213,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1040:5:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "313132",
                    "id": 17214,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1076:3:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_112_by_1",
                      "typeString": "int_const 112"
                    },
                    "value": "112"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 17218,
                  "mutability": "constant",
                  "name": "MAX_FEE",
                  "nameLocation": "1111:7:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "1085:41:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17216,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1085:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3130303030",
                    "id": 17217,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1121:5:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_10000_by_1",
                      "typeString": "int_const 10000"
                    },
                    "value": "10000"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 17221,
                  "mutability": "constant",
                  "name": "MAX_FEE_SQUARE",
                  "nameLocation": "1172:14:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "1146:52:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17219,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1146:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "313030303030303030",
                    "id": 17220,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1189:9:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_100000000_by_1",
                      "typeString": "int_const 100000000"
                    },
                    "value": "100000000"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 17229,
                  "mutability": "constant",
                  "name": "E18",
                  "nameLocation": "1230:3:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "1204:47:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17222,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1204:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 17228,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "hexValue": "3130",
                          "id": 17225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1244:2:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10_by_1",
                            "typeString": "int_const 10"
                          },
                          "value": "10"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_10_by_1",
                            "typeString": "int_const 10"
                          }
                        ],
                        "id": 17224,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "1236:7:52",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 17223,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1236:7:52",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 17226,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1236:11:52",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "hexValue": "3138",
                      "id": 17227,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1249:2:52",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_18_by_1",
                        "typeString": "int_const 18"
                      },
                      "value": "18"
                    },
                    "src": "1236:15:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "54cf2aeb",
                  "id": 17231,
                  "mutability": "immutable",
                  "name": "swapFee",
                  "nameLocation": "1282:7:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "1257:32:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17230,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1257:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17233,
                  "mutability": "immutable",
                  "name": "MAX_FEE_MINUS_SWAP_FEE",
                  "nameLocation": "1322:22:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "1295:49:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17232,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1295:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "0c0a0cd2",
                  "id": 17235,
                  "mutability": "immutable",
                  "name": "barFeeTo",
                  "nameLocation": "1376:8:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "1351:33:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17234,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1351:7:52",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "4da31827",
                  "id": 17237,
                  "mutability": "immutable",
                  "name": "bento",
                  "nameLocation": "1415:5:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "1390:30:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17236,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1390:7:52",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "cf58879a",
                  "id": 17239,
                  "mutability": "immutable",
                  "name": "masterDeployer",
                  "nameLocation": "1451:14:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "1426:39:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17238,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1426:7:52",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "0dfe1681",
                  "id": 17241,
                  "mutability": "immutable",
                  "name": "token0",
                  "nameLocation": "1496:6:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "1471:31:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17240,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1471:7:52",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "d21220a7",
                  "id": 17243,
                  "mutability": "immutable",
                  "name": "token1",
                  "nameLocation": "1533:6:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "1508:31:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17242,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1508:7:52",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "c14ad802",
                  "id": 17245,
                  "mutability": "mutable",
                  "name": "barFee",
                  "nameLocation": "1561:6:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "1546:21:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17244,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1546:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "5909c0d5",
                  "id": 17247,
                  "mutability": "mutable",
                  "name": "price0CumulativeLast",
                  "nameLocation": "1588:20:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "1573:35:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17246,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1573:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "5a3d5493",
                  "id": 17249,
                  "mutability": "mutable",
                  "name": "price1CumulativeLast",
                  "nameLocation": "1629:20:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "1614:35:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17248,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1614:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "7464fc3d",
                  "id": 17251,
                  "mutability": "mutable",
                  "name": "kLast",
                  "nameLocation": "1670:5:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "1655:20:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17250,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1655:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17253,
                  "mutability": "mutable",
                  "name": "reserve0",
                  "nameLocation": "1699:8:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "1682:25:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 17252,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "1682:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17255,
                  "mutability": "mutable",
                  "name": "reserve1",
                  "nameLocation": "1730:8:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "1713:25:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  },
                  "typeName": {
                    "id": 17254,
                    "name": "uint112",
                    "nodeType": "ElementaryTypeName",
                    "src": "1713:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint112",
                      "typeString": "uint112"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17257,
                  "mutability": "mutable",
                  "name": "blockTimestampLast",
                  "nameLocation": "1760:18:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "1744:34:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 17256,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1744:6:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2408
                  ],
                  "constant": true,
                  "functionSelector": "a69840a8",
                  "id": 17261,
                  "mutability": "constant",
                  "name": "poolIdentifier",
                  "nameLocation": "1818:14:52",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 17259,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1809:8:52"
                  },
                  "scope": 18952,
                  "src": "1785:72:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 17258,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1785:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "54726964656e743a4672616e6368697365644350",
                    "id": 17260,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1835:22:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_a94695c148941f95571c4ee3034c1111b7df66bf02822b87613765d5b607fb8e",
                      "typeString": "literal_string \"Trident:FranchisedCP\""
                    },
                    "value": "Trident:FranchisedCP"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 17263,
                  "mutability": "mutable",
                  "name": "unlocked",
                  "nameLocation": "1881:8:52",
                  "nodeType": "VariableDeclaration",
                  "scope": 18952,
                  "src": "1864:25:52",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17262,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1864:7:52",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 17281,
                    "nodeType": "Block",
                    "src": "1911:104:52",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17268,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 17266,
                                "name": "unlocked",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17263,
                                "src": "1929:8:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 17267,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1941:1:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "1929:13:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4c4f434b4544",
                              "id": 17269,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1944:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b",
                                "typeString": "literal_string \"LOCKED\""
                              },
                              "value": "LOCKED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b",
                                "typeString": "literal_string \"LOCKED\""
                              }
                            ],
                            "id": 17265,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1921:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1921:32:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17271,
                        "nodeType": "ExpressionStatement",
                        "src": "1921:32:52"
                      },
                      {
                        "expression": {
                          "id": 17274,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 17272,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17263,
                            "src": "1963:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "32",
                            "id": 17273,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1974:1:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "1963:12:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17275,
                        "nodeType": "ExpressionStatement",
                        "src": "1963:12:52"
                      },
                      {
                        "id": 17276,
                        "nodeType": "PlaceholderStatement",
                        "src": "1985:1:52"
                      },
                      {
                        "expression": {
                          "id": 17279,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 17277,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17263,
                            "src": "1996:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 17278,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2007:1:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "1996:12:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17280,
                        "nodeType": "ExpressionStatement",
                        "src": "1996:12:52"
                      }
                    ]
                  },
                  "id": 17282,
                  "name": "lock",
                  "nameLocation": "1904:4:52",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 17264,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1908:2:52"
                  },
                  "src": "1895:120:52",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 17474,
                    "nodeType": "Block",
                    "src": "2084:1659:52",
                    "statements": [
                      {
                        "assignments": [
                          17290,
                          17292,
                          17294,
                          17296,
                          17298,
                          17300,
                          17302
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17290,
                            "mutability": "mutable",
                            "name": "_token0",
                            "nameLocation": "2116:7:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17474,
                            "src": "2108:15:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 17289,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2108:7:52",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17292,
                            "mutability": "mutable",
                            "name": "_token1",
                            "nameLocation": "2145:7:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17474,
                            "src": "2137:15:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 17291,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2137:7:52",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17294,
                            "mutability": "mutable",
                            "name": "_swapFee",
                            "nameLocation": "2174:8:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17474,
                            "src": "2166:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17293,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2166:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17296,
                            "mutability": "mutable",
                            "name": "_twapSupport",
                            "nameLocation": "2201:12:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17474,
                            "src": "2196:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 17295,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2196:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17298,
                            "mutability": "mutable",
                            "name": "_whiteListManager",
                            "nameLocation": "2235:17:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17474,
                            "src": "2227:25:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 17297,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2227:7:52",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17300,
                            "mutability": "mutable",
                            "name": "_operator",
                            "nameLocation": "2274:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17474,
                            "src": "2266:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 17299,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2266:7:52",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17302,
                            "mutability": "mutable",
                            "name": "_level2",
                            "nameLocation": "2302:7:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17474,
                            "src": "2297:12:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 17301,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2297:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17322,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17305,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17284,
                              "src": "2333:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 17307,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2347:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 17306,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2347:7:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 17309,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2356:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 17308,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2356:7:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 17311,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2365:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 17310,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2365:7:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 17313,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2374:4:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 17312,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2374:4:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 17315,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2380:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 17314,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2380:7:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 17317,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2389:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 17316,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2389:7:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 17319,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2398:4:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 17318,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2398:4:52",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 17320,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2346:57:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_bool_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint256),type(bool),type(address),type(address),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_bool_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint256),type(bool),type(address),type(address),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 17303,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "2322:3:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 17304,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "2322:10:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 17321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2322:82:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_uint256_$_t_bool_$_t_address_payable_$_t_address_payable_$_t_bool_$",
                            "typeString": "tuple(address payable,address payable,uint256,bool,address payable,address payable,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2094:310:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17329,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 17324,
                                "name": "_token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17290,
                                "src": "2483:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 17327,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2502:1:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 17326,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2494:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 17325,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2494:7:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 17328,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2494:10:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2483:21:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5a45524f5f41444452455353",
                              "id": 17330,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2506:14:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af",
                                "typeString": "literal_string \"ZERO_ADDRESS\""
                              },
                              "value": "ZERO_ADDRESS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af",
                                "typeString": "literal_string \"ZERO_ADDRESS\""
                              }
                            ],
                            "id": 17323,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2475:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2475:46:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17332,
                        "nodeType": "ExpressionStatement",
                        "src": "2475:46:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17336,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 17334,
                                "name": "_token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17290,
                                "src": "2539:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 17335,
                                "name": "_token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17292,
                                "src": "2550:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2539:18:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4944454e544943414c5f414444524553534553",
                              "id": 17337,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2559:21:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6",
                                "typeString": "literal_string \"IDENTICAL_ADDRESSES\""
                              },
                              "value": "IDENTICAL_ADDRESSES"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6",
                                "typeString": "literal_string \"IDENTICAL_ADDRESSES\""
                              }
                            ],
                            "id": 17333,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2531:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2531:50:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17339,
                        "nodeType": "ExpressionStatement",
                        "src": "2531:50:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17346,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 17341,
                                "name": "_token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17290,
                                "src": "2599:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 17344,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "2618:4:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                      "typeString": "contract FranchisedConstantProductPool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                      "typeString": "contract FranchisedConstantProductPool"
                                    }
                                  ],
                                  "id": 17343,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2610:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 17342,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2610:7:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 17345,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2610:13:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2599:24:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f544f4b454e",
                              "id": 17347,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2625:15:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_436b5627177a9781148596ddddd93f72d53dd82575a018216d5aaf2a8219ec9e",
                                "typeString": "literal_string \"INVALID_TOKEN\""
                              },
                              "value": "INVALID_TOKEN"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_436b5627177a9781148596ddddd93f72d53dd82575a018216d5aaf2a8219ec9e",
                                "typeString": "literal_string \"INVALID_TOKEN\""
                              }
                            ],
                            "id": 17340,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2591:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2591:50:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17349,
                        "nodeType": "ExpressionStatement",
                        "src": "2591:50:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17356,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 17351,
                                "name": "_token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17292,
                                "src": "2659:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 17354,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "2678:4:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                      "typeString": "contract FranchisedConstantProductPool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                      "typeString": "contract FranchisedConstantProductPool"
                                    }
                                  ],
                                  "id": 17353,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2670:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 17352,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2670:7:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 17355,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2670:13:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2659:24:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f544f4b454e",
                              "id": 17357,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2685:15:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_436b5627177a9781148596ddddd93f72d53dd82575a018216d5aaf2a8219ec9e",
                                "typeString": "literal_string \"INVALID_TOKEN\""
                              },
                              "value": "INVALID_TOKEN"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_436b5627177a9781148596ddddd93f72d53dd82575a018216d5aaf2a8219ec9e",
                                "typeString": "literal_string \"INVALID_TOKEN\""
                              }
                            ],
                            "id": 17350,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2651:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17358,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2651:50:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17359,
                        "nodeType": "ExpressionStatement",
                        "src": "2651:50:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17363,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 17361,
                                "name": "_swapFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17294,
                                "src": "2719:8:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 17362,
                                "name": "MAX_FEE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17218,
                                "src": "2731:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2719:19:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f535741505f464545",
                              "id": 17364,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2740:18:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1",
                                "typeString": "literal_string \"INVALID_SWAP_FEE\""
                              },
                              "value": "INVALID_SWAP_FEE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1",
                                "typeString": "literal_string \"INVALID_SWAP_FEE\""
                              }
                            ],
                            "id": 17360,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2711:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2711:48:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17366,
                        "nodeType": "ExpressionStatement",
                        "src": "2711:48:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17370,
                              "name": "_whiteListManager",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17298,
                              "src": "2804:17:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17371,
                              "name": "_operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17300,
                              "src": "2823:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17372,
                              "name": "_level2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17302,
                              "src": "2834:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "id": 17367,
                              "name": "TridentFranchisedERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23629,
                              "src": "2770:22:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TridentFranchisedERC20_$23629_$",
                                "typeString": "type(contract TridentFranchisedERC20)"
                              }
                            },
                            "id": 17369,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initialize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 23316,
                            "src": "2770:33:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 17373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2770:72:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17374,
                        "nodeType": "ExpressionStatement",
                        "src": "2770:72:52"
                      },
                      {
                        "assignments": [
                          null,
                          17376
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 17376,
                            "mutability": "mutable",
                            "name": "_barFee",
                            "nameLocation": "2869:7:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17474,
                            "src": "2856:20:52",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 17375,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2856:5:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17386,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 17381,
                                      "name": "IMasterDeployer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2356,
                                      "src": "2930:15:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                        "typeString": "type(contract IMasterDeployer)"
                                      }
                                    },
                                    "id": 17382,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "barFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2324,
                                    "src": "2930:22:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_view$__$returns$_t_uint256_$",
                                      "typeString": "function IMasterDeployer.barFee() view returns (uint256)"
                                    }
                                  },
                                  "id": 17383,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "2930:31:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "expression": {
                                  "id": 17379,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2907:3:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 17380,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "2907:22:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 17384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2907:55:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 17377,
                              "name": "_masterDeployer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17286,
                              "src": "2880:15:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 17378,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "2880:26:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 17385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2880:83:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2853:110:52"
                      },
                      {
                        "assignments": [
                          null,
                          17388
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 17388,
                            "mutability": "mutable",
                            "name": "_barFeeTo",
                            "nameLocation": "2989:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17474,
                            "src": "2976:22:52",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 17387,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2976:5:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17398,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 17393,
                                      "name": "IMasterDeployer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2356,
                                      "src": "3052:15:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                        "typeString": "type(contract IMasterDeployer)"
                                      }
                                    },
                                    "id": 17394,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "barFeeTo",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2329,
                                    "src": "3052:24:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_view$__$returns$_t_address_$",
                                      "typeString": "function IMasterDeployer.barFeeTo() view returns (address)"
                                    }
                                  },
                                  "id": 17395,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "3052:33:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "expression": {
                                  "id": 17391,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3029:3:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 17392,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "3029:22:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 17396,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3029:57:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 17389,
                              "name": "_masterDeployer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17286,
                              "src": "3002:15:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 17390,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "3002:26:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 17397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3002:85:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2973:114:52"
                      },
                      {
                        "assignments": [
                          null,
                          17400
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 17400,
                            "mutability": "mutable",
                            "name": "_bento",
                            "nameLocation": "3113:6:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17474,
                            "src": "3100:19:52",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 17399,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3100:5:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17410,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 17405,
                                      "name": "IMasterDeployer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2356,
                                      "src": "3173:15:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                        "typeString": "type(contract IMasterDeployer)"
                                      }
                                    },
                                    "id": 17406,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "bento",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2334,
                                    "src": "3173:21:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_view$__$returns$_t_address_$",
                                      "typeString": "function IMasterDeployer.bento() view returns (address)"
                                    }
                                  },
                                  "id": 17407,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "3173:30:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "expression": {
                                  "id": 17403,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3150:3:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 17404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "3150:22:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 17408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3150:54:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 17401,
                              "name": "_masterDeployer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17286,
                              "src": "3123:15:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 17402,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "3123:26:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 17409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3123:82:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3097:108:52"
                      },
                      {
                        "expression": {
                          "id": 17413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 17411,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17241,
                            "src": "3216:6:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 17412,
                            "name": "_token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17290,
                            "src": "3225:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3216:16:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 17414,
                        "nodeType": "ExpressionStatement",
                        "src": "3216:16:52"
                      },
                      {
                        "expression": {
                          "id": 17417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 17415,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17243,
                            "src": "3242:6:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 17416,
                            "name": "_token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17292,
                            "src": "3251:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3242:16:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 17418,
                        "nodeType": "ExpressionStatement",
                        "src": "3242:16:52"
                      },
                      {
                        "expression": {
                          "id": 17421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 17419,
                            "name": "swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17231,
                            "src": "3268:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 17420,
                            "name": "_swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17294,
                            "src": "3278:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3268:18:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17422,
                        "nodeType": "ExpressionStatement",
                        "src": "3268:18:52"
                      },
                      {
                        "id": 17429,
                        "nodeType": "UncheckedBlock",
                        "src": "3396:78:52",
                        "statements": [
                          {
                            "expression": {
                              "id": 17427,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 17423,
                                "name": "MAX_FEE_MINUS_SWAP_FEE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17233,
                                "src": "3420:22:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17426,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 17424,
                                  "name": "MAX_FEE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17218,
                                  "src": "3445:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 17425,
                                  "name": "_swapFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17294,
                                  "src": "3455:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3445:18:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3420:43:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17428,
                            "nodeType": "ExpressionStatement",
                            "src": "3420:43:52"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 17438,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 17430,
                            "name": "barFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17245,
                            "src": "3483:6:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 17433,
                                "name": "_barFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17376,
                                "src": "3503:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 17435,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3513:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 17434,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3513:7:52",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 17436,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3512:9:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "expression": {
                                "id": 17431,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "3492:3:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 17432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "3492:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 17437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3492:30:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3483:39:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17439,
                        "nodeType": "ExpressionStatement",
                        "src": "3483:39:52"
                      },
                      {
                        "expression": {
                          "id": 17448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 17440,
                            "name": "barFeeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17235,
                            "src": "3532:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 17443,
                                "name": "_barFeeTo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17388,
                                "src": "3554:9:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 17445,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3566:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 17444,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3566:7:52",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 17446,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3565:9:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                }
                              ],
                              "expression": {
                                "id": 17441,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "3543:3:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 17442,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "3543:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 17447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3543:32:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "3532:43:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 17449,
                        "nodeType": "ExpressionStatement",
                        "src": "3532:43:52"
                      },
                      {
                        "expression": {
                          "id": 17458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 17450,
                            "name": "bento",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17237,
                            "src": "3585:5:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 17453,
                                "name": "_bento",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17400,
                                "src": "3604:6:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 17455,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3613:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 17454,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3613:7:52",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 17456,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3612:9:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                }
                              ],
                              "expression": {
                                "id": 17451,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "3593:3:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 17452,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "3593:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 17457,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3593:29:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "3585:37:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 17459,
                        "nodeType": "ExpressionStatement",
                        "src": "3585:37:52"
                      },
                      {
                        "expression": {
                          "id": 17462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 17460,
                            "name": "masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17239,
                            "src": "3632:14:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 17461,
                            "name": "_masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17286,
                            "src": "3649:15:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3632:32:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 17463,
                        "nodeType": "ExpressionStatement",
                        "src": "3632:32:52"
                      },
                      {
                        "expression": {
                          "id": 17466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 17464,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17263,
                            "src": "3674:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 17465,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3685:1:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "3674:12:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17467,
                        "nodeType": "ExpressionStatement",
                        "src": "3674:12:52"
                      },
                      {
                        "condition": {
                          "id": 17468,
                          "name": "_twapSupport",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17296,
                          "src": "3700:12:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 17473,
                        "nodeType": "IfStatement",
                        "src": "3696:40:52",
                        "trueBody": {
                          "expression": {
                            "id": 17471,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 17469,
                              "name": "blockTimestampLast",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17257,
                              "src": "3714:18:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "hexValue": "31",
                              "id": 17470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3735:1:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "3714:22:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "id": 17472,
                          "nodeType": "ExpressionStatement",
                          "src": "3714:22:52"
                        }
                      }
                    ]
                  },
                  "id": 17475,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 17287,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17284,
                        "mutability": "mutable",
                        "name": "_deployData",
                        "nameLocation": "2046:11:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 17475,
                        "src": "2033:24:52",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17283,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2033:5:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 17286,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "2067:15:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 17475,
                        "src": "2059:23:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 17285,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2059:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2032:51:52"
                  },
                  "returnParameters": {
                    "id": 17288,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2084:0:52"
                  },
                  "scope": 18952,
                  "src": "2021:1722:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2384
                  ],
                  "body": {
                    "id": 17653,
                    "nodeType": "Block",
                    "src": "4026:1345:52",
                    "statements": [
                      {
                        "assignments": [
                          17487
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17487,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "4044:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17653,
                            "src": "4036:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 17486,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4036:7:52",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17495,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17490,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17478,
                              "src": "4067:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 17492,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4074:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 17491,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4074:7:52",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 17493,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "4073:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              }
                            ],
                            "expression": {
                              "id": 17488,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "4056:3:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 17489,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "4056:10:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 17494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4056:27:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4036:47:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17497,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17487,
                              "src": "4109:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 17496,
                            "name": "_checkWhiteList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23628,
                            "src": "4093:15:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 17498,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4093:26:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17499,
                        "nodeType": "ExpressionStatement",
                        "src": "4093:26:52"
                      },
                      {
                        "assignments": [
                          17501,
                          17503,
                          17505
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17501,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "4138:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17653,
                            "src": "4130:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 17500,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "4130:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17503,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "4157:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17653,
                            "src": "4149:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 17502,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "4149:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17505,
                            "mutability": "mutable",
                            "name": "_blockTimestampLast",
                            "nameLocation": "4175:19:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17653,
                            "src": "4168:26:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 17504,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4168:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17508,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 17506,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18397,
                            "src": "4198:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                              "typeString": "function () view returns (uint112,uint112,uint32)"
                            }
                          },
                          "id": 17507,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4198:14:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "tuple(uint112,uint112,uint32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4129:83:52"
                      },
                      {
                        "assignments": [
                          17510,
                          17512
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17510,
                            "mutability": "mutable",
                            "name": "balance0",
                            "nameLocation": "4231:8:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17653,
                            "src": "4223:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17509,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4223:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17512,
                            "mutability": "mutable",
                            "name": "balance1",
                            "nameLocation": "4249:8:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17653,
                            "src": "4241:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17511,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4241:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17515,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 17513,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18455,
                            "src": "4261:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 17514,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4261:10:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4222:49:52"
                      },
                      {
                        "assignments": [
                          17517
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17517,
                            "mutability": "mutable",
                            "name": "_totalSupply",
                            "nameLocation": "4289:12:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17653,
                            "src": "4281:20:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17516,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4281:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17519,
                        "initialValue": {
                          "id": 17518,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23232,
                          "src": "4304:11:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4281:34:52"
                      },
                      {
                        "id": 17528,
                        "nodeType": "UncheckedBlock",
                        "src": "4326:95:52",
                        "statements": [
                          {
                            "expression": {
                              "id": 17526,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 17520,
                                "name": "_totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17517,
                                "src": "4350:12:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 17522,
                                    "name": "_reserve0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17501,
                                    "src": "4375:9:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    }
                                  },
                                  {
                                    "id": 17523,
                                    "name": "_reserve1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17503,
                                    "src": "4386:9:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    }
                                  },
                                  {
                                    "id": 17524,
                                    "name": "_totalSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17517,
                                    "src": "4397:12:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    },
                                    {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 17521,
                                  "name": "_mintFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18659,
                                  "src": "4366:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint112_$_t_uint112_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint112,uint112,uint256) returns (uint256)"
                                  }
                                },
                                "id": 17525,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4366:44:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4350:60:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17527,
                            "nodeType": "ExpressionStatement",
                            "src": "4350:60:52"
                          }
                        ]
                      },
                      {
                        "assignments": [
                          17530
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17530,
                            "mutability": "mutable",
                            "name": "amount0",
                            "nameLocation": "4439:7:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17653,
                            "src": "4431:15:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17529,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4431:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17534,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 17531,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17510,
                            "src": "4449:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 17532,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17501,
                            "src": "4460:9:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "4449:20:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4431:38:52"
                      },
                      {
                        "assignments": [
                          17536
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17536,
                            "mutability": "mutable",
                            "name": "amount1",
                            "nameLocation": "4487:7:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17653,
                            "src": "4479:15:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17535,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4479:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17540,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17539,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 17537,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17512,
                            "src": "4497:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 17538,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17503,
                            "src": "4508:9:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "4497:20:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4479:38:52"
                      },
                      {
                        "assignments": [
                          17542,
                          17544
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17542,
                            "mutability": "mutable",
                            "name": "fee0",
                            "nameLocation": "4536:4:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17653,
                            "src": "4528:12:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17541,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4528:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17544,
                            "mutability": "mutable",
                            "name": "fee1",
                            "nameLocation": "4550:4:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17653,
                            "src": "4542:12:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17543,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4542:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17551,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17546,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17530,
                              "src": "4577:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17547,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17536,
                              "src": "4586:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17548,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17501,
                              "src": "4595:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 17549,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17503,
                              "src": "4606:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            ],
                            "id": 17545,
                            "name": "_nonOptimalMintFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18839,
                            "src": "4558:18:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256,uint256) view returns (uint256,uint256)"
                            }
                          },
                          "id": 17550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4558:58:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4527:89:52"
                      },
                      {
                        "assignments": [
                          17553
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17553,
                            "mutability": "mutable",
                            "name": "computed",
                            "nameLocation": "4634:8:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17653,
                            "src": "4626:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17552,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4626:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17566,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17564,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 17558,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 17556,
                                      "name": "balance0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17510,
                                      "src": "4663:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "id": 17557,
                                      "name": "fee0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17542,
                                      "src": "4674:4:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4663:15:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 17559,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "4662:17:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 17562,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 17560,
                                      "name": "balance1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17512,
                                      "src": "4683:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "id": 17561,
                                      "name": "fee1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17544,
                                      "src": "4694:4:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4683:15:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 17563,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "4682:17:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4662:37:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 17554,
                              "name": "TridentMath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3139,
                              "src": "4645:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TridentMath_$3139_$",
                                "typeString": "type(library TridentMath)"
                              }
                            },
                            "id": 17555,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sqrt",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3138,
                            "src": "4645:16:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 17565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4645:55:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4626:74:52"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 17567,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17517,
                            "src": "4715:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 17568,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4731:1:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4715:17:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 17609,
                          "nodeType": "Block",
                          "src": "4855:146:52",
                          "statements": [
                            {
                              "assignments": [
                                17586
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 17586,
                                  "mutability": "mutable",
                                  "name": "k",
                                  "nameLocation": "4877:1:52",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 17609,
                                  "src": "4869:9:52",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 17585,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4869:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 17596,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 17594,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 17591,
                                          "name": "_reserve0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17501,
                                          "src": "4906:9:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        ],
                                        "id": 17590,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "4898:7:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 17589,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "4898:7:52",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 17592,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4898:18:52",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 17593,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17503,
                                      "src": "4919:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    },
                                    "src": "4898:30:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 17587,
                                    "name": "TridentMath",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3139,
                                    "src": "4881:11:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_TridentMath_$3139_$",
                                      "typeString": "type(library TridentMath)"
                                    }
                                  },
                                  "id": 17588,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sqrt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3138,
                                  "src": "4881:16:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 17595,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4881:48:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4869:60:52"
                            },
                            {
                              "expression": {
                                "id": 17607,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 17597,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17484,
                                  "src": "4943:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17606,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 17603,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 17600,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 17598,
                                                "name": "computed",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 17553,
                                                "src": "4957:8:52",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "id": 17599,
                                                "name": "k",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 17586,
                                                "src": "4968:1:52",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "4957:12:52",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 17601,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "4956:14:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 17602,
                                          "name": "_totalSupply",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17517,
                                          "src": "4973:12:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "4956:29:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 17604,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "4955:31:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 17605,
                                    "name": "k",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17586,
                                    "src": "4989:1:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4955:35:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4943:47:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17608,
                              "nodeType": "ExpressionStatement",
                              "src": "4943:47:52"
                            }
                          ]
                        },
                        "id": 17610,
                        "nodeType": "IfStatement",
                        "src": "4711:290:52",
                        "trueBody": {
                          "id": 17584,
                          "nodeType": "Block",
                          "src": "4734:115:52",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 17573,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4762:1:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 17572,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "4754:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 17571,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4754:7:52",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 17574,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4754:10:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 17575,
                                    "name": "MINIMUM_LIQUIDITY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17212,
                                    "src": "4766:17:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 17570,
                                  "name": "_mint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23564,
                                  "src": "4748:5:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 17576,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4748:36:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 17577,
                              "nodeType": "ExpressionStatement",
                              "src": "4748:36:52"
                            },
                            {
                              "expression": {
                                "id": 17582,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 17578,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17484,
                                  "src": "4798:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 17581,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 17579,
                                    "name": "computed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17553,
                                    "src": "4810:8:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 17580,
                                    "name": "MINIMUM_LIQUIDITY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17212,
                                    "src": "4821:17:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4810:28:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4798:40:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 17583,
                              "nodeType": "ExpressionStatement",
                              "src": "4798:40:52"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17614,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 17612,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17484,
                                "src": "5018:9:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 17613,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5031:1:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5018:14:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e53554646494349454e545f4c49515549444954595f4d494e544544",
                              "id": 17615,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5034:31:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c",
                                "typeString": "literal_string \"INSUFFICIENT_LIQUIDITY_MINTED\""
                              },
                              "value": "INSUFFICIENT_LIQUIDITY_MINTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c",
                                "typeString": "literal_string \"INSUFFICIENT_LIQUIDITY_MINTED\""
                              }
                            ],
                            "id": 17611,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5010:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 17616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5010:56:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17617,
                        "nodeType": "ExpressionStatement",
                        "src": "5010:56:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17619,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17487,
                              "src": "5082:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17620,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17484,
                              "src": "5093:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17618,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23564,
                            "src": "5076:5:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 17621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5076:27:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17622,
                        "nodeType": "ExpressionStatement",
                        "src": "5076:27:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17624,
                              "name": "balance0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17510,
                              "src": "5121:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17625,
                              "name": "balance1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17512,
                              "src": "5131:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17626,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17501,
                              "src": "5141:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 17627,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17503,
                              "src": "5152:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 17628,
                              "name": "_blockTimestampLast",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17505,
                              "src": "5163:19:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 17623,
                            "name": "_update",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18595,
                            "src": "5113:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$_t_uint32_$returns$__$",
                              "typeString": "function (uint256,uint256,uint112,uint112,uint32)"
                            }
                          },
                          "id": 17629,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5113:70:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17630,
                        "nodeType": "ExpressionStatement",
                        "src": "5113:70:52"
                      },
                      {
                        "expression": {
                          "id": 17638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 17631,
                            "name": "kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17251,
                            "src": "5193:5:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17636,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 17634,
                                  "name": "balance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17510,
                                  "src": "5218:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 17635,
                                  "name": "balance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17512,
                                  "src": "5229:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5218:19:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 17632,
                                "name": "TridentMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3139,
                                "src": "5201:11:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TridentMath_$3139_$",
                                  "typeString": "type(library TridentMath)"
                                }
                              },
                              "id": 17633,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sqrt",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3138,
                              "src": "5201:16:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256)"
                              }
                            },
                            "id": 17637,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5201:37:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5193:45:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17639,
                        "nodeType": "ExpressionStatement",
                        "src": "5193:45:52"
                      },
                      {
                        "assignments": [
                          17641
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17641,
                            "mutability": "mutable",
                            "name": "liquidityForEvent",
                            "nameLocation": "5256:17:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17653,
                            "src": "5248:25:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17640,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5248:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17643,
                        "initialValue": {
                          "id": 17642,
                          "name": "liquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17484,
                          "src": "5276:9:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5248:37:52"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17645,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "5305:3:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 17646,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "5305:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17647,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17530,
                              "src": "5317:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17648,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17536,
                              "src": "5326:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17649,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17487,
                              "src": "5335:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17650,
                              "name": "liquidityForEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17641,
                              "src": "5346:17:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17644,
                            "name": "Mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17191,
                            "src": "5300:4:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address,uint256)"
                            }
                          },
                          "id": 17651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5300:64:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17652,
                        "nodeType": "EmitStatement",
                        "src": "5295:69:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 17476,
                    "nodeType": "StructuredDocumentation",
                    "src": "3749:188:52",
                    "text": "@dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\n The router must ensure that sufficient LP tokens are minted by using the return value."
                  },
                  "functionSelector": "7ba0e2e7",
                  "id": 17654,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 17482,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 17481,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 17282,
                        "src": "3993:4:52"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "3993:4:52"
                    }
                  ],
                  "name": "mint",
                  "nameLocation": "3951:4:52",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 17480,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3984:8:52"
                  },
                  "parameters": {
                    "id": 17479,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17478,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "3971:4:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 17654,
                        "src": "3956:19:52",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17477,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3956:5:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3955:21:52"
                  },
                  "returnParameters": {
                    "id": 17485,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17484,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "4015:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 17654,
                        "src": "4007:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17483,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4007:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4006:19:52"
                  },
                  "scope": 18952,
                  "src": "3942:1429:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2394
                  ],
                  "body": {
                    "id": 17831,
                    "nodeType": "Block",
                    "src": "5607:1394:52",
                    "statements": [
                      {
                        "assignments": [
                          17668,
                          17670
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17668,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "5626:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17831,
                            "src": "5618:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 17667,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5618:7:52",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17670,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "5642:11:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17831,
                            "src": "5637:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 17669,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5637:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17680,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17673,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17657,
                              "src": "5668:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 17675,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5675:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 17674,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5675:7:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 17677,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5684:4:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 17676,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5684:4:52",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 17678,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5674:15:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 17671,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "5657:3:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 17672,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "5657:10:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 17679,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5657:33:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_bool_$",
                            "typeString": "tuple(address payable,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5617:73:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17682,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17668,
                              "src": "5716:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 17681,
                            "name": "_checkWhiteList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23628,
                            "src": "5700:15:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 17683,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5700:26:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17684,
                        "nodeType": "ExpressionStatement",
                        "src": "5700:26:52"
                      },
                      {
                        "assignments": [
                          17686,
                          17688,
                          17690
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17686,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "5745:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17831,
                            "src": "5737:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 17685,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "5737:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17688,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "5764:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17831,
                            "src": "5756:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 17687,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "5756:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17690,
                            "mutability": "mutable",
                            "name": "_blockTimestampLast",
                            "nameLocation": "5782:19:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17831,
                            "src": "5775:26:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 17689,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5775:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17693,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 17691,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18397,
                            "src": "5805:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                              "typeString": "function () view returns (uint112,uint112,uint32)"
                            }
                          },
                          "id": 17692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5805:14:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "tuple(uint112,uint112,uint32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5736:83:52"
                      },
                      {
                        "assignments": [
                          17695,
                          17697
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17695,
                            "mutability": "mutable",
                            "name": "balance0",
                            "nameLocation": "5838:8:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17831,
                            "src": "5830:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17694,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5830:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17697,
                            "mutability": "mutable",
                            "name": "balance1",
                            "nameLocation": "5856:8:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17831,
                            "src": "5848:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17696,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5848:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17700,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 17698,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18455,
                            "src": "5868:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 17699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5868:10:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5829:49:52"
                      },
                      {
                        "assignments": [
                          17702
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17702,
                            "mutability": "mutable",
                            "name": "_totalSupply",
                            "nameLocation": "5896:12:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17831,
                            "src": "5888:20:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17701,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5888:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17704,
                        "initialValue": {
                          "id": 17703,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23232,
                          "src": "5911:11:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5888:34:52"
                      },
                      {
                        "assignments": [
                          17706
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17706,
                            "mutability": "mutable",
                            "name": "liquidity",
                            "nameLocation": "5940:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17831,
                            "src": "5932:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17705,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5932:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17713,
                        "initialValue": {
                          "baseExpression": {
                            "id": 17707,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23237,
                            "src": "5952:9:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 17712,
                          "indexExpression": {
                            "arguments": [
                              {
                                "id": 17710,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "5970:4:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                  "typeString": "contract FranchisedConstantProductPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                  "typeString": "contract FranchisedConstantProductPool"
                                }
                              ],
                              "id": 17709,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5962:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 17708,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5962:7:52",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 17711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5962:13:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5952:24:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5932:44:52"
                      },
                      {
                        "id": 17722,
                        "nodeType": "UncheckedBlock",
                        "src": "5987:95:52",
                        "statements": [
                          {
                            "expression": {
                              "id": 17720,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 17714,
                                "name": "_totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17702,
                                "src": "6011:12:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 17716,
                                    "name": "_reserve0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17686,
                                    "src": "6036:9:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    }
                                  },
                                  {
                                    "id": 17717,
                                    "name": "_reserve1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17688,
                                    "src": "6047:9:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    }
                                  },
                                  {
                                    "id": 17718,
                                    "name": "_totalSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17702,
                                    "src": "6058:12:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    },
                                    {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 17715,
                                  "name": "_mintFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18659,
                                  "src": "6027:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint112_$_t_uint112_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint112,uint112,uint256) returns (uint256)"
                                  }
                                },
                                "id": 17719,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6027:44:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6011:60:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17721,
                            "nodeType": "ExpressionStatement",
                            "src": "6011:60:52"
                          }
                        ]
                      },
                      {
                        "assignments": [
                          17724
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17724,
                            "mutability": "mutable",
                            "name": "amount0",
                            "nameLocation": "6100:7:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17831,
                            "src": "6092:15:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17723,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6092:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17731,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17727,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 17725,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17706,
                                  "src": "6111:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 17726,
                                  "name": "balance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17695,
                                  "src": "6123:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6111:20:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 17728,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6110:22:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 17729,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17702,
                            "src": "6135:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6110:37:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6092:55:52"
                      },
                      {
                        "assignments": [
                          17733
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17733,
                            "mutability": "mutable",
                            "name": "amount1",
                            "nameLocation": "6165:7:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 17831,
                            "src": "6157:15:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17732,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6157:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17740,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17736,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 17734,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17706,
                                  "src": "6176:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 17735,
                                  "name": "balance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17697,
                                  "src": "6188:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6176:20:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 17737,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6175:22:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 17738,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17702,
                            "src": "6200:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6175:37:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6157:55:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 17744,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "6237:4:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                    "typeString": "contract FranchisedConstantProductPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                    "typeString": "contract FranchisedConstantProductPool"
                                  }
                                ],
                                "id": 17743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6229:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 17742,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6229:7:52",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 17745,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6229:13:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17746,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17706,
                              "src": "6244:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17741,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23592,
                            "src": "6223:5:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 17747,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6223:31:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17748,
                        "nodeType": "ExpressionStatement",
                        "src": "6223:31:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17750,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17241,
                              "src": "6274:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17751,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17724,
                              "src": "6282:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17752,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17668,
                              "src": "6291:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17753,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17670,
                              "src": "6302:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 17749,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18756,
                            "src": "6264:9:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 17754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6264:50:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17755,
                        "nodeType": "ExpressionStatement",
                        "src": "6264:50:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17757,
                              "name": "token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17243,
                              "src": "6334:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17758,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17733,
                              "src": "6342:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17759,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17668,
                              "src": "6351:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17760,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17670,
                              "src": "6362:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 17756,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18756,
                            "src": "6324:9:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 17761,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6324:50:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17762,
                        "nodeType": "ExpressionStatement",
                        "src": "6324:50:52"
                      },
                      {
                        "id": 17771,
                        "nodeType": "UncheckedBlock",
                        "src": "6480:87:52",
                        "statements": [
                          {
                            "expression": {
                              "id": 17765,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 17763,
                                "name": "balance0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17695,
                                "src": "6504:8:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "id": 17764,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17724,
                                "src": "6516:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6504:19:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17766,
                            "nodeType": "ExpressionStatement",
                            "src": "6504:19:52"
                          },
                          {
                            "expression": {
                              "id": 17769,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 17767,
                                "name": "balance1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17697,
                                "src": "6537:8:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "id": 17768,
                                "name": "amount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17733,
                                "src": "6549:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6537:19:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17770,
                            "nodeType": "ExpressionStatement",
                            "src": "6537:19:52"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17773,
                              "name": "balance0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17695,
                              "src": "6584:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17774,
                              "name": "balance1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17697,
                              "src": "6594:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17775,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17686,
                              "src": "6604:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 17776,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17688,
                              "src": "6615:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 17777,
                              "name": "_blockTimestampLast",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17690,
                              "src": "6626:19:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 17772,
                            "name": "_update",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18595,
                            "src": "6576:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$_t_uint32_$returns$__$",
                              "typeString": "function (uint256,uint256,uint112,uint112,uint32)"
                            }
                          },
                          "id": 17778,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6576:70:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17779,
                        "nodeType": "ExpressionStatement",
                        "src": "6576:70:52"
                      },
                      {
                        "expression": {
                          "id": 17787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 17780,
                            "name": "kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17251,
                            "src": "6656:5:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17785,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 17783,
                                  "name": "balance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17695,
                                  "src": "6681:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 17784,
                                  "name": "balance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17697,
                                  "src": "6692:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6681:19:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 17781,
                                "name": "TridentMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3139,
                                "src": "6664:11:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TridentMath_$3139_$",
                                  "typeString": "type(library TridentMath)"
                                }
                              },
                              "id": 17782,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sqrt",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3138,
                              "src": "6664:16:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256)"
                              }
                            },
                            "id": 17786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6664:37:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6656:45:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17788,
                        "nodeType": "ExpressionStatement",
                        "src": "6656:45:52"
                      },
                      {
                        "expression": {
                          "id": 17796,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 17789,
                            "name": "withdrawnAmounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17665,
                            "src": "6712:16:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "32",
                                "id": 17794,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6749:1:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                }
                              ],
                              "id": 17793,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "6731:17:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (struct IPool.TokenAmount memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 17791,
                                  "nodeType": "UserDefinedTypeName",
                                  "pathNode": {
                                    "id": 17790,
                                    "name": "TokenAmount",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2449,
                                    "src": "6735:11:52"
                                  },
                                  "referencedDeclaration": 2449,
                                  "src": "6735:11:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                                    "typeString": "struct IPool.TokenAmount"
                                  }
                                },
                                "id": 17792,
                                "nodeType": "ArrayTypeName",
                                "src": "6735:13:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                                  "typeString": "struct IPool.TokenAmount[]"
                                }
                              }
                            },
                            "id": 17795,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6731:20:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory[] memory"
                            }
                          },
                          "src": "6712:39:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct IPool.TokenAmount memory[] memory"
                          }
                        },
                        "id": 17797,
                        "nodeType": "ExpressionStatement",
                        "src": "6712:39:52"
                      },
                      {
                        "expression": {
                          "id": 17808,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 17798,
                              "name": "withdrawnAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17665,
                              "src": "6761:16:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IPool.TokenAmount memory[] memory"
                              }
                            },
                            "id": 17800,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 17799,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6778:1:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6761:19:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 17804,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17241,
                                    "src": "6811:6:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17803,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6803:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 17802,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6803:7:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 17805,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6803:15:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 17806,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17724,
                                "src": "6828:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 17801,
                              "name": "TokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2449,
                              "src": "6783:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_TokenAmount_$2449_storage_ptr_$",
                                "typeString": "type(struct IPool.TokenAmount storage pointer)"
                              }
                            },
                            "id": 17807,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "token",
                              "amount"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "6783:54:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory"
                            }
                          },
                          "src": "6761:76:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                            "typeString": "struct IPool.TokenAmount memory"
                          }
                        },
                        "id": 17809,
                        "nodeType": "ExpressionStatement",
                        "src": "6761:76:52"
                      },
                      {
                        "expression": {
                          "id": 17820,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 17810,
                              "name": "withdrawnAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17665,
                              "src": "6847:16:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IPool.TokenAmount memory[] memory"
                              }
                            },
                            "id": 17812,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 17811,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6864:1:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6847:19:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 17816,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17243,
                                    "src": "6897:6:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 17815,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6889:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 17814,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6889:7:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 17817,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6889:15:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 17818,
                                "name": "amount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17733,
                                "src": "6914:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 17813,
                              "name": "TokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2449,
                              "src": "6869:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_TokenAmount_$2449_storage_ptr_$",
                                "typeString": "type(struct IPool.TokenAmount storage pointer)"
                              }
                            },
                            "id": 17819,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "token",
                              "amount"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "6869:54:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory"
                            }
                          },
                          "src": "6847:76:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                            "typeString": "struct IPool.TokenAmount memory"
                          }
                        },
                        "id": 17821,
                        "nodeType": "ExpressionStatement",
                        "src": "6847:76:52"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 17823,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "6943:3:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 17824,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "6943:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17825,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17724,
                              "src": "6955:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17826,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17733,
                              "src": "6964:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17827,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17668,
                              "src": "6973:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17828,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17706,
                              "src": "6984:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17822,
                            "name": "Burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17203,
                            "src": "6938:4:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address,uint256)"
                            }
                          },
                          "id": 17829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6938:56:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17830,
                        "nodeType": "EmitStatement",
                        "src": "6933:61:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 17655,
                    "nodeType": "StructuredDocumentation",
                    "src": "5377:115:52",
                    "text": "@dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens."
                  },
                  "functionSelector": "2a07b6c7",
                  "id": 17832,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 17661,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 17660,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 17282,
                        "src": "5548:4:52"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5548:4:52"
                    }
                  ],
                  "name": "burn",
                  "nameLocation": "5506:4:52",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 17659,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5539:8:52"
                  },
                  "parameters": {
                    "id": 17658,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17657,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5526:4:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 17832,
                        "src": "5511:19:52",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17656,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5511:5:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5510:21:52"
                  },
                  "returnParameters": {
                    "id": 17666,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17665,
                        "mutability": "mutable",
                        "name": "withdrawnAmounts",
                        "nameLocation": "5589:16:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 17832,
                        "src": "5562:43:52",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IPool.TokenAmount[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 17663,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 17662,
                              "name": "IPool.TokenAmount",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2449,
                              "src": "5562:17:52"
                            },
                            "referencedDeclaration": 2449,
                            "src": "5562:17:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                              "typeString": "struct IPool.TokenAmount"
                            }
                          },
                          "id": 17664,
                          "nodeType": "ArrayTypeName",
                          "src": "5562:19:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                            "typeString": "struct IPool.TokenAmount[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5561:45:52"
                  },
                  "scope": 18952,
                  "src": "5497:1504:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2402
                  ],
                  "body": {
                    "id": 18031,
                    "nodeType": "Block",
                    "src": "7266:1822:52",
                    "statements": [
                      {
                        "assignments": [
                          17844,
                          17846,
                          17848
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17844,
                            "mutability": "mutable",
                            "name": "tokenOut",
                            "nameLocation": "7285:8:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18031,
                            "src": "7277:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 17843,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7277:7:52",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17846,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "7303:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18031,
                            "src": "7295:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 17845,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7295:7:52",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17848,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "7319:11:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18031,
                            "src": "7314:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 17847,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "7314:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17860,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 17851,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17835,
                              "src": "7345:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 17853,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7352:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 17852,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7352:7:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 17855,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7361:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 17854,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7361:7:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 17857,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7370:4:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 17856,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7370:4:52",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 17858,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7351:24:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 17849,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "7334:3:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 17850,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "7334:10:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 17859,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7334:42:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_bool_$",
                            "typeString": "tuple(address payable,address payable,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7276:100:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17862,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17846,
                              "src": "7402:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 17861,
                            "name": "_checkWhiteList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23628,
                            "src": "7386:15:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 17863,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7386:26:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17864,
                        "nodeType": "ExpressionStatement",
                        "src": "7386:26:52"
                      },
                      {
                        "assignments": [
                          17866,
                          17868,
                          17870
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17866,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "7431:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18031,
                            "src": "7423:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 17865,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "7423:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17868,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "7450:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18031,
                            "src": "7442:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 17867,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "7442:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17870,
                            "mutability": "mutable",
                            "name": "_blockTimestampLast",
                            "nameLocation": "7468:19:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18031,
                            "src": "7461:26:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 17869,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "7461:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17873,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 17871,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18397,
                            "src": "7491:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                              "typeString": "function () view returns (uint112,uint112,uint32)"
                            }
                          },
                          "id": 17872,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7491:14:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "tuple(uint112,uint112,uint32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7422:83:52"
                      },
                      {
                        "assignments": [
                          17875,
                          17877
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17875,
                            "mutability": "mutable",
                            "name": "balance0",
                            "nameLocation": "7524:8:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18031,
                            "src": "7516:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17874,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7516:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 17877,
                            "mutability": "mutable",
                            "name": "balance1",
                            "nameLocation": "7542:8:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18031,
                            "src": "7534:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17876,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7534:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17880,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 17878,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18455,
                            "src": "7554:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 17879,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7554:10:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7515:49:52"
                      },
                      {
                        "assignments": [
                          17882
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17882,
                            "mutability": "mutable",
                            "name": "_totalSupply",
                            "nameLocation": "7582:12:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18031,
                            "src": "7574:20:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17881,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7574:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17884,
                        "initialValue": {
                          "id": 17883,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23232,
                          "src": "7597:11:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7574:34:52"
                      },
                      {
                        "assignments": [
                          17886
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17886,
                            "mutability": "mutable",
                            "name": "liquidity",
                            "nameLocation": "7626:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18031,
                            "src": "7618:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17885,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7618:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17893,
                        "initialValue": {
                          "baseExpression": {
                            "id": 17887,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23237,
                            "src": "7638:9:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 17892,
                          "indexExpression": {
                            "arguments": [
                              {
                                "id": 17890,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "7656:4:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                  "typeString": "contract FranchisedConstantProductPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                  "typeString": "contract FranchisedConstantProductPool"
                                }
                              ],
                              "id": 17889,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7648:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 17888,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7648:7:52",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 17891,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7648:13:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7638:24:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7618:44:52"
                      },
                      {
                        "id": 17902,
                        "nodeType": "UncheckedBlock",
                        "src": "7673:95:52",
                        "statements": [
                          {
                            "expression": {
                              "id": 17900,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 17894,
                                "name": "_totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17882,
                                "src": "7697:12:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 17896,
                                    "name": "_reserve0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17866,
                                    "src": "7722:9:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    }
                                  },
                                  {
                                    "id": 17897,
                                    "name": "_reserve1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17868,
                                    "src": "7733:9:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    }
                                  },
                                  {
                                    "id": 17898,
                                    "name": "_totalSupply",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17882,
                                    "src": "7744:12:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    },
                                    {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 17895,
                                  "name": "_mintFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18659,
                                  "src": "7713:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint112_$_t_uint112_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint112,uint112,uint256) returns (uint256)"
                                  }
                                },
                                "id": 17899,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7713:44:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7697:60:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17901,
                            "nodeType": "ExpressionStatement",
                            "src": "7697:60:52"
                          }
                        ]
                      },
                      {
                        "assignments": [
                          17904
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17904,
                            "mutability": "mutable",
                            "name": "amount0",
                            "nameLocation": "7786:7:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18031,
                            "src": "7778:15:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17903,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7778:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17911,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17910,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17907,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 17905,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17886,
                                  "src": "7797:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 17906,
                                  "name": "balance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17875,
                                  "src": "7809:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7797:20:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 17908,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7796:22:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 17909,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17882,
                            "src": "7821:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7796:37:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7778:55:52"
                      },
                      {
                        "assignments": [
                          17913
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17913,
                            "mutability": "mutable",
                            "name": "amount1",
                            "nameLocation": "7851:7:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18031,
                            "src": "7843:15:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17912,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7843:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17920,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 17916,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 17914,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17886,
                                  "src": "7862:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 17915,
                                  "name": "balance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17877,
                                  "src": "7874:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7862:20:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 17917,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7861:22:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 17918,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17882,
                            "src": "7886:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7861:37:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7843:55:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 17924,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "7923:4:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                    "typeString": "contract FranchisedConstantProductPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                    "typeString": "contract FranchisedConstantProductPool"
                                  }
                                ],
                                "id": 17923,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7915:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 17922,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7915:7:52",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 17925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7915:13:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 17926,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17886,
                              "src": "7930:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17921,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23592,
                            "src": "7909:5:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 17927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7909:31:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17928,
                        "nodeType": "ExpressionStatement",
                        "src": "7909:31:52"
                      },
                      {
                        "id": 18004,
                        "nodeType": "UncheckedBlock",
                        "src": "7950:926:52",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 17931,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 17929,
                                "name": "tokenOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17844,
                                "src": "7978:8:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 17930,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17243,
                                "src": "7990:6:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "7978:18:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 18002,
                              "nodeType": "Block",
                              "src": "8466:400:52",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        "id": 17967,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 17965,
                                          "name": "tokenOut",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17844,
                                          "src": "8544:8:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "id": 17966,
                                          "name": "token0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17241,
                                          "src": "8556:6:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "src": "8544:18:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "hexValue": "494e56414c49445f4f55545055545f544f4b454e",
                                        "id": 17968,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8564:22:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831",
                                          "typeString": "literal_string \"INVALID_OUTPUT_TOKEN\""
                                        },
                                        "value": "INVALID_OUTPUT_TOKEN"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831",
                                          "typeString": "literal_string \"INVALID_OUTPUT_TOKEN\""
                                        }
                                      ],
                                      "id": 17964,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "8536:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 17969,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8536:51:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 17970,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8536:51:52"
                                },
                                {
                                  "expression": {
                                    "id": 17981,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 17971,
                                      "name": "amount0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17904,
                                      "src": "8605:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 17973,
                                          "name": "amount1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17913,
                                          "src": "8630:7:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 17976,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 17974,
                                            "name": "_reserve1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17868,
                                            "src": "8639:9:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 17975,
                                            "name": "amount1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17913,
                                            "src": "8651:7:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "8639:19:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 17979,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 17977,
                                            "name": "_reserve0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17866,
                                            "src": "8660:9:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 17978,
                                            "name": "amount0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17904,
                                            "src": "8672:7:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "8660:19:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 17972,
                                        "name": "_getAmountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18691,
                                        "src": "8616:13:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                        }
                                      },
                                      "id": 17980,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8616:64:52",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8605:75:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 17982,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8605:75:52"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 17984,
                                        "name": "token0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17241,
                                        "src": "8708:6:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 17985,
                                        "name": "amount0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17904,
                                        "src": "8716:7:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 17986,
                                        "name": "recipient",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17846,
                                        "src": "8725:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 17987,
                                        "name": "unwrapBento",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17848,
                                        "src": "8736:11:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 17983,
                                      "name": "_transfer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18756,
                                      "src": "8698:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                        "typeString": "function (address,uint256,address,bool)"
                                      }
                                    },
                                    "id": 17988,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8698:50:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 17989,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8698:50:52"
                                },
                                {
                                  "expression": {
                                    "id": 17992,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 17990,
                                      "name": "balance0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17875,
                                      "src": "8766:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "id": 17991,
                                      "name": "amount0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17904,
                                      "src": "8778:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8766:19:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 17993,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8766:19:52"
                                },
                                {
                                  "expression": {
                                    "id": 17996,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 17994,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17841,
                                      "src": "8803:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "id": 17995,
                                      "name": "amount0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17904,
                                      "src": "8815:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8803:19:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 17997,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8803:19:52"
                                },
                                {
                                  "expression": {
                                    "id": 18000,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 17998,
                                      "name": "amount1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17913,
                                      "src": "8840:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "hexValue": "30",
                                      "id": 17999,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8850:1:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "8840:11:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 18001,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8840:11:52"
                                }
                              ]
                            },
                            "id": 18003,
                            "nodeType": "IfStatement",
                            "src": "7974:892:52",
                            "trueBody": {
                              "id": 17963,
                              "nodeType": "Block",
                              "src": "7998:462:52",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 17942,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 17932,
                                      "name": "amount1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17913,
                                      "src": "8199:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 17934,
                                          "name": "amount0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17904,
                                          "src": "8224:7:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 17937,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 17935,
                                            "name": "_reserve0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17866,
                                            "src": "8233:9:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 17936,
                                            "name": "amount0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17904,
                                            "src": "8245:7:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "8233:19:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 17940,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 17938,
                                            "name": "_reserve1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17868,
                                            "src": "8254:9:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 17939,
                                            "name": "amount1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17913,
                                            "src": "8266:7:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "8254:19:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 17933,
                                        "name": "_getAmountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18691,
                                        "src": "8210:13:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                        }
                                      },
                                      "id": 17941,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8210:64:52",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8199:75:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 17943,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8199:75:52"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 17945,
                                        "name": "token1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17243,
                                        "src": "8302:6:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 17946,
                                        "name": "amount1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17913,
                                        "src": "8310:7:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 17947,
                                        "name": "recipient",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17846,
                                        "src": "8319:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 17948,
                                        "name": "unwrapBento",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17848,
                                        "src": "8330:11:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 17944,
                                      "name": "_transfer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18756,
                                      "src": "8292:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                        "typeString": "function (address,uint256,address,bool)"
                                      }
                                    },
                                    "id": 17949,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8292:50:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 17950,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8292:50:52"
                                },
                                {
                                  "expression": {
                                    "id": 17953,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 17951,
                                      "name": "balance1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17877,
                                      "src": "8360:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "id": 17952,
                                      "name": "amount1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17913,
                                      "src": "8372:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8360:19:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 17954,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8360:19:52"
                                },
                                {
                                  "expression": {
                                    "id": 17957,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 17955,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17841,
                                      "src": "8397:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "id": 17956,
                                      "name": "amount1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17913,
                                      "src": "8409:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8397:19:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 17958,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8397:19:52"
                                },
                                {
                                  "expression": {
                                    "id": 17961,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 17959,
                                      "name": "amount0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17904,
                                      "src": "8434:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "hexValue": "30",
                                      "id": 17960,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8444:1:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "8434:11:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 17962,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8434:11:52"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 18006,
                              "name": "balance0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17875,
                              "src": "8893:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 18007,
                              "name": "balance1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17877,
                              "src": "8903:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 18008,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17866,
                              "src": "8913:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 18009,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17868,
                              "src": "8924:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 18010,
                              "name": "_blockTimestampLast",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17870,
                              "src": "8935:19:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 18005,
                            "name": "_update",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18595,
                            "src": "8885:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$_t_uint32_$returns$__$",
                              "typeString": "function (uint256,uint256,uint112,uint112,uint32)"
                            }
                          },
                          "id": 18011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8885:70:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18012,
                        "nodeType": "ExpressionStatement",
                        "src": "8885:70:52"
                      },
                      {
                        "expression": {
                          "id": 18020,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18013,
                            "name": "kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17251,
                            "src": "8965:5:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 18016,
                                  "name": "balance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17875,
                                  "src": "8990:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 18017,
                                  "name": "balance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17877,
                                  "src": "9001:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8990:19:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 18014,
                                "name": "TridentMath",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3139,
                                "src": "8973:11:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_TridentMath_$3139_$",
                                  "typeString": "type(library TridentMath)"
                                }
                              },
                              "id": 18015,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sqrt",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3138,
                              "src": "8973:16:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256)"
                              }
                            },
                            "id": 18019,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8973:37:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8965:45:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18021,
                        "nodeType": "ExpressionStatement",
                        "src": "8965:45:52"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 18023,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "9030:3:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 18024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "9030:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 18025,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17904,
                              "src": "9042:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 18026,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17913,
                              "src": "9051:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 18027,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17846,
                              "src": "9060:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 18028,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17886,
                              "src": "9071:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18022,
                            "name": "Burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17203,
                            "src": "9025:4:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address,uint256)"
                            }
                          },
                          "id": 18029,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9025:56:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18030,
                        "nodeType": "EmitStatement",
                        "src": "9020:61:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 17833,
                    "nodeType": "StructuredDocumentation",
                    "src": "7007:164:52",
                    "text": "@dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\n - i.e., the user gets a single token out by burning LP tokens."
                  },
                  "functionSelector": "af8c09bf",
                  "id": 18032,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 17839,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 17838,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 17282,
                        "src": "7233:4:52"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7233:4:52"
                    }
                  ],
                  "name": "burnSingle",
                  "nameLocation": "7185:10:52",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 17837,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7224:8:52"
                  },
                  "parameters": {
                    "id": 17836,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17835,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "7211:4:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18032,
                        "src": "7196:19:52",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 17834,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7196:5:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7195:21:52"
                  },
                  "returnParameters": {
                    "id": 17842,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 17841,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "7255:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18032,
                        "src": "7247:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17840,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7247:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7246:19:52"
                  },
                  "scope": 18952,
                  "src": "7176:1912:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2368
                  ],
                  "body": {
                    "id": 18170,
                    "nodeType": "Block",
                    "src": "9300:1146:52",
                    "statements": [
                      {
                        "assignments": [
                          18044,
                          18046,
                          18048
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18044,
                            "mutability": "mutable",
                            "name": "tokenIn",
                            "nameLocation": "9319:7:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18170,
                            "src": "9311:15:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 18043,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9311:7:52",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18046,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "9336:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18170,
                            "src": "9328:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 18045,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9328:7:52",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18048,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "9352:11:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18170,
                            "src": "9347:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 18047,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9347:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18060,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18051,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18035,
                              "src": "9378:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 18053,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9385:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 18052,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9385:7:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 18055,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9394:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 18054,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9394:7:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 18057,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9403:4:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 18056,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9403:4:52",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 18058,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "9384:24:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 18049,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "9367:3:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 18050,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "9367:10:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 18059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9367:42:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_bool_$",
                            "typeString": "tuple(address payable,address payable,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9310:99:52"
                      },
                      {
                        "condition": {
                          "id": 18061,
                          "name": "level2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23230,
                          "src": "9423:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18066,
                        "nodeType": "IfStatement",
                        "src": "9419:38:52",
                        "trueBody": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 18063,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18046,
                                "src": "9447:9:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 18062,
                              "name": "_checkWhiteList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23628,
                              "src": "9431:15:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                                "typeString": "function (address) view"
                              }
                            },
                            "id": 18064,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9431:26:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 18065,
                          "nodeType": "ExpressionStatement",
                          "src": "9431:26:52"
                        }
                      },
                      {
                        "assignments": [
                          18068,
                          18070,
                          18072
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18068,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "9476:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18170,
                            "src": "9468:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 18067,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "9468:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18070,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "9495:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18170,
                            "src": "9487:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 18069,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "9487:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18072,
                            "mutability": "mutable",
                            "name": "_blockTimestampLast",
                            "nameLocation": "9513:19:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18170,
                            "src": "9506:26:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 18071,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9506:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18075,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 18073,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18397,
                            "src": "9536:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                              "typeString": "function () view returns (uint112,uint112,uint32)"
                            }
                          },
                          "id": 18074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9536:14:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "tuple(uint112,uint112,uint32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9467:83:52"
                      },
                      {
                        "assignments": [
                          18077,
                          18079
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18077,
                            "mutability": "mutable",
                            "name": "balance0",
                            "nameLocation": "9569:8:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18170,
                            "src": "9561:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18076,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9561:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18079,
                            "mutability": "mutable",
                            "name": "balance1",
                            "nameLocation": "9587:8:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18170,
                            "src": "9579:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18078,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9579:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18082,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 18080,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18455,
                            "src": "9599:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 18081,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9599:10:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9560:49:52"
                      },
                      {
                        "assignments": [
                          18084
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18084,
                            "mutability": "mutable",
                            "name": "amountIn",
                            "nameLocation": "9627:8:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18170,
                            "src": "9619:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18083,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9619:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18085,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9619:16:52"
                      },
                      {
                        "assignments": [
                          18087
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18087,
                            "mutability": "mutable",
                            "name": "tokenOut",
                            "nameLocation": "9653:8:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18170,
                            "src": "9645:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 18086,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9645:7:52",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18088,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9645:16:52"
                      },
                      {
                        "id": 18146,
                        "nodeType": "UncheckedBlock",
                        "src": "9671:555:52",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 18091,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 18089,
                                "name": "tokenIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18044,
                                "src": "9699:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 18090,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17241,
                                "src": "9710:6:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "9699:17:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 18144,
                              "nodeType": "Block",
                              "src": "9937:279:52",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        "id": 18118,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 18116,
                                          "name": "tokenIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18044,
                                          "src": "9963:7:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "id": 18117,
                                          "name": "token1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17243,
                                          "src": "9974:6:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "src": "9963:17:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "hexValue": "494e56414c49445f494e5055545f544f4b454e",
                                        "id": 18119,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9982:21:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                          "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                        },
                                        "value": "INVALID_INPUT_TOKEN"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                          "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                        }
                                      ],
                                      "id": 18115,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "9955:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 18120,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9955:49:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 18121,
                                  "nodeType": "ExpressionStatement",
                                  "src": "9955:49:52"
                                },
                                {
                                  "expression": {
                                    "id": 18124,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 18122,
                                      "name": "tokenOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18087,
                                      "src": "10022:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "id": 18123,
                                      "name": "token0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17241,
                                      "src": "10033:6:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "10022:17:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 18125,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10022:17:52"
                                },
                                {
                                  "expression": {
                                    "id": 18130,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 18126,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18084,
                                      "src": "10057:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 18129,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 18127,
                                        "name": "balance1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18079,
                                        "src": "10068:8:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 18128,
                                        "name": "reserve1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17255,
                                        "src": "10079:8:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        }
                                      },
                                      "src": "10068:19:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10057:30:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 18131,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10057:30:52"
                                },
                                {
                                  "expression": {
                                    "id": 18138,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 18132,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18041,
                                      "src": "10105:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 18134,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18084,
                                          "src": "10131:8:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 18135,
                                          "name": "_reserve1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18070,
                                          "src": "10141:9:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        },
                                        {
                                          "id": 18136,
                                          "name": "_reserve0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18068,
                                          "src": "10152:9:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          },
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        ],
                                        "id": 18133,
                                        "name": "_getAmountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18691,
                                        "src": "10117:13:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                        }
                                      },
                                      "id": 18137,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10117:45:52",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10105:57:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 18139,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10105:57:52"
                                },
                                {
                                  "expression": {
                                    "id": 18142,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 18140,
                                      "name": "balance0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18077,
                                      "src": "10180:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "id": 18141,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18041,
                                      "src": "10192:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10180:21:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 18143,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10180:21:52"
                                }
                              ]
                            },
                            "id": 18145,
                            "nodeType": "IfStatement",
                            "src": "9695:521:52",
                            "trueBody": {
                              "id": 18114,
                              "nodeType": "Block",
                              "src": "9718:213:52",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 18094,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 18092,
                                      "name": "tokenOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18087,
                                      "src": "9736:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "id": 18093,
                                      "name": "token1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17243,
                                      "src": "9747:6:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "9736:17:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 18095,
                                  "nodeType": "ExpressionStatement",
                                  "src": "9736:17:52"
                                },
                                {
                                  "expression": {
                                    "id": 18100,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 18096,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18084,
                                      "src": "9771:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 18099,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 18097,
                                        "name": "balance0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18077,
                                        "src": "9782:8:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 18098,
                                        "name": "_reserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18068,
                                        "src": "9793:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        }
                                      },
                                      "src": "9782:20:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9771:31:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 18101,
                                  "nodeType": "ExpressionStatement",
                                  "src": "9771:31:52"
                                },
                                {
                                  "expression": {
                                    "id": 18108,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 18102,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18041,
                                      "src": "9820:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 18104,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18084,
                                          "src": "9846:8:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 18105,
                                          "name": "_reserve0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18068,
                                          "src": "9856:9:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        },
                                        {
                                          "id": 18106,
                                          "name": "_reserve1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18070,
                                          "src": "9867:9:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          },
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        ],
                                        "id": 18103,
                                        "name": "_getAmountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18691,
                                        "src": "9832:13:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                        }
                                      },
                                      "id": 18107,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9832:45:52",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9820:57:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 18109,
                                  "nodeType": "ExpressionStatement",
                                  "src": "9820:57:52"
                                },
                                {
                                  "expression": {
                                    "id": 18112,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 18110,
                                      "name": "balance1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18079,
                                      "src": "9895:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "id": 18111,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18041,
                                      "src": "9907:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "9895:21:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 18113,
                                  "nodeType": "ExpressionStatement",
                                  "src": "9895:21:52"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 18148,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18087,
                              "src": "10245:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 18149,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18041,
                              "src": "10255:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 18150,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18046,
                              "src": "10266:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 18151,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18048,
                              "src": "10277:11:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 18147,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18756,
                            "src": "10235:9:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 18152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10235:54:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18153,
                        "nodeType": "ExpressionStatement",
                        "src": "10235:54:52"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 18155,
                              "name": "balance0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18077,
                              "src": "10307:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 18156,
                              "name": "balance1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18079,
                              "src": "10317:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 18157,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18068,
                              "src": "10327:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 18158,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18070,
                              "src": "10338:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "id": 18159,
                              "name": "_blockTimestampLast",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18072,
                              "src": "10349:19:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              },
                              {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            ],
                            "id": 18154,
                            "name": "_update",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18595,
                            "src": "10299:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$_t_uint32_$returns$__$",
                              "typeString": "function (uint256,uint256,uint112,uint112,uint32)"
                            }
                          },
                          "id": 18160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10299:70:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18161,
                        "nodeType": "ExpressionStatement",
                        "src": "10299:70:52"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 18163,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18046,
                              "src": "10389:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 18164,
                              "name": "tokenIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18044,
                              "src": "10400:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 18165,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18087,
                              "src": "10409:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 18166,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18084,
                              "src": "10419:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 18167,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18041,
                              "src": "10429:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18162,
                            "name": "Swap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2444,
                            "src": "10384:4:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 18168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10384:55:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18169,
                        "nodeType": "EmitStatement",
                        "src": "10379:60:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18033,
                    "nodeType": "StructuredDocumentation",
                    "src": "9094:117:52",
                    "text": "@dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage."
                  },
                  "functionSelector": "627dd56a",
                  "id": 18171,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 18039,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 18038,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 17282,
                        "src": "9267:4:52"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9267:4:52"
                    }
                  ],
                  "name": "swap",
                  "nameLocation": "9225:4:52",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 18037,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9258:8:52"
                  },
                  "parameters": {
                    "id": 18036,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18035,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "9245:4:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18171,
                        "src": "9230:19:52",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 18034,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9230:5:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9229:21:52"
                  },
                  "returnParameters": {
                    "id": 18042,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18041,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "9289:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18171,
                        "src": "9281:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18040,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9281:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9280:19:52"
                  },
                  "scope": 18952,
                  "src": "9216:1230:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2376
                  ],
                  "body": {
                    "id": 18347,
                    "nodeType": "Block",
                    "src": "10664:1584:52",
                    "statements": [
                      {
                        "assignments": [
                          18183,
                          18185,
                          18187,
                          18189,
                          18191
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18183,
                            "mutability": "mutable",
                            "name": "tokenIn",
                            "nameLocation": "10683:7:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18347,
                            "src": "10675:15:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 18182,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10675:7:52",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18185,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "10700:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18347,
                            "src": "10692:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 18184,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10692:7:52",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18187,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "10716:11:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18347,
                            "src": "10711:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 18186,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "10711:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18189,
                            "mutability": "mutable",
                            "name": "amountIn",
                            "nameLocation": "10737:8:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18347,
                            "src": "10729:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18188,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10729:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18191,
                            "mutability": "mutable",
                            "name": "context",
                            "nameLocation": "10760:7:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18347,
                            "src": "10747:20:52",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 18190,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "10747:5:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18207,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18194,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18174,
                              "src": "10795:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 18196,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10814:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 18195,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10814:7:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 18198,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10823:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 18197,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10823:7:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 18200,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10832:4:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 18199,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10832:4:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 18202,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10838:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 18201,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10838:7:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 18204,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10847:5:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 18203,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10847:5:52",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 18205,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "10813:40:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool),type(uint256),type(bytes storage pointer))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool),type(uint256),type(bytes storage pointer))"
                              }
                            ],
                            "expression": {
                              "id": 18192,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "10771:3:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 18193,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "10771:10:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 18206,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10771:92:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_bool_$_t_uint256_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(address payable,address payable,bool,uint256,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10674:189:52"
                      },
                      {
                        "condition": {
                          "id": 18208,
                          "name": "level2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23230,
                          "src": "10877:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18213,
                        "nodeType": "IfStatement",
                        "src": "10873:38:52",
                        "trueBody": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 18210,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18185,
                                "src": "10901:9:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 18209,
                              "name": "_checkWhiteList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23628,
                              "src": "10885:15:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                                "typeString": "function (address) view"
                              }
                            },
                            "id": 18211,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10885:26:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 18212,
                          "nodeType": "ExpressionStatement",
                          "src": "10885:26:52"
                        }
                      },
                      {
                        "assignments": [
                          18215,
                          18217,
                          18219
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18215,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "10930:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18347,
                            "src": "10922:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 18214,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "10922:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18217,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "10949:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18347,
                            "src": "10941:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 18216,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "10941:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18219,
                            "mutability": "mutable",
                            "name": "_blockTimestampLast",
                            "nameLocation": "10967:19:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18347,
                            "src": "10960:26:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "typeName": {
                              "id": 18218,
                              "name": "uint32",
                              "nodeType": "ElementaryTypeName",
                              "src": "10960:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18222,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 18220,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18397,
                            "src": "10990:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                              "typeString": "function () view returns (uint112,uint112,uint32)"
                            }
                          },
                          "id": 18221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10990:14:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "tuple(uint112,uint112,uint32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10921:83:52"
                      },
                      {
                        "id": 18346,
                        "nodeType": "UncheckedBlock",
                        "src": "11014:1228:52",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 18225,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 18223,
                                "name": "tokenIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18183,
                                "src": "11042:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 18224,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17241,
                                "src": "11053:6:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "11042:17:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 18344,
                              "nodeType": "Block",
                              "src": "11616:616:52",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        "id": 18285,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 18283,
                                          "name": "tokenIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18183,
                                          "src": "11642:7:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "id": 18284,
                                          "name": "token1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17243,
                                          "src": "11653:6:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "src": "11642:17:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "hexValue": "494e56414c49445f494e5055545f544f4b454e",
                                        "id": 18286,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "11661:21:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                          "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                        },
                                        "value": "INVALID_INPUT_TOKEN"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                          "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                        }
                                      ],
                                      "id": 18282,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "11634:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 18287,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11634:49:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 18288,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11634:49:52"
                                },
                                {
                                  "expression": {
                                    "id": 18295,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 18289,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18180,
                                      "src": "11701:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 18291,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18189,
                                          "src": "11727:8:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 18292,
                                          "name": "_reserve1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18217,
                                          "src": "11737:9:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        },
                                        {
                                          "id": 18293,
                                          "name": "_reserve0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18215,
                                          "src": "11748:9:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          },
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        ],
                                        "id": 18290,
                                        "name": "_getAmountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18691,
                                        "src": "11713:13:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                        }
                                      },
                                      "id": 18294,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11713:45:52",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11701:57:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 18296,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11701:57:52"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 18298,
                                        "name": "token0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17241,
                                        "src": "11786:6:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 18299,
                                        "name": "amountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18180,
                                        "src": "11794:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 18300,
                                        "name": "recipient",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18185,
                                        "src": "11805:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 18301,
                                        "name": "unwrapBento",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18187,
                                        "src": "11816:11:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 18297,
                                      "name": "_transfer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18756,
                                      "src": "11776:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                        "typeString": "function (address,uint256,address,bool)"
                                      }
                                    },
                                    "id": 18302,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11776:52:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 18303,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11776:52:52"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 18309,
                                        "name": "context",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18191,
                                        "src": "11893:7:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "expression": {
                                              "id": 18305,
                                              "name": "msg",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -15,
                                              "src": "11861:3:52",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                              }
                                            },
                                            "id": 18306,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sender",
                                            "nodeType": "MemberAccess",
                                            "src": "11861:10:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 18304,
                                          "name": "ITridentCallee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2482,
                                          "src": "11846:14:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_ITridentCallee_$2482_$",
                                            "typeString": "type(contract ITridentCallee)"
                                          }
                                        },
                                        "id": 18307,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11846:26:52",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ITridentCallee_$2482",
                                          "typeString": "contract ITridentCallee"
                                        }
                                      },
                                      "id": 18308,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "tridentSwapCallback",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2476,
                                      "src": "11846:46:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                                        "typeString": "function (bytes memory) external"
                                      }
                                    },
                                    "id": 18310,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11846:55:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 18311,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11846:55:52"
                                },
                                {
                                  "assignments": [
                                    18313,
                                    18315
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 18313,
                                      "mutability": "mutable",
                                      "name": "balance0",
                                      "nameLocation": "11928:8:52",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 18344,
                                      "src": "11920:16:52",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 18312,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11920:7:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    },
                                    {
                                      "constant": false,
                                      "id": 18315,
                                      "mutability": "mutable",
                                      "name": "balance1",
                                      "nameLocation": "11946:8:52",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 18344,
                                      "src": "11938:16:52",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 18314,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11938:7:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 18318,
                                  "initialValue": {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 18316,
                                      "name": "_balance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18455,
                                      "src": "11958:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                                        "typeString": "function () view returns (uint256,uint256)"
                                      }
                                    },
                                    "id": 18317,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11958:10:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                      "typeString": "tuple(uint256,uint256)"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "11919:49:52"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 18324,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 18322,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 18320,
                                            "name": "balance1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18315,
                                            "src": "11994:8:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 18321,
                                            "name": "_reserve1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18217,
                                            "src": "12005:9:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          "src": "11994:20:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">=",
                                        "rightExpression": {
                                          "id": 18323,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18189,
                                          "src": "12018:8:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "11994:32:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "hexValue": "494e53554646494349454e545f414d4f554e545f494e",
                                        "id": 18325,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "12028:24:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9",
                                          "typeString": "literal_string \"INSUFFICIENT_AMOUNT_IN\""
                                        },
                                        "value": "INSUFFICIENT_AMOUNT_IN"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9",
                                          "typeString": "literal_string \"INSUFFICIENT_AMOUNT_IN\""
                                        }
                                      ],
                                      "id": 18319,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "11986:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 18326,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11986:67:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 18327,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11986:67:52"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 18329,
                                        "name": "balance0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18313,
                                        "src": "12079:8:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 18330,
                                        "name": "balance1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18315,
                                        "src": "12089:8:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 18331,
                                        "name": "_reserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18215,
                                        "src": "12099:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        }
                                      },
                                      {
                                        "id": 18332,
                                        "name": "_reserve1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18217,
                                        "src": "12110:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        }
                                      },
                                      {
                                        "id": 18333,
                                        "name": "_blockTimestampLast",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18219,
                                        "src": "12121:19:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        },
                                        {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        },
                                        {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      ],
                                      "id": 18328,
                                      "name": "_update",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18595,
                                      "src": "12071:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$_t_uint32_$returns$__$",
                                        "typeString": "function (uint256,uint256,uint112,uint112,uint32)"
                                      }
                                    },
                                    "id": 18334,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12071:70:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 18335,
                                  "nodeType": "ExpressionStatement",
                                  "src": "12071:70:52"
                                },
                                {
                                  "eventCall": {
                                    "arguments": [
                                      {
                                        "id": 18337,
                                        "name": "recipient",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18185,
                                        "src": "12169:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 18338,
                                        "name": "tokenIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18183,
                                        "src": "12180:7:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 18339,
                                        "name": "token0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17241,
                                        "src": "12189:6:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 18340,
                                        "name": "amountIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18189,
                                        "src": "12197:8:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 18341,
                                        "name": "amountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18180,
                                        "src": "12207:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 18336,
                                      "name": "Swap",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2444,
                                      "src": "12164:4:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                        "typeString": "function (address,address,address,uint256,uint256)"
                                      }
                                    },
                                    "id": 18342,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12164:53:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 18343,
                                  "nodeType": "EmitStatement",
                                  "src": "12159:58:52"
                                }
                              ]
                            },
                            "id": 18345,
                            "nodeType": "IfStatement",
                            "src": "11038:1194:52",
                            "trueBody": {
                              "id": 18281,
                              "nodeType": "Block",
                              "src": "11061:549:52",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 18232,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 18226,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18180,
                                      "src": "11079:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 18228,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18189,
                                          "src": "11105:8:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 18229,
                                          "name": "_reserve0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18215,
                                          "src": "11115:9:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        },
                                        {
                                          "id": 18230,
                                          "name": "_reserve1",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18217,
                                          "src": "11126:9:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          },
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        ],
                                        "id": 18227,
                                        "name": "_getAmountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18691,
                                        "src": "11091:13:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                        }
                                      },
                                      "id": 18231,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11091:45:52",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11079:57:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 18233,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11079:57:52"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 18235,
                                        "name": "token1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17243,
                                        "src": "11164:6:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 18236,
                                        "name": "amountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18180,
                                        "src": "11172:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 18237,
                                        "name": "recipient",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18185,
                                        "src": "11183:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 18238,
                                        "name": "unwrapBento",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18187,
                                        "src": "11194:11:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 18234,
                                      "name": "_transfer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18756,
                                      "src": "11154:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                        "typeString": "function (address,uint256,address,bool)"
                                      }
                                    },
                                    "id": 18239,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11154:52:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 18240,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11154:52:52"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 18246,
                                        "name": "context",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18191,
                                        "src": "11271:7:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "expression": {
                                              "id": 18242,
                                              "name": "msg",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -15,
                                              "src": "11239:3:52",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                              }
                                            },
                                            "id": 18243,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sender",
                                            "nodeType": "MemberAccess",
                                            "src": "11239:10:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 18241,
                                          "name": "ITridentCallee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2482,
                                          "src": "11224:14:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_ITridentCallee_$2482_$",
                                            "typeString": "type(contract ITridentCallee)"
                                          }
                                        },
                                        "id": 18244,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11224:26:52",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_ITridentCallee_$2482",
                                          "typeString": "contract ITridentCallee"
                                        }
                                      },
                                      "id": 18245,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "tridentSwapCallback",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2476,
                                      "src": "11224:46:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                                        "typeString": "function (bytes memory) external"
                                      }
                                    },
                                    "id": 18247,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11224:55:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 18248,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11224:55:52"
                                },
                                {
                                  "assignments": [
                                    18250,
                                    18252
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 18250,
                                      "mutability": "mutable",
                                      "name": "balance0",
                                      "nameLocation": "11306:8:52",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 18281,
                                      "src": "11298:16:52",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 18249,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11298:7:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    },
                                    {
                                      "constant": false,
                                      "id": 18252,
                                      "mutability": "mutable",
                                      "name": "balance1",
                                      "nameLocation": "11324:8:52",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 18281,
                                      "src": "11316:16:52",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 18251,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11316:7:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 18255,
                                  "initialValue": {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 18253,
                                      "name": "_balance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18455,
                                      "src": "11336:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                                        "typeString": "function () view returns (uint256,uint256)"
                                      }
                                    },
                                    "id": 18254,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11336:10:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                      "typeString": "tuple(uint256,uint256)"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "11297:49:52"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 18261,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 18259,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 18257,
                                            "name": "balance0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18250,
                                            "src": "11372:8:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 18258,
                                            "name": "_reserve0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18215,
                                            "src": "11383:9:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          "src": "11372:20:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">=",
                                        "rightExpression": {
                                          "id": 18260,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18189,
                                          "src": "11396:8:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "11372:32:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "hexValue": "494e53554646494349454e545f414d4f554e545f494e",
                                        "id": 18262,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "11406:24:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9",
                                          "typeString": "literal_string \"INSUFFICIENT_AMOUNT_IN\""
                                        },
                                        "value": "INSUFFICIENT_AMOUNT_IN"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9",
                                          "typeString": "literal_string \"INSUFFICIENT_AMOUNT_IN\""
                                        }
                                      ],
                                      "id": 18256,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "11364:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 18263,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11364:67:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 18264,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11364:67:52"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 18266,
                                        "name": "balance0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18250,
                                        "src": "11457:8:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 18267,
                                        "name": "balance1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18252,
                                        "src": "11467:8:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 18268,
                                        "name": "_reserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18215,
                                        "src": "11477:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        }
                                      },
                                      {
                                        "id": 18269,
                                        "name": "_reserve1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18217,
                                        "src": "11488:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        }
                                      },
                                      {
                                        "id": 18270,
                                        "name": "_blockTimestampLast",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18219,
                                        "src": "11499:19:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        },
                                        {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        },
                                        {
                                          "typeIdentifier": "t_uint32",
                                          "typeString": "uint32"
                                        }
                                      ],
                                      "id": 18265,
                                      "name": "_update",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18595,
                                      "src": "11449:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$_t_uint32_$returns$__$",
                                        "typeString": "function (uint256,uint256,uint112,uint112,uint32)"
                                      }
                                    },
                                    "id": 18271,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11449:70:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 18272,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11449:70:52"
                                },
                                {
                                  "eventCall": {
                                    "arguments": [
                                      {
                                        "id": 18274,
                                        "name": "recipient",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18185,
                                        "src": "11547:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 18275,
                                        "name": "tokenIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18183,
                                        "src": "11558:7:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 18276,
                                        "name": "token1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17243,
                                        "src": "11567:6:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 18277,
                                        "name": "amountIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18189,
                                        "src": "11575:8:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 18278,
                                        "name": "amountOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18180,
                                        "src": "11585:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 18273,
                                      "name": "Swap",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2444,
                                      "src": "11542:4:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                        "typeString": "function (address,address,address,uint256,uint256)"
                                      }
                                    },
                                    "id": 18279,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11542:53:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 18280,
                                  "nodeType": "EmitStatement",
                                  "src": "11537:58:52"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18172,
                    "nodeType": "StructuredDocumentation",
                    "src": "10452:118:52",
                    "text": "@dev Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage."
                  },
                  "functionSelector": "053da1c8",
                  "id": 18348,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 18178,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 18177,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 17282,
                        "src": "10631:4:52"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "10631:4:52"
                    }
                  ],
                  "name": "flashSwap",
                  "nameLocation": "10584:9:52",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 18176,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "10622:8:52"
                  },
                  "parameters": {
                    "id": 18175,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18174,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "10609:4:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18348,
                        "src": "10594:19:52",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 18173,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10594:5:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10593:21:52"
                  },
                  "returnParameters": {
                    "id": 18181,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18180,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "10653:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18348,
                        "src": "10645:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18179,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10645:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10644:19:52"
                  },
                  "scope": 18952,
                  "src": "10575:1673:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18374,
                    "nodeType": "Block",
                    "src": "12337:175:52",
                    "statements": [
                      {
                        "assignments": [
                          null,
                          18353
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 18353,
                            "mutability": "mutable",
                            "name": "_barFee",
                            "nameLocation": "12363:7:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18374,
                            "src": "12350:20:52",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 18352,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "12350:5:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18363,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 18358,
                                      "name": "IMasterDeployer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2356,
                                      "src": "12423:15:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                        "typeString": "type(contract IMasterDeployer)"
                                      }
                                    },
                                    "id": 18359,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "barFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2324,
                                    "src": "12423:22:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_view$__$returns$_t_uint256_$",
                                      "typeString": "function IMasterDeployer.barFee() view returns (uint256)"
                                    }
                                  },
                                  "id": 18360,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "12423:31:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "expression": {
                                  "id": 18356,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "12400:3:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 18357,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "12400:22:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 18361,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12400:55:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 18354,
                              "name": "masterDeployer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17239,
                              "src": "12374:14:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 18355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "12374:25:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 18362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12374:82:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12347:109:52"
                      },
                      {
                        "expression": {
                          "id": 18372,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18364,
                            "name": "barFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17245,
                            "src": "12466:6:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 18367,
                                "name": "_barFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18353,
                                "src": "12486:7:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 18369,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12496:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 18368,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12496:7:52",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 18370,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "12495:9:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "expression": {
                                "id": 18365,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "12475:3:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 18366,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "12475:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 18371,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12475:30:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12466:39:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18373,
                        "nodeType": "ExpressionStatement",
                        "src": "12466:39:52"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18349,
                    "nodeType": "StructuredDocumentation",
                    "src": "12254:47:52",
                    "text": "@dev Updates `barFee` for Trident protocol."
                  },
                  "functionSelector": "92bc3219",
                  "id": 18375,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updateBarFee",
                  "nameLocation": "12315:12:52",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18350,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12327:2:52"
                  },
                  "returnParameters": {
                    "id": 18351,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12337:0:52"
                  },
                  "scope": 18952,
                  "src": "12306:206:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18396,
                    "nodeType": "Block",
                    "src": "12705:117:52",
                    "statements": [
                      {
                        "expression": {
                          "id": 18386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18384,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18378,
                            "src": "12715:9:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 18385,
                            "name": "reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17253,
                            "src": "12727:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "12715:20:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "id": 18387,
                        "nodeType": "ExpressionStatement",
                        "src": "12715:20:52"
                      },
                      {
                        "expression": {
                          "id": 18390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18388,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18380,
                            "src": "12745:9:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 18389,
                            "name": "reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17255,
                            "src": "12757:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "12745:20:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "id": 18391,
                        "nodeType": "ExpressionStatement",
                        "src": "12745:20:52"
                      },
                      {
                        "expression": {
                          "id": 18394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18392,
                            "name": "_blockTimestampLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18382,
                            "src": "12775:19:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 18393,
                            "name": "blockTimestampLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17257,
                            "src": "12797:18:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "src": "12775:40:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "id": 18395,
                        "nodeType": "ExpressionStatement",
                        "src": "12775:40:52"
                      }
                    ]
                  },
                  "id": 18397,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getReserves",
                  "nameLocation": "12527:12:52",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18376,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12539:2:52"
                  },
                  "returnParameters": {
                    "id": 18383,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18378,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "12610:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18397,
                        "src": "12602:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 18377,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "12602:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18380,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "12641:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18397,
                        "src": "12633:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 18379,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "12633:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18382,
                        "mutability": "mutable",
                        "name": "_blockTimestampLast",
                        "nameLocation": "12671:19:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18397,
                        "src": "12664:26:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 18381,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12664:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12588:112:52"
                  },
                  "scope": 18952,
                  "src": "12518:304:52",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 18454,
                    "nodeType": "Block",
                    "src": "12907:429:52",
                    "statements": [
                      {
                        "assignments": [
                          null,
                          18405
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 18405,
                            "mutability": "mutable",
                            "name": "_balance0",
                            "nameLocation": "12977:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18454,
                            "src": "12964:22:52",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 18404,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "12964:5:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18418,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30786637383838616563",
                                  "id": 18410,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13030:10:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4152920812_by_1",
                                    "typeString": "int_const 4152920812"
                                  },
                                  "value": "0xf7888aec"
                                },
                                {
                                  "id": 18411,
                                  "name": "token0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17241,
                                  "src": "13042:6:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 18414,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "13058:4:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                        "typeString": "contract FranchisedConstantProductPool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                        "typeString": "contract FranchisedConstantProductPool"
                                      }
                                    ],
                                    "id": 18413,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13050:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 18412,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13050:7:52",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 18415,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13050:13:52",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_4152920812_by_1",
                                    "typeString": "int_const 4152920812"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 18408,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "13007:3:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 18409,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "13007:22:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 18416,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13007:57:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 18406,
                              "name": "bento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17237,
                              "src": "12990:5:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 18407,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "12990:16:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 18417,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12990:75:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12961:104:52"
                      },
                      {
                        "expression": {
                          "id": 18427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18419,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18400,
                            "src": "13075:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 18422,
                                "name": "_balance0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18405,
                                "src": "13097:9:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 18424,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13109:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 18423,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13109:7:52",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 18425,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "13108:9:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "expression": {
                                "id": 18420,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "13086:3:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 18421,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "13086:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 18426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13086:32:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13075:43:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18428,
                        "nodeType": "ExpressionStatement",
                        "src": "13075:43:52"
                      },
                      {
                        "assignments": [
                          null,
                          18430
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 18430,
                            "mutability": "mutable",
                            "name": "_balance1",
                            "nameLocation": "13188:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18454,
                            "src": "13175:22:52",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 18429,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "13175:5:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18443,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30786637383838616563",
                                  "id": 18435,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13241:10:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4152920812_by_1",
                                    "typeString": "int_const 4152920812"
                                  },
                                  "value": "0xf7888aec"
                                },
                                {
                                  "id": 18436,
                                  "name": "token1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17243,
                                  "src": "13253:6:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 18439,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "13269:4:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                        "typeString": "contract FranchisedConstantProductPool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                        "typeString": "contract FranchisedConstantProductPool"
                                      }
                                    ],
                                    "id": 18438,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13261:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 18437,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13261:7:52",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 18440,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13261:13:52",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_4152920812_by_1",
                                    "typeString": "int_const 4152920812"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 18433,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "13218:3:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 18434,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "13218:22:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 18441,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13218:57:52",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 18431,
                              "name": "bento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17237,
                              "src": "13201:5:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 18432,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "13201:16:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 18442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13201:75:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13172:104:52"
                      },
                      {
                        "expression": {
                          "id": 18452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18444,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18402,
                            "src": "13286:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 18447,
                                "name": "_balance1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18430,
                                "src": "13308:9:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 18449,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13320:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 18448,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13320:7:52",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 18450,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "13319:9:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "expression": {
                                "id": 18445,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "13297:3:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 18446,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "13297:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 18451,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13297:32:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13286:43:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18453,
                        "nodeType": "ExpressionStatement",
                        "src": "13286:43:52"
                      }
                    ]
                  },
                  "id": 18455,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_balance",
                  "nameLocation": "12837:8:52",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18398,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12845:2:52"
                  },
                  "returnParameters": {
                    "id": 18403,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18400,
                        "mutability": "mutable",
                        "name": "balance0",
                        "nameLocation": "12879:8:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18455,
                        "src": "12871:16:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18399,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12871:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18402,
                        "mutability": "mutable",
                        "name": "balance1",
                        "nameLocation": "12897:8:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18455,
                        "src": "12889:16:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18401,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12889:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12870:36:52"
                  },
                  "scope": 18952,
                  "src": "12828:508:52",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 18594,
                    "nodeType": "Block",
                    "src": "13516:1080:52",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 18483,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18475,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 18469,
                                  "name": "balance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18457,
                                  "src": "13534:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 18472,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "13551:7:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint112_$",
                                          "typeString": "type(uint112)"
                                        },
                                        "typeName": {
                                          "id": 18471,
                                          "name": "uint112",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "13551:7:52",
                                          "typeDescriptions": {}
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_uint112_$",
                                          "typeString": "type(uint112)"
                                        }
                                      ],
                                      "id": 18470,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "13546:4:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 18473,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13546:13:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_uint112",
                                      "typeString": "type(uint112)"
                                    }
                                  },
                                  "id": 18474,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "max",
                                  "nodeType": "MemberAccess",
                                  "src": "13546:17:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "src": "13534:29:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18482,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 18476,
                                  "name": "balance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18459,
                                  "src": "13567:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 18479,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "13584:7:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint112_$",
                                          "typeString": "type(uint112)"
                                        },
                                        "typeName": {
                                          "id": 18478,
                                          "name": "uint112",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "13584:7:52",
                                          "typeDescriptions": {}
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_uint112_$",
                                          "typeString": "type(uint112)"
                                        }
                                      ],
                                      "id": 18477,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "13579:4:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 18480,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13579:13:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_uint112",
                                      "typeString": "type(uint112)"
                                    }
                                  },
                                  "id": 18481,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "max",
                                  "nodeType": "MemberAccess",
                                  "src": "13579:17:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "src": "13567:29:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "13534:62:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f564552464c4f57",
                              "id": 18484,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13598:10:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1",
                                "typeString": "literal_string \"OVERFLOW\""
                              },
                              "value": "OVERFLOW"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1",
                                "typeString": "literal_string \"OVERFLOW\""
                              }
                            ],
                            "id": 18468,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13526:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 18485,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13526:83:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18486,
                        "nodeType": "ExpressionStatement",
                        "src": "13526:83:52"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "id": 18489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 18487,
                            "name": "blockTimestampLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17257,
                            "src": "13623:18:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 18488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13645:1:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13623:23:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 18587,
                          "nodeType": "Block",
                          "src": "13814:737:52",
                          "statements": [
                            {
                              "assignments": [
                                18506
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 18506,
                                  "mutability": "mutable",
                                  "name": "blockTimestamp",
                                  "nameLocation": "13835:14:52",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 18587,
                                  "src": "13828:21:52",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  },
                                  "typeName": {
                                    "id": 18505,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13828:6:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 18512,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 18509,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "13859:5:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 18510,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "timestamp",
                                    "nodeType": "MemberAccess",
                                    "src": "13859:15:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 18508,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13852:6:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint32_$",
                                    "typeString": "type(uint32)"
                                  },
                                  "typeName": {
                                    "id": 18507,
                                    "name": "uint32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13852:6:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 18511,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13852:23:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13828:47:52"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 18523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 18519,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint32",
                                      "typeString": "uint32"
                                    },
                                    "id": 18515,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 18513,
                                      "name": "blockTimestamp",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18506,
                                      "src": "13893:14:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "id": 18514,
                                      "name": "_blockTimestampLast",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18465,
                                      "src": "13911:19:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                      }
                                    },
                                    "src": "13893:37:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    },
                                    "id": 18518,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 18516,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18461,
                                      "src": "13934:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 18517,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13947:1:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "13934:14:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "13893:55:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  },
                                  "id": 18522,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 18520,
                                    "name": "_reserve1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18463,
                                    "src": "13952:9:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 18521,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13965:1:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "13952:14:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "13893:73:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 18568,
                              "nodeType": "IfStatement",
                              "src": "13889:519:52",
                              "trueBody": {
                                "id": 18567,
                                "nodeType": "Block",
                                "src": "13968:440:52",
                                "statements": [
                                  {
                                    "id": 18566,
                                    "nodeType": "UncheckedBlock",
                                    "src": "13986:408:52",
                                    "statements": [
                                      {
                                        "assignments": [
                                          18525
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 18525,
                                            "mutability": "mutable",
                                            "name": "timeElapsed",
                                            "nameLocation": "14025:11:52",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 18566,
                                            "src": "14018:18:52",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            },
                                            "typeName": {
                                              "id": 18524,
                                              "name": "uint32",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "14018:6:52",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 18529,
                                        "initialValue": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          },
                                          "id": 18528,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 18526,
                                            "name": "blockTimestamp",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18506,
                                            "src": "14039:14:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 18527,
                                            "name": "_blockTimestampLast",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18465,
                                            "src": "14056:19:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          },
                                          "src": "14039:36:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "14018:57:52"
                                      },
                                      {
                                        "assignments": [
                                          18531
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 18531,
                                            "mutability": "mutable",
                                            "name": "price0",
                                            "nameLocation": "14105:6:52",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 18566,
                                            "src": "14097:14:52",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "typeName": {
                                              "id": 18530,
                                              "name": "uint256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "14097:7:52",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 18541,
                                        "initialValue": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 18540,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 18537,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "arguments": [
                                                    {
                                                      "id": 18534,
                                                      "name": "_reserve1",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 18463,
                                                      "src": "14123:9:52",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint112",
                                                        "typeString": "uint112"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint112",
                                                        "typeString": "uint112"
                                                      }
                                                    ],
                                                    "id": 18533,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "14115:7:52",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_uint256_$",
                                                      "typeString": "type(uint256)"
                                                    },
                                                    "typeName": {
                                                      "id": 18532,
                                                      "name": "uint256",
                                                      "nodeType": "ElementaryTypeName",
                                                      "src": "14115:7:52",
                                                      "typeDescriptions": {}
                                                    }
                                                  },
                                                  "id": 18535,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "14115:18:52",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "<<",
                                                "rightExpression": {
                                                  "id": 18536,
                                                  "name": "PRECISION",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 17215,
                                                  "src": "14137:9:52",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                },
                                                "src": "14115:31:52",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 18538,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "14114:33:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "/",
                                          "rightExpression": {
                                            "id": 18539,
                                            "name": "_reserve0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18461,
                                            "src": "14150:9:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          "src": "14114:45:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "14097:62:52"
                                      },
                                      {
                                        "expression": {
                                          "id": 18546,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 18542,
                                            "name": "price0CumulativeLast",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17247,
                                            "src": "14181:20:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "+=",
                                          "rightHandSide": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 18545,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 18543,
                                              "name": "price0",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18531,
                                              "src": "14205:6:52",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "id": 18544,
                                              "name": "timeElapsed",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18525,
                                              "src": "14214:11:52",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                              }
                                            },
                                            "src": "14205:20:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "14181:44:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 18547,
                                        "nodeType": "ExpressionStatement",
                                        "src": "14181:44:52"
                                      },
                                      {
                                        "assignments": [
                                          18549
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 18549,
                                            "mutability": "mutable",
                                            "name": "price1",
                                            "nameLocation": "14255:6:52",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 18566,
                                            "src": "14247:14:52",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "typeName": {
                                              "id": 18548,
                                              "name": "uint256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "14247:7:52",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 18559,
                                        "initialValue": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 18558,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 18555,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "arguments": [
                                                    {
                                                      "id": 18552,
                                                      "name": "_reserve0",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 18461,
                                                      "src": "14273:9:52",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint112",
                                                        "typeString": "uint112"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint112",
                                                        "typeString": "uint112"
                                                      }
                                                    ],
                                                    "id": 18551,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "14265:7:52",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_uint256_$",
                                                      "typeString": "type(uint256)"
                                                    },
                                                    "typeName": {
                                                      "id": 18550,
                                                      "name": "uint256",
                                                      "nodeType": "ElementaryTypeName",
                                                      "src": "14265:7:52",
                                                      "typeDescriptions": {}
                                                    }
                                                  },
                                                  "id": 18553,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "14265:18:52",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "<<",
                                                "rightExpression": {
                                                  "id": 18554,
                                                  "name": "PRECISION",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 17215,
                                                  "src": "14287:9:52",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                },
                                                "src": "14265:31:52",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 18556,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "14264:33:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "/",
                                          "rightExpression": {
                                            "id": 18557,
                                            "name": "_reserve1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18463,
                                            "src": "14300:9:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          "src": "14264:45:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "14247:62:52"
                                      },
                                      {
                                        "expression": {
                                          "id": 18564,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 18560,
                                            "name": "price1CumulativeLast",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17249,
                                            "src": "14331:20:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "+=",
                                          "rightHandSide": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 18563,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 18561,
                                              "name": "price1",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18549,
                                              "src": "14355:6:52",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "id": 18562,
                                              "name": "timeElapsed",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18525,
                                              "src": "14364:11:52",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                              }
                                            },
                                            "src": "14355:20:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "14331:44:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 18565,
                                        "nodeType": "ExpressionStatement",
                                        "src": "14331:44:52"
                                      }
                                    ]
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 18574,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 18569,
                                  "name": "reserve0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17253,
                                  "src": "14421:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 18572,
                                      "name": "balance0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18457,
                                      "src": "14440:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 18571,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14432:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint112_$",
                                      "typeString": "type(uint112)"
                                    },
                                    "typeName": {
                                      "id": 18570,
                                      "name": "uint112",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14432:7:52",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 18573,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14432:17:52",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "src": "14421:28:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              "id": 18575,
                              "nodeType": "ExpressionStatement",
                              "src": "14421:28:52"
                            },
                            {
                              "expression": {
                                "id": 18581,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 18576,
                                  "name": "reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17255,
                                  "src": "14463:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 18579,
                                      "name": "balance1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18459,
                                      "src": "14482:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 18578,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14474:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint112_$",
                                      "typeString": "type(uint112)"
                                    },
                                    "typeName": {
                                      "id": 18577,
                                      "name": "uint112",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14474:7:52",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 18580,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14474:17:52",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "src": "14463:28:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              "id": 18582,
                              "nodeType": "ExpressionStatement",
                              "src": "14463:28:52"
                            },
                            {
                              "expression": {
                                "id": 18585,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 18583,
                                  "name": "blockTimestampLast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17257,
                                  "src": "14505:18:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 18584,
                                  "name": "blockTimestamp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18506,
                                  "src": "14526:14:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "14505:35:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "id": 18586,
                              "nodeType": "ExpressionStatement",
                              "src": "14505:35:52"
                            }
                          ]
                        },
                        "id": 18588,
                        "nodeType": "IfStatement",
                        "src": "13619:932:52",
                        "trueBody": {
                          "id": 18504,
                          "nodeType": "Block",
                          "src": "13648:160:52",
                          "statements": [
                            {
                              "expression": {
                                "id": 18495,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 18490,
                                  "name": "reserve0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17253,
                                  "src": "13727:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 18493,
                                      "name": "balance0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18457,
                                      "src": "13746:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 18492,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13738:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint112_$",
                                      "typeString": "type(uint112)"
                                    },
                                    "typeName": {
                                      "id": 18491,
                                      "name": "uint112",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13738:7:52",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 18494,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13738:17:52",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "src": "13727:28:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              "id": 18496,
                              "nodeType": "ExpressionStatement",
                              "src": "13727:28:52"
                            },
                            {
                              "expression": {
                                "id": 18502,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 18497,
                                  "name": "reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17255,
                                  "src": "13769:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 18500,
                                      "name": "balance1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18459,
                                      "src": "13788:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 18499,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13780:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint112_$",
                                      "typeString": "type(uint112)"
                                    },
                                    "typeName": {
                                      "id": 18498,
                                      "name": "uint112",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13780:7:52",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 18501,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13780:17:52",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "src": "13769:28:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              "id": 18503,
                              "nodeType": "ExpressionStatement",
                              "src": "13769:28:52"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 18590,
                              "name": "balance0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18457,
                              "src": "14570:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 18591,
                              "name": "balance1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18459,
                              "src": "14580:8:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 18589,
                            "name": "Sync",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17209,
                            "src": "14565:4:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 18592,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14565:24:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18593,
                        "nodeType": "EmitStatement",
                        "src": "14560:29:52"
                      }
                    ]
                  },
                  "id": 18595,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_update",
                  "nameLocation": "13351:7:52",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18466,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18457,
                        "mutability": "mutable",
                        "name": "balance0",
                        "nameLocation": "13376:8:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18595,
                        "src": "13368:16:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18456,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13368:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18459,
                        "mutability": "mutable",
                        "name": "balance1",
                        "nameLocation": "13402:8:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18595,
                        "src": "13394:16:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18458,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13394:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18461,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "13428:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18595,
                        "src": "13420:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 18460,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "13420:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18463,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "13455:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18595,
                        "src": "13447:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 18462,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "13447:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18465,
                        "mutability": "mutable",
                        "name": "_blockTimestampLast",
                        "nameLocation": "13481:19:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18595,
                        "src": "13474:26:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 18464,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "13474:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13358:148:52"
                  },
                  "returnParameters": {
                    "id": 18467,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13516:0:52"
                  },
                  "scope": 18952,
                  "src": "13342:1254:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 18658,
                    "nodeType": "Block",
                    "src": "14747:563:52",
                    "statements": [
                      {
                        "assignments": [
                          18607
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18607,
                            "mutability": "mutable",
                            "name": "_kLast",
                            "nameLocation": "14765:6:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18658,
                            "src": "14757:14:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18606,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14757:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18609,
                        "initialValue": {
                          "id": 18608,
                          "name": "kLast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17251,
                          "src": "14774:5:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14757:22:52"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 18610,
                            "name": "_kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18607,
                            "src": "14793:6:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 18611,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14803:1:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "14793:11:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18657,
                        "nodeType": "IfStatement",
                        "src": "14789:515:52",
                        "trueBody": {
                          "id": 18656,
                          "nodeType": "Block",
                          "src": "14806:498:52",
                          "statements": [
                            {
                              "assignments": [
                                18614
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 18614,
                                  "mutability": "mutable",
                                  "name": "computed",
                                  "nameLocation": "14828:8:52",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 18656,
                                  "src": "14820:16:52",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 18613,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14820:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 18624,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 18622,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "id": 18619,
                                          "name": "_reserve0",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18597,
                                          "src": "14864:9:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        ],
                                        "id": 18618,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "14856:7:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 18617,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "14856:7:52",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 18620,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14856:18:52",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 18621,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18599,
                                      "src": "14877:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    },
                                    "src": "14856:30:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 18615,
                                    "name": "TridentMath",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3139,
                                    "src": "14839:11:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_TridentMath_$3139_$",
                                      "typeString": "type(library TridentMath)"
                                    }
                                  },
                                  "id": 18616,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sqrt",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3138,
                                  "src": "14839:16:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 18623,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14839:48:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14820:67:52"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18627,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 18625,
                                  "name": "computed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18614,
                                  "src": "14905:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "id": 18626,
                                  "name": "_kLast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18607,
                                  "src": "14916:6:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14905:17:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 18655,
                              "nodeType": "IfStatement",
                              "src": "14901:393:52",
                              "trueBody": {
                                "id": 18654,
                                "nodeType": "Block",
                                "src": "14924:370:52",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 18642,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 18628,
                                        "name": "liquidity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18604,
                                        "src": "15097:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 18641,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 18639,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 18636,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 18634,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "id": 18629,
                                                    "name": "_totalSupply",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 18601,
                                                    "src": "15110:12:52",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "*",
                                                  "rightExpression": {
                                                    "components": [
                                                      {
                                                        "commonType": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        },
                                                        "id": 18632,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "id": 18630,
                                                          "name": "computed",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 18614,
                                                          "src": "15126:8:52",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "-",
                                                        "rightExpression": {
                                                          "id": 18631,
                                                          "name": "_kLast",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 18607,
                                                          "src": "15137:6:52",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                          }
                                                        },
                                                        "src": "15126:17:52",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      }
                                                    ],
                                                    "id": 18633,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "15125:19:52",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "15110:34:52",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "*",
                                                "rightExpression": {
                                                  "id": 18635,
                                                  "name": "barFee",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 17245,
                                                  "src": "15147:6:52",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "15110:43:52",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 18637,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "15109:45:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "/",
                                          "rightExpression": {
                                            "id": 18638,
                                            "name": "computed",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18614,
                                            "src": "15157:8:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "15109:56:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "id": 18640,
                                          "name": "MAX_FEE",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17218,
                                          "src": "15168:7:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "15109:66:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "15097:78:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 18643,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15097:78:52"
                                  },
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 18646,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 18644,
                                        "name": "liquidity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18604,
                                        "src": "15197:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "hexValue": "30",
                                        "id": 18645,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15210:1:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "15197:14:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 18653,
                                    "nodeType": "IfStatement",
                                    "src": "15193:87:52",
                                    "trueBody": {
                                      "id": 18652,
                                      "nodeType": "Block",
                                      "src": "15213:67:52",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "id": 18648,
                                                "name": "barFeeTo",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 17235,
                                                "src": "15241:8:52",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "id": 18649,
                                                "name": "liquidity",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18604,
                                                "src": "15251:9:52",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 18647,
                                              "name": "_mint",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 23564,
                                              "src": "15235:5:52",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256)"
                                              }
                                            },
                                            "id": 18650,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "15235:26:52",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 18651,
                                          "nodeType": "ExpressionStatement",
                                          "src": "15235:26:52"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 18659,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mintFee",
                  "nameLocation": "14611:8:52",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18602,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18597,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "14637:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18659,
                        "src": "14629:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 18596,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "14629:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18599,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "14664:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18659,
                        "src": "14656:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 18598,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "14656:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18601,
                        "mutability": "mutable",
                        "name": "_totalSupply",
                        "nameLocation": "14691:12:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18659,
                        "src": "14683:20:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18600,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14683:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14619:90:52"
                  },
                  "returnParameters": {
                    "id": 18605,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18604,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "14736:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18659,
                        "src": "14728:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18603,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14728:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14727:19:52"
                  },
                  "scope": 18952,
                  "src": "14602:708:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 18690,
                    "nodeType": "Block",
                    "src": "15480:182:52",
                    "statements": [
                      {
                        "assignments": [
                          18671
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18671,
                            "mutability": "mutable",
                            "name": "amountInWithFee",
                            "nameLocation": "15498:15:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18690,
                            "src": "15490:23:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18670,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15490:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18675,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 18672,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18661,
                            "src": "15516:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 18673,
                            "name": "MAX_FEE_MINUS_SWAP_FEE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17233,
                            "src": "15527:22:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15516:33:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15490:59:52"
                      },
                      {
                        "expression": {
                          "id": 18688,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18676,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18668,
                            "src": "15559:9:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 18687,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 18679,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 18677,
                                    "name": "amountInWithFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18671,
                                    "src": "15572:15:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 18678,
                                    "name": "reserveAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18665,
                                    "src": "15590:16:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "15572:34:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 18680,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "15571:36:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 18685,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 18683,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 18681,
                                      "name": "reserveAmountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18663,
                                      "src": "15611:15:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "id": 18682,
                                      "name": "MAX_FEE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17218,
                                      "src": "15629:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "15611:25:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "id": 18684,
                                    "name": "amountInWithFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18671,
                                    "src": "15639:15:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "15611:43:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 18686,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "15610:45:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15571:84:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15559:96:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 18689,
                        "nodeType": "ExpressionStatement",
                        "src": "15559:96:52"
                      }
                    ]
                  },
                  "id": 18691,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getAmountOut",
                  "nameLocation": "15325:13:52",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18666,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18661,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nameLocation": "15356:8:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18691,
                        "src": "15348:16:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18660,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15348:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18663,
                        "mutability": "mutable",
                        "name": "reserveAmountIn",
                        "nameLocation": "15382:15:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18691,
                        "src": "15374:23:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18662,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15374:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18665,
                        "mutability": "mutable",
                        "name": "reserveAmountOut",
                        "nameLocation": "15415:16:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18691,
                        "src": "15407:24:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18664,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15407:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15338:99:52"
                  },
                  "returnParameters": {
                    "id": 18669,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18668,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "15469:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18691,
                        "src": "15461:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18667,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15461:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15460:19:52"
                  },
                  "scope": 18952,
                  "src": "15316:346:52",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 18755,
                    "nodeType": "Block",
                    "src": "15795:436:52",
                    "statements": [
                      {
                        "condition": {
                          "id": 18702,
                          "name": "unwrapBento",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18699,
                          "src": "15809:11:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 18753,
                          "nodeType": "Block",
                          "src": "16028:197:52",
                          "statements": [
                            {
                              "assignments": [
                                18730,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 18730,
                                  "mutability": "mutable",
                                  "name": "success",
                                  "nameLocation": "16048:7:52",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 18753,
                                  "src": "16043:12:52",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 18729,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16043:4:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 18747,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "expression": {
                                            "id": 18735,
                                            "name": "IBentoBoxMinimal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2253,
                                            "src": "16095:16:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IBentoBoxMinimal_$2253_$",
                                              "typeString": "type(contract IBentoBoxMinimal)"
                                            }
                                          },
                                          "id": 18736,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberName": "transfer",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2227,
                                          "src": "16095:25:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                            "typeString": "function IBentoBoxMinimal.transfer(address,address,address,uint256)"
                                          }
                                        },
                                        "id": 18737,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "selector",
                                        "nodeType": "MemberAccess",
                                        "src": "16095:34:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        }
                                      },
                                      {
                                        "id": 18738,
                                        "name": "token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18693,
                                        "src": "16131:5:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "id": 18741,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -28,
                                            "src": "16146:4:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                              "typeString": "contract FranchisedConstantProductPool"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                              "typeString": "contract FranchisedConstantProductPool"
                                            }
                                          ],
                                          "id": 18740,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "16138:7:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 18739,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "16138:7:52",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 18742,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "16138:13:52",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 18743,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18697,
                                        "src": "16153:2:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 18744,
                                        "name": "shares",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18695,
                                        "src": "16157:6:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 18733,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "16072:3:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 18734,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encodeWithSelector",
                                      "nodeType": "MemberAccess",
                                      "src": "16072:22:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes4) pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 18745,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "16072:92:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 18731,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17237,
                                    "src": "16061:5:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 18732,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "call",
                                  "nodeType": "MemberAccess",
                                  "src": "16061:10:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                  }
                                },
                                "id": 18746,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16061:104:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16042:123:52"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 18749,
                                    "name": "success",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18730,
                                    "src": "16187:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "5452414e534645525f4641494c4544",
                                    "id": 18750,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "16196:17:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72",
                                      "typeString": "literal_string \"TRANSFER_FAILED\""
                                    },
                                    "value": "TRANSFER_FAILED"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72",
                                      "typeString": "literal_string \"TRANSFER_FAILED\""
                                    }
                                  ],
                                  "id": 18748,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "16179:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 18751,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16179:35:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18752,
                              "nodeType": "ExpressionStatement",
                              "src": "16179:35:52"
                            }
                          ]
                        },
                        "id": 18754,
                        "nodeType": "IfStatement",
                        "src": "15805:420:52",
                        "trueBody": {
                          "id": 18728,
                          "nodeType": "Block",
                          "src": "15822:200:52",
                          "statements": [
                            {
                              "assignments": [
                                18704,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 18704,
                                  "mutability": "mutable",
                                  "name": "success",
                                  "nameLocation": "15842:7:52",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 18728,
                                  "src": "15837:12:52",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 18703,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15837:4:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 18722,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "expression": {
                                            "id": 18709,
                                            "name": "IBentoBoxMinimal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2253,
                                            "src": "15889:16:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IBentoBoxMinimal_$2253_$",
                                              "typeString": "type(contract IBentoBoxMinimal)"
                                            }
                                          },
                                          "id": 18710,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberName": "withdraw",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2215,
                                          "src": "15889:25:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                            "typeString": "function IBentoBoxMinimal.withdraw(address,address,address,uint256,uint256) returns (uint256,uint256)"
                                          }
                                        },
                                        "id": 18711,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "selector",
                                        "nodeType": "MemberAccess",
                                        "src": "15889:34:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        }
                                      },
                                      {
                                        "id": 18712,
                                        "name": "token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18693,
                                        "src": "15925:5:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "id": 18715,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -28,
                                            "src": "15940:4:52",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                              "typeString": "contract FranchisedConstantProductPool"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                              "typeString": "contract FranchisedConstantProductPool"
                                            }
                                          ],
                                          "id": 18714,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "15932:7:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 18713,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "15932:7:52",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 18716,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15932:13:52",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 18717,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18697,
                                        "src": "15947:2:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "hexValue": "30",
                                        "id": 18718,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15951:1:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      {
                                        "id": 18719,
                                        "name": "shares",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18695,
                                        "src": "15954:6:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 18707,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "15866:3:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 18708,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encodeWithSelector",
                                      "nodeType": "MemberAccess",
                                      "src": "15866:22:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes4) pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 18720,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15866:95:52",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 18705,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 17237,
                                    "src": "15855:5:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 18706,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "call",
                                  "nodeType": "MemberAccess",
                                  "src": "15855:10:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                  }
                                },
                                "id": 18721,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15855:107:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15836:126:52"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 18724,
                                    "name": "success",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18704,
                                    "src": "15984:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "57495448445241575f4641494c4544",
                                    "id": 18725,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15993:17:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_763a38bd0e76a191b2607dcd1b2bd7d2e31ac1f3de7b2a0f756698e57f39c206",
                                      "typeString": "literal_string \"WITHDRAW_FAILED\""
                                    },
                                    "value": "WITHDRAW_FAILED"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_763a38bd0e76a191b2607dcd1b2bd7d2e31ac1f3de7b2a0f756698e57f39c206",
                                      "typeString": "literal_string \"WITHDRAW_FAILED\""
                                    }
                                  ],
                                  "id": 18723,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "15976:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 18726,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15976:35:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18727,
                              "nodeType": "ExpressionStatement",
                              "src": "15976:35:52"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 18756,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nameLocation": "15677:9:52",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18700,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18693,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "15704:5:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18756,
                        "src": "15696:13:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18692,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15696:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18695,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "15727:6:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18756,
                        "src": "15719:14:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18694,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15719:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18697,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "15751:2:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18756,
                        "src": "15743:10:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18696,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15743:7:52",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18699,
                        "mutability": "mutable",
                        "name": "unwrapBento",
                        "nameLocation": "15768:11:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18756,
                        "src": "15763:16:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 18698,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "15763:4:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15686:99:52"
                  },
                  "returnParameters": {
                    "id": 18701,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15795:0:52"
                  },
                  "scope": 18952,
                  "src": "15668:563:52",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 18838,
                    "nodeType": "Block",
                    "src": "16531:441:52",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 18778,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 18774,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 18772,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18763,
                              "src": "16545:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 18773,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16558:1:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "16545:14:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 18777,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 18775,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18765,
                              "src": "16563:9:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 18776,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "16576:1:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "16563:14:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "16545:32:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 18783,
                        "nodeType": "IfStatement",
                        "src": "16541:51:52",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "hexValue": "30",
                                "id": 18779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16587:1:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "hexValue": "30",
                                "id": 18780,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16590:1:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "id": 18781,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "16586:6:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$",
                              "typeString": "tuple(int_const 0,int_const 0)"
                            }
                          },
                          "functionReturnParameters": 18771,
                          "id": 18782,
                          "nodeType": "Return",
                          "src": "16579:13:52"
                        }
                      },
                      {
                        "assignments": [
                          18785
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18785,
                            "mutability": "mutable",
                            "name": "amount1Optimal",
                            "nameLocation": "16610:14:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18838,
                            "src": "16602:22:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18784,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16602:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18792,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18788,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 18786,
                                  "name": "_amount0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18759,
                                  "src": "16628:8:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 18787,
                                  "name": "_reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18765,
                                  "src": "16639:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16628:20:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 18789,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "16627:22:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 18790,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18763,
                            "src": "16652:9:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16627:34:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16602:59:52"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 18795,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 18793,
                            "name": "amount1Optimal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18785,
                            "src": "16675:14:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "id": 18794,
                            "name": "_amount1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18761,
                            "src": "16693:8:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16675:26:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 18836,
                          "nodeType": "Block",
                          "src": "16801:165:52",
                          "statements": [
                            {
                              "assignments": [
                                18813
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 18813,
                                  "mutability": "mutable",
                                  "name": "amount0Optimal",
                                  "nameLocation": "16823:14:52",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 18836,
                                  "src": "16815:22:52",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 18812,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16815:7:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 18820,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18819,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 18816,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 18814,
                                        "name": "_amount1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18761,
                                        "src": "16841:8:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 18815,
                                        "name": "_reserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18763,
                                        "src": "16852:9:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "16841:20:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 18817,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "16840:22:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 18818,
                                  "name": "_reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18765,
                                  "src": "16865:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16840:34:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16815:59:52"
                            },
                            {
                              "expression": {
                                "id": 18834,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 18821,
                                  "name": "token0Fee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18768,
                                  "src": "16888:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 18833,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 18827,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 18822,
                                          "name": "swapFee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17231,
                                          "src": "16901:7:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 18825,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 18823,
                                                "name": "_amount0",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18759,
                                                "src": "16912:8:52",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "id": 18824,
                                                "name": "amount0Optimal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18813,
                                                "src": "16923:14:52",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "16912:25:52",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 18826,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "16911:27:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "16901:37:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 18828,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "16900:39:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 18831,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "32",
                                          "id": 18829,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "16943:1:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 18830,
                                          "name": "MAX_FEE",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17218,
                                          "src": "16947:7:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "16943:11:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 18832,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "16942:13:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "16900:55:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16888:67:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18835,
                              "nodeType": "ExpressionStatement",
                              "src": "16888:67:52"
                            }
                          ]
                        },
                        "id": 18837,
                        "nodeType": "IfStatement",
                        "src": "16671:295:52",
                        "trueBody": {
                          "id": 18811,
                          "nodeType": "Block",
                          "src": "16703:92:52",
                          "statements": [
                            {
                              "expression": {
                                "id": 18809,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 18796,
                                  "name": "token1Fee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18770,
                                  "src": "16717:9:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 18808,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 18802,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 18797,
                                          "name": "swapFee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17231,
                                          "src": "16730:7:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 18800,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 18798,
                                                "name": "_amount1",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18761,
                                                "src": "16741:8:52",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "id": 18799,
                                                "name": "amount1Optimal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18785,
                                                "src": "16752:14:52",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "16741:25:52",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 18801,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "16740:27:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "16730:37:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 18803,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "16729:39:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 18806,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "32",
                                          "id": 18804,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "16772:1:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 18805,
                                          "name": "MAX_FEE",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 17218,
                                          "src": "16776:7:52",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "16772:11:52",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 18807,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "16771:13:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "16729:55:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16717:67:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18810,
                              "nodeType": "ExpressionStatement",
                              "src": "16717:67:52"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 18757,
                    "nodeType": "StructuredDocumentation",
                    "src": "16237:88:52",
                    "text": "@dev This fee is charged to cover for `swapFee` when users add unbalanced liquidity."
                  },
                  "id": 18839,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_nonOptimalMintFee",
                  "nameLocation": "16339:18:52",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18766,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18759,
                        "mutability": "mutable",
                        "name": "_amount0",
                        "nameLocation": "16375:8:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18839,
                        "src": "16367:16:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18758,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16367:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18761,
                        "mutability": "mutable",
                        "name": "_amount1",
                        "nameLocation": "16401:8:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18839,
                        "src": "16393:16:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18760,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16393:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18763,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "16427:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18839,
                        "src": "16419:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18762,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16419:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18765,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "16454:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18839,
                        "src": "16446:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18764,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16446:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16357:112:52"
                  },
                  "returnParameters": {
                    "id": 18771,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18768,
                        "mutability": "mutable",
                        "name": "token0Fee",
                        "nameLocation": "16501:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18839,
                        "src": "16493:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18767,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16493:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18770,
                        "mutability": "mutable",
                        "name": "token1Fee",
                        "nameLocation": "16520:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18839,
                        "src": "16512:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18769,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16512:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16492:38:52"
                  },
                  "scope": 18952,
                  "src": "16330:642:52",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2415
                  ],
                  "body": {
                    "id": 18866,
                    "nodeType": "Block",
                    "src": "17054:98:52",
                    "statements": [
                      {
                        "expression": {
                          "id": 18852,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18846,
                            "name": "assets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18844,
                            "src": "17064:6:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "32",
                                "id": 18850,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17087:1:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                }
                              ],
                              "id": 18849,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "17073:13:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (address[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 18847,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "17077:7:52",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 18848,
                                "nodeType": "ArrayTypeName",
                                "src": "17077:9:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                  "typeString": "address[]"
                                }
                              }
                            },
                            "id": 18851,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17073:16:52",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "17064:25:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 18853,
                        "nodeType": "ExpressionStatement",
                        "src": "17064:25:52"
                      },
                      {
                        "expression": {
                          "id": 18858,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 18854,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18844,
                              "src": "17099:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 18856,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 18855,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17106:1:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17099:9:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 18857,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17241,
                            "src": "17111:6:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "17099:18:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 18859,
                        "nodeType": "ExpressionStatement",
                        "src": "17099:18:52"
                      },
                      {
                        "expression": {
                          "id": 18864,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 18860,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18844,
                              "src": "17127:6:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 18862,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 18861,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17134:1:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "17127:9:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 18863,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17243,
                            "src": "17139:6:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "17127:18:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 18865,
                        "nodeType": "ExpressionStatement",
                        "src": "17127:18:52"
                      }
                    ]
                  },
                  "functionSelector": "67e4ac2c",
                  "id": 18867,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAssets",
                  "nameLocation": "16987:9:52",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 18841,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "17011:8:52"
                  },
                  "parameters": {
                    "id": 18840,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16996:2:52"
                  },
                  "returnParameters": {
                    "id": 18845,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18844,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "17046:6:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18867,
                        "src": "17029:23:52",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 18842,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "17029:7:52",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 18843,
                          "nodeType": "ArrayTypeName",
                          "src": "17029:9:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17028:25:52"
                  },
                  "scope": 18952,
                  "src": "16978:174:52",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2423
                  ],
                  "body": {
                    "id": 18925,
                    "nodeType": "Block",
                    "src": "17255:433:52",
                    "statements": [
                      {
                        "assignments": [
                          18876,
                          18878
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18876,
                            "mutability": "mutable",
                            "name": "tokenIn",
                            "nameLocation": "17274:7:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18925,
                            "src": "17266:15:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 18875,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "17266:7:52",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18878,
                            "mutability": "mutable",
                            "name": "amountIn",
                            "nameLocation": "17291:8:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18925,
                            "src": "17283:16:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18877,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17283:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18888,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18881,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18869,
                              "src": "17314:4:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 18883,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "17321:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 18882,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17321:7:52",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 18885,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "17330:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 18884,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17330:7:52",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 18886,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "17320:18:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 18879,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "17303:3:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 18880,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "17303:10:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 18887,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17303:36:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$",
                            "typeString": "tuple(address payable,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17265:74:52"
                      },
                      {
                        "assignments": [
                          18890,
                          18892,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18890,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "17358:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18925,
                            "src": "17350:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 18889,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "17350:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18892,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "17377:9:52",
                            "nodeType": "VariableDeclaration",
                            "scope": 18925,
                            "src": "17369:17:52",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "typeName": {
                              "id": 18891,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "17369:7:52",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 18895,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 18893,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18397,
                            "src": "17392:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                              "typeString": "function () view returns (uint112,uint112,uint32)"
                            }
                          },
                          "id": 18894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17392:14:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "tuple(uint112,uint112,uint32)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17349:57:52"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 18898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 18896,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18876,
                            "src": "17420:7:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 18897,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17241,
                            "src": "17431:6:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "17420:17:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 18923,
                          "nodeType": "Block",
                          "src": "17532:150:52",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 18911,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 18909,
                                      "name": "tokenIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18876,
                                      "src": "17554:7:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 18910,
                                      "name": "token1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 17243,
                                      "src": "17565:6:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "17554:17:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e56414c49445f494e5055545f544f4b454e",
                                    "id": 18912,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17573:21:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                      "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                    },
                                    "value": "INVALID_INPUT_TOKEN"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                      "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                    }
                                  ],
                                  "id": 18908,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "17546:7:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 18913,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17546:49:52",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 18914,
                              "nodeType": "ExpressionStatement",
                              "src": "17546:49:52"
                            },
                            {
                              "expression": {
                                "id": 18921,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 18915,
                                  "name": "finalAmountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18873,
                                  "src": "17609:14:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 18917,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18878,
                                      "src": "17640:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 18918,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18892,
                                      "src": "17650:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    },
                                    {
                                      "id": 18919,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18890,
                                      "src": "17661:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      },
                                      {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    ],
                                    "id": 18916,
                                    "name": "_getAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18691,
                                    "src": "17626:13:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 18920,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17626:45:52",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17609:62:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18922,
                              "nodeType": "ExpressionStatement",
                              "src": "17609:62:52"
                            }
                          ]
                        },
                        "id": 18924,
                        "nodeType": "IfStatement",
                        "src": "17416:266:52",
                        "trueBody": {
                          "id": 18907,
                          "nodeType": "Block",
                          "src": "17439:87:52",
                          "statements": [
                            {
                              "expression": {
                                "id": 18905,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 18899,
                                  "name": "finalAmountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18873,
                                  "src": "17453:14:52",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 18901,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18878,
                                      "src": "17484:8:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 18902,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18890,
                                      "src": "17494:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    },
                                    {
                                      "id": 18903,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18892,
                                      "src": "17505:9:52",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      },
                                      {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    ],
                                    "id": 18900,
                                    "name": "_getAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18691,
                                    "src": "17470:13:52",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 18904,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17470:45:52",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17453:62:52",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 18906,
                              "nodeType": "ExpressionStatement",
                              "src": "17453:62:52"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "functionSelector": "a8f1f52e",
                  "id": 18926,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountOut",
                  "nameLocation": "17167:12:52",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 18871,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "17213:8:52"
                  },
                  "parameters": {
                    "id": 18870,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18869,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "17195:4:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18926,
                        "src": "17180:19:52",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 18868,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "17180:5:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17179:21:52"
                  },
                  "returnParameters": {
                    "id": 18874,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18873,
                        "mutability": "mutable",
                        "name": "finalAmountOut",
                        "nameLocation": "17239:14:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18926,
                        "src": "17231:22:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18872,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17231:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17230:24:52"
                  },
                  "scope": 18952,
                  "src": "17158:530:52",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2431
                  ],
                  "body": {
                    "id": 18937,
                    "nodeType": "Block",
                    "src": "17770:25:52",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 18934,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "17780:6:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 18935,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17780:8:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 18936,
                        "nodeType": "ExpressionStatement",
                        "src": "17780:8:52"
                      }
                    ]
                  },
                  "functionSelector": "499a3c50",
                  "id": 18938,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountIn",
                  "nameLocation": "17703:11:52",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 18930,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "17743:8:52"
                  },
                  "parameters": {
                    "id": 18929,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18928,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18938,
                        "src": "17715:14:52",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 18927,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "17715:5:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17714:16:52"
                  },
                  "returnParameters": {
                    "id": 18933,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18932,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 18938,
                        "src": "17761:7:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 18931,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17761:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17760:9:52"
                  },
                  "scope": 18952,
                  "src": "17694:101:52",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 18950,
                    "nodeType": "Block",
                    "src": "17985:38:52",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 18947,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18397,
                            "src": "18002:12:52",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$",
                              "typeString": "function () view returns (uint112,uint112,uint32)"
                            }
                          },
                          "id": 18948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18002:14:52",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$",
                            "typeString": "tuple(uint112,uint112,uint32)"
                          }
                        },
                        "functionReturnParameters": 18946,
                        "id": 18949,
                        "nodeType": "Return",
                        "src": "17995:21:52"
                      }
                    ]
                  },
                  "functionSelector": "0902f1ac",
                  "id": 18951,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReserves",
                  "nameLocation": "17810:11:52",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18939,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17821:2:52"
                  },
                  "returnParameters": {
                    "id": 18946,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18941,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "17890:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18951,
                        "src": "17882:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 18940,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "17882:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18943,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "17921:9:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18951,
                        "src": "17913:17:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        },
                        "typeName": {
                          "id": 18942,
                          "name": "uint112",
                          "nodeType": "ElementaryTypeName",
                          "src": "17913:7:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 18945,
                        "mutability": "mutable",
                        "name": "_blockTimestampLast",
                        "nameLocation": "17951:19:52",
                        "nodeType": "VariableDeclaration",
                        "scope": 18951,
                        "src": "17944:26:52",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "typeName": {
                          "id": 18944,
                          "name": "uint32",
                          "nodeType": "ElementaryTypeName",
                          "src": "17944:6:52",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17868:112:52"
                  },
                  "scope": 18952,
                  "src": "17801:222:52",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 18953,
              "src": "612:17413:52",
              "usedErrors": []
            }
          ],
          "src": "46:17980:52"
        },
        "id": 52
      },
      "contracts/pool/franchised/FranchisedConstantProductPoolFactory.sol": {
        "ast": {
          "absolutePath": "contracts/pool/franchised/FranchisedConstantProductPoolFactory.sol",
          "exportedSymbols": {
            "FranchisedConstantProductPool": [
              18952
            ],
            "FranchisedConstantProductPoolFactory": [
              19086
            ],
            "IBentoBoxMinimal": [
              2253
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "ITridentCallee": [
              2482
            ],
            "IWhiteListManager": [
              2612
            ],
            "PoolDeployer": [
              11887
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "TridentFranchisedERC20": [
              23629
            ],
            "TridentMath": [
              3139
            ]
          },
          "id": 19087,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 18954,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:53"
            },
            {
              "absolutePath": "contracts/pool/franchised/FranchisedConstantProductPool.sol",
              "file": "./FranchisedConstantProductPool.sol",
              "id": 18955,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 19087,
              "sourceUnit": 18953,
              "src": "72:45:53",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pool/PoolDeployer.sol",
              "file": "../PoolDeployer.sol",
              "id": 18956,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 19087,
              "sourceUnit": 11888,
              "src": "118:29:53",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 18958,
                    "name": "PoolDeployer",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11887,
                    "src": "329:12:53"
                  },
                  "id": 18959,
                  "nodeType": "InheritanceSpecifier",
                  "src": "329:12:53"
                }
              ],
              "contractDependencies": [
                18952
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 18957,
                "nodeType": "StructuredDocumentation",
                "src": "149:131:53",
                "text": "@notice Contract for deploying Trident exchange Franchised Constant Product Pool with configurations.\n @author Mudit Gupta."
              },
              "fullyImplemented": true,
              "id": 19086,
              "linearizedBaseContracts": [
                19086,
                11887
              ],
              "name": "FranchisedConstantProductPoolFactory",
              "nameLocation": "289:36:53",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 18967,
                    "nodeType": "Block",
                    "src": "415:2:53",
                    "statements": []
                  },
                  "id": 18968,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 18964,
                          "name": "_masterDeployer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18961,
                          "src": "398:15:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 18965,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 18963,
                        "name": "PoolDeployer",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11887,
                        "src": "385:12:53"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "385:29:53"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18962,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18961,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "368:15:53",
                        "nodeType": "VariableDeclaration",
                        "scope": 18968,
                        "src": "360:23:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18960,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "360:7:53",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "359:25:53"
                  },
                  "returnParameters": {
                    "id": 18966,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "415:0:53"
                  },
                  "scope": 19086,
                  "src": "348:69:53",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 19084,
                    "nodeType": "Block",
                    "src": "501:896:53",
                    "statements": [
                      {
                        "assignments": [
                          18976,
                          18978,
                          18980,
                          18982,
                          18984,
                          18986,
                          18988
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18976,
                            "mutability": "mutable",
                            "name": "tokenA",
                            "nameLocation": "520:6:53",
                            "nodeType": "VariableDeclaration",
                            "scope": 19084,
                            "src": "512:14:53",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 18975,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "512:7:53",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18978,
                            "mutability": "mutable",
                            "name": "tokenB",
                            "nameLocation": "536:6:53",
                            "nodeType": "VariableDeclaration",
                            "scope": 19084,
                            "src": "528:14:53",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 18977,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "528:7:53",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18980,
                            "mutability": "mutable",
                            "name": "swapFee",
                            "nameLocation": "552:7:53",
                            "nodeType": "VariableDeclaration",
                            "scope": 19084,
                            "src": "544:15:53",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 18979,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "544:7:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18982,
                            "mutability": "mutable",
                            "name": "twapSupport",
                            "nameLocation": "566:11:53",
                            "nodeType": "VariableDeclaration",
                            "scope": 19084,
                            "src": "561:16:53",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 18981,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "561:4:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18984,
                            "mutability": "mutable",
                            "name": "whiteListManager",
                            "nameLocation": "587:16:53",
                            "nodeType": "VariableDeclaration",
                            "scope": 19084,
                            "src": "579:24:53",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 18983,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "579:7:53",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18986,
                            "mutability": "mutable",
                            "name": "operator",
                            "nameLocation": "613:8:53",
                            "nodeType": "VariableDeclaration",
                            "scope": 19084,
                            "src": "605:16:53",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 18985,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "605:7:53",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 18988,
                            "mutability": "mutable",
                            "name": "level2",
                            "nameLocation": "628:6:53",
                            "nodeType": "VariableDeclaration",
                            "scope": 19084,
                            "src": "623:11:53",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 18987,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "623:4:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19008,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 18991,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18970,
                              "src": "662:11:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 18993,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "676:7:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 18992,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "676:7:53",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 18995,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "685:7:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 18994,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "685:7:53",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 18997,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "694:7:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 18996,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "694:7:53",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 18999,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "703:4:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 18998,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "703:4:53",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 19001,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "709:7:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19000,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "709:7:53",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 19003,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "718:7:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19002,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "718:7:53",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 19005,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "727:4:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 19004,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "727:4:53",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 19006,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "675:57:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_bool_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint256),type(bool),type(address),type(address),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_bool_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint256),type(bool),type(address),type(address),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 18989,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "638:3:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 18990,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "638:23:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 19007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "638:95:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_uint256_$_t_bool_$_t_address_payable_$_t_address_payable_$_t_bool_$",
                            "typeString": "tuple(address payable,address payable,uint256,bool,address payable,address payable,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "511:222:53"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 19011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 19009,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18976,
                            "src": "747:6:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 19010,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18978,
                            "src": "756:6:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "747:15:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19021,
                        "nodeType": "IfStatement",
                        "src": "743:81:53",
                        "trueBody": {
                          "id": 19020,
                          "nodeType": "Block",
                          "src": "764:60:53",
                          "statements": [
                            {
                              "expression": {
                                "id": 19018,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 19012,
                                      "name": "tokenA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18976,
                                      "src": "779:6:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 19013,
                                      "name": "tokenB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18978,
                                      "src": "787:6:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "id": 19014,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "778:16:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                    "typeString": "tuple(address,address)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "components": [
                                    {
                                      "id": 19015,
                                      "name": "tokenB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18978,
                                      "src": "798:6:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 19016,
                                      "name": "tokenA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18976,
                                      "src": "806:6:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "id": 19017,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "797:16:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                    "typeString": "tuple(address,address)"
                                  }
                                },
                                "src": "778:35:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19019,
                              "nodeType": "ExpressionStatement",
                              "src": "778:35:53"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 19033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19022,
                            "name": "_deployData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18970,
                            "src": "873:11:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 19025,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18976,
                                "src": "898:6:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 19026,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18978,
                                "src": "906:6:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 19027,
                                "name": "swapFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18980,
                                "src": "914:7:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 19028,
                                "name": "twapSupport",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18982,
                                "src": "923:11:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "id": 19029,
                                "name": "whiteListManager",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18984,
                                "src": "936:16:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 19030,
                                "name": "operator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18986,
                                "src": "954:8:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 19031,
                                "name": "level2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18988,
                                "src": "964:6:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "id": 19023,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "887:3:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 19024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "src": "887:10:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 19032,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "887:84:53",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "873:98:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 19034,
                        "nodeType": "ExpressionStatement",
                        "src": "873:98:53"
                      },
                      {
                        "assignments": [
                          19039
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19039,
                            "mutability": "mutable",
                            "name": "tokens",
                            "nameLocation": "999:6:53",
                            "nodeType": "VariableDeclaration",
                            "scope": 19084,
                            "src": "982:23:53",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 19037,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "982:7:53",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 19038,
                              "nodeType": "ArrayTypeName",
                              "src": "982:9:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19045,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "32",
                              "id": 19043,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1022:1:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "id": 19042,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1008:13:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 19040,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1012:7:53",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 19041,
                              "nodeType": "ArrayTypeName",
                              "src": "1012:9:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 19044,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1008:16:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "982:42:53"
                      },
                      {
                        "expression": {
                          "id": 19050,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 19046,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19039,
                              "src": "1034:6:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 19048,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 19047,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1041:1:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1034:9:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 19049,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18976,
                            "src": "1046:6:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1034:18:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 19051,
                        "nodeType": "ExpressionStatement",
                        "src": "1034:18:53"
                      },
                      {
                        "expression": {
                          "id": 19056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 19052,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19039,
                              "src": "1062:6:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 19054,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 19053,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1069:1:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1062:9:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 19055,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18978,
                            "src": "1074:6:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1062:18:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 19057,
                        "nodeType": "ExpressionStatement",
                        "src": "1062:18:53"
                      },
                      {
                        "assignments": [
                          19059
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19059,
                            "mutability": "mutable",
                            "name": "salt",
                            "nameLocation": "1218:4:53",
                            "nodeType": "VariableDeclaration",
                            "scope": 19084,
                            "src": "1210:12:53",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 19058,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1210:7:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19063,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 19061,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18970,
                              "src": "1235:11:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 19060,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "1225:9:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 19062,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1225:22:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1210:37:53"
                      },
                      {
                        "expression": {
                          "id": 19076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19064,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18973,
                            "src": "1257:4:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 19072,
                                    "name": "_deployData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18970,
                                    "src": "1318:11:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 19073,
                                    "name": "masterDeployer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11681,
                                    "src": "1331:14:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 19069,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "1272:33:53",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_creation_nonpayable$_t_bytes_memory_ptr_$_t_address_$returns$_t_contract$_FranchisedConstantProductPool_$18952_$",
                                      "typeString": "function (bytes memory,address) returns (contract FranchisedConstantProductPool)"
                                    },
                                    "typeName": {
                                      "id": 19068,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 19067,
                                        "name": "FranchisedConstantProductPool",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 18952,
                                        "src": "1276:29:53"
                                      },
                                      "referencedDeclaration": 18952,
                                      "src": "1276:29:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                        "typeString": "contract FranchisedConstantProductPool"
                                      }
                                    }
                                  },
                                  "id": 19071,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "names": [
                                    "salt"
                                  ],
                                  "nodeType": "FunctionCallOptions",
                                  "options": [
                                    {
                                      "id": 19070,
                                      "name": "salt",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19059,
                                      "src": "1312:4:53",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "src": "1272:45:53",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_creation_nonpayable$_t_bytes_memory_ptr_$_t_address_$returns$_t_contract$_FranchisedConstantProductPool_$18952_$salt",
                                    "typeString": "function (bytes memory,address) returns (contract FranchisedConstantProductPool)"
                                  }
                                },
                                "id": 19074,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1272:74:53",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                  "typeString": "contract FranchisedConstantProductPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_FranchisedConstantProductPool_$18952",
                                  "typeString": "contract FranchisedConstantProductPool"
                                }
                              ],
                              "id": 19066,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1264:7:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 19065,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1264:7:53",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 19075,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1264:83:53",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1257:90:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 19077,
                        "nodeType": "ExpressionStatement",
                        "src": "1257:90:53"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19079,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18973,
                              "src": "1371:4:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19080,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19039,
                              "src": "1377:6:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "id": 19081,
                              "name": "salt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19059,
                              "src": "1385:4:53",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 19078,
                            "name": "_registerPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11818,
                            "src": "1357:13:53",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address[] memory,bytes32)"
                            }
                          },
                          "id": 19082,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1357:33:53",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19083,
                        "nodeType": "ExpressionStatement",
                        "src": "1357:33:53"
                      }
                    ]
                  },
                  "functionSelector": "27c3cae1",
                  "id": 19085,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deployPool",
                  "nameLocation": "432:10:53",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 18971,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18970,
                        "mutability": "mutable",
                        "name": "_deployData",
                        "nameLocation": "456:11:53",
                        "nodeType": "VariableDeclaration",
                        "scope": 19085,
                        "src": "443:24:53",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 18969,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "443:5:53",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "442:26:53"
                  },
                  "returnParameters": {
                    "id": 18974,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 18973,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "495:4:53",
                        "nodeType": "VariableDeclaration",
                        "scope": 19085,
                        "src": "487:12:53",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 18972,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "487:7:53",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "486:14:53"
                  },
                  "scope": 19086,
                  "src": "423:974:53",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 19087,
              "src": "280:1119:53",
              "usedErrors": [
                11694,
                11696,
                11698
              ]
            }
          ],
          "src": "46:1354:53"
        },
        "id": 53
      },
      "contracts/pool/franchised/FranchisedHybridPool.sol": {
        "ast": {
          "absolutePath": "contracts/pool/franchised/FranchisedHybridPool.sol",
          "exportedSymbols": {
            "FranchisedHybridPool": [
              21279
            ],
            "IBentoBoxMinimal": [
              2253
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "ITridentCallee": [
              2482
            ],
            "IWhiteListManager": [
              2612
            ],
            "MathUtils": [
              2852
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "TridentFranchisedERC20": [
              23629
            ]
          },
          "id": 21280,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 19088,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:54"
            },
            {
              "absolutePath": "contracts/interfaces/IBentoBoxMinimal.sol",
              "file": "../../interfaces/IBentoBoxMinimal.sol",
              "id": 19089,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 21280,
              "sourceUnit": 2254,
              "src": "72:47:54",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IMasterDeployer.sol",
              "file": "../../interfaces/IMasterDeployer.sol",
              "id": 19090,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 21280,
              "sourceUnit": 2357,
              "src": "120:46:54",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IPool.sol",
              "file": "../../interfaces/IPool.sol",
              "id": 19091,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 21280,
              "sourceUnit": 2451,
              "src": "167:36:54",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ITridentCallee.sol",
              "file": "../../interfaces/ITridentCallee.sol",
              "id": 19092,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 21280,
              "sourceUnit": 2483,
              "src": "204:45:54",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/libraries/MathUtils.sol",
              "file": "../../libraries/MathUtils.sol",
              "id": 19093,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 21280,
              "sourceUnit": 2853,
              "src": "250:39:54",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pool/franchised/TridentFranchisedERC20.sol",
              "file": "./TridentFranchisedERC20.sol",
              "id": 19094,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 21280,
              "sourceUnit": 23630,
              "src": "290:38:54",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 19096,
                    "name": "IPool",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2450,
                    "src": "658:5:54"
                  },
                  "id": 19097,
                  "nodeType": "InheritanceSpecifier",
                  "src": "658:5:54"
                },
                {
                  "baseName": {
                    "id": 19098,
                    "name": "TridentFranchisedERC20",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 23629,
                    "src": "665:22:54"
                  },
                  "id": 19099,
                  "nodeType": "InheritanceSpecifier",
                  "src": "665:22:54"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 19095,
                "nodeType": "StructuredDocumentation",
                "src": "330:295:54",
                "text": "@notice Trident exchange franchised pool template with hybrid like-kind formula for swapping between an ERC-20 token pair.\n @dev The reserves are stored as bento shares. However, the stableswap invariant is applied to the underlying amounts.\n      The API uses the underlying amounts."
              },
              "fullyImplemented": true,
              "id": 21279,
              "linearizedBaseContracts": [
                21279,
                23629,
                2450
              ],
              "name": "FranchisedHybridPool",
              "nameLocation": "634:20:54",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 19102,
                  "libraryName": {
                    "id": 19100,
                    "name": "MathUtils",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2852,
                    "src": "700:9:54"
                  },
                  "nodeType": "UsingForDirective",
                  "src": "694:28:54",
                  "typeName": {
                    "id": 19101,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "714:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "anonymous": false,
                  "id": 19114,
                  "name": "Mint",
                  "nameLocation": "734:4:54",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 19113,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19104,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "755:6:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19114,
                        "src": "739:22:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19103,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "739:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19106,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount0",
                        "nameLocation": "771:7:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19114,
                        "src": "763:15:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19105,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "763:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19108,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount1",
                        "nameLocation": "788:7:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19114,
                        "src": "780:15:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19107,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "780:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19110,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "813:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19114,
                        "src": "797:25:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19109,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "797:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19112,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "832:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19114,
                        "src": "824:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19111,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "824:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "738:104:54"
                  },
                  "src": "728:115:54"
                },
                {
                  "anonymous": false,
                  "id": 19126,
                  "name": "Burn",
                  "nameLocation": "854:4:54",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 19125,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19116,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "875:6:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19126,
                        "src": "859:22:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19115,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "859:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19118,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount0",
                        "nameLocation": "891:7:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19126,
                        "src": "883:15:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19117,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "883:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19120,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount1",
                        "nameLocation": "908:7:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19126,
                        "src": "900:15:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19119,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "900:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19122,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "933:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19126,
                        "src": "917:25:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19121,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "917:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19124,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "952:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19126,
                        "src": "944:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19123,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "944:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "858:104:54"
                  },
                  "src": "848:115:54"
                },
                {
                  "anonymous": false,
                  "id": 19132,
                  "name": "Sync",
                  "nameLocation": "974:4:54",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 19131,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19128,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "reserve0",
                        "nameLocation": "987:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19132,
                        "src": "979:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19127,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "979:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19130,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "reserve1",
                        "nameLocation": "1005:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19132,
                        "src": "997:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19129,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "997:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "978:36:54"
                  },
                  "src": "968:47:54"
                },
                {
                  "constant": true,
                  "id": 19137,
                  "mutability": "constant",
                  "name": "MINIMUM_LIQUIDITY",
                  "nameLocation": "1047:17:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 21279,
                  "src": "1021:51:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19133,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1021:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_rational_1000_by_1",
                      "typeString": "int_const 1000"
                    },
                    "id": 19136,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "3130",
                      "id": 19134,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1067:2:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "hexValue": "33",
                      "id": 19135,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1071:1:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "src": "1067:5:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000_by_1",
                      "typeString": "int_const 1000"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 19140,
                  "mutability": "constant",
                  "name": "PRECISION",
                  "nameLocation": "1102:9:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 21279,
                  "src": "1078:39:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 19138,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1078:5:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "313132",
                    "id": 19139,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1114:3:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_112_by_1",
                      "typeString": "int_const 112"
                    },
                    "value": "112"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 19141,
                    "nodeType": "StructuredDocumentation",
                    "src": "1124:47:54",
                    "text": "@dev Constant value used as max loop limit."
                  },
                  "id": 19144,
                  "mutability": "constant",
                  "name": "MAX_LOOP_LIMIT",
                  "nameLocation": "1202:14:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 21279,
                  "src": "1176:46:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19142,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1176:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "323536",
                    "id": 19143,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1219:3:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_256_by_1",
                      "typeString": "int_const 256"
                    },
                    "value": "256"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 19147,
                  "mutability": "constant",
                  "name": "MAX_FEE",
                  "nameLocation": "1254:7:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 21279,
                  "src": "1228:41:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19145,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1228:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3130303030",
                    "id": 19146,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1264:5:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_10000_by_1",
                      "typeString": "int_const 10000"
                    },
                    "value": "10000"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "54cf2aeb",
                  "id": 19149,
                  "mutability": "immutable",
                  "name": "swapFee",
                  "nameLocation": "1314:7:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 21279,
                  "src": "1289:32:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19148,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1289:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "0c0a0cd2",
                  "id": 19151,
                  "mutability": "immutable",
                  "name": "barFeeTo",
                  "nameLocation": "1353:8:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 21279,
                  "src": "1328:33:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19150,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1328:7:54",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "4da31827",
                  "id": 19153,
                  "mutability": "immutable",
                  "name": "bento",
                  "nameLocation": "1392:5:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 21279,
                  "src": "1367:30:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19152,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1367:7:54",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "cf58879a",
                  "id": 19155,
                  "mutability": "immutable",
                  "name": "masterDeployer",
                  "nameLocation": "1428:14:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 21279,
                  "src": "1403:39:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19154,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1403:7:54",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "0dfe1681",
                  "id": 19157,
                  "mutability": "immutable",
                  "name": "token0",
                  "nameLocation": "1473:6:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 21279,
                  "src": "1448:31:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19156,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1448:7:54",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "d21220a7",
                  "id": 19159,
                  "mutability": "immutable",
                  "name": "token1",
                  "nameLocation": "1510:6:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 21279,
                  "src": "1485:31:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 19158,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1485:7:54",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "f446c1d0",
                  "id": 19161,
                  "mutability": "immutable",
                  "name": "A",
                  "nameLocation": "1547:1:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 21279,
                  "src": "1522:26:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19160,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1522:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 19163,
                  "mutability": "immutable",
                  "name": "N_A",
                  "nameLocation": "1581:3:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 21279,
                  "src": "1554:30:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19162,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1554:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 19166,
                  "mutability": "constant",
                  "name": "A_PRECISION",
                  "nameLocation": "1631:11:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 21279,
                  "src": "1605:43:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19164,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1605:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "313030",
                    "id": 19165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1645:3:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_100_by_1",
                      "typeString": "int_const 100"
                    },
                    "value": "100"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 19167,
                    "nodeType": "StructuredDocumentation",
                    "src": "1655:243:54",
                    "text": "@dev Multipliers for each pooled token's precision to get to POOL_PRECISION_DECIMALS.\n For example, TBTC has 18 decimals, so the multiplier should be 1. WBTC\n has 8, so the multiplier should be 10 ** 18 / 10 ** 8 => 10 ** 10."
                  },
                  "functionSelector": "baa8c7cb",
                  "id": 19169,
                  "mutability": "immutable",
                  "name": "token0PrecisionMultiplier",
                  "nameLocation": "1928:25:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 21279,
                  "src": "1903:50:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19168,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1903:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "4e25dc47",
                  "id": 19171,
                  "mutability": "immutable",
                  "name": "token1PrecisionMultiplier",
                  "nameLocation": "1984:25:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 21279,
                  "src": "1959:50:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19170,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1959:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "c14ad802",
                  "id": 19173,
                  "mutability": "mutable",
                  "name": "barFee",
                  "nameLocation": "2031:6:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 21279,
                  "src": "2016:21:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19172,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2016:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 19175,
                  "mutability": "mutable",
                  "name": "reserve0",
                  "nameLocation": "2061:8:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 21279,
                  "src": "2044:25:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 19174,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "2044:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19177,
                  "mutability": "mutable",
                  "name": "reserve1",
                  "nameLocation": "2092:8:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 21279,
                  "src": "2075:25:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 19176,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "2075:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2408
                  ],
                  "constant": true,
                  "functionSelector": "a69840a8",
                  "id": 19181,
                  "mutability": "constant",
                  "name": "poolIdentifier",
                  "nameLocation": "2140:14:54",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 19179,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2131:8:54"
                  },
                  "scope": 21279,
                  "src": "2107:76:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 19178,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2107:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "54726964656e743a4672616e636869736564487962726964",
                    "id": 19180,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2157:26:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_3dd001a38472f69a9d3316619ce1af4e593a317660ccd0352fbf9fa23fc731a7",
                      "typeString": "literal_string \"Trident:FranchisedHybrid\""
                    },
                    "value": "Trident:FranchisedHybrid"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 19183,
                  "mutability": "mutable",
                  "name": "unlocked",
                  "nameLocation": "2207:8:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 21279,
                  "src": "2190:25:54",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19182,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2190:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 19201,
                    "nodeType": "Block",
                    "src": "2237:104:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19188,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 19186,
                                "name": "unlocked",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19183,
                                "src": "2255:8:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 19187,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2267:1:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "2255:13:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4c4f434b4544",
                              "id": 19189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2270:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b",
                                "typeString": "literal_string \"LOCKED\""
                              },
                              "value": "LOCKED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b",
                                "typeString": "literal_string \"LOCKED\""
                              }
                            ],
                            "id": 19185,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2247:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2247:32:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19191,
                        "nodeType": "ExpressionStatement",
                        "src": "2247:32:54"
                      },
                      {
                        "expression": {
                          "id": 19194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19192,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19183,
                            "src": "2289:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "32",
                            "id": 19193,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2300:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "2289:12:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19195,
                        "nodeType": "ExpressionStatement",
                        "src": "2289:12:54"
                      },
                      {
                        "id": 19196,
                        "nodeType": "PlaceholderStatement",
                        "src": "2311:1:54"
                      },
                      {
                        "expression": {
                          "id": 19199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19197,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19183,
                            "src": "2322:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 19198,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2333:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2322:12:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19200,
                        "nodeType": "ExpressionStatement",
                        "src": "2322:12:54"
                      }
                    ]
                  },
                  "id": 19202,
                  "name": "lock",
                  "nameLocation": "2230:4:54",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 19184,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2234:2:54"
                  },
                  "src": "2221:120:54",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 19428,
                    "nodeType": "Block",
                    "src": "2410:1691:54",
                    "statements": [
                      {
                        "assignments": [
                          19210,
                          19212,
                          19214,
                          19216,
                          19218,
                          19220,
                          19222
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19210,
                            "mutability": "mutable",
                            "name": "_token0",
                            "nameLocation": "2429:7:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19428,
                            "src": "2421:15:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19209,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2421:7:54",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19212,
                            "mutability": "mutable",
                            "name": "_token1",
                            "nameLocation": "2446:7:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19428,
                            "src": "2438:15:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19211,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2438:7:54",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19214,
                            "mutability": "mutable",
                            "name": "_swapFee",
                            "nameLocation": "2463:8:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19428,
                            "src": "2455:16:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19213,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2455:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19216,
                            "mutability": "mutable",
                            "name": "a",
                            "nameLocation": "2481:1:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19428,
                            "src": "2473:9:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19215,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2473:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19218,
                            "mutability": "mutable",
                            "name": "_whiteListManager",
                            "nameLocation": "2492:17:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19428,
                            "src": "2484:25:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19217,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2484:7:54",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19220,
                            "mutability": "mutable",
                            "name": "_operator",
                            "nameLocation": "2519:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19428,
                            "src": "2511:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19219,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2511:7:54",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19222,
                            "mutability": "mutable",
                            "name": "_level2",
                            "nameLocation": "2535:7:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19428,
                            "src": "2530:12:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 19221,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2530:4:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19242,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 19225,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19204,
                              "src": "2570:11:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 19227,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2584:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19226,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2584:7:54",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 19229,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2593:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19228,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2593:7:54",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 19231,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2602:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 19230,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2602:7:54",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 19233,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2611:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 19232,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2611:7:54",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 19235,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2620:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19234,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2620:7:54",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 19237,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2629:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19236,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2629:7:54",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 19239,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2638:4:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 19238,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2638:4:54",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 19240,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2583:60:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint256),type(uint256),type(address),type(address),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint256),type(uint256),type(address),type(address),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 19223,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "2546:3:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 19224,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "2546:23:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 19241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2546:98:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_uint256_$_t_uint256_$_t_address_payable_$_t_address_payable_$_t_bool_$",
                            "typeString": "tuple(address payable,address payable,uint256,uint256,address payable,address payable,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2420:224:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 19249,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 19244,
                                "name": "_token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19210,
                                "src": "2723:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 19247,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2742:1:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 19246,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2734:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19245,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2734:7:54",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 19248,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2734:10:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2723:21:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5a45524f5f41444452455353",
                              "id": 19250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2746:14:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af",
                                "typeString": "literal_string \"ZERO_ADDRESS\""
                              },
                              "value": "ZERO_ADDRESS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af",
                                "typeString": "literal_string \"ZERO_ADDRESS\""
                              }
                            ],
                            "id": 19243,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2715:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2715:46:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19252,
                        "nodeType": "ExpressionStatement",
                        "src": "2715:46:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 19256,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 19254,
                                "name": "_token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19210,
                                "src": "2779:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 19255,
                                "name": "_token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19212,
                                "src": "2790:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2779:18:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4944454e544943414c5f414444524553534553",
                              "id": 19257,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2799:21:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6",
                                "typeString": "literal_string \"IDENTICAL_ADDRESSES\""
                              },
                              "value": "IDENTICAL_ADDRESSES"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8363c2b4bde056d040c386dadb1db2d00d75a9af0dbcc91910b546c5c0cab6b6",
                                "typeString": "literal_string \"IDENTICAL_ADDRESSES\""
                              }
                            ],
                            "id": 19253,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2771:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19258,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2771:50:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19259,
                        "nodeType": "ExpressionStatement",
                        "src": "2771:50:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19263,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 19261,
                                "name": "_swapFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19214,
                                "src": "2839:8:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 19262,
                                "name": "MAX_FEE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19147,
                                "src": "2851:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2839:19:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f535741505f464545",
                              "id": 19264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2860:18:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1",
                                "typeString": "literal_string \"INVALID_SWAP_FEE\""
                              },
                              "value": "INVALID_SWAP_FEE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1",
                                "typeString": "literal_string \"INVALID_SWAP_FEE\""
                              }
                            ],
                            "id": 19260,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2831:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2831:48:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19266,
                        "nodeType": "ExpressionStatement",
                        "src": "2831:48:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19270,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 19268,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19216,
                                "src": "2897:1:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 19269,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2902:1:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2897:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5a45524f5f41",
                              "id": 19271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2905:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_784abf5ee5ac26c0ab454d7180fc6674dd424c889acd4d27298540d9febc99d6",
                                "typeString": "literal_string \"ZERO_A\""
                              },
                              "value": "ZERO_A"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_784abf5ee5ac26c0ab454d7180fc6674dd424c889acd4d27298540d9febc99d6",
                                "typeString": "literal_string \"ZERO_A\""
                              }
                            ],
                            "id": 19267,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2889:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2889:25:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19273,
                        "nodeType": "ExpressionStatement",
                        "src": "2889:25:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19277,
                              "name": "_whiteListManager",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19218,
                              "src": "2959:17:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19278,
                              "name": "_operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19220,
                              "src": "2978:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19279,
                              "name": "_level2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19222,
                              "src": "2989:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "id": 19274,
                              "name": "TridentFranchisedERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23629,
                              "src": "2925:22:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TridentFranchisedERC20_$23629_$",
                                "typeString": "type(contract TridentFranchisedERC20)"
                              }
                            },
                            "id": 19276,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initialize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 23316,
                            "src": "2925:33:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 19280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2925:72:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19281,
                        "nodeType": "ExpressionStatement",
                        "src": "2925:72:54"
                      },
                      {
                        "assignments": [
                          null,
                          19283
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 19283,
                            "mutability": "mutable",
                            "name": "_barFee",
                            "nameLocation": "3024:7:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19428,
                            "src": "3011:20:54",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 19282,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3011:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19293,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 19288,
                                      "name": "IMasterDeployer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2356,
                                      "src": "3085:15:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                        "typeString": "type(contract IMasterDeployer)"
                                      }
                                    },
                                    "id": 19289,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "barFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2324,
                                    "src": "3085:22:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_view$__$returns$_t_uint256_$",
                                      "typeString": "function IMasterDeployer.barFee() view returns (uint256)"
                                    }
                                  },
                                  "id": 19290,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "3085:31:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "expression": {
                                  "id": 19286,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3062:3:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 19287,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "3062:22:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 19291,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3062:55:54",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 19284,
                              "name": "_masterDeployer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19206,
                              "src": "3035:15:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 19285,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "3035:26:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 19292,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3035:83:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3008:110:54"
                      },
                      {
                        "assignments": [
                          null,
                          19295
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 19295,
                            "mutability": "mutable",
                            "name": "_barFeeTo",
                            "nameLocation": "3144:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19428,
                            "src": "3131:22:54",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 19294,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3131:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19305,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 19300,
                                      "name": "IMasterDeployer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2356,
                                      "src": "3207:15:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                        "typeString": "type(contract IMasterDeployer)"
                                      }
                                    },
                                    "id": 19301,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "barFeeTo",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2329,
                                    "src": "3207:24:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_view$__$returns$_t_address_$",
                                      "typeString": "function IMasterDeployer.barFeeTo() view returns (address)"
                                    }
                                  },
                                  "id": 19302,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "3207:33:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "expression": {
                                  "id": 19298,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3184:3:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 19299,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "3184:22:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 19303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3184:57:54",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 19296,
                              "name": "_masterDeployer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19206,
                              "src": "3157:15:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 19297,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "3157:26:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 19304,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3157:85:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3128:114:54"
                      },
                      {
                        "assignments": [
                          null,
                          19307
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 19307,
                            "mutability": "mutable",
                            "name": "_bento",
                            "nameLocation": "3268:6:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19428,
                            "src": "3255:19:54",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 19306,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3255:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19317,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 19312,
                                      "name": "IMasterDeployer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2356,
                                      "src": "3328:15:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                        "typeString": "type(contract IMasterDeployer)"
                                      }
                                    },
                                    "id": 19313,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "bento",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2334,
                                    "src": "3328:21:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_view$__$returns$_t_address_$",
                                      "typeString": "function IMasterDeployer.bento() view returns (address)"
                                    }
                                  },
                                  "id": 19314,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "3328:30:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "expression": {
                                  "id": 19310,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3305:3:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 19311,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "3305:22:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 19315,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3305:54:54",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 19308,
                              "name": "_masterDeployer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19206,
                              "src": "3278:15:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 19309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "3278:26:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 19316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3278:82:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3252:108:54"
                      },
                      {
                        "assignments": [
                          null,
                          19319
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 19319,
                            "mutability": "mutable",
                            "name": "_decimals0",
                            "nameLocation": "3386:10:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19428,
                            "src": "3373:23:54",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 19318,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3373:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19327,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30783331336365353637",
                                  "id": 19324,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3442:10:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_826074471_by_1",
                                    "typeString": "int_const 826074471"
                                  },
                                  "value": "0x313ce567"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_826074471_by_1",
                                    "typeString": "int_const 826074471"
                                  }
                                ],
                                "expression": {
                                  "id": 19322,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3419:3:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 19323,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "3419:22:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 19325,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3419:34:54",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 19320,
                              "name": "_token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19210,
                              "src": "3400:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 19321,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "3400:18:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 19326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3400:54:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3370:84:54"
                      },
                      {
                        "assignments": [
                          null,
                          19329
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 19329,
                            "mutability": "mutable",
                            "name": "_decimals1",
                            "nameLocation": "3502:10:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19428,
                            "src": "3489:23:54",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 19328,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3489:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19337,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30783331336365353637",
                                  "id": 19334,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3558:10:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_826074471_by_1",
                                    "typeString": "int_const 826074471"
                                  },
                                  "value": "0x313ce567"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_826074471_by_1",
                                    "typeString": "int_const 826074471"
                                  }
                                ],
                                "expression": {
                                  "id": 19332,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3535:3:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 19333,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "3535:22:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 19335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3535:34:54",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 19330,
                              "name": "_token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19212,
                              "src": "3516:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 19331,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "3516:18:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 19336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3516:54:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3486:84:54"
                      },
                      {
                        "expression": {
                          "id": 19340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19338,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19157,
                            "src": "3603:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 19339,
                            "name": "_token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19210,
                            "src": "3612:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3603:16:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 19341,
                        "nodeType": "ExpressionStatement",
                        "src": "3603:16:54"
                      },
                      {
                        "expression": {
                          "id": 19344,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19342,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19159,
                            "src": "3629:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 19343,
                            "name": "_token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19212,
                            "src": "3638:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3629:16:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 19345,
                        "nodeType": "ExpressionStatement",
                        "src": "3629:16:54"
                      },
                      {
                        "expression": {
                          "id": 19348,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19346,
                            "name": "swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19149,
                            "src": "3655:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 19347,
                            "name": "_swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19214,
                            "src": "3665:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3655:18:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19349,
                        "nodeType": "ExpressionStatement",
                        "src": "3655:18:54"
                      },
                      {
                        "expression": {
                          "id": 19358,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19350,
                            "name": "barFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19173,
                            "src": "3683:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 19353,
                                "name": "_barFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19283,
                                "src": "3703:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 19355,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3713:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 19354,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3713:7:54",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 19356,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3712:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "expression": {
                                "id": 19351,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "3692:3:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 19352,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "3692:10:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 19357,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3692:30:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3683:39:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19359,
                        "nodeType": "ExpressionStatement",
                        "src": "3683:39:54"
                      },
                      {
                        "expression": {
                          "id": 19368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19360,
                            "name": "barFeeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19151,
                            "src": "3732:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 19363,
                                "name": "_barFeeTo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19295,
                                "src": "3754:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 19365,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3766:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 19364,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3766:7:54",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 19366,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3765:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                }
                              ],
                              "expression": {
                                "id": 19361,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "3743:3:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 19362,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "3743:10:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 19367,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3743:32:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "3732:43:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 19369,
                        "nodeType": "ExpressionStatement",
                        "src": "3732:43:54"
                      },
                      {
                        "expression": {
                          "id": 19378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19370,
                            "name": "bento",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19153,
                            "src": "3785:5:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 19373,
                                "name": "_bento",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19307,
                                "src": "3804:6:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 19375,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3813:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 19374,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3813:7:54",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 19376,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3812:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                }
                              ],
                              "expression": {
                                "id": 19371,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "3793:3:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 19372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "3793:10:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 19377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3793:29:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "3785:37:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 19379,
                        "nodeType": "ExpressionStatement",
                        "src": "3785:37:54"
                      },
                      {
                        "expression": {
                          "id": 19382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19380,
                            "name": "masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19155,
                            "src": "3832:14:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 19381,
                            "name": "_masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19206,
                            "src": "3849:15:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3832:32:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 19383,
                        "nodeType": "ExpressionStatement",
                        "src": "3832:32:54"
                      },
                      {
                        "expression": {
                          "id": 19386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19384,
                            "name": "A",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19161,
                            "src": "3874:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 19385,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19216,
                            "src": "3878:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3874:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19387,
                        "nodeType": "ExpressionStatement",
                        "src": "3874:5:54"
                      },
                      {
                        "expression": {
                          "id": 19392,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19388,
                            "name": "N_A",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19163,
                            "src": "3889:3:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 19391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "hexValue": "32",
                              "id": 19389,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3895:1:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "id": 19390,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19216,
                              "src": "3899:1:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3895:5:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3889:11:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19393,
                        "nodeType": "ExpressionStatement",
                        "src": "3889:11:54"
                      },
                      {
                        "expression": {
                          "id": 19407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19394,
                            "name": "token0PrecisionMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19169,
                            "src": "3910:25:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 19406,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "hexValue": "3130",
                              "id": 19395,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3938:2:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 19404,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 19396,
                                    "name": "decimals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23224,
                                    "src": "3943:8:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "id": 19399,
                                        "name": "_decimals0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19319,
                                        "src": "3965:10:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "components": [
                                          {
                                            "id": 19401,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "3978:5:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint8_$",
                                              "typeString": "type(uint8)"
                                            },
                                            "typeName": {
                                              "id": 19400,
                                              "name": "uint8",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "3978:5:54",
                                              "typeDescriptions": {}
                                            }
                                          }
                                        ],
                                        "id": 19402,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "3977:7:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint8_$",
                                          "typeString": "type(uint8)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_uint8_$",
                                          "typeString": "type(uint8)"
                                        }
                                      ],
                                      "expression": {
                                        "id": 19397,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "3954:3:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 19398,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "src": "3954:10:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 19403,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3954:31:54",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "3943:42:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                }
                              ],
                              "id": 19405,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3942:44:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "3938:48:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3910:76:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19408,
                        "nodeType": "ExpressionStatement",
                        "src": "3910:76:54"
                      },
                      {
                        "expression": {
                          "id": 19422,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19409,
                            "name": "token1PrecisionMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19171,
                            "src": "3996:25:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 19421,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "hexValue": "3130",
                              "id": 19410,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4024:2:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10_by_1",
                                "typeString": "int_const 10"
                              },
                              "value": "10"
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "**",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "id": 19419,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 19411,
                                    "name": "decimals",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23224,
                                    "src": "4029:8:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "id": 19414,
                                        "name": "_decimals1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19329,
                                        "src": "4051:10:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "components": [
                                          {
                                            "id": 19416,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "4064:5:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint8_$",
                                              "typeString": "type(uint8)"
                                            },
                                            "typeName": {
                                              "id": 19415,
                                              "name": "uint8",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "4064:5:54",
                                              "typeDescriptions": {}
                                            }
                                          }
                                        ],
                                        "id": 19417,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "4063:7:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint8_$",
                                          "typeString": "type(uint8)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_uint8_$",
                                          "typeString": "type(uint8)"
                                        }
                                      ],
                                      "expression": {
                                        "id": 19412,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "4040:3:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 19413,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "src": "4040:10:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 19418,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4040:31:54",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "4029:42:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                }
                              ],
                              "id": 19420,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "4028:44:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "4024:48:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3996:76:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19423,
                        "nodeType": "ExpressionStatement",
                        "src": "3996:76:54"
                      },
                      {
                        "expression": {
                          "id": 19426,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19424,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19183,
                            "src": "4082:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 19425,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4093:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "4082:12:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19427,
                        "nodeType": "ExpressionStatement",
                        "src": "4082:12:54"
                      }
                    ]
                  },
                  "id": 19429,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 19207,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19204,
                        "mutability": "mutable",
                        "name": "_deployData",
                        "nameLocation": "2372:11:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19429,
                        "src": "2359:24:54",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 19203,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2359:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 19206,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "2393:15:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19429,
                        "src": "2385:23:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 19205,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2385:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2358:51:54"
                  },
                  "returnParameters": {
                    "id": 19208,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2410:0:54"
                  },
                  "scope": 21279,
                  "src": "2347:1754:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2384
                  ],
                  "body": {
                    "id": 19573,
                    "nodeType": "Block",
                    "src": "4384:1100:54",
                    "statements": [
                      {
                        "assignments": [
                          19441
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19441,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "4402:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19573,
                            "src": "4394:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19440,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4394:7:54",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19449,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 19444,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19432,
                              "src": "4425:4:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 19446,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4432:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19445,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4432:7:54",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 19447,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "4431:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              }
                            ],
                            "expression": {
                              "id": 19442,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "4414:3:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 19443,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "4414:10:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 19448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4414:27:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4394:47:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19451,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19441,
                              "src": "4467:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19450,
                            "name": "_checkWhiteList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23628,
                            "src": "4451:15:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 19452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4451:26:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19453,
                        "nodeType": "ExpressionStatement",
                        "src": "4451:26:54"
                      },
                      {
                        "assignments": [
                          19455,
                          19457
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19455,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "4496:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19573,
                            "src": "4488:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19454,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4488:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19457,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "4515:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19573,
                            "src": "4507:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19456,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4507:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19460,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 19458,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20355,
                            "src": "4528:12:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 19459,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4528:14:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4487:55:54"
                      },
                      {
                        "assignments": [
                          19462,
                          19464
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19462,
                            "mutability": "mutable",
                            "name": "balance0",
                            "nameLocation": "4561:8:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19573,
                            "src": "4553:16:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19461,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4553:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19464,
                            "mutability": "mutable",
                            "name": "balance1",
                            "nameLocation": "4579:8:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19573,
                            "src": "4571:16:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19463,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4571:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19467,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 19465,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20430,
                            "src": "4591:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 19466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4591:10:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4552:49:54"
                      },
                      {
                        "assignments": [
                          19469
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19469,
                            "mutability": "mutable",
                            "name": "_totalSupply",
                            "nameLocation": "4619:12:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19573,
                            "src": "4611:20:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19468,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4611:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19471,
                        "initialValue": {
                          "id": 19470,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23232,
                          "src": "4634:11:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4611:34:54"
                      },
                      {
                        "assignments": [
                          19473
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19473,
                            "mutability": "mutable",
                            "name": "amount0",
                            "nameLocation": "4664:7:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19573,
                            "src": "4656:15:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19472,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4656:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19477,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 19474,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19462,
                            "src": "4674:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 19475,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19455,
                            "src": "4685:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4674:20:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4656:38:54"
                      },
                      {
                        "assignments": [
                          19479
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19479,
                            "mutability": "mutable",
                            "name": "amount1",
                            "nameLocation": "4712:7:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19573,
                            "src": "4704:15:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19478,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4704:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19483,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 19480,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19464,
                            "src": "4722:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 19481,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19457,
                            "src": "4733:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4722:20:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4704:38:54"
                      },
                      {
                        "assignments": [
                          19485,
                          19487
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19485,
                            "mutability": "mutable",
                            "name": "fee0",
                            "nameLocation": "4761:4:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19573,
                            "src": "4753:12:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19484,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4753:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19487,
                            "mutability": "mutable",
                            "name": "fee1",
                            "nameLocation": "4775:4:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19573,
                            "src": "4767:12:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19486,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4767:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19494,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 19489,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19473,
                              "src": "4802:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 19490,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19479,
                              "src": "4811:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 19491,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19455,
                              "src": "4820:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 19492,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19457,
                              "src": "4831:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19488,
                            "name": "_nonOptimalMintFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21146,
                            "src": "4783:18:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256,uint256) view returns (uint256,uint256)"
                            }
                          },
                          "id": 19493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4783:58:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4752:89:54"
                      },
                      {
                        "assignments": [
                          19496
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19496,
                            "mutability": "mutable",
                            "name": "newLiq",
                            "nameLocation": "4859:6:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19573,
                            "src": "4851:14:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19495,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4851:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19505,
                        "initialValue": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19500,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 19498,
                                "name": "balance0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19462,
                                "src": "4886:8:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "id": 19499,
                                "name": "fee0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19485,
                                "src": "4897:4:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4886:15:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19503,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 19501,
                                "name": "balance1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19464,
                                "src": "4903:8:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "id": 19502,
                                "name": "fee1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19487,
                                "src": "4914:4:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4903:15:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19497,
                            "name": "_computeLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20725,
                            "src": "4868:17:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) view returns (uint256)"
                            }
                          },
                          "id": 19504,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4868:51:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4851:68:54"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19508,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 19506,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19469,
                            "src": "4934:12:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 19507,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4950:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4934:17:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 19543,
                          "nodeType": "Block",
                          "src": "5072:150:54",
                          "statements": [
                            {
                              "assignments": [
                                19525
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19525,
                                  "mutability": "mutable",
                                  "name": "oldLiq",
                                  "nameLocation": "5094:6:54",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19543,
                                  "src": "5086:14:54",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 19524,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5086:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19530,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 19527,
                                    "name": "_reserve0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19455,
                                    "src": "5121:9:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 19528,
                                    "name": "_reserve1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19457,
                                    "src": "5132:9:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 19526,
                                  "name": "_computeLiquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20725,
                                  "src": "5103:17:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) view returns (uint256)"
                                  }
                                },
                                "id": 19529,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5103:39:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5086:56:54"
                            },
                            {
                              "expression": {
                                "id": 19541,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 19531,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19438,
                                  "src": "5156:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 19540,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 19537,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 19534,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 19532,
                                                "name": "newLiq",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 19496,
                                                "src": "5170:6:54",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "id": 19533,
                                                "name": "oldLiq",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 19525,
                                                "src": "5179:6:54",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "5170:15:54",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 19535,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "5169:17:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 19536,
                                          "name": "_totalSupply",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19469,
                                          "src": "5189:12:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "5169:32:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 19538,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "5168:34:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 19539,
                                    "name": "oldLiq",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19525,
                                    "src": "5205:6:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "5168:43:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5156:55:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19542,
                              "nodeType": "ExpressionStatement",
                              "src": "5156:55:54"
                            }
                          ]
                        },
                        "id": 19544,
                        "nodeType": "IfStatement",
                        "src": "4930:292:54",
                        "trueBody": {
                          "id": 19523,
                          "nodeType": "Block",
                          "src": "4953:113:54",
                          "statements": [
                            {
                              "expression": {
                                "id": 19513,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 19509,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19438,
                                  "src": "4967:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 19512,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 19510,
                                    "name": "newLiq",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19496,
                                    "src": "4979:6:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 19511,
                                    "name": "MINIMUM_LIQUIDITY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19137,
                                    "src": "4988:17:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4979:26:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4967:38:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19514,
                              "nodeType": "ExpressionStatement",
                              "src": "4967:38:54"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 19518,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5033:1:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 19517,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5025:7:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 19516,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5025:7:54",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 19519,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5025:10:54",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 19520,
                                    "name": "MINIMUM_LIQUIDITY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19137,
                                    "src": "5037:17:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 19515,
                                  "name": "_mint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23564,
                                  "src": "5019:5:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256)"
                                  }
                                },
                                "id": 19521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5019:36:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19522,
                              "nodeType": "ExpressionStatement",
                              "src": "5019:36:54"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19548,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 19546,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19438,
                                "src": "5239:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 19547,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5252:1:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5239:14:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e53554646494349454e545f4c49515549444954595f4d494e544544",
                              "id": 19549,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5255:31:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c",
                                "typeString": "literal_string \"INSUFFICIENT_LIQUIDITY_MINTED\""
                              },
                              "value": "INSUFFICIENT_LIQUIDITY_MINTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_56a253623294f4f4de6a9841388f033e113a22d6b37d1e786db69a7172923f8c",
                                "typeString": "literal_string \"INSUFFICIENT_LIQUIDITY_MINTED\""
                              }
                            ],
                            "id": 19545,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5231:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 19550,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5231:56:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19551,
                        "nodeType": "ExpressionStatement",
                        "src": "5231:56:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19553,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19441,
                              "src": "5303:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19554,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19438,
                              "src": "5314:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19552,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23564,
                            "src": "5297:5:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 19555,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5297:27:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19556,
                        "nodeType": "ExpressionStatement",
                        "src": "5297:27:54"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 19557,
                            "name": "_updateReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20404,
                            "src": "5334:15:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 19558,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5334:17:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19559,
                        "nodeType": "ExpressionStatement",
                        "src": "5334:17:54"
                      },
                      {
                        "assignments": [
                          19561
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19561,
                            "mutability": "mutable",
                            "name": "liquidityForEvent",
                            "nameLocation": "5369:17:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19573,
                            "src": "5361:25:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19560,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5361:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19563,
                        "initialValue": {
                          "id": 19562,
                          "name": "liquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19438,
                          "src": "5389:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5361:37:54"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 19565,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "5418:3:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 19566,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "5418:10:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19567,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19473,
                              "src": "5430:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 19568,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19479,
                              "src": "5439:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 19569,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19441,
                              "src": "5448:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19570,
                              "name": "liquidityForEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19561,
                              "src": "5459:17:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19564,
                            "name": "Mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19114,
                            "src": "5413:4:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address,uint256)"
                            }
                          },
                          "id": 19571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5413:64:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19572,
                        "nodeType": "EmitStatement",
                        "src": "5408:69:54"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19430,
                    "nodeType": "StructuredDocumentation",
                    "src": "4107:188:54",
                    "text": "@dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\n The router must ensure that sufficient LP tokens are minted by using the return value."
                  },
                  "functionSelector": "7ba0e2e7",
                  "id": 19574,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 19436,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 19435,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 19202,
                        "src": "4351:4:54"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4351:4:54"
                    }
                  ],
                  "name": "mint",
                  "nameLocation": "4309:4:54",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19434,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4342:8:54"
                  },
                  "parameters": {
                    "id": 19433,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19432,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4329:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19574,
                        "src": "4314:19:54",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 19431,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4314:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4313:21:54"
                  },
                  "returnParameters": {
                    "id": 19439,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19438,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "4373:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19574,
                        "src": "4365:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19437,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4365:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4364:19:54"
                  },
                  "scope": 21279,
                  "src": "4300:1184:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2394
                  ],
                  "body": {
                    "id": 19718,
                    "nodeType": "Block",
                    "src": "5720:975:54",
                    "statements": [
                      {
                        "assignments": [
                          19588,
                          19590
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19588,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "5739:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19718,
                            "src": "5731:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19587,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5731:7:54",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19590,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "5755:11:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19718,
                            "src": "5750:16:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 19589,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5750:4:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19600,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 19593,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19577,
                              "src": "5781:4:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 19595,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5788:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19594,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5788:7:54",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 19597,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5797:4:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 19596,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5797:4:54",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 19598,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5787:15:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 19591,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "5770:3:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 19592,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "5770:10:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 19599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5770:33:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_bool_$",
                            "typeString": "tuple(address payable,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5730:73:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19602,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19588,
                              "src": "5829:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19601,
                            "name": "_checkWhiteList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23628,
                            "src": "5813:15:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 19603,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5813:26:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19604,
                        "nodeType": "ExpressionStatement",
                        "src": "5813:26:54"
                      },
                      {
                        "assignments": [
                          19606,
                          19608
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19606,
                            "mutability": "mutable",
                            "name": "balance0",
                            "nameLocation": "5858:8:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19718,
                            "src": "5850:16:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19605,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5850:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19608,
                            "mutability": "mutable",
                            "name": "balance1",
                            "nameLocation": "5876:8:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19718,
                            "src": "5868:16:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19607,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5868:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19611,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 19609,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20430,
                            "src": "5888:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 19610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5888:10:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5849:49:54"
                      },
                      {
                        "assignments": [
                          19613
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19613,
                            "mutability": "mutable",
                            "name": "_totalSupply",
                            "nameLocation": "5916:12:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19718,
                            "src": "5908:20:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19612,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5908:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19615,
                        "initialValue": {
                          "id": 19614,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23232,
                          "src": "5931:11:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5908:34:54"
                      },
                      {
                        "assignments": [
                          19617
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19617,
                            "mutability": "mutable",
                            "name": "liquidity",
                            "nameLocation": "5960:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19718,
                            "src": "5952:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19616,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5952:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19624,
                        "initialValue": {
                          "baseExpression": {
                            "id": 19618,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23237,
                            "src": "5972:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 19623,
                          "indexExpression": {
                            "arguments": [
                              {
                                "id": 19621,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "5990:4:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_FranchisedHybridPool_$21279",
                                  "typeString": "contract FranchisedHybridPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_FranchisedHybridPool_$21279",
                                  "typeString": "contract FranchisedHybridPool"
                                }
                              ],
                              "id": 19620,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "5982:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 19619,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "5982:7:54",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 19622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5982:13:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5972:24:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5952:44:54"
                      },
                      {
                        "assignments": [
                          19626
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19626,
                            "mutability": "mutable",
                            "name": "amount0",
                            "nameLocation": "6015:7:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19718,
                            "src": "6007:15:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19625,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6007:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19633,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19629,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 19627,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19617,
                                  "src": "6026:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 19628,
                                  "name": "balance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19606,
                                  "src": "6038:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6026:20:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 19630,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6025:22:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 19631,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19613,
                            "src": "6050:12:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6025:37:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6007:55:54"
                      },
                      {
                        "assignments": [
                          19635
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19635,
                            "mutability": "mutable",
                            "name": "amount1",
                            "nameLocation": "6080:7:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19718,
                            "src": "6072:15:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19634,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6072:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19642,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19641,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19638,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 19636,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19617,
                                  "src": "6091:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 19637,
                                  "name": "balance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19608,
                                  "src": "6103:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6091:20:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 19639,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "6090:22:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 19640,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19613,
                            "src": "6115:12:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6090:37:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6072:55:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 19646,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "6152:4:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FranchisedHybridPool_$21279",
                                    "typeString": "contract FranchisedHybridPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FranchisedHybridPool_$21279",
                                    "typeString": "contract FranchisedHybridPool"
                                  }
                                ],
                                "id": 19645,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6144:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 19644,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6144:7:54",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19647,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6144:13:54",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19648,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19617,
                              "src": "6159:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19643,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23592,
                            "src": "6138:5:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 19649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6138:31:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19650,
                        "nodeType": "ExpressionStatement",
                        "src": "6138:31:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19652,
                              "name": "token0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19157,
                              "src": "6189:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19653,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19626,
                              "src": "6197:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 19654,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19588,
                              "src": "6206:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19655,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19590,
                              "src": "6217:11:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 19651,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20695,
                            "src": "6179:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 19656,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6179:50:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19657,
                        "nodeType": "ExpressionStatement",
                        "src": "6179:50:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19659,
                              "name": "token1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19159,
                              "src": "6249:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19660,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19635,
                              "src": "6257:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 19661,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19588,
                              "src": "6266:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19662,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19590,
                              "src": "6277:11:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 19658,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20695,
                            "src": "6239:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 19663,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6239:50:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19664,
                        "nodeType": "ExpressionStatement",
                        "src": "6239:50:54"
                      },
                      {
                        "expression": {
                          "id": 19670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19665,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19606,
                            "src": "6300:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 19667,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19157,
                                "src": "6321:6:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 19668,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19626,
                                "src": "6329:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 19666,
                              "name": "_toShare",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20535,
                              "src": "6312:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256) view returns (uint256)"
                              }
                            },
                            "id": 19669,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6312:25:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6300:37:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19671,
                        "nodeType": "ExpressionStatement",
                        "src": "6300:37:54"
                      },
                      {
                        "expression": {
                          "id": 19677,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19672,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19608,
                            "src": "6347:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 19674,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19159,
                                "src": "6368:6:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 19675,
                                "name": "amount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19635,
                                "src": "6376:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 19673,
                              "name": "_toShare",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20535,
                              "src": "6359:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256) view returns (uint256)"
                              }
                            },
                            "id": 19676,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6359:25:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6347:37:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19678,
                        "nodeType": "ExpressionStatement",
                        "src": "6347:37:54"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 19679,
                            "name": "_updateReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20404,
                            "src": "6395:15:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 19680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6395:17:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19681,
                        "nodeType": "ExpressionStatement",
                        "src": "6395:17:54"
                      },
                      {
                        "expression": {
                          "id": 19689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19682,
                            "name": "withdrawnAmounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19585,
                            "src": "6423:16:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "32",
                                "id": 19687,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6460:1:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                }
                              ],
                              "id": 19686,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "6442:17:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (struct IPool.TokenAmount memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 19684,
                                  "nodeType": "UserDefinedTypeName",
                                  "pathNode": {
                                    "id": 19683,
                                    "name": "TokenAmount",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2449,
                                    "src": "6446:11:54"
                                  },
                                  "referencedDeclaration": 2449,
                                  "src": "6446:11:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                                    "typeString": "struct IPool.TokenAmount"
                                  }
                                },
                                "id": 19685,
                                "nodeType": "ArrayTypeName",
                                "src": "6446:13:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                                  "typeString": "struct IPool.TokenAmount[]"
                                }
                              }
                            },
                            "id": 19688,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6442:20:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory[] memory"
                            }
                          },
                          "src": "6423:39:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct IPool.TokenAmount memory[] memory"
                          }
                        },
                        "id": 19690,
                        "nodeType": "ExpressionStatement",
                        "src": "6423:39:54"
                      },
                      {
                        "expression": {
                          "id": 19698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 19691,
                              "name": "withdrawnAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19585,
                              "src": "6472:16:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IPool.TokenAmount memory[] memory"
                              }
                            },
                            "id": 19693,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 19692,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6489:1:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6472:19:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 19695,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19157,
                                "src": "6514:6:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 19696,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19626,
                                "src": "6530:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 19694,
                              "name": "TokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2449,
                              "src": "6494:11:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_TokenAmount_$2449_storage_ptr_$",
                                "typeString": "type(struct IPool.TokenAmount storage pointer)"
                              }
                            },
                            "id": 19697,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "token",
                              "amount"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "6494:45:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory"
                            }
                          },
                          "src": "6472:67:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                            "typeString": "struct IPool.TokenAmount memory"
                          }
                        },
                        "id": 19699,
                        "nodeType": "ExpressionStatement",
                        "src": "6472:67:54"
                      },
                      {
                        "expression": {
                          "id": 19707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 19700,
                              "name": "withdrawnAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19585,
                              "src": "6549:16:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct IPool.TokenAmount memory[] memory"
                              }
                            },
                            "id": 19702,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 19701,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6566:1:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6549:19:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 19704,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19159,
                                "src": "6591:6:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 19705,
                                "name": "amount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19635,
                                "src": "6607:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 19703,
                              "name": "TokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2449,
                              "src": "6571:11:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_TokenAmount_$2449_storage_ptr_$",
                                "typeString": "type(struct IPool.TokenAmount storage pointer)"
                              }
                            },
                            "id": 19706,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "token",
                              "amount"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "6571:45:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory"
                            }
                          },
                          "src": "6549:67:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                            "typeString": "struct IPool.TokenAmount memory"
                          }
                        },
                        "id": 19708,
                        "nodeType": "ExpressionStatement",
                        "src": "6549:67:54"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 19710,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "6637:3:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 19711,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "6637:10:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19712,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19626,
                              "src": "6649:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 19713,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19635,
                              "src": "6658:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 19714,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19588,
                              "src": "6667:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19715,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19617,
                              "src": "6678:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19709,
                            "name": "Burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19126,
                            "src": "6632:4:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address,uint256)"
                            }
                          },
                          "id": 19716,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6632:56:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19717,
                        "nodeType": "EmitStatement",
                        "src": "6627:61:54"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19575,
                    "nodeType": "StructuredDocumentation",
                    "src": "5490:115:54",
                    "text": "@dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens."
                  },
                  "functionSelector": "2a07b6c7",
                  "id": 19719,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 19581,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 19580,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 19202,
                        "src": "5661:4:54"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5661:4:54"
                    }
                  ],
                  "name": "burn",
                  "nameLocation": "5619:4:54",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19579,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5652:8:54"
                  },
                  "parameters": {
                    "id": 19578,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19577,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5639:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19719,
                        "src": "5624:19:54",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 19576,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5624:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5623:21:54"
                  },
                  "returnParameters": {
                    "id": 19586,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19585,
                        "mutability": "mutable",
                        "name": "withdrawnAmounts",
                        "nameLocation": "5702:16:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19719,
                        "src": "5675:43:54",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IPool.TokenAmount[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 19583,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 19582,
                              "name": "IPool.TokenAmount",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2449,
                              "src": "5675:17:54"
                            },
                            "referencedDeclaration": 2449,
                            "src": "5675:17:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                              "typeString": "struct IPool.TokenAmount"
                            }
                          },
                          "id": 19584,
                          "nodeType": "ArrayTypeName",
                          "src": "5675:19:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                            "typeString": "struct IPool.TokenAmount[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5674:45:54"
                  },
                  "scope": 21279,
                  "src": "5610:1085:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2402
                  ],
                  "body": {
                    "id": 19918,
                    "nodeType": "Block",
                    "src": "6960:1659:54",
                    "statements": [
                      {
                        "assignments": [
                          19731,
                          19733,
                          19735
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19731,
                            "mutability": "mutable",
                            "name": "tokenOut",
                            "nameLocation": "6979:8:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19918,
                            "src": "6971:16:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19730,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6971:7:54",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19733,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "6997:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19918,
                            "src": "6989:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19732,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6989:7:54",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19735,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "7013:11:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19918,
                            "src": "7008:16:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 19734,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "7008:4:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19747,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 19738,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19722,
                              "src": "7039:4:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 19740,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7046:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19739,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7046:7:54",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 19742,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7055:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19741,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7055:7:54",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 19744,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7064:4:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 19743,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7064:4:54",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 19745,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7045:24:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 19736,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "7028:3:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 19737,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "7028:10:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 19746,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7028:42:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_bool_$",
                            "typeString": "tuple(address payable,address payable,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6970:100:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 19749,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19733,
                              "src": "7096:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 19748,
                            "name": "_checkWhiteList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23628,
                            "src": "7080:15:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 19750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7080:26:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19751,
                        "nodeType": "ExpressionStatement",
                        "src": "7080:26:54"
                      },
                      {
                        "assignments": [
                          19753,
                          19755
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19753,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "7125:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19918,
                            "src": "7117:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19752,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7117:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19755,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "7144:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19918,
                            "src": "7136:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19754,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7136:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19758,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 19756,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20355,
                            "src": "7157:12:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 19757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7157:14:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7116:55:54"
                      },
                      {
                        "assignments": [
                          19760,
                          19762
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19760,
                            "mutability": "mutable",
                            "name": "balance0",
                            "nameLocation": "7190:8:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19918,
                            "src": "7182:16:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19759,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7182:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19762,
                            "mutability": "mutable",
                            "name": "balance1",
                            "nameLocation": "7208:8:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19918,
                            "src": "7200:16:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19761,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7200:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19765,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 19763,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20430,
                            "src": "7220:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 19764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7220:10:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7181:49:54"
                      },
                      {
                        "assignments": [
                          19767
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19767,
                            "mutability": "mutable",
                            "name": "_totalSupply",
                            "nameLocation": "7248:12:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19918,
                            "src": "7240:20:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19766,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7240:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19769,
                        "initialValue": {
                          "id": 19768,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23232,
                          "src": "7263:11:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7240:34:54"
                      },
                      {
                        "assignments": [
                          19771
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19771,
                            "mutability": "mutable",
                            "name": "liquidity",
                            "nameLocation": "7292:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19918,
                            "src": "7284:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19770,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7284:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19778,
                        "initialValue": {
                          "baseExpression": {
                            "id": 19772,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23237,
                            "src": "7304:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 19777,
                          "indexExpression": {
                            "arguments": [
                              {
                                "id": 19775,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "7322:4:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_FranchisedHybridPool_$21279",
                                  "typeString": "contract FranchisedHybridPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_FranchisedHybridPool_$21279",
                                  "typeString": "contract FranchisedHybridPool"
                                }
                              ],
                              "id": 19774,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7314:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 19773,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "7314:7:54",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 19776,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7314:13:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7304:24:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7284:44:54"
                      },
                      {
                        "assignments": [
                          19780
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19780,
                            "mutability": "mutable",
                            "name": "amount0",
                            "nameLocation": "7347:7:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19918,
                            "src": "7339:15:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19779,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7339:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19787,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19786,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19783,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 19781,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19771,
                                  "src": "7358:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 19782,
                                  "name": "balance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19760,
                                  "src": "7370:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7358:20:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 19784,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7357:22:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 19785,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19767,
                            "src": "7382:12:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7357:37:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7339:55:54"
                      },
                      {
                        "assignments": [
                          19789
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19789,
                            "mutability": "mutable",
                            "name": "amount1",
                            "nameLocation": "7412:7:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 19918,
                            "src": "7404:15:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19788,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7404:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19796,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19795,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19792,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 19790,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19771,
                                  "src": "7423:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 19791,
                                  "name": "balance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19762,
                                  "src": "7435:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7423:20:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 19793,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "7422:22:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 19794,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19767,
                            "src": "7447:12:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7422:37:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7404:55:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 19800,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "7484:4:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FranchisedHybridPool_$21279",
                                    "typeString": "contract FranchisedHybridPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FranchisedHybridPool_$21279",
                                    "typeString": "contract FranchisedHybridPool"
                                  }
                                ],
                                "id": 19799,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7476:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 19798,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7476:7:54",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 19801,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7476:13:54",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19802,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19771,
                              "src": "7491:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19797,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23592,
                            "src": "7470:5:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 19803,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7470:31:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19804,
                        "nodeType": "ExpressionStatement",
                        "src": "7470:31:54"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 19807,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 19805,
                            "name": "tokenOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19731,
                            "src": "7516:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 19806,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19159,
                            "src": "7528:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7516:18:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 19904,
                          "nodeType": "Block",
                          "src": "8061:454:54",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 19856,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 19854,
                                      "name": "tokenOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19731,
                                      "src": "8131:8:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 19855,
                                      "name": "token0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19157,
                                      "src": "8143:6:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "8131:18:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e56414c49445f4f55545055545f544f4b454e",
                                    "id": 19857,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8151:22:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831",
                                      "typeString": "literal_string \"INVALID_OUTPUT_TOKEN\""
                                    },
                                    "value": "INVALID_OUTPUT_TOKEN"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_411550f09fc97150ffd69885365960aa8912c2234dbc9ba30083f6f2c6675831",
                                      "typeString": "literal_string \"INVALID_OUTPUT_TOKEN\""
                                    }
                                  ],
                                  "id": 19853,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "8123:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 19858,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8123:51:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19859,
                              "nodeType": "ExpressionStatement",
                              "src": "8123:51:54"
                            },
                            {
                              "assignments": [
                                19861
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19861,
                                  "mutability": "mutable",
                                  "name": "fee",
                                  "nameLocation": "8196:3:54",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19904,
                                  "src": "8188:11:54",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 19860,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8188:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19866,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 19863,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19159,
                                    "src": "8213:6:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 19864,
                                    "name": "amount1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19789,
                                    "src": "8221:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 19862,
                                  "name": "_handleFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21063,
                                  "src": "8202:10:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) returns (uint256)"
                                  }
                                },
                                "id": 19865,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8202:27:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8188:41:54"
                            },
                            {
                              "expression": {
                                "id": 19880,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 19867,
                                  "name": "amount0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19780,
                                  "src": "8243:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19871,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 19869,
                                        "name": "amount1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19789,
                                        "src": "8268:7:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 19870,
                                        "name": "fee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19861,
                                        "src": "8278:3:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8268:13:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19874,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 19872,
                                        "name": "_reserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19753,
                                        "src": "8283:9:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 19873,
                                        "name": "amount0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19780,
                                        "src": "8295:7:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8283:19:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19877,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 19875,
                                        "name": "_reserve1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19755,
                                        "src": "8304:9:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 19876,
                                        "name": "amount1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19789,
                                        "src": "8316:7:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "8304:19:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 19878,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8325:5:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 19868,
                                    "name": "_getAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20627,
                                    "src": "8254:13:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256,bool) view returns (uint256)"
                                    }
                                  },
                                  "id": 19879,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8254:77:54",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8243:88:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19881,
                              "nodeType": "ExpressionStatement",
                              "src": "8243:88:54"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 19883,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19157,
                                    "src": "8355:6:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 19884,
                                    "name": "amount0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19780,
                                    "src": "8363:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 19885,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19733,
                                    "src": "8372:9:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 19886,
                                    "name": "unwrapBento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19735,
                                    "src": "8383:11:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 19882,
                                  "name": "_transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20695,
                                  "src": "8345:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,address,bool)"
                                  }
                                },
                                "id": 19887,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8345:50:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19888,
                              "nodeType": "ExpressionStatement",
                              "src": "8345:50:54"
                            },
                            {
                              "expression": {
                                "id": 19894,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 19889,
                                  "name": "balance1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19762,
                                  "src": "8409:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 19891,
                                      "name": "token1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19159,
                                      "src": "8430:6:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 19892,
                                      "name": "amount1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19789,
                                      "src": "8438:7:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 19890,
                                    "name": "_toShare",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20535,
                                    "src": "8421:8:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (address,uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 19893,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8421:25:54",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8409:37:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19895,
                              "nodeType": "ExpressionStatement",
                              "src": "8409:37:54"
                            },
                            {
                              "expression": {
                                "id": 19898,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 19896,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19728,
                                  "src": "8460:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 19897,
                                  "name": "amount0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19780,
                                  "src": "8472:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8460:19:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19899,
                              "nodeType": "ExpressionStatement",
                              "src": "8460:19:54"
                            },
                            {
                              "expression": {
                                "id": 19902,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 19900,
                                  "name": "amount1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19789,
                                  "src": "8493:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "30",
                                  "id": 19901,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8503:1:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8493:11:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19903,
                              "nodeType": "ExpressionStatement",
                              "src": "8493:11:54"
                            }
                          ]
                        },
                        "id": 19905,
                        "nodeType": "IfStatement",
                        "src": "7512:1003:54",
                        "trueBody": {
                          "id": 19852,
                          "nodeType": "Block",
                          "src": "7536:519:54",
                          "statements": [
                            {
                              "assignments": [
                                19809
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19809,
                                  "mutability": "mutable",
                                  "name": "fee",
                                  "nameLocation": "7737:3:54",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 19852,
                                  "src": "7729:11:54",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 19808,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7729:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19814,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 19811,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19157,
                                    "src": "7754:6:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 19812,
                                    "name": "amount0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19780,
                                    "src": "7762:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 19810,
                                  "name": "_handleFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21063,
                                  "src": "7743:10:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) returns (uint256)"
                                  }
                                },
                                "id": 19813,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7743:27:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7729:41:54"
                            },
                            {
                              "expression": {
                                "id": 19828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 19815,
                                  "name": "amount1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19789,
                                  "src": "7784:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19819,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 19817,
                                        "name": "amount0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19780,
                                        "src": "7809:7:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 19818,
                                        "name": "fee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19809,
                                        "src": "7819:3:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7809:13:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19822,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 19820,
                                        "name": "_reserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19753,
                                        "src": "7824:9:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 19821,
                                        "name": "amount0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19780,
                                        "src": "7836:7:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7824:19:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19825,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 19823,
                                        "name": "_reserve1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19755,
                                        "src": "7845:9:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 19824,
                                        "name": "amount1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19789,
                                        "src": "7857:7:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7845:19:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "74727565",
                                      "id": 19826,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7866:4:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 19816,
                                    "name": "_getAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20627,
                                    "src": "7795:13:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256,bool) view returns (uint256)"
                                    }
                                  },
                                  "id": 19827,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7795:76:54",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7784:87:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19829,
                              "nodeType": "ExpressionStatement",
                              "src": "7784:87:54"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 19831,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19159,
                                    "src": "7895:6:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 19832,
                                    "name": "amount1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19789,
                                    "src": "7903:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 19833,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19733,
                                    "src": "7912:9:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 19834,
                                    "name": "unwrapBento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19735,
                                    "src": "7923:11:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 19830,
                                  "name": "_transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20695,
                                  "src": "7885:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,address,bool)"
                                  }
                                },
                                "id": 19835,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7885:50:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19836,
                              "nodeType": "ExpressionStatement",
                              "src": "7885:50:54"
                            },
                            {
                              "expression": {
                                "id": 19842,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 19837,
                                  "name": "balance0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19760,
                                  "src": "7949:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 19839,
                                      "name": "token0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19157,
                                      "src": "7970:6:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 19840,
                                      "name": "amount0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19780,
                                      "src": "7978:7:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 19838,
                                    "name": "_toShare",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20535,
                                    "src": "7961:8:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (address,uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 19841,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7961:25:54",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7949:37:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19843,
                              "nodeType": "ExpressionStatement",
                              "src": "7949:37:54"
                            },
                            {
                              "expression": {
                                "id": 19846,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 19844,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19728,
                                  "src": "8000:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 19845,
                                  "name": "amount1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19789,
                                  "src": "8012:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8000:19:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19847,
                              "nodeType": "ExpressionStatement",
                              "src": "8000:19:54"
                            },
                            {
                              "expression": {
                                "id": 19850,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 19848,
                                  "name": "amount0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19780,
                                  "src": "8033:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "30",
                                  "id": 19849,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8043:1:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "8033:11:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19851,
                              "nodeType": "ExpressionStatement",
                              "src": "8033:11:54"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 19906,
                            "name": "_updateReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20404,
                            "src": "8524:15:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 19907,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8524:17:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19908,
                        "nodeType": "ExpressionStatement",
                        "src": "8524:17:54"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 19910,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "8561:3:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 19911,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "8561:10:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19912,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19780,
                              "src": "8573:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 19913,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19789,
                              "src": "8582:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 19914,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19733,
                              "src": "8591:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 19915,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19771,
                              "src": "8602:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 19909,
                            "name": "Burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19126,
                            "src": "8556:4:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256,address,uint256)"
                            }
                          },
                          "id": 19916,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8556:56:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 19917,
                        "nodeType": "EmitStatement",
                        "src": "8551:61:54"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19720,
                    "nodeType": "StructuredDocumentation",
                    "src": "6701:164:54",
                    "text": "@dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\n - i.e., the user gets a single token out by burning LP tokens."
                  },
                  "functionSelector": "af8c09bf",
                  "id": 19919,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 19726,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 19725,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 19202,
                        "src": "6927:4:54"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6927:4:54"
                    }
                  ],
                  "name": "burnSingle",
                  "nameLocation": "6879:10:54",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19724,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6918:8:54"
                  },
                  "parameters": {
                    "id": 19723,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19722,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6905:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19919,
                        "src": "6890:19:54",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 19721,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6890:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6889:21:54"
                  },
                  "returnParameters": {
                    "id": 19729,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19728,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "6949:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 19919,
                        "src": "6941:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19727,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6941:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6940:19:54"
                  },
                  "scope": 21279,
                  "src": "6870:1749:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2368
                  ],
                  "body": {
                    "id": 20061,
                    "nodeType": "Block",
                    "src": "8831:1058:54",
                    "statements": [
                      {
                        "assignments": [
                          19931,
                          19933,
                          19935
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19931,
                            "mutability": "mutable",
                            "name": "tokenIn",
                            "nameLocation": "8850:7:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20061,
                            "src": "8842:15:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19930,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8842:7:54",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19933,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "8867:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20061,
                            "src": "8859:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19932,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8859:7:54",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19935,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "8883:11:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20061,
                            "src": "8878:16:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 19934,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "8878:4:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19947,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 19938,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19922,
                              "src": "8909:4:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 19940,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8916:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19939,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8916:7:54",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 19942,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8925:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 19941,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8925:7:54",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 19944,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8934:4:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 19943,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8934:4:54",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 19945,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "8915:24:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 19936,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "8898:3:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 19937,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "8898:10:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 19946,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8898:42:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_bool_$",
                            "typeString": "tuple(address payable,address payable,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8841:99:54"
                      },
                      {
                        "condition": {
                          "id": 19948,
                          "name": "level2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23230,
                          "src": "8954:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19953,
                        "nodeType": "IfStatement",
                        "src": "8950:38:54",
                        "trueBody": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 19950,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19933,
                                "src": "8978:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 19949,
                              "name": "_checkWhiteList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23628,
                              "src": "8962:15:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                                "typeString": "function (address) view"
                              }
                            },
                            "id": 19951,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8962:26:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 19952,
                          "nodeType": "ExpressionStatement",
                          "src": "8962:26:54"
                        }
                      },
                      {
                        "assignments": [
                          19955,
                          19957
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19955,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "9007:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20061,
                            "src": "8999:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19954,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8999:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19957,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "9026:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20061,
                            "src": "9018:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19956,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9018:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19960,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 19958,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20355,
                            "src": "9039:12:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 19959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9039:14:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8998:55:54"
                      },
                      {
                        "assignments": [
                          19962,
                          19964
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19962,
                            "mutability": "mutable",
                            "name": "balance0",
                            "nameLocation": "9072:8:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20061,
                            "src": "9064:16:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19961,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9064:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 19964,
                            "mutability": "mutable",
                            "name": "balance1",
                            "nameLocation": "9090:8:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20061,
                            "src": "9082:16:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19963,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9082:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19967,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 19965,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20430,
                            "src": "9102:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 19966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9102:10:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9063:49:54"
                      },
                      {
                        "assignments": [
                          19969
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19969,
                            "mutability": "mutable",
                            "name": "amountIn",
                            "nameLocation": "9130:8:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20061,
                            "src": "9122:16:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 19968,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9122:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19970,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9122:16:54"
                      },
                      {
                        "assignments": [
                          19972
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 19972,
                            "mutability": "mutable",
                            "name": "tokenOut",
                            "nameLocation": "9156:8:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20061,
                            "src": "9148:16:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 19971,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9148:7:54",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 19973,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9148:16:54"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 19976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 19974,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19931,
                            "src": "9179:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 19975,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19157,
                            "src": "9190:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "9179:17:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 20041,
                          "nodeType": "Block",
                          "src": "9431:291:54",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 20009,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 20007,
                                      "name": "tokenIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19931,
                                      "src": "9453:7:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 20008,
                                      "name": "token1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19159,
                                      "src": "9464:6:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "9453:17:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e56414c49445f494e5055545f544f4b454e",
                                    "id": 20010,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9472:21:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                      "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                    },
                                    "value": "INVALID_INPUT_TOKEN"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                      "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                    }
                                  ],
                                  "id": 20006,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "9445:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 20011,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9445:49:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20012,
                              "nodeType": "ExpressionStatement",
                              "src": "9445:49:54"
                            },
                            {
                              "expression": {
                                "id": 20015,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20013,
                                  "name": "tokenOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19972,
                                  "src": "9508:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 20014,
                                  "name": "token0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19157,
                                  "src": "9519:6:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "9508:17:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 20016,
                              "nodeType": "ExpressionStatement",
                              "src": "9508:17:54"
                            },
                            {
                              "expression": {
                                "id": 20021,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20017,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19969,
                                  "src": "9539:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20020,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 20018,
                                    "name": "balance1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19964,
                                    "src": "9550:8:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 20019,
                                    "name": "_reserve1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19957,
                                    "src": "9561:9:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "9550:20:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9539:31:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20022,
                              "nodeType": "ExpressionStatement",
                              "src": "9539:31:54"
                            },
                            {
                              "assignments": [
                                20024
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 20024,
                                  "mutability": "mutable",
                                  "name": "fee",
                                  "nameLocation": "9592:3:54",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 20041,
                                  "src": "9584:11:54",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 20023,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9584:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 20029,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 20026,
                                    "name": "tokenIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19931,
                                    "src": "9609:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 20027,
                                    "name": "amountIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19969,
                                    "src": "9618:8:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 20025,
                                  "name": "_handleFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21063,
                                  "src": "9598:10:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) returns (uint256)"
                                  }
                                },
                                "id": 20028,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9598:29:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9584:43:54"
                            },
                            {
                              "expression": {
                                "id": 20039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20030,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19928,
                                  "src": "9641:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 20034,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 20032,
                                        "name": "amountIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19969,
                                        "src": "9667:8:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 20033,
                                        "name": "fee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20024,
                                        "src": "9678:3:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9667:14:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 20035,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19955,
                                      "src": "9683:9:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 20036,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19957,
                                      "src": "9694:9:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 20037,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9705:5:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 20031,
                                    "name": "_getAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20627,
                                    "src": "9653:13:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256,bool) view returns (uint256)"
                                    }
                                  },
                                  "id": 20038,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9653:58:54",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9641:70:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20040,
                              "nodeType": "ExpressionStatement",
                              "src": "9641:70:54"
                            }
                          ]
                        },
                        "id": 20042,
                        "nodeType": "IfStatement",
                        "src": "9175:547:54",
                        "trueBody": {
                          "id": 20005,
                          "nodeType": "Block",
                          "src": "9198:227:54",
                          "statements": [
                            {
                              "expression": {
                                "id": 19979,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 19977,
                                  "name": "tokenOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19972,
                                  "src": "9212:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 19978,
                                  "name": "token1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19159,
                                  "src": "9223:6:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "9212:17:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 19980,
                              "nodeType": "ExpressionStatement",
                              "src": "9212:17:54"
                            },
                            {
                              "expression": {
                                "id": 19985,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 19981,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19969,
                                  "src": "9243:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 19984,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 19982,
                                    "name": "balance0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19962,
                                    "src": "9254:8:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "id": 19983,
                                    "name": "_reserve0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19955,
                                    "src": "9265:9:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "9254:20:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9243:31:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19986,
                              "nodeType": "ExpressionStatement",
                              "src": "9243:31:54"
                            },
                            {
                              "assignments": [
                                19988
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 19988,
                                  "mutability": "mutable",
                                  "name": "fee",
                                  "nameLocation": "9296:3:54",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 20005,
                                  "src": "9288:11:54",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 19987,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9288:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 19993,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 19990,
                                    "name": "tokenIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19931,
                                    "src": "9313:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 19991,
                                    "name": "amountIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19969,
                                    "src": "9322:8:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 19989,
                                  "name": "_handleFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21063,
                                  "src": "9302:10:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) returns (uint256)"
                                  }
                                },
                                "id": 19992,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9302:29:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9288:43:54"
                            },
                            {
                              "expression": {
                                "id": 20003,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 19994,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19928,
                                  "src": "9345:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19998,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 19996,
                                        "name": "amountIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19969,
                                        "src": "9371:8:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 19997,
                                        "name": "fee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19988,
                                        "src": "9382:3:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "9371:14:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 19999,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19955,
                                      "src": "9387:9:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 20000,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19957,
                                      "src": "9398:9:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "74727565",
                                      "id": 20001,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9409:4:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 19995,
                                    "name": "_getAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20627,
                                    "src": "9357:13:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256,bool) view returns (uint256)"
                                    }
                                  },
                                  "id": 20002,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9357:57:54",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "9345:69:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20004,
                              "nodeType": "ExpressionStatement",
                              "src": "9345:69:54"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 20044,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19972,
                              "src": "9741:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20045,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19928,
                              "src": "9751:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 20046,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19933,
                              "src": "9762:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20047,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19935,
                              "src": "9773:11:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 20043,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20695,
                            "src": "9731:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 20048,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9731:54:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20049,
                        "nodeType": "ExpressionStatement",
                        "src": "9731:54:54"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 20050,
                            "name": "_updateReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20404,
                            "src": "9795:15:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 20051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9795:17:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20052,
                        "nodeType": "ExpressionStatement",
                        "src": "9795:17:54"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 20054,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19933,
                              "src": "9832:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20055,
                              "name": "tokenIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19931,
                              "src": "9843:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20056,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19972,
                              "src": "9852:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20057,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19969,
                              "src": "9862:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 20058,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19928,
                              "src": "9872:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20053,
                            "name": "Swap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2444,
                            "src": "9827:4:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 20059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9827:55:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20060,
                        "nodeType": "EmitStatement",
                        "src": "9822:60:54"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 19920,
                    "nodeType": "StructuredDocumentation",
                    "src": "8625:117:54",
                    "text": "@dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage."
                  },
                  "functionSelector": "627dd56a",
                  "id": 20062,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 19926,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 19925,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 19202,
                        "src": "8798:4:54"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8798:4:54"
                    }
                  ],
                  "name": "swap",
                  "nameLocation": "8756:4:54",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 19924,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8789:8:54"
                  },
                  "parameters": {
                    "id": 19923,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19922,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "8776:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20062,
                        "src": "8761:19:54",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 19921,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "8761:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8760:21:54"
                  },
                  "returnParameters": {
                    "id": 19929,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 19928,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "8820:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20062,
                        "src": "8812:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 19927,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8812:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8811:19:54"
                  },
                  "scope": 21279,
                  "src": "8747:1142:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2376
                  ],
                  "body": {
                    "id": 20263,
                    "nodeType": "Block",
                    "src": "10120:1526:54",
                    "statements": [
                      {
                        "assignments": [
                          20074,
                          20076,
                          20078,
                          20080,
                          20082
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20074,
                            "mutability": "mutable",
                            "name": "tokenIn",
                            "nameLocation": "10139:7:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20263,
                            "src": "10131:15:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 20073,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10131:7:54",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 20076,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "10156:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20263,
                            "src": "10148:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 20075,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10148:7:54",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 20078,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "10172:11:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20263,
                            "src": "10167:16:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 20077,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "10167:4:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 20080,
                            "mutability": "mutable",
                            "name": "amountIn",
                            "nameLocation": "10193:8:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20263,
                            "src": "10185:16:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20079,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10185:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 20082,
                            "mutability": "mutable",
                            "name": "context",
                            "nameLocation": "10216:7:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20263,
                            "src": "10203:20:54",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 20081,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "10203:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20098,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 20085,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20065,
                              "src": "10251:4:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 20087,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10270:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 20086,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10270:7:54",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 20089,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10279:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 20088,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10279:7:54",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 20091,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10288:4:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 20090,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10288:4:54",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 20093,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10294:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 20092,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10294:7:54",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 20095,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10303:5:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 20094,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10303:5:54",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 20096,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "10269:40:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool),type(uint256),type(bytes storage pointer))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool),type(uint256),type(bytes storage pointer))"
                              }
                            ],
                            "expression": {
                              "id": 20083,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "10227:3:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 20084,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "10227:10:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 20097,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10227:92:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_bool_$_t_uint256_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(address payable,address payable,bool,uint256,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10130:189:54"
                      },
                      {
                        "condition": {
                          "id": 20099,
                          "name": "level2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23230,
                          "src": "10333:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20104,
                        "nodeType": "IfStatement",
                        "src": "10329:38:54",
                        "trueBody": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 20101,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20076,
                                "src": "10357:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 20100,
                              "name": "_checkWhiteList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23628,
                              "src": "10341:15:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                                "typeString": "function (address) view"
                              }
                            },
                            "id": 20102,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10341:26:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 20103,
                          "nodeType": "ExpressionStatement",
                          "src": "10341:26:54"
                        }
                      },
                      {
                        "assignments": [
                          20106,
                          20108
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20106,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "10386:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20263,
                            "src": "10378:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20105,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10378:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 20108,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "10405:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20263,
                            "src": "10397:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20107,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10397:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20111,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 20109,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20355,
                            "src": "10418:12:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 20110,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10418:14:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10377:55:54"
                      },
                      {
                        "assignments": [
                          20113
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20113,
                            "mutability": "mutable",
                            "name": "tokenOut",
                            "nameLocation": "10450:8:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20263,
                            "src": "10442:16:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 20112,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10442:7:54",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20114,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10442:16:54"
                      },
                      {
                        "assignments": [
                          20116
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20116,
                            "mutability": "mutable",
                            "name": "fee",
                            "nameLocation": "10476:3:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20263,
                            "src": "10468:11:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20115,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10468:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20117,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10468:11:54"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 20120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 20118,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20074,
                            "src": "10494:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 20119,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19157,
                            "src": "10505:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "10494:17:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 20243,
                          "nodeType": "Block",
                          "src": "10974:519:54",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 20182,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 20180,
                                      "name": "tokenIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20074,
                                      "src": "10996:7:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 20181,
                                      "name": "token1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19159,
                                      "src": "11007:6:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "10996:17:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e56414c49445f494e5055545f544f4b454e",
                                    "id": 20183,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11015:21:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                      "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                    },
                                    "value": "INVALID_INPUT_TOKEN"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                      "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                    }
                                  ],
                                  "id": 20179,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10988:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 20184,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10988:49:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20185,
                              "nodeType": "ExpressionStatement",
                              "src": "10988:49:54"
                            },
                            {
                              "expression": {
                                "id": 20188,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20186,
                                  "name": "tokenOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20113,
                                  "src": "11051:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 20187,
                                  "name": "token0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19157,
                                  "src": "11062:6:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "11051:17:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 20189,
                              "nodeType": "ExpressionStatement",
                              "src": "11051:17:54"
                            },
                            {
                              "expression": {
                                "id": 20195,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20190,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20080,
                                  "src": "11082:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 20192,
                                      "name": "token1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19159,
                                      "src": "11103:6:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 20193,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20080,
                                      "src": "11111:8:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 20191,
                                    "name": "_toAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20500,
                                    "src": "11093:9:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (address,uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 20194,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11093:27:54",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11082:38:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20196,
                              "nodeType": "ExpressionStatement",
                              "src": "11082:38:54"
                            },
                            {
                              "expression": {
                                "id": 20204,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20197,
                                  "name": "fee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20116,
                                  "src": "11134:3:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20203,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 20200,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 20198,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20080,
                                          "src": "11141:8:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 20199,
                                          "name": "swapFee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19149,
                                          "src": "11152:7:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "11141:18:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 20201,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "11140:20:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 20202,
                                    "name": "MAX_FEE",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19147,
                                    "src": "11163:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "11140:30:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11134:36:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20205,
                              "nodeType": "ExpressionStatement",
                              "src": "11134:36:54"
                            },
                            {
                              "expression": {
                                "id": 20215,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20206,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20071,
                                  "src": "11184:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 20210,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 20208,
                                        "name": "amountIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20080,
                                        "src": "11210:8:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 20209,
                                        "name": "fee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20116,
                                        "src": "11221:3:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "11210:14:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 20211,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20106,
                                      "src": "11226:9:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 20212,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20108,
                                      "src": "11237:9:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 20213,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11248:5:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 20207,
                                    "name": "_getAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20627,
                                    "src": "11196:13:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256,bool) view returns (uint256)"
                                    }
                                  },
                                  "id": 20214,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11196:58:54",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11184:70:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20216,
                              "nodeType": "ExpressionStatement",
                              "src": "11184:70:54"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 20218,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19157,
                                    "src": "11281:6:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 20219,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20076,
                                    "src": "11289:9:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 20220,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20071,
                                    "src": "11300:9:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 20221,
                                    "name": "context",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20082,
                                    "src": "11311:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 20222,
                                    "name": "unwrapBento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20078,
                                    "src": "11320:11:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 20217,
                                  "name": "_processSwap",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20325,
                                  "src": "11268:12:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                                    "typeString": "function (address,address,uint256,bytes memory,bool)"
                                  }
                                },
                                "id": 20223,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11268:64:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20224,
                              "nodeType": "ExpressionStatement",
                              "src": "11268:64:54"
                            },
                            {
                              "assignments": [
                                20226
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 20226,
                                  "mutability": "mutable",
                                  "name": "balance1",
                                  "nameLocation": "11354:8:54",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 20243,
                                  "src": "11346:16:54",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 20225,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11346:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 20233,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 20228,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19159,
                                    "src": "11375:6:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 20230,
                                        "name": "token1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19159,
                                        "src": "11393:6:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 20229,
                                      "name": "__balance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20465,
                                      "src": "11383:9:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address) view returns (uint256)"
                                      }
                                    },
                                    "id": 20231,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11383:17:54",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 20227,
                                  "name": "_toAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20500,
                                  "src": "11365:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) view returns (uint256)"
                                  }
                                },
                                "id": 20232,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11365:36:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "11346:55:54"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 20239,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 20237,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 20235,
                                        "name": "balance1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20226,
                                        "src": "11423:8:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 20236,
                                        "name": "_reserve1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20108,
                                        "src": "11434:9:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "11423:20:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "id": 20238,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20080,
                                      "src": "11447:8:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11423:32:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e53554646494349454e545f414d4f554e545f494e",
                                    "id": 20240,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11457:24:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9",
                                      "typeString": "literal_string \"INSUFFICIENT_AMOUNT_IN\""
                                    },
                                    "value": "INSUFFICIENT_AMOUNT_IN"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9",
                                      "typeString": "literal_string \"INSUFFICIENT_AMOUNT_IN\""
                                    }
                                  ],
                                  "id": 20234,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "11415:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 20241,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11415:67:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20242,
                              "nodeType": "ExpressionStatement",
                              "src": "11415:67:54"
                            }
                          ]
                        },
                        "id": 20244,
                        "nodeType": "IfStatement",
                        "src": "10490:1003:54",
                        "trueBody": {
                          "id": 20178,
                          "nodeType": "Block",
                          "src": "10513:455:54",
                          "statements": [
                            {
                              "expression": {
                                "id": 20123,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20121,
                                  "name": "tokenOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20113,
                                  "src": "10527:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 20122,
                                  "name": "token1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19159,
                                  "src": "10538:6:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "10527:17:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 20124,
                              "nodeType": "ExpressionStatement",
                              "src": "10527:17:54"
                            },
                            {
                              "expression": {
                                "id": 20130,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20125,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20080,
                                  "src": "10558:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 20127,
                                      "name": "token0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19157,
                                      "src": "10579:6:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 20128,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20080,
                                      "src": "10587:8:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 20126,
                                    "name": "_toAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20500,
                                    "src": "10569:9:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (address,uint256) view returns (uint256)"
                                    }
                                  },
                                  "id": 20129,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10569:27:54",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10558:38:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20131,
                              "nodeType": "ExpressionStatement",
                              "src": "10558:38:54"
                            },
                            {
                              "expression": {
                                "id": 20139,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20132,
                                  "name": "fee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20116,
                                  "src": "10610:3:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20138,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 20135,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 20133,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20080,
                                          "src": "10617:8:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 20134,
                                          "name": "swapFee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19149,
                                          "src": "10628:7:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "10617:18:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 20136,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "10616:20:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 20137,
                                    "name": "MAX_FEE",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19147,
                                    "src": "10639:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10616:30:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10610:36:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20140,
                              "nodeType": "ExpressionStatement",
                              "src": "10610:36:54"
                            },
                            {
                              "expression": {
                                "id": 20150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20141,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20071,
                                  "src": "10660:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 20145,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 20143,
                                        "name": "amountIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20080,
                                        "src": "10686:8:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 20144,
                                        "name": "fee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20116,
                                        "src": "10697:3:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "10686:14:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 20146,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20106,
                                      "src": "10702:9:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 20147,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20108,
                                      "src": "10713:9:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "74727565",
                                      "id": 20148,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10724:4:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 20142,
                                    "name": "_getAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20627,
                                    "src": "10672:13:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256,bool) view returns (uint256)"
                                    }
                                  },
                                  "id": 20149,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10672:57:54",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10660:69:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20151,
                              "nodeType": "ExpressionStatement",
                              "src": "10660:69:54"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 20153,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19159,
                                    "src": "10756:6:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 20154,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20076,
                                    "src": "10764:9:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 20155,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20071,
                                    "src": "10775:9:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 20156,
                                    "name": "context",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20082,
                                    "src": "10786:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 20157,
                                    "name": "unwrapBento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20078,
                                    "src": "10795:11:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 20152,
                                  "name": "_processSwap",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20325,
                                  "src": "10743:12:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_bool_$returns$__$",
                                    "typeString": "function (address,address,uint256,bytes memory,bool)"
                                  }
                                },
                                "id": 20158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10743:64:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20159,
                              "nodeType": "ExpressionStatement",
                              "src": "10743:64:54"
                            },
                            {
                              "assignments": [
                                20161
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 20161,
                                  "mutability": "mutable",
                                  "name": "balance0",
                                  "nameLocation": "10829:8:54",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 20178,
                                  "src": "10821:16:54",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 20160,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10821:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 20168,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 20163,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19157,
                                    "src": "10850:6:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 20165,
                                        "name": "token0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19157,
                                        "src": "10868:6:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 20164,
                                      "name": "__balance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20465,
                                      "src": "10858:9:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address) view returns (uint256)"
                                      }
                                    },
                                    "id": 20166,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10858:17:54",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 20162,
                                  "name": "_toAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20500,
                                  "src": "10840:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) view returns (uint256)"
                                  }
                                },
                                "id": 20167,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10840:36:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10821:55:54"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 20174,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 20172,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 20170,
                                        "name": "balance0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20161,
                                        "src": "10898:8:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 20171,
                                        "name": "_reserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20106,
                                        "src": "10909:9:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "10898:20:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "id": 20173,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20080,
                                      "src": "10922:8:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10898:32:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e53554646494349454e545f414d4f554e545f494e",
                                    "id": 20175,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "10932:24:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9",
                                      "typeString": "literal_string \"INSUFFICIENT_AMOUNT_IN\""
                                    },
                                    "value": "INSUFFICIENT_AMOUNT_IN"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_3fca48643d5c8e993181f31dd48a800bfd562ad503eacb7ff7ae4dccdedbf6c9",
                                      "typeString": "literal_string \"INSUFFICIENT_AMOUNT_IN\""
                                    }
                                  ],
                                  "id": 20169,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "10890:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 20176,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10890:67:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20177,
                              "nodeType": "ExpressionStatement",
                              "src": "10890:67:54"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 20246,
                              "name": "tokenIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20074,
                              "src": "11512:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20247,
                              "name": "fee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20116,
                              "src": "11521:3:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 20248,
                              "name": "barFeeTo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19151,
                              "src": "11526:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 20249,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11536:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 20245,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20695,
                            "src": "11502:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 20250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11502:40:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20251,
                        "nodeType": "ExpressionStatement",
                        "src": "11502:40:54"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 20252,
                            "name": "_updateReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20404,
                            "src": "11552:15:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 20253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11552:17:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20254,
                        "nodeType": "ExpressionStatement",
                        "src": "11552:17:54"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 20256,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20076,
                              "src": "11589:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20257,
                              "name": "tokenIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20074,
                              "src": "11600:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20258,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20113,
                              "src": "11609:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20259,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20080,
                              "src": "11619:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 20260,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20071,
                              "src": "11629:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20255,
                            "name": "Swap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2444,
                            "src": "11584:4:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 20261,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11584:55:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20262,
                        "nodeType": "EmitStatement",
                        "src": "11579:60:54"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20063,
                    "nodeType": "StructuredDocumentation",
                    "src": "9895:131:54",
                    "text": "@dev Swaps one token for another with payload. The router must support swap callbacks and ensure there isn't too much slippage."
                  },
                  "functionSelector": "053da1c8",
                  "id": 20264,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 20069,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 20068,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 19202,
                        "src": "10087:4:54"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "10087:4:54"
                    }
                  ],
                  "name": "flashSwap",
                  "nameLocation": "10040:9:54",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 20067,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "10078:8:54"
                  },
                  "parameters": {
                    "id": 20066,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20065,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "10065:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20264,
                        "src": "10050:19:54",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 20064,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10050:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10049:21:54"
                  },
                  "returnParameters": {
                    "id": 20072,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20071,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "10109:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20264,
                        "src": "10101:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20070,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10101:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10100:19:54"
                  },
                  "scope": 21279,
                  "src": "10031:1615:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 20290,
                    "nodeType": "Block",
                    "src": "11735:175:54",
                    "statements": [
                      {
                        "assignments": [
                          null,
                          20269
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 20269,
                            "mutability": "mutable",
                            "name": "_barFee",
                            "nameLocation": "11761:7:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20290,
                            "src": "11748:20:54",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 20268,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "11748:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20279,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 20274,
                                      "name": "IMasterDeployer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2356,
                                      "src": "11821:15:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                        "typeString": "type(contract IMasterDeployer)"
                                      }
                                    },
                                    "id": 20275,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "barFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2324,
                                    "src": "11821:22:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_view$__$returns$_t_uint256_$",
                                      "typeString": "function IMasterDeployer.barFee() view returns (uint256)"
                                    }
                                  },
                                  "id": 20276,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "11821:31:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "expression": {
                                  "id": 20272,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "11798:3:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 20273,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "11798:22:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 20277,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11798:55:54",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 20270,
                              "name": "masterDeployer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19155,
                              "src": "11772:14:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 20271,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "11772:25:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 20278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11772:82:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11745:109:54"
                      },
                      {
                        "expression": {
                          "id": 20288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20280,
                            "name": "barFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19173,
                            "src": "11864:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 20283,
                                "name": "_barFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20269,
                                "src": "11884:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 20285,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "11894:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 20284,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "11894:7:54",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 20286,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "11893:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "expression": {
                                "id": 20281,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "11873:3:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 20282,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "11873:10:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 20287,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11873:30:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11864:39:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20289,
                        "nodeType": "ExpressionStatement",
                        "src": "11864:39:54"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20265,
                    "nodeType": "StructuredDocumentation",
                    "src": "11652:47:54",
                    "text": "@dev Updates `barFee` for Trident protocol."
                  },
                  "functionSelector": "92bc3219",
                  "id": 20291,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updateBarFee",
                  "nameLocation": "11713:12:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20266,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11725:2:54"
                  },
                  "returnParameters": {
                    "id": 20267,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11735:0:54"
                  },
                  "scope": 21279,
                  "src": "11704:206:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 20324,
                    "nodeType": "Block",
                    "src": "12079:148:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 20305,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20293,
                              "src": "12099:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20306,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20297,
                              "src": "12109:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 20307,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20295,
                              "src": "12120:2:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 20308,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20301,
                              "src": "12124:11:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 20304,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20695,
                            "src": "12089:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 20309,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12089:47:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20310,
                        "nodeType": "ExpressionStatement",
                        "src": "12089:47:54"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 20311,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20299,
                              "src": "12150:4:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 20312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "12150:11:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 20313,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12165:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12150:16:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20323,
                        "nodeType": "IfStatement",
                        "src": "12146:74:54",
                        "trueBody": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 20320,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20299,
                                "src": "12215:4:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 20316,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "12183:3:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 20317,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "12183:10:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 20315,
                                  "name": "ITridentCallee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2482,
                                  "src": "12168:14:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ITridentCallee_$2482_$",
                                    "typeString": "type(contract ITridentCallee)"
                                  }
                                },
                                "id": 20318,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12168:26:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ITridentCallee_$2482",
                                  "typeString": "contract ITridentCallee"
                                }
                              },
                              "id": 20319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tridentSwapCallback",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2476,
                              "src": "12168:46:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                                "typeString": "function (bytes memory) external"
                              }
                            },
                            "id": 20321,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12168:52:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 20322,
                          "nodeType": "ExpressionStatement",
                          "src": "12168:52:54"
                        }
                      }
                    ]
                  },
                  "id": 20325,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_processSwap",
                  "nameLocation": "11925:12:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20302,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20293,
                        "mutability": "mutable",
                        "name": "tokenOut",
                        "nameLocation": "11955:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20325,
                        "src": "11947:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20292,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11947:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20295,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "11981:2:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20325,
                        "src": "11973:10:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20294,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11973:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20297,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "12001:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20325,
                        "src": "11993:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20296,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11993:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20299,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "12033:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20325,
                        "src": "12020:17:54",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 20298,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "12020:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20301,
                        "mutability": "mutable",
                        "name": "unwrapBento",
                        "nameLocation": "12052:11:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20325,
                        "src": "12047:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 20300,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12047:4:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11937:132:54"
                  },
                  "returnParameters": {
                    "id": 20303,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12079:0:54"
                  },
                  "scope": 21279,
                  "src": "11916:311:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20354,
                    "nodeType": "Block",
                    "src": "12318:162:54",
                    "statements": [
                      {
                        "expression": {
                          "id": 20338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 20332,
                                "name": "_reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20328,
                                "src": "12329:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 20333,
                                "name": "_reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20330,
                                "src": "12340:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20334,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "12328:22:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "components": [
                              {
                                "id": 20335,
                                "name": "reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19175,
                                "src": "12354:8:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              {
                                "id": 20336,
                                "name": "reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19177,
                                "src": "12364:8:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "id": 20337,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "12353:20:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$",
                              "typeString": "tuple(uint128,uint128)"
                            }
                          },
                          "src": "12328:45:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20339,
                        "nodeType": "ExpressionStatement",
                        "src": "12328:45:54"
                      },
                      {
                        "expression": {
                          "id": 20345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20340,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20328,
                            "src": "12383:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 20342,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19157,
                                "src": "12405:6:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 20343,
                                "name": "_reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20328,
                                "src": "12413:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 20341,
                              "name": "_toAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20500,
                              "src": "12395:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256) view returns (uint256)"
                              }
                            },
                            "id": 20344,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12395:28:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12383:40:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20346,
                        "nodeType": "ExpressionStatement",
                        "src": "12383:40:54"
                      },
                      {
                        "expression": {
                          "id": 20352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20347,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20330,
                            "src": "12433:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 20349,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19159,
                                "src": "12455:6:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 20350,
                                "name": "_reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20330,
                                "src": "12463:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 20348,
                              "name": "_toAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20500,
                              "src": "12445:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256) view returns (uint256)"
                              }
                            },
                            "id": 20351,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12445:28:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12433:40:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20353,
                        "nodeType": "ExpressionStatement",
                        "src": "12433:40:54"
                      }
                    ]
                  },
                  "id": 20355,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getReserves",
                  "nameLocation": "12242:12:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20326,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12254:2:54"
                  },
                  "returnParameters": {
                    "id": 20331,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20328,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "12288:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20355,
                        "src": "12280:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20327,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12280:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20330,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "12307:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20355,
                        "src": "12299:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20329,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12299:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12279:38:54"
                  },
                  "scope": 21279,
                  "src": "12233:247:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20403,
                    "nodeType": "Block",
                    "src": "12522:280:54",
                    "statements": [
                      {
                        "assignments": [
                          20359,
                          20361
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20359,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "12541:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20403,
                            "src": "12533:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20358,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12533:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 20361,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "12560:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20403,
                            "src": "12552:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20360,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12552:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20364,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 20362,
                            "name": "_balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20430,
                            "src": "12573:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 20363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12573:10:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12532:51:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 20380,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20372,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 20366,
                                  "name": "_reserve0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20359,
                                  "src": "12601:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 20369,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "12618:7:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint128_$",
                                          "typeString": "type(uint128)"
                                        },
                                        "typeName": {
                                          "id": 20368,
                                          "name": "uint128",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "12618:7:54",
                                          "typeDescriptions": {}
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_uint128_$",
                                          "typeString": "type(uint128)"
                                        }
                                      ],
                                      "id": 20367,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "12613:4:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 20370,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12613:13:54",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_uint128",
                                      "typeString": "type(uint128)"
                                    }
                                  },
                                  "id": 20371,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "max",
                                  "nodeType": "MemberAccess",
                                  "src": "12613:17:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "12601:29:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20379,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 20373,
                                  "name": "_reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20361,
                                  "src": "12634:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 20376,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "12651:7:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint128_$",
                                          "typeString": "type(uint128)"
                                        },
                                        "typeName": {
                                          "id": 20375,
                                          "name": "uint128",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "12651:7:54",
                                          "typeDescriptions": {}
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_type$_t_uint128_$",
                                          "typeString": "type(uint128)"
                                        }
                                      ],
                                      "id": 20374,
                                      "name": "type",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -27,
                                      "src": "12646:4:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 20377,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12646:13:54",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_meta_type_t_uint128",
                                      "typeString": "type(uint128)"
                                    }
                                  },
                                  "id": 20378,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "max",
                                  "nodeType": "MemberAccess",
                                  "src": "12646:17:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "12634:29:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "12601:62:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4f564552464c4f57",
                              "id": 20381,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12665:10:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1",
                                "typeString": "literal_string \"OVERFLOW\""
                              },
                              "value": "OVERFLOW"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d1111b9d45fde8ff09a12cb9a0f0d3fce2f333d816839b16224952f9aad3f3f1",
                                "typeString": "literal_string \"OVERFLOW\""
                              }
                            ],
                            "id": 20365,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "12593:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 20382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12593:83:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20383,
                        "nodeType": "ExpressionStatement",
                        "src": "12593:83:54"
                      },
                      {
                        "expression": {
                          "id": 20389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20384,
                            "name": "reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19175,
                            "src": "12686:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 20387,
                                "name": "_reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20359,
                                "src": "12705:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 20386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12697:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 20385,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "12697:7:54",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 20388,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12697:18:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "12686:29:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 20390,
                        "nodeType": "ExpressionStatement",
                        "src": "12686:29:54"
                      },
                      {
                        "expression": {
                          "id": 20396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20391,
                            "name": "reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19177,
                            "src": "12725:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 20394,
                                "name": "_reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20361,
                                "src": "12744:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 20393,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12736:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint128_$",
                                "typeString": "type(uint128)"
                              },
                              "typeName": {
                                "id": 20392,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "12736:7:54",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 20395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12736:18:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "12725:29:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 20397,
                        "nodeType": "ExpressionStatement",
                        "src": "12725:29:54"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 20399,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20359,
                              "src": "12774:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 20400,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20361,
                              "src": "12785:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20398,
                            "name": "Sync",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19132,
                            "src": "12769:4:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256)"
                            }
                          },
                          "id": 20401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12769:26:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 20402,
                        "nodeType": "EmitStatement",
                        "src": "12764:31:54"
                      }
                    ]
                  },
                  "id": 20404,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_updateReserves",
                  "nameLocation": "12495:15:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20356,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12510:2:54"
                  },
                  "returnParameters": {
                    "id": 20357,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12522:0:54"
                  },
                  "scope": 21279,
                  "src": "12486:316:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20429,
                    "nodeType": "Block",
                    "src": "12887:121:54",
                    "statements": [
                      {
                        "expression": {
                          "id": 20418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20411,
                            "name": "balance0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20407,
                            "src": "12897:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 20413,
                                "name": "token0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19157,
                                "src": "12918:6:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 20415,
                                    "name": "token0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19157,
                                    "src": "12936:6:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 20414,
                                  "name": "__balance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20465,
                                  "src": "12926:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view returns (uint256)"
                                  }
                                },
                                "id": 20416,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12926:17:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 20412,
                              "name": "_toAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20500,
                              "src": "12908:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256) view returns (uint256)"
                              }
                            },
                            "id": 20417,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12908:36:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12897:47:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20419,
                        "nodeType": "ExpressionStatement",
                        "src": "12897:47:54"
                      },
                      {
                        "expression": {
                          "id": 20427,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20420,
                            "name": "balance1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20409,
                            "src": "12954:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 20422,
                                "name": "token1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19159,
                                "src": "12975:6:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "id": 20424,
                                    "name": "token1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19159,
                                    "src": "12993:6:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 20423,
                                  "name": "__balance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20465,
                                  "src": "12983:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view returns (uint256)"
                                  }
                                },
                                "id": 20425,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12983:17:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 20421,
                              "name": "_toAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20500,
                              "src": "12965:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256) view returns (uint256)"
                              }
                            },
                            "id": 20426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12965:36:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12954:47:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20428,
                        "nodeType": "ExpressionStatement",
                        "src": "12954:47:54"
                      }
                    ]
                  },
                  "id": 20430,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_balance",
                  "nameLocation": "12817:8:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20405,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12825:2:54"
                  },
                  "returnParameters": {
                    "id": 20410,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20407,
                        "mutability": "mutable",
                        "name": "balance0",
                        "nameLocation": "12859:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20430,
                        "src": "12851:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20406,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12851:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20409,
                        "mutability": "mutable",
                        "name": "balance1",
                        "nameLocation": "12877:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20430,
                        "src": "12869:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20408,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12869:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12850:36:54"
                  },
                  "scope": 21279,
                  "src": "12808:200:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20464,
                    "nodeType": "Block",
                    "src": "13088:243:54",
                    "statements": [
                      {
                        "assignments": [
                          null,
                          20438
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 20438,
                            "mutability": "mutable",
                            "name": "___balance",
                            "nameLocation": "13158:10:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20464,
                            "src": "13145:23:54",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 20437,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "13145:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20453,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 20443,
                                      "name": "IBentoBoxMinimal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2253,
                                      "src": "13212:16:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IBentoBoxMinimal_$2253_$",
                                        "typeString": "type(contract IBentoBoxMinimal)"
                                      }
                                    },
                                    "id": 20444,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "balanceOf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2151,
                                    "src": "13212:26:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function IBentoBoxMinimal.balanceOf(address,address) view returns (uint256)"
                                    }
                                  },
                                  "id": 20445,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "13212:35:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 20446,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20432,
                                  "src": "13249:5:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 20449,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "13264:4:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_FranchisedHybridPool_$21279",
                                        "typeString": "contract FranchisedHybridPool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_FranchisedHybridPool_$21279",
                                        "typeString": "contract FranchisedHybridPool"
                                      }
                                    ],
                                    "id": 20448,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13256:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 20447,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13256:7:54",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 20450,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13256:13:54",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 20441,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "13189:3:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 20442,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "13189:22:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 20451,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13189:81:54",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 20439,
                              "name": "bento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19153,
                              "src": "13172:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 20440,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "13172:16:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 20452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13172:99:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13142:129:54"
                      },
                      {
                        "expression": {
                          "id": 20462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20454,
                            "name": "balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20435,
                            "src": "13281:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 20457,
                                "name": "___balance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20438,
                                "src": "13302:10:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 20459,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13315:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 20458,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13315:7:54",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 20460,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "13314:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "expression": {
                                "id": 20455,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "13291:3:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 20456,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "13291:10:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 20461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13291:33:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13281:43:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20463,
                        "nodeType": "ExpressionStatement",
                        "src": "13281:43:54"
                      }
                    ]
                  },
                  "id": 20465,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "__balance",
                  "nameLocation": "13023:9:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20433,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20432,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "13041:5:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20465,
                        "src": "13033:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20431,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13033:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13032:15:54"
                  },
                  "returnParameters": {
                    "id": 20436,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20435,
                        "mutability": "mutable",
                        "name": "balance",
                        "nameLocation": "13079:7:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20465,
                        "src": "13071:15:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20434,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13071:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13070:17:54"
                  },
                  "scope": 21279,
                  "src": "13014:317:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20499,
                    "nodeType": "Block",
                    "src": "13425:238:54",
                    "statements": [
                      {
                        "assignments": [
                          null,
                          20475
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 20475,
                            "mutability": "mutable",
                            "name": "_output",
                            "nameLocation": "13499:7:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20499,
                            "src": "13486:20:54",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 20474,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "13486:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20488,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 20480,
                                      "name": "IBentoBoxMinimal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2253,
                                      "src": "13550:16:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IBentoBoxMinimal_$2253_$",
                                        "typeString": "type(contract IBentoBoxMinimal)"
                                      }
                                    },
                                    "id": 20481,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "toAmount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2175,
                                    "src": "13550:25:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function IBentoBoxMinimal.toAmount(address,uint256,bool) view returns (uint256)"
                                    }
                                  },
                                  "id": 20482,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "13550:34:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 20483,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20467,
                                  "src": "13586:5:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 20484,
                                  "name": "input",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20469,
                                  "src": "13593:5:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "hexValue": "66616c7365",
                                  "id": 20485,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13600:5:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 20478,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "13527:3:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 20479,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "13527:22:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 20486,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13527:79:54",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 20476,
                              "name": "bento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19153,
                              "src": "13510:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 20477,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "13510:16:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 20487,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13510:97:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13483:124:54"
                      },
                      {
                        "expression": {
                          "id": 20497,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20489,
                            "name": "output",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20472,
                            "src": "13617:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 20492,
                                "name": "_output",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20475,
                                "src": "13637:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 20494,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13647:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 20493,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13647:7:54",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 20495,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "13646:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "expression": {
                                "id": 20490,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "13626:3:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 20491,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "13626:10:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 20496,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13626:30:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13617:39:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20498,
                        "nodeType": "ExpressionStatement",
                        "src": "13617:39:54"
                      }
                    ]
                  },
                  "id": 20500,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_toAmount",
                  "nameLocation": "13346:9:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20470,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20467,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "13364:5:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20500,
                        "src": "13356:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20466,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13356:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20469,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "13379:5:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20500,
                        "src": "13371:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20468,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13371:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13355:30:54"
                  },
                  "returnParameters": {
                    "id": 20473,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20472,
                        "mutability": "mutable",
                        "name": "output",
                        "nameLocation": "13417:6:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20500,
                        "src": "13409:14:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20471,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13409:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13408:16:54"
                  },
                  "scope": 21279,
                  "src": "13337:326:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20534,
                    "nodeType": "Block",
                    "src": "13756:236:54",
                    "statements": [
                      {
                        "assignments": [
                          null,
                          20510
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 20510,
                            "mutability": "mutable",
                            "name": "_output",
                            "nameLocation": "13829:7:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20534,
                            "src": "13816:20:54",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 20509,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "13816:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20523,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 20515,
                                      "name": "IBentoBoxMinimal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2253,
                                      "src": "13880:16:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IBentoBoxMinimal_$2253_$",
                                        "typeString": "type(contract IBentoBoxMinimal)"
                                      }
                                    },
                                    "id": 20516,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "toShare",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2163,
                                    "src": "13880:24:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_view$_t_address_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function IBentoBoxMinimal.toShare(address,uint256,bool) view returns (uint256)"
                                    }
                                  },
                                  "id": 20517,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "13880:33:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 20518,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20502,
                                  "src": "13915:5:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 20519,
                                  "name": "input",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20504,
                                  "src": "13922:5:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "hexValue": "66616c7365",
                                  "id": 20520,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13929:5:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 20513,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "13857:3:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 20514,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "13857:22:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 20521,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13857:78:54",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 20511,
                              "name": "bento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19153,
                              "src": "13840:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 20512,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "13840:16:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 20522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13840:96:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13813:123:54"
                      },
                      {
                        "expression": {
                          "id": 20532,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20524,
                            "name": "output",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20507,
                            "src": "13946:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 20527,
                                "name": "_output",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20510,
                                "src": "13966:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 20529,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "13976:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 20528,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "13976:7:54",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 20530,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "13975:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "expression": {
                                "id": 20525,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "13955:3:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 20526,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "13955:10:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 20531,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13955:30:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13946:39:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20533,
                        "nodeType": "ExpressionStatement",
                        "src": "13946:39:54"
                      }
                    ]
                  },
                  "id": 20535,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_toShare",
                  "nameLocation": "13678:8:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20505,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20502,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "13695:5:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20535,
                        "src": "13687:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20501,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13687:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20504,
                        "mutability": "mutable",
                        "name": "input",
                        "nameLocation": "13710:5:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20535,
                        "src": "13702:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20503,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13702:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13686:30:54"
                  },
                  "returnParameters": {
                    "id": 20508,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20507,
                        "mutability": "mutable",
                        "name": "output",
                        "nameLocation": "13748:6:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20535,
                        "src": "13740:14:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20506,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13740:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13739:16:54"
                  },
                  "scope": 21279,
                  "src": "13669:323:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20626,
                    "nodeType": "Block",
                    "src": "14165:692:54",
                    "statements": [
                      {
                        "assignments": [
                          20549
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20549,
                            "mutability": "mutable",
                            "name": "xpIn",
                            "nameLocation": "14183:4:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20626,
                            "src": "14175:12:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20548,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14175:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20550,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14175:12:54"
                      },
                      {
                        "assignments": [
                          20552
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20552,
                            "mutability": "mutable",
                            "name": "xpOut",
                            "nameLocation": "14205:5:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20626,
                            "src": "14197:13:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20551,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14197:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20553,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14197:13:54"
                      },
                      {
                        "condition": {
                          "id": 20554,
                          "name": "token0In",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20543,
                          "src": "14225:8:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 20588,
                          "nodeType": "Block",
                          "src": "14420:179:54",
                          "statements": [
                            {
                              "expression": {
                                "id": 20576,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20572,
                                  "name": "xpIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20549,
                                  "src": "14434:4:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20575,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 20573,
                                    "name": "_reserve1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20541,
                                    "src": "14441:9:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 20574,
                                    "name": "token1PrecisionMultiplier",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19171,
                                    "src": "14453:25:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "14441:37:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14434:44:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20577,
                              "nodeType": "ExpressionStatement",
                              "src": "14434:44:54"
                            },
                            {
                              "expression": {
                                "id": 20582,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20578,
                                  "name": "xpOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20552,
                                  "src": "14492:5:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20581,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 20579,
                                    "name": "_reserve0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20539,
                                    "src": "14500:9:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 20580,
                                    "name": "token0PrecisionMultiplier",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19169,
                                    "src": "14512:25:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "14500:37:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14492:45:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20583,
                              "nodeType": "ExpressionStatement",
                              "src": "14492:45:54"
                            },
                            {
                              "expression": {
                                "id": 20586,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20584,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20537,
                                  "src": "14551:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "*=",
                                "rightHandSide": {
                                  "id": 20585,
                                  "name": "token1PrecisionMultiplier",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19171,
                                  "src": "14563:25:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14551:37:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20587,
                              "nodeType": "ExpressionStatement",
                              "src": "14551:37:54"
                            }
                          ]
                        },
                        "id": 20589,
                        "nodeType": "IfStatement",
                        "src": "14221:378:54",
                        "trueBody": {
                          "id": 20571,
                          "nodeType": "Block",
                          "src": "14235:179:54",
                          "statements": [
                            {
                              "expression": {
                                "id": 20559,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20555,
                                  "name": "xpIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20549,
                                  "src": "14249:4:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20558,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 20556,
                                    "name": "_reserve0",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20539,
                                    "src": "14256:9:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 20557,
                                    "name": "token0PrecisionMultiplier",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19169,
                                    "src": "14268:25:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "14256:37:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14249:44:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20560,
                              "nodeType": "ExpressionStatement",
                              "src": "14249:44:54"
                            },
                            {
                              "expression": {
                                "id": 20565,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20561,
                                  "name": "xpOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20552,
                                  "src": "14307:5:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20564,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 20562,
                                    "name": "_reserve1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20541,
                                    "src": "14315:9:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 20563,
                                    "name": "token1PrecisionMultiplier",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19171,
                                    "src": "14327:25:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "14315:37:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14307:45:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20566,
                              "nodeType": "ExpressionStatement",
                              "src": "14307:45:54"
                            },
                            {
                              "expression": {
                                "id": 20569,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20567,
                                  "name": "amountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20537,
                                  "src": "14366:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "*=",
                                "rightHandSide": {
                                  "id": 20568,
                                  "name": "token0PrecisionMultiplier",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19169,
                                  "src": "14378:25:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14366:37:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20570,
                              "nodeType": "ExpressionStatement",
                              "src": "14366:37:54"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          20591
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20591,
                            "mutability": "mutable",
                            "name": "d",
                            "nameLocation": "14616:1:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20626,
                            "src": "14608:9:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20590,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14608:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20596,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 20593,
                              "name": "xpIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20549,
                              "src": "14658:4:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 20594,
                              "name": "xpOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20552,
                              "src": "14664:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20592,
                            "name": "_computeLiquidityFromAdjustedBalances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20832,
                            "src": "14620:37:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) view returns (uint256)"
                            }
                          },
                          "id": 20595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14620:50:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14608:62:54"
                      },
                      {
                        "assignments": [
                          20598
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20598,
                            "mutability": "mutable",
                            "name": "x",
                            "nameLocation": "14688:1:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20626,
                            "src": "14680:9:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20597,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14680:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20602,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 20599,
                            "name": "xpIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20549,
                            "src": "14692:4:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 20600,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20537,
                            "src": "14699:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14692:15:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14680:27:54"
                      },
                      {
                        "assignments": [
                          20604
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20604,
                            "mutability": "mutable",
                            "name": "y",
                            "nameLocation": "14725:1:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20626,
                            "src": "14717:9:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20603,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14717:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20609,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 20606,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20598,
                              "src": "14735:1:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 20607,
                              "name": "d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20591,
                              "src": "14738:1:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 20605,
                            "name": "_getY",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20930,
                            "src": "14729:5:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) view returns (uint256)"
                            }
                          },
                          "id": 20608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14729:11:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14717:23:54"
                      },
                      {
                        "expression": {
                          "id": 20616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20610,
                            "name": "dy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20546,
                            "src": "14750:2:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 20615,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 20613,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 20611,
                                "name": "xpOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20552,
                                "src": "14755:5:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "id": 20612,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20604,
                                "src": "14763:1:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14755:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 20614,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14767:1:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "14755:13:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14750:18:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20617,
                        "nodeType": "ExpressionStatement",
                        "src": "14750:18:54"
                      },
                      {
                        "expression": {
                          "id": 20624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20618,
                            "name": "dy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20546,
                            "src": "14778:2:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "/=",
                          "rightHandSide": {
                            "components": [
                              {
                                "condition": {
                                  "id": 20619,
                                  "name": "token0In",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20543,
                                  "src": "14785:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "id": 20621,
                                  "name": "token0PrecisionMultiplier",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19169,
                                  "src": "14824:25:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 20622,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "14785:64:54",
                                "trueExpression": {
                                  "id": 20620,
                                  "name": "token1PrecisionMultiplier",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19171,
                                  "src": "14796:25:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20623,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "14784:66:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14778:72:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20625,
                        "nodeType": "ExpressionStatement",
                        "src": "14778:72:54"
                      }
                    ]
                  },
                  "id": 20627,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getAmountOut",
                  "nameLocation": "14007:13:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20544,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20537,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nameLocation": "14038:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20627,
                        "src": "14030:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20536,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14030:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20539,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "14064:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20627,
                        "src": "14056:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20538,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14056:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20541,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "14091:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20627,
                        "src": "14083:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20540,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14083:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20543,
                        "mutability": "mutable",
                        "name": "token0In",
                        "nameLocation": "14115:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20627,
                        "src": "14110:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 20542,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14110:4:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14020:109:54"
                  },
                  "returnParameters": {
                    "id": 20547,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20546,
                        "mutability": "mutable",
                        "name": "dy",
                        "nameLocation": "14161:2:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20627,
                        "src": "14153:10:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20545,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14153:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14152:12:54"
                  },
                  "scope": 21279,
                  "src": "13998:859:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20694,
                    "nodeType": "Block",
                    "src": "14990:617:54",
                    "statements": [
                      {
                        "condition": {
                          "id": 20638,
                          "name": "unwrapBento",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20635,
                          "src": "15004:11:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 20692,
                          "nodeType": "Block",
                          "src": "15294:307:54",
                          "statements": [
                            {
                              "assignments": [
                                20666,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 20666,
                                  "mutability": "mutable",
                                  "name": "success",
                                  "nameLocation": "15377:7:54",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 20692,
                                  "src": "15372:12:54",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 20665,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15372:4:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 20686,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "expression": {
                                            "id": 20671,
                                            "name": "IBentoBoxMinimal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2253,
                                            "src": "15441:16:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IBentoBoxMinimal_$2253_$",
                                              "typeString": "type(contract IBentoBoxMinimal)"
                                            }
                                          },
                                          "id": 20672,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberName": "transfer",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2227,
                                          "src": "15441:25:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                            "typeString": "function IBentoBoxMinimal.transfer(address,address,address,uint256)"
                                          }
                                        },
                                        "id": 20673,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "selector",
                                        "nodeType": "MemberAccess",
                                        "src": "15441:34:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        }
                                      },
                                      {
                                        "id": 20674,
                                        "name": "token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20629,
                                        "src": "15477:5:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "id": 20677,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -28,
                                            "src": "15492:4:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_FranchisedHybridPool_$21279",
                                              "typeString": "contract FranchisedHybridPool"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_FranchisedHybridPool_$21279",
                                              "typeString": "contract FranchisedHybridPool"
                                            }
                                          ],
                                          "id": 20676,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "15484:7:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 20675,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "15484:7:54",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 20678,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15484:13:54",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 20679,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20633,
                                        "src": "15499:2:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "id": 20681,
                                            "name": "token",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20629,
                                            "src": "15512:5:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 20682,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20631,
                                            "src": "15519:6:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 20680,
                                          "name": "_toShare",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20535,
                                          "src": "15503:8:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                            "typeString": "function (address,uint256) view returns (uint256)"
                                          }
                                        },
                                        "id": 20683,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15503:23:54",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 20669,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "15418:3:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 20670,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encodeWithSelector",
                                      "nodeType": "MemberAccess",
                                      "src": "15418:22:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes4) pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 20684,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15418:109:54",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 20667,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19153,
                                    "src": "15390:5:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 20668,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "call",
                                  "nodeType": "MemberAccess",
                                  "src": "15390:10:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                  }
                                },
                                "id": 20685,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15390:151:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15371:170:54"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 20688,
                                    "name": "success",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20666,
                                    "src": "15563:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "5452414e534645525f4641494c4544",
                                    "id": 20689,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15572:17:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72",
                                      "typeString": "literal_string \"TRANSFER_FAILED\""
                                    },
                                    "value": "TRANSFER_FAILED"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72",
                                      "typeString": "literal_string \"TRANSFER_FAILED\""
                                    }
                                  ],
                                  "id": 20687,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "15555:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 20690,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15555:35:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20691,
                              "nodeType": "ExpressionStatement",
                              "src": "15555:35:54"
                            }
                          ]
                        },
                        "id": 20693,
                        "nodeType": "IfStatement",
                        "src": "15000:601:54",
                        "trueBody": {
                          "id": 20664,
                          "nodeType": "Block",
                          "src": "15017:271:54",
                          "statements": [
                            {
                              "assignments": [
                                20640,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 20640,
                                  "mutability": "mutable",
                                  "name": "success",
                                  "nameLocation": "15108:7:54",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 20664,
                                  "src": "15103:12:54",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 20639,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15103:4:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 20658,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "expression": {
                                            "id": 20645,
                                            "name": "IBentoBoxMinimal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2253,
                                            "src": "15155:16:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IBentoBoxMinimal_$2253_$",
                                              "typeString": "type(contract IBentoBoxMinimal)"
                                            }
                                          },
                                          "id": 20646,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberName": "withdraw",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2215,
                                          "src": "15155:25:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                            "typeString": "function IBentoBoxMinimal.withdraw(address,address,address,uint256,uint256) returns (uint256,uint256)"
                                          }
                                        },
                                        "id": 20647,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "selector",
                                        "nodeType": "MemberAccess",
                                        "src": "15155:34:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        }
                                      },
                                      {
                                        "id": 20648,
                                        "name": "token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20629,
                                        "src": "15191:5:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "id": 20651,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -28,
                                            "src": "15206:4:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_FranchisedHybridPool_$21279",
                                              "typeString": "contract FranchisedHybridPool"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_FranchisedHybridPool_$21279",
                                              "typeString": "contract FranchisedHybridPool"
                                            }
                                          ],
                                          "id": 20650,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "15198:7:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 20649,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "15198:7:54",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 20652,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15198:13:54",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 20653,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20633,
                                        "src": "15213:2:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 20654,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20631,
                                        "src": "15217:6:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "hexValue": "30",
                                        "id": 20655,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15225:1:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "expression": {
                                        "id": 20643,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "15132:3:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 20644,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encodeWithSelector",
                                      "nodeType": "MemberAccess",
                                      "src": "15132:22:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes4) pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 20656,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15132:95:54",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 20641,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19153,
                                    "src": "15121:5:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 20642,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "call",
                                  "nodeType": "MemberAccess",
                                  "src": "15121:10:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                  }
                                },
                                "id": 20657,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15121:107:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15102:126:54"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 20660,
                                    "name": "success",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20640,
                                    "src": "15250:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "57495448445241575f4641494c4544",
                                    "id": 20661,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15259:17:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_763a38bd0e76a191b2607dcd1b2bd7d2e31ac1f3de7b2a0f756698e57f39c206",
                                      "typeString": "literal_string \"WITHDRAW_FAILED\""
                                    },
                                    "value": "WITHDRAW_FAILED"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_763a38bd0e76a191b2607dcd1b2bd7d2e31ac1f3de7b2a0f756698e57f39c206",
                                      "typeString": "literal_string \"WITHDRAW_FAILED\""
                                    }
                                  ],
                                  "id": 20659,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "15242:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 20662,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15242:35:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 20663,
                              "nodeType": "ExpressionStatement",
                              "src": "15242:35:54"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 20695,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nameLocation": "14872:9:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20636,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20629,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "14899:5:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20695,
                        "src": "14891:13:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20628,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14891:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20631,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "14922:6:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20695,
                        "src": "14914:14:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20630,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14914:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20633,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "14946:2:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20695,
                        "src": "14938:10:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 20632,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14938:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20635,
                        "mutability": "mutable",
                        "name": "unwrapBento",
                        "nameLocation": "14963:11:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20695,
                        "src": "14958:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 20634,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14958:4:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14881:99:54"
                  },
                  "returnParameters": {
                    "id": 20637,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14990:0:54"
                  },
                  "scope": 21279,
                  "src": "14863:744:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20724,
                    "nodeType": "Block",
                    "src": "16083:198:54",
                    "statements": [
                      {
                        "assignments": [
                          20706
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20706,
                            "mutability": "mutable",
                            "name": "xp0",
                            "nameLocation": "16101:3:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20724,
                            "src": "16093:11:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20705,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16093:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20710,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20709,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 20707,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20698,
                            "src": "16107:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 20708,
                            "name": "token0PrecisionMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19169,
                            "src": "16119:25:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16107:37:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16093:51:54"
                      },
                      {
                        "assignments": [
                          20712
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20712,
                            "mutability": "mutable",
                            "name": "xp1",
                            "nameLocation": "16162:3:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20724,
                            "src": "16154:11:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20711,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16154:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20716,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20715,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 20713,
                            "name": "_reserve1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20700,
                            "src": "16168:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 20714,
                            "name": "token1PrecisionMultiplier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19171,
                            "src": "16180:25:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16168:37:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16154:51:54"
                      },
                      {
                        "expression": {
                          "id": 20722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20717,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20703,
                            "src": "16215:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 20719,
                                "name": "xp0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20706,
                                "src": "16265:3:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 20720,
                                "name": "xp1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 20712,
                                "src": "16270:3:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 20718,
                              "name": "_computeLiquidityFromAdjustedBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20832,
                              "src": "16227:37:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) view returns (uint256)"
                              }
                            },
                            "id": 20721,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16227:47:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16215:59:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20723,
                        "nodeType": "ExpressionStatement",
                        "src": "16215:59:54"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20696,
                    "nodeType": "StructuredDocumentation",
                    "src": "15613:358:54",
                    "text": "@notice Get D, the StableSwap invariant, based on a set of balances and a particular A.\n See the StableSwap paper for details.\n @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L319.\n @return liquidity The invariant, at the precision of the pool."
                  },
                  "id": 20725,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_computeLiquidity",
                  "nameLocation": "15985:17:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20701,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20698,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "16011:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20725,
                        "src": "16003:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20697,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16003:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20700,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "16030:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20725,
                        "src": "16022:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20699,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16022:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16002:38:54"
                  },
                  "returnParameters": {
                    "id": 20704,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20703,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "16072:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20725,
                        "src": "16064:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20702,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16064:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16063:19:54"
                  },
                  "scope": 21279,
                  "src": "15976:305:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20831,
                    "nodeType": "Block",
                    "src": "16401:483:54",
                    "statements": [
                      {
                        "assignments": [
                          20735
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20735,
                            "mutability": "mutable",
                            "name": "s",
                            "nameLocation": "16419:1:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20831,
                            "src": "16411:9:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20734,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16411:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20739,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 20736,
                            "name": "xp0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20727,
                            "src": "16423:3:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 20737,
                            "name": "xp1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20729,
                            "src": "16429:3:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16423:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16411:21:54"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 20740,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20735,
                            "src": "16447:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 20741,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16452:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "16447:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20748,
                        "nodeType": "IfStatement",
                        "src": "16443:49:54",
                        "trueBody": {
                          "id": 20747,
                          "nodeType": "Block",
                          "src": "16455:37:54",
                          "statements": [
                            {
                              "expression": {
                                "id": 20745,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20743,
                                  "name": "computed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20732,
                                  "src": "16469:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "30",
                                  "id": 20744,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16480:1:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "16469:12:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20746,
                              "nodeType": "ExpressionStatement",
                              "src": "16469:12:54"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          20750
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20750,
                            "mutability": "mutable",
                            "name": "prevD",
                            "nameLocation": "16509:5:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20831,
                            "src": "16501:13:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20749,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16501:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20751,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16501:13:54"
                      },
                      {
                        "assignments": [
                          20753
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20753,
                            "mutability": "mutable",
                            "name": "D",
                            "nameLocation": "16532:1:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20831,
                            "src": "16524:9:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20752,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16524:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20755,
                        "initialValue": {
                          "id": 20754,
                          "name": "s",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 20735,
                          "src": "16536:1:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16524:13:54"
                      },
                      {
                        "body": {
                          "id": 20825,
                          "nodeType": "Block",
                          "src": "16592:264:54",
                          "statements": [
                            {
                              "assignments": [
                                20767
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 20767,
                                  "mutability": "mutable",
                                  "name": "dP",
                                  "nameLocation": "16614:2:54",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 20825,
                                  "src": "16606:10:54",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 20766,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16606:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 20782,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20781,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20779,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 20776,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 20773,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "components": [
                                                  {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    "id": 20770,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "id": 20768,
                                                      "name": "D",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 20753,
                                                      "src": "16622:1:54",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "*",
                                                    "rightExpression": {
                                                      "id": 20769,
                                                      "name": "D",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 20753,
                                                      "src": "16626:1:54",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "src": "16622:5:54",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "id": 20771,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "16621:7:54",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "/",
                                              "rightExpression": {
                                                "id": 20772,
                                                "name": "xp0",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 20727,
                                                "src": "16631:3:54",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "16621:13:54",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 20774,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "16620:15:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 20775,
                                          "name": "D",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20753,
                                          "src": "16638:1:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "16620:19:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 20777,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "16619:21:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 20778,
                                    "name": "xp1",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20729,
                                    "src": "16643:3:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "16619:27:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "hexValue": "34",
                                  "id": 20780,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16649:1:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_4_by_1",
                                    "typeString": "int_const 4"
                                  },
                                  "value": "4"
                                },
                                "src": "16619:31:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16606:44:54"
                            },
                            {
                              "expression": {
                                "id": 20785,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20783,
                                  "name": "prevD",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20750,
                                  "src": "16664:5:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 20784,
                                  "name": "D",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20753,
                                  "src": "16672:1:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16664:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20786,
                              "nodeType": "ExpressionStatement",
                              "src": "16664:9:54"
                            },
                            {
                              "expression": {
                                "id": 20816,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20787,
                                  "name": "D",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20753,
                                  "src": "16687:1:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20815,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 20800,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 20797,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 20793,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "components": [
                                                    {
                                                      "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      "id": 20790,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "id": 20788,
                                                        "name": "N_A",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 19163,
                                                        "src": "16694:3:54",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "*",
                                                      "rightExpression": {
                                                        "id": 20789,
                                                        "name": "s",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 20735,
                                                        "src": "16700:1:54",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      },
                                                      "src": "16694:7:54",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "id": 20791,
                                                  "isConstant": false,
                                                  "isInlineArray": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "nodeType": "TupleExpression",
                                                  "src": "16693:9:54",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "/",
                                                "rightExpression": {
                                                  "id": 20792,
                                                  "name": "A_PRECISION",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 19166,
                                                  "src": "16705:11:54",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "16693:23:54",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "+",
                                              "rightExpression": {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 20796,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "hexValue": "32",
                                                  "id": 20794,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "16719:1:54",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_2_by_1",
                                                    "typeString": "int_const 2"
                                                  },
                                                  "value": "2"
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "*",
                                                "rightExpression": {
                                                  "id": 20795,
                                                  "name": "dP",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 20767,
                                                  "src": "16723:2:54",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "16719:6:54",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "16693:32:54",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 20798,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "16692:34:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 20799,
                                          "name": "D",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20753,
                                          "src": "16729:1:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "16692:38:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 20801,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "16691:40:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 20813,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 20809,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "components": [
                                              {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 20806,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 20804,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "id": 20802,
                                                    "name": "N_A",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 19163,
                                                    "src": "16736:3:54",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "/",
                                                  "rightExpression": {
                                                    "id": 20803,
                                                    "name": "A_PRECISION",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 19166,
                                                    "src": "16742:11:54",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "16736:17:54",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "-",
                                                "rightExpression": {
                                                  "hexValue": "31",
                                                  "id": 20805,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "16756:1:54",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                  },
                                                  "value": "1"
                                                },
                                                "src": "16736:21:54",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 20807,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "16735:23:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "id": 20808,
                                            "name": "D",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20753,
                                            "src": "16761:1:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "16735:27:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 20812,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "33",
                                            "id": 20810,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "16765:1:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_3_by_1",
                                              "typeString": "int_const 3"
                                            },
                                            "value": "3"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "id": 20811,
                                            "name": "dP",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20767,
                                            "src": "16769:2:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "16765:6:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "16735:36:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 20814,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "16734:38:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "16691:81:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "16687:85:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20817,
                              "nodeType": "ExpressionStatement",
                              "src": "16687:85:54"
                            },
                            {
                              "condition": {
                                "arguments": [
                                  {
                                    "id": 20820,
                                    "name": "prevD",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20750,
                                    "src": "16800:5:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 20818,
                                    "name": "D",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20753,
                                    "src": "16790:1:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 20819,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "within1",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2851,
                                  "src": "16790:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (bool)"
                                  }
                                },
                                "id": 20821,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16790:16:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 20824,
                              "nodeType": "IfStatement",
                              "src": "16786:60:54",
                              "trueBody": {
                                "id": 20823,
                                "nodeType": "Block",
                                "src": "16808:38:54",
                                "statements": [
                                  {
                                    "id": 20822,
                                    "nodeType": "Break",
                                    "src": "16826:5:54"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20762,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 20760,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20757,
                            "src": "16567:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 20761,
                            "name": "MAX_LOOP_LIMIT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19144,
                            "src": "16571:14:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16567:18:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20826,
                        "initializationExpression": {
                          "assignments": [
                            20757
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 20757,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "16560:1:54",
                              "nodeType": "VariableDeclaration",
                              "scope": 20826,
                              "src": "16552:9:54",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 20756,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "16552:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 20759,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 20758,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16564:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "16552:13:54"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 20764,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "16587:3:54",
                            "subExpression": {
                              "id": 20763,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20757,
                              "src": "16587:1:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 20765,
                          "nodeType": "ExpressionStatement",
                          "src": "16587:3:54"
                        },
                        "nodeType": "ForStatement",
                        "src": "16547:309:54"
                      },
                      {
                        "expression": {
                          "id": 20829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20827,
                            "name": "computed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20732,
                            "src": "16865:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 20828,
                            "name": "D",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20753,
                            "src": "16876:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16865:12:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20830,
                        "nodeType": "ExpressionStatement",
                        "src": "16865:12:54"
                      }
                    ]
                  },
                  "id": 20832,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_computeLiquidityFromAdjustedBalances",
                  "nameLocation": "16296:37:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20730,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20727,
                        "mutability": "mutable",
                        "name": "xp0",
                        "nameLocation": "16342:3:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20832,
                        "src": "16334:11:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20726,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16334:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20729,
                        "mutability": "mutable",
                        "name": "xp1",
                        "nameLocation": "16355:3:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20832,
                        "src": "16347:11:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20728,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16347:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16333:26:54"
                  },
                  "returnParameters": {
                    "id": 20733,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20732,
                        "mutability": "mutable",
                        "name": "computed",
                        "nameLocation": "16391:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20832,
                        "src": "16383:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20731,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16383:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16382:18:54"
                  },
                  "scope": 21279,
                  "src": "16287:597:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 20929,
                    "nodeType": "Block",
                    "src": "17523:433:54",
                    "statements": [
                      {
                        "assignments": [
                          20843
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20843,
                            "mutability": "mutable",
                            "name": "c",
                            "nameLocation": "17541:1:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20929,
                            "src": "17533:9:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20842,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17533:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20853,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20852,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20846,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 20844,
                                  "name": "D",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20837,
                                  "src": "17546:1:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 20845,
                                  "name": "D",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20837,
                                  "src": "17550:1:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17546:5:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20847,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "17545:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20850,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 20848,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20835,
                                  "src": "17556:1:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "hexValue": "32",
                                  "id": 20849,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17560:1:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "17556:5:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20851,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "17555:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17545:17:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17533:29:54"
                      },
                      {
                        "expression": {
                          "id": 20867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20854,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20843,
                            "src": "17572:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 20866,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20857,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 20855,
                                    "name": "c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20843,
                                    "src": "17577:1:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 20856,
                                    "name": "D",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20837,
                                    "src": "17581:1:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "17577:5:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 20858,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "17576:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20864,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 20861,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 20859,
                                          "name": "N_A",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19163,
                                          "src": "17588:3:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "32",
                                          "id": 20860,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17594:1:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "src": "17588:7:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 20862,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "17587:9:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 20863,
                                    "name": "A_PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19166,
                                    "src": "17599:11:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "17587:23:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 20865,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "17586:25:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "17576:35:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17572:39:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20868,
                        "nodeType": "ExpressionStatement",
                        "src": "17572:39:54"
                      },
                      {
                        "assignments": [
                          20870
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20870,
                            "mutability": "mutable",
                            "name": "b",
                            "nameLocation": "17629:1:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20929,
                            "src": "17621:9:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20869,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17621:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20880,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20879,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 20871,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20835,
                            "src": "17633:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 20874,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 20872,
                                        "name": "D",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20837,
                                        "src": "17639:1:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 20873,
                                        "name": "A_PRECISION",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19166,
                                        "src": "17643:11:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "17639:15:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 20875,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "17638:17:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 20876,
                                  "name": "N_A",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19163,
                                  "src": "17658:3:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17638:23:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20878,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "17637:25:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17633:29:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17621:41:54"
                      },
                      {
                        "assignments": [
                          20882
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20882,
                            "mutability": "mutable",
                            "name": "yPrev",
                            "nameLocation": "17680:5:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 20929,
                            "src": "17672:13:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20881,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17672:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20883,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17672:13:54"
                      },
                      {
                        "expression": {
                          "id": 20886,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20884,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20840,
                            "src": "17695:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 20885,
                            "name": "D",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20837,
                            "src": "17699:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17695:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20887,
                        "nodeType": "ExpressionStatement",
                        "src": "17695:5:54"
                      },
                      {
                        "body": {
                          "id": 20927,
                          "nodeType": "Block",
                          "src": "17796:154:54",
                          "statements": [
                            {
                              "expression": {
                                "id": 20900,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20898,
                                  "name": "yPrev",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20882,
                                  "src": "17810:5:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 20899,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20840,
                                  "src": "17818:1:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17810:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20901,
                              "nodeType": "ExpressionStatement",
                              "src": "17810:9:54"
                            },
                            {
                              "expression": {
                                "id": 20918,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20902,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20840,
                                  "src": "17833:1:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20917,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 20907,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 20905,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 20903,
                                            "name": "y",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20840,
                                            "src": "17838:1:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "id": 20904,
                                            "name": "y",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20840,
                                            "src": "17842:1:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "17838:5:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "id": 20906,
                                          "name": "c",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20843,
                                          "src": "17846:1:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "17838:9:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 20908,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "17837:11:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 20915,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 20913,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 20911,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 20909,
                                              "name": "y",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 20840,
                                              "src": "17852:1:54",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "hexValue": "32",
                                              "id": 20910,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "17856:1:54",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_2_by_1",
                                                "typeString": "int_const 2"
                                              },
                                              "value": "2"
                                            },
                                            "src": "17852:5:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "id": 20912,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20870,
                                            "src": "17860:1:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "17852:9:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 20914,
                                          "name": "D",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20837,
                                          "src": "17864:1:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "17852:13:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 20916,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "17851:15:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "17837:29:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17833:33:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20919,
                              "nodeType": "ExpressionStatement",
                              "src": "17833:33:54"
                            },
                            {
                              "condition": {
                                "arguments": [
                                  {
                                    "id": 20922,
                                    "name": "yPrev",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20882,
                                    "src": "17894:5:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 20920,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20840,
                                    "src": "17884:1:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 20921,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "within1",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2851,
                                  "src": "17884:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (bool)"
                                  }
                                },
                                "id": 20923,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17884:16:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 20926,
                              "nodeType": "IfStatement",
                              "src": "17880:60:54",
                              "trueBody": {
                                "id": 20925,
                                "nodeType": "Block",
                                "src": "17902:38:54",
                                "statements": [
                                  {
                                    "id": 20924,
                                    "nodeType": "Break",
                                    "src": "17920:5:54"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 20892,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20889,
                            "src": "17771:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 20893,
                            "name": "MAX_LOOP_LIMIT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19144,
                            "src": "17775:14:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "17771:18:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 20928,
                        "initializationExpression": {
                          "assignments": [
                            20889
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 20889,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "17764:1:54",
                              "nodeType": "VariableDeclaration",
                              "scope": 20928,
                              "src": "17756:9:54",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 20888,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "17756:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 20891,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 20890,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17768:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "17756:13:54"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 20896,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "17791:3:54",
                            "subExpression": {
                              "id": 20895,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20889,
                              "src": "17791:1:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 20897,
                          "nodeType": "ExpressionStatement",
                          "src": "17791:3:54"
                        },
                        "nodeType": "ForStatement",
                        "src": "17751:199:54"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20833,
                    "nodeType": "StructuredDocumentation",
                    "src": "16890:557:54",
                    "text": "@notice Calculate the new balances of the tokens given the indexes of the token\n that is swapped from (FROM) and the token that is swapped to (TO).\n This function is used as a helper function to calculate how much TO token\n the user should receive on swap.\n @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L432.\n @param x The new total amount of FROM token.\n @return y The amount of TO token that should remain in the pool."
                  },
                  "id": 20930,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getY",
                  "nameLocation": "17461:5:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20838,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20835,
                        "mutability": "mutable",
                        "name": "x",
                        "nameLocation": "17475:1:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20930,
                        "src": "17467:9:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20834,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17467:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20837,
                        "mutability": "mutable",
                        "name": "D",
                        "nameLocation": "17486:1:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20930,
                        "src": "17478:9:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20836,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17478:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17466:22:54"
                  },
                  "returnParameters": {
                    "id": 20841,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20840,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "17520:1:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 20930,
                        "src": "17512:9:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20839,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17512:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17511:11:54"
                  },
                  "scope": 21279,
                  "src": "17452:504:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21027,
                    "nodeType": "Block",
                    "src": "18802:394:54",
                    "statements": [
                      {
                        "assignments": [
                          20941
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20941,
                            "mutability": "mutable",
                            "name": "c",
                            "nameLocation": "18820:1:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 21027,
                            "src": "18812:9:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20940,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18812:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20951,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20944,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 20942,
                                  "name": "d",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20935,
                                  "src": "18825:1:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 20943,
                                  "name": "d",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20935,
                                  "src": "18829:1:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "18825:5:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20945,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "18824:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20948,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 20946,
                                  "name": "s",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20933,
                                  "src": "18835:1:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "hexValue": "32",
                                  "id": 20947,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "18839:1:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "18835:5:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20949,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "18834:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18824:17:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18812:29:54"
                      },
                      {
                        "expression": {
                          "id": 20965,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20952,
                            "name": "c",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20941,
                            "src": "18851:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 20964,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20955,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 20953,
                                    "name": "c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20941,
                                    "src": "18856:1:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 20954,
                                    "name": "d",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20935,
                                    "src": "18860:1:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "18856:5:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 20956,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "18855:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 20962,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 20959,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 20957,
                                          "name": "N_A",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19163,
                                          "src": "18867:3:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "32",
                                          "id": 20958,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "18873:1:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "src": "18867:7:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 20960,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "18866:9:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "id": 20961,
                                    "name": "A_PRECISION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19166,
                                    "src": "18878:11:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "18866:23:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 20963,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "18865:25:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "18855:35:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18851:39:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20966,
                        "nodeType": "ExpressionStatement",
                        "src": "18851:39:54"
                      },
                      {
                        "assignments": [
                          20968
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20968,
                            "mutability": "mutable",
                            "name": "b",
                            "nameLocation": "18909:1:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 21027,
                            "src": "18901:9:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20967,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18901:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20978,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20977,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 20969,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20933,
                            "src": "18913:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 20975,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 20972,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 20970,
                                        "name": "d",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 20935,
                                        "src": "18919:1:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 20971,
                                        "name": "A_PRECISION",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19166,
                                        "src": "18923:11:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "18919:15:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 20973,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "18918:17:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 20974,
                                  "name": "N_A",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19163,
                                  "src": "18938:3:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "18918:23:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 20976,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "18917:25:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18913:29:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18901:41:54"
                      },
                      {
                        "assignments": [
                          20980
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 20980,
                            "mutability": "mutable",
                            "name": "yPrev",
                            "nameLocation": "18960:5:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 21027,
                            "src": "18952:13:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 20979,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18952:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 20981,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18952:13:54"
                      },
                      {
                        "expression": {
                          "id": 20984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 20982,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20938,
                            "src": "18975:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 20983,
                            "name": "d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20935,
                            "src": "18979:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "18975:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 20985,
                        "nodeType": "ExpressionStatement",
                        "src": "18975:5:54"
                      },
                      {
                        "body": {
                          "id": 21025,
                          "nodeType": "Block",
                          "src": "19036:154:54",
                          "statements": [
                            {
                              "expression": {
                                "id": 20998,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 20996,
                                  "name": "yPrev",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20980,
                                  "src": "19050:5:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 20997,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20938,
                                  "src": "19058:1:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19050:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 20999,
                              "nodeType": "ExpressionStatement",
                              "src": "19050:9:54"
                            },
                            {
                              "expression": {
                                "id": 21016,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 21000,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 20938,
                                  "src": "19073:1:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21015,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 21005,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 21003,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 21001,
                                            "name": "y",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20938,
                                            "src": "19078:1:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "id": 21002,
                                            "name": "y",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20938,
                                            "src": "19082:1:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "19078:5:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "id": 21004,
                                          "name": "c",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20941,
                                          "src": "19086:1:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "19078:9:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 21006,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "19077:11:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 21013,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 21011,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 21009,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 21007,
                                              "name": "y",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 20938,
                                              "src": "19092:1:54",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "hexValue": "32",
                                              "id": 21008,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "19096:1:54",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_2_by_1",
                                                "typeString": "int_const 2"
                                              },
                                              "value": "2"
                                            },
                                            "src": "19092:5:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "id": 21010,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20968,
                                            "src": "19100:1:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "19092:9:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 21012,
                                          "name": "d",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 20935,
                                          "src": "19104:1:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "19092:13:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 21014,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "19091:15:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "19077:29:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19073:33:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21017,
                              "nodeType": "ExpressionStatement",
                              "src": "19073:33:54"
                            },
                            {
                              "condition": {
                                "arguments": [
                                  {
                                    "id": 21020,
                                    "name": "yPrev",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20980,
                                    "src": "19134:5:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 21018,
                                    "name": "y",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20938,
                                    "src": "19124:1:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 21019,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "within1",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2851,
                                  "src": "19124:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (bool)"
                                  }
                                },
                                "id": 21021,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "19124:16:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 21024,
                              "nodeType": "IfStatement",
                              "src": "19120:60:54",
                              "trueBody": {
                                "id": 21023,
                                "nodeType": "Block",
                                "src": "19142:38:54",
                                "statements": [
                                  {
                                    "id": 21022,
                                    "nodeType": "Break",
                                    "src": "19160:5:54"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 20992,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 20990,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20987,
                            "src": "19011:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 20991,
                            "name": "MAX_LOOP_LIMIT",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19144,
                            "src": "19015:14:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19011:18:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21026,
                        "initializationExpression": {
                          "assignments": [
                            20987
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 20987,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "19004:1:54",
                              "nodeType": "VariableDeclaration",
                              "scope": 21026,
                              "src": "18996:9:54",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 20986,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "18996:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 20989,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 20988,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19008:1:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "18996:13:54"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 20994,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "19031:3:54",
                            "subExpression": {
                              "id": 20993,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20987,
                              "src": "19031:1:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 20995,
                          "nodeType": "ExpressionStatement",
                          "src": "19031:3:54"
                        },
                        "nodeType": "ForStatement",
                        "src": "18991:199:54"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 20931,
                    "nodeType": "StructuredDocumentation",
                    "src": "17962:726:54",
                    "text": "@notice Calculate the price of a token in the pool given\n precision-adjusted balances and a particular D and precision-adjusted\n array of balances.\n @dev This is accomplished via solving the quadratic equation iteratively.\n See the StableSwap paper and Curve.fi implementation for further details.\n x_1**2 + x1 * (sum' - (A*n**n - 1) * D / (A * n**n)) = D ** (n + 1) / (n ** (2 * n) * prod' * A)\n x_1**2 + b*x_1 = c\n x_1 = (x_1**2 + c) / (2*x_1 + b)\n @dev Originally https://github.com/saddle-finance/saddle-contract/blob/0b76f7fb519e34b878aa1d58cffc8d8dc0572c12/contracts/SwapUtils.sol#L276.\n @return y The price of the token, in the same precision as in xp."
                  },
                  "id": 21028,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getYD",
                  "nameLocation": "18702:6:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 20936,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20933,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "18726:1:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 21028,
                        "src": "18718:9:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20932,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18718:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 20935,
                        "mutability": "mutable",
                        "name": "d",
                        "nameLocation": "18760:1:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 21028,
                        "src": "18752:9:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20934,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18752:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18708:59:54"
                  },
                  "returnParameters": {
                    "id": 20939,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 20938,
                        "mutability": "mutable",
                        "name": "y",
                        "nameLocation": "18799:1:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 21028,
                        "src": "18791:9:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 20937,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18791:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18790:11:54"
                  },
                  "scope": 21279,
                  "src": "18693:503:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21062,
                    "nodeType": "Block",
                    "src": "19288:159:54",
                    "statements": [
                      {
                        "expression": {
                          "id": 21044,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21037,
                            "name": "fee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21035,
                            "src": "19298:3:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21043,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21040,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 21038,
                                    "name": "amountIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21032,
                                    "src": "19305:8:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 21039,
                                    "name": "swapFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19149,
                                    "src": "19316:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "19305:18:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 21041,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "19304:20:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 21042,
                              "name": "MAX_FEE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19147,
                              "src": "19327:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "19304:30:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19298:36:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21045,
                        "nodeType": "ExpressionStatement",
                        "src": "19298:36:54"
                      },
                      {
                        "assignments": [
                          21047
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21047,
                            "mutability": "mutable",
                            "name": "_barFee",
                            "nameLocation": "19352:7:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 21062,
                            "src": "19344:15:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21046,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19344:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21054,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21053,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 21050,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 21048,
                                  "name": "fee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21035,
                                  "src": "19363:3:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 21049,
                                  "name": "barFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19173,
                                  "src": "19369:6:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19363:12:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 21051,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "19362:14:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 21052,
                            "name": "MAX_FEE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19147,
                            "src": "19379:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19362:24:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19344:42:54"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 21056,
                              "name": "tokenIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21030,
                              "src": "19406:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 21057,
                              "name": "_barFee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21047,
                              "src": "19415:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 21058,
                              "name": "barFeeTo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19151,
                              "src": "19424:8:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 21059,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19434:5:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 21055,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20695,
                            "src": "19396:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 21060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19396:44:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21061,
                        "nodeType": "ExpressionStatement",
                        "src": "19396:44:54"
                      }
                    ]
                  },
                  "id": 21063,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_handleFee",
                  "nameLocation": "19211:10:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21033,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21030,
                        "mutability": "mutable",
                        "name": "tokenIn",
                        "nameLocation": "19230:7:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 21063,
                        "src": "19222:15:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21029,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19222:7:54",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21032,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nameLocation": "19247:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 21063,
                        "src": "19239:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21031,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19239:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19221:35:54"
                  },
                  "returnParameters": {
                    "id": 21036,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21035,
                        "mutability": "mutable",
                        "name": "fee",
                        "nameLocation": "19283:3:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 21063,
                        "src": "19275:11:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21034,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19275:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19274:13:54"
                  },
                  "scope": 21279,
                  "src": "19202:245:54",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21145,
                    "nodeType": "Block",
                    "src": "19747:442:54",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 21085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21081,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21079,
                              "name": "_reserve0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21070,
                              "src": "19761:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 21080,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19774:1:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "19761:14:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21084,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 21082,
                              "name": "_reserve1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21072,
                              "src": "19779:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 21083,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19792:1:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "19779:14:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "19761:32:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21090,
                        "nodeType": "IfStatement",
                        "src": "19757:51:54",
                        "trueBody": {
                          "expression": {
                            "components": [
                              {
                                "hexValue": "30",
                                "id": 21086,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "19803:1:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "hexValue": "30",
                                "id": 21087,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "19806:1:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "id": 21088,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "19802:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_rational_0_by_1_$",
                              "typeString": "tuple(int_const 0,int_const 0)"
                            }
                          },
                          "functionReturnParameters": 21078,
                          "id": 21089,
                          "nodeType": "Return",
                          "src": "19795:13:54"
                        }
                      },
                      {
                        "assignments": [
                          21092
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21092,
                            "mutability": "mutable",
                            "name": "amount1Optimal",
                            "nameLocation": "19826:14:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 21145,
                            "src": "19818:22:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21091,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19818:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21099,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 21095,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 21093,
                                  "name": "_amount0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21066,
                                  "src": "19844:8:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 21094,
                                  "name": "_reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21072,
                                  "src": "19855:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19844:20:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 21096,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "19843:22:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 21097,
                            "name": "_reserve0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21070,
                            "src": "19868:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19843:34:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19818:59:54"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 21100,
                            "name": "amount1Optimal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21092,
                            "src": "19892:14:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "id": 21101,
                            "name": "_amount1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21068,
                            "src": "19910:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19892:26:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 21143,
                          "nodeType": "Block",
                          "src": "20018:165:54",
                          "statements": [
                            {
                              "assignments": [
                                21120
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 21120,
                                  "mutability": "mutable",
                                  "name": "amount0Optimal",
                                  "nameLocation": "20040:14:54",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 21143,
                                  "src": "20032:22:54",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 21119,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20032:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 21127,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 21126,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 21123,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 21121,
                                        "name": "_amount1",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21068,
                                        "src": "20058:8:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 21122,
                                        "name": "_reserve0",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21070,
                                        "src": "20069:9:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "20058:20:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 21124,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "20057:22:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 21125,
                                  "name": "_reserve1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21072,
                                  "src": "20082:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20057:34:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "20032:59:54"
                            },
                            {
                              "expression": {
                                "id": 21141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 21128,
                                  "name": "token0Fee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21075,
                                  "src": "20105:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21140,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 21134,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 21129,
                                          "name": "swapFee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19149,
                                          "src": "20118:7:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 21132,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 21130,
                                                "name": "_amount0",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 21066,
                                                "src": "20129:8:54",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "id": 21131,
                                                "name": "amount0Optimal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 21120,
                                                "src": "20140:14:54",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "20129:25:54",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 21133,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "20128:27:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "20118:37:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 21135,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "20117:39:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 21138,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "32",
                                          "id": 21136,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "20160:1:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 21137,
                                          "name": "MAX_FEE",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19147,
                                          "src": "20164:7:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "20160:11:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 21139,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "20159:13:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "20117:55:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20105:67:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21142,
                              "nodeType": "ExpressionStatement",
                              "src": "20105:67:54"
                            }
                          ]
                        },
                        "id": 21144,
                        "nodeType": "IfStatement",
                        "src": "19888:295:54",
                        "trueBody": {
                          "id": 21118,
                          "nodeType": "Block",
                          "src": "19920:92:54",
                          "statements": [
                            {
                              "expression": {
                                "id": 21116,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 21103,
                                  "name": "token1Fee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21077,
                                  "src": "19934:9:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21115,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 21109,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 21104,
                                          "name": "swapFee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19149,
                                          "src": "19947:7:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "components": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 21107,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 21105,
                                                "name": "_amount1",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 21068,
                                                "src": "19958:8:54",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "id": 21106,
                                                "name": "amount1Optimal",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 21092,
                                                "src": "19969:14:54",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "19958:25:54",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 21108,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "19957:27:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "19947:37:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 21110,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "19946:39:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 21113,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "32",
                                          "id": 21111,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "19989:1:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "id": 21112,
                                          "name": "MAX_FEE",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 19147,
                                          "src": "19993:7:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "19989:11:54",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 21114,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "19988:13:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "19946:55:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "19934:67:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21117,
                              "nodeType": "ExpressionStatement",
                              "src": "19934:67:54"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21064,
                    "nodeType": "StructuredDocumentation",
                    "src": "19453:88:54",
                    "text": "@dev This fee is charged to cover for `swapFee` when users add unbalanced liquidity."
                  },
                  "id": 21146,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_nonOptimalMintFee",
                  "nameLocation": "19555:18:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21073,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21066,
                        "mutability": "mutable",
                        "name": "_amount0",
                        "nameLocation": "19591:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 21146,
                        "src": "19583:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21065,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19583:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21068,
                        "mutability": "mutable",
                        "name": "_amount1",
                        "nameLocation": "19617:8:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 21146,
                        "src": "19609:16:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21067,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19609:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21070,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "19643:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 21146,
                        "src": "19635:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21069,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19635:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21072,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "19670:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 21146,
                        "src": "19662:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21071,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19662:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19573:112:54"
                  },
                  "returnParameters": {
                    "id": 21078,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21075,
                        "mutability": "mutable",
                        "name": "token0Fee",
                        "nameLocation": "19717:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 21146,
                        "src": "19709:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21074,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19709:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21077,
                        "mutability": "mutable",
                        "name": "token1Fee",
                        "nameLocation": "19736:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 21146,
                        "src": "19728:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21076,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19728:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19708:38:54"
                  },
                  "scope": 21279,
                  "src": "19546:643:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2415
                  ],
                  "body": {
                    "id": 21173,
                    "nodeType": "Block",
                    "src": "20271:98:54",
                    "statements": [
                      {
                        "expression": {
                          "id": 21159,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21153,
                            "name": "assets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21151,
                            "src": "20281:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "32",
                                "id": 21157,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "20304:1:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                }
                              ],
                              "id": 21156,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "20290:13:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (address[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 21154,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "20294:7:54",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 21155,
                                "nodeType": "ArrayTypeName",
                                "src": "20294:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                  "typeString": "address[]"
                                }
                              }
                            },
                            "id": 21158,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20290:16:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "src": "20281:25:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 21160,
                        "nodeType": "ExpressionStatement",
                        "src": "20281:25:54"
                      },
                      {
                        "expression": {
                          "id": 21165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 21161,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21151,
                              "src": "20316:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 21163,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 21162,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20323:1:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "20316:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 21164,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19157,
                            "src": "20328:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "20316:18:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 21166,
                        "nodeType": "ExpressionStatement",
                        "src": "20316:18:54"
                      },
                      {
                        "expression": {
                          "id": 21171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 21167,
                              "name": "assets",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21151,
                              "src": "20344:6:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 21169,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 21168,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20351:1:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "20344:9:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 21170,
                            "name": "token1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19159,
                            "src": "20356:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "20344:18:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 21172,
                        "nodeType": "ExpressionStatement",
                        "src": "20344:18:54"
                      }
                    ]
                  },
                  "functionSelector": "67e4ac2c",
                  "id": 21174,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAssets",
                  "nameLocation": "20204:9:54",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21148,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "20228:8:54"
                  },
                  "parameters": {
                    "id": 21147,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20213:2:54"
                  },
                  "returnParameters": {
                    "id": 21152,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21151,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "20263:6:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 21174,
                        "src": "20246:23:54",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 21149,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "20246:7:54",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 21150,
                          "nodeType": "ArrayTypeName",
                          "src": "20246:9:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20245:25:54"
                  },
                  "scope": 21279,
                  "src": "20195:174:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2423
                  ],
                  "body": {
                    "id": 21250,
                    "nodeType": "Block",
                    "src": "20472:546:54",
                    "statements": [
                      {
                        "assignments": [
                          21183,
                          21185
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21183,
                            "mutability": "mutable",
                            "name": "tokenIn",
                            "nameLocation": "20491:7:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 21250,
                            "src": "20483:15:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 21182,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "20483:7:54",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21185,
                            "mutability": "mutable",
                            "name": "amountIn",
                            "nameLocation": "20508:8:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 21250,
                            "src": "20500:16:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21184,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20500:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21195,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 21188,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21176,
                              "src": "20531:4:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 21190,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "20538:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 21189,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20538:7:54",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 21192,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "20547:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 21191,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20547:7:54",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 21193,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "20537:18:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 21186,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "20520:3:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 21187,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "20520:10:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 21194,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20520:36:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$",
                            "typeString": "tuple(address payable,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20482:74:54"
                      },
                      {
                        "assignments": [
                          21197,
                          21199
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21197,
                            "mutability": "mutable",
                            "name": "_reserve0",
                            "nameLocation": "20575:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 21250,
                            "src": "20567:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21196,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20567:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21199,
                            "mutability": "mutable",
                            "name": "_reserve1",
                            "nameLocation": "20594:9:54",
                            "nodeType": "VariableDeclaration",
                            "scope": 21250,
                            "src": "20586:17:54",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21198,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "20586:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21202,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 21200,
                            "name": "_getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20355,
                            "src": "20607:12:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function () view returns (uint256,uint256)"
                            }
                          },
                          "id": 21201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20607:14:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20566:55:54"
                      },
                      {
                        "expression": {
                          "id": 21208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21203,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21185,
                            "src": "20631:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 21205,
                                "name": "tokenIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21183,
                                "src": "20652:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 21206,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21185,
                                "src": "20661:8:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 21204,
                              "name": "_toAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20500,
                              "src": "20642:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (address,uint256) view returns (uint256)"
                              }
                            },
                            "id": 21207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "20642:28:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20631:39:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21209,
                        "nodeType": "ExpressionStatement",
                        "src": "20631:39:54"
                      },
                      {
                        "expression": {
                          "id": 21217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21210,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21185,
                            "src": "20680:8:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 21216,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 21213,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 21211,
                                    "name": "amountIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21185,
                                    "src": "20693:8:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 21212,
                                    "name": "swapFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 19149,
                                    "src": "20704:7:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "20693:18:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 21214,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "20692:20:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 21215,
                              "name": "MAX_FEE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19147,
                              "src": "20715:7:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "20692:30:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20680:42:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21218,
                        "nodeType": "ExpressionStatement",
                        "src": "20680:42:54"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 21221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 21219,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21183,
                            "src": "20737:7:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 21220,
                            "name": "token0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19157,
                            "src": "20748:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "20737:17:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 21248,
                          "nodeType": "Block",
                          "src": "20855:157:54",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 21235,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 21233,
                                      "name": "tokenIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21183,
                                      "src": "20877:7:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 21234,
                                      "name": "token1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19159,
                                      "src": "20888:6:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "20877:17:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e56414c49445f494e5055545f544f4b454e",
                                    "id": 21236,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20896:21:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                      "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                    },
                                    "value": "INVALID_INPUT_TOKEN"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_40b29808ffc530938d46e4fe40f248c8e886a8589f08acdfeabd5d68206527e6",
                                      "typeString": "literal_string \"INVALID_INPUT_TOKEN\""
                                    }
                                  ],
                                  "id": 21232,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "20869:7:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 21237,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20869:49:54",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 21238,
                              "nodeType": "ExpressionStatement",
                              "src": "20869:49:54"
                            },
                            {
                              "expression": {
                                "id": 21246,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 21239,
                                  "name": "finalAmountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21180,
                                  "src": "20932:14:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 21241,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21185,
                                      "src": "20963:8:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 21242,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21197,
                                      "src": "20973:9:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 21243,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21199,
                                      "src": "20984:9:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "66616c7365",
                                      "id": 21244,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "20995:5:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 21240,
                                    "name": "_getAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20627,
                                    "src": "20949:13:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256,bool) view returns (uint256)"
                                    }
                                  },
                                  "id": 21245,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "20949:52:54",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20932:69:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21247,
                              "nodeType": "ExpressionStatement",
                              "src": "20932:69:54"
                            }
                          ]
                        },
                        "id": 21249,
                        "nodeType": "IfStatement",
                        "src": "20733:279:54",
                        "trueBody": {
                          "id": 21231,
                          "nodeType": "Block",
                          "src": "20756:93:54",
                          "statements": [
                            {
                              "expression": {
                                "id": 21229,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 21222,
                                  "name": "finalAmountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21180,
                                  "src": "20770:14:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 21224,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21185,
                                      "src": "20801:8:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 21225,
                                      "name": "_reserve0",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21197,
                                      "src": "20811:9:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 21226,
                                      "name": "_reserve1",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21199,
                                      "src": "20822:9:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "hexValue": "74727565",
                                      "id": 21227,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "20833:4:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 21223,
                                    "name": "_getAmountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20627,
                                    "src": "20787:13:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256,bool) view returns (uint256)"
                                    }
                                  },
                                  "id": 21228,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "20787:51:54",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20770:68:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 21230,
                              "nodeType": "ExpressionStatement",
                              "src": "20770:68:54"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "functionSelector": "a8f1f52e",
                  "id": 21251,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountOut",
                  "nameLocation": "20384:12:54",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21178,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "20430:8:54"
                  },
                  "parameters": {
                    "id": 21177,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21176,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "20412:4:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 21251,
                        "src": "20397:19:54",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 21175,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "20397:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20396:21:54"
                  },
                  "returnParameters": {
                    "id": 21181,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21180,
                        "mutability": "mutable",
                        "name": "finalAmountOut",
                        "nameLocation": "20456:14:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 21251,
                        "src": "20448:22:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21179,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20448:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20447:24:54"
                  },
                  "scope": 21279,
                  "src": "20375:643:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2431
                  ],
                  "body": {
                    "id": 21262,
                    "nodeType": "Block",
                    "src": "21100:25:54",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 21259,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "21110:6:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 21260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21110:8:54",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21261,
                        "nodeType": "ExpressionStatement",
                        "src": "21110:8:54"
                      }
                    ]
                  },
                  "functionSelector": "499a3c50",
                  "id": 21263,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountIn",
                  "nameLocation": "21033:11:54",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21255,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "21073:8:54"
                  },
                  "parameters": {
                    "id": 21254,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21253,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21263,
                        "src": "21045:14:54",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 21252,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "21045:5:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21044:16:54"
                  },
                  "returnParameters": {
                    "id": 21258,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21257,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 21263,
                        "src": "21091:7:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21256,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21091:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21090:9:54"
                  },
                  "scope": 21279,
                  "src": "21024:101:54",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21277,
                    "nodeType": "Block",
                    "src": "21213:56:54",
                    "statements": [
                      {
                        "expression": {
                          "id": 21275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 21270,
                                "name": "_reserve0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21266,
                                "src": "21224:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 21271,
                                "name": "_reserve1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21268,
                                "src": "21235:9:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 21272,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "21223:22:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 21273,
                              "name": "_getReserves",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20355,
                              "src": "21248:12:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function () view returns (uint256,uint256)"
                              }
                            },
                            "id": 21274,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "21248:14:54",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "21223:39:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21276,
                        "nodeType": "ExpressionStatement",
                        "src": "21223:39:54"
                      }
                    ]
                  },
                  "functionSelector": "0902f1ac",
                  "id": 21278,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReserves",
                  "nameLocation": "21140:11:54",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21264,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21151:2:54"
                  },
                  "returnParameters": {
                    "id": 21269,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21266,
                        "mutability": "mutable",
                        "name": "_reserve0",
                        "nameLocation": "21183:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 21278,
                        "src": "21175:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21265,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21175:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21268,
                        "mutability": "mutable",
                        "name": "_reserve1",
                        "nameLocation": "21202:9:54",
                        "nodeType": "VariableDeclaration",
                        "scope": 21278,
                        "src": "21194:17:54",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21267,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21194:7:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21174:38:54"
                  },
                  "scope": 21279,
                  "src": "21131:138:54",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 21280,
              "src": "625:20646:54",
              "usedErrors": []
            }
          ],
          "src": "46:21226:54"
        },
        "id": 54
      },
      "contracts/pool/franchised/FranchisedHybridPoolFactory.sol": {
        "ast": {
          "absolutePath": "contracts/pool/franchised/FranchisedHybridPoolFactory.sol",
          "exportedSymbols": {
            "FranchisedHybridPool": [
              21279
            ],
            "FranchisedHybridPoolFactory": [
              21413
            ],
            "IBentoBoxMinimal": [
              2253
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "ITridentCallee": [
              2482
            ],
            "IWhiteListManager": [
              2612
            ],
            "MathUtils": [
              2852
            ],
            "PoolDeployer": [
              11887
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "TridentFranchisedERC20": [
              23629
            ]
          },
          "id": 21414,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 21281,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:55"
            },
            {
              "absolutePath": "contracts/pool/franchised/FranchisedHybridPool.sol",
              "file": "./FranchisedHybridPool.sol",
              "id": 21282,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 21414,
              "sourceUnit": 21280,
              "src": "72:36:55",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pool/PoolDeployer.sol",
              "file": "../PoolDeployer.sol",
              "id": 21283,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 21414,
              "sourceUnit": 11888,
              "src": "109:29:55",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 21285,
                    "name": "PoolDeployer",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 11887,
                    "src": "309:12:55"
                  },
                  "id": 21286,
                  "nodeType": "InheritanceSpecifier",
                  "src": "309:12:55"
                }
              ],
              "contractDependencies": [
                21279
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 21284,
                "nodeType": "StructuredDocumentation",
                "src": "140:129:55",
                "text": "@notice Contract for deploying Trident exchange Franchised Hybrid Product Pool with configurations.\n @author Mudit Gupta."
              },
              "fullyImplemented": true,
              "id": 21413,
              "linearizedBaseContracts": [
                21413,
                11887
              ],
              "name": "FranchisedHybridPoolFactory",
              "nameLocation": "278:27:55",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 21294,
                    "nodeType": "Block",
                    "src": "395:2:55",
                    "statements": []
                  },
                  "id": 21295,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 21291,
                          "name": "_masterDeployer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21288,
                          "src": "378:15:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 21292,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 21290,
                        "name": "PoolDeployer",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 11887,
                        "src": "365:12:55"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "365:29:55"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21289,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21288,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "348:15:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 21295,
                        "src": "340:23:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21287,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "340:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "339:25:55"
                  },
                  "returnParameters": {
                    "id": 21293,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "395:0:55"
                  },
                  "scope": 21413,
                  "src": "328:69:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21411,
                    "nodeType": "Block",
                    "src": "481:893:55",
                    "statements": [
                      {
                        "assignments": [
                          21303,
                          21305,
                          21307,
                          21309,
                          21311,
                          21313,
                          21315
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21303,
                            "mutability": "mutable",
                            "name": "tokenA",
                            "nameLocation": "500:6:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 21411,
                            "src": "492:14:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 21302,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "492:7:55",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21305,
                            "mutability": "mutable",
                            "name": "tokenB",
                            "nameLocation": "516:6:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 21411,
                            "src": "508:14:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 21304,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "508:7:55",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21307,
                            "mutability": "mutable",
                            "name": "swapFee",
                            "nameLocation": "532:7:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 21411,
                            "src": "524:15:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21306,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "524:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21309,
                            "mutability": "mutable",
                            "name": "a",
                            "nameLocation": "549:1:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 21411,
                            "src": "541:9:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21308,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "541:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21311,
                            "mutability": "mutable",
                            "name": "whiteListManager",
                            "nameLocation": "560:16:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 21411,
                            "src": "552:24:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 21310,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "552:7:55",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21313,
                            "mutability": "mutable",
                            "name": "operator",
                            "nameLocation": "586:8:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 21411,
                            "src": "578:16:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 21312,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "578:7:55",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21315,
                            "mutability": "mutable",
                            "name": "level2",
                            "nameLocation": "601:6:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 21411,
                            "src": "596:11:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 21314,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "596:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21335,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 21318,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21297,
                              "src": "635:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 21320,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "661:7:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 21319,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "661:7:55",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 21322,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "670:7:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 21321,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "670:7:55",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 21324,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "679:7:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 21323,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "679:7:55",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 21326,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "688:7:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 21325,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "688:7:55",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 21328,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "697:7:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 21327,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "697:7:55",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 21330,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "706:7:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 21329,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "706:7:55",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 21332,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "715:4:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 21331,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "715:4:55",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 21333,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "660:60:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint256),type(uint256),type(address),type(address),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address),type(address),type(uint256),type(uint256),type(address),type(address),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 21316,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "611:3:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 21317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "611:10:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 21334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "611:119:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_uint256_$_t_uint256_$_t_address_payable_$_t_address_payable_$_t_bool_$",
                            "typeString": "tuple(address payable,address payable,uint256,uint256,address payable,address payable,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "491:239:55"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 21338,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 21336,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21303,
                            "src": "744:6:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 21337,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21305,
                            "src": "753:6:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "744:15:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21348,
                        "nodeType": "IfStatement",
                        "src": "740:81:55",
                        "trueBody": {
                          "id": 21347,
                          "nodeType": "Block",
                          "src": "761:60:55",
                          "statements": [
                            {
                              "expression": {
                                "id": 21345,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 21339,
                                      "name": "tokenA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21303,
                                      "src": "776:6:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 21340,
                                      "name": "tokenB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21305,
                                      "src": "784:6:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "id": 21341,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "775:16:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                    "typeString": "tuple(address,address)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "components": [
                                    {
                                      "id": 21342,
                                      "name": "tokenB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21305,
                                      "src": "795:6:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 21343,
                                      "name": "tokenA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21303,
                                      "src": "803:6:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "id": 21344,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "794:16:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                    "typeString": "tuple(address,address)"
                                  }
                                },
                                "src": "775:35:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 21346,
                              "nodeType": "ExpressionStatement",
                              "src": "775:35:55"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 21360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21349,
                            "name": "_deployData",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21297,
                            "src": "870:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 21352,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21303,
                                "src": "895:6:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 21353,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21305,
                                "src": "903:6:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 21354,
                                "name": "swapFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21307,
                                "src": "911:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 21355,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21309,
                                "src": "920:1:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 21356,
                                "name": "whiteListManager",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21311,
                                "src": "923:16:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 21357,
                                "name": "operator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21313,
                                "src": "941:8:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 21358,
                                "name": "level2",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21315,
                                "src": "951:6:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "expression": {
                                "id": 21350,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "884:3:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 21351,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encode",
                              "nodeType": "MemberAccess",
                              "src": "884:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 21359,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "884:74:55",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "src": "870:88:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 21361,
                        "nodeType": "ExpressionStatement",
                        "src": "870:88:55"
                      },
                      {
                        "assignments": [
                          21366
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21366,
                            "mutability": "mutable",
                            "name": "tokens",
                            "nameLocation": "985:6:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 21411,
                            "src": "968:23:55",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 21364,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "968:7:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 21365,
                              "nodeType": "ArrayTypeName",
                              "src": "968:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21372,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "32",
                              "id": 21370,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1008:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              }
                            ],
                            "id": 21369,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "994:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (address[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 21367,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "998:7:55",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 21368,
                              "nodeType": "ArrayTypeName",
                              "src": "998:9:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            }
                          },
                          "id": 21371,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "994:16:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "968:42:55"
                      },
                      {
                        "expression": {
                          "id": 21377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 21373,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21366,
                              "src": "1020:6:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 21375,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 21374,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1027:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1020:9:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 21376,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21303,
                            "src": "1032:6:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1020:18:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 21378,
                        "nodeType": "ExpressionStatement",
                        "src": "1020:18:55"
                      },
                      {
                        "expression": {
                          "id": 21383,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 21379,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21366,
                              "src": "1048:6:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 21381,
                            "indexExpression": {
                              "hexValue": "31",
                              "id": 21380,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1055:1:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1048:9:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 21382,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21305,
                            "src": "1060:6:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1048:18:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 21384,
                        "nodeType": "ExpressionStatement",
                        "src": "1048:18:55"
                      },
                      {
                        "assignments": [
                          21386
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21386,
                            "mutability": "mutable",
                            "name": "salt",
                            "nameLocation": "1204:4:55",
                            "nodeType": "VariableDeclaration",
                            "scope": 21411,
                            "src": "1196:12:55",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 21385,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1196:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21390,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 21388,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21297,
                              "src": "1221:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 21387,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "1211:9:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 21389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1211:22:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1196:37:55"
                      },
                      {
                        "expression": {
                          "id": 21403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21391,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21300,
                            "src": "1243:4:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 21399,
                                    "name": "_deployData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21297,
                                    "src": "1295:11:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 21400,
                                    "name": "masterDeployer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11681,
                                    "src": "1308:14:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 21396,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "1258:24:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_creation_nonpayable$_t_bytes_memory_ptr_$_t_address_$returns$_t_contract$_FranchisedHybridPool_$21279_$",
                                      "typeString": "function (bytes memory,address) returns (contract FranchisedHybridPool)"
                                    },
                                    "typeName": {
                                      "id": 21395,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 21394,
                                        "name": "FranchisedHybridPool",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 21279,
                                        "src": "1262:20:55"
                                      },
                                      "referencedDeclaration": 21279,
                                      "src": "1262:20:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_FranchisedHybridPool_$21279",
                                        "typeString": "contract FranchisedHybridPool"
                                      }
                                    }
                                  },
                                  "id": 21398,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "names": [
                                    "salt"
                                  ],
                                  "nodeType": "FunctionCallOptions",
                                  "options": [
                                    {
                                      "id": 21397,
                                      "name": "salt",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21386,
                                      "src": "1289:4:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "src": "1258:36:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_creation_nonpayable$_t_bytes_memory_ptr_$_t_address_$returns$_t_contract$_FranchisedHybridPool_$21279_$salt",
                                    "typeString": "function (bytes memory,address) returns (contract FranchisedHybridPool)"
                                  }
                                },
                                "id": 21401,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1258:65:55",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_FranchisedHybridPool_$21279",
                                  "typeString": "contract FranchisedHybridPool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_FranchisedHybridPool_$21279",
                                  "typeString": "contract FranchisedHybridPool"
                                }
                              ],
                              "id": 21393,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1250:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 21392,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1250:7:55",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 21402,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1250:74:55",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1243:81:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 21404,
                        "nodeType": "ExpressionStatement",
                        "src": "1243:81:55"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 21406,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21300,
                              "src": "1348:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 21407,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21366,
                              "src": "1354:6:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            {
                              "id": 21408,
                              "name": "salt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21386,
                              "src": "1362:4:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 21405,
                            "name": "_registerPool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11818,
                            "src": "1334:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_address_$dyn_memory_ptr_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address[] memory,bytes32)"
                            }
                          },
                          "id": 21409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1334:33:55",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21410,
                        "nodeType": "ExpressionStatement",
                        "src": "1334:33:55"
                      }
                    ]
                  },
                  "functionSelector": "27c3cae1",
                  "id": 21412,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deployPool",
                  "nameLocation": "412:10:55",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21298,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21297,
                        "mutability": "mutable",
                        "name": "_deployData",
                        "nameLocation": "436:11:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 21412,
                        "src": "423:24:55",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 21296,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "423:5:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "422:26:55"
                  },
                  "returnParameters": {
                    "id": 21301,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21300,
                        "mutability": "mutable",
                        "name": "pool",
                        "nameLocation": "475:4:55",
                        "nodeType": "VariableDeclaration",
                        "scope": 21412,
                        "src": "467:12:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21299,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "467:7:55",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "466:14:55"
                  },
                  "scope": 21413,
                  "src": "403:971:55",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 21414,
              "src": "269:1107:55",
              "usedErrors": [
                11694,
                11696,
                11698
              ]
            }
          ],
          "src": "46:1331:55"
        },
        "id": 55
      },
      "contracts/pool/franchised/FranchisedIndexPool.sol": {
        "ast": {
          "absolutePath": "contracts/pool/franchised/FranchisedIndexPool.sol",
          "exportedSymbols": {
            "FranchisedIndexPool": [
              23195
            ],
            "IBentoBoxMinimal": [
              2253
            ],
            "IMasterDeployer": [
              2356
            ],
            "IPool": [
              2450
            ],
            "ITridentCallee": [
              2482
            ],
            "IWhiteListManager": [
              2612
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "TridentFranchisedERC20": [
              23629
            ]
          },
          "id": 23196,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 21415,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:56"
            },
            {
              "absolutePath": "contracts/interfaces/IBentoBoxMinimal.sol",
              "file": "../../interfaces/IBentoBoxMinimal.sol",
              "id": 21416,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 23196,
              "sourceUnit": 2254,
              "src": "72:47:56",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IMasterDeployer.sol",
              "file": "../../interfaces/IMasterDeployer.sol",
              "id": 21417,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 23196,
              "sourceUnit": 2357,
              "src": "120:46:56",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IPool.sol",
              "file": "../../interfaces/IPool.sol",
              "id": 21418,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 23196,
              "sourceUnit": 2451,
              "src": "167:36:56",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/ITridentCallee.sol",
              "file": "../../interfaces/ITridentCallee.sol",
              "id": 21419,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 23196,
              "sourceUnit": 2483,
              "src": "204:45:56",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/pool/franchised/TridentFranchisedERC20.sol",
              "file": "./TridentFranchisedERC20.sol",
              "id": 21420,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 23196,
              "sourceUnit": 23630,
              "src": "250:38:56",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 21422,
                    "name": "IPool",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2450,
                    "src": "602:5:56"
                  },
                  "id": 21423,
                  "nodeType": "InheritanceSpecifier",
                  "src": "602:5:56"
                },
                {
                  "baseName": {
                    "id": 21424,
                    "name": "TridentFranchisedERC20",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 23629,
                    "src": "609:22:56"
                  },
                  "id": 21425,
                  "nodeType": "InheritanceSpecifier",
                  "src": "609:22:56"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 21421,
                "nodeType": "StructuredDocumentation",
                "src": "290:280:56",
                "text": "@notice Trident exchange franchised pool template with constant mean formula for swapping among an array of ERC-20 tokens.\n @dev The reserves are stored as bento shares.\n      The curve is applied to shares as well. This pool does not care about the underlying amounts."
              },
              "fullyImplemented": true,
              "id": 23195,
              "linearizedBaseContracts": [
                23195,
                23629,
                2450
              ],
              "name": "FranchisedIndexPool",
              "nameLocation": "579:19:56",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 21435,
                  "name": "Mint",
                  "nameLocation": "644:4:56",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 21434,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21427,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "665:6:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 21435,
                        "src": "649:22:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21426,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "649:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21429,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "tokenIn",
                        "nameLocation": "681:7:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 21435,
                        "src": "673:15:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21428,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "673:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21431,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amountIn",
                        "nameLocation": "698:8:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 21435,
                        "src": "690:16:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21430,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "690:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21433,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "724:9:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 21435,
                        "src": "708:25:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21432,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "708:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "648:86:56"
                  },
                  "src": "638:97:56"
                },
                {
                  "anonymous": false,
                  "id": 21445,
                  "name": "Burn",
                  "nameLocation": "746:4:56",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 21444,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21437,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "767:6:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 21445,
                        "src": "751:22:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21436,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "751:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21439,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "tokenOut",
                        "nameLocation": "783:8:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 21445,
                        "src": "775:16:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21438,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "775:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21441,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "801:9:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 21445,
                        "src": "793:17:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21440,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "793:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21443,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "828:9:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 21445,
                        "src": "812:25:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21442,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "812:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "750:88:56"
                  },
                  "src": "740:99:56"
                },
                {
                  "constant": false,
                  "functionSelector": "54cf2aeb",
                  "id": 21447,
                  "mutability": "immutable",
                  "name": "swapFee",
                  "nameLocation": "870:7:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "845:32:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21446,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "845:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "0c0a0cd2",
                  "id": 21449,
                  "mutability": "immutable",
                  "name": "barFeeTo",
                  "nameLocation": "909:8:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "884:33:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21448,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "884:7:56",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "4da31827",
                  "id": 21451,
                  "mutability": "immutable",
                  "name": "bento",
                  "nameLocation": "948:5:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "923:30:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21450,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "923:7:56",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "cf58879a",
                  "id": 21453,
                  "mutability": "immutable",
                  "name": "masterDeployer",
                  "nameLocation": "984:14:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "959:39:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 21452,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "959:7:56",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 21458,
                  "mutability": "constant",
                  "name": "BASE",
                  "nameLocation": "1031:4:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "1005:39:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21454,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1005:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    },
                    "id": 21457,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "3130",
                      "id": 21455,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1038:2:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "**",
                    "rightExpression": {
                      "hexValue": "3138",
                      "id": 21456,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1042:2:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_18_by_1",
                        "typeString": "int_const 18"
                      },
                      "value": "18"
                    },
                    "src": "1038:6:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1000000000000000000_by_1",
                      "typeString": "int_const 1000000000000000000"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 21461,
                  "mutability": "constant",
                  "name": "MIN_TOKENS",
                  "nameLocation": "1076:10:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "1050:40:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21459,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1050:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "32",
                    "id": 21460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1089:1:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2_by_1",
                      "typeString": "int_const 2"
                    },
                    "value": "2"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 21464,
                  "mutability": "constant",
                  "name": "MAX_TOKENS",
                  "nameLocation": "1122:10:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "1096:40:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21462,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1096:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "38",
                    "id": 21463,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1135:1:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_8_by_1",
                      "typeString": "int_const 8"
                    },
                    "value": "8"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 21471,
                  "mutability": "constant",
                  "name": "MIN_FEE",
                  "nameLocation": "1168:7:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "1142:48:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21465,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1142:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 21470,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 21466,
                      "name": "BASE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21458,
                      "src": "1178:4:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_rational_1000000_by_1",
                        "typeString": "int_const 1000000"
                      },
                      "id": 21469,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "hexValue": "3130",
                        "id": 21467,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1185:2:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "**",
                      "rightExpression": {
                        "hexValue": "36",
                        "id": 21468,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1189:1:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_6_by_1",
                          "typeString": "int_const 6"
                        },
                        "value": "6"
                      },
                      "src": "1185:5:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1000000_by_1",
                        "typeString": "int_const 1000000"
                      }
                    },
                    "src": "1178:12:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 21476,
                  "mutability": "constant",
                  "name": "MAX_FEE",
                  "nameLocation": "1222:7:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "1196:45:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21472,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1196:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 21475,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 21473,
                      "name": "BASE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21458,
                      "src": "1232:4:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "hexValue": "3130",
                      "id": 21474,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1239:2:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10_by_1",
                        "typeString": "int_const 10"
                      },
                      "value": "10"
                    },
                    "src": "1232:9:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 21479,
                  "mutability": "constant",
                  "name": "MIN_WEIGHT",
                  "nameLocation": "1273:10:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "1247:43:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21477,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1247:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "id": 21478,
                    "name": "BASE",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 21458,
                    "src": "1286:4:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 21484,
                  "mutability": "constant",
                  "name": "MAX_WEIGHT",
                  "nameLocation": "1322:10:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "1296:48:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21480,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1296:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 21483,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 21481,
                      "name": "BASE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21458,
                      "src": "1335:4:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "hexValue": "3530",
                      "id": 21482,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1342:2:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_50_by_1",
                        "typeString": "int_const 50"
                      },
                      "value": "50"
                    },
                    "src": "1335:9:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 21489,
                  "mutability": "constant",
                  "name": "MAX_TOTAL_WEIGHT",
                  "nameLocation": "1376:16:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "1350:54:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21485,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1350:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 21488,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 21486,
                      "name": "BASE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21458,
                      "src": "1395:4:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "hexValue": "3530",
                      "id": 21487,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1402:2:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_50_by_1",
                        "typeString": "int_const 50"
                      },
                      "value": "50"
                    },
                    "src": "1395:9:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 21496,
                  "mutability": "constant",
                  "name": "MIN_BALANCE",
                  "nameLocation": "1436:11:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "1410:53:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21490,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1410:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 21495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 21491,
                      "name": "BASE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21458,
                      "src": "1450:4:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_rational_1000000000000_by_1",
                        "typeString": "int_const 1000000000000"
                      },
                      "id": 21494,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "hexValue": "3130",
                        "id": 21492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1457:2:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "**",
                      "rightExpression": {
                        "hexValue": "3132",
                        "id": 21493,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1461:2:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_12_by_1",
                          "typeString": "int_const 12"
                        },
                        "value": "12"
                      },
                      "src": "1457:6:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1000000000000_by_1",
                        "typeString": "int_const 1000000000000"
                      }
                    },
                    "src": "1450:13:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 21501,
                  "mutability": "constant",
                  "name": "INIT_POOL_SUPPLY",
                  "nameLocation": "1495:16:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "1469:55:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21497,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1469:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 21500,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 21498,
                      "name": "BASE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21458,
                      "src": "1514:4:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "*",
                    "rightExpression": {
                      "hexValue": "313030",
                      "id": 21499,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1521:3:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_100_by_1",
                        "typeString": "int_const 100"
                      },
                      "value": "100"
                    },
                    "src": "1514:10:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 21504,
                  "mutability": "constant",
                  "name": "MIN_POW_BASE",
                  "nameLocation": "1556:12:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "1530:42:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21502,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1530:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "31",
                    "id": 21503,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1571:1:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "1"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 21512,
                  "mutability": "constant",
                  "name": "MAX_POW_BASE",
                  "nameLocation": "1604:12:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "1578:55:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21505,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1578:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 21511,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21508,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "hexValue": "32",
                            "id": 21506,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1620:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 21507,
                            "name": "BASE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21458,
                            "src": "1624:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1620:8:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 21509,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "1619:10:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 21510,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1632:1:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1619:14:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 21519,
                  "mutability": "constant",
                  "name": "POW_PRECISION",
                  "nameLocation": "1665:13:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "1639:55:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21513,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1639:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 21518,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 21514,
                      "name": "BASE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21458,
                      "src": "1681:4:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "commonType": {
                        "typeIdentifier": "t_rational_10000000000_by_1",
                        "typeString": "int_const 10000000000"
                      },
                      "id": 21517,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "leftExpression": {
                        "hexValue": "3130",
                        "id": 21515,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1688:2:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "**",
                      "rightExpression": {
                        "hexValue": "3130",
                        "id": 21516,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1692:2:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_10_by_1",
                          "typeString": "int_const 10"
                        },
                        "value": "10"
                      },
                      "src": "1688:6:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_10000000000_by_1",
                        "typeString": "int_const 10000000000"
                      }
                    },
                    "src": "1681:13:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 21524,
                  "mutability": "constant",
                  "name": "MAX_IN_RATIO",
                  "nameLocation": "1726:12:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "1700:49:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21520,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1700:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 21523,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 21521,
                      "name": "BASE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21458,
                      "src": "1741:4:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "hexValue": "32",
                      "id": 21522,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1748:1:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "src": "1741:8:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 21532,
                  "mutability": "constant",
                  "name": "MAX_OUT_RATIO",
                  "nameLocation": "1781:13:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "1755:56:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21525,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1755:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 21531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21528,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 21526,
                            "name": "BASE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21458,
                            "src": "1798:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "hexValue": "33",
                            "id": 21527,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1805:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_3_by_1",
                              "typeString": "int_const 3"
                            },
                            "value": "3"
                          },
                          "src": "1798:8:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 21529,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "1797:10:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 21530,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1810:1:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1797:14:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21534,
                  "mutability": "mutable",
                  "name": "totalWeight",
                  "nameLocation": "1835:11:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "1818:28:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint136",
                    "typeString": "uint136"
                  },
                  "typeName": {
                    "id": 21533,
                    "name": "uint136",
                    "nodeType": "ElementaryTypeName",
                    "src": "1818:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint136",
                      "typeString": "uint136"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21537,
                  "mutability": "mutable",
                  "name": "tokens",
                  "nameLocation": "1871:6:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "1852:25:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 21535,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1852:7:56",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 21536,
                    "nodeType": "ArrayTypeName",
                    "src": "1852:9:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "c14ad802",
                  "id": 21539,
                  "mutability": "mutable",
                  "name": "barFee",
                  "nameLocation": "1899:6:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "1884:21:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21538,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1884:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2408
                  ],
                  "constant": true,
                  "functionSelector": "a69840a8",
                  "id": 21543,
                  "mutability": "constant",
                  "name": "poolIdentifier",
                  "nameLocation": "1945:14:56",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 21541,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1936:8:56"
                  },
                  "scope": 23195,
                  "src": "1912:75:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 21540,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1912:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "54726964656e743a4672616e636869736564496e646578",
                    "id": 21542,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1962:25:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_f28dfb03226ce3455b79efd54026d88dfd2b6f3f92971e0a24cd411e553fff76",
                      "typeString": "literal_string \"Trident:FranchisedIndex\""
                    },
                    "value": "Trident:FranchisedIndex"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 21545,
                  "mutability": "mutable",
                  "name": "unlocked",
                  "nameLocation": "2011:8:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "1994:25:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21544,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1994:7:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 21563,
                    "nodeType": "Block",
                    "src": "2041:104:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21550,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21548,
                                "name": "unlocked",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21545,
                                "src": "2059:8:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 21549,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2071:1:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "2059:13:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4c4f434b4544",
                              "id": 21551,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2074:8:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b",
                                "typeString": "literal_string \"LOCKED\""
                              },
                              "value": "LOCKED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_eb4a01a12a4bbfa1bc780c16c5b2b6720cdf4f3c29cabd8c0f76fec3a575096b",
                                "typeString": "literal_string \"LOCKED\""
                              }
                            ],
                            "id": 21547,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2051:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2051:32:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21553,
                        "nodeType": "ExpressionStatement",
                        "src": "2051:32:56"
                      },
                      {
                        "expression": {
                          "id": 21556,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21554,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21545,
                            "src": "2093:8:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "32",
                            "id": 21555,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2104:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "2093:12:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21557,
                        "nodeType": "ExpressionStatement",
                        "src": "2093:12:56"
                      },
                      {
                        "id": 21558,
                        "nodeType": "PlaceholderStatement",
                        "src": "2115:1:56"
                      },
                      {
                        "expression": {
                          "id": 21561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21559,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21545,
                            "src": "2126:8:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 21560,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2137:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2126:12:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21562,
                        "nodeType": "ExpressionStatement",
                        "src": "2126:12:56"
                      }
                    ]
                  },
                  "id": 21564,
                  "name": "lock",
                  "nameLocation": "2034:4:56",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 21546,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2038:2:56"
                  },
                  "src": "2025:120:56",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "functionSelector": "469e9067",
                  "id": 21569,
                  "mutability": "mutable",
                  "name": "records",
                  "nameLocation": "2185:7:56",
                  "nodeType": "VariableDeclaration",
                  "scope": 23195,
                  "src": "2151:41:56",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$21574_storage_$",
                    "typeString": "mapping(address => struct FranchisedIndexPool.Record)"
                  },
                  "typeName": {
                    "id": 21568,
                    "keyType": {
                      "id": 21565,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2159:7:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2151:26:56",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$21574_storage_$",
                      "typeString": "mapping(address => struct FranchisedIndexPool.Record)"
                    },
                    "valueType": {
                      "id": 21567,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 21566,
                        "name": "Record",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 21574,
                        "src": "2170:6:56"
                      },
                      "referencedDeclaration": 21574,
                      "src": "2170:6:56",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                        "typeString": "struct FranchisedIndexPool.Record"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "canonicalName": "FranchisedIndexPool.Record",
                  "id": 21574,
                  "members": [
                    {
                      "constant": false,
                      "id": 21571,
                      "mutability": "mutable",
                      "name": "reserve",
                      "nameLocation": "2230:7:56",
                      "nodeType": "VariableDeclaration",
                      "scope": 21574,
                      "src": "2222:15:56",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint120",
                        "typeString": "uint120"
                      },
                      "typeName": {
                        "id": 21570,
                        "name": "uint120",
                        "nodeType": "ElementaryTypeName",
                        "src": "2222:7:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint120",
                          "typeString": "uint120"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21573,
                      "mutability": "mutable",
                      "name": "weight",
                      "nameLocation": "2255:6:56",
                      "nodeType": "VariableDeclaration",
                      "scope": 21574,
                      "src": "2247:14:56",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint136",
                        "typeString": "uint136"
                      },
                      "typeName": {
                        "id": 21572,
                        "name": "uint136",
                        "nodeType": "ElementaryTypeName",
                        "src": "2247:7:56",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint136",
                          "typeString": "uint136"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "Record",
                  "nameLocation": "2205:6:56",
                  "nodeType": "StructDefinition",
                  "scope": 23195,
                  "src": "2198:70:56",
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 21818,
                    "nodeType": "Block",
                    "src": "2337:1856:56",
                    "statements": [
                      {
                        "assignments": [
                          21585,
                          21588,
                          21590,
                          21592,
                          21594,
                          21596
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21585,
                            "mutability": "mutable",
                            "name": "_tokens",
                            "nameLocation": "2378:7:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 21818,
                            "src": "2361:24:56",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 21583,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2361:7:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 21584,
                              "nodeType": "ArrayTypeName",
                              "src": "2361:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21588,
                            "mutability": "mutable",
                            "name": "_weights",
                            "nameLocation": "2416:8:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 21818,
                            "src": "2399:25:56",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                              "typeString": "uint136[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 21586,
                                "name": "uint136",
                                "nodeType": "ElementaryTypeName",
                                "src": "2399:7:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              },
                              "id": 21587,
                              "nodeType": "ArrayTypeName",
                              "src": "2399:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint136_$dyn_storage_ptr",
                                "typeString": "uint136[]"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21590,
                            "mutability": "mutable",
                            "name": "_swapFee",
                            "nameLocation": "2446:8:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 21818,
                            "src": "2438:16:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21589,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2438:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21592,
                            "mutability": "mutable",
                            "name": "_whiteListManager",
                            "nameLocation": "2476:17:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 21818,
                            "src": "2468:25:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 21591,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2468:7:56",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21594,
                            "mutability": "mutable",
                            "name": "_operator",
                            "nameLocation": "2515:9:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 21818,
                            "src": "2507:17:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 21593,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2507:7:56",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21596,
                            "mutability": "mutable",
                            "name": "_level2",
                            "nameLocation": "2543:7:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 21818,
                            "src": "2538:12:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 21595,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2538:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21616,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 21599,
                              "name": "_deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21576,
                              "src": "2574:11:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "baseExpression": {
                                    "id": 21601,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2588:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 21600,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2588:7:56",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 21602,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2588:9:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_address_$dyn_memory_ptr_$",
                                    "typeString": "type(address[] memory)"
                                  }
                                },
                                {
                                  "baseExpression": {
                                    "id": 21604,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2599:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint136_$",
                                      "typeString": "type(uint136)"
                                    },
                                    "typeName": {
                                      "id": 21603,
                                      "name": "uint136",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2599:7:56",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 21605,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2599:9:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_array$_t_uint136_$dyn_memory_ptr_$",
                                    "typeString": "type(uint136[] memory)"
                                  }
                                },
                                {
                                  "id": 21607,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2610:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 21606,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2610:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 21609,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2619:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 21608,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2619:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 21611,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2628:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 21610,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2628:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 21613,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2637:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 21612,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2637:4:56",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 21614,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2587:55:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint136_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address[] memory),type(uint136[] memory),type(uint256),type(address),type(address),type(bool))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_array$_t_address_$dyn_memory_ptr_$_$_t_type$_t_array$_t_uint136_$dyn_memory_ptr_$_$_t_type$_t_uint256_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$",
                                "typeString": "tuple(type(address[] memory),type(uint136[] memory),type(uint256),type(address),type(address),type(bool))"
                              }
                            ],
                            "expression": {
                              "id": 21597,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "2563:3:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 21598,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "2563:10:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 21615,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2563:80:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint136_$dyn_memory_ptr_$_t_uint256_$_t_address_payable_$_t_address_payable_$_t_bool_$",
                            "typeString": "tuple(address[] memory,uint136[] memory,uint256,address payable,address payable,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2347:296:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21622,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 21618,
                                  "name": "_tokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21585,
                                  "src": "2721:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 21619,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "2721:14:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 21620,
                                  "name": "_weights",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21588,
                                  "src": "2739:8:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                                    "typeString": "uint136[] memory"
                                  }
                                },
                                "id": 21621,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "2739:15:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2721:33:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f415252415953",
                              "id": 21623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2756:16:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_00a4856cd405d120cf9a0137dbcece84ecbe301664e8b1f382f9ad760cebc409",
                                "typeString": "literal_string \"INVALID_ARRAYS\""
                              },
                              "value": "INVALID_ARRAYS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_00a4856cd405d120cf9a0137dbcece84ecbe301664e8b1f382f9ad760cebc409",
                                "typeString": "literal_string \"INVALID_ARRAYS\""
                              }
                            ],
                            "id": 21617,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2713:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2713:60:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21625,
                        "nodeType": "ExpressionStatement",
                        "src": "2713:60:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21633,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 21629,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 21627,
                                  "name": "MIN_FEE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21471,
                                  "src": "2791:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "id": 21628,
                                  "name": "_swapFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21590,
                                  "src": "2802:8:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2791:19:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 21632,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 21630,
                                  "name": "_swapFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21590,
                                  "src": "2814:8:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "id": 21631,
                                  "name": "MAX_FEE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21476,
                                  "src": "2826:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2814:19:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2791:42:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f535741505f464545",
                              "id": 21634,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2835:18:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1",
                                "typeString": "literal_string \"INVALID_SWAP_FEE\""
                              },
                              "value": "INVALID_SWAP_FEE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b25dc7962356ebc6690de172ab28f81eef4d6190f0fa11a2d8efb2bc83c709d1",
                                "typeString": "literal_string \"INVALID_SWAP_FEE\""
                              }
                            ],
                            "id": 21626,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2783:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21635,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2783:71:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21636,
                        "nodeType": "ExpressionStatement",
                        "src": "2783:71:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 21646,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 21641,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 21638,
                                  "name": "MIN_TOKENS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21461,
                                  "src": "2872:10:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "expression": {
                                    "id": 21639,
                                    "name": "_tokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21585,
                                    "src": "2886:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 21640,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "2886:14:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2872:28:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 21645,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 21642,
                                    "name": "_tokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21585,
                                    "src": "2904:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 21643,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "2904:14:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "id": 21644,
                                  "name": "MAX_TOKENS",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21464,
                                  "src": "2922:10:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2904:28:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2872:60:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f544f4b454e535f4c454e475448",
                              "id": 21647,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2934:23:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_75f734113dfa6f453446d4f37ce54f235fdeedec101ae5c27cbf0958b768d046",
                                "typeString": "literal_string \"INVALID_TOKENS_LENGTH\""
                              },
                              "value": "INVALID_TOKENS_LENGTH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_75f734113dfa6f453446d4f37ce54f235fdeedec101ae5c27cbf0958b768d046",
                                "typeString": "literal_string \"INVALID_TOKENS_LENGTH\""
                              }
                            ],
                            "id": 21637,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2864:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21648,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2864:94:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21649,
                        "nodeType": "ExpressionStatement",
                        "src": "2864:94:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 21653,
                              "name": "_whiteListManager",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21592,
                              "src": "3003:17:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 21654,
                              "name": "_operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21594,
                              "src": "3022:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 21655,
                              "name": "_level2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21596,
                              "src": "3033:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "id": 21650,
                              "name": "TridentFranchisedERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23629,
                              "src": "2969:22:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TridentFranchisedERC20_$23629_$",
                                "typeString": "type(contract TridentFranchisedERC20)"
                              }
                            },
                            "id": 21652,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "initialize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 23316,
                            "src": "2969:33:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 21656,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2969:72:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21657,
                        "nodeType": "ExpressionStatement",
                        "src": "2969:72:56"
                      },
                      {
                        "body": {
                          "id": 21723,
                          "nodeType": "Block",
                          "src": "3097:323:56",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 21677,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "baseExpression": {
                                        "id": 21670,
                                        "name": "_tokens",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21585,
                                        "src": "3119:7:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 21672,
                                      "indexExpression": {
                                        "id": 21671,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21659,
                                        "src": "3127:1:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3119:10:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 21675,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3141:1:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 21674,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "3133:7:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 21673,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "3133:7:56",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 21676,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3133:10:56",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "3119:24:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "5a45524f5f41444452455353",
                                    "id": 21678,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3145:14:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af",
                                      "typeString": "literal_string \"ZERO_ADDRESS\""
                                    },
                                    "value": "ZERO_ADDRESS"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af",
                                      "typeString": "literal_string \"ZERO_ADDRESS\""
                                    }
                                  ],
                                  "id": 21669,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "3111:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 21679,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3111:49:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 21680,
                              "nodeType": "ExpressionStatement",
                              "src": "3111:49:56"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 21692,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 21686,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 21682,
                                        "name": "MIN_WEIGHT",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21479,
                                        "src": "3182:10:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "baseExpression": {
                                          "id": 21683,
                                          "name": "_weights",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21588,
                                          "src": "3196:8:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                                            "typeString": "uint136[] memory"
                                          }
                                        },
                                        "id": 21685,
                                        "indexExpression": {
                                          "id": 21684,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21659,
                                          "src": "3205:1:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3196:11:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint136",
                                          "typeString": "uint136"
                                        }
                                      },
                                      "src": "3182:25:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 21691,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "baseExpression": {
                                          "id": 21687,
                                          "name": "_weights",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21588,
                                          "src": "3211:8:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                                            "typeString": "uint136[] memory"
                                          }
                                        },
                                        "id": 21689,
                                        "indexExpression": {
                                          "id": 21688,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21659,
                                          "src": "3220:1:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3211:11:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint136",
                                          "typeString": "uint136"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "id": 21690,
                                        "name": "MAX_WEIGHT",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21484,
                                        "src": "3226:10:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3211:25:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "3182:54:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "494e56414c49445f574549474854",
                                    "id": 21693,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3238:16:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_87c75609d2efba568b00c7442679e76c5cb56f78d53aa8cdaaa9ad7d0cd20528",
                                      "typeString": "literal_string \"INVALID_WEIGHT\""
                                    },
                                    "value": "INVALID_WEIGHT"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_87c75609d2efba568b00c7442679e76c5cb56f78d53aa8cdaaa9ad7d0cd20528",
                                      "typeString": "literal_string \"INVALID_WEIGHT\""
                                    }
                                  ],
                                  "id": 21681,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "3174:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 21694,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3174:81:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 21695,
                              "nodeType": "ExpressionStatement",
                              "src": "3174:81:56"
                            },
                            {
                              "expression": {
                                "id": 21707,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 21696,
                                    "name": "records",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21569,
                                    "src": "3269:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$21574_storage_$",
                                      "typeString": "mapping(address => struct FranchisedIndexPool.Record storage ref)"
                                    }
                                  },
                                  "id": 21700,
                                  "indexExpression": {
                                    "baseExpression": {
                                      "id": 21697,
                                      "name": "_tokens",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21585,
                                      "src": "3277:7:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 21699,
                                    "indexExpression": {
                                      "id": 21698,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21659,
                                      "src": "3285:1:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3277:10:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3269:19:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$21574_storage",
                                    "typeString": "struct FranchisedIndexPool.Record storage ref"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 21702,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3308:1:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    {
                                      "baseExpression": {
                                        "id": 21703,
                                        "name": "_weights",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21588,
                                        "src": "3319:8:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                                          "typeString": "uint136[] memory"
                                        }
                                      },
                                      "id": 21705,
                                      "indexExpression": {
                                        "id": 21704,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21659,
                                        "src": "3328:1:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3319:11:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint136",
                                        "typeString": "uint136"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      {
                                        "typeIdentifier": "t_uint136",
                                        "typeString": "uint136"
                                      }
                                    ],
                                    "id": 21701,
                                    "name": "Record",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21574,
                                    "src": "3291:6:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_Record_$21574_storage_ptr_$",
                                      "typeString": "type(struct FranchisedIndexPool.Record storage pointer)"
                                    }
                                  },
                                  "id": 21706,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [
                                    "reserve",
                                    "weight"
                                  ],
                                  "nodeType": "FunctionCall",
                                  "src": "3291:41:56",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$21574_memory_ptr",
                                    "typeString": "struct FranchisedIndexPool.Record memory"
                                  }
                                },
                                "src": "3269:63:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Record_$21574_storage",
                                  "typeString": "struct FranchisedIndexPool.Record storage ref"
                                }
                              },
                              "id": 21708,
                              "nodeType": "ExpressionStatement",
                              "src": "3269:63:56"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 21712,
                                      "name": "_tokens",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21585,
                                      "src": "3358:7:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 21714,
                                    "indexExpression": {
                                      "id": 21713,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21659,
                                      "src": "3366:1:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3358:10:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 21709,
                                    "name": "tokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21537,
                                    "src": "3346:6:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 21711,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "push",
                                  "nodeType": "MemberAccess",
                                  "src": "3346:11:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$bound_to$_t_array$_t_address_$dyn_storage_ptr_$",
                                    "typeString": "function (address[] storage pointer,address)"
                                  }
                                },
                                "id": 21715,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3346:23:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 21716,
                              "nodeType": "ExpressionStatement",
                              "src": "3346:23:56"
                            },
                            {
                              "expression": {
                                "id": 21721,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 21717,
                                  "name": "totalWeight",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21534,
                                  "src": "3383:11:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint136",
                                    "typeString": "uint136"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "id": 21718,
                                    "name": "_weights",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21588,
                                    "src": "3398:8:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                                      "typeString": "uint136[] memory"
                                    }
                                  },
                                  "id": 21720,
                                  "indexExpression": {
                                    "id": 21719,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21659,
                                    "src": "3407:1:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3398:11:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint136",
                                    "typeString": "uint136"
                                  }
                                },
                                "src": "3383:26:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              },
                              "id": 21722,
                              "nodeType": "ExpressionStatement",
                              "src": "3383:26:56"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21665,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 21662,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21659,
                            "src": "3072:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 21663,
                              "name": "_tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21585,
                              "src": "3076:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 21664,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "3076:14:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3072:18:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21724,
                        "initializationExpression": {
                          "assignments": [
                            21659
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 21659,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "3065:1:56",
                              "nodeType": "VariableDeclaration",
                              "scope": 21724,
                              "src": "3057:9:56",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 21658,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3057:7:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 21661,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 21660,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3069:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3057:13:56"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 21667,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "3092:3:56",
                            "subExpression": {
                              "id": 21666,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21659,
                              "src": "3092:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21668,
                          "nodeType": "ExpressionStatement",
                          "src": "3092:3:56"
                        },
                        "nodeType": "ForStatement",
                        "src": "3052:368:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 21728,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 21726,
                                "name": "totalWeight",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21534,
                                "src": "3438:11:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 21727,
                                "name": "MAX_TOTAL_WEIGHT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21489,
                                "src": "3453:16:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3438:31:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d41585f544f54414c5f574549474854",
                              "id": 21729,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3471:18:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e75e5d818d3b36fb5c347de52391ac0301ffdae8d8720063773226e186361380",
                                "typeString": "literal_string \"MAX_TOTAL_WEIGHT\""
                              },
                              "value": "MAX_TOTAL_WEIGHT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e75e5d818d3b36fb5c347de52391ac0301ffdae8d8720063773226e186361380",
                                "typeString": "literal_string \"MAX_TOTAL_WEIGHT\""
                              }
                            ],
                            "id": 21725,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3430:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 21730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3430:60:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21731,
                        "nodeType": "ExpressionStatement",
                        "src": "3430:60:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 21735,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3560:1:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 21734,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3552:7:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 21733,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3552:7:56",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 21736,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3552:10:56",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 21737,
                              "name": "INIT_POOL_SUPPLY",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21501,
                              "src": "3564:16:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21732,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23564,
                            "src": "3546:5:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 21738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3546:35:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21739,
                        "nodeType": "ExpressionStatement",
                        "src": "3546:35:56"
                      },
                      {
                        "assignments": [
                          null,
                          21741
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 21741,
                            "mutability": "mutable",
                            "name": "_barFee",
                            "nameLocation": "3608:7:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 21818,
                            "src": "3595:20:56",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 21740,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3595:5:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21751,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 21746,
                                      "name": "IMasterDeployer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2356,
                                      "src": "3669:15:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                        "typeString": "type(contract IMasterDeployer)"
                                      }
                                    },
                                    "id": 21747,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "barFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2324,
                                    "src": "3669:22:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_view$__$returns$_t_uint256_$",
                                      "typeString": "function IMasterDeployer.barFee() view returns (uint256)"
                                    }
                                  },
                                  "id": 21748,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "3669:31:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "expression": {
                                  "id": 21744,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3646:3:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 21745,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "3646:22:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 21749,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3646:55:56",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 21742,
                              "name": "_masterDeployer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21578,
                              "src": "3619:15:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 21743,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "3619:26:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 21750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3619:83:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3592:110:56"
                      },
                      {
                        "assignments": [
                          null,
                          21753
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 21753,
                            "mutability": "mutable",
                            "name": "_barFeeTo",
                            "nameLocation": "3728:9:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 21818,
                            "src": "3715:22:56",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 21752,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3715:5:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21763,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 21758,
                                      "name": "IMasterDeployer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2356,
                                      "src": "3791:15:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                        "typeString": "type(contract IMasterDeployer)"
                                      }
                                    },
                                    "id": 21759,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "barFeeTo",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2329,
                                    "src": "3791:24:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_view$__$returns$_t_address_$",
                                      "typeString": "function IMasterDeployer.barFeeTo() view returns (address)"
                                    }
                                  },
                                  "id": 21760,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "3791:33:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "expression": {
                                  "id": 21756,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3768:3:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 21757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "3768:22:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 21761,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3768:57:56",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 21754,
                              "name": "_masterDeployer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21578,
                              "src": "3741:15:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 21755,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "3741:26:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 21762,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3741:85:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3712:114:56"
                      },
                      {
                        "assignments": [
                          null,
                          21765
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 21765,
                            "mutability": "mutable",
                            "name": "_bento",
                            "nameLocation": "3852:6:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 21818,
                            "src": "3839:19:56",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 21764,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3839:5:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21775,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 21770,
                                      "name": "IMasterDeployer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2356,
                                      "src": "3912:15:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                        "typeString": "type(contract IMasterDeployer)"
                                      }
                                    },
                                    "id": 21771,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "bento",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2334,
                                    "src": "3912:21:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_view$__$returns$_t_address_$",
                                      "typeString": "function IMasterDeployer.bento() view returns (address)"
                                    }
                                  },
                                  "id": 21772,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "3912:30:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "expression": {
                                  "id": 21768,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3889:3:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 21769,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "3889:22:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 21773,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3889:54:56",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 21766,
                              "name": "_masterDeployer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21578,
                              "src": "3862:15:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 21767,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "3862:26:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 21774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3862:82:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3836:108:56"
                      },
                      {
                        "expression": {
                          "id": 21778,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21776,
                            "name": "swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21447,
                            "src": "3955:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 21777,
                            "name": "_swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21590,
                            "src": "3965:8:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3955:18:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21779,
                        "nodeType": "ExpressionStatement",
                        "src": "3955:18:56"
                      },
                      {
                        "expression": {
                          "id": 21788,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21780,
                            "name": "barFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21539,
                            "src": "3983:6:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 21783,
                                "name": "_barFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21741,
                                "src": "4003:7:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 21785,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4013:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 21784,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4013:7:56",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 21786,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "4012:9:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "expression": {
                                "id": 21781,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "3992:3:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 21782,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "3992:10:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 21787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3992:30:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3983:39:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21789,
                        "nodeType": "ExpressionStatement",
                        "src": "3983:39:56"
                      },
                      {
                        "expression": {
                          "id": 21798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21790,
                            "name": "barFeeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21449,
                            "src": "4032:8:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 21793,
                                "name": "_barFeeTo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21753,
                                "src": "4054:9:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 21795,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4066:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 21794,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4066:7:56",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 21796,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "4065:9:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                }
                              ],
                              "expression": {
                                "id": 21791,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "4043:3:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 21792,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "4043:10:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 21797,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4043:32:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4032:43:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 21799,
                        "nodeType": "ExpressionStatement",
                        "src": "4032:43:56"
                      },
                      {
                        "expression": {
                          "id": 21808,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21800,
                            "name": "bento",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21451,
                            "src": "4085:5:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 21803,
                                "name": "_bento",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21765,
                                "src": "4104:6:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 21805,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4113:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 21804,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4113:7:56",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 21806,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "4112:9:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                }
                              ],
                              "expression": {
                                "id": 21801,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "4093:3:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 21802,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "4093:10:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 21807,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4093:29:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4085:37:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 21809,
                        "nodeType": "ExpressionStatement",
                        "src": "4085:37:56"
                      },
                      {
                        "expression": {
                          "id": 21812,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21810,
                            "name": "masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21453,
                            "src": "4132:14:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 21811,
                            "name": "_masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21578,
                            "src": "4149:15:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4132:32:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 21813,
                        "nodeType": "ExpressionStatement",
                        "src": "4132:32:56"
                      },
                      {
                        "expression": {
                          "id": 21816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21814,
                            "name": "unlocked",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21545,
                            "src": "4174:8:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 21815,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4185:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "4174:12:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21817,
                        "nodeType": "ExpressionStatement",
                        "src": "4174:12:56"
                      }
                    ]
                  },
                  "id": 21819,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 21579,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21576,
                        "mutability": "mutable",
                        "name": "_deployData",
                        "nameLocation": "2299:11:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 21819,
                        "src": "2286:24:56",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 21575,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2286:5:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 21578,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "2320:15:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 21819,
                        "src": "2312:23:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 21577,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2312:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2285:51:56"
                  },
                  "returnParameters": {
                    "id": 21580,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2337:0:56"
                  },
                  "scope": 23195,
                  "src": "2274:1919:56",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2384
                  ],
                  "body": {
                    "id": 21942,
                    "nodeType": "Block",
                    "src": "4476:1029:56",
                    "statements": [
                      {
                        "assignments": [
                          21831,
                          21833
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21831,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "4495:9:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 21942,
                            "src": "4487:17:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 21830,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4487:7:56",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21833,
                            "mutability": "mutable",
                            "name": "toMint",
                            "nameLocation": "4514:6:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 21942,
                            "src": "4506:14:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21832,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4506:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21843,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 21836,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21822,
                              "src": "4535:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 21838,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4542:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 21837,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4542:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 21840,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4551:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 21839,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4551:7:56",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 21841,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "4541:18:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 21834,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "4524:3:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 21835,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "4524:10:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 21842,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4524:36:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$",
                            "typeString": "tuple(address payable,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4486:74:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 21845,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21831,
                              "src": "4586:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 21844,
                            "name": "_checkWhiteList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23628,
                            "src": "4570:15:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 21846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4570:26:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21847,
                        "nodeType": "ExpressionStatement",
                        "src": "4570:26:56"
                      },
                      {
                        "assignments": [
                          21849
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21849,
                            "mutability": "mutable",
                            "name": "ratio",
                            "nameLocation": "4614:5:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 21942,
                            "src": "4606:13:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint120",
                              "typeString": "uint120"
                            },
                            "typeName": {
                              "id": 21848,
                              "name": "uint120",
                              "nodeType": "ElementaryTypeName",
                              "src": "4606:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint120",
                                "typeString": "uint120"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21857,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 21853,
                                  "name": "toMint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21833,
                                  "src": "4635:6:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 21854,
                                  "name": "totalSupply",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23232,
                                  "src": "4643:11:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 21852,
                                "name": "_div",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22994,
                                "src": "4630:4:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 21855,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4630:25:56",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21851,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4622:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint120_$",
                              "typeString": "type(uint120)"
                            },
                            "typeName": {
                              "id": 21850,
                              "name": "uint120",
                              "nodeType": "ElementaryTypeName",
                              "src": "4622:7:56",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 21856,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4622:34:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint120",
                            "typeString": "uint120"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4606:50:56"
                      },
                      {
                        "body": {
                          "id": 21931,
                          "nodeType": "Block",
                          "src": "4711:726:56",
                          "statements": [
                            {
                              "assignments": [
                                21870
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 21870,
                                  "mutability": "mutable",
                                  "name": "tokenIn",
                                  "nameLocation": "4733:7:56",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 21931,
                                  "src": "4725:15:56",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 21869,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4725:7:56",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 21874,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 21871,
                                  "name": "tokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21537,
                                  "src": "4743:6:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                    "typeString": "address[] storage ref"
                                  }
                                },
                                "id": 21873,
                                "indexExpression": {
                                  "id": 21872,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21859,
                                  "src": "4750:1:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4743:9:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4725:27:56"
                            },
                            {
                              "assignments": [
                                21876
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 21876,
                                  "mutability": "mutable",
                                  "name": "reserve",
                                  "nameLocation": "4774:7:56",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 21931,
                                  "src": "4766:15:56",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint120",
                                    "typeString": "uint120"
                                  },
                                  "typeName": {
                                    "id": 21875,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4766:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 21881,
                              "initialValue": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 21877,
                                    "name": "records",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21569,
                                    "src": "4784:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$21574_storage_$",
                                      "typeString": "mapping(address => struct FranchisedIndexPool.Record storage ref)"
                                    }
                                  },
                                  "id": 21879,
                                  "indexExpression": {
                                    "id": 21878,
                                    "name": "tokenIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21870,
                                    "src": "4792:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4784:16:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$21574_storage",
                                    "typeString": "struct FranchisedIndexPool.Record storage ref"
                                  }
                                },
                                "id": 21880,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21571,
                                "src": "4784:24:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4766:42:56"
                            },
                            {
                              "assignments": [
                                21883
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 21883,
                                  "mutability": "mutable",
                                  "name": "amountIn",
                                  "nameLocation": "4900:8:56",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 21931,
                                  "src": "4892:16:56",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint120",
                                    "typeString": "uint120"
                                  },
                                  "typeName": {
                                    "id": 21882,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4892:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 21896,
                              "initialValue": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint120",
                                    "typeString": "uint120"
                                  },
                                  "id": 21886,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 21884,
                                    "name": "reserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21876,
                                    "src": "4911:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 21885,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4922:1:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "4911:12:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "id": 21894,
                                  "name": "ratio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21849,
                                  "src": "4958:5:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint120",
                                    "typeString": "uint120"
                                  }
                                },
                                "id": 21895,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "4911:52:56",
                                "trueExpression": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 21890,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21849,
                                          "src": "4939:5:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint120",
                                            "typeString": "uint120"
                                          }
                                        },
                                        {
                                          "id": 21891,
                                          "name": "reserve",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21876,
                                          "src": "4946:7:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint120",
                                            "typeString": "uint120"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint120",
                                            "typeString": "uint120"
                                          },
                                          {
                                            "typeIdentifier": "t_uint120",
                                            "typeString": "uint120"
                                          }
                                        ],
                                        "id": 21889,
                                        "name": "_mul",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22963,
                                        "src": "4934:4:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 21892,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4934:20:56",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 21888,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4926:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint120_$",
                                      "typeString": "type(uint120)"
                                    },
                                    "typeName": {
                                      "id": 21887,
                                      "name": "uint120",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4926:7:56",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 21893,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4926:29:56",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint120",
                                    "typeString": "uint120"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4892:71:56"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 21900,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 21898,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21883,
                                      "src": "4985:8:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "id": 21899,
                                      "name": "MIN_BALANCE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21496,
                                      "src": "4997:11:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4985:23:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4d494e5f42414c414e4345",
                                    "id": 21901,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5010:13:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6bebbe4a6d03d73ca34b8e24407254be08e942ad0a1388f8e02d78d6cedb6f8f",
                                      "typeString": "literal_string \"MIN_BALANCE\""
                                    },
                                    "value": "MIN_BALANCE"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_6bebbe4a6d03d73ca34b8e24407254be08e942ad0a1388f8e02d78d6cedb6f8f",
                                      "typeString": "literal_string \"MIN_BALANCE\""
                                    }
                                  ],
                                  "id": 21897,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "4977:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 21902,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4977:47:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 21903,
                              "nodeType": "ExpressionStatement",
                              "src": "4977:47:56"
                            },
                            {
                              "id": 21922,
                              "nodeType": "UncheckedBlock",
                              "src": "5119:243:56",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 21911,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "arguments": [
                                            {
                                              "id": 21906,
                                              "name": "tokenIn",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 21870,
                                              "src": "5246:7:56",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 21905,
                                            "name": "_balance",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22513,
                                            "src": "5237:8:56",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                              "typeString": "function (address) view returns (uint256)"
                                            }
                                          },
                                          "id": 21907,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "5237:17:56",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">=",
                                        "rightExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint120",
                                            "typeString": "uint120"
                                          },
                                          "id": 21910,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 21908,
                                            "name": "amountIn",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 21883,
                                            "src": "5258:8:56",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint120",
                                              "typeString": "uint120"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "id": 21909,
                                            "name": "reserve",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 21876,
                                            "src": "5269:7:56",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint120",
                                              "typeString": "uint120"
                                            }
                                          },
                                          "src": "5258:18:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint120",
                                            "typeString": "uint120"
                                          }
                                        },
                                        "src": "5237:39:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "hexValue": "4e4f545f5245434549564544",
                                        "id": 21912,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5278:14:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_5bc54dac1e6c6942ca387ee7fa5b266c08fd485e140ffd0f93cb3919d20c5523",
                                          "typeString": "literal_string \"NOT_RECEIVED\""
                                        },
                                        "value": "NOT_RECEIVED"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_5bc54dac1e6c6942ca387ee7fa5b266c08fd485e140ffd0f93cb3919d20c5523",
                                          "typeString": "literal_string \"NOT_RECEIVED\""
                                        }
                                      ],
                                      "id": 21904,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "5229:7:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 21913,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5229:64:56",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 21914,
                                  "nodeType": "ExpressionStatement",
                                  "src": "5229:64:56"
                                },
                                {
                                  "expression": {
                                    "id": 21920,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 21915,
                                          "name": "records",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21569,
                                          "src": "5311:7:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$21574_storage_$",
                                            "typeString": "mapping(address => struct FranchisedIndexPool.Record storage ref)"
                                          }
                                        },
                                        "id": 21917,
                                        "indexExpression": {
                                          "id": 21916,
                                          "name": "tokenIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21870,
                                          "src": "5319:7:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "5311:16:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Record_$21574_storage",
                                          "typeString": "struct FranchisedIndexPool.Record storage ref"
                                        }
                                      },
                                      "id": 21918,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "reserve",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 21571,
                                      "src": "5311:24:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "id": 21919,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21883,
                                      "src": "5339:8:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "src": "5311:36:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  "id": 21921,
                                  "nodeType": "ExpressionStatement",
                                  "src": "5311:36:56"
                                }
                              ]
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 21924,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "5385:3:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 21925,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "5385:10:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 21926,
                                    "name": "tokenIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21870,
                                    "src": "5397:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 21927,
                                    "name": "amountIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21883,
                                    "src": "5406:8:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  {
                                    "id": 21928,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21831,
                                    "src": "5416:9:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 21923,
                                  "name": "Mint",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21435,
                                  "src": "5380:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$__$",
                                    "typeString": "function (address,address,uint256,address)"
                                  }
                                },
                                "id": 21929,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5380:46:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 21930,
                              "nodeType": "EmitStatement",
                              "src": "5375:51:56"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 21865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 21862,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21859,
                            "src": "4687:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 21863,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21537,
                              "src": "4691:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 21864,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "4691:13:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4687:17:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 21932,
                        "initializationExpression": {
                          "assignments": [
                            21859
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 21859,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "4680:1:56",
                              "nodeType": "VariableDeclaration",
                              "scope": 21932,
                              "src": "4672:9:56",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 21858,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4672:7:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 21861,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 21860,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4684:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4672:13:56"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 21867,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4706:3:56",
                            "subExpression": {
                              "id": 21866,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21859,
                              "src": "4706:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21868,
                          "nodeType": "ExpressionStatement",
                          "src": "4706:3:56"
                        },
                        "nodeType": "ForStatement",
                        "src": "4667:770:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 21934,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21831,
                              "src": "5452:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 21935,
                              "name": "toMint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21833,
                              "src": "5463:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21933,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23564,
                            "src": "5446:5:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 21936,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5446:24:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21937,
                        "nodeType": "ExpressionStatement",
                        "src": "5446:24:56"
                      },
                      {
                        "expression": {
                          "id": 21940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21938,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21828,
                            "src": "5480:9:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 21939,
                            "name": "toMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21833,
                            "src": "5492:6:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5480:18:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 21941,
                        "nodeType": "ExpressionStatement",
                        "src": "5480:18:56"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21820,
                    "nodeType": "StructuredDocumentation",
                    "src": "4199:188:56",
                    "text": "@dev Mints LP tokens - should be called via the router after transferring `bento` tokens.\n The router must ensure that sufficient LP tokens are minted by using the return value."
                  },
                  "functionSelector": "7ba0e2e7",
                  "id": 21943,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 21826,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 21825,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 21564,
                        "src": "4443:4:56"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4443:4:56"
                    }
                  ],
                  "name": "mint",
                  "nameLocation": "4401:4:56",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21824,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4434:8:56"
                  },
                  "parameters": {
                    "id": 21823,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21822,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "4421:4:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 21943,
                        "src": "4406:19:56",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 21821,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4406:5:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4405:21:56"
                  },
                  "returnParameters": {
                    "id": 21829,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21828,
                        "mutability": "mutable",
                        "name": "liquidity",
                        "nameLocation": "4465:9:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 21943,
                        "src": "4457:17:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 21827,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4457:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4456:19:56"
                  },
                  "scope": 23195,
                  "src": "4392:1113:56",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2394
                  ],
                  "body": {
                    "id": 22078,
                    "nodeType": "Block",
                    "src": "5741:972:56",
                    "statements": [
                      {
                        "assignments": [
                          21957,
                          21959,
                          21961
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21957,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "5760:9:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22078,
                            "src": "5752:17:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 21956,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5752:7:56",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21959,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "5776:11:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22078,
                            "src": "5771:16:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 21958,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5771:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 21961,
                            "mutability": "mutable",
                            "name": "toBurn",
                            "nameLocation": "5797:6:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22078,
                            "src": "5789:14:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21960,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5789:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21973,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 21964,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21946,
                              "src": "5818:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 21966,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5825:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 21965,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5825:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 21968,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5834:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 21967,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5834:4:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 21970,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5840:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 21969,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5840:7:56",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 21971,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "5824:24:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(bool),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(bool),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 21962,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "5807:3:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 21963,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "5807:10:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 21972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5807:42:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(address payable,bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5751:98:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 21975,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21957,
                              "src": "5875:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 21974,
                            "name": "_checkWhiteList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23628,
                            "src": "5859:15:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 21976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5859:26:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21977,
                        "nodeType": "ExpressionStatement",
                        "src": "5859:26:56"
                      },
                      {
                        "assignments": [
                          21979
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 21979,
                            "mutability": "mutable",
                            "name": "ratio",
                            "nameLocation": "5903:5:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22078,
                            "src": "5895:13:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 21978,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5895:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 21984,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 21981,
                              "name": "toBurn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21961,
                              "src": "5916:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 21982,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23232,
                              "src": "5924:11:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21980,
                            "name": "_div",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22994,
                            "src": "5911:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 21983,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5911:25:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5895:41:56"
                      },
                      {
                        "expression": {
                          "id": 21993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 21985,
                            "name": "withdrawnAmounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21954,
                            "src": "5947:16:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 21990,
                                  "name": "tokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21537,
                                  "src": "5984:6:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                    "typeString": "address[] storage ref"
                                  }
                                },
                                "id": 21991,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "5984:13:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 21989,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "5966:17:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (struct IPool.TokenAmount memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 21987,
                                  "nodeType": "UserDefinedTypeName",
                                  "pathNode": {
                                    "id": 21986,
                                    "name": "TokenAmount",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 2449,
                                    "src": "5970:11:56"
                                  },
                                  "referencedDeclaration": 2449,
                                  "src": "5970:11:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                                    "typeString": "struct IPool.TokenAmount"
                                  }
                                },
                                "id": 21988,
                                "nodeType": "ArrayTypeName",
                                "src": "5970:13:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                                  "typeString": "struct IPool.TokenAmount[]"
                                }
                              }
                            },
                            "id": 21992,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5966:32:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct IPool.TokenAmount memory[] memory"
                            }
                          },
                          "src": "5947:51:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct IPool.TokenAmount memory[] memory"
                          }
                        },
                        "id": 21994,
                        "nodeType": "ExpressionStatement",
                        "src": "5947:51:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 21998,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "6023:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FranchisedIndexPool_$23195",
                                    "typeString": "contract FranchisedIndexPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FranchisedIndexPool_$23195",
                                    "typeString": "contract FranchisedIndexPool"
                                  }
                                ],
                                "id": 21997,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6015:7:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 21996,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6015:7:56",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 21999,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6015:13:56",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22000,
                              "name": "toBurn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21961,
                              "src": "6030:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 21995,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23592,
                            "src": "6009:5:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 22001,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6009:28:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22002,
                        "nodeType": "ExpressionStatement",
                        "src": "6009:28:56"
                      },
                      {
                        "body": {
                          "id": 22076,
                          "nodeType": "Block",
                          "src": "6092:615:56",
                          "statements": [
                            {
                              "assignments": [
                                22015
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22015,
                                  "mutability": "mutable",
                                  "name": "tokenOut",
                                  "nameLocation": "6114:8:56",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22076,
                                  "src": "6106:16:56",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 22014,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6106:7:56",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22019,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 22016,
                                  "name": "tokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21537,
                                  "src": "6125:6:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                    "typeString": "address[] storage ref"
                                  }
                                },
                                "id": 22018,
                                "indexExpression": {
                                  "id": 22017,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22004,
                                  "src": "6132:1:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6125:9:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6106:28:56"
                            },
                            {
                              "assignments": [
                                22021
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22021,
                                  "mutability": "mutable",
                                  "name": "balance",
                                  "nameLocation": "6156:7:56",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22076,
                                  "src": "6148:15:56",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 22020,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6148:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22026,
                              "initialValue": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 22022,
                                    "name": "records",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21569,
                                    "src": "6166:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$21574_storage_$",
                                      "typeString": "mapping(address => struct FranchisedIndexPool.Record storage ref)"
                                    }
                                  },
                                  "id": 22024,
                                  "indexExpression": {
                                    "id": 22023,
                                    "name": "tokenOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22015,
                                    "src": "6174:8:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6166:17:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$21574_storage",
                                    "typeString": "struct FranchisedIndexPool.Record storage ref"
                                  }
                                },
                                "id": 22025,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21571,
                                "src": "6166:25:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6148:43:56"
                            },
                            {
                              "assignments": [
                                22028
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22028,
                                  "mutability": "mutable",
                                  "name": "amountOut",
                                  "nameLocation": "6213:9:56",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22076,
                                  "src": "6205:17:56",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint120",
                                    "typeString": "uint120"
                                  },
                                  "typeName": {
                                    "id": 22027,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6205:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22036,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 22032,
                                        "name": "ratio",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21979,
                                        "src": "6238:5:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 22033,
                                        "name": "balance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22021,
                                        "src": "6245:7:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 22031,
                                      "name": "_mul",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22963,
                                      "src": "6233:4:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 22034,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6233:20:56",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 22030,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6225:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint120_$",
                                    "typeString": "type(uint120)"
                                  },
                                  "typeName": {
                                    "id": 22029,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6225:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 22035,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6225:29:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6205:49:56"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    },
                                    "id": 22040,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 22038,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22028,
                                      "src": "6276:9:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 22039,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6289:1:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "6276:14:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "5a45524f5f4f5554",
                                    "id": 22041,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6292:10:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_5cc85f4aca207e790130bbbe0f65d41050b113ebde71647d75b6406db2462409",
                                      "typeString": "literal_string \"ZERO_OUT\""
                                    },
                                    "value": "ZERO_OUT"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_5cc85f4aca207e790130bbbe0f65d41050b113ebde71647d75b6406db2462409",
                                      "typeString": "literal_string \"ZERO_OUT\""
                                    }
                                  ],
                                  "id": 22037,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "6268:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 22042,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6268:35:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22043,
                              "nodeType": "ExpressionStatement",
                              "src": "6268:35:56"
                            },
                            {
                              "id": 22051,
                              "nodeType": "UncheckedBlock",
                              "src": "6396:81:56",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 22049,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 22044,
                                          "name": "records",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21569,
                                          "src": "6424:7:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$21574_storage_$",
                                            "typeString": "mapping(address => struct FranchisedIndexPool.Record storage ref)"
                                          }
                                        },
                                        "id": 22046,
                                        "indexExpression": {
                                          "id": 22045,
                                          "name": "tokenOut",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22015,
                                          "src": "6432:8:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6424:17:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Record_$21574_storage",
                                          "typeString": "struct FranchisedIndexPool.Record storage ref"
                                        }
                                      },
                                      "id": 22047,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "reserve",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 21571,
                                      "src": "6424:25:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "id": 22048,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22028,
                                      "src": "6453:9:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "src": "6424:38:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  "id": 22050,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6424:38:56"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 22053,
                                    "name": "tokenOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22015,
                                    "src": "6500:8:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 22054,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22028,
                                    "src": "6510:9:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  {
                                    "id": 22055,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21957,
                                    "src": "6521:9:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 22056,
                                    "name": "unwrapBento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21959,
                                    "src": "6532:11:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "id": 22052,
                                  "name": "_transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23059,
                                  "src": "6490:9:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                                    "typeString": "function (address,uint256,address,bool)"
                                  }
                                },
                                "id": 22057,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6490:54:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22058,
                              "nodeType": "ExpressionStatement",
                              "src": "6490:54:56"
                            },
                            {
                              "expression": {
                                "id": 22066,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 22059,
                                    "name": "withdrawnAmounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21954,
                                    "src": "6558:16:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct IPool.TokenAmount memory[] memory"
                                    }
                                  },
                                  "id": 22061,
                                  "indexExpression": {
                                    "id": 22060,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22004,
                                    "src": "6575:1:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6558:19:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                    "typeString": "struct IPool.TokenAmount memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 22063,
                                      "name": "tokenOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22015,
                                      "src": "6600:8:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 22064,
                                      "name": "amountOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22028,
                                      "src": "6618:9:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    ],
                                    "id": 22062,
                                    "name": "TokenAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2449,
                                    "src": "6580:11:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_TokenAmount_$2449_storage_ptr_$",
                                      "typeString": "type(struct IPool.TokenAmount storage pointer)"
                                    }
                                  },
                                  "id": 22065,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "structConstructorCall",
                                  "lValueRequested": false,
                                  "names": [
                                    "token",
                                    "amount"
                                  ],
                                  "nodeType": "FunctionCall",
                                  "src": "6580:49:56",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                    "typeString": "struct IPool.TokenAmount memory"
                                  }
                                },
                                "src": "6558:71:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_TokenAmount_$2449_memory_ptr",
                                  "typeString": "struct IPool.TokenAmount memory"
                                }
                              },
                              "id": 22067,
                              "nodeType": "ExpressionStatement",
                              "src": "6558:71:56"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 22069,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "6653:3:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 22070,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "6653:10:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 22071,
                                    "name": "tokenOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22015,
                                    "src": "6665:8:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 22072,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22028,
                                    "src": "6675:9:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  {
                                    "id": 22073,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21957,
                                    "src": "6686:9:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 22068,
                                  "name": "Burn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21445,
                                  "src": "6648:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$__$",
                                    "typeString": "function (address,address,uint256,address)"
                                  }
                                },
                                "id": 22074,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6648:48:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 22075,
                              "nodeType": "EmitStatement",
                              "src": "6643:53:56"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22007,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22004,
                            "src": "6068:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 22008,
                              "name": "tokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21537,
                              "src": "6072:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 22009,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "6072:13:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6068:17:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22077,
                        "initializationExpression": {
                          "assignments": [
                            22004
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 22004,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "6061:1:56",
                              "nodeType": "VariableDeclaration",
                              "scope": 22077,
                              "src": "6053:9:56",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 22003,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "6053:7:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 22006,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 22005,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6065:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "6053:13:56"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 22012,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "6087:3:56",
                            "subExpression": {
                              "id": 22011,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22004,
                              "src": "6087:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 22013,
                          "nodeType": "ExpressionStatement",
                          "src": "6087:3:56"
                        },
                        "nodeType": "ForStatement",
                        "src": "6048:659:56"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 21944,
                    "nodeType": "StructuredDocumentation",
                    "src": "5511:115:56",
                    "text": "@dev Burns LP tokens sent to this contract. The router must ensure that the user gets sufficient output tokens."
                  },
                  "functionSelector": "2a07b6c7",
                  "id": 22079,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 21950,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 21949,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 21564,
                        "src": "5682:4:56"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "5682:4:56"
                    }
                  ],
                  "name": "burn",
                  "nameLocation": "5640:4:56",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 21948,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5673:8:56"
                  },
                  "parameters": {
                    "id": 21947,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21946,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "5660:4:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22079,
                        "src": "5645:19:56",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 21945,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5645:5:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5644:21:56"
                  },
                  "returnParameters": {
                    "id": 21955,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 21954,
                        "mutability": "mutable",
                        "name": "withdrawnAmounts",
                        "nameLocation": "5723:16:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22079,
                        "src": "5696:43:56",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct IPool.TokenAmount[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 21952,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 21951,
                              "name": "IPool.TokenAmount",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 2449,
                              "src": "5696:17:56"
                            },
                            "referencedDeclaration": 2449,
                            "src": "5696:17:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_TokenAmount_$2449_storage_ptr",
                              "typeString": "struct IPool.TokenAmount"
                            }
                          },
                          "id": 21953,
                          "nodeType": "ArrayTypeName",
                          "src": "5696:19:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_TokenAmount_$2449_storage_$dyn_storage_ptr",
                            "typeString": "struct IPool.TokenAmount[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5695:45:56"
                  },
                  "scope": 23195,
                  "src": "5631:1082:56",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2402
                  ],
                  "body": {
                    "id": 22180,
                    "nodeType": "Block",
                    "src": "6978:774:56",
                    "statements": [
                      {
                        "assignments": [
                          22091,
                          22093,
                          22095,
                          22097
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22091,
                            "mutability": "mutable",
                            "name": "tokenOut",
                            "nameLocation": "6997:8:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22180,
                            "src": "6989:16:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 22090,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6989:7:56",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 22093,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "7015:9:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22180,
                            "src": "7007:17:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 22092,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7007:7:56",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 22095,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "7031:11:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22180,
                            "src": "7026:16:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 22094,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "7026:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 22097,
                            "mutability": "mutable",
                            "name": "toBurn",
                            "nameLocation": "7052:6:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22180,
                            "src": "7044:14:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22096,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7044:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22111,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 22100,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22082,
                              "src": "7073:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 22102,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7080:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 22101,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7080:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 22104,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7089:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 22103,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7089:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 22106,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7098:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 22105,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7098:4:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 22108,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7104:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 22107,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7104:7:56",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 22109,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7079:33:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(address),type(bool),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 22098,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "7062:3:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 22099,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "7062:10:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 22110,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7062:51:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(address payable,address payable,bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6988:125:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 22113,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22093,
                              "src": "7139:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 22112,
                            "name": "_checkWhiteList",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23628,
                            "src": "7123:15:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 22114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7123:26:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22115,
                        "nodeType": "ExpressionStatement",
                        "src": "7123:26:56"
                      },
                      {
                        "assignments": [
                          22118
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22118,
                            "mutability": "mutable",
                            "name": "outRecord",
                            "nameLocation": "7174:9:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22180,
                            "src": "7159:24:56",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                              "typeString": "struct FranchisedIndexPool.Record"
                            },
                            "typeName": {
                              "id": 22117,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 22116,
                                "name": "Record",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 21574,
                                "src": "7159:6:56"
                              },
                              "referencedDeclaration": 21574,
                              "src": "7159:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                "typeString": "struct FranchisedIndexPool.Record"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22122,
                        "initialValue": {
                          "baseExpression": {
                            "id": 22119,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21569,
                            "src": "7186:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$21574_storage_$",
                              "typeString": "mapping(address => struct FranchisedIndexPool.Record storage ref)"
                            }
                          },
                          "id": 22121,
                          "indexExpression": {
                            "id": 22120,
                            "name": "tokenOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22091,
                            "src": "7194:8:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7186:17:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$21574_storage",
                            "typeString": "struct FranchisedIndexPool.Record storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7159:44:56"
                      },
                      {
                        "expression": {
                          "id": 22134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 22123,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22088,
                            "src": "7214:9:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 22125,
                                  "name": "outRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22118,
                                  "src": "7255:9:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                    "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                  }
                                },
                                "id": 22126,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21571,
                                "src": "7255:17:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              {
                                "expression": {
                                  "id": 22127,
                                  "name": "outRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22118,
                                  "src": "7274:9:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                    "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                  }
                                },
                                "id": 22128,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "weight",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21573,
                                "src": "7274:16:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              },
                              {
                                "id": 22129,
                                "name": "totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23232,
                                "src": "7292:11:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 22130,
                                "name": "totalWeight",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21534,
                                "src": "7305:11:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              },
                              {
                                "id": 22131,
                                "name": "toBurn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22097,
                                "src": "7318:6:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 22132,
                                "name": "swapFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21447,
                                "src": "7326:7:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                },
                                {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 22124,
                              "name": "_computeSingleOutGivenPoolIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22724,
                              "src": "7226:28:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 22133,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7226:108:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7214:120:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22135,
                        "nodeType": "ExpressionStatement",
                        "src": "7214:120:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 22137,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22088,
                                "src": "7353:9:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 22139,
                                      "name": "outRecord",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22118,
                                      "src": "7371:9:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                        "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                      }
                                    },
                                    "id": 22140,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "reserve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 21571,
                                    "src": "7371:17:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  {
                                    "id": 22141,
                                    "name": "MAX_OUT_RATIO",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21532,
                                    "src": "7390:13:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 22138,
                                  "name": "_mul",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22963,
                                  "src": "7366:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 22142,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7366:38:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7353:51:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d41585f4f55545f524154494f",
                              "id": 22144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7406:15:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4c5ad29f1d3e8bb498f3f1a2e1b9ae2d9e0aa620eec7213536f28c96e8c078d5",
                                "typeString": "literal_string \"MAX_OUT_RATIO\""
                              },
                              "value": "MAX_OUT_RATIO"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4c5ad29f1d3e8bb498f3f1a2e1b9ae2d9e0aa620eec7213536f28c96e8c078d5",
                                "typeString": "literal_string \"MAX_OUT_RATIO\""
                              }
                            ],
                            "id": 22136,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7345:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7345:77:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22146,
                        "nodeType": "ExpressionStatement",
                        "src": "7345:77:56"
                      },
                      {
                        "id": 22156,
                        "nodeType": "UncheckedBlock",
                        "src": "7507:74:56",
                        "statements": [
                          {
                            "expression": {
                              "id": 22154,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "expression": {
                                  "id": 22147,
                                  "name": "outRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22118,
                                  "src": "7531:9:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                    "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                  }
                                },
                                "id": 22149,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21571,
                                "src": "7531:17:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 22152,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22088,
                                    "src": "7560:9:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 22151,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7552:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint120_$",
                                    "typeString": "type(uint120)"
                                  },
                                  "typeName": {
                                    "id": 22150,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7552:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 22153,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7552:18:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "src": "7531:39:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint120",
                                "typeString": "uint120"
                              }
                            },
                            "id": 22155,
                            "nodeType": "ExpressionStatement",
                            "src": "7531:39:56"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 22160,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "7604:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FranchisedIndexPool_$23195",
                                    "typeString": "contract FranchisedIndexPool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FranchisedIndexPool_$23195",
                                    "typeString": "contract FranchisedIndexPool"
                                  }
                                ],
                                "id": 22159,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7596:7:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 22158,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7596:7:56",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 22161,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7596:13:56",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22162,
                              "name": "toBurn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22097,
                              "src": "7611:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22157,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23592,
                            "src": "7590:5:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 22163,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7590:28:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22164,
                        "nodeType": "ExpressionStatement",
                        "src": "7590:28:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 22166,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22091,
                              "src": "7638:8:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22167,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22088,
                              "src": "7648:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 22168,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22093,
                              "src": "7659:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22169,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22095,
                              "src": "7670:11:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 22165,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23059,
                            "src": "7628:9:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 22170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7628:54:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22171,
                        "nodeType": "ExpressionStatement",
                        "src": "7628:54:56"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 22173,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "7702:3:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 22174,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "7702:10:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22175,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22091,
                              "src": "7714:8:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22176,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22088,
                              "src": "7724:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 22177,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22093,
                              "src": "7735:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 22172,
                            "name": "Burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21445,
                            "src": "7697:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,address,uint256,address)"
                            }
                          },
                          "id": 22178,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7697:48:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22179,
                        "nodeType": "EmitStatement",
                        "src": "7692:53:56"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22080,
                    "nodeType": "StructuredDocumentation",
                    "src": "6719:164:56",
                    "text": "@dev Burns LP tokens sent to this contract and swaps one of the output tokens for another\n - i.e., the user gets a single token out by burning LP tokens."
                  },
                  "functionSelector": "af8c09bf",
                  "id": 22181,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 22086,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 22085,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 21564,
                        "src": "6945:4:56"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "6945:4:56"
                    }
                  ],
                  "name": "burnSingle",
                  "nameLocation": "6897:10:56",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22084,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6936:8:56"
                  },
                  "parameters": {
                    "id": 22083,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22082,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "6923:4:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22181,
                        "src": "6908:19:56",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 22081,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6908:5:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6907:21:56"
                  },
                  "returnParameters": {
                    "id": 22089,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22088,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "6967:9:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22181,
                        "src": "6959:17:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22087,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6959:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6958:19:56"
                  },
                  "scope": 23195,
                  "src": "6888:864:56",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2368
                  ],
                  "body": {
                    "id": 22309,
                    "nodeType": "Block",
                    "src": "7964:1076:56",
                    "statements": [
                      {
                        "assignments": [
                          22193,
                          22195,
                          22197,
                          22199,
                          22201
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22193,
                            "mutability": "mutable",
                            "name": "tokenIn",
                            "nameLocation": "7983:7:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22309,
                            "src": "7975:15:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 22192,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7975:7:56",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 22195,
                            "mutability": "mutable",
                            "name": "tokenOut",
                            "nameLocation": "8000:8:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22309,
                            "src": "7992:16:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 22194,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7992:7:56",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 22197,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "8018:9:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22309,
                            "src": "8010:17:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 22196,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8010:7:56",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 22199,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "8034:11:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22309,
                            "src": "8029:16:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 22198,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "8029:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 22201,
                            "mutability": "mutable",
                            "name": "amountIn",
                            "nameLocation": "8055:8:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22309,
                            "src": "8047:16:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22200,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8047:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22217,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 22204,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22184,
                              "src": "8091:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 22206,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8110:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 22205,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8110:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 22208,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8119:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 22207,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8119:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 22210,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8128:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 22209,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8128:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 22212,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8137:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 22211,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8137:4:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 22214,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8143:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 22213,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8143:7:56",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 22215,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "8109:42:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(address),type(address),type(bool),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(address),type(address),type(address),type(bool),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 22202,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "8067:3:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 22203,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "8067:10:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 22216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8067:94:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_address_payable_$_t_bool_$_t_uint256_$",
                            "typeString": "tuple(address payable,address payable,address payable,bool,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7974:187:56"
                      },
                      {
                        "condition": {
                          "id": 22218,
                          "name": "level2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23230,
                          "src": "8175:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22223,
                        "nodeType": "IfStatement",
                        "src": "8171:38:56",
                        "trueBody": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 22220,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22197,
                                "src": "8199:9:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 22219,
                              "name": "_checkWhiteList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23628,
                              "src": "8183:15:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                                "typeString": "function (address) view"
                              }
                            },
                            "id": 22221,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8183:26:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 22222,
                          "nodeType": "ExpressionStatement",
                          "src": "8183:26:56"
                        }
                      },
                      {
                        "assignments": [
                          22226
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22226,
                            "mutability": "mutable",
                            "name": "inRecord",
                            "nameLocation": "8234:8:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22309,
                            "src": "8219:23:56",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                              "typeString": "struct FranchisedIndexPool.Record"
                            },
                            "typeName": {
                              "id": 22225,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 22224,
                                "name": "Record",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 21574,
                                "src": "8219:6:56"
                              },
                              "referencedDeclaration": 21574,
                              "src": "8219:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                "typeString": "struct FranchisedIndexPool.Record"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22230,
                        "initialValue": {
                          "baseExpression": {
                            "id": 22227,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21569,
                            "src": "8245:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$21574_storage_$",
                              "typeString": "mapping(address => struct FranchisedIndexPool.Record storage ref)"
                            }
                          },
                          "id": 22229,
                          "indexExpression": {
                            "id": 22228,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22193,
                            "src": "8253:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8245:16:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$21574_storage",
                            "typeString": "struct FranchisedIndexPool.Record storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8219:42:56"
                      },
                      {
                        "assignments": [
                          22233
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22233,
                            "mutability": "mutable",
                            "name": "outRecord",
                            "nameLocation": "8286:9:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22309,
                            "src": "8271:24:56",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                              "typeString": "struct FranchisedIndexPool.Record"
                            },
                            "typeName": {
                              "id": 22232,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 22231,
                                "name": "Record",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 21574,
                                "src": "8271:6:56"
                              },
                              "referencedDeclaration": 21574,
                              "src": "8271:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                "typeString": "struct FranchisedIndexPool.Record"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22237,
                        "initialValue": {
                          "baseExpression": {
                            "id": 22234,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21569,
                            "src": "8298:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$21574_storage_$",
                              "typeString": "mapping(address => struct FranchisedIndexPool.Record storage ref)"
                            }
                          },
                          "id": 22236,
                          "indexExpression": {
                            "id": 22235,
                            "name": "tokenOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22195,
                            "src": "8306:8:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "8298:17:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$21574_storage",
                            "typeString": "struct FranchisedIndexPool.Record storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8271:44:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22245,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 22239,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22201,
                                "src": "8334:8:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 22241,
                                      "name": "inRecord",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22226,
                                      "src": "8351:8:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                        "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                      }
                                    },
                                    "id": 22242,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "reserve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 21571,
                                    "src": "8351:16:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  {
                                    "id": 22243,
                                    "name": "MAX_IN_RATIO",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21524,
                                    "src": "8369:12:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 22240,
                                  "name": "_mul",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22963,
                                  "src": "8346:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 22244,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8346:36:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8334:48:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d41585f494e5f524154494f",
                              "id": 22246,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8384:14:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ae8acaa6a695c6235cafd131eee9e0f44d7addbb9b6373a0f80fba9ff8078b7f",
                                "typeString": "literal_string \"MAX_IN_RATIO\""
                              },
                              "value": "MAX_IN_RATIO"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ae8acaa6a695c6235cafd131eee9e0f44d7addbb9b6373a0f80fba9ff8078b7f",
                                "typeString": "literal_string \"MAX_IN_RATIO\""
                              }
                            ],
                            "id": 22238,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8326:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8326:73:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22248,
                        "nodeType": "ExpressionStatement",
                        "src": "8326:73:56"
                      },
                      {
                        "expression": {
                          "id": 22261,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 22249,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22190,
                            "src": "8410:9:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 22251,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22201,
                                "src": "8436:8:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 22252,
                                  "name": "inRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22226,
                                  "src": "8446:8:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                    "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                  }
                                },
                                "id": 22253,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21571,
                                "src": "8446:16:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              {
                                "expression": {
                                  "id": 22254,
                                  "name": "inRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22226,
                                  "src": "8464:8:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                    "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                  }
                                },
                                "id": 22255,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "weight",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21573,
                                "src": "8464:15:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              },
                              {
                                "expression": {
                                  "id": 22256,
                                  "name": "outRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22233,
                                  "src": "8481:9:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                    "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                  }
                                },
                                "id": 22257,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21571,
                                "src": "8481:17:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              {
                                "expression": {
                                  "id": 22258,
                                  "name": "outRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22233,
                                  "src": "8500:9:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                    "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                  }
                                },
                                "id": 22259,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "weight",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21573,
                                "src": "8500:16:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                },
                                {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                },
                                {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                },
                                {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              ],
                              "id": 22250,
                              "name": "_getAmountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22576,
                              "src": "8422:13:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256,uint256,uint256) view returns (uint256)"
                              }
                            },
                            "id": 22260,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8422:95:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8410:107:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22262,
                        "nodeType": "ExpressionStatement",
                        "src": "8410:107:56"
                      },
                      {
                        "id": 22293,
                        "nodeType": "UncheckedBlock",
                        "src": "8604:296:56",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 22271,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "id": 22265,
                                        "name": "tokenIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22193,
                                        "src": "8729:7:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 22264,
                                      "name": "_balance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22513,
                                      "src": "8720:8:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address) view returns (uint256)"
                                      }
                                    },
                                    "id": 22266,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8720:17:56",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 22270,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 22267,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22201,
                                      "src": "8741:8:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 22268,
                                        "name": "inRecord",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22226,
                                        "src": "8752:8:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                          "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                        }
                                      },
                                      "id": 22269,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "reserve",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 21571,
                                      "src": "8752:16:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "src": "8741:27:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "8720:48:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "hexValue": "4e4f545f5245434549564544",
                                  "id": 22272,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8770:14:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5bc54dac1e6c6942ca387ee7fa5b266c08fd485e140ffd0f93cb3919d20c5523",
                                    "typeString": "literal_string \"NOT_RECEIVED\""
                                  },
                                  "value": "NOT_RECEIVED"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_5bc54dac1e6c6942ca387ee7fa5b266c08fd485e140ffd0f93cb3919d20c5523",
                                    "typeString": "literal_string \"NOT_RECEIVED\""
                                  }
                                ],
                                "id": 22263,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "8712:7:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 22273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8712:73:56",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 22274,
                            "nodeType": "ExpressionStatement",
                            "src": "8712:73:56"
                          },
                          {
                            "expression": {
                              "id": 22282,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "expression": {
                                  "id": 22275,
                                  "name": "inRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22226,
                                  "src": "8799:8:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                    "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                  }
                                },
                                "id": 22277,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21571,
                                "src": "8799:16:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 22280,
                                    "name": "amountIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22201,
                                    "src": "8827:8:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 22279,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8819:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint120_$",
                                    "typeString": "type(uint120)"
                                  },
                                  "typeName": {
                                    "id": 22278,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8819:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 22281,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8819:17:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "src": "8799:37:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint120",
                                "typeString": "uint120"
                              }
                            },
                            "id": 22283,
                            "nodeType": "ExpressionStatement",
                            "src": "8799:37:56"
                          },
                          {
                            "expression": {
                              "id": 22291,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "expression": {
                                  "id": 22284,
                                  "name": "outRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22233,
                                  "src": "8850:9:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                    "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                  }
                                },
                                "id": 22286,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21571,
                                "src": "8850:17:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 22289,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22190,
                                    "src": "8879:9:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 22288,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8871:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint120_$",
                                    "typeString": "type(uint120)"
                                  },
                                  "typeName": {
                                    "id": 22287,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8871:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 22290,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8871:18:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "src": "8850:39:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint120",
                                "typeString": "uint120"
                              }
                            },
                            "id": 22292,
                            "nodeType": "ExpressionStatement",
                            "src": "8850:39:56"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 22295,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22195,
                              "src": "8919:8:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22296,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22190,
                              "src": "8929:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 22297,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22197,
                              "src": "8940:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22298,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22199,
                              "src": "8951:11:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 22294,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23059,
                            "src": "8909:9:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 22299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8909:54:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22300,
                        "nodeType": "ExpressionStatement",
                        "src": "8909:54:56"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 22302,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22197,
                              "src": "8983:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22303,
                              "name": "tokenIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22193,
                              "src": "8994:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22304,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22195,
                              "src": "9003:8:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22305,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22201,
                              "src": "9013:8:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 22306,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22190,
                              "src": "9023:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22301,
                            "name": "Swap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2444,
                            "src": "8978:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 22307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8978:55:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22308,
                        "nodeType": "EmitStatement",
                        "src": "8973:60:56"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22182,
                    "nodeType": "StructuredDocumentation",
                    "src": "7758:117:56",
                    "text": "@dev Swaps one token for another. The router must prefund this contract and ensure there isn't too much slippage."
                  },
                  "functionSelector": "627dd56a",
                  "id": 22310,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 22188,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 22187,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 21564,
                        "src": "7931:4:56"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "7931:4:56"
                    }
                  ],
                  "name": "swap",
                  "nameLocation": "7889:4:56",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22186,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7922:8:56"
                  },
                  "parameters": {
                    "id": 22185,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22184,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "7909:4:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22310,
                        "src": "7894:19:56",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 22183,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7894:5:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7893:21:56"
                  },
                  "returnParameters": {
                    "id": 22191,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22190,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "7953:9:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22310,
                        "src": "7945:17:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22189,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7945:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7944:19:56"
                  },
                  "scope": 23195,
                  "src": "7880:1160:56",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2376
                  ],
                  "body": {
                    "id": 22450,
                    "nodeType": "Block",
                    "src": "9258:1171:56",
                    "statements": [
                      {
                        "assignments": [
                          22322,
                          22324,
                          22326,
                          22328,
                          22330,
                          22332
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22322,
                            "mutability": "mutable",
                            "name": "tokenIn",
                            "nameLocation": "9277:7:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22450,
                            "src": "9269:15:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 22321,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9269:7:56",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 22324,
                            "mutability": "mutable",
                            "name": "tokenOut",
                            "nameLocation": "9294:8:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22450,
                            "src": "9286:16:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 22323,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9286:7:56",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 22326,
                            "mutability": "mutable",
                            "name": "recipient",
                            "nameLocation": "9312:9:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22450,
                            "src": "9304:17:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 22325,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9304:7:56",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 22328,
                            "mutability": "mutable",
                            "name": "unwrapBento",
                            "nameLocation": "9328:11:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22450,
                            "src": "9323:16:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 22327,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9323:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 22330,
                            "mutability": "mutable",
                            "name": "amountIn",
                            "nameLocation": "9349:8:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22450,
                            "src": "9341:16:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22329,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9341:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 22332,
                            "mutability": "mutable",
                            "name": "context",
                            "nameLocation": "9372:7:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22450,
                            "src": "9359:20:56",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 22331,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "9359:5:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22350,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 22335,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22313,
                              "src": "9407:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 22337,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9426:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 22336,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9426:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 22339,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9435:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 22338,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9435:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 22341,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9444:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 22340,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9444:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 22343,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9453:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 22342,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9453:4:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 22345,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9459:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 22344,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9459:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 22347,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9468:5:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 22346,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9468:5:56",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 22348,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "9425:49:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                "typeString": "tuple(type(address),type(address),type(address),type(bool),type(uint256),type(bytes storage pointer))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_address_$_$_t_type$_t_bool_$_$_t_type$_t_uint256_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                "typeString": "tuple(type(address),type(address),type(address),type(bool),type(uint256),type(bytes storage pointer))"
                              }
                            ],
                            "expression": {
                              "id": 22333,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "9383:3:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 22334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "9383:10:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 22349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9383:101:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_payable_$_t_address_payable_$_t_address_payable_$_t_bool_$_t_uint256_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(address payable,address payable,address payable,bool,uint256,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9268:216:56"
                      },
                      {
                        "condition": {
                          "id": 22351,
                          "name": "level2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23230,
                          "src": "9498:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22356,
                        "nodeType": "IfStatement",
                        "src": "9494:38:56",
                        "trueBody": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 22353,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22326,
                                "src": "9522:9:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 22352,
                              "name": "_checkWhiteList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23628,
                              "src": "9506:15:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                                "typeString": "function (address) view"
                              }
                            },
                            "id": 22354,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9506:26:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 22355,
                          "nodeType": "ExpressionStatement",
                          "src": "9506:26:56"
                        }
                      },
                      {
                        "assignments": [
                          22359
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22359,
                            "mutability": "mutable",
                            "name": "inRecord",
                            "nameLocation": "9557:8:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22450,
                            "src": "9542:23:56",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                              "typeString": "struct FranchisedIndexPool.Record"
                            },
                            "typeName": {
                              "id": 22358,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 22357,
                                "name": "Record",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 21574,
                                "src": "9542:6:56"
                              },
                              "referencedDeclaration": 21574,
                              "src": "9542:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                "typeString": "struct FranchisedIndexPool.Record"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22363,
                        "initialValue": {
                          "baseExpression": {
                            "id": 22360,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21569,
                            "src": "9568:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$21574_storage_$",
                              "typeString": "mapping(address => struct FranchisedIndexPool.Record storage ref)"
                            }
                          },
                          "id": 22362,
                          "indexExpression": {
                            "id": 22361,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22322,
                            "src": "9576:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9568:16:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$21574_storage",
                            "typeString": "struct FranchisedIndexPool.Record storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9542:42:56"
                      },
                      {
                        "assignments": [
                          22366
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22366,
                            "mutability": "mutable",
                            "name": "outRecord",
                            "nameLocation": "9609:9:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22450,
                            "src": "9594:24:56",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                              "typeString": "struct FranchisedIndexPool.Record"
                            },
                            "typeName": {
                              "id": 22365,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 22364,
                                "name": "Record",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 21574,
                                "src": "9594:6:56"
                              },
                              "referencedDeclaration": 21574,
                              "src": "9594:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                "typeString": "struct FranchisedIndexPool.Record"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22370,
                        "initialValue": {
                          "baseExpression": {
                            "id": 22367,
                            "name": "records",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21569,
                            "src": "9621:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$21574_storage_$",
                              "typeString": "mapping(address => struct FranchisedIndexPool.Record storage ref)"
                            }
                          },
                          "id": 22369,
                          "indexExpression": {
                            "id": 22368,
                            "name": "tokenOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22324,
                            "src": "9629:8:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9621:17:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Record_$21574_storage",
                            "typeString": "struct FranchisedIndexPool.Record storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9594:44:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22378,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 22372,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22330,
                                "src": "9657:8:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 22374,
                                      "name": "inRecord",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22359,
                                      "src": "9674:8:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                        "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                      }
                                    },
                                    "id": 22375,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "reserve",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 21571,
                                    "src": "9674:16:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  {
                                    "id": 22376,
                                    "name": "MAX_IN_RATIO",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21524,
                                    "src": "9692:12:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 22373,
                                  "name": "_mul",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22963,
                                  "src": "9669:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 22377,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9669:36:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9657:48:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d41585f494e5f524154494f",
                              "id": 22379,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9707:14:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ae8acaa6a695c6235cafd131eee9e0f44d7addbb9b6373a0f80fba9ff8078b7f",
                                "typeString": "literal_string \"MAX_IN_RATIO\""
                              },
                              "value": "MAX_IN_RATIO"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ae8acaa6a695c6235cafd131eee9e0f44d7addbb9b6373a0f80fba9ff8078b7f",
                                "typeString": "literal_string \"MAX_IN_RATIO\""
                              }
                            ],
                            "id": 22371,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9649:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22380,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9649:73:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22381,
                        "nodeType": "ExpressionStatement",
                        "src": "9649:73:56"
                      },
                      {
                        "expression": {
                          "id": 22394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 22382,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22319,
                            "src": "9733:9:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 22384,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22330,
                                "src": "9759:8:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 22385,
                                  "name": "inRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22359,
                                  "src": "9769:8:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                    "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                  }
                                },
                                "id": 22386,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21571,
                                "src": "9769:16:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              {
                                "expression": {
                                  "id": 22387,
                                  "name": "inRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22359,
                                  "src": "9787:8:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                    "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                  }
                                },
                                "id": 22388,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "weight",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21573,
                                "src": "9787:15:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              },
                              {
                                "expression": {
                                  "id": 22389,
                                  "name": "outRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22366,
                                  "src": "9804:9:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                    "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                  }
                                },
                                "id": 22390,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21571,
                                "src": "9804:17:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              {
                                "expression": {
                                  "id": 22391,
                                  "name": "outRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22366,
                                  "src": "9823:9:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                    "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                  }
                                },
                                "id": 22392,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "weight",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21573,
                                "src": "9823:16:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                },
                                {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                },
                                {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                },
                                {
                                  "typeIdentifier": "t_uint136",
                                  "typeString": "uint136"
                                }
                              ],
                              "id": 22383,
                              "name": "_getAmountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22576,
                              "src": "9745:13:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256,uint256,uint256) view returns (uint256)"
                              }
                            },
                            "id": 22393,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9745:95:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9733:107:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22395,
                        "nodeType": "ExpressionStatement",
                        "src": "9733:107:56"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 22401,
                              "name": "context",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22332,
                              "src": "9898:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 22397,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "9866:3:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 22398,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "9866:10:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 22396,
                                "name": "ITridentCallee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2482,
                                "src": "9851:14:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ITridentCallee_$2482_$",
                                  "typeString": "type(contract ITridentCallee)"
                                }
                              },
                              "id": 22399,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9851:26:56",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ITridentCallee_$2482",
                                "typeString": "contract ITridentCallee"
                              }
                            },
                            "id": 22400,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tridentSwapCallback",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2476,
                            "src": "9851:46:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) external"
                            }
                          },
                          "id": 22402,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9851:55:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22403,
                        "nodeType": "ExpressionStatement",
                        "src": "9851:55:56"
                      },
                      {
                        "id": 22434,
                        "nodeType": "UncheckedBlock",
                        "src": "9993:296:56",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 22412,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "arguments": [
                                      {
                                        "id": 22406,
                                        "name": "tokenIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22322,
                                        "src": "10118:7:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 22405,
                                      "name": "_balance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22513,
                                      "src": "10109:8:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                        "typeString": "function (address) view returns (uint256)"
                                      }
                                    },
                                    "id": 22407,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10109:17:56",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 22411,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 22408,
                                      "name": "amountIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22330,
                                      "src": "10130:8:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 22409,
                                        "name": "inRecord",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22359,
                                        "src": "10141:8:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                          "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                        }
                                      },
                                      "id": 22410,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "reserve",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 21571,
                                      "src": "10141:16:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "src": "10130:27:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "10109:48:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "hexValue": "4e4f545f5245434549564544",
                                  "id": 22413,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10159:14:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5bc54dac1e6c6942ca387ee7fa5b266c08fd485e140ffd0f93cb3919d20c5523",
                                    "typeString": "literal_string \"NOT_RECEIVED\""
                                  },
                                  "value": "NOT_RECEIVED"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_5bc54dac1e6c6942ca387ee7fa5b266c08fd485e140ffd0f93cb3919d20c5523",
                                    "typeString": "literal_string \"NOT_RECEIVED\""
                                  }
                                ],
                                "id": 22404,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "10101:7:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 22414,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10101:73:56",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 22415,
                            "nodeType": "ExpressionStatement",
                            "src": "10101:73:56"
                          },
                          {
                            "expression": {
                              "id": 22423,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "expression": {
                                  "id": 22416,
                                  "name": "inRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22359,
                                  "src": "10188:8:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                    "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                  }
                                },
                                "id": 22418,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21571,
                                "src": "10188:16:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 22421,
                                    "name": "amountIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22330,
                                    "src": "10216:8:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 22420,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10208:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint120_$",
                                    "typeString": "type(uint120)"
                                  },
                                  "typeName": {
                                    "id": 22419,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10208:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 22422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10208:17:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "src": "10188:37:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint120",
                                "typeString": "uint120"
                              }
                            },
                            "id": 22424,
                            "nodeType": "ExpressionStatement",
                            "src": "10188:37:56"
                          },
                          {
                            "expression": {
                              "id": 22432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "expression": {
                                  "id": 22425,
                                  "name": "outRecord",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22366,
                                  "src": "10239:9:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Record_$21574_storage_ptr",
                                    "typeString": "struct FranchisedIndexPool.Record storage pointer"
                                  }
                                },
                                "id": 22427,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "reserve",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 21571,
                                "src": "10239:17:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 22430,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22319,
                                    "src": "10268:9:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 22429,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "10260:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint120_$",
                                    "typeString": "type(uint120)"
                                  },
                                  "typeName": {
                                    "id": 22428,
                                    "name": "uint120",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10260:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 22431,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10260:18:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "src": "10239:39:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint120",
                                "typeString": "uint120"
                              }
                            },
                            "id": 22433,
                            "nodeType": "ExpressionStatement",
                            "src": "10239:39:56"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 22436,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22324,
                              "src": "10308:8:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22437,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22319,
                              "src": "10318:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 22438,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22326,
                              "src": "10329:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22439,
                              "name": "unwrapBento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22328,
                              "src": "10340:11:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 22435,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23059,
                            "src": "10298:9:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,uint256,address,bool)"
                            }
                          },
                          "id": 22440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10298:54:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22441,
                        "nodeType": "ExpressionStatement",
                        "src": "10298:54:56"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 22443,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22326,
                              "src": "10372:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22444,
                              "name": "tokenIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22322,
                              "src": "10383:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22445,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22324,
                              "src": "10392:8:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 22446,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22330,
                              "src": "10402:8:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 22447,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22319,
                              "src": "10412:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22442,
                            "name": "Swap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2444,
                            "src": "10367:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 22448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10367:55:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22449,
                        "nodeType": "EmitStatement",
                        "src": "10362:60:56"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22311,
                    "nodeType": "StructuredDocumentation",
                    "src": "9046:118:56",
                    "text": "@dev Swaps one token for another. The router must support swap callbacks and ensure there isn't too much slippage."
                  },
                  "functionSelector": "053da1c8",
                  "id": 22451,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 22317,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 22316,
                        "name": "lock",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 21564,
                        "src": "9225:4:56"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "9225:4:56"
                    }
                  ],
                  "name": "flashSwap",
                  "nameLocation": "9178:9:56",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 22315,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9216:8:56"
                  },
                  "parameters": {
                    "id": 22314,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22313,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "9203:4:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22451,
                        "src": "9188:19:56",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 22312,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "9188:5:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9187:21:56"
                  },
                  "returnParameters": {
                    "id": 22320,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22319,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "9247:9:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22451,
                        "src": "9239:17:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22318,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9239:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9238:19:56"
                  },
                  "scope": 23195,
                  "src": "9169:1260:56",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22477,
                    "nodeType": "Block",
                    "src": "10518:175:56",
                    "statements": [
                      {
                        "assignments": [
                          null,
                          22456
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 22456,
                            "mutability": "mutable",
                            "name": "_barFee",
                            "nameLocation": "10544:7:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22477,
                            "src": "10531:20:56",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 22455,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "10531:5:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22466,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 22461,
                                      "name": "IMasterDeployer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2356,
                                      "src": "10604:15:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IMasterDeployer_$2356_$",
                                        "typeString": "type(contract IMasterDeployer)"
                                      }
                                    },
                                    "id": 22462,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "barFee",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2324,
                                    "src": "10604:22:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_view$__$returns$_t_uint256_$",
                                      "typeString": "function IMasterDeployer.barFee() view returns (uint256)"
                                    }
                                  },
                                  "id": 22463,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "10604:31:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "expression": {
                                  "id": 22459,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "10581:3:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 22460,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "10581:22:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 22464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10581:55:56",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 22457,
                              "name": "masterDeployer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21453,
                              "src": "10555:14:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 22458,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "10555:25:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 22465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10555:82:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10528:109:56"
                      },
                      {
                        "expression": {
                          "id": 22475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 22467,
                            "name": "barFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21539,
                            "src": "10647:6:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 22470,
                                "name": "_barFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22456,
                                "src": "10667:7:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 22472,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10677:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 22471,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10677:7:56",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 22473,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "10676:9:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "expression": {
                                "id": 22468,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "10656:3:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 22469,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "10656:10:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 22474,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10656:30:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10647:39:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22476,
                        "nodeType": "ExpressionStatement",
                        "src": "10647:39:56"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 22452,
                    "nodeType": "StructuredDocumentation",
                    "src": "10435:47:56",
                    "text": "@dev Updates `barFee` for Trident protocol."
                  },
                  "functionSelector": "92bc3219",
                  "id": 22478,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updateBarFee",
                  "nameLocation": "10496:12:56",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22453,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10508:2:56"
                  },
                  "returnParameters": {
                    "id": 22454,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10518:0:56"
                  },
                  "scope": 23195,
                  "src": "10487:206:56",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 22512,
                    "nodeType": "Block",
                    "src": "10772:187:56",
                    "statements": [
                      {
                        "assignments": [
                          null,
                          22486
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 22486,
                            "mutability": "mutable",
                            "name": "data",
                            "nameLocation": "10798:4:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22512,
                            "src": "10785:17:56",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 22485,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "10785:5:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22501,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 22491,
                                      "name": "IBentoBoxMinimal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2253,
                                      "src": "10846:16:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IBentoBoxMinimal_$2253_$",
                                        "typeString": "type(contract IBentoBoxMinimal)"
                                      }
                                    },
                                    "id": 22492,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "balanceOf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2151,
                                    "src": "10846:26:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function IBentoBoxMinimal.balanceOf(address,address) view returns (uint256)"
                                    }
                                  },
                                  "id": 22493,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "10846:35:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 22494,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22480,
                                  "src": "10883:5:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 22497,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "10898:4:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_FranchisedIndexPool_$23195",
                                        "typeString": "contract FranchisedIndexPool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_FranchisedIndexPool_$23195",
                                        "typeString": "contract FranchisedIndexPool"
                                      }
                                    ],
                                    "id": 22496,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10890:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 22495,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10890:7:56",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 22498,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10890:13:56",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 22489,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "10823:3:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 22490,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "10823:22:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 22499,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10823:81:56",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 22487,
                              "name": "bento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21451,
                              "src": "10806:5:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 22488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "10806:16:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 22500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10806:99:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10782:123:56"
                      },
                      {
                        "expression": {
                          "id": 22510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 22502,
                            "name": "balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22483,
                            "src": "10915:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 22505,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22486,
                                "src": "10936:4:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 22507,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10943:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 22506,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10943:7:56",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 22508,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "10942:9:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "expression": {
                                "id": 22503,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "10925:3:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 22504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "10925:10:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 22509,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10925:27:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10915:37:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22511,
                        "nodeType": "ExpressionStatement",
                        "src": "10915:37:56"
                      }
                    ]
                  },
                  "id": 22513,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_balance",
                  "nameLocation": "10708:8:56",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22481,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22480,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "10725:5:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22513,
                        "src": "10717:13:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22479,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10717:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10716:15:56"
                  },
                  "returnParameters": {
                    "id": 22484,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22483,
                        "mutability": "mutable",
                        "name": "balance",
                        "nameLocation": "10763:7:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22513,
                        "src": "10755:15:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22482,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10755:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10754:17:56"
                  },
                  "scope": 23195,
                  "src": "10699:260:56",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22575,
                    "nodeType": "Block",
                    "src": "11195:465:56",
                    "statements": [
                      {
                        "assignments": [
                          22529
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22529,
                            "mutability": "mutable",
                            "name": "weightRatio",
                            "nameLocation": "11213:11:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22575,
                            "src": "11205:19:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22528,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11205:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22534,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 22531,
                              "name": "tokenInWeight",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22519,
                              "src": "11232:13:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 22532,
                              "name": "tokenOutWeight",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22523,
                              "src": "11247:14:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22530,
                            "name": "_div",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22994,
                            "src": "11227:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 22533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11227:35:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11205:57:56"
                      },
                      {
                        "id": 22574,
                        "nodeType": "UncheckedBlock",
                        "src": "11352:302:56",
                        "statements": [
                          {
                            "assignments": [
                              22536
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 22536,
                                "mutability": "mutable",
                                "name": "adjustedIn",
                                "nameLocation": "11384:10:56",
                                "nodeType": "VariableDeclaration",
                                "scope": 22574,
                                "src": "11376:18:56",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 22535,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11376:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 22544,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 22538,
                                  "name": "tokenInAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22515,
                                  "src": "11402:13:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 22541,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 22539,
                                        "name": "BASE",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21458,
                                        "src": "11418:4:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 22540,
                                        "name": "swapFee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 21447,
                                        "src": "11425:7:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "11418:14:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 22542,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "11417:16:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 22537,
                                "name": "_mul",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22963,
                                "src": "11397:4:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 22543,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11397:37:56",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "11376:58:56"
                          },
                          {
                            "assignments": [
                              22546
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 22546,
                                "mutability": "mutable",
                                "name": "a",
                                "nameLocation": "11456:1:56",
                                "nodeType": "VariableDeclaration",
                                "scope": 22574,
                                "src": "11448:9:56",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 22545,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11448:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 22553,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 22548,
                                  "name": "tokenInBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22517,
                                  "src": "11465:14:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 22551,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 22549,
                                    "name": "tokenInBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22517,
                                    "src": "11481:14:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "id": 22550,
                                    "name": "adjustedIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22536,
                                    "src": "11498:10:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "11481:27:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 22547,
                                "name": "_div",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22994,
                                "src": "11460:4:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 22552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11460:49:56",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "11448:61:56"
                          },
                          {
                            "assignments": [
                              22555
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 22555,
                                "mutability": "mutable",
                                "name": "b",
                                "nameLocation": "11531:1:56",
                                "nodeType": "VariableDeclaration",
                                "scope": 22574,
                                "src": "11523:9:56",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 22554,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11523:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 22560,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 22557,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22546,
                                  "src": "11544:1:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 22558,
                                  "name": "weightRatio",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22529,
                                  "src": "11547:11:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 22556,
                                "name": "_compute",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22644,
                                "src": "11535:8:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 22559,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11535:24:56",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "11523:36:56"
                          },
                          {
                            "assignments": [
                              22562
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 22562,
                                "mutability": "mutable",
                                "name": "c",
                                "nameLocation": "11581:1:56",
                                "nodeType": "VariableDeclaration",
                                "scope": 22574,
                                "src": "11573:9:56",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 22561,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11573:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 22566,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22565,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 22563,
                                "name": "BASE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21458,
                                "src": "11585:4:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "id": 22564,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22555,
                                "src": "11592:1:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11585:8:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "11573:20:56"
                          },
                          {
                            "expression": {
                              "id": 22572,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 22567,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22526,
                                "src": "11607:9:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 22569,
                                    "name": "tokenOutBalance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22521,
                                    "src": "11624:15:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 22570,
                                    "name": "c",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22562,
                                    "src": "11641:1:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 22568,
                                  "name": "_mul",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22963,
                                  "src": "11619:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 22571,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11619:24:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11607:36:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 22573,
                            "nodeType": "ExpressionStatement",
                            "src": "11607:36:56"
                          }
                        ]
                      }
                    ]
                  },
                  "id": 22576,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getAmountOut",
                  "nameLocation": "10974:13:56",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22524,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22515,
                        "mutability": "mutable",
                        "name": "tokenInAmount",
                        "nameLocation": "11005:13:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22576,
                        "src": "10997:21:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22514,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10997:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22517,
                        "mutability": "mutable",
                        "name": "tokenInBalance",
                        "nameLocation": "11036:14:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22576,
                        "src": "11028:22:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22516,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11028:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22519,
                        "mutability": "mutable",
                        "name": "tokenInWeight",
                        "nameLocation": "11068:13:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22576,
                        "src": "11060:21:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22518,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11060:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22521,
                        "mutability": "mutable",
                        "name": "tokenOutBalance",
                        "nameLocation": "11099:15:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22576,
                        "src": "11091:23:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22520,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11091:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22523,
                        "mutability": "mutable",
                        "name": "tokenOutWeight",
                        "nameLocation": "11132:14:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22576,
                        "src": "11124:22:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22522,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11124:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10987:165:56"
                  },
                  "returnParameters": {
                    "id": 22527,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22526,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "11184:9:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22576,
                        "src": "11176:17:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22525,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11176:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11175:19:56"
                  },
                  "scope": 23195,
                  "src": "10965:695:56",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22643,
                    "nodeType": "Block",
                    "src": "11750:390:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 22592,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 22588,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 22586,
                                  "name": "MIN_POW_BASE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21504,
                                  "src": "11768:12:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "id": 22587,
                                  "name": "base",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22578,
                                  "src": "11784:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11768:20:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 22591,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 22589,
                                  "name": "base",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22578,
                                  "src": "11792:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "id": 22590,
                                  "name": "MAX_POW_BASE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21512,
                                  "src": "11800:12:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11792:20:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "11768:44:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f42415345",
                              "id": 22593,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11814:14:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4277c8319fd149a95e69be42a3e123adc1b4da419a70e9b9baf1b89820d48e58",
                                "typeString": "literal_string \"INVALID_BASE\""
                              },
                              "value": "INVALID_BASE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4277c8319fd149a95e69be42a3e123adc1b4da419a70e9b9baf1b89820d48e58",
                                "typeString": "literal_string \"INVALID_BASE\""
                              }
                            ],
                            "id": 22585,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11760:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 22594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11760:69:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 22595,
                        "nodeType": "ExpressionStatement",
                        "src": "11760:69:56"
                      },
                      {
                        "assignments": [
                          22597
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22597,
                            "mutability": "mutable",
                            "name": "whole",
                            "nameLocation": "11848:5:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22643,
                            "src": "11840:13:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22596,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11840:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22604,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22603,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 22600,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 22598,
                                  "name": "exp",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22580,
                                  "src": "11857:3:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 22599,
                                  "name": "BASE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21458,
                                  "src": "11863:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11857:10:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 22601,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "11856:12:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 22602,
                            "name": "BASE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21458,
                            "src": "11871:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11856:19:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11840:35:56"
                      },
                      {
                        "assignments": [
                          22606
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22606,
                            "mutability": "mutable",
                            "name": "remain",
                            "nameLocation": "11893:6:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22643,
                            "src": "11885:14:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22605,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11885:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22610,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22609,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22607,
                            "name": "exp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22580,
                            "src": "11902:3:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 22608,
                            "name": "whole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22597,
                            "src": "11908:5:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11902:11:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11885:28:56"
                      },
                      {
                        "assignments": [
                          22612
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22612,
                            "mutability": "mutable",
                            "name": "wholePow",
                            "nameLocation": "11931:8:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22643,
                            "src": "11923:16:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22611,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11923:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22619,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 22614,
                              "name": "base",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22578,
                              "src": "11947:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22617,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 22615,
                                "name": "whole",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22597,
                                "src": "11953:5:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "id": 22616,
                                "name": "BASE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21458,
                                "src": "11961:4:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "11953:12:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22613,
                            "name": "_pow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22775,
                            "src": "11942:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 22618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11942:24:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11923:43:56"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22620,
                            "name": "remain",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22606,
                            "src": "11981:6:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 22621,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11991:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "11981:11:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22627,
                        "nodeType": "IfStatement",
                        "src": "11977:34:56",
                        "trueBody": {
                          "expression": {
                            "id": 22625,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 22623,
                              "name": "output",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22583,
                              "src": "11994:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "id": 22624,
                              "name": "wholePow",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22612,
                              "src": "12003:8:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11994:17:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 22626,
                          "nodeType": "ExpressionStatement",
                          "src": "11994:17:56"
                        }
                      },
                      {
                        "assignments": [
                          22629
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22629,
                            "mutability": "mutable",
                            "name": "partialResult",
                            "nameLocation": "12030:13:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22643,
                            "src": "12022:21:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22628,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12022:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22635,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 22631,
                              "name": "base",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22578,
                              "src": "12057:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 22632,
                              "name": "remain",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22606,
                              "src": "12063:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 22633,
                              "name": "POW_PRECISION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21519,
                              "src": "12071:13:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22630,
                            "name": "_powApprox",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22893,
                            "src": "12046:10:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 22634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12046:39:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12022:63:56"
                      },
                      {
                        "expression": {
                          "id": 22641,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 22636,
                            "name": "output",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22583,
                            "src": "12095:6:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 22638,
                                "name": "wholePow",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22612,
                                "src": "12109:8:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 22639,
                                "name": "partialResult",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22629,
                                "src": "12119:13:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 22637,
                              "name": "_mul",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22963,
                              "src": "12104:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 22640,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12104:29:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12095:38:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22642,
                        "nodeType": "ExpressionStatement",
                        "src": "12095:38:56"
                      }
                    ]
                  },
                  "id": 22644,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_compute",
                  "nameLocation": "11675:8:56",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22581,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22578,
                        "mutability": "mutable",
                        "name": "base",
                        "nameLocation": "11692:4:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22644,
                        "src": "11684:12:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22577,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11684:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22580,
                        "mutability": "mutable",
                        "name": "exp",
                        "nameLocation": "11706:3:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22644,
                        "src": "11698:11:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22579,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11698:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11683:27:56"
                  },
                  "returnParameters": {
                    "id": 22584,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22583,
                        "mutability": "mutable",
                        "name": "output",
                        "nameLocation": "11742:6:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22644,
                        "src": "11734:14:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22582,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11734:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11733:16:56"
                  },
                  "scope": 23195,
                  "src": "11666:474:56",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22723,
                    "nodeType": "Block",
                    "src": "12407:553:56",
                    "statements": [
                      {
                        "assignments": [
                          22662
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22662,
                            "mutability": "mutable",
                            "name": "normalizedWeight",
                            "nameLocation": "12425:16:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22723,
                            "src": "12417:24:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22661,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12417:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22667,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 22664,
                              "name": "tokenOutWeight",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22648,
                              "src": "12449:14:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 22665,
                              "name": "_totalWeight",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22652,
                              "src": "12465:12:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22663,
                            "name": "_div",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22994,
                            "src": "12444:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 22666,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12444:34:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12417:61:56"
                      },
                      {
                        "assignments": [
                          22669
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22669,
                            "mutability": "mutable",
                            "name": "newPoolSupply",
                            "nameLocation": "12496:13:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22723,
                            "src": "12488:21:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22668,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12488:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22673,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22670,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22650,
                            "src": "12512:12:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 22671,
                            "name": "toBurn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22654,
                            "src": "12527:6:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12512:21:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12488:45:56"
                      },
                      {
                        "assignments": [
                          22675
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22675,
                            "mutability": "mutable",
                            "name": "poolRatio",
                            "nameLocation": "12551:9:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22723,
                            "src": "12543:17:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22674,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12543:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22680,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 22677,
                              "name": "newPoolSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22669,
                              "src": "12568:13:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 22678,
                              "name": "_totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22650,
                              "src": "12583:12:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22676,
                            "name": "_div",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22994,
                            "src": "12563:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 22679,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12563:33:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12543:53:56"
                      },
                      {
                        "assignments": [
                          22682
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22682,
                            "mutability": "mutable",
                            "name": "tokenOutRatio",
                            "nameLocation": "12614:13:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22723,
                            "src": "12606:21:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22681,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12606:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22690,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 22684,
                              "name": "poolRatio",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22675,
                              "src": "12635:9:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 22686,
                                  "name": "BASE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21458,
                                  "src": "12651:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 22687,
                                  "name": "normalizedWeight",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22662,
                                  "src": "12657:16:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 22685,
                                "name": "_div",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22994,
                                "src": "12646:4:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 22688,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12646:28:56",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22683,
                            "name": "_pow",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22775,
                            "src": "12630:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 22689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12630:45:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12606:69:56"
                      },
                      {
                        "assignments": [
                          22692
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22692,
                            "mutability": "mutable",
                            "name": "newBalanceOut",
                            "nameLocation": "12693:13:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22723,
                            "src": "12685:21:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22691,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12685:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22697,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 22694,
                              "name": "tokenOutRatio",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22682,
                              "src": "12714:13:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 22695,
                              "name": "tokenOutBalance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22646,
                              "src": "12729:15:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22693,
                            "name": "_mul",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22963,
                            "src": "12709:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 22696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12709:36:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12685:60:56"
                      },
                      {
                        "assignments": [
                          22699
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22699,
                            "mutability": "mutable",
                            "name": "tokenAmountOutBeforeSwapFee",
                            "nameLocation": "12763:27:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22723,
                            "src": "12755:35:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22698,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12755:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22703,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22700,
                            "name": "tokenOutBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22646,
                            "src": "12793:15:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 22701,
                            "name": "newBalanceOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22692,
                            "src": "12811:13:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12793:31:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12755:69:56"
                      },
                      {
                        "assignments": [
                          22705
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22705,
                            "mutability": "mutable",
                            "name": "zaz",
                            "nameLocation": "12842:3:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22723,
                            "src": "12834:11:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22704,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12834:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22712,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 22708,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 22706,
                                  "name": "BASE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21458,
                                  "src": "12849:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "id": 22707,
                                  "name": "normalizedWeight",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22662,
                                  "src": "12856:16:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12849:23:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 22709,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "12848:25:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 22710,
                            "name": "_swapFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22656,
                            "src": "12876:8:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12848:36:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12834:50:56"
                      },
                      {
                        "expression": {
                          "id": 22721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 22713,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22659,
                            "src": "12894:9:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 22715,
                                "name": "tokenAmountOutBeforeSwapFee",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22699,
                                "src": "12911:27:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 22718,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 22716,
                                      "name": "BASE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21458,
                                      "src": "12941:4:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "id": 22717,
                                      "name": "zaz",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22705,
                                      "src": "12948:3:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "12941:10:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 22719,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "12940:12:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 22714,
                              "name": "_mul",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22963,
                              "src": "12906:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 22720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12906:47:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12894:59:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22722,
                        "nodeType": "ExpressionStatement",
                        "src": "12894:59:56"
                      }
                    ]
                  },
                  "id": 22724,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_computeSingleOutGivenPoolIn",
                  "nameLocation": "12155:28:56",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22657,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22646,
                        "mutability": "mutable",
                        "name": "tokenOutBalance",
                        "nameLocation": "12201:15:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22724,
                        "src": "12193:23:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22645,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12193:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22648,
                        "mutability": "mutable",
                        "name": "tokenOutWeight",
                        "nameLocation": "12234:14:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22724,
                        "src": "12226:22:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22647,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12226:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22650,
                        "mutability": "mutable",
                        "name": "_totalSupply",
                        "nameLocation": "12266:12:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22724,
                        "src": "12258:20:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22649,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12258:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22652,
                        "mutability": "mutable",
                        "name": "_totalWeight",
                        "nameLocation": "12296:12:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22724,
                        "src": "12288:20:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22651,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12288:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22654,
                        "mutability": "mutable",
                        "name": "toBurn",
                        "nameLocation": "12326:6:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22724,
                        "src": "12318:14:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22653,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12318:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22656,
                        "mutability": "mutable",
                        "name": "_swapFee",
                        "nameLocation": "12350:8:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22724,
                        "src": "12342:16:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22655,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12342:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12183:181:56"
                  },
                  "returnParameters": {
                    "id": 22660,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22659,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "12396:9:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22724,
                        "src": "12388:17:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22658,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12388:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12387:19:56"
                  },
                  "scope": 23195,
                  "src": "12146:814:56",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22774,
                    "nodeType": "Block",
                    "src": "13041:140:56",
                    "statements": [
                      {
                        "expression": {
                          "id": 22742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 22733,
                            "name": "output",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22731,
                            "src": "13051:6:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22738,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 22736,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 22734,
                                  "name": "n",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22728,
                                  "src": "13060:1:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "%",
                                "rightExpression": {
                                  "hexValue": "32",
                                  "id": 22735,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13064:1:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "13060:5:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 22737,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13069:1:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "13060:10:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "id": 22740,
                              "name": "BASE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21458,
                              "src": "13077:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 22741,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "13060:21:56",
                            "trueExpression": {
                              "id": 22739,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22726,
                              "src": "13073:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13051:30:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22743,
                        "nodeType": "ExpressionStatement",
                        "src": "13051:30:56"
                      },
                      {
                        "body": {
                          "expression": {
                            "id": 22759,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 22755,
                              "name": "a",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22726,
                              "src": "13120:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22758,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 22756,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22726,
                                "src": "13124:1:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 22757,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22726,
                                "src": "13128:1:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13124:5:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13120:9:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 22760,
                          "nodeType": "ExpressionStatement",
                          "src": "13120:9:56"
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22748,
                            "name": "n",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22728,
                            "src": "13104:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 22749,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13109:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13104:6:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22761,
                        "initializationExpression": {
                          "expression": {
                            "id": 22746,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 22744,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22728,
                              "src": "13096:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "/=",
                            "rightHandSide": {
                              "hexValue": "32",
                              "id": 22745,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13101:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "13096:6:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 22747,
                          "nodeType": "ExpressionStatement",
                          "src": "13096:6:56"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 22753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 22751,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22728,
                              "src": "13112:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "/=",
                            "rightHandSide": {
                              "hexValue": "32",
                              "id": 22752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13117:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "13112:6:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 22754,
                          "nodeType": "ExpressionStatement",
                          "src": "13112:6:56"
                        },
                        "nodeType": "ForStatement",
                        "src": "13091:38:56"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22766,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 22764,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 22762,
                              "name": "n",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22728,
                              "src": "13143:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "hexValue": "32",
                              "id": 22763,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13147:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "13143:5:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 22765,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13152:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "13143:10:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22773,
                        "nodeType": "IfStatement",
                        "src": "13139:35:56",
                        "trueBody": {
                          "expression": {
                            "id": 22771,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 22767,
                              "name": "output",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22731,
                              "src": "13155:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22770,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 22768,
                                "name": "output",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22731,
                                "src": "13164:6:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "id": 22769,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22726,
                                "src": "13173:1:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13164:10:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13155:19:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 22772,
                          "nodeType": "ExpressionStatement",
                          "src": "13155:19:56"
                        }
                      }
                    ]
                  },
                  "id": 22775,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_pow",
                  "nameLocation": "12975:4:56",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22729,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22726,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "12988:1:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22775,
                        "src": "12980:9:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22725,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12980:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22728,
                        "mutability": "mutable",
                        "name": "n",
                        "nameLocation": "12999:1:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22775,
                        "src": "12991:9:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22727,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12991:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12979:22:56"
                  },
                  "returnParameters": {
                    "id": 22732,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22731,
                        "mutability": "mutable",
                        "name": "output",
                        "nameLocation": "13033:6:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22775,
                        "src": "13025:14:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22730,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13025:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13024:16:56"
                  },
                  "scope": 23195,
                  "src": "12966:215:56",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22892,
                    "nodeType": "Block",
                    "src": "13319:659:56",
                    "statements": [
                      {
                        "assignments": [
                          22787
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22787,
                            "mutability": "mutable",
                            "name": "a",
                            "nameLocation": "13337:1:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22892,
                            "src": "13329:9:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22786,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13329:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22789,
                        "initialValue": {
                          "id": 22788,
                          "name": "exp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22779,
                          "src": "13341:3:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13329:15:56"
                      },
                      {
                        "assignments": [
                          22791,
                          22793
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22791,
                            "mutability": "mutable",
                            "name": "x",
                            "nameLocation": "13363:1:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22892,
                            "src": "13355:9:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22790,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13355:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 22793,
                            "mutability": "mutable",
                            "name": "xneg",
                            "nameLocation": "13371:4:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22892,
                            "src": "13366:9:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 22792,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "13366:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22798,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 22795,
                              "name": "base",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22777,
                              "src": "13388:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 22796,
                              "name": "BASE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21458,
                              "src": "13394:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 22794,
                            "name": "_subFlag",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22932,
                            "src": "13379:8:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_bool_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256,bool)"
                            }
                          },
                          "id": 22797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13379:20:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                            "typeString": "tuple(uint256,bool)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13354:45:56"
                      },
                      {
                        "assignments": [
                          22800
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22800,
                            "mutability": "mutable",
                            "name": "term",
                            "nameLocation": "13417:4:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22892,
                            "src": "13409:12:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22799,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13409:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22802,
                        "initialValue": {
                          "id": 22801,
                          "name": "BASE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21458,
                          "src": "13424:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13409:19:56"
                      },
                      {
                        "expression": {
                          "id": 22805,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 22803,
                            "name": "sum",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22784,
                            "src": "13438:3:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 22804,
                            "name": "term",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22800,
                            "src": "13444:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13438:10:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22806,
                        "nodeType": "ExpressionStatement",
                        "src": "13438:10:56"
                      },
                      {
                        "assignments": [
                          22808
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22808,
                            "mutability": "mutable",
                            "name": "negative",
                            "nameLocation": "13463:8:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22892,
                            "src": "13458:13:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 22807,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "13458:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22809,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13458:13:56"
                      },
                      {
                        "body": {
                          "id": 22890,
                          "nodeType": "Block",
                          "src": "13526:446:56",
                          "statements": [
                            {
                              "assignments": [
                                22821
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22821,
                                  "mutability": "mutable",
                                  "name": "bigK",
                                  "nameLocation": "13548:4:56",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22890,
                                  "src": "13540:12:56",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 22820,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13540:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22825,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 22824,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 22822,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22811,
                                  "src": "13555:1:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "id": 22823,
                                  "name": "BASE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21458,
                                  "src": "13559:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13555:8:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13540:23:56"
                            },
                            {
                              "assignments": [
                                22827,
                                22829
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 22827,
                                  "mutability": "mutable",
                                  "name": "c",
                                  "nameLocation": "13586:1:56",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22890,
                                  "src": "13578:9:56",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 22826,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13578:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 22829,
                                  "mutability": "mutable",
                                  "name": "cneg",
                                  "nameLocation": "13594:4:56",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 22890,
                                  "src": "13589:9:56",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 22828,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13589:4:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 22837,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 22831,
                                    "name": "a",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22787,
                                    "src": "13611:1:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 22834,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 22832,
                                          "name": "bigK",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22821,
                                          "src": "13615:4:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 22833,
                                          "name": "BASE",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21458,
                                          "src": "13622:4:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "13615:11:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 22835,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "13614:13:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 22830,
                                  "name": "_subFlag",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22932,
                                  "src": "13602:8:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_bool_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256,bool)"
                                  }
                                },
                                "id": 22836,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13602:26:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                                  "typeString": "tuple(uint256,bool)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13577:51:56"
                            },
                            {
                              "expression": {
                                "id": 22846,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 22838,
                                  "name": "term",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22800,
                                  "src": "13642:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 22840,
                                      "name": "term",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22800,
                                      "src": "13654:4:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "id": 22842,
                                          "name": "c",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22827,
                                          "src": "13665:1:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 22843,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22791,
                                          "src": "13668:1:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 22841,
                                        "name": "_mul",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22963,
                                        "src": "13660:4:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 22844,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13660:10:56",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 22839,
                                    "name": "_mul",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22963,
                                    "src": "13649:4:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 22845,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13649:22:56",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13642:29:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 22847,
                              "nodeType": "ExpressionStatement",
                              "src": "13642:29:56"
                            },
                            {
                              "expression": {
                                "id": 22853,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 22848,
                                  "name": "term",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22800,
                                  "src": "13685:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 22850,
                                      "name": "term",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22800,
                                      "src": "13697:4:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 22851,
                                      "name": "bigK",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22821,
                                      "src": "13703:4:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 22849,
                                    "name": "_div",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22994,
                                    "src": "13692:4:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 22852,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13692:16:56",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "13685:23:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 22854,
                              "nodeType": "ExpressionStatement",
                              "src": "13685:23:56"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 22857,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 22855,
                                  "name": "term",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22800,
                                  "src": "13726:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 22856,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13734:1:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "13726:9:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 22859,
                              "nodeType": "IfStatement",
                              "src": "13722:20:56",
                              "trueBody": {
                                "id": 22858,
                                "nodeType": "Break",
                                "src": "13737:5:56"
                              }
                            },
                            {
                              "condition": {
                                "id": 22860,
                                "name": "xneg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22793,
                                "src": "13760:4:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 22866,
                              "nodeType": "IfStatement",
                              "src": "13756:30:56",
                              "trueBody": {
                                "expression": {
                                  "id": 22864,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 22861,
                                    "name": "negative",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22808,
                                    "src": "13766:8:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "id": 22863,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "!",
                                    "prefix": true,
                                    "src": "13777:9:56",
                                    "subExpression": {
                                      "id": 22862,
                                      "name": "negative",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22808,
                                      "src": "13778:8:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "13766:20:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 22865,
                                "nodeType": "ExpressionStatement",
                                "src": "13766:20:56"
                              }
                            },
                            {
                              "condition": {
                                "id": 22867,
                                "name": "cneg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22829,
                                "src": "13804:4:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 22873,
                              "nodeType": "IfStatement",
                              "src": "13800:30:56",
                              "trueBody": {
                                "expression": {
                                  "id": 22871,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 22868,
                                    "name": "negative",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22808,
                                    "src": "13810:8:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "id": 22870,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "!",
                                    "prefix": true,
                                    "src": "13821:9:56",
                                    "subExpression": {
                                      "id": 22869,
                                      "name": "negative",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 22808,
                                      "src": "13822:8:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "13810:20:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 22872,
                                "nodeType": "ExpressionStatement",
                                "src": "13810:20:56"
                              }
                            },
                            {
                              "condition": {
                                "id": 22874,
                                "name": "negative",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22808,
                                "src": "13848:8:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 22888,
                                "nodeType": "Block",
                                "src": "13913:49:56",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 22886,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 22882,
                                        "name": "sum",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22784,
                                        "src": "13931:3:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 22885,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 22883,
                                          "name": "sum",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22784,
                                          "src": "13937:3:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "id": 22884,
                                          "name": "term",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22800,
                                          "src": "13943:4:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "13937:10:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "13931:16:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 22887,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13931:16:56"
                                  }
                                ]
                              },
                              "id": 22889,
                              "nodeType": "IfStatement",
                              "src": "13844:118:56",
                              "trueBody": {
                                "id": 22881,
                                "nodeType": "Block",
                                "src": "13858:49:56",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 22879,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 22875,
                                        "name": "sum",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22784,
                                        "src": "13876:3:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 22878,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 22876,
                                          "name": "sum",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22784,
                                          "src": "13882:3:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 22877,
                                          "name": "term",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22800,
                                          "src": "13888:4:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "13882:10:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "13876:16:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 22880,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13876:16:56"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22814,
                            "name": "term",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22800,
                            "src": "13502:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "id": 22815,
                            "name": "precision",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22781,
                            "src": "13510:9:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "13502:17:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 22891,
                        "initializationExpression": {
                          "assignments": [
                            22811
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 22811,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "13495:1:56",
                              "nodeType": "VariableDeclaration",
                              "scope": 22891,
                              "src": "13487:9:56",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 22810,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "13487:7:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 22813,
                          "initialValue": {
                            "hexValue": "31",
                            "id": 22812,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13499:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "13487:13:56"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 22818,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "13521:3:56",
                            "subExpression": {
                              "id": 22817,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22811,
                              "src": "13521:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 22819,
                          "nodeType": "ExpressionStatement",
                          "src": "13521:3:56"
                        },
                        "nodeType": "ForStatement",
                        "src": "13482:490:56"
                      }
                    ]
                  },
                  "id": 22893,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_powApprox",
                  "nameLocation": "13196:10:56",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22782,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22777,
                        "mutability": "mutable",
                        "name": "base",
                        "nameLocation": "13224:4:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22893,
                        "src": "13216:12:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22776,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13216:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22779,
                        "mutability": "mutable",
                        "name": "exp",
                        "nameLocation": "13246:3:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22893,
                        "src": "13238:11:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22778,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13238:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22781,
                        "mutability": "mutable",
                        "name": "precision",
                        "nameLocation": "13267:9:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22893,
                        "src": "13259:17:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22780,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13259:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13206:76:56"
                  },
                  "returnParameters": {
                    "id": 22785,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22784,
                        "mutability": "mutable",
                        "name": "sum",
                        "nameLocation": "13314:3:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22893,
                        "src": "13306:11:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22783,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13306:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13305:13:56"
                  },
                  "scope": 23195,
                  "src": "13187:791:56",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22931,
                    "nodeType": "Block",
                    "src": "14078:279:56",
                    "statements": [
                      {
                        "id": 22930,
                        "nodeType": "UncheckedBlock",
                        "src": "14164:187:56",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 22906,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 22904,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22895,
                                "src": "14192:1:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 22905,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 22897,
                                "src": "14197:1:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14192:6:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 22928,
                              "nodeType": "Block",
                              "src": "14274:67:56",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 22926,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "components": [
                                        {
                                          "id": 22918,
                                          "name": "difference",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22900,
                                          "src": "14293:10:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 22919,
                                          "name": "flag",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22902,
                                          "src": "14305:4:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 22920,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "TupleExpression",
                                      "src": "14292:18:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                                        "typeString": "tuple(uint256,bool)"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 22923,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 22921,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22897,
                                            "src": "14314:1:56",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 22922,
                                            "name": "a",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22895,
                                            "src": "14318:1:56",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "14314:5:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "74727565",
                                          "id": 22924,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "14321:4:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "true"
                                        }
                                      ],
                                      "id": 22925,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "14313:13:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                                        "typeString": "tuple(uint256,bool)"
                                      }
                                    },
                                    "src": "14292:34:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 22927,
                                  "nodeType": "ExpressionStatement",
                                  "src": "14292:34:56"
                                }
                              ]
                            },
                            "id": 22929,
                            "nodeType": "IfStatement",
                            "src": "14188:153:56",
                            "trueBody": {
                              "id": 22917,
                              "nodeType": "Block",
                              "src": "14200:68:56",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 22915,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "components": [
                                        {
                                          "id": 22907,
                                          "name": "difference",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22900,
                                          "src": "14219:10:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 22908,
                                          "name": "flag",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22902,
                                          "src": "14231:4:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        }
                                      ],
                                      "id": 22909,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "TupleExpression",
                                      "src": "14218:18:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                                        "typeString": "tuple(uint256,bool)"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 22912,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 22910,
                                            "name": "a",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22895,
                                            "src": "14240:1:56",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 22911,
                                            "name": "b",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 22897,
                                            "src": "14244:1:56",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "14240:5:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "66616c7365",
                                          "id": 22913,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "14247:5:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "false"
                                        }
                                      ],
                                      "id": 22914,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "14239:14:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                                        "typeString": "tuple(uint256,bool)"
                                      }
                                    },
                                    "src": "14218:35:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 22916,
                                  "nodeType": "ExpressionStatement",
                                  "src": "14218:35:56"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  },
                  "id": 22932,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_subFlag",
                  "nameLocation": "13993:8:56",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22898,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22895,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "14010:1:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22932,
                        "src": "14002:9:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22894,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14002:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22897,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "14021:1:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22932,
                        "src": "14013:9:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22896,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14013:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14001:22:56"
                  },
                  "returnParameters": {
                    "id": 22903,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22900,
                        "mutability": "mutable",
                        "name": "difference",
                        "nameLocation": "14055:10:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22932,
                        "src": "14047:18:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22899,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14047:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22902,
                        "mutability": "mutable",
                        "name": "flag",
                        "nameLocation": "14072:4:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22932,
                        "src": "14067:9:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 22901,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14067:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14046:31:56"
                  },
                  "scope": 23195,
                  "src": "13984:373:56",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22962,
                    "nodeType": "Block",
                    "src": "14434:97:56",
                    "statements": [
                      {
                        "assignments": [
                          22942
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22942,
                            "mutability": "mutable",
                            "name": "c0",
                            "nameLocation": "14452:2:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22962,
                            "src": "14444:10:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22941,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14444:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22946,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22945,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22943,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22934,
                            "src": "14457:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 22944,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22936,
                            "src": "14461:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14457:5:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14444:18:56"
                      },
                      {
                        "assignments": [
                          22948
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22948,
                            "mutability": "mutable",
                            "name": "c1",
                            "nameLocation": "14480:2:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22962,
                            "src": "14472:10:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22947,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14472:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22955,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22954,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22949,
                            "name": "c0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22942,
                            "src": "14485:2:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 22952,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 22950,
                                  "name": "BASE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21458,
                                  "src": "14491:4:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "hexValue": "32",
                                  "id": 22951,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14498:1:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "14491:8:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 22953,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "14490:10:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14485:15:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14472:28:56"
                      },
                      {
                        "expression": {
                          "id": 22960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 22956,
                            "name": "c2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22939,
                            "src": "14510:2:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 22959,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 22957,
                              "name": "c1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22948,
                              "src": "14515:2:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 22958,
                              "name": "BASE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21458,
                              "src": "14520:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "14515:9:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14510:14:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22961,
                        "nodeType": "ExpressionStatement",
                        "src": "14510:14:56"
                      }
                    ]
                  },
                  "id": 22963,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mul",
                  "nameLocation": "14372:4:56",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22937,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22934,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "14385:1:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22963,
                        "src": "14377:9:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22933,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14377:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22936,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "14396:1:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22963,
                        "src": "14388:9:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22935,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14388:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14376:22:56"
                  },
                  "returnParameters": {
                    "id": 22940,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22939,
                        "mutability": "mutable",
                        "name": "c2",
                        "nameLocation": "14430:2:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22963,
                        "src": "14422:10:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22938,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14422:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14421:12:56"
                  },
                  "scope": 23195,
                  "src": "14363:168:56",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 22993,
                    "nodeType": "Block",
                    "src": "14608:94:56",
                    "statements": [
                      {
                        "assignments": [
                          22973
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22973,
                            "mutability": "mutable",
                            "name": "c0",
                            "nameLocation": "14626:2:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22993,
                            "src": "14618:10:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22972,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14618:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22977,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22974,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22965,
                            "src": "14631:1:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 22975,
                            "name": "BASE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21458,
                            "src": "14635:4:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14631:8:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14618:21:56"
                      },
                      {
                        "assignments": [
                          22979
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 22979,
                            "mutability": "mutable",
                            "name": "c1",
                            "nameLocation": "14657:2:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 22993,
                            "src": "14649:10:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 22978,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14649:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 22986,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 22985,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 22980,
                            "name": "c0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22973,
                            "src": "14662:2:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 22983,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 22981,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22967,
                                  "src": "14668:1:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "hexValue": "32",
                                  "id": 22982,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14672:1:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "14668:5:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 22984,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "14667:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14662:12:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14649:25:56"
                      },
                      {
                        "expression": {
                          "id": 22991,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 22987,
                            "name": "c2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22970,
                            "src": "14684:2:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 22990,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 22988,
                              "name": "c1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22979,
                              "src": "14689:2:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 22989,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22967,
                              "src": "14694:1:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "14689:6:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14684:11:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 22992,
                        "nodeType": "ExpressionStatement",
                        "src": "14684:11:56"
                      }
                    ]
                  },
                  "id": 22994,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_div",
                  "nameLocation": "14546:4:56",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 22968,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22965,
                        "mutability": "mutable",
                        "name": "a",
                        "nameLocation": "14559:1:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22994,
                        "src": "14551:9:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22964,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14551:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22967,
                        "mutability": "mutable",
                        "name": "b",
                        "nameLocation": "14570:1:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22994,
                        "src": "14562:9:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22966,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14562:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14550:22:56"
                  },
                  "returnParameters": {
                    "id": 22971,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22970,
                        "mutability": "mutable",
                        "name": "c2",
                        "nameLocation": "14604:2:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 22994,
                        "src": "14596:10:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22969,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14596:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14595:12:56"
                  },
                  "scope": 23195,
                  "src": "14537:165:56",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 23058,
                    "nodeType": "Block",
                    "src": "14835:436:56",
                    "statements": [
                      {
                        "condition": {
                          "id": 23005,
                          "name": "unwrapBento",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23002,
                          "src": "14849:11:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 23056,
                          "nodeType": "Block",
                          "src": "15068:197:56",
                          "statements": [
                            {
                              "assignments": [
                                23033,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 23033,
                                  "mutability": "mutable",
                                  "name": "success",
                                  "nameLocation": "15088:7:56",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 23056,
                                  "src": "15083:12:56",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 23032,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15083:4:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 23050,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "expression": {
                                            "id": 23038,
                                            "name": "IBentoBoxMinimal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2253,
                                            "src": "15135:16:56",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IBentoBoxMinimal_$2253_$",
                                              "typeString": "type(contract IBentoBoxMinimal)"
                                            }
                                          },
                                          "id": 23039,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberName": "transfer",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2227,
                                          "src": "15135:25:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                            "typeString": "function IBentoBoxMinimal.transfer(address,address,address,uint256)"
                                          }
                                        },
                                        "id": 23040,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "selector",
                                        "nodeType": "MemberAccess",
                                        "src": "15135:34:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        }
                                      },
                                      {
                                        "id": 23041,
                                        "name": "token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22996,
                                        "src": "15171:5:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "id": 23044,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -28,
                                            "src": "15186:4:56",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_FranchisedIndexPool_$23195",
                                              "typeString": "contract FranchisedIndexPool"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_FranchisedIndexPool_$23195",
                                              "typeString": "contract FranchisedIndexPool"
                                            }
                                          ],
                                          "id": 23043,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "15178:7:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 23042,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "15178:7:56",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 23045,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "15178:13:56",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 23046,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23000,
                                        "src": "15193:2:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 23047,
                                        "name": "shares",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22998,
                                        "src": "15197:6:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 23036,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "15112:3:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 23037,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encodeWithSelector",
                                      "nodeType": "MemberAccess",
                                      "src": "15112:22:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes4) pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 23048,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15112:92:56",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 23034,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21451,
                                    "src": "15101:5:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 23035,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "call",
                                  "nodeType": "MemberAccess",
                                  "src": "15101:10:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                  }
                                },
                                "id": 23049,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15101:104:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "15082:123:56"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 23052,
                                    "name": "success",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23033,
                                    "src": "15227:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "5452414e534645525f4641494c4544",
                                    "id": 23053,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15236:17:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72",
                                      "typeString": "literal_string \"TRANSFER_FAILED\""
                                    },
                                    "value": "TRANSFER_FAILED"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72",
                                      "typeString": "literal_string \"TRANSFER_FAILED\""
                                    }
                                  ],
                                  "id": 23051,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "15219:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 23054,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15219:35:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 23055,
                              "nodeType": "ExpressionStatement",
                              "src": "15219:35:56"
                            }
                          ]
                        },
                        "id": 23057,
                        "nodeType": "IfStatement",
                        "src": "14845:420:56",
                        "trueBody": {
                          "id": 23031,
                          "nodeType": "Block",
                          "src": "14862:200:56",
                          "statements": [
                            {
                              "assignments": [
                                23007,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 23007,
                                  "mutability": "mutable",
                                  "name": "success",
                                  "nameLocation": "14882:7:56",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 23031,
                                  "src": "14877:12:56",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 23006,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14877:4:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 23025,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "expression": {
                                            "id": 23012,
                                            "name": "IBentoBoxMinimal",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2253,
                                            "src": "14929:16:56",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IBentoBoxMinimal_$2253_$",
                                              "typeString": "type(contract IBentoBoxMinimal)"
                                            }
                                          },
                                          "id": 23013,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberName": "withdraw",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2215,
                                          "src": "14929:25:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                            "typeString": "function IBentoBoxMinimal.withdraw(address,address,address,uint256,uint256) returns (uint256,uint256)"
                                          }
                                        },
                                        "id": 23014,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "selector",
                                        "nodeType": "MemberAccess",
                                        "src": "14929:34:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        }
                                      },
                                      {
                                        "id": 23015,
                                        "name": "token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22996,
                                        "src": "14965:5:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "id": 23018,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -28,
                                            "src": "14980:4:56",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_FranchisedIndexPool_$23195",
                                              "typeString": "contract FranchisedIndexPool"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_FranchisedIndexPool_$23195",
                                              "typeString": "contract FranchisedIndexPool"
                                            }
                                          ],
                                          "id": 23017,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "14972:7:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 23016,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "14972:7:56",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 23019,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "14972:13:56",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 23020,
                                        "name": "to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23000,
                                        "src": "14987:2:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "hexValue": "30",
                                        "id": 23021,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "14991:1:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      {
                                        "id": 23022,
                                        "name": "shares",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 22998,
                                        "src": "14994:6:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 23010,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "14906:3:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 23011,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encodeWithSelector",
                                      "nodeType": "MemberAccess",
                                      "src": "14906:22:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes4) pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 23023,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14906:95:56",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 23008,
                                    "name": "bento",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21451,
                                    "src": "14895:5:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 23009,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "call",
                                  "nodeType": "MemberAccess",
                                  "src": "14895:10:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                  }
                                },
                                "id": 23024,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14895:107:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14876:126:56"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 23027,
                                    "name": "success",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23007,
                                    "src": "15024:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "57495448445241575f4641494c4544",
                                    "id": 23028,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "15033:17:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_763a38bd0e76a191b2607dcd1b2bd7d2e31ac1f3de7b2a0f756698e57f39c206",
                                      "typeString": "literal_string \"WITHDRAW_FAILED\""
                                    },
                                    "value": "WITHDRAW_FAILED"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_763a38bd0e76a191b2607dcd1b2bd7d2e31ac1f3de7b2a0f756698e57f39c206",
                                      "typeString": "literal_string \"WITHDRAW_FAILED\""
                                    }
                                  ],
                                  "id": 23026,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "15016:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 23029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15016:35:56",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 23030,
                              "nodeType": "ExpressionStatement",
                              "src": "15016:35:56"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "id": 23059,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nameLocation": "14717:9:56",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23003,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 22996,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "14744:5:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 23059,
                        "src": "14736:13:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22995,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14736:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 22998,
                        "mutability": "mutable",
                        "name": "shares",
                        "nameLocation": "14767:6:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 23059,
                        "src": "14759:14:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 22997,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14759:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23000,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "14791:2:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 23059,
                        "src": "14783:10:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 22999,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14783:7:56",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23002,
                        "mutability": "mutable",
                        "name": "unwrapBento",
                        "nameLocation": "14808:11:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 23059,
                        "src": "14803:16:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 23001,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14803:4:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14726:99:56"
                  },
                  "returnParameters": {
                    "id": 23004,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14835:0:56"
                  },
                  "scope": 23195,
                  "src": "14708:563:56",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2415
                  ],
                  "body": {
                    "id": 23070,
                    "nodeType": "Block",
                    "src": "15353:32:56",
                    "statements": [
                      {
                        "expression": {
                          "id": 23068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 23066,
                            "name": "assets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23064,
                            "src": "15363:6:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 23067,
                            "name": "tokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21537,
                            "src": "15372:6:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "src": "15363:15:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 23069,
                        "nodeType": "ExpressionStatement",
                        "src": "15363:15:56"
                      }
                    ]
                  },
                  "functionSelector": "67e4ac2c",
                  "id": 23071,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAssets",
                  "nameLocation": "15286:9:56",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 23061,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "15310:8:56"
                  },
                  "parameters": {
                    "id": 23060,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15295:2:56"
                  },
                  "returnParameters": {
                    "id": 23065,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23064,
                        "mutability": "mutable",
                        "name": "assets",
                        "nameLocation": "15345:6:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 23071,
                        "src": "15328:23:56",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 23062,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "15328:7:56",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 23063,
                          "nodeType": "ArrayTypeName",
                          "src": "15328:9:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15327:25:56"
                  },
                  "scope": 23195,
                  "src": "15277:108:56",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2423
                  ],
                  "body": {
                    "id": 23115,
                    "nodeType": "Block",
                    "src": "15483:329:56",
                    "statements": [
                      {
                        "assignments": [
                          23080,
                          23082,
                          23084,
                          23086,
                          23088
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23080,
                            "mutability": "mutable",
                            "name": "tokenInAmount",
                            "nameLocation": "15502:13:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 23115,
                            "src": "15494:21:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 23079,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15494:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 23082,
                            "mutability": "mutable",
                            "name": "tokenInBalance",
                            "nameLocation": "15525:14:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 23115,
                            "src": "15517:22:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 23081,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15517:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 23084,
                            "mutability": "mutable",
                            "name": "tokenInWeight",
                            "nameLocation": "15549:13:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 23115,
                            "src": "15541:21:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 23083,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15541:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 23086,
                            "mutability": "mutable",
                            "name": "tokenOutBalance",
                            "nameLocation": "15572:15:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 23115,
                            "src": "15564:23:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 23085,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15564:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 23088,
                            "mutability": "mutable",
                            "name": "tokenOutWeight",
                            "nameLocation": "15597:14:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 23115,
                            "src": "15589:22:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 23087,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "15589:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 23104,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 23091,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23073,
                              "src": "15639:4:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 23093,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15646:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 23092,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15646:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 23095,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15655:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 23094,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15655:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 23097,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15664:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 23096,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15664:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 23099,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15673:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 23098,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15673:7:56",
                                    "typeDescriptions": {}
                                  }
                                },
                                {
                                  "id": 23101,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15682:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 23100,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15682:7:56",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 23102,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "15645:45:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(uint256),type(uint256),type(uint256),type(uint256),type(uint256))"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_tuple$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$_t_type$_t_uint256_$_$",
                                "typeString": "tuple(type(uint256),type(uint256),type(uint256),type(uint256),type(uint256))"
                              }
                            ],
                            "expression": {
                              "id": 23089,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "15615:3:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 23090,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "15615:23:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 23103,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15615:76:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15493:198:56"
                      },
                      {
                        "expression": {
                          "id": 23113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 23105,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23077,
                            "src": "15701:9:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 23107,
                                "name": "tokenInAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23080,
                                "src": "15727:13:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 23108,
                                "name": "tokenInBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23082,
                                "src": "15742:14:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 23109,
                                "name": "tokenInWeight",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23084,
                                "src": "15758:13:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 23110,
                                "name": "tokenOutBalance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23086,
                                "src": "15773:15:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 23111,
                                "name": "tokenOutWeight",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23088,
                                "src": "15790:14:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 23106,
                              "name": "_getAmountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22576,
                              "src": "15713:13:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256,uint256,uint256) view returns (uint256)"
                              }
                            },
                            "id": 23112,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15713:92:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15701:104:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 23114,
                        "nodeType": "ExpressionStatement",
                        "src": "15701:104:56"
                      }
                    ]
                  },
                  "functionSelector": "a8f1f52e",
                  "id": 23116,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountOut",
                  "nameLocation": "15400:12:56",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 23075,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "15446:8:56"
                  },
                  "parameters": {
                    "id": 23074,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23073,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "15428:4:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 23116,
                        "src": "15413:19:56",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 23072,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "15413:5:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15412:21:56"
                  },
                  "returnParameters": {
                    "id": 23078,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23077,
                        "mutability": "mutable",
                        "name": "amountOut",
                        "nameLocation": "15472:9:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 23116,
                        "src": "15464:17:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23076,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15464:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15463:19:56"
                  },
                  "scope": 23195,
                  "src": "15391:421:56",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2431
                  ],
                  "body": {
                    "id": 23127,
                    "nodeType": "Block",
                    "src": "15894:25:56",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 23124,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "15904:6:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 23125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15904:8:56",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23126,
                        "nodeType": "ExpressionStatement",
                        "src": "15904:8:56"
                      }
                    ]
                  },
                  "functionSelector": "499a3c50",
                  "id": 23128,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getAmountIn",
                  "nameLocation": "15827:11:56",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 23120,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "15867:8:56"
                  },
                  "parameters": {
                    "id": 23119,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23118,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 23128,
                        "src": "15839:14:56",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 23117,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "15839:5:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15838:16:56"
                  },
                  "returnParameters": {
                    "id": 23123,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23122,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 23128,
                        "src": "15885:7:56",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23121,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15885:7:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15884:9:56"
                  },
                  "scope": 23195,
                  "src": "15818:101:56",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23193,
                    "nodeType": "Block",
                    "src": "16032:419:56",
                    "statements": [
                      {
                        "assignments": [
                          23138
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23138,
                            "mutability": "mutable",
                            "name": "length",
                            "nameLocation": "16050:6:56",
                            "nodeType": "VariableDeclaration",
                            "scope": 23193,
                            "src": "16042:14:56",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 23137,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16042:7:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 23141,
                        "initialValue": {
                          "expression": {
                            "id": 23139,
                            "name": "tokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21537,
                            "src": "16059:6:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 23140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "16059:13:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16042:30:56"
                      },
                      {
                        "expression": {
                          "id": 23148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 23142,
                            "name": "reserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23132,
                            "src": "16082:8:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 23146,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23138,
                                "src": "16107:6:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 23145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "16093:13:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (uint256[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 23143,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16097:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 23144,
                                "nodeType": "ArrayTypeName",
                                "src": "16097:9:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                  "typeString": "uint256[]"
                                }
                              }
                            },
                            "id": 23147,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16093:21:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "16082:32:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 23149,
                        "nodeType": "ExpressionStatement",
                        "src": "16082:32:56"
                      },
                      {
                        "expression": {
                          "id": 23156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 23150,
                            "name": "weights",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23135,
                            "src": "16124:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                              "typeString": "uint136[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 23154,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23138,
                                "src": "16148:6:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 23153,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "16134:13:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint136_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (uint136[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 23151,
                                  "name": "uint136",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16138:7:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint136",
                                    "typeString": "uint136"
                                  }
                                },
                                "id": 23152,
                                "nodeType": "ArrayTypeName",
                                "src": "16138:9:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint136_$dyn_storage_ptr",
                                  "typeString": "uint136[]"
                                }
                              }
                            },
                            "id": 23155,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16134:21:56",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                              "typeString": "uint136[] memory"
                            }
                          },
                          "src": "16124:31:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                            "typeString": "uint136[] memory"
                          }
                        },
                        "id": 23157,
                        "nodeType": "ExpressionStatement",
                        "src": "16124:31:56"
                      },
                      {
                        "id": 23192,
                        "nodeType": "UncheckedBlock",
                        "src": "16245:200:56",
                        "statements": [
                          {
                            "body": {
                              "id": 23190,
                              "nodeType": "Block",
                              "src": "16306:129:56",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 23177,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "baseExpression": {
                                        "id": 23168,
                                        "name": "reserves",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23132,
                                        "src": "16324:8:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 23170,
                                      "indexExpression": {
                                        "id": 23169,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23159,
                                        "src": "16333:1:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "16324:11:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 23171,
                                          "name": "records",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21569,
                                          "src": "16338:7:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$21574_storage_$",
                                            "typeString": "mapping(address => struct FranchisedIndexPool.Record storage ref)"
                                          }
                                        },
                                        "id": 23175,
                                        "indexExpression": {
                                          "baseExpression": {
                                            "id": 23172,
                                            "name": "tokens",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 21537,
                                            "src": "16346:6:56",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                              "typeString": "address[] storage ref"
                                            }
                                          },
                                          "id": 23174,
                                          "indexExpression": {
                                            "id": 23173,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 23159,
                                            "src": "16353:1:56",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "16346:9:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "16338:18:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Record_$21574_storage",
                                          "typeString": "struct FranchisedIndexPool.Record storage ref"
                                        }
                                      },
                                      "id": 23176,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "reserve",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 21571,
                                      "src": "16338:26:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "src": "16324:40:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 23178,
                                  "nodeType": "ExpressionStatement",
                                  "src": "16324:40:56"
                                },
                                {
                                  "expression": {
                                    "id": 23188,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "baseExpression": {
                                        "id": 23179,
                                        "name": "weights",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23135,
                                        "src": "16382:7:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                                          "typeString": "uint136[] memory"
                                        }
                                      },
                                      "id": 23181,
                                      "indexExpression": {
                                        "id": 23180,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23159,
                                        "src": "16390:1:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "16382:10:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint136",
                                        "typeString": "uint136"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 23182,
                                          "name": "records",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 21569,
                                          "src": "16395:7:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Record_$21574_storage_$",
                                            "typeString": "mapping(address => struct FranchisedIndexPool.Record storage ref)"
                                          }
                                        },
                                        "id": 23186,
                                        "indexExpression": {
                                          "baseExpression": {
                                            "id": 23183,
                                            "name": "tokens",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 21537,
                                            "src": "16403:6:56",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                              "typeString": "address[] storage ref"
                                            }
                                          },
                                          "id": 23185,
                                          "indexExpression": {
                                            "id": 23184,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 23159,
                                            "src": "16410:1:56",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "16403:9:56",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "16395:18:56",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Record_$21574_storage",
                                          "typeString": "struct FranchisedIndexPool.Record storage ref"
                                        }
                                      },
                                      "id": 23187,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "weight",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 21573,
                                      "src": "16395:25:56",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint136",
                                        "typeString": "uint136"
                                      }
                                    },
                                    "src": "16382:38:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint136",
                                      "typeString": "uint136"
                                    }
                                  },
                                  "id": 23189,
                                  "nodeType": "ExpressionStatement",
                                  "src": "16382:38:56"
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 23164,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 23162,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23159,
                                "src": "16289:1:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 23163,
                                "name": "length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23138,
                                "src": "16293:6:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "16289:10:56",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 23191,
                            "initializationExpression": {
                              "assignments": [
                                23159
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 23159,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nameLocation": "16282:1:56",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 23191,
                                  "src": "16274:9:56",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 23158,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "16274:7:56",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 23161,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 23160,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16286:1:56",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "16274:13:56"
                            },
                            "loopExpression": {
                              "expression": {
                                "id": 23166,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "16301:3:56",
                                "subExpression": {
                                  "id": 23165,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23159,
                                  "src": "16301:1:56",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 23167,
                              "nodeType": "ExpressionStatement",
                              "src": "16301:3:56"
                            },
                            "nodeType": "ForStatement",
                            "src": "16269:166:56"
                          }
                        ]
                      }
                    ]
                  },
                  "functionSelector": "8ae45441",
                  "id": 23194,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getReservesAndWeights",
                  "nameLocation": "15934:21:56",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23129,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15955:2:56"
                  },
                  "returnParameters": {
                    "id": 23136,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23132,
                        "mutability": "mutable",
                        "name": "reserves",
                        "nameLocation": "15996:8:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 23194,
                        "src": "15979:25:56",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 23130,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "15979:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 23131,
                          "nodeType": "ArrayTypeName",
                          "src": "15979:9:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23135,
                        "mutability": "mutable",
                        "name": "weights",
                        "nameLocation": "16023:7:56",
                        "nodeType": "VariableDeclaration",
                        "scope": 23194,
                        "src": "16006:24:56",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint136_$dyn_memory_ptr",
                          "typeString": "uint136[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 23133,
                            "name": "uint136",
                            "nodeType": "ElementaryTypeName",
                            "src": "16006:7:56",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint136",
                              "typeString": "uint136"
                            }
                          },
                          "id": 23134,
                          "nodeType": "ArrayTypeName",
                          "src": "16006:9:56",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint136_$dyn_storage_ptr",
                            "typeString": "uint136[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15978:53:56"
                  },
                  "scope": 23195,
                  "src": "15925:526:56",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 23196,
              "src": "570:15883:56",
              "usedErrors": []
            }
          ],
          "src": "46:16408:56"
        },
        "id": 56
      },
      "contracts/pool/franchised/TridentFranchisedERC20.sol": {
        "ast": {
          "absolutePath": "contracts/pool/franchised/TridentFranchisedERC20.sol",
          "exportedSymbols": {
            "IWhiteListManager": [
              2612
            ],
            "TridentFranchisedERC20": [
              23629
            ]
          },
          "id": 23630,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 23197,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:57"
            },
            {
              "absolutePath": "contracts/interfaces/IWhiteListManager.sol",
              "file": "../../interfaces/IWhiteListManager.sol",
              "id": 23198,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 23630,
              "sourceUnit": 2613,
              "src": "72:48:57",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 23199,
                "nodeType": "StructuredDocumentation",
                "src": "122:216:57",
                "text": "@notice Trident franchised pool ERC-20 with EIP-2612 extension.\n @author Adapted from RariCapital, https://github.com/Rari-Capital/solmate/blob/main/src/erc20/ERC20.sol,\n License-Identifier: AGPL-3.0-only."
              },
              "fullyImplemented": true,
              "id": 23629,
              "linearizedBaseContracts": [
                23629
              ],
              "name": "TridentFranchisedERC20",
              "nameLocation": "356:22:57",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 23207,
                  "name": "Approval",
                  "nameLocation": "391:8:57",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 23206,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23201,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "416:5:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23207,
                        "src": "400:21:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23200,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "400:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23203,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "439:7:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23207,
                        "src": "423:23:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23202,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "423:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23205,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "456:6:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23207,
                        "src": "448:14:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23204,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "448:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "399:64:57"
                  },
                  "src": "385:79:57"
                },
                {
                  "anonymous": false,
                  "id": 23215,
                  "name": "Transfer",
                  "nameLocation": "475:8:57",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 23214,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23209,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "500:6:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23215,
                        "src": "484:22:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23208,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "484:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23211,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "524:9:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23215,
                        "src": "508:25:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23210,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "508:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23213,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "543:6:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23215,
                        "src": "535:14:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23212,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "535:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "483:67:57"
                  },
                  "src": "469:82:57"
                },
                {
                  "constant": true,
                  "functionSelector": "06fdde03",
                  "id": 23218,
                  "mutability": "constant",
                  "name": "name",
                  "nameLocation": "580:4:57",
                  "nodeType": "VariableDeclaration",
                  "scope": 23629,
                  "src": "557:57:57",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23216,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "557:6:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "hexValue": "5375736869204672616e636869736564204c5020546f6b656e",
                    "id": 23217,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "587:27:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_49bb029ad7c8a58c6232657178b278e20c3bd1f3b0084072e3a97b185e1aac5f",
                      "typeString": "literal_string \"Sushi Franchised LP Token\""
                    },
                    "value": "Sushi Franchised LP Token"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "95d89b41",
                  "id": 23221,
                  "mutability": "constant",
                  "name": "symbol",
                  "nameLocation": "643:6:57",
                  "nodeType": "VariableDeclaration",
                  "scope": 23629,
                  "src": "620:37:57",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23219,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "620:6:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "hexValue": "534c50",
                    "id": 23220,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "652:5:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_e0136b3661826a483734248681e4f59ae66bc6065ceb43fdd469ecb22c21d745",
                      "typeString": "literal_string \"SLP\""
                    },
                    "value": "SLP"
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "functionSelector": "313ce567",
                  "id": 23224,
                  "mutability": "constant",
                  "name": "decimals",
                  "nameLocation": "685:8:57",
                  "nodeType": "VariableDeclaration",
                  "scope": 23629,
                  "src": "663:35:57",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 23222,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "663:5:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": {
                    "hexValue": "3138",
                    "id": 23223,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "696:2:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_18_by_1",
                      "typeString": "int_const 18"
                    },
                    "value": "18"
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "25a93264",
                  "id": 23226,
                  "mutability": "mutable",
                  "name": "whiteListManager",
                  "nameLocation": "720:16:57",
                  "nodeType": "VariableDeclaration",
                  "scope": 23629,
                  "src": "705:31:57",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23225,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "705:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "570ca735",
                  "id": 23228,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "757:8:57",
                  "nodeType": "VariableDeclaration",
                  "scope": 23629,
                  "src": "742:23:57",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23227,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "742:7:57",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "bc3377d9",
                  "id": 23230,
                  "mutability": "mutable",
                  "name": "level2",
                  "nameLocation": "783:6:57",
                  "nodeType": "VariableDeclaration",
                  "scope": 23629,
                  "src": "771:18:57",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23229,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "771:4:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "18160ddd",
                  "id": 23232,
                  "mutability": "mutable",
                  "name": "totalSupply",
                  "nameLocation": "811:11:57",
                  "nodeType": "VariableDeclaration",
                  "scope": 23629,
                  "src": "796:26:57",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23231,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "796:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 23233,
                    "nodeType": "StructuredDocumentation",
                    "src": "828:37:57",
                    "text": "@notice owner -> balance mapping."
                  },
                  "functionSelector": "70a08231",
                  "id": 23237,
                  "mutability": "mutable",
                  "name": "balanceOf",
                  "nameLocation": "905:9:57",
                  "nodeType": "VariableDeclaration",
                  "scope": 23629,
                  "src": "870:44:57",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 23236,
                    "keyType": {
                      "id": 23234,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "878:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "870:27:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 23235,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "889:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 23238,
                    "nodeType": "StructuredDocumentation",
                    "src": "920:50:57",
                    "text": "@notice owner -> spender -> allowance mapping."
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 23244,
                  "mutability": "mutable",
                  "name": "allowance",
                  "nameLocation": "1030:9:57",
                  "nodeType": "VariableDeclaration",
                  "scope": 23629,
                  "src": "975:64:57",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 23243,
                    "keyType": {
                      "id": 23239,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "983:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "975:47:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 23242,
                      "keyType": {
                        "id": 23240,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1002:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "994:27:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 23241,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1013:7:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 23245,
                    "nodeType": "StructuredDocumentation",
                    "src": "1046:69:57",
                    "text": "@notice The EIP-712 typehash for this contract's {permit} struct."
                  },
                  "functionSelector": "30adf81f",
                  "id": 23250,
                  "mutability": "constant",
                  "name": "PERMIT_TYPEHASH",
                  "nameLocation": "1144:15:57",
                  "nodeType": "VariableDeclaration",
                  "scope": 23629,
                  "src": "1120:145:57",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 23246,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1120:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529",
                        "id": 23248,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1180:84:57",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9",
                          "typeString": "literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""
                        },
                        "value": "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9",
                          "typeString": "literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""
                        }
                      ],
                      "id": 23247,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "1170:9:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 23249,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1170:95:57",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 23251,
                    "nodeType": "StructuredDocumentation",
                    "src": "1271:60:57",
                    "text": "@notice The EIP-712 typehash for this contract's domain."
                  },
                  "functionSelector": "3644e515",
                  "id": 23253,
                  "mutability": "immutable",
                  "name": "DOMAIN_SEPARATOR",
                  "nameLocation": "1361:16:57",
                  "nodeType": "VariableDeclaration",
                  "scope": 23629,
                  "src": "1336:41:57",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 23252,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1336:7:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 23254,
                    "nodeType": "StructuredDocumentation",
                    "src": "1383:52:57",
                    "text": "@notice owner -> nonce mapping used in {permit}."
                  },
                  "functionSelector": "7ecebe00",
                  "id": 23258,
                  "mutability": "mutable",
                  "name": "nonces",
                  "nameLocation": "1475:6:57",
                  "nodeType": "VariableDeclaration",
                  "scope": 23629,
                  "src": "1440:41:57",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 23257,
                    "keyType": {
                      "id": 23255,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1448:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1440:27:57",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 23256,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1459:7:57",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23290,
                    "nodeType": "Block",
                    "src": "1502:347:57",
                    "statements": [
                      {
                        "expression": {
                          "id": 23288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 23261,
                            "name": "DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23253,
                            "src": "1512:16:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                                        "id": 23266,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1592:84:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                          "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                        },
                                        "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                          "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                        }
                                      ],
                                      "id": 23265,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "1582:9:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 23267,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1582:95:57",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 23271,
                                            "name": "name",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 23218,
                                            "src": "1711:4:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          ],
                                          "id": 23270,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1705:5:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": {
                                            "id": 23269,
                                            "name": "bytes",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1705:5:57",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 23272,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1705:11:57",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 23268,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "1695:9:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 23273,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1695:22:57",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "hexValue": "31",
                                            "id": 23277,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1751:3:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                              "typeString": "literal_string \"1\""
                                            },
                                            "value": "1"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                              "typeString": "literal_string \"1\""
                                            }
                                          ],
                                          "id": 23276,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1745:5:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": {
                                            "id": 23275,
                                            "name": "bytes",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1745:5:57",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 23278,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1745:10:57",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 23274,
                                      "name": "keccak256",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -8,
                                      "src": "1735:9:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                        "typeString": "function (bytes memory) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 23279,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1735:21:57",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 23280,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "1774:5:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 23281,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "chainid",
                                    "nodeType": "MemberAccess",
                                    "src": "1774:13:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 23284,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "1813:4:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_TridentFranchisedERC20_$23629",
                                          "typeString": "contract TridentFranchisedERC20"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_TridentFranchisedERC20_$23629",
                                          "typeString": "contract TridentFranchisedERC20"
                                        }
                                      ],
                                      "id": 23283,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1805:7:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 23282,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1805:7:57",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 23285,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1805:13:57",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "id": 23263,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "1554:3:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 23264,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encode",
                                  "nodeType": "MemberAccess",
                                  "src": "1554:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 23286,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1554:278:57",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 23262,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "1531:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 23287,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1531:311:57",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "1512:330:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 23289,
                        "nodeType": "ExpressionStatement",
                        "src": "1512:330:57"
                      }
                    ]
                  },
                  "id": 23291,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23259,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1499:2:57"
                  },
                  "returnParameters": {
                    "id": 23260,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1502:0:57"
                  },
                  "scope": 23629,
                  "src": "1488:361:57",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 23315,
                    "nodeType": "Block",
                    "src": "2029:119:57",
                    "statements": [
                      {
                        "expression": {
                          "id": 23303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 23301,
                            "name": "whiteListManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23226,
                            "src": "2039:16:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 23302,
                            "name": "_whiteListManager",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23294,
                            "src": "2058:17:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2039:36:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 23304,
                        "nodeType": "ExpressionStatement",
                        "src": "2039:36:57"
                      },
                      {
                        "expression": {
                          "id": 23307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 23305,
                            "name": "operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23228,
                            "src": "2085:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 23306,
                            "name": "_operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23296,
                            "src": "2096:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2085:20:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 23308,
                        "nodeType": "ExpressionStatement",
                        "src": "2085:20:57"
                      },
                      {
                        "condition": {
                          "id": 23309,
                          "name": "_level2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23298,
                          "src": "2119:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 23314,
                        "nodeType": "IfStatement",
                        "src": "2115:26:57",
                        "trueBody": {
                          "expression": {
                            "id": 23312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 23310,
                              "name": "level2",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23230,
                              "src": "2128:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "hexValue": "74727565",
                              "id": 23311,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2137:4:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            "src": "2128:13:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 23313,
                          "nodeType": "ExpressionStatement",
                          "src": "2128:13:57"
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23292,
                    "nodeType": "StructuredDocumentation",
                    "src": "1855:50:57",
                    "text": "@dev Initializes whitelist settings from pool."
                  },
                  "id": 23316,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "initialize",
                  "nameLocation": "1919:10:57",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23299,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23294,
                        "mutability": "mutable",
                        "name": "_whiteListManager",
                        "nameLocation": "1947:17:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23316,
                        "src": "1939:25:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23293,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1939:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23296,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nameLocation": "1982:9:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23316,
                        "src": "1974:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23295,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1974:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23298,
                        "mutability": "mutable",
                        "name": "_level2",
                        "nameLocation": "2006:7:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23316,
                        "src": "2001:12:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 23297,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2001:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1929:90:57"
                  },
                  "returnParameters": {
                    "id": 23300,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2029:0:57"
                  },
                  "scope": 23629,
                  "src": "1910:238:57",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 23344,
                    "nodeType": "Block",
                    "src": "2531:129:57",
                    "statements": [
                      {
                        "expression": {
                          "id": 23333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 23326,
                                "name": "allowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23244,
                                "src": "2541:9:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 23330,
                              "indexExpression": {
                                "expression": {
                                  "id": 23327,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "2551:3:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 23328,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "2551:10:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2541:21:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 23331,
                            "indexExpression": {
                              "id": 23329,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23319,
                              "src": "2563:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2541:30:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 23332,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23321,
                            "src": "2574:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2541:39:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 23334,
                        "nodeType": "ExpressionStatement",
                        "src": "2541:39:57"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 23336,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2604:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 23337,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2604:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 23338,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23319,
                              "src": "2616:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 23339,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23321,
                              "src": "2625:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23335,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23207,
                            "src": "2595:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 23340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2595:37:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23341,
                        "nodeType": "EmitStatement",
                        "src": "2590:42:57"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 23342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2649:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 23325,
                        "id": 23343,
                        "nodeType": "Return",
                        "src": "2642:11:57"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23317,
                    "nodeType": "StructuredDocumentation",
                    "src": "2154:298:57",
                    "text": "@notice Approves `amount` from `msg.sender` to be spent by `spender`.\n @param spender Address of the party that can pull tokens from `msg.sender`'s account.\n @param amount The maximum collective `amount` that `spender` can pull.\n @return (bool) Returns 'true' if succeeded."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 23345,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nameLocation": "2466:7:57",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23322,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23319,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "2482:7:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23345,
                        "src": "2474:15:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23318,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2474:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23321,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2499:6:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23345,
                        "src": "2491:14:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23320,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2491:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2473:33:57"
                  },
                  "returnParameters": {
                    "id": 23325,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23324,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 23345,
                        "src": "2525:4:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 23323,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2525:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2524:6:57"
                  },
                  "scope": 23629,
                  "src": "2457:203:57",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23384,
                    "nodeType": "Block",
                    "src": "2977:364:57",
                    "statements": [
                      {
                        "condition": {
                          "id": 23355,
                          "name": "level2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23230,
                          "src": "2991:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 23360,
                        "nodeType": "IfStatement",
                        "src": "2987:38:57",
                        "trueBody": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 23357,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23348,
                                "src": "3015:9:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 23356,
                              "name": "_checkWhiteList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23628,
                              "src": "2999:15:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                                "typeString": "function (address) view"
                              }
                            },
                            "id": 23358,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2999:26:57",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 23359,
                          "nodeType": "ExpressionStatement",
                          "src": "2999:26:57"
                        }
                      },
                      {
                        "expression": {
                          "id": 23366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 23361,
                              "name": "balanceOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23237,
                              "src": "3035:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 23364,
                            "indexExpression": {
                              "expression": {
                                "id": 23362,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3045:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 23363,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "3045:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3035:21:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 23365,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23350,
                            "src": "3060:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3035:31:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 23367,
                        "nodeType": "ExpressionStatement",
                        "src": "3035:31:57"
                      },
                      {
                        "id": 23374,
                        "nodeType": "UncheckedBlock",
                        "src": "3195:65:57",
                        "statements": [
                          {
                            "expression": {
                              "id": 23372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 23368,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23237,
                                  "src": "3219:9:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 23370,
                                "indexExpression": {
                                  "id": 23369,
                                  "name": "recipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23348,
                                  "src": "3229:9:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "3219:20:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "id": 23371,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23350,
                                "src": "3243:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3219:30:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 23373,
                            "nodeType": "ExpressionStatement",
                            "src": "3219:30:57"
                          }
                        ]
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 23376,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3283:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 23377,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "3283:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 23378,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23348,
                              "src": "3295:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 23379,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23350,
                              "src": "3306:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23375,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23215,
                            "src": "3274:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 23380,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3274:39:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23381,
                        "nodeType": "EmitStatement",
                        "src": "3269:44:57"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 23382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3330:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 23354,
                        "id": 23383,
                        "nodeType": "Return",
                        "src": "3323:11:57"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23346,
                    "nodeType": "StructuredDocumentation",
                    "src": "2666:229:57",
                    "text": "@notice Transfers `amount` tokens from `msg.sender` to `recipient`.\n @param recipient The address to move tokens to.\n @param amount The token `amount` to move.\n @return (bool) Returns 'true' if succeeded."
                  },
                  "functionSelector": "a9059cbb",
                  "id": 23385,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nameLocation": "2909:8:57",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23351,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23348,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "2926:9:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23385,
                        "src": "2918:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23347,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2918:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23350,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2945:6:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23385,
                        "src": "2937:14:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23349,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2937:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2917:35:57"
                  },
                  "returnParameters": {
                    "id": 23354,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23353,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 23385,
                        "src": "2971:4:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 23352,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2971:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2970:6:57"
                  },
                  "scope": 23629,
                  "src": "2900:441:57",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23447,
                    "nodeType": "Block",
                    "src": "3792:485:57",
                    "statements": [
                      {
                        "condition": {
                          "id": 23397,
                          "name": "level2",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23230,
                          "src": "3806:6:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 23402,
                        "nodeType": "IfStatement",
                        "src": "3802:38:57",
                        "trueBody": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 23399,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23390,
                                "src": "3830:9:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 23398,
                              "name": "_checkWhiteList",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23628,
                              "src": "3814:15:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                                "typeString": "function (address) view"
                              }
                            },
                            "id": 23400,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3814:26:57",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 23401,
                          "nodeType": "ExpressionStatement",
                          "src": "3814:26:57"
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 23414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 23403,
                                "name": "allowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23244,
                                "src": "3854:9:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 23405,
                              "indexExpression": {
                                "id": 23404,
                                "name": "sender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23388,
                                "src": "3864:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3854:17:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 23408,
                            "indexExpression": {
                              "expression": {
                                "id": 23406,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3872:3:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 23407,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "3872:10:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3854:29:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 23411,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3892:7:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 23410,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3892:7:57",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  }
                                ],
                                "id": 23409,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "3887:4:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 23412,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3887:13:57",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_uint256",
                                "typeString": "type(uint256)"
                              }
                            },
                            "id": 23413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "max",
                            "nodeType": "MemberAccess",
                            "src": "3887:17:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3854:50:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 23425,
                        "nodeType": "IfStatement",
                        "src": "3850:120:57",
                        "trueBody": {
                          "id": 23424,
                          "nodeType": "Block",
                          "src": "3906:64:57",
                          "statements": [
                            {
                              "expression": {
                                "id": 23422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 23415,
                                      "name": "allowance",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23244,
                                      "src": "3920:9:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 23419,
                                    "indexExpression": {
                                      "id": 23416,
                                      "name": "sender",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23388,
                                      "src": "3930:6:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3920:17:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 23420,
                                  "indexExpression": {
                                    "expression": {
                                      "id": 23417,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "3938:3:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 23418,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "3938:10:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3920:29:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "-=",
                                "rightHandSide": {
                                  "id": 23421,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23392,
                                  "src": "3953:6:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3920:39:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 23423,
                              "nodeType": "ExpressionStatement",
                              "src": "3920:39:57"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 23430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 23426,
                              "name": "balanceOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23237,
                              "src": "3979:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 23428,
                            "indexExpression": {
                              "id": 23427,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23388,
                              "src": "3989:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3979:17:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 23429,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23392,
                            "src": "4000:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3979:27:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 23431,
                        "nodeType": "ExpressionStatement",
                        "src": "3979:27:57"
                      },
                      {
                        "id": 23438,
                        "nodeType": "UncheckedBlock",
                        "src": "4135:65:57",
                        "statements": [
                          {
                            "expression": {
                              "id": 23436,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 23432,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23237,
                                  "src": "4159:9:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 23434,
                                "indexExpression": {
                                  "id": 23433,
                                  "name": "recipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23390,
                                  "src": "4169:9:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "4159:20:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "id": 23435,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23392,
                                "src": "4183:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4159:30:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 23437,
                            "nodeType": "ExpressionStatement",
                            "src": "4159:30:57"
                          }
                        ]
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 23440,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23388,
                              "src": "4223:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 23441,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23390,
                              "src": "4231:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 23442,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23392,
                              "src": "4242:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23439,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23215,
                            "src": "4214:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 23443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4214:35:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23444,
                        "nodeType": "EmitStatement",
                        "src": "4209:40:57"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 23445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4266:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 23396,
                        "id": 23446,
                        "nodeType": "Return",
                        "src": "4259:11:57"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23386,
                    "nodeType": "StructuredDocumentation",
                    "src": "3347:313:57",
                    "text": "@notice Transfers `amount` tokens from `sender` to `recipient`. Caller needs approval from `from`.\n @param sender Address to pull tokens `from`.\n @param recipient The address to move tokens to.\n @param amount The token `amount` to move.\n @return (bool) Returns 'true' if succeeded."
                  },
                  "functionSelector": "23b872dd",
                  "id": 23448,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "3674:12:57",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23393,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23388,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "3704:6:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23448,
                        "src": "3696:14:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23387,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3696:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23390,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "3728:9:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23448,
                        "src": "3720:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23389,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3720:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23392,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "3755:6:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23448,
                        "src": "3747:14:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23391,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3747:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3686:81:57"
                  },
                  "returnParameters": {
                    "id": 23396,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23395,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 23448,
                        "src": "3786:4:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 23394,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3786:4:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3785:6:57"
                  },
                  "scope": 23629,
                  "src": "3665:612:57",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23535,
                    "nodeType": "Block",
                    "src": "4941:610:57",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 23470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 23467,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23457,
                                "src": "4959:8:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "expression": {
                                  "id": 23468,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "4971:5:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 23469,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "4971:15:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4959:27:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5045524d49545f444541444c494e455f45585049524544",
                              "id": 23471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4988:25:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e",
                                "typeString": "literal_string \"PERMIT_DEADLINE_EXPIRED\""
                              },
                              "value": "PERMIT_DEADLINE_EXPIRED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dd18cfd81b4c1281b56302a044e7f751a261543590362c41d86af048f8ed4b3e",
                                "typeString": "literal_string \"PERMIT_DEADLINE_EXPIRED\""
                              }
                            ],
                            "id": 23466,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4951:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4951:63:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23473,
                        "nodeType": "ExpressionStatement",
                        "src": "4951:63:57"
                      },
                      {
                        "assignments": [
                          23475
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23475,
                            "mutability": "mutable",
                            "name": "digest",
                            "nameLocation": "5032:6:57",
                            "nodeType": "VariableDeclaration",
                            "scope": 23535,
                            "src": "5024:14:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 23474,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "5024:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 23497,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "1901",
                                  "id": 23479,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5098:10:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  "value": "\u0019\u0001"
                                },
                                {
                                  "id": 23480,
                                  "name": "DOMAIN_SEPARATOR",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23253,
                                  "src": "5126:16:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 23484,
                                          "name": "PERMIT_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23250,
                                          "src": "5181:15:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "id": 23485,
                                          "name": "owner",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23451,
                                          "src": "5198:5:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 23486,
                                          "name": "spender",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23453,
                                          "src": "5205:7:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 23487,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23455,
                                          "src": "5214:6:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 23491,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "UnaryOperation",
                                          "operator": "++",
                                          "prefix": false,
                                          "src": "5222:15:57",
                                          "subExpression": {
                                            "baseExpression": {
                                              "id": 23488,
                                              "name": "nonces",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 23258,
                                              "src": "5222:6:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                "typeString": "mapping(address => uint256)"
                                              }
                                            },
                                            "id": 23490,
                                            "indexExpression": {
                                              "id": 23489,
                                              "name": "owner",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 23451,
                                              "src": "5229:5:57",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "5222:13:57",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 23492,
                                          "name": "deadline",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23457,
                                          "src": "5239:8:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "id": 23482,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "5170:3:57",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 23483,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "src": "5170:10:57",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 23493,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5170:78:57",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 23481,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "5160:9:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 23494,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5160:89:57",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                    "typeString": "literal_string hex\"1901\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 23477,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "5064:3:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 23478,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "5064:16:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 23495,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5064:199:57",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 23476,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "5041:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 23496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5041:232:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5024:249:57"
                      },
                      {
                        "assignments": [
                          23499
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23499,
                            "mutability": "mutable",
                            "name": "recoveredAddress",
                            "nameLocation": "5291:16:57",
                            "nodeType": "VariableDeclaration",
                            "scope": 23535,
                            "src": "5283:24:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 23498,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5283:7:57",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 23506,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 23501,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23475,
                              "src": "5320:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 23502,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23459,
                              "src": "5328:1:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 23503,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23461,
                              "src": "5331:1:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 23504,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23463,
                              "src": "5334:1:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 23500,
                            "name": "ecrecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -6,
                            "src": "5310:9:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                            }
                          },
                          "id": 23505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5310:26:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5283:53:57"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 23517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 23513,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 23508,
                                  "name": "recoveredAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23499,
                                  "src": "5354:16:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 23511,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5382:1:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 23510,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5374:7:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 23509,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5374:7:57",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 23512,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5374:10:57",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5354:30:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 23516,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 23514,
                                  "name": "recoveredAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23499,
                                  "src": "5388:16:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 23515,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23451,
                                  "src": "5408:5:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5388:25:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5354:59:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c49445f5045524d49545f5349474e4154555245",
                              "id": 23518,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5415:26:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb",
                                "typeString": "literal_string \"INVALID_PERMIT_SIGNATURE\""
                              },
                              "value": "INVALID_PERMIT_SIGNATURE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_34ca86b4445a431302a103b91f5f15aa716994a1f64e778b030dbdaf416eedbb",
                                "typeString": "literal_string \"INVALID_PERMIT_SIGNATURE\""
                              }
                            ],
                            "id": 23507,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5346:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23519,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5346:96:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23520,
                        "nodeType": "ExpressionStatement",
                        "src": "5346:96:57"
                      },
                      {
                        "expression": {
                          "id": 23527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 23521,
                                "name": "allowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23244,
                                "src": "5452:9:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 23524,
                              "indexExpression": {
                                "id": 23522,
                                "name": "recoveredAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23499,
                                "src": "5462:16:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5452:27:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 23525,
                            "indexExpression": {
                              "id": 23523,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23453,
                              "src": "5480:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5452:36:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 23526,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23455,
                            "src": "5491:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5452:45:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 23528,
                        "nodeType": "ExpressionStatement",
                        "src": "5452:45:57"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 23530,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23451,
                              "src": "5521:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 23531,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23453,
                              "src": "5528:7:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 23532,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23455,
                              "src": "5537:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23529,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23207,
                            "src": "5512:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 23533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5512:32:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23534,
                        "nodeType": "EmitStatement",
                        "src": "5507:37:57"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23449,
                    "nodeType": "StructuredDocumentation",
                    "src": "4283:469:57",
                    "text": "@notice Triggers an approval from `owner` to `spender`.\n @param owner The address to approve from.\n @param spender The address to be approved.\n @param amount The number of tokens that are approved (2^256-1 means infinite).\n @param deadline The time at which to expire the signature.\n @param v The recovery byte of the signature.\n @param r Half of the ECDSA signature pair.\n @param s Half of the ECDSA signature pair."
                  },
                  "functionSelector": "d505accf",
                  "id": 23536,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permit",
                  "nameLocation": "4766:6:57",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23464,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23451,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "4790:5:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23536,
                        "src": "4782:13:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23450,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4782:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23453,
                        "mutability": "mutable",
                        "name": "spender",
                        "nameLocation": "4813:7:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23536,
                        "src": "4805:15:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23452,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4805:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23455,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "4838:6:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23536,
                        "src": "4830:14:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23454,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4830:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23457,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nameLocation": "4862:8:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23536,
                        "src": "4854:16:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23456,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4854:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23459,
                        "mutability": "mutable",
                        "name": "v",
                        "nameLocation": "4886:1:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23536,
                        "src": "4880:7:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 23458,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "4880:5:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23461,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "4905:1:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23536,
                        "src": "4897:9:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 23460,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4897:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23463,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "4924:1:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23536,
                        "src": "4916:9:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 23462,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4916:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4772:159:57"
                  },
                  "returnParameters": {
                    "id": 23465,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4941:0:57"
                  },
                  "scope": 23629,
                  "src": "4757:794:57",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23563,
                    "nodeType": "Block",
                    "src": "5616:285:57",
                    "statements": [
                      {
                        "expression": {
                          "id": 23545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 23543,
                            "name": "totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23232,
                            "src": "5626:11:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "id": 23544,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23540,
                            "src": "5641:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5626:21:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 23546,
                        "nodeType": "ExpressionStatement",
                        "src": "5626:21:57"
                      },
                      {
                        "id": 23553,
                        "nodeType": "UncheckedBlock",
                        "src": "5776:65:57",
                        "statements": [
                          {
                            "expression": {
                              "id": 23551,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 23547,
                                  "name": "balanceOf",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23237,
                                  "src": "5800:9:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 23549,
                                "indexExpression": {
                                  "id": 23548,
                                  "name": "recipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23538,
                                  "src": "5810:9:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "5800:20:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "id": 23550,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23540,
                                "src": "5824:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5800:30:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 23552,
                            "nodeType": "ExpressionStatement",
                            "src": "5800:30:57"
                          }
                        ]
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 23557,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5872:1:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 23556,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5864:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 23555,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5864:7:57",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 23558,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5864:10:57",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 23559,
                              "name": "recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23538,
                              "src": "5876:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 23560,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23540,
                              "src": "5887:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23554,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23215,
                            "src": "5855:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 23561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5855:39:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23562,
                        "nodeType": "EmitStatement",
                        "src": "5850:44:57"
                      }
                    ]
                  },
                  "id": 23564,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nameLocation": "5566:5:57",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23541,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23538,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "5580:9:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23564,
                        "src": "5572:17:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23537,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5572:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23540,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5599:6:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23564,
                        "src": "5591:14:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23539,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5591:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5571:35:57"
                  },
                  "returnParameters": {
                    "id": 23542,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5616:0:57"
                  },
                  "scope": 23629,
                  "src": "5557:344:57",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 23591,
                    "nodeType": "Block",
                    "src": "5963:276:57",
                    "statements": [
                      {
                        "expression": {
                          "id": 23575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 23571,
                              "name": "balanceOf",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23237,
                              "src": "5973:9:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 23573,
                            "indexExpression": {
                              "id": 23572,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23566,
                              "src": "5983:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5973:17:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "id": 23574,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23568,
                            "src": "5994:6:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5973:27:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 23576,
                        "nodeType": "ExpressionStatement",
                        "src": "5973:27:57"
                      },
                      {
                        "id": 23581,
                        "nodeType": "UncheckedBlock",
                        "src": "6126:56:57",
                        "statements": [
                          {
                            "expression": {
                              "id": 23579,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 23577,
                                "name": "totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23232,
                                "src": "6150:11:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "id": 23578,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23568,
                                "src": "6165:6:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6150:21:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 23580,
                            "nodeType": "ExpressionStatement",
                            "src": "6150:21:57"
                          }
                        ]
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 23583,
                              "name": "sender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23566,
                              "src": "6205:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 23586,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6221:1:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 23585,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6213:7:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 23584,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6213:7:57",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 23587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6213:10:57",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 23588,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23568,
                              "src": "6225:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 23582,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23215,
                            "src": "6196:8:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 23589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6196:36:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23590,
                        "nodeType": "EmitStatement",
                        "src": "6191:41:57"
                      }
                    ]
                  },
                  "id": 23592,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nameLocation": "5916:5:57",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23569,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23566,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "5930:6:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23592,
                        "src": "5922:14:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23565,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5922:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23568,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5946:6:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23592,
                        "src": "5938:14:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23567,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5938:7:57",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5921:32:57"
                  },
                  "returnParameters": {
                    "id": 23570,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5963:0:57"
                  },
                  "scope": 23629,
                  "src": "5907:332:57",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 23627,
                    "nodeType": "Block",
                    "src": "6386:299:57",
                    "statements": [
                      {
                        "assignments": [
                          null,
                          23599
                        ],
                        "declarations": [
                          null,
                          {
                            "constant": false,
                            "id": 23599,
                            "mutability": "mutable",
                            "name": "_whitelisted",
                            "nameLocation": "6412:12:57",
                            "nodeType": "VariableDeclaration",
                            "scope": 23627,
                            "src": "6399:25:57",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 23598,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "6399:5:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 23611,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 23604,
                                      "name": "IWhiteListManager",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2612,
                                      "src": "6492:17:57",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IWhiteListManager_$2612_$",
                                        "typeString": "type(contract IWhiteListManager)"
                                      }
                                    },
                                    "id": 23605,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "whitelistedAccounts",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2611,
                                    "src": "6492:37:57",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$returns$_t_bool_$",
                                      "typeString": "function IWhiteListManager.whitelistedAccounts(address,address) returns (bool)"
                                    }
                                  },
                                  "id": 23606,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "6492:46:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 23607,
                                  "name": "operator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23228,
                                  "src": "6540:8:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 23608,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23595,
                                  "src": "6550:7:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 23602,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "6469:3:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 23603,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "6469:22:57",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 23609,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6469:89:57",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 23600,
                              "name": "whiteListManager",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23226,
                              "src": "6428:16:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 23601,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "6428:27:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 23610,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6428:140:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6396:172:57"
                      },
                      {
                        "assignments": [
                          23613
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23613,
                            "mutability": "mutable",
                            "name": "whitelisted",
                            "nameLocation": "6583:11:57",
                            "nodeType": "VariableDeclaration",
                            "scope": 23627,
                            "src": "6578:16:57",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 23612,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "6578:4:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 23621,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 23616,
                              "name": "_whitelisted",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23599,
                              "src": "6608:12:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 23618,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6623:4:57",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bool_$",
                                    "typeString": "type(bool)"
                                  },
                                  "typeName": {
                                    "id": 23617,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6623:4:57",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 23619,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "6622:6:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bool_$",
                                "typeString": "type(bool)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_type$_t_bool_$",
                                "typeString": "type(bool)"
                              }
                            ],
                            "expression": {
                              "id": 23614,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "6597:3:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 23615,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "6597:10:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 23620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6597:32:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6578:51:57"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 23623,
                              "name": "whitelisted",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23613,
                              "src": "6647:11:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e4f545f57484954454c4953544544",
                              "id": 23624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6660:17:57",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f386d26920ad5c64e0ecdb024adf48b36625926cc342c9dfbbd1b4a7544d8539",
                                "typeString": "literal_string \"NOT_WHITELISTED\""
                              },
                              "value": "NOT_WHITELISTED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f386d26920ad5c64e0ecdb024adf48b36625926cc342c9dfbbd1b4a7544d8539",
                                "typeString": "literal_string \"NOT_WHITELISTED\""
                              }
                            ],
                            "id": 23622,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6639:7:57",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6639:39:57",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23626,
                        "nodeType": "ExpressionStatement",
                        "src": "6639:39:57"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23593,
                    "nodeType": "StructuredDocumentation",
                    "src": "6245:80:57",
                    "text": "@dev Checks `whiteListManager` for pool `operator` and given user `account`."
                  },
                  "id": 23628,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_checkWhiteList",
                  "nameLocation": "6339:15:57",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23596,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23595,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "6363:7:57",
                        "nodeType": "VariableDeclaration",
                        "scope": 23628,
                        "src": "6355:15:57",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23594,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6355:7:57",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6354:17:57"
                  },
                  "returnParameters": {
                    "id": 23597,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6386:0:57"
                  },
                  "scope": 23629,
                  "src": "6330:355:57",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 23630,
              "src": "338:6349:57",
              "usedErrors": []
            }
          ],
          "src": "46:6642:57"
        },
        "id": 57
      },
      "contracts/test/TickMathTest.sol": {
        "ast": {
          "absolutePath": "contracts/test/TickMathTest.sol",
          "exportedSymbols": {
            "TickMath": [
              4217
            ],
            "TickMathTest": [
              23659
            ]
          },
          "id": 23660,
          "license": "UNLICENSED",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 23631,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:24:58"
            },
            {
              "absolutePath": "contracts/libraries/concentratedPool/TickMath.sol",
              "file": "../libraries/concentratedPool/TickMath.sol",
              "id": 23632,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 23660,
              "sourceUnit": 4218,
              "src": "65:52:58",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 23659,
              "linearizedBaseContracts": [
                23659
              ],
              "name": "TickMathTest",
              "nameLocation": "128:12:58",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 23644,
                    "nodeType": "Block",
                    "src": "219:57:58",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 23641,
                              "name": "tick",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23634,
                              "src": "264:4:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_int24",
                                "typeString": "int24"
                              }
                            ],
                            "expression": {
                              "id": 23639,
                              "name": "TickMath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4217,
                              "src": "236:8:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                "typeString": "type(library TickMath)"
                              }
                            },
                            "id": 23640,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getSqrtRatioAtTick",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4077,
                            "src": "236:27:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$",
                              "typeString": "function (int24) pure returns (uint160)"
                            }
                          },
                          "id": 23642,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "236:33:58",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "functionReturnParameters": 23638,
                        "id": 23643,
                        "nodeType": "Return",
                        "src": "229:40:58"
                      }
                    ]
                  },
                  "functionSelector": "986cfba3",
                  "id": 23645,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSqrtRatioAtTick",
                  "nameLocation": "156:18:58",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23635,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23634,
                        "mutability": "mutable",
                        "name": "tick",
                        "nameLocation": "181:4:58",
                        "nodeType": "VariableDeclaration",
                        "scope": 23645,
                        "src": "175:10:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 23633,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "175:5:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "174:12:58"
                  },
                  "returnParameters": {
                    "id": 23638,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23637,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 23645,
                        "src": "210:7:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "typeName": {
                          "id": 23636,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "210:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "209:9:58"
                  },
                  "scope": 23659,
                  "src": "147:129:58",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23657,
                    "nodeType": "Block",
                    "src": "362:65:58",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 23654,
                              "name": "sqrtPriceX96",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23647,
                              "src": "407:12:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            ],
                            "expression": {
                              "id": 23652,
                              "name": "TickMath",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4217,
                              "src": "379:8:58",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TickMath_$4217_$",
                                "typeString": "type(library TickMath)"
                              }
                            },
                            "id": 23653,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getTickAtSqrtRatio",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4216,
                            "src": "379:27:58",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint160_$returns$_t_int24_$",
                              "typeString": "function (uint160) pure returns (int24)"
                            }
                          },
                          "id": 23655,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "379:41:58",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "functionReturnParameters": 23651,
                        "id": 23656,
                        "nodeType": "Return",
                        "src": "372:48:58"
                      }
                    ]
                  },
                  "functionSelector": "4f76c058",
                  "id": 23658,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTickAtSqrtRatio",
                  "nameLocation": "291:18:58",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23648,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23647,
                        "mutability": "mutable",
                        "name": "sqrtPriceX96",
                        "nameLocation": "318:12:58",
                        "nodeType": "VariableDeclaration",
                        "scope": 23658,
                        "src": "310:20:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "typeName": {
                          "id": 23646,
                          "name": "uint160",
                          "nodeType": "ElementaryTypeName",
                          "src": "310:7:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "309:22:58"
                  },
                  "returnParameters": {
                    "id": 23651,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23650,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 23658,
                        "src": "355:5:58",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int24",
                          "typeString": "int24"
                        },
                        "typeName": {
                          "id": 23649,
                          "name": "int24",
                          "nodeType": "ElementaryTypeName",
                          "src": "355:5:58",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int24",
                            "typeString": "int24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "354:7:58"
                  },
                  "scope": 23659,
                  "src": "282:145:58",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 23660,
              "src": "119:310:58",
              "usedErrors": [
                3697,
                3699
              ]
            }
          ],
          "src": "39:391:58"
        },
        "id": 58
      },
      "contracts/utils/RouterHelper.sol": {
        "ast": {
          "absolutePath": "contracts/utils/RouterHelper.sol",
          "exportedSymbols": {
            "IBentoBoxMinimal": [
              2253
            ],
            "IMasterDeployer": [
              2356
            ],
            "Rebase": [
              2859
            ],
            "RebaseLibrary": [
              2929
            ],
            "RouterHelper": [
              24070
            ],
            "TridentPermit": [
              24373
            ],
            "TridentRouter": [
              1892
            ]
          },
          "id": 24071,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 23661,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:59"
            },
            {
              "absolutePath": "contracts/interfaces/IBentoBoxMinimal.sol",
              "file": "../interfaces/IBentoBoxMinimal.sol",
              "id": 23662,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 24071,
              "sourceUnit": 2254,
              "src": "72:44:59",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/IMasterDeployer.sol",
              "file": "../interfaces/IMasterDeployer.sol",
              "id": 23663,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 24071,
              "sourceUnit": 2357,
              "src": "117:43:59",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/TridentRouter.sol",
              "file": "../TridentRouter.sol",
              "id": 23664,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 24071,
              "sourceUnit": 1893,
              "src": "161:30:59",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/utils/TridentPermit.sol",
              "file": "./TridentPermit.sol",
              "id": 23665,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 24071,
              "sourceUnit": 24374,
              "src": "192:29:59",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 23667,
                    "name": "TridentPermit",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 24373,
                    "src": "292:13:59"
                  },
                  "id": 23668,
                  "nodeType": "InheritanceSpecifier",
                  "src": "292:13:59"
                }
              ],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 23666,
                "nodeType": "StructuredDocumentation",
                "src": "223:44:59",
                "text": "@notice Trident router helper contract."
              },
              "fullyImplemented": true,
              "id": 24070,
              "linearizedBaseContracts": [
                24070,
                24373
              ],
              "name": "RouterHelper",
              "nameLocation": "276:12:59",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "documentation": {
                    "id": 23669,
                    "nodeType": "StructuredDocumentation",
                    "src": "312:33:59",
                    "text": "@notice BentoBox token vault."
                  },
                  "functionSelector": "4da31827",
                  "id": 23672,
                  "mutability": "immutable",
                  "name": "bento",
                  "nameLocation": "384:5:59",
                  "nodeType": "VariableDeclaration",
                  "scope": 24070,
                  "src": "350:39:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                    "typeString": "contract IBentoBoxMinimal"
                  },
                  "typeName": {
                    "id": 23671,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23670,
                      "name": "IBentoBoxMinimal",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2253,
                      "src": "350:16:59"
                    },
                    "referencedDeclaration": 2253,
                    "src": "350:16:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                      "typeString": "contract IBentoBoxMinimal"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 23673,
                    "nodeType": "StructuredDocumentation",
                    "src": "395:49:59",
                    "text": "@notice Trident AMM master deployer contract."
                  },
                  "functionSelector": "cf58879a",
                  "id": 23676,
                  "mutability": "immutable",
                  "name": "masterDeployer",
                  "nameLocation": "482:14:59",
                  "nodeType": "VariableDeclaration",
                  "scope": 24070,
                  "src": "449:47:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                    "typeString": "contract IMasterDeployer"
                  },
                  "typeName": {
                    "id": 23675,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23674,
                      "name": "IMasterDeployer",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 2356,
                      "src": "449:15:59"
                    },
                    "referencedDeclaration": 2356,
                    "src": "449:15:59",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                      "typeString": "contract IMasterDeployer"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "documentation": {
                    "id": 23677,
                    "nodeType": "StructuredDocumentation",
                    "src": "502:46:59",
                    "text": "@notice ERC-20 token for wrapped ETH (v9)."
                  },
                  "id": 23679,
                  "mutability": "immutable",
                  "name": "wETH",
                  "nameLocation": "580:4:59",
                  "nodeType": "VariableDeclaration",
                  "scope": 24070,
                  "src": "553:31:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23678,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "553:7:59",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "documentation": {
                    "id": 23680,
                    "nodeType": "StructuredDocumentation",
                    "src": "590:63:59",
                    "text": "@notice The user should use 0x0 if they want to deposit ETH"
                  },
                  "id": 23686,
                  "mutability": "constant",
                  "name": "USE_ETHEREUM",
                  "nameLocation": "675:12:59",
                  "nodeType": "VariableDeclaration",
                  "scope": 24070,
                  "src": "658:42:59",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23681,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "658:7:59",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "30",
                        "id": 23684,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "698:1:59",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 23683,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "690:7:59",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 23682,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "690:7:59",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 23685,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "690:10:59",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 23714,
                    "nodeType": "Block",
                    "src": "822:130:59",
                    "statements": [
                      {
                        "expression": {
                          "id": 23699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 23697,
                            "name": "bento",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23672,
                            "src": "832:5:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 23698,
                            "name": "_bento",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23689,
                            "src": "840:6:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                              "typeString": "contract IBentoBoxMinimal"
                            }
                          },
                          "src": "832:14:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        "id": 23700,
                        "nodeType": "ExpressionStatement",
                        "src": "832:14:59"
                      },
                      {
                        "expression": {
                          "id": 23703,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 23701,
                            "name": "masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23676,
                            "src": "856:14:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                              "typeString": "contract IMasterDeployer"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 23702,
                            "name": "_masterDeployer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23692,
                            "src": "873:15:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                              "typeString": "contract IMasterDeployer"
                            }
                          },
                          "src": "856:32:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                            "typeString": "contract IMasterDeployer"
                          }
                        },
                        "id": 23704,
                        "nodeType": "ExpressionStatement",
                        "src": "856:32:59"
                      },
                      {
                        "expression": {
                          "id": 23707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 23705,
                            "name": "wETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23679,
                            "src": "898:4:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 23706,
                            "name": "_wETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23694,
                            "src": "905:5:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "898:12:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 23708,
                        "nodeType": "ExpressionStatement",
                        "src": "898:12:59"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 23709,
                              "name": "_bento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23689,
                              "src": "920:6:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                "typeString": "contract IBentoBoxMinimal"
                              }
                            },
                            "id": 23711,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "registerProtocol",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2179,
                            "src": "920:23:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                              "typeString": "function () external"
                            }
                          },
                          "id": 23712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "920:25:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23713,
                        "nodeType": "ExpressionStatement",
                        "src": "920:25:59"
                      }
                    ]
                  },
                  "id": 23715,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23695,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23689,
                        "mutability": "mutable",
                        "name": "_bento",
                        "nameLocation": "745:6:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 23715,
                        "src": "728:23:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                          "typeString": "contract IBentoBoxMinimal"
                        },
                        "typeName": {
                          "id": 23688,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 23687,
                            "name": "IBentoBoxMinimal",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2253,
                            "src": "728:16:59"
                          },
                          "referencedDeclaration": 2253,
                          "src": "728:16:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                            "typeString": "contract IBentoBoxMinimal"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23692,
                        "mutability": "mutable",
                        "name": "_masterDeployer",
                        "nameLocation": "777:15:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 23715,
                        "src": "761:31:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                          "typeString": "contract IMasterDeployer"
                        },
                        "typeName": {
                          "id": 23691,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 23690,
                            "name": "IMasterDeployer",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 2356,
                            "src": "761:15:59"
                          },
                          "referencedDeclaration": 2356,
                          "src": "761:15:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                            "typeString": "contract IMasterDeployer"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23694,
                        "mutability": "mutable",
                        "name": "_wETH",
                        "nameLocation": "810:5:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 23715,
                        "src": "802:13:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23693,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "802:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "718:103:59"
                  },
                  "returnParameters": {
                    "id": 23696,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "822:0:59"
                  },
                  "scope": 24070,
                  "src": "707:245:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 23834,
                    "nodeType": "Block",
                    "src": "1701:1207:59",
                    "statements": [
                      {
                        "expression": {
                          "id": 23732,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 23725,
                            "name": "results",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23723,
                            "src": "1711:7:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 23729,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23719,
                                  "src": "1733:4:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "bytes calldata[] calldata"
                                  }
                                },
                                "id": 23730,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "1733:11:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 23728,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1721:11:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 23726,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1725:5:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage_ptr",
                                    "typeString": "bytes"
                                  }
                                },
                                "id": 23727,
                                "nodeType": "ArrayTypeName",
                                "src": "1725:7:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                                  "typeString": "bytes[]"
                                }
                              }
                            },
                            "id": 23731,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1721:24:59",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            }
                          },
                          "src": "1711:34:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                            "typeString": "bytes memory[] memory"
                          }
                        },
                        "id": 23733,
                        "nodeType": "ExpressionStatement",
                        "src": "1711:34:59"
                      },
                      {
                        "assignments": [
                          23735
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23735,
                            "mutability": "mutable",
                            "name": "swapCalled",
                            "nameLocation": "1992:10:59",
                            "nodeType": "VariableDeclaration",
                            "scope": 23834,
                            "src": "1987:15:59",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 23734,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1987:4:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 23736,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1987:15:59"
                      },
                      {
                        "body": {
                          "id": 23832,
                          "nodeType": "Block",
                          "src": "2054:848:59",
                          "statements": [
                            {
                              "assignments": [
                                23749
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 23749,
                                  "mutability": "mutable",
                                  "name": "selector",
                                  "nameLocation": "2075:8:59",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 23832,
                                  "src": "2068:15:59",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 23748,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2068:6:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 23755,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 23751,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23719,
                                      "src": "2098:4:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "bytes calldata[] calldata"
                                      }
                                    },
                                    "id": 23753,
                                    "indexExpression": {
                                      "id": 23752,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23738,
                                      "src": "2103:1:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2098:7:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  ],
                                  "id": 23750,
                                  "name": "getSelector",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24069,
                                  "src": "2086:11:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                    "typeString": "function (bytes memory) pure returns (bytes4)"
                                  }
                                },
                                "id": 23754,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2086:20:59",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2068:38:59"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 23766,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "id": 23760,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 23756,
                                    "name": "selector",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23749,
                                    "src": "2124:8:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "expression": {
                                        "id": 23757,
                                        "name": "TridentRouter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1892,
                                        "src": "2136:13:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_TridentRouter_$1892_$",
                                          "typeString": "type(contract TridentRouter)"
                                        }
                                      },
                                      "id": 23758,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "exactInputSingle",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 759,
                                      "src": "2136:30:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_declaration_payable$_t_struct$_ExactInputSingleParams_$2512_calldata_ptr_$returns$_t_uint256_$",
                                        "typeString": "function TridentRouter.exactInputSingle(struct ITridentRouter.ExactInputSingleParams calldata) payable returns (uint256)"
                                      }
                                    },
                                    "id": 23759,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "selector",
                                    "nodeType": "MemberAccess",
                                    "src": "2136:39:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "src": "2124:51:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "id": 23765,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 23761,
                                    "name": "selector",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23749,
                                    "src": "2179:8:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "expression": {
                                        "id": 23762,
                                        "name": "TridentRouter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1892,
                                        "src": "2191:13:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_TridentRouter_$1892_$",
                                          "typeString": "type(contract TridentRouter)"
                                        }
                                      },
                                      "id": 23763,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "exactInputSingleWithNativeToken",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 949,
                                      "src": "2191:45:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_declaration_payable$_t_struct$_ExactInputSingleParams_$2512_calldata_ptr_$returns$_t_uint256_$",
                                        "typeString": "function TridentRouter.exactInputSingleWithNativeToken(struct ITridentRouter.ExactInputSingleParams calldata) payable returns (uint256)"
                                      }
                                    },
                                    "id": 23764,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "selector",
                                    "nodeType": "MemberAccess",
                                    "src": "2191:54:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "src": "2179:66:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "2124:121:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 23787,
                                "nodeType": "Block",
                                "src": "2362:89:59",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          },
                                          "id": 23783,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 23779,
                                            "name": "selector",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 23749,
                                            "src": "2388:8:59",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "expression": {
                                              "expression": {
                                                "id": 23780,
                                                "name": "this",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -28,
                                                "src": "2400:4:59",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_RouterHelper_$24070",
                                                  "typeString": "contract RouterHelper"
                                                }
                                              },
                                              "id": 23781,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "batch",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 23835,
                                              "src": "2400:10:59",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_payable$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                                                "typeString": "function (bytes memory[] memory) payable external returns (bytes memory[] memory)"
                                              }
                                            },
                                            "id": 23782,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "selector",
                                            "nodeType": "MemberAccess",
                                            "src": "2400:19:59",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "src": "2388:31:59",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "hexValue": "4e6573746564204261746368",
                                          "id": 23784,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2421:14:59",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_ba4a1792a182449048dd70ad064f813fc751bedb907aa87961069a6b2384362e",
                                            "typeString": "literal_string \"Nested Batch\""
                                          },
                                          "value": "Nested Batch"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_ba4a1792a182449048dd70ad064f813fc751bedb907aa87961069a6b2384362e",
                                            "typeString": "literal_string \"Nested Batch\""
                                          }
                                        ],
                                        "id": 23778,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "2380:7:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 23785,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2380:56:59",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 23786,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2380:56:59"
                                  }
                                ]
                              },
                              "id": 23788,
                              "nodeType": "IfStatement",
                              "src": "2120:331:59",
                              "trueBody": {
                                "id": 23777,
                                "nodeType": "Block",
                                "src": "2247:109:59",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 23769,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "UnaryOperation",
                                          "operator": "!",
                                          "prefix": true,
                                          "src": "2273:11:59",
                                          "subExpression": {
                                            "id": 23768,
                                            "name": "swapCalled",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 23735,
                                            "src": "2274:10:59",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "hexValue": "537761702063616c6c6564207477696365",
                                          "id": 23770,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "2286:19:59",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_dc4063f98f18deb853a7e9314b9d1a8e8fa2d9ff6e9d1a2c4b8c202c936285cd",
                                            "typeString": "literal_string \"Swap called twice\""
                                          },
                                          "value": "Swap called twice"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_dc4063f98f18deb853a7e9314b9d1a8e8fa2d9ff6e9d1a2c4b8c202c936285cd",
                                            "typeString": "literal_string \"Swap called twice\""
                                          }
                                        ],
                                        "id": 23767,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "2265:7:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 23771,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2265:41:59",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 23772,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2265:41:59"
                                  },
                                  {
                                    "expression": {
                                      "id": 23775,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 23773,
                                        "name": "swapCalled",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 23735,
                                        "src": "2324:10:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "hexValue": "74727565",
                                        "id": 23774,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2337:4:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "true"
                                      },
                                      "src": "2324:17:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 23776,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2324:17:59"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                23790,
                                23792
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 23790,
                                  "mutability": "mutable",
                                  "name": "success",
                                  "nameLocation": "2471:7:59",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 23832,
                                  "src": "2466:12:59",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 23789,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2466:4:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 23792,
                                  "mutability": "mutable",
                                  "name": "result",
                                  "nameLocation": "2493:6:59",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 23832,
                                  "src": "2480:19:59",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 23791,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2480:5:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 23802,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 23798,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23719,
                                      "src": "2530:4:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "bytes calldata[] calldata"
                                      }
                                    },
                                    "id": 23800,
                                    "indexExpression": {
                                      "id": 23799,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23738,
                                      "src": "2535:1:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2530:7:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 23795,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "2511:4:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_RouterHelper_$24070",
                                          "typeString": "contract RouterHelper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_RouterHelper_$24070",
                                          "typeString": "contract RouterHelper"
                                        }
                                      ],
                                      "id": 23794,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2503:7:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 23793,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2503:7:59",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 23796,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2503:13:59",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 23797,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "delegatecall",
                                  "nodeType": "MemberAccess",
                                  "src": "2503:26:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) returns (bool,bytes memory)"
                                  }
                                },
                                "id": 23801,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2503:35:59",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2465:73:59"
                            },
                            {
                              "condition": {
                                "id": 23804,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "2556:8:59",
                                "subExpression": {
                                  "id": 23803,
                                  "name": "success",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23790,
                                  "src": "2557:7:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 23825,
                              "nodeType": "IfStatement",
                              "src": "2552:307:59",
                              "trueBody": {
                                "id": 23824,
                                "nodeType": "Block",
                                "src": "2566:293:59",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 23808,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 23805,
                                          "name": "result",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23792,
                                          "src": "2669:6:59",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 23806,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "src": "2669:13:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "hexValue": "3638",
                                        "id": 23807,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2685:2:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_68_by_1",
                                          "typeString": "int_const 68"
                                        },
                                        "value": "68"
                                      },
                                      "src": "2669:18:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 23812,
                                    "nodeType": "IfStatement",
                                    "src": "2665:32:59",
                                    "trueBody": {
                                      "expression": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 23809,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "2689:6:59",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                                            "typeString": "function () pure"
                                          }
                                        },
                                        "id": 23810,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2689:8:59",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 23811,
                                      "nodeType": "ExpressionStatement",
                                      "src": "2689:8:59"
                                    }
                                  },
                                  {
                                    "AST": {
                                      "nodeType": "YulBlock",
                                      "src": "2724:67:59",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "2746:27:59",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "result",
                                                "nodeType": "YulIdentifier",
                                                "src": "2760:6:59"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2768:4:59",
                                                "type": "",
                                                "value": "0x04"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2756:3:59"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2756:17:59"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "result",
                                              "nodeType": "YulIdentifier",
                                              "src": "2746:6:59"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "evmVersion": "london",
                                    "externalReferences": [
                                      {
                                        "declaration": 23792,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "2746:6:59",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 23792,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "2760:6:59",
                                        "valueSize": 1
                                      }
                                    ],
                                    "id": 23813,
                                    "nodeType": "InlineAssembly",
                                    "src": "2715:76:59"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 23817,
                                              "name": "result",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 23792,
                                              "src": "2826:6:59",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            {
                                              "components": [
                                                {
                                                  "id": 23819,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "2835:6:59",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                    "typeString": "type(string storage pointer)"
                                                  },
                                                  "typeName": {
                                                    "id": 23818,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2835:6:59",
                                                    "typeDescriptions": {}
                                                  }
                                                }
                                              ],
                                              "id": 23820,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "2834:8:59",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                "typeString": "type(string storage pointer)"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              },
                                              {
                                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                "typeString": "type(string storage pointer)"
                                              }
                                            ],
                                            "expression": {
                                              "id": 23815,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -1,
                                              "src": "2815:3:59",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 23816,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "decode",
                                            "nodeType": "MemberAccess",
                                            "src": "2815:10:59",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                              "typeString": "function () pure"
                                            }
                                          },
                                          "id": 23821,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2815:28:59",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 23814,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -19,
                                          -19
                                        ],
                                        "referencedDeclaration": -19,
                                        "src": "2808:6:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 23822,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2808:36:59",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 23823,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2808:36:59"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 23830,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 23826,
                                    "name": "results",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23723,
                                    "src": "2872:7:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "bytes memory[] memory"
                                    }
                                  },
                                  "id": 23828,
                                  "indexExpression": {
                                    "id": 23827,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23738,
                                    "src": "2880:1:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2872:10:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 23829,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23792,
                                  "src": "2885:6:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "2872:19:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 23831,
                              "nodeType": "ExpressionStatement",
                              "src": "2872:19:59"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 23744,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 23741,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23738,
                            "src": "2032:1:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 23742,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23719,
                              "src": "2036:4:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "bytes calldata[] calldata"
                              }
                            },
                            "id": 23743,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "2036:11:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2032:15:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 23833,
                        "initializationExpression": {
                          "assignments": [
                            23738
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 23738,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "2025:1:59",
                              "nodeType": "VariableDeclaration",
                              "scope": 23833,
                              "src": "2017:9:59",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 23737,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2017:7:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 23740,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 23739,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2029:1:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2017:13:59"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 23746,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "2049:3:59",
                            "subExpression": {
                              "id": 23745,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23738,
                              "src": "2049:1:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 23747,
                          "nodeType": "ExpressionStatement",
                          "src": "2049:3:59"
                        },
                        "nodeType": "ForStatement",
                        "src": "2012:890:59"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23716,
                    "nodeType": "StructuredDocumentation",
                    "src": "958:650:59",
                    "text": "@notice Provides batch function calls for this contract and returns the data from all of them if they all succeed.\n Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\n @dev The `msg.value` should not be trusted for any method callable from this function.\n @dev Uses a modified version of the batch function - preventing multiple calls of the single input swap functions\n @param data ABI-encoded params for each of the calls to make to this contract.\n @return results The results from each of the calls passed in via `data`."
                  },
                  "functionSelector": "1e897afb",
                  "id": 23835,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batch",
                  "nameLocation": "1622:5:59",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23720,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23719,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "1645:4:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 23835,
                        "src": "1628:21:59",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 23717,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1628:5:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 23718,
                          "nodeType": "ArrayTypeName",
                          "src": "1628:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1627:23:59"
                  },
                  "returnParameters": {
                    "id": 23724,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23723,
                        "mutability": "mutable",
                        "name": "results",
                        "nameLocation": "1692:7:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 23835,
                        "src": "1677:22:59",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 23721,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1677:5:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 23722,
                          "nodeType": "ArrayTypeName",
                          "src": "1677:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1676:24:59"
                  },
                  "scope": 24070,
                  "src": "1613:1295:59",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23850,
                    "nodeType": "Block",
                    "src": "3013:70:59",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 23846,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23837,
                              "src": "3056:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 23847,
                              "name": "deployData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23839,
                              "src": "3065:10:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "id": 23844,
                              "name": "masterDeployer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23676,
                              "src": "3030:14:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMasterDeployer_$2356",
                                "typeString": "contract IMasterDeployer"
                              }
                            },
                            "id": 23845,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deployPool",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2355,
                            "src": "3030:25:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (address,bytes memory) external returns (address)"
                            }
                          },
                          "id": 23848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3030:46:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 23843,
                        "id": 23849,
                        "nodeType": "Return",
                        "src": "3023:53:59"
                      }
                    ]
                  },
                  "functionSelector": "250558dc",
                  "id": 23851,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deployPool",
                  "nameLocation": "2923:10:59",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23840,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23837,
                        "mutability": "mutable",
                        "name": "factory",
                        "nameLocation": "2942:7:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 23851,
                        "src": "2934:15:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23836,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2934:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23839,
                        "mutability": "mutable",
                        "name": "deployData",
                        "nameLocation": "2966:10:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 23851,
                        "src": "2951:25:59",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 23838,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2951:5:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2933:44:59"
                  },
                  "returnParameters": {
                    "id": 23843,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23842,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 23851,
                        "src": "3004:7:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23841,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3004:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3003:9:59"
                  },
                  "scope": 24070,
                  "src": "2914:169:59",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23876,
                    "nodeType": "Block",
                    "src": "3336:90:59",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 23864,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3378:3:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 23865,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "3378:10:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 23868,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "3398:4:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_RouterHelper_$24070",
                                    "typeString": "contract RouterHelper"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_RouterHelper_$24070",
                                    "typeString": "contract RouterHelper"
                                  }
                                ],
                                "id": 23867,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3390:7:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 23866,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3390:7:59",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 23869,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3390:13:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 23870,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3405:4:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "id": 23871,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23854,
                              "src": "3411:1:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 23872,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23856,
                              "src": "3414:1:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 23873,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23858,
                              "src": "3417:1:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "id": 23861,
                              "name": "bento",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23672,
                              "src": "3346:5:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IBentoBoxMinimal_$2253",
                                "typeString": "contract IBentoBoxMinimal"
                              }
                            },
                            "id": 23863,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setMasterContractApproval",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2252,
                            "src": "3346:31:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_bool_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,address,bool,uint8,bytes32,bytes32) external"
                            }
                          },
                          "id": 23874,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3346:73:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23875,
                        "nodeType": "ExpressionStatement",
                        "src": "3346:73:59"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23852,
                    "nodeType": "StructuredDocumentation",
                    "src": "3089:133:59",
                    "text": "@notice Helper function to allow batching of BentoBox master contract approvals so the first trade can happen in one transaction."
                  },
                  "functionSelector": "403335a8",
                  "id": 23877,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approveMasterContract",
                  "nameLocation": "3236:21:59",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23859,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23854,
                        "mutability": "mutable",
                        "name": "v",
                        "nameLocation": "3273:1:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 23877,
                        "src": "3267:7:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 23853,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "3267:5:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23856,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "3292:1:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 23877,
                        "src": "3284:9:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 23855,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3284:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23858,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "3311:1:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 23877,
                        "src": "3303:9:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 23857,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3303:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3257:61:59"
                  },
                  "returnParameters": {
                    "id": 23860,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3336:0:59"
                  },
                  "scope": 24070,
                  "src": "3227:199:59",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 23921,
                    "nodeType": "Block",
                    "src": "3760:263:59",
                    "statements": [
                      {
                        "assignments": [
                          23886,
                          23888
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23886,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "3776:7:59",
                            "nodeType": "VariableDeclaration",
                            "scope": 23921,
                            "src": "3771:12:59",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 23885,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "3771:4:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 23888,
                            "mutability": "mutable",
                            "name": "data",
                            "nameLocation": "3798:4:59",
                            "nodeType": "VariableDeclaration",
                            "scope": 23921,
                            "src": "3785:17:59",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 23887,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3785:5:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 23900,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30783730613038323331",
                                  "id": 23893,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3846:10:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1889567281_by_1",
                                    "typeString": "int_const 1889567281"
                                  },
                                  "value": "0x70a08231"
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 23896,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "3866:4:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_RouterHelper_$24070",
                                        "typeString": "contract RouterHelper"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_RouterHelper_$24070",
                                        "typeString": "contract RouterHelper"
                                      }
                                    ],
                                    "id": 23895,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3858:7:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 23894,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3858:7:59",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 23897,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3858:13:59",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1889567281_by_1",
                                    "typeString": "int_const 1889567281"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 23891,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3823:3:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 23892,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "3823:22:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 23898,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3823:49:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 23889,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23880,
                              "src": "3806:5:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 23890,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "staticcall",
                            "nodeType": "MemberAccess",
                            "src": "3806:16:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                            }
                          },
                          "id": 23899,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3806:67:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3770:103:59"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 23907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 23902,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23886,
                                "src": "3919:7:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 23906,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 23903,
                                    "name": "data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23888,
                                    "src": "3930:4:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 23904,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "src": "3930:11:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">=",
                                "rightExpression": {
                                  "hexValue": "3332",
                                  "id": 23905,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3945:2:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "3930:17:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3919:28:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "42414c414e43455f4f465f4641494c4544",
                              "id": 23908,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3949:19:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_f14faee7abdc8ae63af1c0c7ba848ed72f3905484adc3738d56d92beb7fae5a7",
                                "typeString": "literal_string \"BALANCE_OF_FAILED\""
                              },
                              "value": "BALANCE_OF_FAILED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_f14faee7abdc8ae63af1c0c7ba848ed72f3905484adc3738d56d92beb7fae5a7",
                                "typeString": "literal_string \"BALANCE_OF_FAILED\""
                              }
                            ],
                            "id": 23901,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3911:7:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3911:58:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23910,
                        "nodeType": "ExpressionStatement",
                        "src": "3911:58:59"
                      },
                      {
                        "expression": {
                          "id": 23919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 23911,
                            "name": "balance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23883,
                            "src": "3979:7:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 23914,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23888,
                                "src": "4000:4:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 23916,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4007:7:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 23915,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4007:7:59",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 23917,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "4006:9:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                }
                              ],
                              "expression": {
                                "id": 23912,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "3989:3:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 23913,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "3989:10:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 23918,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3989:27:59",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3979:37:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 23920,
                        "nodeType": "ExpressionStatement",
                        "src": "3979:37:59"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23878,
                    "nodeType": "StructuredDocumentation",
                    "src": "3432:245:59",
                    "text": "@notice Provides gas-optimized balance check on this contract to avoid redundant extcodesize check in addition to returndatasize check.\n @param token Address of ERC-20 token.\n @return balance Token amount held by this contract."
                  },
                  "id": 23922,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOfThis",
                  "nameLocation": "3691:13:59",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23881,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23880,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "3713:5:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 23922,
                        "src": "3705:13:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23879,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3705:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3704:15:59"
                  },
                  "returnParameters": {
                    "id": 23884,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23883,
                        "mutability": "mutable",
                        "name": "balance",
                        "nameLocation": "3751:7:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 23922,
                        "src": "3743:15:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23882,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3743:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3742:17:59"
                  },
                  "scope": 24070,
                  "src": "3682:341:59",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 23965,
                    "nodeType": "Block",
                    "src": "4386:248:59",
                    "statements": [
                      {
                        "assignments": [
                          23933,
                          23935
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23933,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "4402:7:59",
                            "nodeType": "VariableDeclaration",
                            "scope": 23965,
                            "src": "4397:12:59",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 23932,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "4397:4:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 23935,
                            "mutability": "mutable",
                            "name": "data",
                            "nameLocation": "4424:4:59",
                            "nodeType": "VariableDeclaration",
                            "scope": 23965,
                            "src": "4411:17:59",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 23934,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "4411:5:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 23945,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30786139303539636262",
                                  "id": 23940,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4466:10:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2835717307_by_1",
                                    "typeString": "int_const 2835717307"
                                  },
                                  "value": "0xa9059cbb"
                                },
                                {
                                  "id": 23941,
                                  "name": "recipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23927,
                                  "src": "4478:9:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 23942,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23929,
                                  "src": "4489:6:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_2835717307_by_1",
                                    "typeString": "int_const 2835717307"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 23938,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4443:3:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 23939,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "4443:22:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 23943,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4443:53:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 23936,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23925,
                              "src": "4432:5:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 23937,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "src": "4432:10:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 23944,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4432:65:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4396:101:59"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 23961,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 23947,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23933,
                                "src": "4550:7:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 23959,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 23951,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 23948,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23935,
                                          "src": "4562:4:59",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 23949,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "src": "4562:11:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "hexValue": "30",
                                        "id": 23950,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "4577:1:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "4562:16:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "id": 23954,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23935,
                                          "src": "4593:4:59",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "components": [
                                            {
                                              "id": 23956,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "4600:4:59",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bool_$",
                                                "typeString": "type(bool)"
                                              },
                                              "typeName": {
                                                "id": 23955,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "4600:4:59",
                                                "typeDescriptions": {}
                                              }
                                            }
                                          ],
                                          "id": 23957,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "4599:6:59",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bool_$",
                                            "typeString": "type(bool)"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_type$_t_bool_$",
                                            "typeString": "type(bool)"
                                          }
                                        ],
                                        "expression": {
                                          "id": 23952,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "4582:3:59",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 23953,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "decode",
                                        "nodeType": "MemberAccess",
                                        "src": "4582:10:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 23958,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4582:24:59",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "4562:44:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 23960,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "4561:46:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "4550:57:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5452414e534645525f4641494c4544",
                              "id": 23962,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4609:17:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72",
                                "typeString": "literal_string \"TRANSFER_FAILED\""
                              },
                              "value": "TRANSFER_FAILED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8bf8f0d780f13740660fe63233b17f96cb1813889e7dce4121e55b817b367b72",
                                "typeString": "literal_string \"TRANSFER_FAILED\""
                              }
                            ],
                            "id": 23946,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4542:7:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 23963,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4542:85:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 23964,
                        "nodeType": "ExpressionStatement",
                        "src": "4542:85:59"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23923,
                    "nodeType": "StructuredDocumentation",
                    "src": "4029:241:59",
                    "text": "@notice Provides 'safe' ERC-20 {transfer} for tokens that don't consistently return true/false.\n @param token Address of ERC-20 token.\n @param recipient Account to send tokens to.\n @param amount Token amount to send."
                  },
                  "id": 23966,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransfer",
                  "nameLocation": "4284:12:59",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23930,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23925,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "4314:5:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 23966,
                        "src": "4306:13:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23924,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4306:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23927,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "4337:9:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 23966,
                        "src": "4329:17:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23926,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4329:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23929,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "4364:6:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 23966,
                        "src": "4356:14:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23928,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4356:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4296:80:59"
                  },
                  "returnParameters": {
                    "id": 23931,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4386:0:59"
                  },
                  "scope": 24070,
                  "src": "4275:359:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24012,
                    "nodeType": "Block",
                    "src": "5080:273:59",
                    "statements": [
                      {
                        "assignments": [
                          23979,
                          23981
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 23979,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "5096:7:59",
                            "nodeType": "VariableDeclaration",
                            "scope": 24012,
                            "src": "5091:12:59",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 23978,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5091:4:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 23981,
                            "mutability": "mutable",
                            "name": "data",
                            "nameLocation": "5118:4:59",
                            "nodeType": "VariableDeclaration",
                            "scope": 24012,
                            "src": "5105:17:59",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 23980,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "5105:5:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 23992,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30783233623837326464",
                                  "id": 23986,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5160:10:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_599290589_by_1",
                                    "typeString": "int_const 599290589"
                                  },
                                  "value": "0x23b872dd"
                                },
                                {
                                  "id": 23987,
                                  "name": "sender",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23971,
                                  "src": "5172:6:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 23988,
                                  "name": "recipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23973,
                                  "src": "5180:9:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 23989,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23975,
                                  "src": "5191:6:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_599290589_by_1",
                                    "typeString": "int_const 599290589"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 23984,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "5137:3:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 23985,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "5137:22:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 23990,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5137:61:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 23982,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23969,
                              "src": "5126:5:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 23983,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "src": "5126:10:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 23991,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5126:73:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5090:109:59"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 24008,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 23994,
                                "name": "success",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23979,
                                "src": "5264:7:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 24006,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 23998,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 23995,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23981,
                                          "src": "5276:4:59",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 23996,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "src": "5276:11:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "hexValue": "30",
                                        "id": 23997,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5291:1:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "src": "5276:16:59",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "||",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "id": 24001,
                                          "name": "data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 23981,
                                          "src": "5307:4:59",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "components": [
                                            {
                                              "id": 24003,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "5314:4:59",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bool_$",
                                                "typeString": "type(bool)"
                                              },
                                              "typeName": {
                                                "id": 24002,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5314:4:59",
                                                "typeDescriptions": {}
                                              }
                                            }
                                          ],
                                          "id": 24004,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "5313:6:59",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bool_$",
                                            "typeString": "type(bool)"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_type$_t_bool_$",
                                            "typeString": "type(bool)"
                                          }
                                        ],
                                        "expression": {
                                          "id": 23999,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "5296:3:59",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 24000,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "decode",
                                        "nodeType": "MemberAccess",
                                        "src": "5296:10:59",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 24005,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5296:24:59",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "5276:44:59",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 24007,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "5275:46:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5264:57:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5452414e534645525f46524f4d5f4641494c4544",
                              "id": 24009,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5323:22:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_77631768048ee92f9dcf4b9b9d762877d6b9723214862c733f0596708fc219b7",
                                "typeString": "literal_string \"TRANSFER_FROM_FAILED\""
                              },
                              "value": "TRANSFER_FROM_FAILED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_77631768048ee92f9dcf4b9b9d762877d6b9723214862c733f0596708fc219b7",
                                "typeString": "literal_string \"TRANSFER_FROM_FAILED\""
                              }
                            ],
                            "id": 23993,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5256:7:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 24010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5256:90:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24011,
                        "nodeType": "ExpressionStatement",
                        "src": "5256:90:59"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 23967,
                    "nodeType": "StructuredDocumentation",
                    "src": "4640:296:59",
                    "text": "@notice Provides 'safe' ERC-20 {transferFrom} for tokens that don't consistently return true/false.\n @param token Address of ERC-20 token.\n @param sender Account to send tokens from.\n @param recipient Account to send tokens to.\n @param amount Token amount to send."
                  },
                  "id": 24013,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "4950:16:59",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23976,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 23969,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "4984:5:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 24013,
                        "src": "4976:13:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23968,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4976:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23971,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "5007:6:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 24013,
                        "src": "4999:14:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23970,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4999:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23973,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "5031:9:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 24013,
                        "src": "5023:17:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23972,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5023:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 23975,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5058:6:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 24013,
                        "src": "5050:14:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 23974,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5050:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4966:104:59"
                  },
                  "returnParameters": {
                    "id": 23977,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5080:0:59"
                  },
                  "scope": 24070,
                  "src": "4941:412:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24035,
                    "nodeType": "Block",
                    "src": "5519:171:59",
                    "statements": [
                      {
                        "assignments": [
                          24020,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24020,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "5535:7:59",
                            "nodeType": "VariableDeclaration",
                            "scope": 24035,
                            "src": "5530:12:59",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 24019,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5530:4:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 24029,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30783265316137643464",
                                  "id": 24025,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5581:10:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_773487949_by_1",
                                    "typeString": "int_const 773487949"
                                  },
                                  "value": "0x2e1a7d4d"
                                },
                                {
                                  "id": 24026,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24016,
                                  "src": "5593:6:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_773487949_by_1",
                                    "typeString": "int_const 773487949"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 24023,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "5558:3:59",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24024,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "5558:22:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 24027,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5558:42:59",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 24021,
                              "name": "wETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23679,
                              "src": "5548:4:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 24022,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "src": "5548:9:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 24028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5548:53:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5529:72:59"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 24031,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24020,
                              "src": "5646:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "57495448445241575f46524f4d5f574554485f4641494c4544",
                              "id": 24032,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5655:27:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_9e034c8d2c77a265129cd02b8e6475148503b87b90dbc6e81311be5ce1022dbb",
                                "typeString": "literal_string \"WITHDRAW_FROM_WETH_FAILED\""
                              },
                              "value": "WITHDRAW_FROM_WETH_FAILED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_9e034c8d2c77a265129cd02b8e6475148503b87b90dbc6e81311be5ce1022dbb",
                                "typeString": "literal_string \"WITHDRAW_FROM_WETH_FAILED\""
                              }
                            ],
                            "id": 24030,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5638:7:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 24033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5638:45:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24034,
                        "nodeType": "ExpressionStatement",
                        "src": "5638:45:59"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24014,
                    "nodeType": "StructuredDocumentation",
                    "src": "5359:104:59",
                    "text": "@notice Provides low-level `wETH` {withdraw}.\n @param amount Token amount to unwrap into ETH."
                  },
                  "id": 24036,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdrawFromWETH",
                  "nameLocation": "5477:16:59",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24017,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24016,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5502:6:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 24036,
                        "src": "5494:14:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24015,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5494:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5493:16:59"
                  },
                  "returnParameters": {
                    "id": 24018,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5519:0:59"
                  },
                  "scope": 24070,
                  "src": "5468:222:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24058,
                    "nodeType": "Block",
                    "src": "5902:118:59",
                    "statements": [
                      {
                        "assignments": [
                          24045,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24045,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "5918:7:59",
                            "nodeType": "VariableDeclaration",
                            "scope": 24058,
                            "src": "5913:12:59",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 24044,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5913:4:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 24052,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "",
                              "id": 24050,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5961:2:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "expression": {
                                "id": 24046,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24039,
                                "src": "5931:9:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 24047,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "call",
                              "nodeType": "MemberAccess",
                              "src": "5931:14:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                              }
                            },
                            "id": 24049,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "value"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 24048,
                                "name": "amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24041,
                                "src": "5953:6:59",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "src": "5931:29:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 24051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5931:33:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5912:52:59"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 24054,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24045,
                              "src": "5982:7:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4554485f5452414e534645525f4641494c4544",
                              "id": 24055,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5991:21:59",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d383913ea1996930a2623a0d739b8fc033c734c1d71d4759d3ccba1d3a719c29",
                                "typeString": "literal_string \"ETH_TRANSFER_FAILED\""
                              },
                              "value": "ETH_TRANSFER_FAILED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d383913ea1996930a2623a0d739b8fc033c734c1d71d4759d3ccba1d3a719c29",
                                "typeString": "literal_string \"ETH_TRANSFER_FAILED\""
                              }
                            ],
                            "id": 24053,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5974:7:59",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 24056,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5974:39:59",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24057,
                        "nodeType": "ExpressionStatement",
                        "src": "5974:39:59"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24037,
                    "nodeType": "StructuredDocumentation",
                    "src": "5696:132:59",
                    "text": "@notice Provides 'safe' ETH transfer.\n @param recipient Account to send ETH to.\n @param amount ETH amount to send."
                  },
                  "id": 24059,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferETH",
                  "nameLocation": "5842:15:59",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24042,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24039,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "5866:9:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 24059,
                        "src": "5858:17:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24038,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5858:7:59",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24041,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5885:6:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 24059,
                        "src": "5877:14:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24040,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5877:7:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5857:35:59"
                  },
                  "returnParameters": {
                    "id": 24043,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5902:0:59"
                  },
                  "scope": 24070,
                  "src": "5833:187:59",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24068,
                    "nodeType": "Block",
                    "src": "6225:77:59",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "6244:52:59",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6258:28:59",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_data",
                                        "nodeType": "YulIdentifier",
                                        "src": "6275:5:59"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6282:2:59",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6271:3:59"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6271:14:59"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6265:5:59"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6265:21:59"
                              },
                              "variableNames": [
                                {
                                  "name": "sig",
                                  "nodeType": "YulIdentifier",
                                  "src": "6258:3:59"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 24062,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6275:5:59",
                            "valueSize": 1
                          },
                          {
                            "declaration": 24065,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6258:3:59",
                            "valueSize": 1
                          }
                        ],
                        "id": 24067,
                        "nodeType": "InlineAssembly",
                        "src": "6235:61:59"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24060,
                    "nodeType": "StructuredDocumentation",
                    "src": "6026:118:59",
                    "text": " @notice function to extract the selector of a bytes calldata\n @param _data the calldata bytes"
                  },
                  "id": 24069,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSelector",
                  "nameLocation": "6158:11:59",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24063,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24062,
                        "mutability": "mutable",
                        "name": "_data",
                        "nameLocation": "6183:5:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 24069,
                        "src": "6170:18:59",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 24061,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6170:5:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6169:20:59"
                  },
                  "returnParameters": {
                    "id": 24066,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24065,
                        "mutability": "mutable",
                        "name": "sig",
                        "nameLocation": "6220:3:59",
                        "nodeType": "VariableDeclaration",
                        "scope": 24069,
                        "src": "6213:10:59",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 24064,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "6213:6:59",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6212:12:59"
                  },
                  "scope": 24070,
                  "src": "6149:153:59",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 24071,
              "src": "267:6037:59",
              "usedErrors": [
                24283
              ]
            }
          ],
          "src": "46:6259:59"
        },
        "id": 59
      },
      "contracts/utils/TridentBatchable.sol": {
        "ast": {
          "absolutePath": "contracts/utils/TridentBatchable.sol",
          "exportedSymbols": {
            "TridentBatchable": [
              24150
            ]
          },
          "id": 24151,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 24072,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:60"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 24073,
                "nodeType": "StructuredDocumentation",
                "src": "72:68:60",
                "text": "@notice Generic contract exposing the batch call functionality."
              },
              "fullyImplemented": true,
              "id": 24150,
              "linearizedBaseContracts": [
                24150
              ],
              "name": "TridentBatchable",
              "nameLocation": "158:16:60",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 24148,
                    "nodeType": "Block",
                    "src": "802:555:60",
                    "statements": [
                      {
                        "expression": {
                          "id": 24090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 24083,
                            "name": "results",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24081,
                            "src": "812:7:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 24087,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24077,
                                  "src": "834:4:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "bytes calldata[] calldata"
                                  }
                                },
                                "id": 24088,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "834:11:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 24086,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "822:11:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 24084,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "826:5:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage_ptr",
                                    "typeString": "bytes"
                                  }
                                },
                                "id": 24085,
                                "nodeType": "ArrayTypeName",
                                "src": "826:7:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                                  "typeString": "bytes[]"
                                }
                              }
                            },
                            "id": 24089,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "822:24:60",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            }
                          },
                          "src": "812:34:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                            "typeString": "bytes memory[] memory"
                          }
                        },
                        "id": 24091,
                        "nodeType": "ExpressionStatement",
                        "src": "812:34:60"
                      },
                      {
                        "body": {
                          "id": 24146,
                          "nodeType": "Block",
                          "src": "899:452:60",
                          "statements": [
                            {
                              "assignments": [
                                24104,
                                24106
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 24104,
                                  "mutability": "mutable",
                                  "name": "success",
                                  "nameLocation": "919:7:60",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 24146,
                                  "src": "914:12:60",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 24103,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "914:4:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 24106,
                                  "mutability": "mutable",
                                  "name": "result",
                                  "nameLocation": "941:6:60",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 24146,
                                  "src": "928:19:60",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 24105,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "928:5:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 24116,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 24112,
                                      "name": "data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24077,
                                      "src": "978:4:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "bytes calldata[] calldata"
                                      }
                                    },
                                    "id": 24114,
                                    "indexExpression": {
                                      "id": 24113,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24093,
                                      "src": "983:1:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "978:7:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 24109,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "959:4:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_TridentBatchable_$24150",
                                          "typeString": "contract TridentBatchable"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_TridentBatchable_$24150",
                                          "typeString": "contract TridentBatchable"
                                        }
                                      ],
                                      "id": 24108,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "951:7:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 24107,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "951:7:60",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 24110,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "951:13:60",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 24111,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "delegatecall",
                                  "nodeType": "MemberAccess",
                                  "src": "951:26:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                    "typeString": "function (bytes memory) returns (bool,bytes memory)"
                                  }
                                },
                                "id": 24115,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "951:35:60",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "913:73:60"
                            },
                            {
                              "condition": {
                                "id": 24118,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "!",
                                "prefix": true,
                                "src": "1005:8:60",
                                "subExpression": {
                                  "id": 24117,
                                  "name": "success",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24104,
                                  "src": "1006:7:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 24139,
                              "nodeType": "IfStatement",
                              "src": "1001:306:60",
                              "trueBody": {
                                "id": 24138,
                                "nodeType": "Block",
                                "src": "1015:292:60",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 24122,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 24119,
                                          "name": "result",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24106,
                                          "src": "1117:6:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 24120,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "src": "1117:13:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "hexValue": "3638",
                                        "id": 24121,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1133:2:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_68_by_1",
                                          "typeString": "int_const 68"
                                        },
                                        "value": "68"
                                      },
                                      "src": "1117:18:60",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 24126,
                                    "nodeType": "IfStatement",
                                    "src": "1113:32:60",
                                    "trueBody": {
                                      "expression": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 24123,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "1137:6:60",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                                            "typeString": "function () pure"
                                          }
                                        },
                                        "id": 24124,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1137:8:60",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 24125,
                                      "nodeType": "ExpressionStatement",
                                      "src": "1137:8:60"
                                    }
                                  },
                                  {
                                    "AST": {
                                      "nodeType": "YulBlock",
                                      "src": "1172:67:60",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "1194:27:60",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "result",
                                                "nodeType": "YulIdentifier",
                                                "src": "1208:6:60"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1216:4:60",
                                                "type": "",
                                                "value": "0x04"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1204:3:60"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1204:17:60"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "result",
                                              "nodeType": "YulIdentifier",
                                              "src": "1194:6:60"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "evmVersion": "london",
                                    "externalReferences": [
                                      {
                                        "declaration": 24106,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "1194:6:60",
                                        "valueSize": 1
                                      },
                                      {
                                        "declaration": 24106,
                                        "isOffset": false,
                                        "isSlot": false,
                                        "src": "1208:6:60",
                                        "valueSize": 1
                                      }
                                    ],
                                    "id": 24127,
                                    "nodeType": "InlineAssembly",
                                    "src": "1163:76:60"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 24131,
                                              "name": "result",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 24106,
                                              "src": "1274:6:60",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            {
                                              "components": [
                                                {
                                                  "id": 24133,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "1283:6:60",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                    "typeString": "type(string storage pointer)"
                                                  },
                                                  "typeName": {
                                                    "id": 24132,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1283:6:60",
                                                    "typeDescriptions": {}
                                                  }
                                                }
                                              ],
                                              "id": 24134,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "1282:8:60",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                "typeString": "type(string storage pointer)"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              },
                                              {
                                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                "typeString": "type(string storage pointer)"
                                              }
                                            ],
                                            "expression": {
                                              "id": 24129,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -1,
                                              "src": "1263:3:60",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 24130,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "decode",
                                            "nodeType": "MemberAccess",
                                            "src": "1263:10:60",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                              "typeString": "function () pure"
                                            }
                                          },
                                          "id": 24135,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1263:28:60",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 24128,
                                        "name": "revert",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -19,
                                          -19
                                        ],
                                        "referencedDeclaration": -19,
                                        "src": "1256:6:60",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (string memory) pure"
                                        }
                                      },
                                      "id": 24136,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1256:36:60",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 24137,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1256:36:60"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 24144,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 24140,
                                    "name": "results",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24081,
                                    "src": "1321:7:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "bytes memory[] memory"
                                    }
                                  },
                                  "id": 24142,
                                  "indexExpression": {
                                    "id": 24141,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24093,
                                    "src": "1329:1:60",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1321:10:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 24143,
                                  "name": "result",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24106,
                                  "src": "1334:6:60",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "src": "1321:19:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 24145,
                              "nodeType": "ExpressionStatement",
                              "src": "1321:19:60"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 24099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 24096,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24093,
                            "src": "877:1:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 24097,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24077,
                              "src": "881:4:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "bytes calldata[] calldata"
                              }
                            },
                            "id": 24098,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "881:11:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "877:15:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 24147,
                        "initializationExpression": {
                          "assignments": [
                            24093
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 24093,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "870:1:60",
                              "nodeType": "VariableDeclaration",
                              "scope": 24147,
                              "src": "862:9:60",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 24092,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "862:7:60",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 24095,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 24094,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "874:1:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "862:13:60"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 24101,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "894:3:60",
                            "subExpression": {
                              "id": 24100,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24093,
                              "src": "894:1:60",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 24102,
                          "nodeType": "ExpressionStatement",
                          "src": "894:3:60"
                        },
                        "nodeType": "ForStatement",
                        "src": "857:494:60"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24074,
                    "nodeType": "StructuredDocumentation",
                    "src": "181:528:60",
                    "text": "@notice Provides batch function calls for this contract and returns the data from all of them if they all succeed.\n Adapted from https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol, License-Identifier: GPL-2.0-or-later.\n @dev The `msg.value` should not be trusted for any method callable from this function.\n @param data ABI-encoded params for each of the calls to make to this contract.\n @return results The results from each of the calls passed in via `data`."
                  },
                  "functionSelector": "1e897afb",
                  "id": 24149,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batch",
                  "nameLocation": "723:5:60",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24078,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24077,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "746:4:60",
                        "nodeType": "VariableDeclaration",
                        "scope": 24149,
                        "src": "729:21:60",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 24075,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "729:5:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 24076,
                          "nodeType": "ArrayTypeName",
                          "src": "729:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "728:23:60"
                  },
                  "returnParameters": {
                    "id": 24082,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24081,
                        "mutability": "mutable",
                        "name": "results",
                        "nameLocation": "793:7:60",
                        "nodeType": "VariableDeclaration",
                        "scope": 24149,
                        "src": "778:22:60",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 24079,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "778:5:60",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "id": 24080,
                          "nodeType": "ArrayTypeName",
                          "src": "778:7:60",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                            "typeString": "bytes[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "777:24:60"
                  },
                  "scope": 24150,
                  "src": "714:643:60",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 24151,
              "src": "140:1219:60",
              "usedErrors": []
            }
          ],
          "src": "46:1314:60"
        },
        "id": 60
      },
      "contracts/utils/TridentOwnable.sol": {
        "ast": {
          "absolutePath": "contracts/utils/TridentOwnable.sol",
          "exportedSymbols": {
            "TridentOwnable": [
              24278
            ]
          },
          "id": 24279,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 24152,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:61"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 24153,
                "nodeType": "StructuredDocumentation",
                "src": "72:183:61",
                "text": "@notice Trident access control contract.\n @author Adapted from https://github.com/boringcrypto/BoringSolidity/blob/master/contracts/BoringOwnable.sol, License-Identifier: MIT."
              },
              "fullyImplemented": true,
              "id": 24278,
              "linearizedBaseContracts": [
                24278
              ],
              "name": "TridentOwnable",
              "nameLocation": "264:14:61",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "functionSelector": "8da5cb5b",
                  "id": 24155,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "300:5:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24278,
                  "src": "285:20:61",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24154,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "285:7:61",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "e30c3978",
                  "id": 24157,
                  "mutability": "mutable",
                  "name": "pendingOwner",
                  "nameLocation": "326:12:61",
                  "nodeType": "VariableDeclaration",
                  "scope": 24278,
                  "src": "311:27:61",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24156,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "311:7:61",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "id": 24163,
                  "name": "TransferOwner",
                  "nameLocation": "351:13:61",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 24162,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24159,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "381:6:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 24163,
                        "src": "365:22:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24158,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "365:7:61",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24161,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "405:9:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 24163,
                        "src": "389:25:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24160,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "389:7:61",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "364:51:61"
                  },
                  "src": "345:71:61"
                },
                {
                  "anonymous": false,
                  "id": 24169,
                  "name": "TransferOwnerClaim",
                  "nameLocation": "427:18:61",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 24168,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24165,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "462:6:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 24169,
                        "src": "446:22:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24164,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "446:7:61",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24167,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "486:9:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 24169,
                        "src": "470:25:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24166,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "470:7:61",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "445:51:61"
                  },
                  "src": "421:76:61"
                },
                {
                  "body": {
                    "id": 24187,
                    "nodeType": "Block",
                    "src": "607:87:61",
                    "statements": [
                      {
                        "expression": {
                          "id": 24176,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 24173,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24155,
                            "src": "617:5:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 24174,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "625:3:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 24175,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "625:10:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "617:18:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 24177,
                        "nodeType": "ExpressionStatement",
                        "src": "617:18:61"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 24181,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "672:1:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 24180,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "664:7:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 24179,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "664:7:61",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 24182,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "664:10:61",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 24183,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "676:3:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 24184,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "676:10:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 24178,
                            "name": "TransferOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24163,
                            "src": "650:13:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 24185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "650:37:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24186,
                        "nodeType": "EmitStatement",
                        "src": "645:42:61"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24170,
                    "nodeType": "StructuredDocumentation",
                    "src": "503:85:61",
                    "text": "@notice Initialize and grant deployer account (`msg.sender`) `owner` access role."
                  },
                  "id": 24188,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24171,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "604:2:61"
                  },
                  "returnParameters": {
                    "id": 24172,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "607:0:61"
                  },
                  "scope": 24278,
                  "src": "593:101:61",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 24200,
                    "nodeType": "Block",
                    "src": "826:69:61",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 24195,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 24192,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "844:3:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 24193,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "844:10:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 24194,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24155,
                                "src": "858:5:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "844:19:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e4f545f4f574e4552",
                              "id": 24196,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "865:11:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2",
                                "typeString": "literal_string \"NOT_OWNER\""
                              },
                              "value": "NOT_OWNER"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d4d6719c9f6bf1f398a61e7ceb8dff26d48346602421236409d0fb0b222f65b2",
                                "typeString": "literal_string \"NOT_OWNER\""
                              }
                            ],
                            "id": 24191,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "836:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 24197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "836:41:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24198,
                        "nodeType": "ExpressionStatement",
                        "src": "836:41:61"
                      },
                      {
                        "id": 24199,
                        "nodeType": "PlaceholderStatement",
                        "src": "887:1:61"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24189,
                    "nodeType": "StructuredDocumentation",
                    "src": "700:100:61",
                    "text": "@notice Access control modifier that requires modified function to be called by `owner` account."
                  },
                  "id": 24201,
                  "name": "onlyOwner",
                  "nameLocation": "814:9:61",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 24190,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "823:2:61"
                  },
                  "src": "805:90:61",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24231,
                    "nodeType": "Block",
                    "src": "990:183:61",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 24209,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 24206,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "1008:3:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 24207,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "1008:10:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 24208,
                                "name": "pendingOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24157,
                                "src": "1022:12:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1008:26:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e4f545f50454e44494e475f4f574e4552",
                              "id": 24210,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1036:19:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c32fed941c8f9b2ff93bcaccab829b817fd09f04d9a6a923a1aca58967f5cc49",
                                "typeString": "literal_string \"NOT_PENDING_OWNER\""
                              },
                              "value": "NOT_PENDING_OWNER"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c32fed941c8f9b2ff93bcaccab829b817fd09f04d9a6a923a1aca58967f5cc49",
                                "typeString": "literal_string \"NOT_PENDING_OWNER\""
                              }
                            ],
                            "id": 24205,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1000:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 24211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1000:56:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24212,
                        "nodeType": "ExpressionStatement",
                        "src": "1000:56:61"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 24214,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24155,
                              "src": "1085:5:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 24215,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1092:3:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 24216,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1092:10:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 24213,
                            "name": "TransferOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24163,
                            "src": "1071:13:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 24217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1071:32:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24218,
                        "nodeType": "EmitStatement",
                        "src": "1066:37:61"
                      },
                      {
                        "expression": {
                          "id": 24222,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 24219,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24155,
                            "src": "1113:5:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 24220,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1121:3:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 24221,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "1121:10:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1113:18:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 24223,
                        "nodeType": "ExpressionStatement",
                        "src": "1113:18:61"
                      },
                      {
                        "expression": {
                          "id": 24229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 24224,
                            "name": "pendingOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24157,
                            "src": "1141:12:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 24227,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1164:1:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 24226,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1156:7:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 24225,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1156:7:61",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 24228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1156:10:61",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1141:25:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 24230,
                        "nodeType": "ExpressionStatement",
                        "src": "1141:25:61"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24202,
                    "nodeType": "StructuredDocumentation",
                    "src": "901:53:61",
                    "text": "@notice `pendingOwner` can claim `owner` account."
                  },
                  "functionSelector": "3bd1adec",
                  "id": 24232,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "claimOwner",
                  "nameLocation": "968:10:61",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24203,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "978:2:61"
                  },
                  "returnParameters": {
                    "id": 24204,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "990:0:61"
                  },
                  "scope": 24278,
                  "src": "959:214:61",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 24276,
                    "nodeType": "Block",
                    "src": "1428:298:61",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 24248,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 24243,
                                "name": "recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24235,
                                "src": "1446:9:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 24246,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1467:1:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 24245,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1459:7:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 24244,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1459:7:61",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 24247,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1459:10:61",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1446:23:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5a45524f5f41444452455353",
                              "id": 24249,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1471:14:61",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af",
                                "typeString": "literal_string \"ZERO_ADDRESS\""
                              },
                              "value": "ZERO_ADDRESS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_71869b3729b99fadce3ee30cb1aa2a0d639e6a2d24158c1ae1ae0059e81b72af",
                                "typeString": "literal_string \"ZERO_ADDRESS\""
                              }
                            ],
                            "id": 24242,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1438:7:61",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 24250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1438:48:61",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24251,
                        "nodeType": "ExpressionStatement",
                        "src": "1438:48:61"
                      },
                      {
                        "condition": {
                          "id": 24252,
                          "name": "direct",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24237,
                          "src": "1500:6:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 24274,
                          "nodeType": "Block",
                          "src": "1611:109:61",
                          "statements": [
                            {
                              "expression": {
                                "id": 24266,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 24264,
                                  "name": "pendingOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24157,
                                  "src": "1625:12:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 24265,
                                  "name": "recipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24235,
                                  "src": "1640:9:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "1625:24:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 24267,
                              "nodeType": "ExpressionStatement",
                              "src": "1625:24:61"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 24269,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "1687:3:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 24270,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "1687:10:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 24271,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24235,
                                    "src": "1699:9:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 24268,
                                  "name": "TransferOwnerClaim",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24169,
                                  "src": "1668:18:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (address,address)"
                                  }
                                },
                                "id": 24272,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1668:41:61",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 24273,
                              "nodeType": "EmitStatement",
                              "src": "1663:46:61"
                            }
                          ]
                        },
                        "id": 24275,
                        "nodeType": "IfStatement",
                        "src": "1496:224:61",
                        "trueBody": {
                          "id": 24263,
                          "nodeType": "Block",
                          "src": "1508:97:61",
                          "statements": [
                            {
                              "expression": {
                                "id": 24255,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 24253,
                                  "name": "owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24155,
                                  "src": "1522:5:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 24254,
                                  "name": "recipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24235,
                                  "src": "1530:9:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "1522:17:61",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 24256,
                              "nodeType": "ExpressionStatement",
                              "src": "1522:17:61"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 24258,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "1572:3:61",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 24259,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "1572:10:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 24260,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 24235,
                                    "src": "1584:9:61",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 24257,
                                  "name": "TransferOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24163,
                                  "src": "1558:13:61",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                    "typeString": "function (address,address)"
                                  }
                                },
                                "id": 24261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1558:36:61",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 24262,
                              "nodeType": "EmitStatement",
                              "src": "1553:41:61"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24233,
                    "nodeType": "StructuredDocumentation",
                    "src": "1179:170:61",
                    "text": "@notice Transfer `owner` account.\n @param recipient Account granted `owner` access control.\n @param direct If 'true', ownership is directly transferred."
                  },
                  "functionSelector": "cf81afaa",
                  "id": 24277,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "id": 24240,
                      "kind": "modifierInvocation",
                      "modifierName": {
                        "id": 24239,
                        "name": "onlyOwner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 24201,
                        "src": "1418:9:61"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1418:9:61"
                    }
                  ],
                  "name": "transferOwner",
                  "nameLocation": "1363:13:61",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24238,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24235,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nameLocation": "1385:9:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 24277,
                        "src": "1377:17:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24234,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1377:7:61",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24237,
                        "mutability": "mutable",
                        "name": "direct",
                        "nameLocation": "1401:6:61",
                        "nodeType": "VariableDeclaration",
                        "scope": 24277,
                        "src": "1396:11:61",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24236,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1396:4:61",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1376:32:61"
                  },
                  "returnParameters": {
                    "id": 24241,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1428:0:61"
                  },
                  "scope": 24278,
                  "src": "1354:372:61",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 24279,
              "src": "255:1473:61",
              "usedErrors": []
            }
          ],
          "src": "46:1683:61"
        },
        "id": 61
      },
      "contracts/utils/TridentPermit.sol": {
        "ast": {
          "absolutePath": "contracts/utils/TridentPermit.sol",
          "exportedSymbols": {
            "TridentPermit": [
              24373
            ]
          },
          "id": 24374,
          "license": "GPL-3.0-or-later",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 24280,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "46:24:62"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 24281,
                "nodeType": "StructuredDocumentation",
                "src": "72:64:62",
                "text": "@notice Generic contract exposing the permit functionality."
              },
              "fullyImplemented": true,
              "id": 24373,
              "linearizedBaseContracts": [
                24373
              ],
              "name": "TridentPermit",
              "nameLocation": "154:13:62",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 24283,
                  "name": "PermitFailed",
                  "nameLocation": "180:12:62",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 24282,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "192:2:62"
                  },
                  "src": "174:21:62"
                },
                {
                  "body": {
                    "id": 24326,
                    "nodeType": "Block",
                    "src": "804:247:62",
                    "statements": [
                      {
                        "assignments": [
                          24300,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24300,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "820:7:62",
                            "nodeType": "VariableDeclaration",
                            "scope": 24326,
                            "src": "815:12:62",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 24299,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "815:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 24319,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30786435303561636366",
                                  "id": 24305,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "867:10:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_3573918927_by_1",
                                    "typeString": "int_const 3573918927"
                                  },
                                  "value": "0xd505accf"
                                },
                                {
                                  "expression": {
                                    "id": 24306,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "879:3:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 24307,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "879:10:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 24310,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "899:4:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_TridentPermit_$24373",
                                        "typeString": "contract TridentPermit"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_TridentPermit_$24373",
                                        "typeString": "contract TridentPermit"
                                      }
                                    ],
                                    "id": 24309,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "891:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 24308,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "891:7:62",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 24311,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "891:13:62",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 24312,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24288,
                                  "src": "906:6:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 24313,
                                  "name": "deadline",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24290,
                                  "src": "914:8:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 24314,
                                  "name": "v",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24292,
                                  "src": "924:1:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                {
                                  "id": 24315,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24294,
                                  "src": "927:1:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 24316,
                                  "name": "s",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24296,
                                  "src": "930:1:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_3573918927_by_1",
                                    "typeString": "int_const 3573918927"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 24303,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "844:3:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "844:22:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 24317,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "844:88:62",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 24301,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24286,
                              "src": "833:5:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 24302,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "src": "833:10:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 24318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "833:100:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "814:119:62"
                      },
                      {
                        "condition": {
                          "id": 24321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "1013:8:62",
                          "subExpression": {
                            "id": 24320,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24300,
                            "src": "1014:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 24325,
                        "nodeType": "IfStatement",
                        "src": "1009:35:62",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 24322,
                              "name": "PermitFailed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24283,
                              "src": "1030:12:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 24323,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1030:14:62",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 24324,
                          "nodeType": "RevertStatement",
                          "src": "1023:21:62"
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24284,
                    "nodeType": "StructuredDocumentation",
                    "src": "201:435:62",
                    "text": "@notice Provides EIP-2612 signed approval for this contract to spend user tokens.\n @param token Address of ERC-20 token.\n @param amount Token amount to grant spending right over.\n @param deadline Termination for signed approval (UTC timestamp in seconds).\n @param v The recovery byte of the signature.\n @param r Half of the ECDSA signature pair.\n @param s Half of the ECDSA signature pair."
                  },
                  "functionSelector": "a9b62c23",
                  "id": 24327,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permitThis",
                  "nameLocation": "650:10:62",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24297,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24286,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "678:5:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 24327,
                        "src": "670:13:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24285,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "670:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24288,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "701:6:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 24327,
                        "src": "693:14:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24287,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "693:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24290,
                        "mutability": "mutable",
                        "name": "deadline",
                        "nameLocation": "725:8:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 24327,
                        "src": "717:16:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24289,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "717:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24292,
                        "mutability": "mutable",
                        "name": "v",
                        "nameLocation": "749:1:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 24327,
                        "src": "743:7:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 24291,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "743:5:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24294,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "768:1:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 24327,
                        "src": "760:9:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 24293,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "760:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24296,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "787:1:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 24327,
                        "src": "779:9:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 24295,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "779:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "660:134:62"
                  },
                  "returnParameters": {
                    "id": 24298,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "804:0:62"
                  },
                  "scope": 24373,
                  "src": "641:410:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 24371,
                    "nodeType": "Block",
                    "src": "1679:255:62",
                    "statements": [
                      {
                        "assignments": [
                          24344,
                          null
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24344,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "1695:7:62",
                            "nodeType": "VariableDeclaration",
                            "scope": 24371,
                            "src": "1690:12:62",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 24343,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "1690:4:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          },
                          null
                        ],
                        "id": 24364,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30783866636261663063",
                                  "id": 24349,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1742:10:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2412490508_by_1",
                                    "typeString": "int_const 2412490508"
                                  },
                                  "value": "0x8fcbaf0c"
                                },
                                {
                                  "expression": {
                                    "id": 24350,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "1754:3:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 24351,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "1754:10:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 24354,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "1774:4:62",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_TridentPermit_$24373",
                                        "typeString": "contract TridentPermit"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_TridentPermit_$24373",
                                        "typeString": "contract TridentPermit"
                                      }
                                    ],
                                    "id": 24353,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1766:7:62",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 24352,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1766:7:62",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 24355,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1766:13:62",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 24356,
                                  "name": "nonce",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24332,
                                  "src": "1781:5:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 24357,
                                  "name": "expiry",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24334,
                                  "src": "1788:6:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "hexValue": "74727565",
                                  "id": 24358,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1796:4:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                {
                                  "id": 24359,
                                  "name": "v",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24336,
                                  "src": "1802:1:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                {
                                  "id": 24360,
                                  "name": "r",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24338,
                                  "src": "1805:1:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 24361,
                                  "name": "s",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24340,
                                  "src": "1808:1:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_2412490508_by_1",
                                    "typeString": "int_const 2412490508"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 24347,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1719:3:62",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24348,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "1719:22:62",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 24362,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1719:91:62",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 24345,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24330,
                              "src": "1708:5:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 24346,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "src": "1708:10:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 24363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1708:103:62",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "tuple(bool,bytes memory)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1689:122:62"
                      },
                      {
                        "condition": {
                          "id": 24366,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "1896:8:62",
                          "subExpression": {
                            "id": 24365,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24344,
                            "src": "1897:7:62",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 24370,
                        "nodeType": "IfStatement",
                        "src": "1892:35:62",
                        "trueBody": {
                          "errorCall": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 24367,
                              "name": "PermitFailed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24283,
                              "src": "1913:12:62",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 24368,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1913:14:62",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 24369,
                          "nodeType": "RevertStatement",
                          "src": "1906:21:62"
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 24328,
                    "nodeType": "StructuredDocumentation",
                    "src": "1057:450:62",
                    "text": "@notice Provides DAI-derived signed approval for this contract to spend user tokens.\n @param token Address of ERC-20 token.\n @param nonce Token owner's nonce - increases at each call to {permit}.\n @param expiry Termination for signed approval - UTC timestamp in seconds.\n @param v The recovery byte of the signature.\n @param r Half of the ECDSA signature pair.\n @param s Half of the ECDSA signature pair."
                  },
                  "functionSelector": "77631981",
                  "id": 24372,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "permitThisAllowed",
                  "nameLocation": "1521:17:62",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24341,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24330,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "1556:5:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 24372,
                        "src": "1548:13:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24329,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1548:7:62",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24332,
                        "mutability": "mutable",
                        "name": "nonce",
                        "nameLocation": "1579:5:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 24372,
                        "src": "1571:13:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24331,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1571:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24334,
                        "mutability": "mutable",
                        "name": "expiry",
                        "nameLocation": "1602:6:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 24372,
                        "src": "1594:14:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24333,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1594:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24336,
                        "mutability": "mutable",
                        "name": "v",
                        "nameLocation": "1624:1:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 24372,
                        "src": "1618:7:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 24335,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "1618:5:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24338,
                        "mutability": "mutable",
                        "name": "r",
                        "nameLocation": "1643:1:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 24372,
                        "src": "1635:9:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 24337,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1635:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 24340,
                        "mutability": "mutable",
                        "name": "s",
                        "nameLocation": "1662:1:62",
                        "nodeType": "VariableDeclaration",
                        "scope": 24372,
                        "src": "1654:9:62",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 24339,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1654:7:62",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1538:131:62"
                  },
                  "returnParameters": {
                    "id": 24342,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1679:0:62"
                  },
                  "scope": 24373,
                  "src": "1512:422:62",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 24374,
              "src": "136:1800:62",
              "usedErrors": [
                24283
              ]
            }
          ],
          "src": "46:1891:62"
        },
        "id": 62
      },
      "hardhat/console.sol": {
        "ast": {
          "absolutePath": "hardhat/console.sol",
          "exportedSymbols": {
            "console": [
              32437
            ]
          },
          "id": 32438,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 24375,
              "literals": [
                "solidity",
                ">=",
                "0.4",
                ".22",
                "<",
                "0.9",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:33:63"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 32437,
              "linearizedBaseContracts": [
                32437
              ],
              "name": "console",
              "nameLocation": "75:7:63",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 24381,
                  "mutability": "constant",
                  "name": "CONSOLE_ADDRESS",
                  "nameLocation": "103:15:63",
                  "nodeType": "VariableDeclaration",
                  "scope": 32437,
                  "src": "86:86:63",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24376,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "86:7:63",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "307830303030303030303030303030303030303036333646366537333646366336353265366336663637",
                        "id": 24379,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "129:42:63",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "value": "0x000000000000000000636F6e736F6c652e6c6f67"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 24378,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "121:7:63",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 24377,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "121:7:63",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 24380,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "121:51:63",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24396,
                    "nodeType": "Block",
                    "src": "236:228:63",
                    "statements": [
                      {
                        "assignments": [
                          24387
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24387,
                            "mutability": "mutable",
                            "name": "payloadLength",
                            "nameLocation": "248:13:63",
                            "nodeType": "VariableDeclaration",
                            "scope": 24396,
                            "src": "240:21:63",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 24386,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "240:7:63",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 24390,
                        "initialValue": {
                          "expression": {
                            "id": 24388,
                            "name": "payload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24383,
                            "src": "264:7:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 24389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "264:14:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "240:38:63"
                      },
                      {
                        "assignments": [
                          24392
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 24392,
                            "mutability": "mutable",
                            "name": "consoleAddress",
                            "nameLocation": "290:14:63",
                            "nodeType": "VariableDeclaration",
                            "scope": 24396,
                            "src": "282:22:63",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 24391,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "282:7:63",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 24394,
                        "initialValue": {
                          "id": 24393,
                          "name": "CONSOLE_ADDRESS",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24381,
                          "src": "307:15:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "282:40:63"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "335:126:63",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "340:36:63",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "payload",
                                    "nodeType": "YulIdentifier",
                                    "src": "364:7:63"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "373:2:63",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "360:3:63"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "360:16:63"
                              },
                              "variables": [
                                {
                                  "name": "payloadStart",
                                  "nodeType": "YulTypedName",
                                  "src": "344:12:63",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "380:77:63",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "gas",
                                      "nodeType": "YulIdentifier",
                                      "src": "400:3:63"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "400:5:63"
                                  },
                                  {
                                    "name": "consoleAddress",
                                    "nodeType": "YulIdentifier",
                                    "src": "407:14:63"
                                  },
                                  {
                                    "name": "payloadStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "423:12:63"
                                  },
                                  {
                                    "name": "payloadLength",
                                    "nodeType": "YulIdentifier",
                                    "src": "437:13:63"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "452:1:63",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "455:1:63",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "staticcall",
                                  "nodeType": "YulIdentifier",
                                  "src": "389:10:63"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "389:68:63"
                              },
                              "variables": [
                                {
                                  "name": "r",
                                  "nodeType": "YulTypedName",
                                  "src": "384:1:63",
                                  "type": ""
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 24392,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "407:14:63",
                            "valueSize": 1
                          },
                          {
                            "declaration": 24383,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "364:7:63",
                            "valueSize": 1
                          },
                          {
                            "declaration": 24387,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "437:13:63",
                            "valueSize": 1
                          }
                        ],
                        "id": 24395,
                        "nodeType": "InlineAssembly",
                        "src": "326:135:63"
                      }
                    ]
                  },
                  "id": 24397,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_sendLogPayload",
                  "nameLocation": "185:15:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24384,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24383,
                        "mutability": "mutable",
                        "name": "payload",
                        "nameLocation": "214:7:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24397,
                        "src": "201:20:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 24382,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "201:5:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "200:22:63"
                  },
                  "returnParameters": {
                    "id": 24385,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "236:0:63"
                  },
                  "scope": 32437,
                  "src": "176:288:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 24407,
                    "nodeType": "Block",
                    "src": "496:57:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672829",
                                  "id": 24403,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "540:7:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_51973ec9d4c1929bdd5b149c064d46aee47e92a7e2bb5f7a20c7b9cfb0d13b39",
                                    "typeString": "literal_string \"log()\""
                                  },
                                  "value": "log()"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_51973ec9d4c1929bdd5b149c064d46aee47e92a7e2bb5f7a20c7b9cfb0d13b39",
                                    "typeString": "literal_string \"log()\""
                                  }
                                ],
                                "expression": {
                                  "id": 24401,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "516:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24402,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "516:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24404,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "516:32:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24400,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "500:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "500:49:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24406,
                        "nodeType": "ExpressionStatement",
                        "src": "500:49:63"
                      }
                    ]
                  },
                  "id": 24408,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "476:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24398,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "479:2:63"
                  },
                  "returnParameters": {
                    "id": 24399,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "496:0:63"
                  },
                  "scope": 32437,
                  "src": "467:86:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24421,
                    "nodeType": "Block",
                    "src": "594:64:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728696e7429",
                                  "id": 24416,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "638:10:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_4e0c1d1dcf573259576e2a7e591d366143f88fb7f7e57df09852da9c36797f2e",
                                    "typeString": "literal_string \"log(int)\""
                                  },
                                  "value": "log(int)"
                                },
                                {
                                  "id": 24417,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24410,
                                  "src": "650:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_4e0c1d1dcf573259576e2a7e591d366143f88fb7f7e57df09852da9c36797f2e",
                                    "typeString": "literal_string \"log(int)\""
                                  },
                                  {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                ],
                                "expression": {
                                  "id": 24414,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "614:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24415,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "614:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24418,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "614:39:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24413,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "598:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24419,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "598:56:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24420,
                        "nodeType": "ExpressionStatement",
                        "src": "598:56:63"
                      }
                    ]
                  },
                  "id": 24422,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logInt",
                  "nameLocation": "565:6:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24411,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24410,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "576:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24422,
                        "src": "572:6:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        },
                        "typeName": {
                          "id": 24409,
                          "name": "int",
                          "nodeType": "ElementaryTypeName",
                          "src": "572:3:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "571:8:63"
                  },
                  "returnParameters": {
                    "id": 24412,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "594:0:63"
                  },
                  "scope": 32437,
                  "src": "556:102:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24435,
                    "nodeType": "Block",
                    "src": "701:65:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e7429",
                                  "id": 24430,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "745:11:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f5b1bba92d8f98cf25e27c94d7fc7cbfbae95a49dfe5ab0cdf64ddd7181bb984",
                                    "typeString": "literal_string \"log(uint)\""
                                  },
                                  "value": "log(uint)"
                                },
                                {
                                  "id": 24431,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24424,
                                  "src": "758:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_f5b1bba92d8f98cf25e27c94d7fc7cbfbae95a49dfe5ab0cdf64ddd7181bb984",
                                    "typeString": "literal_string \"log(uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 24428,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "721:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "721:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "721:40:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24427,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "705:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "705:57:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24434,
                        "nodeType": "ExpressionStatement",
                        "src": "705:57:63"
                      }
                    ]
                  },
                  "id": 24436,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logUint",
                  "nameLocation": "670:7:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24425,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24424,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "683:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24436,
                        "src": "678:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24423,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "678:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "677:9:63"
                  },
                  "returnParameters": {
                    "id": 24426,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "701:0:63"
                  },
                  "scope": 32437,
                  "src": "661:105:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24449,
                    "nodeType": "Block",
                    "src": "820:67:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e6729",
                                  "id": 24444,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "864:13:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50",
                                    "typeString": "literal_string \"log(string)\""
                                  },
                                  "value": "log(string)"
                                },
                                {
                                  "id": 24445,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24438,
                                  "src": "879:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50",
                                    "typeString": "literal_string \"log(string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 24442,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "840:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24443,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "840:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24446,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "840:42:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24441,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "824:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "824:59:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24448,
                        "nodeType": "ExpressionStatement",
                        "src": "824:59:63"
                      }
                    ]
                  },
                  "id": 24450,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logString",
                  "nameLocation": "778:9:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24439,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24438,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "802:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24450,
                        "src": "788:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 24437,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "788:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "787:18:63"
                  },
                  "returnParameters": {
                    "id": 24440,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "820:0:63"
                  },
                  "scope": 32437,
                  "src": "769:118:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24463,
                    "nodeType": "Block",
                    "src": "930:65:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c29",
                                  "id": 24458,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "974:11:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_32458eed3feca62a69292a55ca8a755ae4e6cdc57a38d15c298330064467fdd7",
                                    "typeString": "literal_string \"log(bool)\""
                                  },
                                  "value": "log(bool)"
                                },
                                {
                                  "id": 24459,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24452,
                                  "src": "987:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_32458eed3feca62a69292a55ca8a755ae4e6cdc57a38d15c298330064467fdd7",
                                    "typeString": "literal_string \"log(bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 24456,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "950:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24457,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "950:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24460,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "950:40:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24455,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "934:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24461,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "934:57:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24462,
                        "nodeType": "ExpressionStatement",
                        "src": "934:57:63"
                      }
                    ]
                  },
                  "id": 24464,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBool",
                  "nameLocation": "899:7:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24453,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24452,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "912:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24464,
                        "src": "907:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24451,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "907:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "906:9:63"
                  },
                  "returnParameters": {
                    "id": 24454,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "930:0:63"
                  },
                  "scope": 32437,
                  "src": "890:105:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24477,
                    "nodeType": "Block",
                    "src": "1044:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286164647265737329",
                                  "id": 24472,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1088:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_2c2ecbc2212ac38c2f9ec89aa5fcef7f532a5db24dbf7cad1f48bc82843b7428",
                                    "typeString": "literal_string \"log(address)\""
                                  },
                                  "value": "log(address)"
                                },
                                {
                                  "id": 24473,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24466,
                                  "src": "1104:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_2c2ecbc2212ac38c2f9ec89aa5fcef7f532a5db24dbf7cad1f48bc82843b7428",
                                    "typeString": "literal_string \"log(address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 24470,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1064:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24471,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "1064:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24474,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1064:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24469,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "1048:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1048:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24476,
                        "nodeType": "ExpressionStatement",
                        "src": "1048:60:63"
                      }
                    ]
                  },
                  "id": 24478,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logAddress",
                  "nameLocation": "1007:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24467,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24466,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "1026:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24478,
                        "src": "1018:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24465,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1018:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1017:12:63"
                  },
                  "returnParameters": {
                    "id": 24468,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1044:0:63"
                  },
                  "scope": 32437,
                  "src": "998:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24491,
                    "nodeType": "Block",
                    "src": "1164:66:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728627974657329",
                                  "id": 24486,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1208:12:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_0be77f5642494da7d212b92a3472c4f471abb24e17467f41788e7de7915d6238",
                                    "typeString": "literal_string \"log(bytes)\""
                                  },
                                  "value": "log(bytes)"
                                },
                                {
                                  "id": 24487,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24480,
                                  "src": "1222:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_0be77f5642494da7d212b92a3472c4f471abb24e17467f41788e7de7915d6238",
                                    "typeString": "literal_string \"log(bytes)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "id": 24484,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1184:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24485,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "1184:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24488,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1184:41:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24483,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "1168:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1168:58:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24490,
                        "nodeType": "ExpressionStatement",
                        "src": "1168:58:63"
                      }
                    ]
                  },
                  "id": 24492,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes",
                  "nameLocation": "1124:8:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24481,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24480,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "1146:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24492,
                        "src": "1133:15:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 24479,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1133:5:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1132:17:63"
                  },
                  "returnParameters": {
                    "id": 24482,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1164:0:63"
                  },
                  "scope": 32437,
                  "src": "1115:115:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24505,
                    "nodeType": "Block",
                    "src": "1277:67:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672862797465733129",
                                  "id": 24500,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1321:13:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6e18a1285e3dfba09579e846ff83d5e4ffae1b869c8fc4323752bab794e41041",
                                    "typeString": "literal_string \"log(bytes1)\""
                                  },
                                  "value": "log(bytes1)"
                                },
                                {
                                  "id": 24501,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24494,
                                  "src": "1336:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_6e18a1285e3dfba09579e846ff83d5e4ffae1b869c8fc4323752bab794e41041",
                                    "typeString": "literal_string \"log(bytes1)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                ],
                                "expression": {
                                  "id": 24498,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1297:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24499,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "1297:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24502,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1297:42:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24497,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "1281:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1281:59:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24504,
                        "nodeType": "ExpressionStatement",
                        "src": "1281:59:63"
                      }
                    ]
                  },
                  "id": 24506,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes1",
                  "nameLocation": "1242:9:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24495,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24494,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "1259:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24506,
                        "src": "1252:9:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes1",
                          "typeString": "bytes1"
                        },
                        "typeName": {
                          "id": 24493,
                          "name": "bytes1",
                          "nodeType": "ElementaryTypeName",
                          "src": "1252:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1251:11:63"
                  },
                  "returnParameters": {
                    "id": 24496,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1277:0:63"
                  },
                  "scope": 32437,
                  "src": "1233:111:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24519,
                    "nodeType": "Block",
                    "src": "1391:67:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672862797465733229",
                                  "id": 24514,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1435:13:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e9b622960ff3a0e86d35e876bfeba445fab6c5686604aa116c47c1e106921224",
                                    "typeString": "literal_string \"log(bytes2)\""
                                  },
                                  "value": "log(bytes2)"
                                },
                                {
                                  "id": 24515,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24508,
                                  "src": "1450:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes2",
                                    "typeString": "bytes2"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_e9b622960ff3a0e86d35e876bfeba445fab6c5686604aa116c47c1e106921224",
                                    "typeString": "literal_string \"log(bytes2)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes2",
                                    "typeString": "bytes2"
                                  }
                                ],
                                "expression": {
                                  "id": 24512,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1411:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24513,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "1411:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24516,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1411:42:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24511,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "1395:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1395:59:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24518,
                        "nodeType": "ExpressionStatement",
                        "src": "1395:59:63"
                      }
                    ]
                  },
                  "id": 24520,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes2",
                  "nameLocation": "1356:9:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24509,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24508,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "1373:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24520,
                        "src": "1366:9:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        },
                        "typeName": {
                          "id": 24507,
                          "name": "bytes2",
                          "nodeType": "ElementaryTypeName",
                          "src": "1366:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes2",
                            "typeString": "bytes2"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1365:11:63"
                  },
                  "returnParameters": {
                    "id": 24510,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1391:0:63"
                  },
                  "scope": 32437,
                  "src": "1347:111:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24533,
                    "nodeType": "Block",
                    "src": "1505:67:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672862797465733329",
                                  "id": 24528,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1549:13:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_2d8349266851a1d92746f90a9696920643311d6bf462d9fa11e69718a636cbee",
                                    "typeString": "literal_string \"log(bytes3)\""
                                  },
                                  "value": "log(bytes3)"
                                },
                                {
                                  "id": 24529,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24522,
                                  "src": "1564:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes3",
                                    "typeString": "bytes3"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_2d8349266851a1d92746f90a9696920643311d6bf462d9fa11e69718a636cbee",
                                    "typeString": "literal_string \"log(bytes3)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes3",
                                    "typeString": "bytes3"
                                  }
                                ],
                                "expression": {
                                  "id": 24526,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1525:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24527,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "1525:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24530,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1525:42:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24525,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "1509:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24531,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1509:59:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24532,
                        "nodeType": "ExpressionStatement",
                        "src": "1509:59:63"
                      }
                    ]
                  },
                  "id": 24534,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes3",
                  "nameLocation": "1470:9:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24523,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24522,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "1487:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24534,
                        "src": "1480:9:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes3",
                          "typeString": "bytes3"
                        },
                        "typeName": {
                          "id": 24521,
                          "name": "bytes3",
                          "nodeType": "ElementaryTypeName",
                          "src": "1480:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes3",
                            "typeString": "bytes3"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1479:11:63"
                  },
                  "returnParameters": {
                    "id": 24524,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1505:0:63"
                  },
                  "scope": 32437,
                  "src": "1461:111:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24547,
                    "nodeType": "Block",
                    "src": "1619:67:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672862797465733429",
                                  "id": 24542,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1663:13:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e05f48d17f80c0f06e82dc14f4be9f0f654dde2e722a8d8796ad7e07f5308d55",
                                    "typeString": "literal_string \"log(bytes4)\""
                                  },
                                  "value": "log(bytes4)"
                                },
                                {
                                  "id": 24543,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24536,
                                  "src": "1678:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_e05f48d17f80c0f06e82dc14f4be9f0f654dde2e722a8d8796ad7e07f5308d55",
                                    "typeString": "literal_string \"log(bytes4)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "expression": {
                                  "id": 24540,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1639:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24541,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "1639:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24544,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1639:42:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24539,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "1623:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1623:59:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24546,
                        "nodeType": "ExpressionStatement",
                        "src": "1623:59:63"
                      }
                    ]
                  },
                  "id": 24548,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes4",
                  "nameLocation": "1584:9:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24537,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24536,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "1601:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24548,
                        "src": "1594:9:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 24535,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1594:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1593:11:63"
                  },
                  "returnParameters": {
                    "id": 24538,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1619:0:63"
                  },
                  "scope": 32437,
                  "src": "1575:111:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24561,
                    "nodeType": "Block",
                    "src": "1733:67:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672862797465733529",
                                  "id": 24556,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1777:13:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a684808d222f8a67c08dd13085391d5e9d1825d9fb6e2da44a91b1a07d07401a",
                                    "typeString": "literal_string \"log(bytes5)\""
                                  },
                                  "value": "log(bytes5)"
                                },
                                {
                                  "id": 24557,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24550,
                                  "src": "1792:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes5",
                                    "typeString": "bytes5"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a684808d222f8a67c08dd13085391d5e9d1825d9fb6e2da44a91b1a07d07401a",
                                    "typeString": "literal_string \"log(bytes5)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes5",
                                    "typeString": "bytes5"
                                  }
                                ],
                                "expression": {
                                  "id": 24554,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1753:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24555,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "1753:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24558,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1753:42:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24553,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "1737:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24559,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1737:59:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24560,
                        "nodeType": "ExpressionStatement",
                        "src": "1737:59:63"
                      }
                    ]
                  },
                  "id": 24562,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes5",
                  "nameLocation": "1698:9:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24551,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24550,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "1715:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24562,
                        "src": "1708:9:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes5",
                          "typeString": "bytes5"
                        },
                        "typeName": {
                          "id": 24549,
                          "name": "bytes5",
                          "nodeType": "ElementaryTypeName",
                          "src": "1708:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes5",
                            "typeString": "bytes5"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1707:11:63"
                  },
                  "returnParameters": {
                    "id": 24552,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1733:0:63"
                  },
                  "scope": 32437,
                  "src": "1689:111:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24575,
                    "nodeType": "Block",
                    "src": "1847:67:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672862797465733629",
                                  "id": 24570,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1891:13:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_ae84a5910824668818be6031303edf0f6f3694b35d5e6f9683950d57ef12d330",
                                    "typeString": "literal_string \"log(bytes6)\""
                                  },
                                  "value": "log(bytes6)"
                                },
                                {
                                  "id": 24571,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24564,
                                  "src": "1906:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes6",
                                    "typeString": "bytes6"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_ae84a5910824668818be6031303edf0f6f3694b35d5e6f9683950d57ef12d330",
                                    "typeString": "literal_string \"log(bytes6)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes6",
                                    "typeString": "bytes6"
                                  }
                                ],
                                "expression": {
                                  "id": 24568,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1867:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24569,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "1867:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24572,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1867:42:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24567,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "1851:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24573,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1851:59:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24574,
                        "nodeType": "ExpressionStatement",
                        "src": "1851:59:63"
                      }
                    ]
                  },
                  "id": 24576,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes6",
                  "nameLocation": "1812:9:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24565,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24564,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "1829:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24576,
                        "src": "1822:9:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes6",
                          "typeString": "bytes6"
                        },
                        "typeName": {
                          "id": 24563,
                          "name": "bytes6",
                          "nodeType": "ElementaryTypeName",
                          "src": "1822:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes6",
                            "typeString": "bytes6"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1821:11:63"
                  },
                  "returnParameters": {
                    "id": 24566,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1847:0:63"
                  },
                  "scope": 32437,
                  "src": "1803:111:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24589,
                    "nodeType": "Block",
                    "src": "1961:67:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672862797465733729",
                                  "id": 24584,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2005:13:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_4ed57e28813457436949e4ec0a834b3c8262cd6cebd21953ee0da3400ce2de29",
                                    "typeString": "literal_string \"log(bytes7)\""
                                  },
                                  "value": "log(bytes7)"
                                },
                                {
                                  "id": 24585,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24578,
                                  "src": "2020:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes7",
                                    "typeString": "bytes7"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_4ed57e28813457436949e4ec0a834b3c8262cd6cebd21953ee0da3400ce2de29",
                                    "typeString": "literal_string \"log(bytes7)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes7",
                                    "typeString": "bytes7"
                                  }
                                ],
                                "expression": {
                                  "id": 24582,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1981:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24583,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "1981:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1981:42:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24581,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "1965:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1965:59:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24588,
                        "nodeType": "ExpressionStatement",
                        "src": "1965:59:63"
                      }
                    ]
                  },
                  "id": 24590,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes7",
                  "nameLocation": "1926:9:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24579,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24578,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "1943:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24590,
                        "src": "1936:9:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes7",
                          "typeString": "bytes7"
                        },
                        "typeName": {
                          "id": 24577,
                          "name": "bytes7",
                          "nodeType": "ElementaryTypeName",
                          "src": "1936:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes7",
                            "typeString": "bytes7"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1935:11:63"
                  },
                  "returnParameters": {
                    "id": 24580,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1961:0:63"
                  },
                  "scope": 32437,
                  "src": "1917:111:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24603,
                    "nodeType": "Block",
                    "src": "2075:67:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672862797465733829",
                                  "id": 24598,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2119:13:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_4f84252e5b28e1a0064346c7cd13650e2dd6020728ca468281bb2a28b42654b3",
                                    "typeString": "literal_string \"log(bytes8)\""
                                  },
                                  "value": "log(bytes8)"
                                },
                                {
                                  "id": 24599,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24592,
                                  "src": "2134:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes8",
                                    "typeString": "bytes8"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_4f84252e5b28e1a0064346c7cd13650e2dd6020728ca468281bb2a28b42654b3",
                                    "typeString": "literal_string \"log(bytes8)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes8",
                                    "typeString": "bytes8"
                                  }
                                ],
                                "expression": {
                                  "id": 24596,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2095:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24597,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "2095:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24600,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2095:42:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24595,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "2079:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24601,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2079:59:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24602,
                        "nodeType": "ExpressionStatement",
                        "src": "2079:59:63"
                      }
                    ]
                  },
                  "id": 24604,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes8",
                  "nameLocation": "2040:9:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24593,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24592,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "2057:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24604,
                        "src": "2050:9:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes8",
                          "typeString": "bytes8"
                        },
                        "typeName": {
                          "id": 24591,
                          "name": "bytes8",
                          "nodeType": "ElementaryTypeName",
                          "src": "2050:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes8",
                            "typeString": "bytes8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2049:11:63"
                  },
                  "returnParameters": {
                    "id": 24594,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2075:0:63"
                  },
                  "scope": 32437,
                  "src": "2031:111:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24617,
                    "nodeType": "Block",
                    "src": "2189:67:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672862797465733929",
                                  "id": 24612,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2233:13:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_90bd8cd0463fe91d31e59db57ee4cf8d778374c422b4b50e841266d9c2cc6667",
                                    "typeString": "literal_string \"log(bytes9)\""
                                  },
                                  "value": "log(bytes9)"
                                },
                                {
                                  "id": 24613,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24606,
                                  "src": "2248:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes9",
                                    "typeString": "bytes9"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_90bd8cd0463fe91d31e59db57ee4cf8d778374c422b4b50e841266d9c2cc6667",
                                    "typeString": "literal_string \"log(bytes9)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes9",
                                    "typeString": "bytes9"
                                  }
                                ],
                                "expression": {
                                  "id": 24610,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2209:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24611,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "2209:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24614,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2209:42:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24609,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "2193:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24615,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2193:59:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24616,
                        "nodeType": "ExpressionStatement",
                        "src": "2193:59:63"
                      }
                    ]
                  },
                  "id": 24618,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes9",
                  "nameLocation": "2154:9:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24607,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24606,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "2171:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24618,
                        "src": "2164:9:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes9",
                          "typeString": "bytes9"
                        },
                        "typeName": {
                          "id": 24605,
                          "name": "bytes9",
                          "nodeType": "ElementaryTypeName",
                          "src": "2164:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes9",
                            "typeString": "bytes9"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2163:11:63"
                  },
                  "returnParameters": {
                    "id": 24608,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2189:0:63"
                  },
                  "scope": 32437,
                  "src": "2145:111:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24631,
                    "nodeType": "Block",
                    "src": "2305:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573313029",
                                  "id": 24626,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2349:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_013d178bb749cf32d0f7243763667360eb91576261efe5ed9be72b4a2800fd66",
                                    "typeString": "literal_string \"log(bytes10)\""
                                  },
                                  "value": "log(bytes10)"
                                },
                                {
                                  "id": 24627,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24620,
                                  "src": "2365:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes10",
                                    "typeString": "bytes10"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_013d178bb749cf32d0f7243763667360eb91576261efe5ed9be72b4a2800fd66",
                                    "typeString": "literal_string \"log(bytes10)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes10",
                                    "typeString": "bytes10"
                                  }
                                ],
                                "expression": {
                                  "id": 24624,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2325:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24625,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "2325:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24628,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2325:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24623,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "2309:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24629,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2309:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24630,
                        "nodeType": "ExpressionStatement",
                        "src": "2309:60:63"
                      }
                    ]
                  },
                  "id": 24632,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes10",
                  "nameLocation": "2268:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24621,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24620,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "2287:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24632,
                        "src": "2279:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes10",
                          "typeString": "bytes10"
                        },
                        "typeName": {
                          "id": 24619,
                          "name": "bytes10",
                          "nodeType": "ElementaryTypeName",
                          "src": "2279:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes10",
                            "typeString": "bytes10"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2278:12:63"
                  },
                  "returnParameters": {
                    "id": 24622,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2305:0:63"
                  },
                  "scope": 32437,
                  "src": "2259:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24645,
                    "nodeType": "Block",
                    "src": "2422:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573313129",
                                  "id": 24640,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2466:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_04004a2e5bef8ca2e7ffd661b519aec3d9c1b8d0aa1e11656aab73b2726922d9",
                                    "typeString": "literal_string \"log(bytes11)\""
                                  },
                                  "value": "log(bytes11)"
                                },
                                {
                                  "id": 24641,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24634,
                                  "src": "2482:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes11",
                                    "typeString": "bytes11"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_04004a2e5bef8ca2e7ffd661b519aec3d9c1b8d0aa1e11656aab73b2726922d9",
                                    "typeString": "literal_string \"log(bytes11)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes11",
                                    "typeString": "bytes11"
                                  }
                                ],
                                "expression": {
                                  "id": 24638,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2442:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24639,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "2442:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24642,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2442:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24637,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "2426:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24643,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2426:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24644,
                        "nodeType": "ExpressionStatement",
                        "src": "2426:60:63"
                      }
                    ]
                  },
                  "id": 24646,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes11",
                  "nameLocation": "2385:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24635,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24634,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "2404:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24646,
                        "src": "2396:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes11",
                          "typeString": "bytes11"
                        },
                        "typeName": {
                          "id": 24633,
                          "name": "bytes11",
                          "nodeType": "ElementaryTypeName",
                          "src": "2396:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes11",
                            "typeString": "bytes11"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2395:12:63"
                  },
                  "returnParameters": {
                    "id": 24636,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2422:0:63"
                  },
                  "scope": 32437,
                  "src": "2376:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24659,
                    "nodeType": "Block",
                    "src": "2539:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573313229",
                                  "id": 24654,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2583:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_86a06abd704b9e5bab2216d456863046355f2def5304d8276c140d0d454fddf2",
                                    "typeString": "literal_string \"log(bytes12)\""
                                  },
                                  "value": "log(bytes12)"
                                },
                                {
                                  "id": 24655,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24648,
                                  "src": "2599:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes12",
                                    "typeString": "bytes12"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_86a06abd704b9e5bab2216d456863046355f2def5304d8276c140d0d454fddf2",
                                    "typeString": "literal_string \"log(bytes12)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes12",
                                    "typeString": "bytes12"
                                  }
                                ],
                                "expression": {
                                  "id": 24652,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2559:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24653,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "2559:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24656,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2559:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24651,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "2543:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24657,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2543:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24658,
                        "nodeType": "ExpressionStatement",
                        "src": "2543:60:63"
                      }
                    ]
                  },
                  "id": 24660,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes12",
                  "nameLocation": "2502:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24649,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24648,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "2521:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24660,
                        "src": "2513:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes12",
                          "typeString": "bytes12"
                        },
                        "typeName": {
                          "id": 24647,
                          "name": "bytes12",
                          "nodeType": "ElementaryTypeName",
                          "src": "2513:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes12",
                            "typeString": "bytes12"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2512:12:63"
                  },
                  "returnParameters": {
                    "id": 24650,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2539:0:63"
                  },
                  "scope": 32437,
                  "src": "2493:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24673,
                    "nodeType": "Block",
                    "src": "2656:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573313329",
                                  "id": 24668,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2700:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_94529e34a43ac6de2c3a0df402eee6114eb0f2ad065baefde0230cd3cf90e2ec",
                                    "typeString": "literal_string \"log(bytes13)\""
                                  },
                                  "value": "log(bytes13)"
                                },
                                {
                                  "id": 24669,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24662,
                                  "src": "2716:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes13",
                                    "typeString": "bytes13"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_94529e34a43ac6de2c3a0df402eee6114eb0f2ad065baefde0230cd3cf90e2ec",
                                    "typeString": "literal_string \"log(bytes13)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes13",
                                    "typeString": "bytes13"
                                  }
                                ],
                                "expression": {
                                  "id": 24666,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2676:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24667,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "2676:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24670,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2676:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24665,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "2660:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2660:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24672,
                        "nodeType": "ExpressionStatement",
                        "src": "2660:60:63"
                      }
                    ]
                  },
                  "id": 24674,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes13",
                  "nameLocation": "2619:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24663,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24662,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "2638:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24674,
                        "src": "2630:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes13",
                          "typeString": "bytes13"
                        },
                        "typeName": {
                          "id": 24661,
                          "name": "bytes13",
                          "nodeType": "ElementaryTypeName",
                          "src": "2630:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes13",
                            "typeString": "bytes13"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2629:12:63"
                  },
                  "returnParameters": {
                    "id": 24664,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2656:0:63"
                  },
                  "scope": 32437,
                  "src": "2610:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24687,
                    "nodeType": "Block",
                    "src": "2773:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573313429",
                                  "id": 24682,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2817:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9266f07faf32c88bbdb01ce418243acbc1c63e15d6e3afa16078186ba711f278",
                                    "typeString": "literal_string \"log(bytes14)\""
                                  },
                                  "value": "log(bytes14)"
                                },
                                {
                                  "id": 24683,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24676,
                                  "src": "2833:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes14",
                                    "typeString": "bytes14"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_9266f07faf32c88bbdb01ce418243acbc1c63e15d6e3afa16078186ba711f278",
                                    "typeString": "literal_string \"log(bytes14)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes14",
                                    "typeString": "bytes14"
                                  }
                                ],
                                "expression": {
                                  "id": 24680,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2793:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24681,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "2793:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24684,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2793:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24679,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "2777:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24685,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2777:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24686,
                        "nodeType": "ExpressionStatement",
                        "src": "2777:60:63"
                      }
                    ]
                  },
                  "id": 24688,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes14",
                  "nameLocation": "2736:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24677,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24676,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "2755:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24688,
                        "src": "2747:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes14",
                          "typeString": "bytes14"
                        },
                        "typeName": {
                          "id": 24675,
                          "name": "bytes14",
                          "nodeType": "ElementaryTypeName",
                          "src": "2747:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes14",
                            "typeString": "bytes14"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2746:12:63"
                  },
                  "returnParameters": {
                    "id": 24678,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2773:0:63"
                  },
                  "scope": 32437,
                  "src": "2727:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24701,
                    "nodeType": "Block",
                    "src": "2890:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573313529",
                                  "id": 24696,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2934:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_da9574e0bf3f23e09c3d85c9f5226065bb36281f2a5d78c7e38f6ffd58919606",
                                    "typeString": "literal_string \"log(bytes15)\""
                                  },
                                  "value": "log(bytes15)"
                                },
                                {
                                  "id": 24697,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24690,
                                  "src": "2950:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes15",
                                    "typeString": "bytes15"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_da9574e0bf3f23e09c3d85c9f5226065bb36281f2a5d78c7e38f6ffd58919606",
                                    "typeString": "literal_string \"log(bytes15)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes15",
                                    "typeString": "bytes15"
                                  }
                                ],
                                "expression": {
                                  "id": 24694,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2910:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24695,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "2910:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24698,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2910:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24693,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "2894:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24699,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2894:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24700,
                        "nodeType": "ExpressionStatement",
                        "src": "2894:60:63"
                      }
                    ]
                  },
                  "id": 24702,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes15",
                  "nameLocation": "2853:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24691,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24690,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "2872:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24702,
                        "src": "2864:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes15",
                          "typeString": "bytes15"
                        },
                        "typeName": {
                          "id": 24689,
                          "name": "bytes15",
                          "nodeType": "ElementaryTypeName",
                          "src": "2864:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes15",
                            "typeString": "bytes15"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2863:12:63"
                  },
                  "returnParameters": {
                    "id": 24692,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2890:0:63"
                  },
                  "scope": 32437,
                  "src": "2844:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24715,
                    "nodeType": "Block",
                    "src": "3007:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573313629",
                                  "id": 24710,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3051:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_665c61046af0adc4969f9d2f111b654775bd58f112b63e5ce7dfff29c000e9f3",
                                    "typeString": "literal_string \"log(bytes16)\""
                                  },
                                  "value": "log(bytes16)"
                                },
                                {
                                  "id": 24711,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24704,
                                  "src": "3067:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes16",
                                    "typeString": "bytes16"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_665c61046af0adc4969f9d2f111b654775bd58f112b63e5ce7dfff29c000e9f3",
                                    "typeString": "literal_string \"log(bytes16)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes16",
                                    "typeString": "bytes16"
                                  }
                                ],
                                "expression": {
                                  "id": 24708,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3027:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24709,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "3027:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24712,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3027:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24707,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "3011:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24713,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3011:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24714,
                        "nodeType": "ExpressionStatement",
                        "src": "3011:60:63"
                      }
                    ]
                  },
                  "id": 24716,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes16",
                  "nameLocation": "2970:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24705,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24704,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "2989:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24716,
                        "src": "2981:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes16",
                          "typeString": "bytes16"
                        },
                        "typeName": {
                          "id": 24703,
                          "name": "bytes16",
                          "nodeType": "ElementaryTypeName",
                          "src": "2981:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes16",
                            "typeString": "bytes16"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2980:12:63"
                  },
                  "returnParameters": {
                    "id": 24706,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3007:0:63"
                  },
                  "scope": 32437,
                  "src": "2961:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24729,
                    "nodeType": "Block",
                    "src": "3124:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573313729",
                                  "id": 24724,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3168:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_339f673a0c008974259a0022c9b150cc5d1af8c58584412fe373d84bd08d4ea3",
                                    "typeString": "literal_string \"log(bytes17)\""
                                  },
                                  "value": "log(bytes17)"
                                },
                                {
                                  "id": 24725,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24718,
                                  "src": "3184:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes17",
                                    "typeString": "bytes17"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_339f673a0c008974259a0022c9b150cc5d1af8c58584412fe373d84bd08d4ea3",
                                    "typeString": "literal_string \"log(bytes17)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes17",
                                    "typeString": "bytes17"
                                  }
                                ],
                                "expression": {
                                  "id": 24722,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3144:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24723,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "3144:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24726,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3144:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24721,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "3128:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3128:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24728,
                        "nodeType": "ExpressionStatement",
                        "src": "3128:60:63"
                      }
                    ]
                  },
                  "id": 24730,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes17",
                  "nameLocation": "3087:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24719,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24718,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "3106:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24730,
                        "src": "3098:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes17",
                          "typeString": "bytes17"
                        },
                        "typeName": {
                          "id": 24717,
                          "name": "bytes17",
                          "nodeType": "ElementaryTypeName",
                          "src": "3098:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes17",
                            "typeString": "bytes17"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3097:12:63"
                  },
                  "returnParameters": {
                    "id": 24720,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3124:0:63"
                  },
                  "scope": 32437,
                  "src": "3078:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24743,
                    "nodeType": "Block",
                    "src": "3241:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573313829",
                                  "id": 24738,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3285:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c4d23d9af6458d5ddc7cb8128a2f36bf147c9db4fe277dfe0fe7be41def62116",
                                    "typeString": "literal_string \"log(bytes18)\""
                                  },
                                  "value": "log(bytes18)"
                                },
                                {
                                  "id": 24739,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24732,
                                  "src": "3301:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes18",
                                    "typeString": "bytes18"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c4d23d9af6458d5ddc7cb8128a2f36bf147c9db4fe277dfe0fe7be41def62116",
                                    "typeString": "literal_string \"log(bytes18)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes18",
                                    "typeString": "bytes18"
                                  }
                                ],
                                "expression": {
                                  "id": 24736,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3261:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24737,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "3261:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24740,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3261:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24735,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "3245:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3245:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24742,
                        "nodeType": "ExpressionStatement",
                        "src": "3245:60:63"
                      }
                    ]
                  },
                  "id": 24744,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes18",
                  "nameLocation": "3204:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24733,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24732,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "3223:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24744,
                        "src": "3215:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes18",
                          "typeString": "bytes18"
                        },
                        "typeName": {
                          "id": 24731,
                          "name": "bytes18",
                          "nodeType": "ElementaryTypeName",
                          "src": "3215:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes18",
                            "typeString": "bytes18"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3214:12:63"
                  },
                  "returnParameters": {
                    "id": 24734,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3241:0:63"
                  },
                  "scope": 32437,
                  "src": "3195:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24757,
                    "nodeType": "Block",
                    "src": "3358:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573313929",
                                  "id": 24752,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3402:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5e6b5a33524ca650028e2fad735b4ab50285bba37658119d2da303bee98aeada",
                                    "typeString": "literal_string \"log(bytes19)\""
                                  },
                                  "value": "log(bytes19)"
                                },
                                {
                                  "id": 24753,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24746,
                                  "src": "3418:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes19",
                                    "typeString": "bytes19"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_5e6b5a33524ca650028e2fad735b4ab50285bba37658119d2da303bee98aeada",
                                    "typeString": "literal_string \"log(bytes19)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes19",
                                    "typeString": "bytes19"
                                  }
                                ],
                                "expression": {
                                  "id": 24750,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3378:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24751,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "3378:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3378:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24749,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "3362:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24755,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3362:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24756,
                        "nodeType": "ExpressionStatement",
                        "src": "3362:60:63"
                      }
                    ]
                  },
                  "id": 24758,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes19",
                  "nameLocation": "3321:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24747,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24746,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "3340:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24758,
                        "src": "3332:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes19",
                          "typeString": "bytes19"
                        },
                        "typeName": {
                          "id": 24745,
                          "name": "bytes19",
                          "nodeType": "ElementaryTypeName",
                          "src": "3332:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes19",
                            "typeString": "bytes19"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3331:12:63"
                  },
                  "returnParameters": {
                    "id": 24748,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3358:0:63"
                  },
                  "scope": 32437,
                  "src": "3312:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24771,
                    "nodeType": "Block",
                    "src": "3475:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573323029",
                                  "id": 24766,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3519:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5188e3e9b3f117a223e2e428d0e13d089f3a53913e479000b94b85266ecf8231",
                                    "typeString": "literal_string \"log(bytes20)\""
                                  },
                                  "value": "log(bytes20)"
                                },
                                {
                                  "id": 24767,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24760,
                                  "src": "3535:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes20",
                                    "typeString": "bytes20"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_5188e3e9b3f117a223e2e428d0e13d089f3a53913e479000b94b85266ecf8231",
                                    "typeString": "literal_string \"log(bytes20)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes20",
                                    "typeString": "bytes20"
                                  }
                                ],
                                "expression": {
                                  "id": 24764,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3495:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24765,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "3495:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3495:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24763,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "3479:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24769,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3479:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24770,
                        "nodeType": "ExpressionStatement",
                        "src": "3479:60:63"
                      }
                    ]
                  },
                  "id": 24772,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes20",
                  "nameLocation": "3438:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24761,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24760,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "3457:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24772,
                        "src": "3449:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes20",
                          "typeString": "bytes20"
                        },
                        "typeName": {
                          "id": 24759,
                          "name": "bytes20",
                          "nodeType": "ElementaryTypeName",
                          "src": "3449:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes20",
                            "typeString": "bytes20"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3448:12:63"
                  },
                  "returnParameters": {
                    "id": 24762,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3475:0:63"
                  },
                  "scope": 32437,
                  "src": "3429:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24785,
                    "nodeType": "Block",
                    "src": "3592:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573323129",
                                  "id": 24780,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3636:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e9da35608192a6b38ad5ef62cf738886973b011b8cdb7e81cdd51b4c3dfe8ad7",
                                    "typeString": "literal_string \"log(bytes21)\""
                                  },
                                  "value": "log(bytes21)"
                                },
                                {
                                  "id": 24781,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24774,
                                  "src": "3652:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes21",
                                    "typeString": "bytes21"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_e9da35608192a6b38ad5ef62cf738886973b011b8cdb7e81cdd51b4c3dfe8ad7",
                                    "typeString": "literal_string \"log(bytes21)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes21",
                                    "typeString": "bytes21"
                                  }
                                ],
                                "expression": {
                                  "id": 24778,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3612:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "3612:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24782,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3612:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24777,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "3596:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3596:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24784,
                        "nodeType": "ExpressionStatement",
                        "src": "3596:60:63"
                      }
                    ]
                  },
                  "id": 24786,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes21",
                  "nameLocation": "3555:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24775,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24774,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "3574:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24786,
                        "src": "3566:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes21",
                          "typeString": "bytes21"
                        },
                        "typeName": {
                          "id": 24773,
                          "name": "bytes21",
                          "nodeType": "ElementaryTypeName",
                          "src": "3566:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes21",
                            "typeString": "bytes21"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3565:12:63"
                  },
                  "returnParameters": {
                    "id": 24776,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3592:0:63"
                  },
                  "scope": 32437,
                  "src": "3546:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24799,
                    "nodeType": "Block",
                    "src": "3709:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573323229",
                                  "id": 24794,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3753:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_d5fae89c25bed6f12b105f52db0a0ff6f5c8313613e12eccd3059bb7f7ea6575",
                                    "typeString": "literal_string \"log(bytes22)\""
                                  },
                                  "value": "log(bytes22)"
                                },
                                {
                                  "id": 24795,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24788,
                                  "src": "3769:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes22",
                                    "typeString": "bytes22"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_d5fae89c25bed6f12b105f52db0a0ff6f5c8313613e12eccd3059bb7f7ea6575",
                                    "typeString": "literal_string \"log(bytes22)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes22",
                                    "typeString": "bytes22"
                                  }
                                ],
                                "expression": {
                                  "id": 24792,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3729:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24793,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "3729:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24796,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3729:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24791,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "3713:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3713:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24798,
                        "nodeType": "ExpressionStatement",
                        "src": "3713:60:63"
                      }
                    ]
                  },
                  "id": 24800,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes22",
                  "nameLocation": "3672:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24789,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24788,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "3691:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24800,
                        "src": "3683:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes22",
                          "typeString": "bytes22"
                        },
                        "typeName": {
                          "id": 24787,
                          "name": "bytes22",
                          "nodeType": "ElementaryTypeName",
                          "src": "3683:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes22",
                            "typeString": "bytes22"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3682:12:63"
                  },
                  "returnParameters": {
                    "id": 24790,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3709:0:63"
                  },
                  "scope": 32437,
                  "src": "3663:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24813,
                    "nodeType": "Block",
                    "src": "3826:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573323329",
                                  "id": 24808,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3870:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_aba1cf0dcd316c862bc06d4cf532375fed11c1e0897ba81a04ee0b22d3f14061",
                                    "typeString": "literal_string \"log(bytes23)\""
                                  },
                                  "value": "log(bytes23)"
                                },
                                {
                                  "id": 24809,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24802,
                                  "src": "3886:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes23",
                                    "typeString": "bytes23"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_aba1cf0dcd316c862bc06d4cf532375fed11c1e0897ba81a04ee0b22d3f14061",
                                    "typeString": "literal_string \"log(bytes23)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes23",
                                    "typeString": "bytes23"
                                  }
                                ],
                                "expression": {
                                  "id": 24806,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3846:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24807,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "3846:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24810,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3846:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24805,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "3830:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24811,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3830:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24812,
                        "nodeType": "ExpressionStatement",
                        "src": "3830:60:63"
                      }
                    ]
                  },
                  "id": 24814,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes23",
                  "nameLocation": "3789:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24803,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24802,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "3808:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24814,
                        "src": "3800:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes23",
                          "typeString": "bytes23"
                        },
                        "typeName": {
                          "id": 24801,
                          "name": "bytes23",
                          "nodeType": "ElementaryTypeName",
                          "src": "3800:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes23",
                            "typeString": "bytes23"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3799:12:63"
                  },
                  "returnParameters": {
                    "id": 24804,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3826:0:63"
                  },
                  "scope": 32437,
                  "src": "3780:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24827,
                    "nodeType": "Block",
                    "src": "3943:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573323429",
                                  "id": 24822,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3987:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f1b35b3488a5452bceb48624d6ba2a791e58f0e9c0f4b86b8f51186ec7a7edf4",
                                    "typeString": "literal_string \"log(bytes24)\""
                                  },
                                  "value": "log(bytes24)"
                                },
                                {
                                  "id": 24823,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24816,
                                  "src": "4003:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes24",
                                    "typeString": "bytes24"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_f1b35b3488a5452bceb48624d6ba2a791e58f0e9c0f4b86b8f51186ec7a7edf4",
                                    "typeString": "literal_string \"log(bytes24)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes24",
                                    "typeString": "bytes24"
                                  }
                                ],
                                "expression": {
                                  "id": 24820,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3963:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24821,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "3963:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24824,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3963:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24819,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "3947:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24825,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3947:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24826,
                        "nodeType": "ExpressionStatement",
                        "src": "3947:60:63"
                      }
                    ]
                  },
                  "id": 24828,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes24",
                  "nameLocation": "3906:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24817,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24816,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "3925:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24828,
                        "src": "3917:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes24",
                          "typeString": "bytes24"
                        },
                        "typeName": {
                          "id": 24815,
                          "name": "bytes24",
                          "nodeType": "ElementaryTypeName",
                          "src": "3917:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes24",
                            "typeString": "bytes24"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3916:12:63"
                  },
                  "returnParameters": {
                    "id": 24818,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3943:0:63"
                  },
                  "scope": 32437,
                  "src": "3897:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24841,
                    "nodeType": "Block",
                    "src": "4060:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573323529",
                                  "id": 24836,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4104:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_0b84bc580db9be1295ee23dff6122da1f70381c83abf9a74953cca11238eda25",
                                    "typeString": "literal_string \"log(bytes25)\""
                                  },
                                  "value": "log(bytes25)"
                                },
                                {
                                  "id": 24837,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24830,
                                  "src": "4120:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes25",
                                    "typeString": "bytes25"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_0b84bc580db9be1295ee23dff6122da1f70381c83abf9a74953cca11238eda25",
                                    "typeString": "literal_string \"log(bytes25)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes25",
                                    "typeString": "bytes25"
                                  }
                                ],
                                "expression": {
                                  "id": 24834,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4080:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24835,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "4080:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24838,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4080:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24833,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "4064:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4064:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24840,
                        "nodeType": "ExpressionStatement",
                        "src": "4064:60:63"
                      }
                    ]
                  },
                  "id": 24842,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes25",
                  "nameLocation": "4023:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24831,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24830,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "4042:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24842,
                        "src": "4034:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes25",
                          "typeString": "bytes25"
                        },
                        "typeName": {
                          "id": 24829,
                          "name": "bytes25",
                          "nodeType": "ElementaryTypeName",
                          "src": "4034:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes25",
                            "typeString": "bytes25"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4033:12:63"
                  },
                  "returnParameters": {
                    "id": 24832,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4060:0:63"
                  },
                  "scope": 32437,
                  "src": "4014:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24855,
                    "nodeType": "Block",
                    "src": "4177:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573323629",
                                  "id": 24850,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4221:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f8b149f18dc341f1a56e26c6c24a5233eec3bbb2ab017e9e86e663aae743965b",
                                    "typeString": "literal_string \"log(bytes26)\""
                                  },
                                  "value": "log(bytes26)"
                                },
                                {
                                  "id": 24851,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24844,
                                  "src": "4237:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes26",
                                    "typeString": "bytes26"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_f8b149f18dc341f1a56e26c6c24a5233eec3bbb2ab017e9e86e663aae743965b",
                                    "typeString": "literal_string \"log(bytes26)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes26",
                                    "typeString": "bytes26"
                                  }
                                ],
                                "expression": {
                                  "id": 24848,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4197:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24849,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "4197:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24852,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4197:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24847,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "4181:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4181:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24854,
                        "nodeType": "ExpressionStatement",
                        "src": "4181:60:63"
                      }
                    ]
                  },
                  "id": 24856,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes26",
                  "nameLocation": "4140:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24845,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24844,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "4159:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24856,
                        "src": "4151:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes26",
                          "typeString": "bytes26"
                        },
                        "typeName": {
                          "id": 24843,
                          "name": "bytes26",
                          "nodeType": "ElementaryTypeName",
                          "src": "4151:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes26",
                            "typeString": "bytes26"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4150:12:63"
                  },
                  "returnParameters": {
                    "id": 24846,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4177:0:63"
                  },
                  "scope": 32437,
                  "src": "4131:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24869,
                    "nodeType": "Block",
                    "src": "4294:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573323729",
                                  "id": 24864,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4338:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_3a3757dda92e8e238aa23ff7f6f62e31074f6acccca8986ec1286b5a835236b6",
                                    "typeString": "literal_string \"log(bytes27)\""
                                  },
                                  "value": "log(bytes27)"
                                },
                                {
                                  "id": 24865,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24858,
                                  "src": "4354:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes27",
                                    "typeString": "bytes27"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_3a3757dda92e8e238aa23ff7f6f62e31074f6acccca8986ec1286b5a835236b6",
                                    "typeString": "literal_string \"log(bytes27)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes27",
                                    "typeString": "bytes27"
                                  }
                                ],
                                "expression": {
                                  "id": 24862,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4314:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24863,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "4314:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24866,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4314:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24861,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "4298:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4298:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24868,
                        "nodeType": "ExpressionStatement",
                        "src": "4298:60:63"
                      }
                    ]
                  },
                  "id": 24870,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes27",
                  "nameLocation": "4257:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24859,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24858,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "4276:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24870,
                        "src": "4268:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes27",
                          "typeString": "bytes27"
                        },
                        "typeName": {
                          "id": 24857,
                          "name": "bytes27",
                          "nodeType": "ElementaryTypeName",
                          "src": "4268:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes27",
                            "typeString": "bytes27"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4267:12:63"
                  },
                  "returnParameters": {
                    "id": 24860,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4294:0:63"
                  },
                  "scope": 32437,
                  "src": "4248:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24883,
                    "nodeType": "Block",
                    "src": "4411:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573323829",
                                  "id": 24878,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4455:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c82aeaee74a6ddec4ccd5cfe60e816752c02c70838f0908bd4a6e82866b3a042",
                                    "typeString": "literal_string \"log(bytes28)\""
                                  },
                                  "value": "log(bytes28)"
                                },
                                {
                                  "id": 24879,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24872,
                                  "src": "4471:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes28",
                                    "typeString": "bytes28"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c82aeaee74a6ddec4ccd5cfe60e816752c02c70838f0908bd4a6e82866b3a042",
                                    "typeString": "literal_string \"log(bytes28)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes28",
                                    "typeString": "bytes28"
                                  }
                                ],
                                "expression": {
                                  "id": 24876,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4431:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "4431:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24880,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4431:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24875,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "4415:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4415:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24882,
                        "nodeType": "ExpressionStatement",
                        "src": "4415:60:63"
                      }
                    ]
                  },
                  "id": 24884,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes28",
                  "nameLocation": "4374:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24873,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24872,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "4393:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24884,
                        "src": "4385:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes28",
                          "typeString": "bytes28"
                        },
                        "typeName": {
                          "id": 24871,
                          "name": "bytes28",
                          "nodeType": "ElementaryTypeName",
                          "src": "4385:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes28",
                            "typeString": "bytes28"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4384:12:63"
                  },
                  "returnParameters": {
                    "id": 24874,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4411:0:63"
                  },
                  "scope": 32437,
                  "src": "4365:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24897,
                    "nodeType": "Block",
                    "src": "4528:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573323929",
                                  "id": 24892,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4572:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_4b69c3d5f782ef1bdb62d5bb42d4987f16799030ba447bb153d465bd3a3a5667",
                                    "typeString": "literal_string \"log(bytes29)\""
                                  },
                                  "value": "log(bytes29)"
                                },
                                {
                                  "id": 24893,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24886,
                                  "src": "4588:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes29",
                                    "typeString": "bytes29"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_4b69c3d5f782ef1bdb62d5bb42d4987f16799030ba447bb153d465bd3a3a5667",
                                    "typeString": "literal_string \"log(bytes29)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes29",
                                    "typeString": "bytes29"
                                  }
                                ],
                                "expression": {
                                  "id": 24890,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4548:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24891,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "4548:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24894,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4548:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24889,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "4532:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4532:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24896,
                        "nodeType": "ExpressionStatement",
                        "src": "4532:60:63"
                      }
                    ]
                  },
                  "id": 24898,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes29",
                  "nameLocation": "4491:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24887,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24886,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "4510:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24898,
                        "src": "4502:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes29",
                          "typeString": "bytes29"
                        },
                        "typeName": {
                          "id": 24885,
                          "name": "bytes29",
                          "nodeType": "ElementaryTypeName",
                          "src": "4502:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes29",
                            "typeString": "bytes29"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4501:12:63"
                  },
                  "returnParameters": {
                    "id": 24888,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4528:0:63"
                  },
                  "scope": 32437,
                  "src": "4482:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24911,
                    "nodeType": "Block",
                    "src": "4645:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573333029",
                                  "id": 24906,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4689:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_ee12c4edbd73d98174a6bf3454562c4874f59cb381176b662ca65f625f97d6ad",
                                    "typeString": "literal_string \"log(bytes30)\""
                                  },
                                  "value": "log(bytes30)"
                                },
                                {
                                  "id": 24907,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24900,
                                  "src": "4705:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes30",
                                    "typeString": "bytes30"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_ee12c4edbd73d98174a6bf3454562c4874f59cb381176b662ca65f625f97d6ad",
                                    "typeString": "literal_string \"log(bytes30)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes30",
                                    "typeString": "bytes30"
                                  }
                                ],
                                "expression": {
                                  "id": 24904,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4665:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24905,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "4665:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24908,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4665:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24903,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "4649:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4649:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24910,
                        "nodeType": "ExpressionStatement",
                        "src": "4649:60:63"
                      }
                    ]
                  },
                  "id": 24912,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes30",
                  "nameLocation": "4608:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24901,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24900,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "4627:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24912,
                        "src": "4619:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes30",
                          "typeString": "bytes30"
                        },
                        "typeName": {
                          "id": 24899,
                          "name": "bytes30",
                          "nodeType": "ElementaryTypeName",
                          "src": "4619:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes30",
                            "typeString": "bytes30"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4618:12:63"
                  },
                  "returnParameters": {
                    "id": 24902,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4645:0:63"
                  },
                  "scope": 32437,
                  "src": "4599:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24925,
                    "nodeType": "Block",
                    "src": "4762:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573333129",
                                  "id": 24920,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4806:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c2854d92a0707e582e2710f9c9d3f148fdcf7e7da3b4270c2cfa3e223a2c50ce",
                                    "typeString": "literal_string \"log(bytes31)\""
                                  },
                                  "value": "log(bytes31)"
                                },
                                {
                                  "id": 24921,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24914,
                                  "src": "4822:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes31",
                                    "typeString": "bytes31"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c2854d92a0707e582e2710f9c9d3f148fdcf7e7da3b4270c2cfa3e223a2c50ce",
                                    "typeString": "literal_string \"log(bytes31)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes31",
                                    "typeString": "bytes31"
                                  }
                                ],
                                "expression": {
                                  "id": 24918,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4782:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24919,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "4782:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24922,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4782:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24917,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "4766:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24923,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4766:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24924,
                        "nodeType": "ExpressionStatement",
                        "src": "4766:60:63"
                      }
                    ]
                  },
                  "id": 24926,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes31",
                  "nameLocation": "4725:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24915,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24914,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "4744:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24926,
                        "src": "4736:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes31",
                          "typeString": "bytes31"
                        },
                        "typeName": {
                          "id": 24913,
                          "name": "bytes31",
                          "nodeType": "ElementaryTypeName",
                          "src": "4736:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes31",
                            "typeString": "bytes31"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4735:12:63"
                  },
                  "returnParameters": {
                    "id": 24916,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4762:0:63"
                  },
                  "scope": 32437,
                  "src": "4716:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24939,
                    "nodeType": "Block",
                    "src": "4879:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286279746573333229",
                                  "id": 24934,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4923:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_27b7cf8513ac6b65cae720183e1e60e67f8a9d92c01286c19d51d4e30aa269da",
                                    "typeString": "literal_string \"log(bytes32)\""
                                  },
                                  "value": "log(bytes32)"
                                },
                                {
                                  "id": 24935,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24928,
                                  "src": "4939:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_27b7cf8513ac6b65cae720183e1e60e67f8a9d92c01286c19d51d4e30aa269da",
                                    "typeString": "literal_string \"log(bytes32)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 24932,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4899:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24933,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "4899:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24936,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4899:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24931,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "4883:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4883:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24938,
                        "nodeType": "ExpressionStatement",
                        "src": "4883:60:63"
                      }
                    ]
                  },
                  "id": 24940,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "logBytes32",
                  "nameLocation": "4842:10:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24929,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24928,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "4861:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24940,
                        "src": "4853:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 24927,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4853:7:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4852:12:63"
                  },
                  "returnParameters": {
                    "id": 24930,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4879:0:63"
                  },
                  "scope": 32437,
                  "src": "4833:114:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24953,
                    "nodeType": "Block",
                    "src": "4986:65:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e7429",
                                  "id": 24948,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5030:11:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f5b1bba92d8f98cf25e27c94d7fc7cbfbae95a49dfe5ab0cdf64ddd7181bb984",
                                    "typeString": "literal_string \"log(uint)\""
                                  },
                                  "value": "log(uint)"
                                },
                                {
                                  "id": 24949,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24942,
                                  "src": "5043:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_f5b1bba92d8f98cf25e27c94d7fc7cbfbae95a49dfe5ab0cdf64ddd7181bb984",
                                    "typeString": "literal_string \"log(uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 24946,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "5006:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24947,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "5006:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24950,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5006:40:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24945,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "4990:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24951,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4990:57:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24952,
                        "nodeType": "ExpressionStatement",
                        "src": "4990:57:63"
                      }
                    ]
                  },
                  "id": 24954,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "4959:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24943,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24942,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "4968:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24954,
                        "src": "4963:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24941,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4963:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4962:9:63"
                  },
                  "returnParameters": {
                    "id": 24944,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4986:0:63"
                  },
                  "scope": 32437,
                  "src": "4950:101:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24967,
                    "nodeType": "Block",
                    "src": "5099:67:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e6729",
                                  "id": 24962,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5143:13:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50",
                                    "typeString": "literal_string \"log(string)\""
                                  },
                                  "value": "log(string)"
                                },
                                {
                                  "id": 24963,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24956,
                                  "src": "5158:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_41304facd9323d75b11bcdd609cb38effffdb05710f7caf0e9b16c6d9d709f50",
                                    "typeString": "literal_string \"log(string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 24960,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "5119:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24961,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "5119:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24964,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5119:42:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24959,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "5103:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24965,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5103:59:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24966,
                        "nodeType": "ExpressionStatement",
                        "src": "5103:59:63"
                      }
                    ]
                  },
                  "id": 24968,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "5063:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24957,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24956,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "5081:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24968,
                        "src": "5067:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 24955,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5067:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5066:18:63"
                  },
                  "returnParameters": {
                    "id": 24958,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5099:0:63"
                  },
                  "scope": 32437,
                  "src": "5054:112:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24981,
                    "nodeType": "Block",
                    "src": "5205:65:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c29",
                                  "id": 24976,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5249:11:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_32458eed3feca62a69292a55ca8a755ae4e6cdc57a38d15c298330064467fdd7",
                                    "typeString": "literal_string \"log(bool)\""
                                  },
                                  "value": "log(bool)"
                                },
                                {
                                  "id": 24977,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24970,
                                  "src": "5262:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_32458eed3feca62a69292a55ca8a755ae4e6cdc57a38d15c298330064467fdd7",
                                    "typeString": "literal_string \"log(bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 24974,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "5225:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24975,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "5225:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24978,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5225:40:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24973,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "5209:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24979,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5209:57:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24980,
                        "nodeType": "ExpressionStatement",
                        "src": "5209:57:63"
                      }
                    ]
                  },
                  "id": 24982,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "5178:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24971,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24970,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "5187:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24982,
                        "src": "5182:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 24969,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5182:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5181:9:63"
                  },
                  "returnParameters": {
                    "id": 24972,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5205:0:63"
                  },
                  "scope": 32437,
                  "src": "5169:101:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 24995,
                    "nodeType": "Block",
                    "src": "5312:68:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f67286164647265737329",
                                  "id": 24990,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5356:14:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_2c2ecbc2212ac38c2f9ec89aa5fcef7f532a5db24dbf7cad1f48bc82843b7428",
                                    "typeString": "literal_string \"log(address)\""
                                  },
                                  "value": "log(address)"
                                },
                                {
                                  "id": 24991,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24984,
                                  "src": "5372:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_2c2ecbc2212ac38c2f9ec89aa5fcef7f532a5db24dbf7cad1f48bc82843b7428",
                                    "typeString": "literal_string \"log(address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 24988,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "5332:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 24989,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "5332:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 24992,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5332:43:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 24987,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "5316:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 24993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5316:60:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 24994,
                        "nodeType": "ExpressionStatement",
                        "src": "5316:60:63"
                      }
                    ]
                  },
                  "id": 24996,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "5282:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 24985,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24984,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "5294:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 24996,
                        "src": "5286:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 24983,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5286:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5285:12:63"
                  },
                  "returnParameters": {
                    "id": 24986,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5312:0:63"
                  },
                  "scope": 32437,
                  "src": "5273:107:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25012,
                    "nodeType": "Block",
                    "src": "5428:74:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e7429",
                                  "id": 25006,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5472:16:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6c0f69806b714804c91bc48c3b408dde7373841a86e55c9ea3ee0c5945b4bc32",
                                    "typeString": "literal_string \"log(uint,uint)\""
                                  },
                                  "value": "log(uint,uint)"
                                },
                                {
                                  "id": 25007,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24998,
                                  "src": "5490:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25008,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25000,
                                  "src": "5494:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_6c0f69806b714804c91bc48c3b408dde7373841a86e55c9ea3ee0c5945b4bc32",
                                    "typeString": "literal_string \"log(uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 25004,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "5448:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25005,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "5448:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25009,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5448:49:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25003,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "5432:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25010,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5432:66:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25011,
                        "nodeType": "ExpressionStatement",
                        "src": "5432:66:63"
                      }
                    ]
                  },
                  "id": 25013,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "5392:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25001,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24998,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "5401:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25013,
                        "src": "5396:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24997,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5396:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25000,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "5410:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25013,
                        "src": "5405:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 24999,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5405:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5395:18:63"
                  },
                  "returnParameters": {
                    "id": 25002,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5428:0:63"
                  },
                  "scope": 32437,
                  "src": "5383:119:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25029,
                    "nodeType": "Block",
                    "src": "5559:76:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e6729",
                                  "id": 25023,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5603:18:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_0fa3f345ed69310615f27bede4ec80a963e2134dd287fa93c82b0c1eefe029a8",
                                    "typeString": "literal_string \"log(uint,string)\""
                                  },
                                  "value": "log(uint,string)"
                                },
                                {
                                  "id": 25024,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25015,
                                  "src": "5623:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25025,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25017,
                                  "src": "5627:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_0fa3f345ed69310615f27bede4ec80a963e2134dd287fa93c82b0c1eefe029a8",
                                    "typeString": "literal_string \"log(uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 25021,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "5579:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25022,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "5579:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25026,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5579:51:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25020,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "5563:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25027,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5563:68:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25028,
                        "nodeType": "ExpressionStatement",
                        "src": "5563:68:63"
                      }
                    ]
                  },
                  "id": 25030,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "5514:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25018,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25015,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "5523:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25030,
                        "src": "5518:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25014,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5518:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25017,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "5541:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25030,
                        "src": "5527:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25016,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5527:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5517:27:63"
                  },
                  "returnParameters": {
                    "id": 25019,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5559:0:63"
                  },
                  "scope": 32437,
                  "src": "5505:130:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25046,
                    "nodeType": "Block",
                    "src": "5683:74:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c29",
                                  "id": 25040,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5727:16:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_1e6dd4ecaf57d2ec6eb02f2f993c53040200a16451fba718b7e8b170825fd172",
                                    "typeString": "literal_string \"log(uint,bool)\""
                                  },
                                  "value": "log(uint,bool)"
                                },
                                {
                                  "id": 25041,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25032,
                                  "src": "5745:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25042,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25034,
                                  "src": "5749:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_1e6dd4ecaf57d2ec6eb02f2f993c53040200a16451fba718b7e8b170825fd172",
                                    "typeString": "literal_string \"log(uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 25038,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "5703:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "5703:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25043,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5703:49:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25037,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "5687:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25044,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5687:66:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25045,
                        "nodeType": "ExpressionStatement",
                        "src": "5687:66:63"
                      }
                    ]
                  },
                  "id": 25047,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "5647:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25035,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25032,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "5656:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25047,
                        "src": "5651:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25031,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5651:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25034,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "5665:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25047,
                        "src": "5660:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25033,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5660:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5650:18:63"
                  },
                  "returnParameters": {
                    "id": 25036,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5683:0:63"
                  },
                  "scope": 32437,
                  "src": "5638:119:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25063,
                    "nodeType": "Block",
                    "src": "5808:77:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c6164647265737329",
                                  "id": 25057,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5852:19:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_58eb860cb5df2c2db83667a7ce62ef14d1323e0f3e304ea316fb64cd2c6fd3b2",
                                    "typeString": "literal_string \"log(uint,address)\""
                                  },
                                  "value": "log(uint,address)"
                                },
                                {
                                  "id": 25058,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25049,
                                  "src": "5873:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25059,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25051,
                                  "src": "5877:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_58eb860cb5df2c2db83667a7ce62ef14d1323e0f3e304ea316fb64cd2c6fd3b2",
                                    "typeString": "literal_string \"log(uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 25055,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "5828:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "5828:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25060,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5828:52:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25054,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "5812:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5812:69:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25062,
                        "nodeType": "ExpressionStatement",
                        "src": "5812:69:63"
                      }
                    ]
                  },
                  "id": 25064,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "5769:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25052,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25049,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "5778:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25064,
                        "src": "5773:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25048,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5773:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25051,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "5790:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25064,
                        "src": "5782:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25050,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5782:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5772:21:63"
                  },
                  "returnParameters": {
                    "id": 25053,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5808:0:63"
                  },
                  "scope": 32437,
                  "src": "5760:125:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25080,
                    "nodeType": "Block",
                    "src": "5942:76:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e7429",
                                  "id": 25074,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5986:18:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9710a9d00d210736b1ce918b483e56000e2885769da8118b2fbf9fe33949d3bd",
                                    "typeString": "literal_string \"log(string,uint)\""
                                  },
                                  "value": "log(string,uint)"
                                },
                                {
                                  "id": 25075,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25066,
                                  "src": "6006:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25076,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25068,
                                  "src": "6010:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_9710a9d00d210736b1ce918b483e56000e2885769da8118b2fbf9fe33949d3bd",
                                    "typeString": "literal_string \"log(string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 25072,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "5962:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25073,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "5962:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25077,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5962:51:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25071,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "5946:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25078,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5946:68:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25079,
                        "nodeType": "ExpressionStatement",
                        "src": "5946:68:63"
                      }
                    ]
                  },
                  "id": 25081,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "5897:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25069,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25066,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "5915:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25081,
                        "src": "5901:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25065,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "5901:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25068,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "5924:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25081,
                        "src": "5919:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25067,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5919:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5900:27:63"
                  },
                  "returnParameters": {
                    "id": 25070,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5942:0:63"
                  },
                  "scope": 32437,
                  "src": "5888:130:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25097,
                    "nodeType": "Block",
                    "src": "6084:78:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e6729",
                                  "id": 25091,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6128:20:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_4b5c4277d556d03fbf5ee534fba41dc13982b44f2fa82f1d48fdd8b5b5b692ac",
                                    "typeString": "literal_string \"log(string,string)\""
                                  },
                                  "value": "log(string,string)"
                                },
                                {
                                  "id": 25092,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25083,
                                  "src": "6150:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25093,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25085,
                                  "src": "6154:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_4b5c4277d556d03fbf5ee534fba41dc13982b44f2fa82f1d48fdd8b5b5b692ac",
                                    "typeString": "literal_string \"log(string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 25089,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "6104:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25090,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "6104:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25094,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6104:53:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25088,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "6088:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6088:70:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25096,
                        "nodeType": "ExpressionStatement",
                        "src": "6088:70:63"
                      }
                    ]
                  },
                  "id": 25098,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "6030:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25086,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25083,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "6048:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25098,
                        "src": "6034:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25082,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6034:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25085,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "6066:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25098,
                        "src": "6052:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25084,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6052:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6033:36:63"
                  },
                  "returnParameters": {
                    "id": 25087,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6084:0:63"
                  },
                  "scope": 32437,
                  "src": "6021:141:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25114,
                    "nodeType": "Block",
                    "src": "6219:76:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c29",
                                  "id": 25108,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6263:18:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c3b556354c088fbb43886eb83c2a04bc7089663f964d22be308197a236f5b870",
                                    "typeString": "literal_string \"log(string,bool)\""
                                  },
                                  "value": "log(string,bool)"
                                },
                                {
                                  "id": 25109,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25100,
                                  "src": "6283:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25110,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25102,
                                  "src": "6287:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c3b556354c088fbb43886eb83c2a04bc7089663f964d22be308197a236f5b870",
                                    "typeString": "literal_string \"log(string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 25106,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "6239:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25107,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "6239:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25111,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6239:51:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25105,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "6223:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6223:68:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25113,
                        "nodeType": "ExpressionStatement",
                        "src": "6223:68:63"
                      }
                    ]
                  },
                  "id": 25115,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "6174:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25103,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25100,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "6192:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25115,
                        "src": "6178:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25099,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6178:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25102,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "6201:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25115,
                        "src": "6196:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25101,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6196:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6177:27:63"
                  },
                  "returnParameters": {
                    "id": 25104,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6219:0:63"
                  },
                  "scope": 32437,
                  "src": "6165:130:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25131,
                    "nodeType": "Block",
                    "src": "6355:79:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c6164647265737329",
                                  "id": 25125,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6399:21:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_319af333460570a1937bf195dd33445c0d0951c59127da6f1f038b9fdce3fd72",
                                    "typeString": "literal_string \"log(string,address)\""
                                  },
                                  "value": "log(string,address)"
                                },
                                {
                                  "id": 25126,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25117,
                                  "src": "6422:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25127,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25119,
                                  "src": "6426:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_319af333460570a1937bf195dd33445c0d0951c59127da6f1f038b9fdce3fd72",
                                    "typeString": "literal_string \"log(string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 25123,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "6375:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25124,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "6375:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25128,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6375:54:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25122,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "6359:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25129,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6359:71:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25130,
                        "nodeType": "ExpressionStatement",
                        "src": "6359:71:63"
                      }
                    ]
                  },
                  "id": 25132,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "6307:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25120,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25117,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "6325:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25132,
                        "src": "6311:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25116,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6311:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25119,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "6337:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25132,
                        "src": "6329:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25118,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6329:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6310:30:63"
                  },
                  "returnParameters": {
                    "id": 25121,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6355:0:63"
                  },
                  "scope": 32437,
                  "src": "6298:136:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25148,
                    "nodeType": "Block",
                    "src": "6482:74:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e7429",
                                  "id": 25142,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6526:16:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_364b6a921e139cbe48176ce2b1f6700c7e568330bc5da26f60350cc33cf2a299",
                                    "typeString": "literal_string \"log(bool,uint)\""
                                  },
                                  "value": "log(bool,uint)"
                                },
                                {
                                  "id": 25143,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25134,
                                  "src": "6544:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 25144,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25136,
                                  "src": "6548:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_364b6a921e139cbe48176ce2b1f6700c7e568330bc5da26f60350cc33cf2a299",
                                    "typeString": "literal_string \"log(bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 25140,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "6502:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "6502:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25145,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6502:49:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25139,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "6486:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6486:66:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25147,
                        "nodeType": "ExpressionStatement",
                        "src": "6486:66:63"
                      }
                    ]
                  },
                  "id": 25149,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "6446:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25137,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25134,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "6455:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25149,
                        "src": "6450:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25133,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6450:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25136,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "6464:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25149,
                        "src": "6459:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25135,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "6459:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6449:18:63"
                  },
                  "returnParameters": {
                    "id": 25138,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6482:0:63"
                  },
                  "scope": 32437,
                  "src": "6437:119:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25165,
                    "nodeType": "Block",
                    "src": "6613:76:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e6729",
                                  "id": 25159,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6657:18:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_8feac5256a5b88d7ca0173065b796567ecbc9d75ec022fa0f044eb427f962b84",
                                    "typeString": "literal_string \"log(bool,string)\""
                                  },
                                  "value": "log(bool,string)"
                                },
                                {
                                  "id": 25160,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25151,
                                  "src": "6677:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 25161,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25153,
                                  "src": "6681:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_8feac5256a5b88d7ca0173065b796567ecbc9d75ec022fa0f044eb427f962b84",
                                    "typeString": "literal_string \"log(bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 25157,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "6633:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25158,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "6633:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25162,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6633:51:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25156,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "6617:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25163,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6617:68:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25164,
                        "nodeType": "ExpressionStatement",
                        "src": "6617:68:63"
                      }
                    ]
                  },
                  "id": 25166,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "6568:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25154,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25151,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "6577:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25166,
                        "src": "6572:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25150,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6572:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25153,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "6595:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25166,
                        "src": "6581:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25152,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "6581:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6571:27:63"
                  },
                  "returnParameters": {
                    "id": 25155,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6613:0:63"
                  },
                  "scope": 32437,
                  "src": "6559:130:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25182,
                    "nodeType": "Block",
                    "src": "6737:74:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c29",
                                  "id": 25176,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6781:16:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_2a110e83227fbe26ff7524076f2091da3e9aa01d70b93677da53b41d22f4fb15",
                                    "typeString": "literal_string \"log(bool,bool)\""
                                  },
                                  "value": "log(bool,bool)"
                                },
                                {
                                  "id": 25177,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25168,
                                  "src": "6799:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 25178,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25170,
                                  "src": "6803:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_2a110e83227fbe26ff7524076f2091da3e9aa01d70b93677da53b41d22f4fb15",
                                    "typeString": "literal_string \"log(bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 25174,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "6757:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25175,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "6757:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25179,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6757:49:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25173,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "6741:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25180,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6741:66:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25181,
                        "nodeType": "ExpressionStatement",
                        "src": "6741:66:63"
                      }
                    ]
                  },
                  "id": 25183,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "6701:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25171,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25168,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "6710:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25183,
                        "src": "6705:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25167,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6705:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25170,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "6719:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25183,
                        "src": "6714:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25169,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6714:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6704:18:63"
                  },
                  "returnParameters": {
                    "id": 25172,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6737:0:63"
                  },
                  "scope": 32437,
                  "src": "6692:119:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25199,
                    "nodeType": "Block",
                    "src": "6862:77:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c6164647265737329",
                                  "id": 25193,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6906:19:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_853c4849443241e2249adafa4f69c8bb738b0f17c7a0a9d9997450cd71db4d55",
                                    "typeString": "literal_string \"log(bool,address)\""
                                  },
                                  "value": "log(bool,address)"
                                },
                                {
                                  "id": 25194,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25185,
                                  "src": "6927:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 25195,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25187,
                                  "src": "6931:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_853c4849443241e2249adafa4f69c8bb738b0f17c7a0a9d9997450cd71db4d55",
                                    "typeString": "literal_string \"log(bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 25191,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "6882:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25192,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "6882:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25196,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6882:52:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25190,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "6866:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6866:69:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25198,
                        "nodeType": "ExpressionStatement",
                        "src": "6866:69:63"
                      }
                    ]
                  },
                  "id": 25200,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "6823:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25188,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25185,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "6832:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25200,
                        "src": "6827:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25184,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6827:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25187,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "6844:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25200,
                        "src": "6836:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25186,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6836:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6826:21:63"
                  },
                  "returnParameters": {
                    "id": 25189,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6862:0:63"
                  },
                  "scope": 32437,
                  "src": "6814:125:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25216,
                    "nodeType": "Block",
                    "src": "6990:77:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e7429",
                                  "id": 25210,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7034:19:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_2243cfa3a64f0f85afef83b08ba731ebd8a4b1053fdc66eb414b069452c9f133",
                                    "typeString": "literal_string \"log(address,uint)\""
                                  },
                                  "value": "log(address,uint)"
                                },
                                {
                                  "id": 25211,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25202,
                                  "src": "7055:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 25212,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25204,
                                  "src": "7059:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_2243cfa3a64f0f85afef83b08ba731ebd8a4b1053fdc66eb414b069452c9f133",
                                    "typeString": "literal_string \"log(address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 25208,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "7010:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25209,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "7010:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7010:52:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25207,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "6994:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6994:69:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25215,
                        "nodeType": "ExpressionStatement",
                        "src": "6994:69:63"
                      }
                    ]
                  },
                  "id": 25217,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "6951:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25205,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25202,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "6963:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25217,
                        "src": "6955:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25201,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6955:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25204,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "6972:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25217,
                        "src": "6967:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25203,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "6967:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6954:21:63"
                  },
                  "returnParameters": {
                    "id": 25206,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6990:0:63"
                  },
                  "scope": 32437,
                  "src": "6942:125:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25233,
                    "nodeType": "Block",
                    "src": "7127:79:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e6729",
                                  "id": 25227,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7171:21:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_759f86bbdd0758679ecefbd32ea620068b2339dddd9e45ee0fa567ee6c81f0ab",
                                    "typeString": "literal_string \"log(address,string)\""
                                  },
                                  "value": "log(address,string)"
                                },
                                {
                                  "id": 25228,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25219,
                                  "src": "7194:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 25229,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25221,
                                  "src": "7198:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_759f86bbdd0758679ecefbd32ea620068b2339dddd9e45ee0fa567ee6c81f0ab",
                                    "typeString": "literal_string \"log(address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 25225,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "7147:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25226,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "7147:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25230,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7147:54:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25224,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "7131:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7131:71:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25232,
                        "nodeType": "ExpressionStatement",
                        "src": "7131:71:63"
                      }
                    ]
                  },
                  "id": 25234,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "7079:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25222,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25219,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "7091:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25234,
                        "src": "7083:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25218,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7083:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25221,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "7109:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25234,
                        "src": "7095:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25220,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7095:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7082:30:63"
                  },
                  "returnParameters": {
                    "id": 25223,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7127:0:63"
                  },
                  "scope": 32437,
                  "src": "7070:136:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25250,
                    "nodeType": "Block",
                    "src": "7257:77:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c29",
                                  "id": 25244,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7301:19:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_75b605d31a3bf49c8d814696c7c66216d3a7e81348c450078f032e425592f72b",
                                    "typeString": "literal_string \"log(address,bool)\""
                                  },
                                  "value": "log(address,bool)"
                                },
                                {
                                  "id": 25245,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25236,
                                  "src": "7322:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 25246,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25238,
                                  "src": "7326:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_75b605d31a3bf49c8d814696c7c66216d3a7e81348c450078f032e425592f72b",
                                    "typeString": "literal_string \"log(address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 25242,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "7277:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25243,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "7277:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25247,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7277:52:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25241,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "7261:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7261:69:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25249,
                        "nodeType": "ExpressionStatement",
                        "src": "7261:69:63"
                      }
                    ]
                  },
                  "id": 25251,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "7218:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25239,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25236,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "7230:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25251,
                        "src": "7222:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25235,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7222:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25238,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "7239:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25251,
                        "src": "7234:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25237,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7234:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7221:21:63"
                  },
                  "returnParameters": {
                    "id": 25240,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7257:0:63"
                  },
                  "scope": 32437,
                  "src": "7209:125:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25267,
                    "nodeType": "Block",
                    "src": "7388:80:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c6164647265737329",
                                  "id": 25261,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7432:22:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_daf0d4aa9a5679e832ac921da67b43572b4326ee2565442d3ed255b48cfb5161",
                                    "typeString": "literal_string \"log(address,address)\""
                                  },
                                  "value": "log(address,address)"
                                },
                                {
                                  "id": 25262,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25253,
                                  "src": "7456:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 25263,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25255,
                                  "src": "7460:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_daf0d4aa9a5679e832ac921da67b43572b4326ee2565442d3ed255b48cfb5161",
                                    "typeString": "literal_string \"log(address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 25259,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "7408:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25260,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "7408:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7408:55:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25258,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "7392:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7392:72:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25266,
                        "nodeType": "ExpressionStatement",
                        "src": "7392:72:63"
                      }
                    ]
                  },
                  "id": 25268,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "7346:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25256,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25253,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "7358:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25268,
                        "src": "7350:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25252,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7350:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25255,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "7370:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25268,
                        "src": "7362:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25254,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7362:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7349:24:63"
                  },
                  "returnParameters": {
                    "id": 25257,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7388:0:63"
                  },
                  "scope": 32437,
                  "src": "7337:131:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25287,
                    "nodeType": "Block",
                    "src": "7525:83:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c75696e7429",
                                  "id": 25280,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7569:21:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e7820a7400e33a94b0ae6f00adee99b97ebef8b77c9e38dd555c2f6b541dee17",
                                    "typeString": "literal_string \"log(uint,uint,uint)\""
                                  },
                                  "value": "log(uint,uint,uint)"
                                },
                                {
                                  "id": 25281,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25270,
                                  "src": "7592:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25282,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25272,
                                  "src": "7596:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25283,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25274,
                                  "src": "7600:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_e7820a7400e33a94b0ae6f00adee99b97ebef8b77c9e38dd555c2f6b541dee17",
                                    "typeString": "literal_string \"log(uint,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 25278,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "7545:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25279,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "7545:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25284,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7545:58:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25277,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "7529:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7529:75:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25286,
                        "nodeType": "ExpressionStatement",
                        "src": "7529:75:63"
                      }
                    ]
                  },
                  "id": 25288,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "7480:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25275,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25270,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "7489:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25288,
                        "src": "7484:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25269,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7484:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25272,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "7498:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25288,
                        "src": "7493:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25271,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7493:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25274,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "7507:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25288,
                        "src": "7502:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25273,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7502:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7483:27:63"
                  },
                  "returnParameters": {
                    "id": 25276,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7525:0:63"
                  },
                  "scope": 32437,
                  "src": "7471:137:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25307,
                    "nodeType": "Block",
                    "src": "7674:85:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c737472696e6729",
                                  "id": 25300,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7718:23:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_7d690ee617a4217569e96b85c815115b0eee15407adaa46490ed719a45458699",
                                    "typeString": "literal_string \"log(uint,uint,string)\""
                                  },
                                  "value": "log(uint,uint,string)"
                                },
                                {
                                  "id": 25301,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25290,
                                  "src": "7743:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25302,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25292,
                                  "src": "7747:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25303,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25294,
                                  "src": "7751:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_7d690ee617a4217569e96b85c815115b0eee15407adaa46490ed719a45458699",
                                    "typeString": "literal_string \"log(uint,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 25298,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "7694:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25299,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "7694:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7694:60:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25297,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "7678:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7678:77:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25306,
                        "nodeType": "ExpressionStatement",
                        "src": "7678:77:63"
                      }
                    ]
                  },
                  "id": 25308,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "7620:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25295,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25290,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "7629:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25308,
                        "src": "7624:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25289,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7624:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25292,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "7638:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25308,
                        "src": "7633:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25291,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7633:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25294,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "7656:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25308,
                        "src": "7642:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25293,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "7642:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7623:36:63"
                  },
                  "returnParameters": {
                    "id": 25296,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7674:0:63"
                  },
                  "scope": 32437,
                  "src": "7611:148:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25327,
                    "nodeType": "Block",
                    "src": "7816:83:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c626f6f6c29",
                                  "id": 25320,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7860:21:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_67570ff704783f5d282b26317dc28aeb4fe23c085020ec6e580604c709916fa8",
                                    "typeString": "literal_string \"log(uint,uint,bool)\""
                                  },
                                  "value": "log(uint,uint,bool)"
                                },
                                {
                                  "id": 25321,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25310,
                                  "src": "7883:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25322,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25312,
                                  "src": "7887:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25323,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25314,
                                  "src": "7891:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_67570ff704783f5d282b26317dc28aeb4fe23c085020ec6e580604c709916fa8",
                                    "typeString": "literal_string \"log(uint,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 25318,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "7836:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25319,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "7836:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7836:58:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25317,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "7820:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7820:75:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25326,
                        "nodeType": "ExpressionStatement",
                        "src": "7820:75:63"
                      }
                    ]
                  },
                  "id": 25328,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "7771:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25315,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25310,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "7780:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25328,
                        "src": "7775:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25309,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7775:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25312,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "7789:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25328,
                        "src": "7784:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25311,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7784:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25314,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "7798:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25328,
                        "src": "7793:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25313,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7793:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7774:27:63"
                  },
                  "returnParameters": {
                    "id": 25316,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7816:0:63"
                  },
                  "scope": 32437,
                  "src": "7762:137:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25347,
                    "nodeType": "Block",
                    "src": "7959:86:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c6164647265737329",
                                  "id": 25340,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8003:24:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_be33491b8b53b7f3deae2959d1f4b0a22e6967a778c50f03dc188de84a207616",
                                    "typeString": "literal_string \"log(uint,uint,address)\""
                                  },
                                  "value": "log(uint,uint,address)"
                                },
                                {
                                  "id": 25341,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25330,
                                  "src": "8029:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25342,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25332,
                                  "src": "8033:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25343,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25334,
                                  "src": "8037:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_be33491b8b53b7f3deae2959d1f4b0a22e6967a778c50f03dc188de84a207616",
                                    "typeString": "literal_string \"log(uint,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 25338,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "7979:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "7979:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25344,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7979:61:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25337,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "7963:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7963:78:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25346,
                        "nodeType": "ExpressionStatement",
                        "src": "7963:78:63"
                      }
                    ]
                  },
                  "id": 25348,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "7911:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25335,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25330,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "7920:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25348,
                        "src": "7915:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25329,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7915:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25332,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "7929:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25348,
                        "src": "7924:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25331,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "7924:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25334,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "7941:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25348,
                        "src": "7933:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25333,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7933:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7914:30:63"
                  },
                  "returnParameters": {
                    "id": 25336,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7959:0:63"
                  },
                  "scope": 32437,
                  "src": "7902:143:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25367,
                    "nodeType": "Block",
                    "src": "8111:85:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c75696e7429",
                                  "id": 25360,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8155:23:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5b6de83ff0d95cd44df8bb8bfd95aa0a6291cab3b8502d85b1dcfd35a64c81cd",
                                    "typeString": "literal_string \"log(uint,string,uint)\""
                                  },
                                  "value": "log(uint,string,uint)"
                                },
                                {
                                  "id": 25361,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25350,
                                  "src": "8180:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25362,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25352,
                                  "src": "8184:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25363,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25354,
                                  "src": "8188:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_5b6de83ff0d95cd44df8bb8bfd95aa0a6291cab3b8502d85b1dcfd35a64c81cd",
                                    "typeString": "literal_string \"log(uint,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 25358,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "8131:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25359,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "8131:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25364,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8131:60:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25357,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "8115:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8115:77:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25366,
                        "nodeType": "ExpressionStatement",
                        "src": "8115:77:63"
                      }
                    ]
                  },
                  "id": 25368,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "8057:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25355,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25350,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "8066:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25368,
                        "src": "8061:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25349,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8061:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25352,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "8084:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25368,
                        "src": "8070:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25351,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "8070:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25354,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "8093:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25368,
                        "src": "8088:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25353,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8088:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8060:36:63"
                  },
                  "returnParameters": {
                    "id": 25356,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8111:0:63"
                  },
                  "scope": 32437,
                  "src": "8048:148:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25387,
                    "nodeType": "Block",
                    "src": "8271:87:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c737472696e6729",
                                  "id": 25380,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8315:25:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_3f57c295245f8891b303347a08039155dde08dde601649242724a0ce876bcc65",
                                    "typeString": "literal_string \"log(uint,string,string)\""
                                  },
                                  "value": "log(uint,string,string)"
                                },
                                {
                                  "id": 25381,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25370,
                                  "src": "8342:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25382,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25372,
                                  "src": "8346:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25383,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25374,
                                  "src": "8350:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_3f57c295245f8891b303347a08039155dde08dde601649242724a0ce876bcc65",
                                    "typeString": "literal_string \"log(uint,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 25378,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "8291:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25379,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "8291:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8291:62:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25377,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "8275:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8275:79:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25386,
                        "nodeType": "ExpressionStatement",
                        "src": "8275:79:63"
                      }
                    ]
                  },
                  "id": 25388,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "8208:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25375,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25370,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "8217:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25388,
                        "src": "8212:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25369,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8212:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25372,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "8235:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25388,
                        "src": "8221:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25371,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "8221:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25374,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "8253:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25388,
                        "src": "8239:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25373,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "8239:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8211:45:63"
                  },
                  "returnParameters": {
                    "id": 25376,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8271:0:63"
                  },
                  "scope": 32437,
                  "src": "8199:159:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25407,
                    "nodeType": "Block",
                    "src": "8424:85:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c626f6f6c29",
                                  "id": 25400,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8468:23:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_46a7d0ce13c2c26d158d9defa8ce488dbeb81d3c852592fb370bd45953199485",
                                    "typeString": "literal_string \"log(uint,string,bool)\""
                                  },
                                  "value": "log(uint,string,bool)"
                                },
                                {
                                  "id": 25401,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25390,
                                  "src": "8493:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25402,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25392,
                                  "src": "8497:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25403,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25394,
                                  "src": "8501:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_46a7d0ce13c2c26d158d9defa8ce488dbeb81d3c852592fb370bd45953199485",
                                    "typeString": "literal_string \"log(uint,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 25398,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "8444:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25399,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "8444:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25404,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8444:60:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25397,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "8428:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8428:77:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25406,
                        "nodeType": "ExpressionStatement",
                        "src": "8428:77:63"
                      }
                    ]
                  },
                  "id": 25408,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "8370:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25395,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25390,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "8379:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25408,
                        "src": "8374:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25389,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8374:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25392,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "8397:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25408,
                        "src": "8383:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25391,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "8383:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25394,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "8406:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25408,
                        "src": "8401:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25393,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8401:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8373:36:63"
                  },
                  "returnParameters": {
                    "id": 25396,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8424:0:63"
                  },
                  "scope": 32437,
                  "src": "8361:148:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25427,
                    "nodeType": "Block",
                    "src": "8578:88:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c6164647265737329",
                                  "id": 25420,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8622:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_1f90f24a472e5198a9eef41600323c8a476ef0a1db1496125f7d053a74d474ac",
                                    "typeString": "literal_string \"log(uint,string,address)\""
                                  },
                                  "value": "log(uint,string,address)"
                                },
                                {
                                  "id": 25421,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25410,
                                  "src": "8650:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25422,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25412,
                                  "src": "8654:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25423,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25414,
                                  "src": "8658:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_1f90f24a472e5198a9eef41600323c8a476ef0a1db1496125f7d053a74d474ac",
                                    "typeString": "literal_string \"log(uint,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 25418,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "8598:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25419,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "8598:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25424,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8598:63:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25417,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "8582:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25425,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8582:80:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25426,
                        "nodeType": "ExpressionStatement",
                        "src": "8582:80:63"
                      }
                    ]
                  },
                  "id": 25428,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "8521:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25415,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25410,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "8530:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25428,
                        "src": "8525:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25409,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8525:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25412,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "8548:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25428,
                        "src": "8534:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25411,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "8534:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25414,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "8560:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25428,
                        "src": "8552:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25413,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8552:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8524:39:63"
                  },
                  "returnParameters": {
                    "id": 25416,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8578:0:63"
                  },
                  "scope": 32437,
                  "src": "8512:154:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25447,
                    "nodeType": "Block",
                    "src": "8723:83:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c75696e7429",
                                  "id": 25440,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8767:21:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5a4d9922ab81f1126dafac21c1ce3fb483db2e4898341fe0758315eb5f3054d6",
                                    "typeString": "literal_string \"log(uint,bool,uint)\""
                                  },
                                  "value": "log(uint,bool,uint)"
                                },
                                {
                                  "id": 25441,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25430,
                                  "src": "8790:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25442,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25432,
                                  "src": "8794:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 25443,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25434,
                                  "src": "8798:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_5a4d9922ab81f1126dafac21c1ce3fb483db2e4898341fe0758315eb5f3054d6",
                                    "typeString": "literal_string \"log(uint,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 25438,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "8743:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25439,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "8743:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25444,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8743:58:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25437,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "8727:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8727:75:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25446,
                        "nodeType": "ExpressionStatement",
                        "src": "8727:75:63"
                      }
                    ]
                  },
                  "id": 25448,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "8678:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25435,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25430,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "8687:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25448,
                        "src": "8682:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25429,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8682:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25432,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "8696:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25448,
                        "src": "8691:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25431,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8691:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25434,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "8705:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25448,
                        "src": "8700:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25433,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8700:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8681:27:63"
                  },
                  "returnParameters": {
                    "id": 25436,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8723:0:63"
                  },
                  "scope": 32437,
                  "src": "8669:137:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25467,
                    "nodeType": "Block",
                    "src": "8872:85:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c737472696e6729",
                                  "id": 25460,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8916:23:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_8b0e14fe247223cbba6a19a2fac250db70b4f126d0f3f63ac9c3f080885b9f82",
                                    "typeString": "literal_string \"log(uint,bool,string)\""
                                  },
                                  "value": "log(uint,bool,string)"
                                },
                                {
                                  "id": 25461,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25450,
                                  "src": "8941:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25462,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25452,
                                  "src": "8945:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 25463,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25454,
                                  "src": "8949:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_8b0e14fe247223cbba6a19a2fac250db70b4f126d0f3f63ac9c3f080885b9f82",
                                    "typeString": "literal_string \"log(uint,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 25458,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "8892:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25459,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "8892:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8892:60:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25457,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "8876:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8876:77:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25466,
                        "nodeType": "ExpressionStatement",
                        "src": "8876:77:63"
                      }
                    ]
                  },
                  "id": 25468,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "8818:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25455,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25450,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "8827:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25468,
                        "src": "8822:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25449,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8822:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25452,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "8836:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25468,
                        "src": "8831:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25451,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8831:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25454,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "8854:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25468,
                        "src": "8840:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25453,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "8840:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8821:36:63"
                  },
                  "returnParameters": {
                    "id": 25456,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8872:0:63"
                  },
                  "scope": 32437,
                  "src": "8809:148:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25487,
                    "nodeType": "Block",
                    "src": "9014:83:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c626f6f6c29",
                                  "id": 25480,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9058:21:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_d5ceace024d24c243571d0b2393ca9fb37aa961a0e028332e72cd7dfb84c0971",
                                    "typeString": "literal_string \"log(uint,bool,bool)\""
                                  },
                                  "value": "log(uint,bool,bool)"
                                },
                                {
                                  "id": 25481,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25470,
                                  "src": "9081:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25482,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25472,
                                  "src": "9085:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 25483,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25474,
                                  "src": "9089:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_d5ceace024d24c243571d0b2393ca9fb37aa961a0e028332e72cd7dfb84c0971",
                                    "typeString": "literal_string \"log(uint,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 25478,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "9034:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25479,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "9034:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25484,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9034:58:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25477,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "9018:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25485,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9018:75:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25486,
                        "nodeType": "ExpressionStatement",
                        "src": "9018:75:63"
                      }
                    ]
                  },
                  "id": 25488,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "8969:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25475,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25470,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "8978:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25488,
                        "src": "8973:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25469,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "8973:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25472,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "8987:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25488,
                        "src": "8982:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25471,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8982:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25474,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "8996:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25488,
                        "src": "8991:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25473,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8991:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8972:27:63"
                  },
                  "returnParameters": {
                    "id": 25476,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9014:0:63"
                  },
                  "scope": 32437,
                  "src": "8960:137:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25507,
                    "nodeType": "Block",
                    "src": "9157:86:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c6164647265737329",
                                  "id": 25500,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9201:24:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_424effbf6346b3a7c79debdbad20f804c7961e0193d509136d2bb7c09c7ff9b2",
                                    "typeString": "literal_string \"log(uint,bool,address)\""
                                  },
                                  "value": "log(uint,bool,address)"
                                },
                                {
                                  "id": 25501,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25490,
                                  "src": "9227:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25502,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25492,
                                  "src": "9231:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 25503,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25494,
                                  "src": "9235:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_424effbf6346b3a7c79debdbad20f804c7961e0193d509136d2bb7c09c7ff9b2",
                                    "typeString": "literal_string \"log(uint,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 25498,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "9177:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25499,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "9177:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9177:61:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25497,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "9161:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9161:78:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25506,
                        "nodeType": "ExpressionStatement",
                        "src": "9161:78:63"
                      }
                    ]
                  },
                  "id": 25508,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "9109:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25495,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25490,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "9118:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25508,
                        "src": "9113:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25489,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9113:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25492,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "9127:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25508,
                        "src": "9122:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25491,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9122:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25494,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "9139:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25508,
                        "src": "9131:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25493,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9131:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9112:30:63"
                  },
                  "returnParameters": {
                    "id": 25496,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9157:0:63"
                  },
                  "scope": 32437,
                  "src": "9100:143:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25527,
                    "nodeType": "Block",
                    "src": "9303:86:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c75696e7429",
                                  "id": 25520,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9347:24:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_884343aaf095a99f79852cd574543144a9a04148c5eb5687826e5e86a2554617",
                                    "typeString": "literal_string \"log(uint,address,uint)\""
                                  },
                                  "value": "log(uint,address,uint)"
                                },
                                {
                                  "id": 25521,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25510,
                                  "src": "9373:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25522,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25512,
                                  "src": "9377:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 25523,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25514,
                                  "src": "9381:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_884343aaf095a99f79852cd574543144a9a04148c5eb5687826e5e86a2554617",
                                    "typeString": "literal_string \"log(uint,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 25518,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "9323:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "9323:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9323:61:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25517,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "9307:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9307:78:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25526,
                        "nodeType": "ExpressionStatement",
                        "src": "9307:78:63"
                      }
                    ]
                  },
                  "id": 25528,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "9255:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25515,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25510,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "9264:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25528,
                        "src": "9259:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25509,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9259:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25512,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "9276:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25528,
                        "src": "9268:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25511,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9268:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25514,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "9285:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25528,
                        "src": "9280:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25513,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9280:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9258:30:63"
                  },
                  "returnParameters": {
                    "id": 25516,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9303:0:63"
                  },
                  "scope": 32437,
                  "src": "9246:143:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25547,
                    "nodeType": "Block",
                    "src": "9458:88:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c737472696e6729",
                                  "id": 25540,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9502:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_ce83047b6eeeca52b57db5064e316bb4dc615477077814d1a191d68a4818cbed",
                                    "typeString": "literal_string \"log(uint,address,string)\""
                                  },
                                  "value": "log(uint,address,string)"
                                },
                                {
                                  "id": 25541,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25530,
                                  "src": "9530:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25542,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25532,
                                  "src": "9534:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 25543,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25534,
                                  "src": "9538:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_ce83047b6eeeca52b57db5064e316bb4dc615477077814d1a191d68a4818cbed",
                                    "typeString": "literal_string \"log(uint,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 25538,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "9478:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25539,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "9478:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25544,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9478:63:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25537,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "9462:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9462:80:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25546,
                        "nodeType": "ExpressionStatement",
                        "src": "9462:80:63"
                      }
                    ]
                  },
                  "id": 25548,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "9401:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25535,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25530,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "9410:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25548,
                        "src": "9405:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25529,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9405:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25532,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "9422:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25548,
                        "src": "9414:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25531,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9414:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25534,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "9440:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25548,
                        "src": "9426:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25533,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "9426:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9404:39:63"
                  },
                  "returnParameters": {
                    "id": 25536,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9458:0:63"
                  },
                  "scope": 32437,
                  "src": "9392:154:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25567,
                    "nodeType": "Block",
                    "src": "9606:86:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c626f6f6c29",
                                  "id": 25560,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9650:24:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_7ad0128e41690364edd967a051c6d9cea9f7c322246c5ed2ebc0083265828a80",
                                    "typeString": "literal_string \"log(uint,address,bool)\""
                                  },
                                  "value": "log(uint,address,bool)"
                                },
                                {
                                  "id": 25561,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25550,
                                  "src": "9676:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25562,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25552,
                                  "src": "9680:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 25563,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25554,
                                  "src": "9684:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_7ad0128e41690364edd967a051c6d9cea9f7c322246c5ed2ebc0083265828a80",
                                    "typeString": "literal_string \"log(uint,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 25558,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "9626:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25559,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "9626:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25564,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9626:61:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25557,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "9610:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9610:78:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25566,
                        "nodeType": "ExpressionStatement",
                        "src": "9610:78:63"
                      }
                    ]
                  },
                  "id": 25568,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "9558:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25555,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25550,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "9567:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25568,
                        "src": "9562:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25549,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9562:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25552,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "9579:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25568,
                        "src": "9571:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25551,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9571:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25554,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "9588:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25568,
                        "src": "9583:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25553,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9583:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9561:30:63"
                  },
                  "returnParameters": {
                    "id": 25556,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9606:0:63"
                  },
                  "scope": 32437,
                  "src": "9549:143:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25587,
                    "nodeType": "Block",
                    "src": "9755:89:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c6164647265737329",
                                  "id": 25580,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9799:27:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_7d77a61be18c592527fe1ce89d591c1badea18ef3198dacc513c5ba08449fd7b",
                                    "typeString": "literal_string \"log(uint,address,address)\""
                                  },
                                  "value": "log(uint,address,address)"
                                },
                                {
                                  "id": 25581,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25570,
                                  "src": "9828:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25582,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25572,
                                  "src": "9832:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 25583,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25574,
                                  "src": "9836:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_7d77a61be18c592527fe1ce89d591c1badea18ef3198dacc513c5ba08449fd7b",
                                    "typeString": "literal_string \"log(uint,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 25578,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "9775:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25579,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "9775:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25584,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9775:64:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25577,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "9759:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9759:81:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25586,
                        "nodeType": "ExpressionStatement",
                        "src": "9759:81:63"
                      }
                    ]
                  },
                  "id": 25588,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "9704:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25575,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25570,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "9713:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25588,
                        "src": "9708:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25569,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9708:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25572,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "9725:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25588,
                        "src": "9717:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25571,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9717:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25574,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "9737:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25588,
                        "src": "9729:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25573,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9729:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9707:33:63"
                  },
                  "returnParameters": {
                    "id": 25576,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9755:0:63"
                  },
                  "scope": 32437,
                  "src": "9695:149:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25607,
                    "nodeType": "Block",
                    "src": "9910:85:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c75696e7429",
                                  "id": 25600,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9954:23:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_969cdd03749f5aa30c7fce9178272cdca616cb2cc28128d3b9824be8046f827e",
                                    "typeString": "literal_string \"log(string,uint,uint)\""
                                  },
                                  "value": "log(string,uint,uint)"
                                },
                                {
                                  "id": 25601,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25590,
                                  "src": "9979:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25602,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25592,
                                  "src": "9983:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25603,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25594,
                                  "src": "9987:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_969cdd03749f5aa30c7fce9178272cdca616cb2cc28128d3b9824be8046f827e",
                                    "typeString": "literal_string \"log(string,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 25598,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "9930:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25599,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "9930:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25604,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9930:60:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25597,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "9914:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9914:77:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25606,
                        "nodeType": "ExpressionStatement",
                        "src": "9914:77:63"
                      }
                    ]
                  },
                  "id": 25608,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "9856:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25595,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25590,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "9874:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25608,
                        "src": "9860:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25589,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "9860:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25592,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "9883:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25608,
                        "src": "9878:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25591,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9878:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25594,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "9892:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25608,
                        "src": "9887:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25593,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "9887:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9859:36:63"
                  },
                  "returnParameters": {
                    "id": 25596,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9910:0:63"
                  },
                  "scope": 32437,
                  "src": "9847:148:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25627,
                    "nodeType": "Block",
                    "src": "10070:87:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c737472696e6729",
                                  "id": 25620,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10114:25:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a3f5c739d439f7a3912e960230088fb752539d00203d48771c643a12b26892ec",
                                    "typeString": "literal_string \"log(string,uint,string)\""
                                  },
                                  "value": "log(string,uint,string)"
                                },
                                {
                                  "id": 25621,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25610,
                                  "src": "10141:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25622,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25612,
                                  "src": "10145:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25623,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25614,
                                  "src": "10149:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a3f5c739d439f7a3912e960230088fb752539d00203d48771c643a12b26892ec",
                                    "typeString": "literal_string \"log(string,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 25618,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "10090:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25619,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "10090:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10090:62:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25617,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "10074:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25625,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10074:79:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25626,
                        "nodeType": "ExpressionStatement",
                        "src": "10074:79:63"
                      }
                    ]
                  },
                  "id": 25628,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "10007:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25615,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25610,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "10025:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25628,
                        "src": "10011:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25609,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "10011:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25612,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "10034:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25628,
                        "src": "10029:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25611,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "10029:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25614,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "10052:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25628,
                        "src": "10038:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25613,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "10038:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10010:45:63"
                  },
                  "returnParameters": {
                    "id": 25616,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10070:0:63"
                  },
                  "scope": 32437,
                  "src": "9998:159:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25647,
                    "nodeType": "Block",
                    "src": "10223:85:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c626f6f6c29",
                                  "id": 25640,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10267:23:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f102ee05f3b79d3bc2ba0350401e35479d9f95705fb40abfaeb49d12355695b3",
                                    "typeString": "literal_string \"log(string,uint,bool)\""
                                  },
                                  "value": "log(string,uint,bool)"
                                },
                                {
                                  "id": 25641,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25630,
                                  "src": "10292:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25642,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25632,
                                  "src": "10296:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25643,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25634,
                                  "src": "10300:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_f102ee05f3b79d3bc2ba0350401e35479d9f95705fb40abfaeb49d12355695b3",
                                    "typeString": "literal_string \"log(string,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 25638,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "10243:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25639,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "10243:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25644,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10243:60:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25637,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "10227:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25645,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10227:77:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25646,
                        "nodeType": "ExpressionStatement",
                        "src": "10227:77:63"
                      }
                    ]
                  },
                  "id": 25648,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "10169:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25635,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25630,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "10187:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25648,
                        "src": "10173:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25629,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "10173:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25632,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "10196:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25648,
                        "src": "10191:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25631,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "10191:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25634,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "10205:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25648,
                        "src": "10200:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25633,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10200:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10172:36:63"
                  },
                  "returnParameters": {
                    "id": 25636,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10223:0:63"
                  },
                  "scope": 32437,
                  "src": "10160:148:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25667,
                    "nodeType": "Block",
                    "src": "10377:88:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c6164647265737329",
                                  "id": 25660,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10421:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e3849f79a3c07bea1bae0837bfeee5da2531684b262865f1541a60df4fcd512a",
                                    "typeString": "literal_string \"log(string,uint,address)\""
                                  },
                                  "value": "log(string,uint,address)"
                                },
                                {
                                  "id": 25661,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25650,
                                  "src": "10449:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25662,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25652,
                                  "src": "10453:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25663,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25654,
                                  "src": "10457:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_e3849f79a3c07bea1bae0837bfeee5da2531684b262865f1541a60df4fcd512a",
                                    "typeString": "literal_string \"log(string,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 25658,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "10397:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25659,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "10397:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25664,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10397:63:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25657,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "10381:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25665,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10381:80:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25666,
                        "nodeType": "ExpressionStatement",
                        "src": "10381:80:63"
                      }
                    ]
                  },
                  "id": 25668,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "10320:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25655,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25650,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "10338:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25668,
                        "src": "10324:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25649,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "10324:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25652,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "10347:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25668,
                        "src": "10342:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25651,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "10342:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25654,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "10359:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25668,
                        "src": "10351:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25653,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10351:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10323:39:63"
                  },
                  "returnParameters": {
                    "id": 25656,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10377:0:63"
                  },
                  "scope": 32437,
                  "src": "10311:154:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25687,
                    "nodeType": "Block",
                    "src": "10540:87:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c75696e7429",
                                  "id": 25680,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10584:25:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f362ca59af8dc58335601f00e8a4f3f8cd0c03c9716c1459118a41613b5e0147",
                                    "typeString": "literal_string \"log(string,string,uint)\""
                                  },
                                  "value": "log(string,string,uint)"
                                },
                                {
                                  "id": 25681,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25670,
                                  "src": "10611:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25682,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25672,
                                  "src": "10615:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25683,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25674,
                                  "src": "10619:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_f362ca59af8dc58335601f00e8a4f3f8cd0c03c9716c1459118a41613b5e0147",
                                    "typeString": "literal_string \"log(string,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 25678,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "10560:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25679,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "10560:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25684,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10560:62:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25677,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "10544:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25685,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10544:79:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25686,
                        "nodeType": "ExpressionStatement",
                        "src": "10544:79:63"
                      }
                    ]
                  },
                  "id": 25688,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "10477:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25675,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25670,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "10495:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25688,
                        "src": "10481:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25669,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "10481:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25672,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "10513:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25688,
                        "src": "10499:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25671,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "10499:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25674,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "10522:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25688,
                        "src": "10517:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25673,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "10517:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10480:45:63"
                  },
                  "returnParameters": {
                    "id": 25676,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10540:0:63"
                  },
                  "scope": 32437,
                  "src": "10468:159:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25707,
                    "nodeType": "Block",
                    "src": "10711:89:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c737472696e6729",
                                  "id": 25700,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10755:27:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_2ced7cef693312206c21f0e92e3b54e2e16bf33db5eec350c78866822c665e1f",
                                    "typeString": "literal_string \"log(string,string,string)\""
                                  },
                                  "value": "log(string,string,string)"
                                },
                                {
                                  "id": 25701,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25690,
                                  "src": "10784:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25702,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25692,
                                  "src": "10788:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25703,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25694,
                                  "src": "10792:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_2ced7cef693312206c21f0e92e3b54e2e16bf33db5eec350c78866822c665e1f",
                                    "typeString": "literal_string \"log(string,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 25698,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "10731:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25699,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "10731:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25704,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10731:64:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25697,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "10715:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25705,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10715:81:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25706,
                        "nodeType": "ExpressionStatement",
                        "src": "10715:81:63"
                      }
                    ]
                  },
                  "id": 25708,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "10639:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25695,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25690,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "10657:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25708,
                        "src": "10643:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25689,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "10643:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25692,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "10675:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25708,
                        "src": "10661:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25691,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "10661:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25694,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "10693:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25708,
                        "src": "10679:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25693,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "10679:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10642:54:63"
                  },
                  "returnParameters": {
                    "id": 25696,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10711:0:63"
                  },
                  "scope": 32437,
                  "src": "10630:170:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25727,
                    "nodeType": "Block",
                    "src": "10875:87:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c626f6f6c29",
                                  "id": 25720,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10919:25:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_b0e0f9b5ad960213f9ab262d120ce4ec3edffc58d1ad51b99628a777e82d8acb",
                                    "typeString": "literal_string \"log(string,string,bool)\""
                                  },
                                  "value": "log(string,string,bool)"
                                },
                                {
                                  "id": 25721,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25710,
                                  "src": "10946:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25722,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25712,
                                  "src": "10950:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25723,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25714,
                                  "src": "10954:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_b0e0f9b5ad960213f9ab262d120ce4ec3edffc58d1ad51b99628a777e82d8acb",
                                    "typeString": "literal_string \"log(string,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 25718,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "10895:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25719,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "10895:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25724,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10895:62:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25717,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "10879:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10879:79:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25726,
                        "nodeType": "ExpressionStatement",
                        "src": "10879:79:63"
                      }
                    ]
                  },
                  "id": 25728,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "10812:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25715,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25710,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "10830:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25728,
                        "src": "10816:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25709,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "10816:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25712,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "10848:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25728,
                        "src": "10834:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25711,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "10834:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25714,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "10857:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25728,
                        "src": "10852:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25713,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10852:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10815:45:63"
                  },
                  "returnParameters": {
                    "id": 25716,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10875:0:63"
                  },
                  "scope": 32437,
                  "src": "10803:159:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25747,
                    "nodeType": "Block",
                    "src": "11040:90:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c6164647265737329",
                                  "id": 25740,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11084:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_95ed0195ee22a092ad93d352c33e8dc78b91f0c01eab9cff270af55b2ae65768",
                                    "typeString": "literal_string \"log(string,string,address)\""
                                  },
                                  "value": "log(string,string,address)"
                                },
                                {
                                  "id": 25741,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25730,
                                  "src": "11114:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25742,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25732,
                                  "src": "11118:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25743,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25734,
                                  "src": "11122:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_95ed0195ee22a092ad93d352c33e8dc78b91f0c01eab9cff270af55b2ae65768",
                                    "typeString": "literal_string \"log(string,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 25738,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "11060:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25739,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "11060:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25744,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11060:65:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25737,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "11044:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11044:82:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25746,
                        "nodeType": "ExpressionStatement",
                        "src": "11044:82:63"
                      }
                    ]
                  },
                  "id": 25748,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "10974:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25735,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25730,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "10992:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25748,
                        "src": "10978:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25729,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "10978:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25732,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "11010:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25748,
                        "src": "10996:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25731,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "10996:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25734,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "11022:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25748,
                        "src": "11014:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25733,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11014:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10977:48:63"
                  },
                  "returnParameters": {
                    "id": 25736,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11040:0:63"
                  },
                  "scope": 32437,
                  "src": "10965:165:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25767,
                    "nodeType": "Block",
                    "src": "11196:85:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c75696e7429",
                                  "id": 25760,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11240:23:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_291bb9d00defdc1b95c66c8b4bc10ef714a549c4f22fb190fe687dc5e85a4db1",
                                    "typeString": "literal_string \"log(string,bool,uint)\""
                                  },
                                  "value": "log(string,bool,uint)"
                                },
                                {
                                  "id": 25761,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25750,
                                  "src": "11265:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25762,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25752,
                                  "src": "11269:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 25763,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25754,
                                  "src": "11273:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_291bb9d00defdc1b95c66c8b4bc10ef714a549c4f22fb190fe687dc5e85a4db1",
                                    "typeString": "literal_string \"log(string,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 25758,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "11216:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25759,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "11216:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25764,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11216:60:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25757,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "11200:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11200:77:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25766,
                        "nodeType": "ExpressionStatement",
                        "src": "11200:77:63"
                      }
                    ]
                  },
                  "id": 25768,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "11142:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25755,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25750,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "11160:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25768,
                        "src": "11146:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25749,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "11146:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25752,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "11169:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25768,
                        "src": "11164:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25751,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11164:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25754,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "11178:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25768,
                        "src": "11173:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25753,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "11173:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11145:36:63"
                  },
                  "returnParameters": {
                    "id": 25756,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11196:0:63"
                  },
                  "scope": 32437,
                  "src": "11133:148:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25787,
                    "nodeType": "Block",
                    "src": "11356:87:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c737472696e6729",
                                  "id": 25780,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11400:25:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e298f47d872a89293d316b9b936000a26f83eda2ba3171b2f9f16e2bf618c3e7",
                                    "typeString": "literal_string \"log(string,bool,string)\""
                                  },
                                  "value": "log(string,bool,string)"
                                },
                                {
                                  "id": 25781,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25770,
                                  "src": "11427:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25782,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25772,
                                  "src": "11431:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 25783,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25774,
                                  "src": "11435:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_e298f47d872a89293d316b9b936000a26f83eda2ba3171b2f9f16e2bf618c3e7",
                                    "typeString": "literal_string \"log(string,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 25778,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "11376:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "11376:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25784,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11376:62:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25777,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "11360:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25785,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11360:79:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25786,
                        "nodeType": "ExpressionStatement",
                        "src": "11360:79:63"
                      }
                    ]
                  },
                  "id": 25788,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "11293:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25775,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25770,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "11311:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25788,
                        "src": "11297:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25769,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "11297:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25772,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "11320:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25788,
                        "src": "11315:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25771,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11315:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25774,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "11338:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25788,
                        "src": "11324:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25773,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "11324:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11296:45:63"
                  },
                  "returnParameters": {
                    "id": 25776,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11356:0:63"
                  },
                  "scope": 32437,
                  "src": "11284:159:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25807,
                    "nodeType": "Block",
                    "src": "11509:85:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c626f6f6c29",
                                  "id": 25800,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11553:23:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_850b7ad637241a873b861925ccffb71aaffb030b1df8850f324c9804bc7b443d",
                                    "typeString": "literal_string \"log(string,bool,bool)\""
                                  },
                                  "value": "log(string,bool,bool)"
                                },
                                {
                                  "id": 25801,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25790,
                                  "src": "11578:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25802,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25792,
                                  "src": "11582:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 25803,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25794,
                                  "src": "11586:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_850b7ad637241a873b861925ccffb71aaffb030b1df8850f324c9804bc7b443d",
                                    "typeString": "literal_string \"log(string,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 25798,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "11529:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25799,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "11529:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25804,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11529:60:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25797,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "11513:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25805,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11513:77:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25806,
                        "nodeType": "ExpressionStatement",
                        "src": "11513:77:63"
                      }
                    ]
                  },
                  "id": 25808,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "11455:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25795,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25790,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "11473:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25808,
                        "src": "11459:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25789,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "11459:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25792,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "11482:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25808,
                        "src": "11477:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25791,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11477:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25794,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "11491:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25808,
                        "src": "11486:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25793,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11486:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11458:36:63"
                  },
                  "returnParameters": {
                    "id": 25796,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11509:0:63"
                  },
                  "scope": 32437,
                  "src": "11446:148:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25827,
                    "nodeType": "Block",
                    "src": "11663:88:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c6164647265737329",
                                  "id": 25820,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11707:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_932bbb385d479707ff387e3bb2d8968a7b4115e938510c531aa15b50507fc27f",
                                    "typeString": "literal_string \"log(string,bool,address)\""
                                  },
                                  "value": "log(string,bool,address)"
                                },
                                {
                                  "id": 25821,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25810,
                                  "src": "11735:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25822,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25812,
                                  "src": "11739:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 25823,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25814,
                                  "src": "11743:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_932bbb385d479707ff387e3bb2d8968a7b4115e938510c531aa15b50507fc27f",
                                    "typeString": "literal_string \"log(string,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 25818,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "11683:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25819,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "11683:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25824,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11683:63:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25817,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "11667:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25825,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11667:80:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25826,
                        "nodeType": "ExpressionStatement",
                        "src": "11667:80:63"
                      }
                    ]
                  },
                  "id": 25828,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "11606:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25815,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25810,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "11624:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25828,
                        "src": "11610:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25809,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "11610:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25812,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "11633:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25828,
                        "src": "11628:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25811,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "11628:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25814,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "11645:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25828,
                        "src": "11637:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25813,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11637:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11609:39:63"
                  },
                  "returnParameters": {
                    "id": 25816,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11663:0:63"
                  },
                  "scope": 32437,
                  "src": "11597:154:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25847,
                    "nodeType": "Block",
                    "src": "11820:88:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c75696e7429",
                                  "id": 25840,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11864:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_07c81217b9c48682941345dce61bbd916a12dd883642c9077891090a71c93a13",
                                    "typeString": "literal_string \"log(string,address,uint)\""
                                  },
                                  "value": "log(string,address,uint)"
                                },
                                {
                                  "id": 25841,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25830,
                                  "src": "11892:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25842,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25832,
                                  "src": "11896:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 25843,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25834,
                                  "src": "11900:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_07c81217b9c48682941345dce61bbd916a12dd883642c9077891090a71c93a13",
                                    "typeString": "literal_string \"log(string,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 25838,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "11840:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25839,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "11840:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25844,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11840:63:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25837,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "11824:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11824:80:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25846,
                        "nodeType": "ExpressionStatement",
                        "src": "11824:80:63"
                      }
                    ]
                  },
                  "id": 25848,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "11763:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25835,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25830,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "11781:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25848,
                        "src": "11767:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25829,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "11767:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25832,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "11793:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25848,
                        "src": "11785:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25831,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11785:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25834,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "11802:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25848,
                        "src": "11797:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25833,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "11797:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11766:39:63"
                  },
                  "returnParameters": {
                    "id": 25836,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11820:0:63"
                  },
                  "scope": 32437,
                  "src": "11754:154:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25867,
                    "nodeType": "Block",
                    "src": "11986:90:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c737472696e6729",
                                  "id": 25860,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12030:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e0e9ad4f87059a51cce5555e129ca819f7e5d52e9c65a4e175882207ee47d634",
                                    "typeString": "literal_string \"log(string,address,string)\""
                                  },
                                  "value": "log(string,address,string)"
                                },
                                {
                                  "id": 25861,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25850,
                                  "src": "12060:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25862,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25852,
                                  "src": "12064:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 25863,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25854,
                                  "src": "12068:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_e0e9ad4f87059a51cce5555e129ca819f7e5d52e9c65a4e175882207ee47d634",
                                    "typeString": "literal_string \"log(string,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 25858,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "12006:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25859,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "12006:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25864,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12006:65:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25857,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "11990:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11990:82:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25866,
                        "nodeType": "ExpressionStatement",
                        "src": "11990:82:63"
                      }
                    ]
                  },
                  "id": 25868,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "11920:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25855,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25850,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "11938:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25868,
                        "src": "11924:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25849,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "11924:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25852,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "11950:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25868,
                        "src": "11942:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25851,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11942:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25854,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "11968:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25868,
                        "src": "11954:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25853,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "11954:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11923:48:63"
                  },
                  "returnParameters": {
                    "id": 25856,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11986:0:63"
                  },
                  "scope": 32437,
                  "src": "11911:165:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25887,
                    "nodeType": "Block",
                    "src": "12145:88:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c626f6f6c29",
                                  "id": 25880,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12189:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c91d5ed4480e0b3323f998bcee9594aa98173c7324b015a4713a7c8429afd0b8",
                                    "typeString": "literal_string \"log(string,address,bool)\""
                                  },
                                  "value": "log(string,address,bool)"
                                },
                                {
                                  "id": 25881,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25870,
                                  "src": "12217:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25882,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25872,
                                  "src": "12221:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 25883,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25874,
                                  "src": "12225:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c91d5ed4480e0b3323f998bcee9594aa98173c7324b015a4713a7c8429afd0b8",
                                    "typeString": "literal_string \"log(string,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 25878,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "12165:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25879,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "12165:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12165:63:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25877,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "12149:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12149:80:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25886,
                        "nodeType": "ExpressionStatement",
                        "src": "12149:80:63"
                      }
                    ]
                  },
                  "id": 25888,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "12088:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25875,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25870,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "12106:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25888,
                        "src": "12092:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25869,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "12092:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25872,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "12118:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25888,
                        "src": "12110:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25871,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12110:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25874,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "12127:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25888,
                        "src": "12122:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25873,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12122:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12091:39:63"
                  },
                  "returnParameters": {
                    "id": 25876,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12145:0:63"
                  },
                  "scope": 32437,
                  "src": "12079:154:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25907,
                    "nodeType": "Block",
                    "src": "12305:91:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c6164647265737329",
                                  "id": 25900,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12349:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_fcec75e0902c9d61eded5d9f2eed16d5b0f2cd255fe6fa77733f59e1063823e8",
                                    "typeString": "literal_string \"log(string,address,address)\""
                                  },
                                  "value": "log(string,address,address)"
                                },
                                {
                                  "id": 25901,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25890,
                                  "src": "12380:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 25902,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25892,
                                  "src": "12384:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 25903,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25894,
                                  "src": "12388:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_fcec75e0902c9d61eded5d9f2eed16d5b0f2cd255fe6fa77733f59e1063823e8",
                                    "typeString": "literal_string \"log(string,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 25898,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "12325:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25899,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "12325:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25904,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12325:66:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25897,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "12309:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25905,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12309:83:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25906,
                        "nodeType": "ExpressionStatement",
                        "src": "12309:83:63"
                      }
                    ]
                  },
                  "id": 25908,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "12245:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25895,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25890,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "12263:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25908,
                        "src": "12249:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25889,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "12249:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25892,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "12275:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25908,
                        "src": "12267:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25891,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12267:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25894,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "12287:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25908,
                        "src": "12279:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25893,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12279:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12248:42:63"
                  },
                  "returnParameters": {
                    "id": 25896,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12305:0:63"
                  },
                  "scope": 32437,
                  "src": "12236:160:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25927,
                    "nodeType": "Block",
                    "src": "12453:83:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c75696e7429",
                                  "id": 25920,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12497:21:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_3b5c03e061c862e366b964ce1ef4845511d610b73a90137eb2b2afa3099b1a4e",
                                    "typeString": "literal_string \"log(bool,uint,uint)\""
                                  },
                                  "value": "log(bool,uint,uint)"
                                },
                                {
                                  "id": 25921,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25910,
                                  "src": "12520:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 25922,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25912,
                                  "src": "12524:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25923,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25914,
                                  "src": "12528:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_3b5c03e061c862e366b964ce1ef4845511d610b73a90137eb2b2afa3099b1a4e",
                                    "typeString": "literal_string \"log(bool,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 25918,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "12473:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25919,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "12473:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25924,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12473:58:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25917,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "12457:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25925,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12457:75:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25926,
                        "nodeType": "ExpressionStatement",
                        "src": "12457:75:63"
                      }
                    ]
                  },
                  "id": 25928,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "12408:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25915,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25910,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "12417:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25928,
                        "src": "12412:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25909,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12412:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25912,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "12426:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25928,
                        "src": "12421:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25911,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "12421:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25914,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "12435:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25928,
                        "src": "12430:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25913,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "12430:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12411:27:63"
                  },
                  "returnParameters": {
                    "id": 25916,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12453:0:63"
                  },
                  "scope": 32437,
                  "src": "12399:137:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25947,
                    "nodeType": "Block",
                    "src": "12602:85:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c737472696e6729",
                                  "id": 25940,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12646:23:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c8397eb0de34bc3ec2853d625c1649c0c0abb20941c30ba650cc738adade018f",
                                    "typeString": "literal_string \"log(bool,uint,string)\""
                                  },
                                  "value": "log(bool,uint,string)"
                                },
                                {
                                  "id": 25941,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25930,
                                  "src": "12671:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 25942,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25932,
                                  "src": "12675:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25943,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25934,
                                  "src": "12679:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c8397eb0de34bc3ec2853d625c1649c0c0abb20941c30ba650cc738adade018f",
                                    "typeString": "literal_string \"log(bool,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 25938,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "12622:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25939,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "12622:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25944,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12622:60:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25937,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "12606:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25945,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12606:77:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25946,
                        "nodeType": "ExpressionStatement",
                        "src": "12606:77:63"
                      }
                    ]
                  },
                  "id": 25948,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "12548:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25935,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25930,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "12557:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25948,
                        "src": "12552:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25929,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12552:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25932,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "12566:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25948,
                        "src": "12561:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25931,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "12561:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25934,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "12584:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25948,
                        "src": "12570:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25933,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "12570:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12551:36:63"
                  },
                  "returnParameters": {
                    "id": 25936,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12602:0:63"
                  },
                  "scope": 32437,
                  "src": "12539:148:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25967,
                    "nodeType": "Block",
                    "src": "12744:83:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c626f6f6c29",
                                  "id": 25960,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12788:21:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_1badc9eb6813ec769c33a3918f278565b7e2e9ed34d2ae2d50d951cc0f602ae0",
                                    "typeString": "literal_string \"log(bool,uint,bool)\""
                                  },
                                  "value": "log(bool,uint,bool)"
                                },
                                {
                                  "id": 25961,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25950,
                                  "src": "12811:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 25962,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25952,
                                  "src": "12815:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25963,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25954,
                                  "src": "12819:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_1badc9eb6813ec769c33a3918f278565b7e2e9ed34d2ae2d50d951cc0f602ae0",
                                    "typeString": "literal_string \"log(bool,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 25958,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "12764:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25959,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "12764:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25964,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12764:58:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25957,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "12748:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25965,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12748:75:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25966,
                        "nodeType": "ExpressionStatement",
                        "src": "12748:75:63"
                      }
                    ]
                  },
                  "id": 25968,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "12699:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25955,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25950,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "12708:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25968,
                        "src": "12703:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25949,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12703:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25952,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "12717:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25968,
                        "src": "12712:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25951,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "12712:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25954,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "12726:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25968,
                        "src": "12721:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25953,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12721:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12702:27:63"
                  },
                  "returnParameters": {
                    "id": 25956,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12744:0:63"
                  },
                  "scope": 32437,
                  "src": "12690:137:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 25987,
                    "nodeType": "Block",
                    "src": "12887:86:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c6164647265737329",
                                  "id": 25980,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12931:24:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c4d23507f52009aec241457bf26dc51305bd2896aa08c5b47f04709554b39440",
                                    "typeString": "literal_string \"log(bool,uint,address)\""
                                  },
                                  "value": "log(bool,uint,address)"
                                },
                                {
                                  "id": 25981,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25970,
                                  "src": "12957:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 25982,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25972,
                                  "src": "12961:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 25983,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25974,
                                  "src": "12965:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c4d23507f52009aec241457bf26dc51305bd2896aa08c5b47f04709554b39440",
                                    "typeString": "literal_string \"log(bool,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 25978,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "12907:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25979,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "12907:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 25984,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12907:61:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25977,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "12891:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 25985,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12891:78:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 25986,
                        "nodeType": "ExpressionStatement",
                        "src": "12891:78:63"
                      }
                    ]
                  },
                  "id": 25988,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "12839:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25975,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25970,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "12848:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25988,
                        "src": "12843:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25969,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12843:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25972,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "12857:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25988,
                        "src": "12852:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25971,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "12852:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25974,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "12869:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 25988,
                        "src": "12861:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 25973,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12861:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12842:30:63"
                  },
                  "returnParameters": {
                    "id": 25976,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12887:0:63"
                  },
                  "scope": 32437,
                  "src": "12830:143:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26007,
                    "nodeType": "Block",
                    "src": "13039:85:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c75696e7429",
                                  "id": 26000,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13083:23:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c0382aac3e9b237c9c8f246cdb8152d44351aaafa72d99e3640be65f754ac807",
                                    "typeString": "literal_string \"log(bool,string,uint)\""
                                  },
                                  "value": "log(bool,string,uint)"
                                },
                                {
                                  "id": 26001,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25990,
                                  "src": "13108:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26002,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25992,
                                  "src": "13112:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 26003,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 25994,
                                  "src": "13116:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c0382aac3e9b237c9c8f246cdb8152d44351aaafa72d99e3640be65f754ac807",
                                    "typeString": "literal_string \"log(bool,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 25998,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "13059:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 25999,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "13059:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26004,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13059:60:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 25997,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "13043:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26005,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13043:77:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26006,
                        "nodeType": "ExpressionStatement",
                        "src": "13043:77:63"
                      }
                    ]
                  },
                  "id": 26008,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "12985:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25995,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 25990,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "12994:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26008,
                        "src": "12989:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 25989,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12989:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25992,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "13012:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26008,
                        "src": "12998:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 25991,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "12998:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 25994,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "13021:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26008,
                        "src": "13016:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25993,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "13016:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12988:36:63"
                  },
                  "returnParameters": {
                    "id": 25996,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13039:0:63"
                  },
                  "scope": 32437,
                  "src": "12976:148:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26027,
                    "nodeType": "Block",
                    "src": "13199:87:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c737472696e6729",
                                  "id": 26020,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13243:25:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_b076847f8b4aee0cfbf46ec501532f9f3c85a581aff135287ff8e917c0a39102",
                                    "typeString": "literal_string \"log(bool,string,string)\""
                                  },
                                  "value": "log(bool,string,string)"
                                },
                                {
                                  "id": 26021,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26010,
                                  "src": "13270:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26022,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26012,
                                  "src": "13274:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 26023,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26014,
                                  "src": "13278:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_b076847f8b4aee0cfbf46ec501532f9f3c85a581aff135287ff8e917c0a39102",
                                    "typeString": "literal_string \"log(bool,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 26018,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "13219:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26019,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "13219:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13219:62:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26017,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "13203:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13203:79:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26026,
                        "nodeType": "ExpressionStatement",
                        "src": "13203:79:63"
                      }
                    ]
                  },
                  "id": 26028,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "13136:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26015,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26010,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "13145:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26028,
                        "src": "13140:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26009,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13140:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26012,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "13163:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26028,
                        "src": "13149:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26011,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "13149:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26014,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "13181:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26028,
                        "src": "13167:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26013,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "13167:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13139:45:63"
                  },
                  "returnParameters": {
                    "id": 26016,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13199:0:63"
                  },
                  "scope": 32437,
                  "src": "13127:159:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26047,
                    "nodeType": "Block",
                    "src": "13352:85:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c626f6f6c29",
                                  "id": 26040,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13396:23:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_dbb4c2477dacc98e0e5b96fd6ca6bf0ae1f82dd042439d9f53f8d963bef43eaa",
                                    "typeString": "literal_string \"log(bool,string,bool)\""
                                  },
                                  "value": "log(bool,string,bool)"
                                },
                                {
                                  "id": 26041,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26030,
                                  "src": "13421:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26042,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26032,
                                  "src": "13425:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 26043,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26034,
                                  "src": "13429:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_dbb4c2477dacc98e0e5b96fd6ca6bf0ae1f82dd042439d9f53f8d963bef43eaa",
                                    "typeString": "literal_string \"log(bool,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 26038,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "13372:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "13372:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13372:60:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26037,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "13356:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13356:77:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26046,
                        "nodeType": "ExpressionStatement",
                        "src": "13356:77:63"
                      }
                    ]
                  },
                  "id": 26048,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "13298:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26035,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26030,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "13307:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26048,
                        "src": "13302:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26029,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13302:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26032,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "13325:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26048,
                        "src": "13311:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26031,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "13311:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26034,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "13334:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26048,
                        "src": "13329:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26033,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13329:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13301:36:63"
                  },
                  "returnParameters": {
                    "id": 26036,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13352:0:63"
                  },
                  "scope": 32437,
                  "src": "13289:148:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26067,
                    "nodeType": "Block",
                    "src": "13506:88:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c6164647265737329",
                                  "id": 26060,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13550:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9591b953c9b1d0af9d1e3bc0f6ea9aa5b0e1af8c702f85b36e21b9b2d7e4da79",
                                    "typeString": "literal_string \"log(bool,string,address)\""
                                  },
                                  "value": "log(bool,string,address)"
                                },
                                {
                                  "id": 26061,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26050,
                                  "src": "13578:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26062,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26052,
                                  "src": "13582:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 26063,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26054,
                                  "src": "13586:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_9591b953c9b1d0af9d1e3bc0f6ea9aa5b0e1af8c702f85b36e21b9b2d7e4da79",
                                    "typeString": "literal_string \"log(bool,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 26058,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "13526:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26059,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "13526:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26064,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13526:63:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26057,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "13510:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26065,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13510:80:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26066,
                        "nodeType": "ExpressionStatement",
                        "src": "13510:80:63"
                      }
                    ]
                  },
                  "id": 26068,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "13449:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26055,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26050,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "13458:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26068,
                        "src": "13453:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26049,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13453:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26052,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "13476:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26068,
                        "src": "13462:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26051,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "13462:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26054,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "13488:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26068,
                        "src": "13480:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26053,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13480:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13452:39:63"
                  },
                  "returnParameters": {
                    "id": 26056,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13506:0:63"
                  },
                  "scope": 32437,
                  "src": "13440:154:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26087,
                    "nodeType": "Block",
                    "src": "13651:83:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c75696e7429",
                                  "id": 26080,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13695:21:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_b01365bbae43503e22260bcc9cf23ffef37ffc9f6c1580737fe2489955065877",
                                    "typeString": "literal_string \"log(bool,bool,uint)\""
                                  },
                                  "value": "log(bool,bool,uint)"
                                },
                                {
                                  "id": 26081,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26070,
                                  "src": "13718:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26082,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26072,
                                  "src": "13722:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26083,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26074,
                                  "src": "13726:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_b01365bbae43503e22260bcc9cf23ffef37ffc9f6c1580737fe2489955065877",
                                    "typeString": "literal_string \"log(bool,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 26078,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "13671:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26079,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "13671:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26084,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13671:58:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26077,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "13655:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13655:75:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26086,
                        "nodeType": "ExpressionStatement",
                        "src": "13655:75:63"
                      }
                    ]
                  },
                  "id": 26088,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "13606:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26075,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26070,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "13615:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26088,
                        "src": "13610:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26069,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13610:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26072,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "13624:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26088,
                        "src": "13619:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26071,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13619:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26074,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "13633:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26088,
                        "src": "13628:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26073,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "13628:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13609:27:63"
                  },
                  "returnParameters": {
                    "id": 26076,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13651:0:63"
                  },
                  "scope": 32437,
                  "src": "13597:137:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26107,
                    "nodeType": "Block",
                    "src": "13800:85:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c737472696e6729",
                                  "id": 26100,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13844:23:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_2555fa465662416fc443b21c515f245dc550a66f7c658773f7bd7ad91c82f2cc",
                                    "typeString": "literal_string \"log(bool,bool,string)\""
                                  },
                                  "value": "log(bool,bool,string)"
                                },
                                {
                                  "id": 26101,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26090,
                                  "src": "13869:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26102,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26092,
                                  "src": "13873:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26103,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26094,
                                  "src": "13877:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_2555fa465662416fc443b21c515f245dc550a66f7c658773f7bd7ad91c82f2cc",
                                    "typeString": "literal_string \"log(bool,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 26098,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "13820:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26099,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "13820:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13820:60:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26097,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "13804:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13804:77:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26106,
                        "nodeType": "ExpressionStatement",
                        "src": "13804:77:63"
                      }
                    ]
                  },
                  "id": 26108,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "13746:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26095,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26090,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "13755:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26108,
                        "src": "13750:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26089,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13750:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26092,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "13764:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26108,
                        "src": "13759:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26091,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13759:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26094,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "13782:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26108,
                        "src": "13768:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26093,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "13768:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13749:36:63"
                  },
                  "returnParameters": {
                    "id": 26096,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13800:0:63"
                  },
                  "scope": 32437,
                  "src": "13737:148:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26127,
                    "nodeType": "Block",
                    "src": "13942:83:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c626f6f6c29",
                                  "id": 26120,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13986:21:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_50709698278bb02f656e4ac53a2ae8ef0ec4064d340360a5fa4d933e9a742590",
                                    "typeString": "literal_string \"log(bool,bool,bool)\""
                                  },
                                  "value": "log(bool,bool,bool)"
                                },
                                {
                                  "id": 26121,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26110,
                                  "src": "14009:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26122,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26112,
                                  "src": "14013:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26123,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26114,
                                  "src": "14017:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_50709698278bb02f656e4ac53a2ae8ef0ec4064d340360a5fa4d933e9a742590",
                                    "typeString": "literal_string \"log(bool,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 26118,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "13962:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26119,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "13962:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26124,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "13962:58:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26117,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "13946:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13946:75:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26126,
                        "nodeType": "ExpressionStatement",
                        "src": "13946:75:63"
                      }
                    ]
                  },
                  "id": 26128,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "13897:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26115,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26110,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "13906:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26128,
                        "src": "13901:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26109,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13901:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26112,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "13915:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26128,
                        "src": "13910:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26111,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13910:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26114,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "13924:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26128,
                        "src": "13919:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26113,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13919:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13900:27:63"
                  },
                  "returnParameters": {
                    "id": 26116,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13942:0:63"
                  },
                  "scope": 32437,
                  "src": "13888:137:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26147,
                    "nodeType": "Block",
                    "src": "14085:86:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c6164647265737329",
                                  "id": 26140,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14129:24:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_1078f68da6ddbbe80f829fe8d54d1f2c6347e1ee4ec5a2a7a3a330ada9eccf81",
                                    "typeString": "literal_string \"log(bool,bool,address)\""
                                  },
                                  "value": "log(bool,bool,address)"
                                },
                                {
                                  "id": 26141,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26130,
                                  "src": "14155:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26142,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26132,
                                  "src": "14159:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26143,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26134,
                                  "src": "14163:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_1078f68da6ddbbe80f829fe8d54d1f2c6347e1ee4ec5a2a7a3a330ada9eccf81",
                                    "typeString": "literal_string \"log(bool,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 26138,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "14105:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26139,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "14105:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14105:61:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26137,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "14089:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14089:78:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26146,
                        "nodeType": "ExpressionStatement",
                        "src": "14089:78:63"
                      }
                    ]
                  },
                  "id": 26148,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "14037:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26135,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26130,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "14046:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26148,
                        "src": "14041:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26129,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14041:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26132,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "14055:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26148,
                        "src": "14050:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26131,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14050:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26134,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "14067:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26148,
                        "src": "14059:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26133,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14059:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14040:30:63"
                  },
                  "returnParameters": {
                    "id": 26136,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14085:0:63"
                  },
                  "scope": 32437,
                  "src": "14028:143:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26167,
                    "nodeType": "Block",
                    "src": "14231:86:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c75696e7429",
                                  "id": 26160,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14275:24:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_eb704bafbd89369a907d48394b6acdacf482ae42cc2aaedd1cc37e89b4054b3d",
                                    "typeString": "literal_string \"log(bool,address,uint)\""
                                  },
                                  "value": "log(bool,address,uint)"
                                },
                                {
                                  "id": 26161,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26150,
                                  "src": "14301:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26162,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26152,
                                  "src": "14305:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26163,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26154,
                                  "src": "14309:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_eb704bafbd89369a907d48394b6acdacf482ae42cc2aaedd1cc37e89b4054b3d",
                                    "typeString": "literal_string \"log(bool,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 26158,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "14251:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26159,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "14251:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26164,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14251:61:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26157,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "14235:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14235:78:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26166,
                        "nodeType": "ExpressionStatement",
                        "src": "14235:78:63"
                      }
                    ]
                  },
                  "id": 26168,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "14183:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26155,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26150,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "14192:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26168,
                        "src": "14187:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26149,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14187:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26152,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "14204:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26168,
                        "src": "14196:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26151,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14196:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26154,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "14213:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26168,
                        "src": "14208:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26153,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "14208:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14186:30:63"
                  },
                  "returnParameters": {
                    "id": 26156,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14231:0:63"
                  },
                  "scope": 32437,
                  "src": "14174:143:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26187,
                    "nodeType": "Block",
                    "src": "14386:88:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c737472696e6729",
                                  "id": 26180,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14430:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_de9a927090b15ed84eefc0c471675a23ce67fd75011b1652fe17ca2dd0dcd06d",
                                    "typeString": "literal_string \"log(bool,address,string)\""
                                  },
                                  "value": "log(bool,address,string)"
                                },
                                {
                                  "id": 26181,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26170,
                                  "src": "14458:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26182,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26172,
                                  "src": "14462:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26183,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26174,
                                  "src": "14466:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_de9a927090b15ed84eefc0c471675a23ce67fd75011b1652fe17ca2dd0dcd06d",
                                    "typeString": "literal_string \"log(bool,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 26178,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "14406:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26179,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "14406:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26184,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14406:63:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26177,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "14390:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14390:80:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26186,
                        "nodeType": "ExpressionStatement",
                        "src": "14390:80:63"
                      }
                    ]
                  },
                  "id": 26188,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "14329:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26175,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26170,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "14338:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26188,
                        "src": "14333:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26169,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14333:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26172,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "14350:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26188,
                        "src": "14342:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26171,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14342:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26174,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "14368:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26188,
                        "src": "14354:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26173,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "14354:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14332:39:63"
                  },
                  "returnParameters": {
                    "id": 26176,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14386:0:63"
                  },
                  "scope": 32437,
                  "src": "14320:154:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26207,
                    "nodeType": "Block",
                    "src": "14534:86:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c626f6f6c29",
                                  "id": 26200,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14578:24:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_18c9c746c9d0e38e4dc234ee76e678bbaa4e473eca3dce0969637d7f01e4a908",
                                    "typeString": "literal_string \"log(bool,address,bool)\""
                                  },
                                  "value": "log(bool,address,bool)"
                                },
                                {
                                  "id": 26201,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26190,
                                  "src": "14604:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26202,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26192,
                                  "src": "14608:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26203,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26194,
                                  "src": "14612:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_18c9c746c9d0e38e4dc234ee76e678bbaa4e473eca3dce0969637d7f01e4a908",
                                    "typeString": "literal_string \"log(bool,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 26198,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "14554:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26199,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "14554:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26204,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14554:61:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26197,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "14538:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26205,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14538:78:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26206,
                        "nodeType": "ExpressionStatement",
                        "src": "14538:78:63"
                      }
                    ]
                  },
                  "id": 26208,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "14486:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26195,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26190,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "14495:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26208,
                        "src": "14490:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26189,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14490:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26192,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "14507:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26208,
                        "src": "14499:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26191,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14499:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26194,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "14516:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26208,
                        "src": "14511:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26193,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14511:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14489:30:63"
                  },
                  "returnParameters": {
                    "id": 26196,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14534:0:63"
                  },
                  "scope": 32437,
                  "src": "14477:143:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26227,
                    "nodeType": "Block",
                    "src": "14683:89:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c6164647265737329",
                                  "id": 26220,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14727:27:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_d2763667477f08a6a3f8ce84e1cc1aeb5e67ee2996f5f36e8939da2b8b8f0265",
                                    "typeString": "literal_string \"log(bool,address,address)\""
                                  },
                                  "value": "log(bool,address,address)"
                                },
                                {
                                  "id": 26221,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26210,
                                  "src": "14756:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26222,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26212,
                                  "src": "14760:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26223,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26214,
                                  "src": "14764:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_d2763667477f08a6a3f8ce84e1cc1aeb5e67ee2996f5f36e8939da2b8b8f0265",
                                    "typeString": "literal_string \"log(bool,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 26218,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "14703:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26219,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "14703:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26224,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14703:64:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26217,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "14687:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14687:81:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26226,
                        "nodeType": "ExpressionStatement",
                        "src": "14687:81:63"
                      }
                    ]
                  },
                  "id": 26228,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "14632:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26215,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26210,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "14641:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26228,
                        "src": "14636:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26209,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14636:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26212,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "14653:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26228,
                        "src": "14645:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26211,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14645:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26214,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "14665:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26228,
                        "src": "14657:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26213,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14657:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14635:33:63"
                  },
                  "returnParameters": {
                    "id": 26216,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14683:0:63"
                  },
                  "scope": 32437,
                  "src": "14623:149:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26247,
                    "nodeType": "Block",
                    "src": "14832:86:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c75696e7429",
                                  "id": 26240,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14876:24:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_8786135eae1a8e4736031518026bd3bd30886c3cc8d3e8bdedd6faea426de5ea",
                                    "typeString": "literal_string \"log(address,uint,uint)\""
                                  },
                                  "value": "log(address,uint,uint)"
                                },
                                {
                                  "id": 26241,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26230,
                                  "src": "14902:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26242,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26232,
                                  "src": "14906:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26243,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26234,
                                  "src": "14910:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_8786135eae1a8e4736031518026bd3bd30886c3cc8d3e8bdedd6faea426de5ea",
                                    "typeString": "literal_string \"log(address,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 26238,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "14852:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26239,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "14852:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26244,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14852:61:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26237,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "14836:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14836:78:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26246,
                        "nodeType": "ExpressionStatement",
                        "src": "14836:78:63"
                      }
                    ]
                  },
                  "id": 26248,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "14784:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26235,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26230,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "14796:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26248,
                        "src": "14788:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26229,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14788:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26232,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "14805:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26248,
                        "src": "14800:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26231,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "14800:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26234,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "14814:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26248,
                        "src": "14809:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26233,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "14809:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14787:30:63"
                  },
                  "returnParameters": {
                    "id": 26236,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14832:0:63"
                  },
                  "scope": 32437,
                  "src": "14775:143:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26267,
                    "nodeType": "Block",
                    "src": "14987:88:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c737472696e6729",
                                  "id": 26260,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15031:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_baf968498a2094de432bd16841b992056c14db9f313a6b44c3156c2b5f1dc2b4",
                                    "typeString": "literal_string \"log(address,uint,string)\""
                                  },
                                  "value": "log(address,uint,string)"
                                },
                                {
                                  "id": 26261,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26250,
                                  "src": "15059:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26262,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26252,
                                  "src": "15063:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26263,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26254,
                                  "src": "15067:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_baf968498a2094de432bd16841b992056c14db9f313a6b44c3156c2b5f1dc2b4",
                                    "typeString": "literal_string \"log(address,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 26258,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "15007:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26259,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "15007:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15007:63:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26257,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "14991:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14991:80:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26266,
                        "nodeType": "ExpressionStatement",
                        "src": "14991:80:63"
                      }
                    ]
                  },
                  "id": 26268,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "14930:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26255,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26250,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "14942:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26268,
                        "src": "14934:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26249,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14934:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26252,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "14951:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26268,
                        "src": "14946:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26251,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "14946:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26254,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "14969:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26268,
                        "src": "14955:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26253,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "14955:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14933:39:63"
                  },
                  "returnParameters": {
                    "id": 26256,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14987:0:63"
                  },
                  "scope": 32437,
                  "src": "14921:154:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26287,
                    "nodeType": "Block",
                    "src": "15135:86:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c626f6f6c29",
                                  "id": 26280,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15179:24:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e54ae1445cd51f09e801fc5885e33c709102997417d3d9b6f543f7724468b4e4",
                                    "typeString": "literal_string \"log(address,uint,bool)\""
                                  },
                                  "value": "log(address,uint,bool)"
                                },
                                {
                                  "id": 26281,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26270,
                                  "src": "15205:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26282,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26272,
                                  "src": "15209:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26283,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26274,
                                  "src": "15213:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_e54ae1445cd51f09e801fc5885e33c709102997417d3d9b6f543f7724468b4e4",
                                    "typeString": "literal_string \"log(address,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 26278,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "15155:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26279,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "15155:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26284,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15155:61:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26277,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "15139:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15139:78:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26286,
                        "nodeType": "ExpressionStatement",
                        "src": "15139:78:63"
                      }
                    ]
                  },
                  "id": 26288,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "15087:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26275,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26270,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "15099:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26288,
                        "src": "15091:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26269,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15091:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26272,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "15108:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26288,
                        "src": "15103:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26271,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "15103:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26274,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "15117:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26288,
                        "src": "15112:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26273,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "15112:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15090:30:63"
                  },
                  "returnParameters": {
                    "id": 26276,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15135:0:63"
                  },
                  "scope": 32437,
                  "src": "15078:143:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26307,
                    "nodeType": "Block",
                    "src": "15284:89:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c6164647265737329",
                                  "id": 26300,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15328:27:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_97eca3948a309251ff02cc4a3cb96f84ac4b6b4bdc56e86c9f0131c9b70c6259",
                                    "typeString": "literal_string \"log(address,uint,address)\""
                                  },
                                  "value": "log(address,uint,address)"
                                },
                                {
                                  "id": 26301,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26290,
                                  "src": "15357:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26302,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26292,
                                  "src": "15361:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26303,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26294,
                                  "src": "15365:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_97eca3948a309251ff02cc4a3cb96f84ac4b6b4bdc56e86c9f0131c9b70c6259",
                                    "typeString": "literal_string \"log(address,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 26298,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "15304:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26299,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "15304:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15304:64:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26297,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "15288:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15288:81:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26306,
                        "nodeType": "ExpressionStatement",
                        "src": "15288:81:63"
                      }
                    ]
                  },
                  "id": 26308,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "15233:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26295,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26290,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "15245:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26308,
                        "src": "15237:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26289,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15237:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26292,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "15254:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26308,
                        "src": "15249:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26291,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "15249:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26294,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "15266:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26308,
                        "src": "15258:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26293,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15258:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15236:33:63"
                  },
                  "returnParameters": {
                    "id": 26296,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15284:0:63"
                  },
                  "scope": 32437,
                  "src": "15224:149:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26327,
                    "nodeType": "Block",
                    "src": "15442:88:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c75696e7429",
                                  "id": 26320,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15486:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_1cdaf28a630ff01c83e1629295cea6793da60638603e831a5c07be53dbee3597",
                                    "typeString": "literal_string \"log(address,string,uint)\""
                                  },
                                  "value": "log(address,string,uint)"
                                },
                                {
                                  "id": 26321,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26310,
                                  "src": "15514:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26322,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26312,
                                  "src": "15518:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 26323,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26314,
                                  "src": "15522:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_1cdaf28a630ff01c83e1629295cea6793da60638603e831a5c07be53dbee3597",
                                    "typeString": "literal_string \"log(address,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 26318,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "15462:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26319,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "15462:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15462:63:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26317,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "15446:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26325,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15446:80:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26326,
                        "nodeType": "ExpressionStatement",
                        "src": "15446:80:63"
                      }
                    ]
                  },
                  "id": 26328,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "15385:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26315,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26310,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "15397:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26328,
                        "src": "15389:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26309,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15389:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26312,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "15415:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26328,
                        "src": "15401:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26311,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "15401:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26314,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "15424:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26328,
                        "src": "15419:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26313,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "15419:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15388:39:63"
                  },
                  "returnParameters": {
                    "id": 26316,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15442:0:63"
                  },
                  "scope": 32437,
                  "src": "15376:154:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26347,
                    "nodeType": "Block",
                    "src": "15608:90:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c737472696e6729",
                                  "id": 26340,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15652:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_fb77226597c11cd0c52945168d7176a06b9af41edea6a51823db111f35573158",
                                    "typeString": "literal_string \"log(address,string,string)\""
                                  },
                                  "value": "log(address,string,string)"
                                },
                                {
                                  "id": 26341,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26330,
                                  "src": "15682:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26342,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26332,
                                  "src": "15686:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 26343,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26334,
                                  "src": "15690:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_fb77226597c11cd0c52945168d7176a06b9af41edea6a51823db111f35573158",
                                    "typeString": "literal_string \"log(address,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 26338,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "15628:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26339,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "15628:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26344,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15628:65:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26337,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "15612:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15612:82:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26346,
                        "nodeType": "ExpressionStatement",
                        "src": "15612:82:63"
                      }
                    ]
                  },
                  "id": 26348,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "15542:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26335,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26330,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "15554:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26348,
                        "src": "15546:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26329,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15546:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26332,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "15572:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26348,
                        "src": "15558:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26331,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "15558:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26334,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "15590:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26348,
                        "src": "15576:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26333,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "15576:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15545:48:63"
                  },
                  "returnParameters": {
                    "id": 26336,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15608:0:63"
                  },
                  "scope": 32437,
                  "src": "15533:165:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26367,
                    "nodeType": "Block",
                    "src": "15767:88:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c626f6f6c29",
                                  "id": 26360,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15811:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_cf020fb14f49566c5748de1f455c699a10a4ed1d7cf32f9adb28d22878df1b96",
                                    "typeString": "literal_string \"log(address,string,bool)\""
                                  },
                                  "value": "log(address,string,bool)"
                                },
                                {
                                  "id": 26361,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26350,
                                  "src": "15839:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26362,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26352,
                                  "src": "15843:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 26363,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26354,
                                  "src": "15847:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_cf020fb14f49566c5748de1f455c699a10a4ed1d7cf32f9adb28d22878df1b96",
                                    "typeString": "literal_string \"log(address,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 26358,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "15787:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26359,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "15787:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26364,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15787:63:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26357,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "15771:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15771:80:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26366,
                        "nodeType": "ExpressionStatement",
                        "src": "15771:80:63"
                      }
                    ]
                  },
                  "id": 26368,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "15710:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26355,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26350,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "15722:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26368,
                        "src": "15714:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26349,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15714:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26352,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "15740:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26368,
                        "src": "15726:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26351,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "15726:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26354,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "15749:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26368,
                        "src": "15744:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26353,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "15744:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15713:39:63"
                  },
                  "returnParameters": {
                    "id": 26356,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15767:0:63"
                  },
                  "scope": 32437,
                  "src": "15701:154:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26387,
                    "nodeType": "Block",
                    "src": "15927:91:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c6164647265737329",
                                  "id": 26380,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15971:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f08744e82875525f1ef885a48453f58e96cac98a5d32bd6d8c38e4977aede231",
                                    "typeString": "literal_string \"log(address,string,address)\""
                                  },
                                  "value": "log(address,string,address)"
                                },
                                {
                                  "id": 26381,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26370,
                                  "src": "16002:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26382,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26372,
                                  "src": "16006:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 26383,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26374,
                                  "src": "16010:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_f08744e82875525f1ef885a48453f58e96cac98a5d32bd6d8c38e4977aede231",
                                    "typeString": "literal_string \"log(address,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 26378,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "15947:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26379,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "15947:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15947:66:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26377,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "15931:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15931:83:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26386,
                        "nodeType": "ExpressionStatement",
                        "src": "15931:83:63"
                      }
                    ]
                  },
                  "id": 26388,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "15867:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26375,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26370,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "15879:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26388,
                        "src": "15871:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26369,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15871:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26372,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "15897:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26388,
                        "src": "15883:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26371,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "15883:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26374,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "15909:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26388,
                        "src": "15901:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26373,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15901:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15870:42:63"
                  },
                  "returnParameters": {
                    "id": 26376,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15927:0:63"
                  },
                  "scope": 32437,
                  "src": "15858:160:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26407,
                    "nodeType": "Block",
                    "src": "16078:86:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c75696e7429",
                                  "id": 26400,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16122:24:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_2c468d157d9cb3bd4f3bc977d201b067de313f8e774b0377d5c5b2b5c9426095",
                                    "typeString": "literal_string \"log(address,bool,uint)\""
                                  },
                                  "value": "log(address,bool,uint)"
                                },
                                {
                                  "id": 26401,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26390,
                                  "src": "16148:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26402,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26392,
                                  "src": "16152:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26403,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26394,
                                  "src": "16156:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_2c468d157d9cb3bd4f3bc977d201b067de313f8e774b0377d5c5b2b5c9426095",
                                    "typeString": "literal_string \"log(address,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 26398,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "16098:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26399,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "16098:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26404,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16098:61:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26397,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "16082:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16082:78:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26406,
                        "nodeType": "ExpressionStatement",
                        "src": "16082:78:63"
                      }
                    ]
                  },
                  "id": 26408,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "16030:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26395,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26390,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "16042:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26408,
                        "src": "16034:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26389,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16034:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26392,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "16051:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26408,
                        "src": "16046:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26391,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16046:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26394,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "16060:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26408,
                        "src": "16055:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26393,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "16055:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16033:30:63"
                  },
                  "returnParameters": {
                    "id": 26396,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16078:0:63"
                  },
                  "scope": 32437,
                  "src": "16021:143:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26427,
                    "nodeType": "Block",
                    "src": "16233:88:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c737472696e6729",
                                  "id": 26420,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16277:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_212255cc5ff4a2d867f69451c60f51c24e41784276f4ceffe8ec3af322690750",
                                    "typeString": "literal_string \"log(address,bool,string)\""
                                  },
                                  "value": "log(address,bool,string)"
                                },
                                {
                                  "id": 26421,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26410,
                                  "src": "16305:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26422,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26412,
                                  "src": "16309:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26423,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26414,
                                  "src": "16313:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_212255cc5ff4a2d867f69451c60f51c24e41784276f4ceffe8ec3af322690750",
                                    "typeString": "literal_string \"log(address,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 26418,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "16253:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26419,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "16253:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26424,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16253:63:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26417,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "16237:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26425,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16237:80:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26426,
                        "nodeType": "ExpressionStatement",
                        "src": "16237:80:63"
                      }
                    ]
                  },
                  "id": 26428,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "16176:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26415,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26410,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "16188:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26428,
                        "src": "16180:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26409,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16180:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26412,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "16197:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26428,
                        "src": "16192:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26411,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16192:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26414,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "16215:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26428,
                        "src": "16201:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26413,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "16201:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16179:39:63"
                  },
                  "returnParameters": {
                    "id": 26416,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16233:0:63"
                  },
                  "scope": 32437,
                  "src": "16167:154:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26447,
                    "nodeType": "Block",
                    "src": "16381:86:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c626f6f6c29",
                                  "id": 26440,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16425:24:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_eb830c92a079b46f3abcb83e519f578cffe7387941b6885067265feec096d279",
                                    "typeString": "literal_string \"log(address,bool,bool)\""
                                  },
                                  "value": "log(address,bool,bool)"
                                },
                                {
                                  "id": 26441,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26430,
                                  "src": "16451:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26442,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26432,
                                  "src": "16455:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26443,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26434,
                                  "src": "16459:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_eb830c92a079b46f3abcb83e519f578cffe7387941b6885067265feec096d279",
                                    "typeString": "literal_string \"log(address,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 26438,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "16401:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26439,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "16401:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26444,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16401:61:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26437,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "16385:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16385:78:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26446,
                        "nodeType": "ExpressionStatement",
                        "src": "16385:78:63"
                      }
                    ]
                  },
                  "id": 26448,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "16333:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26435,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26430,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "16345:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26448,
                        "src": "16337:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26429,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16337:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26432,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "16354:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26448,
                        "src": "16349:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26431,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16349:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26434,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "16363:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26448,
                        "src": "16358:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26433,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16358:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16336:30:63"
                  },
                  "returnParameters": {
                    "id": 26436,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16381:0:63"
                  },
                  "scope": 32437,
                  "src": "16324:143:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26467,
                    "nodeType": "Block",
                    "src": "16530:89:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c6164647265737329",
                                  "id": 26460,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16574:27:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f11699ed537119f000a51ba9fbd5bb55b3990a1a718acbe99659bd1bc84dc18d",
                                    "typeString": "literal_string \"log(address,bool,address)\""
                                  },
                                  "value": "log(address,bool,address)"
                                },
                                {
                                  "id": 26461,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26450,
                                  "src": "16603:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26462,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26452,
                                  "src": "16607:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26463,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26454,
                                  "src": "16611:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_f11699ed537119f000a51ba9fbd5bb55b3990a1a718acbe99659bd1bc84dc18d",
                                    "typeString": "literal_string \"log(address,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 26458,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "16550:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26459,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "16550:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16550:64:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26457,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "16534:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16534:81:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26466,
                        "nodeType": "ExpressionStatement",
                        "src": "16534:81:63"
                      }
                    ]
                  },
                  "id": 26468,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "16479:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26455,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26450,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "16491:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26468,
                        "src": "16483:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26449,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16483:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26452,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "16500:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26468,
                        "src": "16495:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26451,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16495:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26454,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "16512:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26468,
                        "src": "16504:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26453,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16504:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16482:33:63"
                  },
                  "returnParameters": {
                    "id": 26456,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16530:0:63"
                  },
                  "scope": 32437,
                  "src": "16470:149:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26487,
                    "nodeType": "Block",
                    "src": "16682:89:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c75696e7429",
                                  "id": 26480,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16726:27:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6c366d7295b93bbfacc4df0ea28f0eef60efacfffd447f8f2823cbe5b2fedb07",
                                    "typeString": "literal_string \"log(address,address,uint)\""
                                  },
                                  "value": "log(address,address,uint)"
                                },
                                {
                                  "id": 26481,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26470,
                                  "src": "16755:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26482,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26472,
                                  "src": "16759:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26483,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26474,
                                  "src": "16763:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_6c366d7295b93bbfacc4df0ea28f0eef60efacfffd447f8f2823cbe5b2fedb07",
                                    "typeString": "literal_string \"log(address,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 26478,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "16702:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26479,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "16702:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26484,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16702:64:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26477,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "16686:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26485,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16686:81:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26486,
                        "nodeType": "ExpressionStatement",
                        "src": "16686:81:63"
                      }
                    ]
                  },
                  "id": 26488,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "16631:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26475,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26470,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "16643:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26488,
                        "src": "16635:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26469,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16635:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26472,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "16655:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26488,
                        "src": "16647:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26471,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16647:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26474,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "16664:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26488,
                        "src": "16659:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26473,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "16659:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16634:33:63"
                  },
                  "returnParameters": {
                    "id": 26476,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16682:0:63"
                  },
                  "scope": 32437,
                  "src": "16622:149:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26507,
                    "nodeType": "Block",
                    "src": "16843:91:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c737472696e6729",
                                  "id": 26500,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16887:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_007150be50a4671a6be318012e9cd2eabb1e1bc8869b45c34abbaa04d81c8eee",
                                    "typeString": "literal_string \"log(address,address,string)\""
                                  },
                                  "value": "log(address,address,string)"
                                },
                                {
                                  "id": 26501,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26490,
                                  "src": "16918:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26502,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26492,
                                  "src": "16922:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26503,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26494,
                                  "src": "16926:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_007150be50a4671a6be318012e9cd2eabb1e1bc8869b45c34abbaa04d81c8eee",
                                    "typeString": "literal_string \"log(address,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 26498,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "16863:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26499,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "16863:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16863:66:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26497,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "16847:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16847:83:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26506,
                        "nodeType": "ExpressionStatement",
                        "src": "16847:83:63"
                      }
                    ]
                  },
                  "id": 26508,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "16783:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26495,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26490,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "16795:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26508,
                        "src": "16787:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26489,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16787:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26492,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "16807:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26508,
                        "src": "16799:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26491,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16799:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26494,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "16825:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26508,
                        "src": "16811:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26493,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "16811:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16786:42:63"
                  },
                  "returnParameters": {
                    "id": 26496,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16843:0:63"
                  },
                  "scope": 32437,
                  "src": "16774:160:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26527,
                    "nodeType": "Block",
                    "src": "16997:89:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c626f6f6c29",
                                  "id": 26520,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17041:27:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f2a6628622808c8bbef4f3e513ab11e708a8f5073988f2f7988e111aa26586dc",
                                    "typeString": "literal_string \"log(address,address,bool)\""
                                  },
                                  "value": "log(address,address,bool)"
                                },
                                {
                                  "id": 26521,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26510,
                                  "src": "17070:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26522,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26512,
                                  "src": "17074:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26523,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26514,
                                  "src": "17078:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_f2a6628622808c8bbef4f3e513ab11e708a8f5073988f2f7988e111aa26586dc",
                                    "typeString": "literal_string \"log(address,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 26518,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "17017:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "17017:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17017:64:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26517,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "17001:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26525,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17001:81:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26526,
                        "nodeType": "ExpressionStatement",
                        "src": "17001:81:63"
                      }
                    ]
                  },
                  "id": 26528,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "16946:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26515,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26510,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "16958:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26528,
                        "src": "16950:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26509,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16950:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26512,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "16970:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26528,
                        "src": "16962:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26511,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16962:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26514,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "16979:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26528,
                        "src": "16974:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26513,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "16974:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16949:33:63"
                  },
                  "returnParameters": {
                    "id": 26516,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16997:0:63"
                  },
                  "scope": 32437,
                  "src": "16937:149:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26547,
                    "nodeType": "Block",
                    "src": "17152:92:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c6164647265737329",
                                  "id": 26540,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17196:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_018c84c25fb680b5bcd4e1ab1848682497c9dd3b635564a91c36ce3d1414c830",
                                    "typeString": "literal_string \"log(address,address,address)\""
                                  },
                                  "value": "log(address,address,address)"
                                },
                                {
                                  "id": 26541,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26530,
                                  "src": "17228:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26542,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26532,
                                  "src": "17232:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26543,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26534,
                                  "src": "17236:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_018c84c25fb680b5bcd4e1ab1848682497c9dd3b635564a91c36ce3d1414c830",
                                    "typeString": "literal_string \"log(address,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 26538,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "17172:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26539,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "17172:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26544,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17172:67:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26537,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "17156:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17156:84:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26546,
                        "nodeType": "ExpressionStatement",
                        "src": "17156:84:63"
                      }
                    ]
                  },
                  "id": 26548,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "17098:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26535,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26530,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "17110:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26548,
                        "src": "17102:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26529,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17102:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26532,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "17122:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26548,
                        "src": "17114:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26531,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17114:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26534,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "17134:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26548,
                        "src": "17126:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26533,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17126:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17101:36:63"
                  },
                  "returnParameters": {
                    "id": 26536,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17152:0:63"
                  },
                  "scope": 32437,
                  "src": "17089:155:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26570,
                    "nodeType": "Block",
                    "src": "17310:92:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c75696e742c75696e7429",
                                  "id": 26562,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17354:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5ca0ad3ec7f731e4661cde447171efd221faf44c50b57eba4cc4965c1f89c0b6",
                                    "typeString": "literal_string \"log(uint,uint,uint,uint)\""
                                  },
                                  "value": "log(uint,uint,uint,uint)"
                                },
                                {
                                  "id": 26563,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26550,
                                  "src": "17382:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26564,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26552,
                                  "src": "17386:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26565,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26554,
                                  "src": "17390:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26566,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26556,
                                  "src": "17394:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_5ca0ad3ec7f731e4661cde447171efd221faf44c50b57eba4cc4965c1f89c0b6",
                                    "typeString": "literal_string \"log(uint,uint,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 26560,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "17330:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26561,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "17330:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26567,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17330:67:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26559,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "17314:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26568,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17314:84:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26569,
                        "nodeType": "ExpressionStatement",
                        "src": "17314:84:63"
                      }
                    ]
                  },
                  "id": 26571,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "17256:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26557,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26550,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "17265:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26571,
                        "src": "17260:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26549,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17260:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26552,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "17274:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26571,
                        "src": "17269:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26551,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17269:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26554,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "17283:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26571,
                        "src": "17278:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26553,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17278:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26556,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "17292:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26571,
                        "src": "17287:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26555,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17287:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17259:36:63"
                  },
                  "returnParameters": {
                    "id": 26558,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17310:0:63"
                  },
                  "scope": 32437,
                  "src": "17247:155:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26593,
                    "nodeType": "Block",
                    "src": "17477:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c75696e742c737472696e6729",
                                  "id": 26585,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17521:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_78ad7a0c8cf57ba0e3b9e892fd6558ba40a5d4c84ef5c8c5e36bfc8d7f23b0c5",
                                    "typeString": "literal_string \"log(uint,uint,uint,string)\""
                                  },
                                  "value": "log(uint,uint,uint,string)"
                                },
                                {
                                  "id": 26586,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26573,
                                  "src": "17551:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26587,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26575,
                                  "src": "17555:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26588,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26577,
                                  "src": "17559:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26589,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26579,
                                  "src": "17563:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_78ad7a0c8cf57ba0e3b9e892fd6558ba40a5d4c84ef5c8c5e36bfc8d7f23b0c5",
                                    "typeString": "literal_string \"log(uint,uint,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 26583,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "17497:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26584,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "17497:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26590,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17497:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26582,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "17481:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26591,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17481:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26592,
                        "nodeType": "ExpressionStatement",
                        "src": "17481:86:63"
                      }
                    ]
                  },
                  "id": 26594,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "17414:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26580,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26573,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "17423:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26594,
                        "src": "17418:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26572,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17418:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26575,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "17432:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26594,
                        "src": "17427:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26574,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17427:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26577,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "17441:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26594,
                        "src": "17436:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26576,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17436:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26579,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "17459:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26594,
                        "src": "17445:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26578,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "17445:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17417:45:63"
                  },
                  "returnParameters": {
                    "id": 26581,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17477:0:63"
                  },
                  "scope": 32437,
                  "src": "17405:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26616,
                    "nodeType": "Block",
                    "src": "17637:92:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c75696e742c626f6f6c29",
                                  "id": 26608,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17681:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6452b9cbdf8b8479d7ee301237b2d6dfa173fc92538628ab30d643fb4351918f",
                                    "typeString": "literal_string \"log(uint,uint,uint,bool)\""
                                  },
                                  "value": "log(uint,uint,uint,bool)"
                                },
                                {
                                  "id": 26609,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26596,
                                  "src": "17709:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26610,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26598,
                                  "src": "17713:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26611,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26600,
                                  "src": "17717:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26612,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26602,
                                  "src": "17721:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_6452b9cbdf8b8479d7ee301237b2d6dfa173fc92538628ab30d643fb4351918f",
                                    "typeString": "literal_string \"log(uint,uint,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 26606,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "17657:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26607,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "17657:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26613,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17657:67:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26605,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "17641:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17641:84:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26615,
                        "nodeType": "ExpressionStatement",
                        "src": "17641:84:63"
                      }
                    ]
                  },
                  "id": 26617,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "17583:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26603,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26596,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "17592:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26617,
                        "src": "17587:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26595,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17587:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26598,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "17601:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26617,
                        "src": "17596:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26597,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17596:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26600,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "17610:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26617,
                        "src": "17605:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26599,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17605:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26602,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "17619:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26617,
                        "src": "17614:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26601,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "17614:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17586:36:63"
                  },
                  "returnParameters": {
                    "id": 26604,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17637:0:63"
                  },
                  "scope": 32437,
                  "src": "17574:155:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26639,
                    "nodeType": "Block",
                    "src": "17798:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c75696e742c6164647265737329",
                                  "id": 26631,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "17842:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e0853f69a5584c9e0aa87ddae9bd870cf5164166d612d334644e66176c1213ba",
                                    "typeString": "literal_string \"log(uint,uint,uint,address)\""
                                  },
                                  "value": "log(uint,uint,uint,address)"
                                },
                                {
                                  "id": 26632,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26619,
                                  "src": "17873:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26633,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26621,
                                  "src": "17877:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26634,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26623,
                                  "src": "17881:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26635,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26625,
                                  "src": "17885:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_e0853f69a5584c9e0aa87ddae9bd870cf5164166d612d334644e66176c1213ba",
                                    "typeString": "literal_string \"log(uint,uint,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 26629,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "17818:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26630,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "17818:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26636,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17818:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26628,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "17802:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17802:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26638,
                        "nodeType": "ExpressionStatement",
                        "src": "17802:87:63"
                      }
                    ]
                  },
                  "id": 26640,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "17741:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26626,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26619,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "17750:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26640,
                        "src": "17745:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26618,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17745:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26621,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "17759:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26640,
                        "src": "17754:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26620,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17754:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26623,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "17768:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26640,
                        "src": "17763:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26622,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17763:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26625,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "17780:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26640,
                        "src": "17772:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26624,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17772:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17744:39:63"
                  },
                  "returnParameters": {
                    "id": 26627,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17798:0:63"
                  },
                  "scope": 32437,
                  "src": "17732:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26662,
                    "nodeType": "Block",
                    "src": "17968:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c737472696e672c75696e7429",
                                  "id": 26654,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "18012:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_3894163d4e8f3eec101fb8e2c1029563bd05d05ee1d1790a46910ebbbdc3072e",
                                    "typeString": "literal_string \"log(uint,uint,string,uint)\""
                                  },
                                  "value": "log(uint,uint,string,uint)"
                                },
                                {
                                  "id": 26655,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26642,
                                  "src": "18042:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26656,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26644,
                                  "src": "18046:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26657,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26646,
                                  "src": "18050:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 26658,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26648,
                                  "src": "18054:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_3894163d4e8f3eec101fb8e2c1029563bd05d05ee1d1790a46910ebbbdc3072e",
                                    "typeString": "literal_string \"log(uint,uint,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 26652,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "17988:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26653,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "17988:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26659,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17988:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26651,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "17972:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26660,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17972:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26661,
                        "nodeType": "ExpressionStatement",
                        "src": "17972:86:63"
                      }
                    ]
                  },
                  "id": 26663,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "17905:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26649,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26642,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "17914:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26663,
                        "src": "17909:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26641,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17909:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26644,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "17923:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26663,
                        "src": "17918:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26643,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17918:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26646,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "17941:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26663,
                        "src": "17927:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26645,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "17927:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26648,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "17950:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26663,
                        "src": "17945:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26647,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "17945:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17908:45:63"
                  },
                  "returnParameters": {
                    "id": 26650,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17968:0:63"
                  },
                  "scope": 32437,
                  "src": "17896:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26685,
                    "nodeType": "Block",
                    "src": "18146:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c737472696e672c737472696e6729",
                                  "id": 26677,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "18190:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_7c032a3207958e3d969ab52b045e7a59226129ee4b9e813f7071f9a5e80813f6",
                                    "typeString": "literal_string \"log(uint,uint,string,string)\""
                                  },
                                  "value": "log(uint,uint,string,string)"
                                },
                                {
                                  "id": 26678,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26665,
                                  "src": "18222:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26679,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26667,
                                  "src": "18226:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26680,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26669,
                                  "src": "18230:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 26681,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26671,
                                  "src": "18234:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_7c032a3207958e3d969ab52b045e7a59226129ee4b9e813f7071f9a5e80813f6",
                                    "typeString": "literal_string \"log(uint,uint,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 26675,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "18166:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26676,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "18166:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26682,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18166:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26674,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "18150:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26683,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18150:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26684,
                        "nodeType": "ExpressionStatement",
                        "src": "18150:88:63"
                      }
                    ]
                  },
                  "id": 26686,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "18074:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26672,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26665,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "18083:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26686,
                        "src": "18078:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26664,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "18078:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26667,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "18092:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26686,
                        "src": "18087:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26666,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "18087:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26669,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "18110:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26686,
                        "src": "18096:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26668,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "18096:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26671,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "18128:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26686,
                        "src": "18114:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26670,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "18114:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18077:54:63"
                  },
                  "returnParameters": {
                    "id": 26673,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18146:0:63"
                  },
                  "scope": 32437,
                  "src": "18065:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26708,
                    "nodeType": "Block",
                    "src": "18317:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c737472696e672c626f6f6c29",
                                  "id": 26700,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "18361:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_b22eaf06d72d481cf9b94b8f4d5fb89cf08bbfd924ee166a250ac94617be65b9",
                                    "typeString": "literal_string \"log(uint,uint,string,bool)\""
                                  },
                                  "value": "log(uint,uint,string,bool)"
                                },
                                {
                                  "id": 26701,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26688,
                                  "src": "18391:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26702,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26690,
                                  "src": "18395:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26703,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26692,
                                  "src": "18399:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 26704,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26694,
                                  "src": "18403:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_b22eaf06d72d481cf9b94b8f4d5fb89cf08bbfd924ee166a250ac94617be65b9",
                                    "typeString": "literal_string \"log(uint,uint,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 26698,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "18337:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26699,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "18337:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26705,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18337:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26697,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "18321:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26706,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18321:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26707,
                        "nodeType": "ExpressionStatement",
                        "src": "18321:86:63"
                      }
                    ]
                  },
                  "id": 26709,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "18254:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26695,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26688,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "18263:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26709,
                        "src": "18258:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26687,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "18258:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26690,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "18272:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26709,
                        "src": "18267:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26689,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "18267:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26692,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "18290:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26709,
                        "src": "18276:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26691,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "18276:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26694,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "18299:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26709,
                        "src": "18294:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26693,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "18294:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18257:45:63"
                  },
                  "returnParameters": {
                    "id": 26696,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18317:0:63"
                  },
                  "scope": 32437,
                  "src": "18245:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26731,
                    "nodeType": "Block",
                    "src": "18489:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c737472696e672c6164647265737329",
                                  "id": 26723,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "18533:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_433285a23ec6b1f0f76da64682232527561857544109f80e3e5d46b0e16980e7",
                                    "typeString": "literal_string \"log(uint,uint,string,address)\""
                                  },
                                  "value": "log(uint,uint,string,address)"
                                },
                                {
                                  "id": 26724,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26711,
                                  "src": "18566:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26725,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26713,
                                  "src": "18570:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26726,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26715,
                                  "src": "18574:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 26727,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26717,
                                  "src": "18578:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_433285a23ec6b1f0f76da64682232527561857544109f80e3e5d46b0e16980e7",
                                    "typeString": "literal_string \"log(uint,uint,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 26721,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "18509:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26722,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "18509:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26728,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18509:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26720,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "18493:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18493:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26730,
                        "nodeType": "ExpressionStatement",
                        "src": "18493:89:63"
                      }
                    ]
                  },
                  "id": 26732,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "18423:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26718,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26711,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "18432:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26732,
                        "src": "18427:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26710,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "18427:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26713,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "18441:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26732,
                        "src": "18436:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26712,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "18436:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26715,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "18459:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26732,
                        "src": "18445:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26714,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "18445:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26717,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "18471:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26732,
                        "src": "18463:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26716,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18463:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18426:48:63"
                  },
                  "returnParameters": {
                    "id": 26719,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18489:0:63"
                  },
                  "scope": 32437,
                  "src": "18414:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26754,
                    "nodeType": "Block",
                    "src": "18652:92:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c626f6f6c2c75696e7429",
                                  "id": 26746,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "18696:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6c647c8c5fed6e02ad4f1c7bfb891e58ba00758f5d6cb92966fd0684c5b3fc8d",
                                    "typeString": "literal_string \"log(uint,uint,bool,uint)\""
                                  },
                                  "value": "log(uint,uint,bool,uint)"
                                },
                                {
                                  "id": 26747,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26734,
                                  "src": "18724:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26748,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26736,
                                  "src": "18728:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26749,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26738,
                                  "src": "18732:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26750,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26740,
                                  "src": "18736:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_6c647c8c5fed6e02ad4f1c7bfb891e58ba00758f5d6cb92966fd0684c5b3fc8d",
                                    "typeString": "literal_string \"log(uint,uint,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 26744,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "18672:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26745,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "18672:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26751,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18672:67:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26743,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "18656:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26752,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18656:84:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26753,
                        "nodeType": "ExpressionStatement",
                        "src": "18656:84:63"
                      }
                    ]
                  },
                  "id": 26755,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "18598:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26741,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26734,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "18607:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26755,
                        "src": "18602:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26733,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "18602:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26736,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "18616:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26755,
                        "src": "18611:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26735,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "18611:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26738,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "18625:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26755,
                        "src": "18620:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26737,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "18620:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26740,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "18634:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26755,
                        "src": "18629:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26739,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "18629:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18601:36:63"
                  },
                  "returnParameters": {
                    "id": 26742,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18652:0:63"
                  },
                  "scope": 32437,
                  "src": "18589:155:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26777,
                    "nodeType": "Block",
                    "src": "18819:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c626f6f6c2c737472696e6729",
                                  "id": 26769,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "18863:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_efd9cbeee79713372dd0a748a26a3fb36cbe4eb4e01a37fbde0cde0e101fc85a",
                                    "typeString": "literal_string \"log(uint,uint,bool,string)\""
                                  },
                                  "value": "log(uint,uint,bool,string)"
                                },
                                {
                                  "id": 26770,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26757,
                                  "src": "18893:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26771,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26759,
                                  "src": "18897:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26772,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26761,
                                  "src": "18901:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26773,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26763,
                                  "src": "18905:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_efd9cbeee79713372dd0a748a26a3fb36cbe4eb4e01a37fbde0cde0e101fc85a",
                                    "typeString": "literal_string \"log(uint,uint,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 26767,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "18839:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26768,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "18839:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26774,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18839:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26766,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "18823:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26775,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18823:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26776,
                        "nodeType": "ExpressionStatement",
                        "src": "18823:86:63"
                      }
                    ]
                  },
                  "id": 26778,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "18756:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26764,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26757,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "18765:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26778,
                        "src": "18760:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26756,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "18760:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26759,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "18774:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26778,
                        "src": "18769:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26758,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "18769:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26761,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "18783:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26778,
                        "src": "18778:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26760,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "18778:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26763,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "18801:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26778,
                        "src": "18787:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26762,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "18787:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18759:45:63"
                  },
                  "returnParameters": {
                    "id": 26765,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18819:0:63"
                  },
                  "scope": 32437,
                  "src": "18747:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26800,
                    "nodeType": "Block",
                    "src": "18979:92:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c626f6f6c2c626f6f6c29",
                                  "id": 26792,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "19023:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_94be3bb13e096cdbc5a1999a524e3b6664a32da7e2c2954ae0e2b792a0dd1f41",
                                    "typeString": "literal_string \"log(uint,uint,bool,bool)\""
                                  },
                                  "value": "log(uint,uint,bool,bool)"
                                },
                                {
                                  "id": 26793,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26780,
                                  "src": "19051:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26794,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26782,
                                  "src": "19055:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26795,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26784,
                                  "src": "19059:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26796,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26786,
                                  "src": "19063:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_94be3bb13e096cdbc5a1999a524e3b6664a32da7e2c2954ae0e2b792a0dd1f41",
                                    "typeString": "literal_string \"log(uint,uint,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 26790,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "18999:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26791,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "18999:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26797,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18999:67:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26789,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "18983:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18983:84:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26799,
                        "nodeType": "ExpressionStatement",
                        "src": "18983:84:63"
                      }
                    ]
                  },
                  "id": 26801,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "18925:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26787,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26780,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "18934:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26801,
                        "src": "18929:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26779,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "18929:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26782,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "18943:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26801,
                        "src": "18938:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26781,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "18938:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26784,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "18952:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26801,
                        "src": "18947:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26783,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "18947:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26786,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "18961:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26801,
                        "src": "18956:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26785,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "18956:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18928:36:63"
                  },
                  "returnParameters": {
                    "id": 26788,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18979:0:63"
                  },
                  "scope": 32437,
                  "src": "18916:155:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26823,
                    "nodeType": "Block",
                    "src": "19140:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c626f6f6c2c6164647265737329",
                                  "id": 26815,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "19184:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e117744fcc46e4484cabd18d640497b4a9d76b7f775e79fe9a95e42427bd8976",
                                    "typeString": "literal_string \"log(uint,uint,bool,address)\""
                                  },
                                  "value": "log(uint,uint,bool,address)"
                                },
                                {
                                  "id": 26816,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26803,
                                  "src": "19215:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26817,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26805,
                                  "src": "19219:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26818,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26807,
                                  "src": "19223:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 26819,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26809,
                                  "src": "19227:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_e117744fcc46e4484cabd18d640497b4a9d76b7f775e79fe9a95e42427bd8976",
                                    "typeString": "literal_string \"log(uint,uint,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 26813,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "19160:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26814,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "19160:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26820,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19160:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26812,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "19144:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19144:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26822,
                        "nodeType": "ExpressionStatement",
                        "src": "19144:87:63"
                      }
                    ]
                  },
                  "id": 26824,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "19083:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26810,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26803,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "19092:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26824,
                        "src": "19087:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26802,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "19087:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26805,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "19101:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26824,
                        "src": "19096:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26804,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "19096:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26807,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "19110:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26824,
                        "src": "19105:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26806,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "19105:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26809,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "19122:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26824,
                        "src": "19114:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26808,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19114:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19086:39:63"
                  },
                  "returnParameters": {
                    "id": 26811,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19140:0:63"
                  },
                  "scope": 32437,
                  "src": "19074:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26846,
                    "nodeType": "Block",
                    "src": "19304:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c616464726573732c75696e7429",
                                  "id": 26838,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "19348:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_610ba8c0cae1123f7f8ad76791afd86dc185a4f1fe79a263112118ddb5231e9f",
                                    "typeString": "literal_string \"log(uint,uint,address,uint)\""
                                  },
                                  "value": "log(uint,uint,address,uint)"
                                },
                                {
                                  "id": 26839,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26826,
                                  "src": "19379:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26840,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26828,
                                  "src": "19383:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26841,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26830,
                                  "src": "19387:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26842,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26832,
                                  "src": "19391:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_610ba8c0cae1123f7f8ad76791afd86dc185a4f1fe79a263112118ddb5231e9f",
                                    "typeString": "literal_string \"log(uint,uint,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 26836,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "19324:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26837,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "19324:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26843,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19324:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26835,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "19308:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19308:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26845,
                        "nodeType": "ExpressionStatement",
                        "src": "19308:87:63"
                      }
                    ]
                  },
                  "id": 26847,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "19247:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26833,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26826,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "19256:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26847,
                        "src": "19251:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26825,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "19251:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26828,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "19265:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26847,
                        "src": "19260:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26827,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "19260:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26830,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "19277:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26847,
                        "src": "19269:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26829,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19269:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26832,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "19286:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26847,
                        "src": "19281:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26831,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "19281:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19250:39:63"
                  },
                  "returnParameters": {
                    "id": 26834,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19304:0:63"
                  },
                  "scope": 32437,
                  "src": "19238:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26869,
                    "nodeType": "Block",
                    "src": "19477:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c616464726573732c737472696e6729",
                                  "id": 26861,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "19521:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_d6a2d1de1bf5c0a47e82220cd592c8fb4a4a43f17ecab471044861ef70454227",
                                    "typeString": "literal_string \"log(uint,uint,address,string)\""
                                  },
                                  "value": "log(uint,uint,address,string)"
                                },
                                {
                                  "id": 26862,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26849,
                                  "src": "19554:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26863,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26851,
                                  "src": "19558:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26864,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26853,
                                  "src": "19562:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26865,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26855,
                                  "src": "19566:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_d6a2d1de1bf5c0a47e82220cd592c8fb4a4a43f17ecab471044861ef70454227",
                                    "typeString": "literal_string \"log(uint,uint,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 26859,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "19497:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26860,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "19497:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26866,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19497:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26858,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "19481:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19481:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26868,
                        "nodeType": "ExpressionStatement",
                        "src": "19481:89:63"
                      }
                    ]
                  },
                  "id": 26870,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "19411:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26856,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26849,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "19420:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26870,
                        "src": "19415:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26848,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "19415:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26851,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "19429:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26870,
                        "src": "19424:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26850,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "19424:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26853,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "19441:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26870,
                        "src": "19433:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26852,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19433:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26855,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "19459:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26870,
                        "src": "19445:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26854,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "19445:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19414:48:63"
                  },
                  "returnParameters": {
                    "id": 26857,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19477:0:63"
                  },
                  "scope": 32437,
                  "src": "19402:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26892,
                    "nodeType": "Block",
                    "src": "19643:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c616464726573732c626f6f6c29",
                                  "id": 26884,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "19687:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a8e820ae9dc5fd5a845e5dabf2b296e5588fe5a0d8101de14323ebe3e8e2b6c0",
                                    "typeString": "literal_string \"log(uint,uint,address,bool)\""
                                  },
                                  "value": "log(uint,uint,address,bool)"
                                },
                                {
                                  "id": 26885,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26872,
                                  "src": "19718:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26886,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26874,
                                  "src": "19722:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26887,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26876,
                                  "src": "19726:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26888,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26878,
                                  "src": "19730:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a8e820ae9dc5fd5a845e5dabf2b296e5588fe5a0d8101de14323ebe3e8e2b6c0",
                                    "typeString": "literal_string \"log(uint,uint,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 26882,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "19663:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26883,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "19663:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26889,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19663:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26881,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "19647:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26890,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19647:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26891,
                        "nodeType": "ExpressionStatement",
                        "src": "19647:87:63"
                      }
                    ]
                  },
                  "id": 26893,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "19586:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26879,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26872,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "19595:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26893,
                        "src": "19590:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26871,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "19590:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26874,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "19604:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26893,
                        "src": "19599:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26873,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "19599:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26876,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "19616:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26893,
                        "src": "19608:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26875,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19608:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26878,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "19625:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26893,
                        "src": "19620:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26877,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "19620:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19589:39:63"
                  },
                  "returnParameters": {
                    "id": 26880,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19643:0:63"
                  },
                  "scope": 32437,
                  "src": "19577:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26915,
                    "nodeType": "Block",
                    "src": "19810:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c75696e742c616464726573732c6164647265737329",
                                  "id": 26907,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "19854:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_ca939b20e9284d76bbbc091d0d45d06f650171230ac4f1f35652b8b6e1579811",
                                    "typeString": "literal_string \"log(uint,uint,address,address)\""
                                  },
                                  "value": "log(uint,uint,address,address)"
                                },
                                {
                                  "id": 26908,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26895,
                                  "src": "19888:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26909,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26897,
                                  "src": "19892:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26910,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26899,
                                  "src": "19896:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 26911,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26901,
                                  "src": "19900:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_ca939b20e9284d76bbbc091d0d45d06f650171230ac4f1f35652b8b6e1579811",
                                    "typeString": "literal_string \"log(uint,uint,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 26905,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "19830:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26906,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "19830:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26912,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19830:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26904,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "19814:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26913,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19814:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26914,
                        "nodeType": "ExpressionStatement",
                        "src": "19814:90:63"
                      }
                    ]
                  },
                  "id": 26916,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "19750:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26902,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26895,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "19759:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26916,
                        "src": "19754:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26894,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "19754:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26897,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "19768:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26916,
                        "src": "19763:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26896,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "19763:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26899,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "19780:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26916,
                        "src": "19772:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26898,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19772:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26901,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "19792:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26916,
                        "src": "19784:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26900,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19784:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19753:42:63"
                  },
                  "returnParameters": {
                    "id": 26903,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19810:0:63"
                  },
                  "scope": 32437,
                  "src": "19741:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26938,
                    "nodeType": "Block",
                    "src": "19983:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c75696e742c75696e7429",
                                  "id": 26930,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20027:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c0043807b5f951e0375253205c951c6e6a6b19b5de111342e8f6be7c7f284628",
                                    "typeString": "literal_string \"log(uint,string,uint,uint)\""
                                  },
                                  "value": "log(uint,string,uint,uint)"
                                },
                                {
                                  "id": 26931,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26918,
                                  "src": "20057:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26932,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26920,
                                  "src": "20061:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 26933,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26922,
                                  "src": "20065:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26934,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26924,
                                  "src": "20069:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c0043807b5f951e0375253205c951c6e6a6b19b5de111342e8f6be7c7f284628",
                                    "typeString": "literal_string \"log(uint,string,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 26928,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "20003:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26929,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "20003:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26935,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20003:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26927,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "19987:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26936,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19987:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26937,
                        "nodeType": "ExpressionStatement",
                        "src": "19987:86:63"
                      }
                    ]
                  },
                  "id": 26939,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "19920:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26925,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26918,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "19929:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26939,
                        "src": "19924:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26917,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "19924:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26920,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "19947:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26939,
                        "src": "19933:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26919,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "19933:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26922,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "19956:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26939,
                        "src": "19951:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26921,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "19951:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26924,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "19965:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26939,
                        "src": "19960:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26923,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "19960:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19923:45:63"
                  },
                  "returnParameters": {
                    "id": 26926,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19983:0:63"
                  },
                  "scope": 32437,
                  "src": "19911:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26961,
                    "nodeType": "Block",
                    "src": "20161:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c75696e742c737472696e6729",
                                  "id": 26953,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20205:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a2bc0c99cedfd873182e8eb1e68799dc8925c663b8ce2430858586fba62fe313",
                                    "typeString": "literal_string \"log(uint,string,uint,string)\""
                                  },
                                  "value": "log(uint,string,uint,string)"
                                },
                                {
                                  "id": 26954,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26941,
                                  "src": "20237:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26955,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26943,
                                  "src": "20241:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 26956,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26945,
                                  "src": "20245:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26957,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26947,
                                  "src": "20249:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a2bc0c99cedfd873182e8eb1e68799dc8925c663b8ce2430858586fba62fe313",
                                    "typeString": "literal_string \"log(uint,string,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 26951,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "20181:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26952,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "20181:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26958,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20181:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26950,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "20165:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20165:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26960,
                        "nodeType": "ExpressionStatement",
                        "src": "20165:88:63"
                      }
                    ]
                  },
                  "id": 26962,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "20089:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26948,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26941,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "20098:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26962,
                        "src": "20093:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26940,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "20093:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26943,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "20116:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26962,
                        "src": "20102:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26942,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "20102:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26945,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "20125:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26962,
                        "src": "20120:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26944,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "20120:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26947,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "20143:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26962,
                        "src": "20129:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26946,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "20129:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20092:54:63"
                  },
                  "returnParameters": {
                    "id": 26949,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20161:0:63"
                  },
                  "scope": 32437,
                  "src": "20080:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 26984,
                    "nodeType": "Block",
                    "src": "20332:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c75696e742c626f6f6c29",
                                  "id": 26976,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20376:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_875a6e2ed2444d0d09e264b06717914212d8a793bea0f48b5633e707ac53784d",
                                    "typeString": "literal_string \"log(uint,string,uint,bool)\""
                                  },
                                  "value": "log(uint,string,uint,bool)"
                                },
                                {
                                  "id": 26977,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26964,
                                  "src": "20406:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26978,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26966,
                                  "src": "20410:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 26979,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26968,
                                  "src": "20414:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 26980,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26970,
                                  "src": "20418:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_875a6e2ed2444d0d09e264b06717914212d8a793bea0f48b5633e707ac53784d",
                                    "typeString": "literal_string \"log(uint,string,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 26974,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "20352:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26975,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "20352:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 26981,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20352:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26973,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "20336:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 26982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20336:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 26983,
                        "nodeType": "ExpressionStatement",
                        "src": "20336:86:63"
                      }
                    ]
                  },
                  "id": 26985,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "20269:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26971,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26964,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "20278:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26985,
                        "src": "20273:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26963,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "20273:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26966,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "20296:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26985,
                        "src": "20282:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26965,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "20282:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26968,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "20305:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26985,
                        "src": "20300:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26967,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "20300:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26970,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "20314:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 26985,
                        "src": "20309:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 26969,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "20309:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20272:45:63"
                  },
                  "returnParameters": {
                    "id": 26972,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20332:0:63"
                  },
                  "scope": 32437,
                  "src": "20260:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27007,
                    "nodeType": "Block",
                    "src": "20504:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c75696e742c6164647265737329",
                                  "id": 26999,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20548:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_ab7bd9fd9b149127bbb235a3e1bec9a2e844f3968bdc1f48944c4b1973dacfda",
                                    "typeString": "literal_string \"log(uint,string,uint,address)\""
                                  },
                                  "value": "log(uint,string,uint,address)"
                                },
                                {
                                  "id": 27000,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26987,
                                  "src": "20581:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27001,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26989,
                                  "src": "20585:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27002,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26991,
                                  "src": "20589:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27003,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 26993,
                                  "src": "20593:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_ab7bd9fd9b149127bbb235a3e1bec9a2e844f3968bdc1f48944c4b1973dacfda",
                                    "typeString": "literal_string \"log(uint,string,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 26997,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "20524:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 26998,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "20524:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27004,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20524:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 26996,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "20508:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27005,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20508:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27006,
                        "nodeType": "ExpressionStatement",
                        "src": "20508:89:63"
                      }
                    ]
                  },
                  "id": 27008,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "20438:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 26994,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26987,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "20447:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27008,
                        "src": "20442:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26986,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "20442:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26989,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "20465:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27008,
                        "src": "20451:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 26988,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "20451:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26991,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "20474:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27008,
                        "src": "20469:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 26990,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "20469:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 26993,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "20486:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27008,
                        "src": "20478:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 26992,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "20478:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20441:48:63"
                  },
                  "returnParameters": {
                    "id": 26995,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20504:0:63"
                  },
                  "scope": 32437,
                  "src": "20429:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27030,
                    "nodeType": "Block",
                    "src": "20685:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c737472696e672c75696e7429",
                                  "id": 27022,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20729:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_76ec635e4702367bf449b895743175fa2654af8170b6d9c20dd183616d0a192b",
                                    "typeString": "literal_string \"log(uint,string,string,uint)\""
                                  },
                                  "value": "log(uint,string,string,uint)"
                                },
                                {
                                  "id": 27023,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27010,
                                  "src": "20761:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27024,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27012,
                                  "src": "20765:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27025,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27014,
                                  "src": "20769:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27026,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27016,
                                  "src": "20773:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_76ec635e4702367bf449b895743175fa2654af8170b6d9c20dd183616d0a192b",
                                    "typeString": "literal_string \"log(uint,string,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 27020,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "20705:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27021,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "20705:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27027,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20705:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27019,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "20689:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20689:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27029,
                        "nodeType": "ExpressionStatement",
                        "src": "20689:88:63"
                      }
                    ]
                  },
                  "id": 27031,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "20613:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27017,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27010,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "20622:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27031,
                        "src": "20617:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27009,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "20617:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27012,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "20640:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27031,
                        "src": "20626:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27011,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "20626:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27014,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "20658:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27031,
                        "src": "20644:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27013,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "20644:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27016,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "20667:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27031,
                        "src": "20662:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27015,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "20662:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20616:54:63"
                  },
                  "returnParameters": {
                    "id": 27018,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20685:0:63"
                  },
                  "scope": 32437,
                  "src": "20604:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27053,
                    "nodeType": "Block",
                    "src": "20874:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c737472696e672c737472696e6729",
                                  "id": 27045,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "20918:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_57dd0a119927787a0c91b48333e191a1b3a4082dcb6efc912e2ba5b047e15156",
                                    "typeString": "literal_string \"log(uint,string,string,string)\""
                                  },
                                  "value": "log(uint,string,string,string)"
                                },
                                {
                                  "id": 27046,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27033,
                                  "src": "20952:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27047,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27035,
                                  "src": "20956:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27048,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27037,
                                  "src": "20960:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27049,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27039,
                                  "src": "20964:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_57dd0a119927787a0c91b48333e191a1b3a4082dcb6efc912e2ba5b047e15156",
                                    "typeString": "literal_string \"log(uint,string,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 27043,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "20894:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27044,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "20894:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27050,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "20894:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27042,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "20878:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20878:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27052,
                        "nodeType": "ExpressionStatement",
                        "src": "20878:90:63"
                      }
                    ]
                  },
                  "id": 27054,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "20793:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27040,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27033,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "20802:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27054,
                        "src": "20797:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27032,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "20797:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27035,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "20820:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27054,
                        "src": "20806:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27034,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "20806:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27037,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "20838:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27054,
                        "src": "20824:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27036,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "20824:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27039,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "20856:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27054,
                        "src": "20842:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27038,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "20842:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20796:63:63"
                  },
                  "returnParameters": {
                    "id": 27041,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20874:0:63"
                  },
                  "scope": 32437,
                  "src": "20784:188:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27076,
                    "nodeType": "Block",
                    "src": "21056:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c737472696e672c626f6f6c29",
                                  "id": 27068,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21100:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_12862b98fdb7950b0e6908443bc9d7894b44d5616424da5cdb6206a848affcbc",
                                    "typeString": "literal_string \"log(uint,string,string,bool)\""
                                  },
                                  "value": "log(uint,string,string,bool)"
                                },
                                {
                                  "id": 27069,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27056,
                                  "src": "21132:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27070,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27058,
                                  "src": "21136:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27071,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27060,
                                  "src": "21140:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27072,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27062,
                                  "src": "21144:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_12862b98fdb7950b0e6908443bc9d7894b44d5616424da5cdb6206a848affcbc",
                                    "typeString": "literal_string \"log(uint,string,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 27066,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "21076:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27067,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "21076:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27073,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21076:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27065,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "21060:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21060:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27075,
                        "nodeType": "ExpressionStatement",
                        "src": "21060:88:63"
                      }
                    ]
                  },
                  "id": 27077,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "20984:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27063,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27056,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "20993:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27077,
                        "src": "20988:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27055,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "20988:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27058,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "21011:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27077,
                        "src": "20997:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27057,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "20997:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27060,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "21029:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27077,
                        "src": "21015:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27059,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "21015:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27062,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "21038:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27077,
                        "src": "21033:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27061,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "21033:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20987:54:63"
                  },
                  "returnParameters": {
                    "id": 27064,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21056:0:63"
                  },
                  "scope": 32437,
                  "src": "20975:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27099,
                    "nodeType": "Block",
                    "src": "21239:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c737472696e672c6164647265737329",
                                  "id": 27091,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21283:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_cc988aa0514d1ed8be70a6bf2bdff4972e3f3420811b4adbd40f9b75b873fded",
                                    "typeString": "literal_string \"log(uint,string,string,address)\""
                                  },
                                  "value": "log(uint,string,string,address)"
                                },
                                {
                                  "id": 27092,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27079,
                                  "src": "21318:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27093,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27081,
                                  "src": "21322:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27094,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27083,
                                  "src": "21326:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27095,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27085,
                                  "src": "21330:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_cc988aa0514d1ed8be70a6bf2bdff4972e3f3420811b4adbd40f9b75b873fded",
                                    "typeString": "literal_string \"log(uint,string,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 27089,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "21259:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27090,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "21259:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27096,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21259:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27088,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "21243:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27097,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21243:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27098,
                        "nodeType": "ExpressionStatement",
                        "src": "21243:91:63"
                      }
                    ]
                  },
                  "id": 27100,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "21164:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27086,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27079,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "21173:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27100,
                        "src": "21168:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27078,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "21168:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27081,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "21191:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27100,
                        "src": "21177:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27080,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "21177:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27083,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "21209:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27100,
                        "src": "21195:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27082,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "21195:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27085,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "21221:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27100,
                        "src": "21213:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27084,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21213:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21167:57:63"
                  },
                  "returnParameters": {
                    "id": 27087,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21239:0:63"
                  },
                  "scope": 32437,
                  "src": "21155:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27122,
                    "nodeType": "Block",
                    "src": "21413:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c626f6f6c2c75696e7429",
                                  "id": 27114,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21457:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a4b48a7f4bdefee99950b35e5da7ba9724c3954e445cc3077000bce7a4265081",
                                    "typeString": "literal_string \"log(uint,string,bool,uint)\""
                                  },
                                  "value": "log(uint,string,bool,uint)"
                                },
                                {
                                  "id": 27115,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27102,
                                  "src": "21487:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27116,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27104,
                                  "src": "21491:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27117,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27106,
                                  "src": "21495:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27118,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27108,
                                  "src": "21499:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a4b48a7f4bdefee99950b35e5da7ba9724c3954e445cc3077000bce7a4265081",
                                    "typeString": "literal_string \"log(uint,string,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 27112,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "21433:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27113,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "21433:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27119,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21433:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27111,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "21417:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21417:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27121,
                        "nodeType": "ExpressionStatement",
                        "src": "21417:86:63"
                      }
                    ]
                  },
                  "id": 27123,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "21350:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27109,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27102,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "21359:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27123,
                        "src": "21354:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27101,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "21354:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27104,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "21377:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27123,
                        "src": "21363:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27103,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "21363:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27106,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "21386:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27123,
                        "src": "21381:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27105,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "21381:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27108,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "21395:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27123,
                        "src": "21390:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27107,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "21390:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21353:45:63"
                  },
                  "returnParameters": {
                    "id": 27110,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21413:0:63"
                  },
                  "scope": 32437,
                  "src": "21341:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27145,
                    "nodeType": "Block",
                    "src": "21591:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c626f6f6c2c737472696e6729",
                                  "id": 27137,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21635:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_8d489ca064b1083bafb8388fd8f3d44c2255dbe322f7a52abe786a76257d06e4",
                                    "typeString": "literal_string \"log(uint,string,bool,string)\""
                                  },
                                  "value": "log(uint,string,bool,string)"
                                },
                                {
                                  "id": 27138,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27125,
                                  "src": "21667:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27139,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27127,
                                  "src": "21671:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27140,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27129,
                                  "src": "21675:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27141,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27131,
                                  "src": "21679:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_8d489ca064b1083bafb8388fd8f3d44c2255dbe322f7a52abe786a76257d06e4",
                                    "typeString": "literal_string \"log(uint,string,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 27135,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "21611:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27136,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "21611:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27142,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21611:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27134,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "21595:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21595:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27144,
                        "nodeType": "ExpressionStatement",
                        "src": "21595:88:63"
                      }
                    ]
                  },
                  "id": 27146,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "21519:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27132,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27125,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "21528:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27146,
                        "src": "21523:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27124,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "21523:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27127,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "21546:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27146,
                        "src": "21532:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27126,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "21532:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27129,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "21555:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27146,
                        "src": "21550:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27128,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "21550:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27131,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "21573:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27146,
                        "src": "21559:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27130,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "21559:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21522:54:63"
                  },
                  "returnParameters": {
                    "id": 27133,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21591:0:63"
                  },
                  "scope": 32437,
                  "src": "21510:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27168,
                    "nodeType": "Block",
                    "src": "21762:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c626f6f6c2c626f6f6c29",
                                  "id": 27160,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21806:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_51bc2bc161debf765eefa84d88e06440adeb87045d559377a9edb97406168b2a",
                                    "typeString": "literal_string \"log(uint,string,bool,bool)\""
                                  },
                                  "value": "log(uint,string,bool,bool)"
                                },
                                {
                                  "id": 27161,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27148,
                                  "src": "21836:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27162,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27150,
                                  "src": "21840:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27163,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27152,
                                  "src": "21844:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27164,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27154,
                                  "src": "21848:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_51bc2bc161debf765eefa84d88e06440adeb87045d559377a9edb97406168b2a",
                                    "typeString": "literal_string \"log(uint,string,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 27158,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "21782:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27159,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "21782:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27165,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21782:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27157,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "21766:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27166,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21766:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27167,
                        "nodeType": "ExpressionStatement",
                        "src": "21766:86:63"
                      }
                    ]
                  },
                  "id": 27169,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "21699:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27155,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27148,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "21708:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27169,
                        "src": "21703:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27147,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "21703:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27150,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "21726:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27169,
                        "src": "21712:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27149,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "21712:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27152,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "21735:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27169,
                        "src": "21730:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27151,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "21730:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27154,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "21744:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27169,
                        "src": "21739:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27153,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "21739:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21702:45:63"
                  },
                  "returnParameters": {
                    "id": 27156,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21762:0:63"
                  },
                  "scope": 32437,
                  "src": "21690:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27191,
                    "nodeType": "Block",
                    "src": "21934:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c626f6f6c2c6164647265737329",
                                  "id": 27183,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "21978:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_796f28a06ededa438107c0866560412d4d4337e29da4c7300f50c49a73c18829",
                                    "typeString": "literal_string \"log(uint,string,bool,address)\""
                                  },
                                  "value": "log(uint,string,bool,address)"
                                },
                                {
                                  "id": 27184,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27171,
                                  "src": "22011:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27185,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27173,
                                  "src": "22015:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27186,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27175,
                                  "src": "22019:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27187,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27177,
                                  "src": "22023:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_796f28a06ededa438107c0866560412d4d4337e29da4c7300f50c49a73c18829",
                                    "typeString": "literal_string \"log(uint,string,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 27181,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "21954:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "21954:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27188,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21954:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27180,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "21938:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21938:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27190,
                        "nodeType": "ExpressionStatement",
                        "src": "21938:89:63"
                      }
                    ]
                  },
                  "id": 27192,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "21868:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27178,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27171,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "21877:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27192,
                        "src": "21872:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27170,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "21872:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27173,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "21895:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27192,
                        "src": "21881:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27172,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "21881:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27175,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "21904:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27192,
                        "src": "21899:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27174,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "21899:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27177,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "21916:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27192,
                        "src": "21908:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27176,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21908:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21871:48:63"
                  },
                  "returnParameters": {
                    "id": 27179,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21934:0:63"
                  },
                  "scope": 32437,
                  "src": "21859:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27214,
                    "nodeType": "Block",
                    "src": "22109:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c616464726573732c75696e7429",
                                  "id": 27206,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "22153:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_98e7f3f3a2c39a91982b0a3ae7f29043579abd563fc10531c052f92c3317af43",
                                    "typeString": "literal_string \"log(uint,string,address,uint)\""
                                  },
                                  "value": "log(uint,string,address,uint)"
                                },
                                {
                                  "id": 27207,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27194,
                                  "src": "22186:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27208,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27196,
                                  "src": "22190:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27209,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27198,
                                  "src": "22194:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27210,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27200,
                                  "src": "22198:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_98e7f3f3a2c39a91982b0a3ae7f29043579abd563fc10531c052f92c3317af43",
                                    "typeString": "literal_string \"log(uint,string,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 27204,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "22129:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27205,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "22129:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27211,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22129:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27203,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "22113:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27212,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22113:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27213,
                        "nodeType": "ExpressionStatement",
                        "src": "22113:89:63"
                      }
                    ]
                  },
                  "id": 27215,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "22043:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27201,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27194,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "22052:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27215,
                        "src": "22047:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27193,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "22047:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27196,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "22070:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27215,
                        "src": "22056:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27195,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "22056:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27198,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "22082:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27215,
                        "src": "22074:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27197,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22074:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27200,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "22091:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27215,
                        "src": "22086:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27199,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "22086:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22046:48:63"
                  },
                  "returnParameters": {
                    "id": 27202,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22109:0:63"
                  },
                  "scope": 32437,
                  "src": "22034:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27237,
                    "nodeType": "Block",
                    "src": "22293:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c616464726573732c737472696e6729",
                                  "id": 27229,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "22337:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f898577fdc87bf80b54b2b838f8b58bf5a74554c7beeb61b98f3c2b7d59f31e2",
                                    "typeString": "literal_string \"log(uint,string,address,string)\""
                                  },
                                  "value": "log(uint,string,address,string)"
                                },
                                {
                                  "id": 27230,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27217,
                                  "src": "22372:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27231,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27219,
                                  "src": "22376:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27232,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27221,
                                  "src": "22380:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27233,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27223,
                                  "src": "22384:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_f898577fdc87bf80b54b2b838f8b58bf5a74554c7beeb61b98f3c2b7d59f31e2",
                                    "typeString": "literal_string \"log(uint,string,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 27227,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "22313:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27228,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "22313:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27234,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22313:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27226,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "22297:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22297:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27236,
                        "nodeType": "ExpressionStatement",
                        "src": "22297:91:63"
                      }
                    ]
                  },
                  "id": 27238,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "22218:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27224,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27217,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "22227:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27238,
                        "src": "22222:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27216,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "22222:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27219,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "22245:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27238,
                        "src": "22231:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27218,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "22231:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27221,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "22257:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27238,
                        "src": "22249:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27220,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22249:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27223,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "22275:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27238,
                        "src": "22261:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27222,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "22261:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22221:57:63"
                  },
                  "returnParameters": {
                    "id": 27225,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22293:0:63"
                  },
                  "scope": 32437,
                  "src": "22209:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27260,
                    "nodeType": "Block",
                    "src": "22470:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c616464726573732c626f6f6c29",
                                  "id": 27252,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "22514:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f93fff378483bab1a84a8ae346090ff91e793863821a5430c45153390c3262e1",
                                    "typeString": "literal_string \"log(uint,string,address,bool)\""
                                  },
                                  "value": "log(uint,string,address,bool)"
                                },
                                {
                                  "id": 27253,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27240,
                                  "src": "22547:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27254,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27242,
                                  "src": "22551:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27255,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27244,
                                  "src": "22555:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27256,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27246,
                                  "src": "22559:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_f93fff378483bab1a84a8ae346090ff91e793863821a5430c45153390c3262e1",
                                    "typeString": "literal_string \"log(uint,string,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 27250,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "22490:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27251,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "22490:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27257,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22490:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27249,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "22474:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27258,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22474:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27259,
                        "nodeType": "ExpressionStatement",
                        "src": "22474:89:63"
                      }
                    ]
                  },
                  "id": 27261,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "22404:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27247,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27240,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "22413:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27261,
                        "src": "22408:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27239,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "22408:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27242,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "22431:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27261,
                        "src": "22417:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27241,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "22417:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27244,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "22443:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27261,
                        "src": "22435:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27243,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22435:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27246,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "22452:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27261,
                        "src": "22447:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27245,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "22447:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22407:48:63"
                  },
                  "returnParameters": {
                    "id": 27248,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22470:0:63"
                  },
                  "scope": 32437,
                  "src": "22395:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27283,
                    "nodeType": "Block",
                    "src": "22648:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c737472696e672c616464726573732c6164647265737329",
                                  "id": 27275,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "22692:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_7fa5458bb859a8b444c46f9915b7879afe7e200298580a00c5813ecf5c0a77cb",
                                    "typeString": "literal_string \"log(uint,string,address,address)\""
                                  },
                                  "value": "log(uint,string,address,address)"
                                },
                                {
                                  "id": 27276,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27263,
                                  "src": "22728:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27277,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27265,
                                  "src": "22732:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27278,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27267,
                                  "src": "22736:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27279,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27269,
                                  "src": "22740:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_7fa5458bb859a8b444c46f9915b7879afe7e200298580a00c5813ecf5c0a77cb",
                                    "typeString": "literal_string \"log(uint,string,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 27273,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "22668:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27274,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "22668:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27280,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22668:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27272,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "22652:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22652:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27282,
                        "nodeType": "ExpressionStatement",
                        "src": "22652:92:63"
                      }
                    ]
                  },
                  "id": 27284,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "22579:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27270,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27263,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "22588:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27284,
                        "src": "22583:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27262,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "22583:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27265,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "22606:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27284,
                        "src": "22592:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27264,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "22592:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27267,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "22618:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27284,
                        "src": "22610:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27266,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22610:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27269,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "22630:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27284,
                        "src": "22622:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27268,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22622:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22582:51:63"
                  },
                  "returnParameters": {
                    "id": 27271,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22648:0:63"
                  },
                  "scope": 32437,
                  "src": "22570:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27306,
                    "nodeType": "Block",
                    "src": "22814:92:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c75696e742c75696e7429",
                                  "id": 27298,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "22858:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_56828da42a6ecdc94480e6d223af96b676cdc4ca9a00b1d88a7646ef1e12541e",
                                    "typeString": "literal_string \"log(uint,bool,uint,uint)\""
                                  },
                                  "value": "log(uint,bool,uint,uint)"
                                },
                                {
                                  "id": 27299,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27286,
                                  "src": "22886:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27300,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27288,
                                  "src": "22890:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27301,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27290,
                                  "src": "22894:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27302,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27292,
                                  "src": "22898:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_56828da42a6ecdc94480e6d223af96b676cdc4ca9a00b1d88a7646ef1e12541e",
                                    "typeString": "literal_string \"log(uint,bool,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 27296,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "22834:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27297,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "22834:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "22834:67:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27295,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "22818:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27304,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22818:84:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27305,
                        "nodeType": "ExpressionStatement",
                        "src": "22818:84:63"
                      }
                    ]
                  },
                  "id": 27307,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "22760:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27293,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27286,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "22769:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27307,
                        "src": "22764:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27285,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "22764:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27288,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "22778:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27307,
                        "src": "22773:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27287,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "22773:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27290,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "22787:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27307,
                        "src": "22782:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27289,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "22782:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27292,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "22796:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27307,
                        "src": "22791:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27291,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "22791:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22763:36:63"
                  },
                  "returnParameters": {
                    "id": 27294,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22814:0:63"
                  },
                  "scope": 32437,
                  "src": "22751:155:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27329,
                    "nodeType": "Block",
                    "src": "22981:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c75696e742c737472696e6729",
                                  "id": 27321,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "23025:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e8ddbc56b4712607102717eb35a3ee6aa0309358d07a4257a282d4a44ceb2f63",
                                    "typeString": "literal_string \"log(uint,bool,uint,string)\""
                                  },
                                  "value": "log(uint,bool,uint,string)"
                                },
                                {
                                  "id": 27322,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27309,
                                  "src": "23055:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27323,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27311,
                                  "src": "23059:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27324,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27313,
                                  "src": "23063:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27325,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27315,
                                  "src": "23067:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_e8ddbc56b4712607102717eb35a3ee6aa0309358d07a4257a282d4a44ceb2f63",
                                    "typeString": "literal_string \"log(uint,bool,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 27319,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "23001:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27320,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "23001:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27326,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "23001:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27318,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "22985:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27327,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22985:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27328,
                        "nodeType": "ExpressionStatement",
                        "src": "22985:86:63"
                      }
                    ]
                  },
                  "id": 27330,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "22918:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27316,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27309,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "22927:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27330,
                        "src": "22922:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27308,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "22922:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27311,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "22936:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27330,
                        "src": "22931:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27310,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "22931:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27313,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "22945:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27330,
                        "src": "22940:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27312,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "22940:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27315,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "22963:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27330,
                        "src": "22949:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27314,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "22949:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22921:45:63"
                  },
                  "returnParameters": {
                    "id": 27317,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22981:0:63"
                  },
                  "scope": 32437,
                  "src": "22909:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27352,
                    "nodeType": "Block",
                    "src": "23141:92:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c75696e742c626f6f6c29",
                                  "id": 27344,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "23185:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_d2abc4fdef6f35f3785755f2ca3a26416b52c0c4c5ad8b27342fc84a56532f2f",
                                    "typeString": "literal_string \"log(uint,bool,uint,bool)\""
                                  },
                                  "value": "log(uint,bool,uint,bool)"
                                },
                                {
                                  "id": 27345,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27332,
                                  "src": "23213:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27346,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27334,
                                  "src": "23217:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27347,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27336,
                                  "src": "23221:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27348,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27338,
                                  "src": "23225:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_d2abc4fdef6f35f3785755f2ca3a26416b52c0c4c5ad8b27342fc84a56532f2f",
                                    "typeString": "literal_string \"log(uint,bool,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 27342,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "23161:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27343,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "23161:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27349,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "23161:67:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27341,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "23145:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23145:84:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27351,
                        "nodeType": "ExpressionStatement",
                        "src": "23145:84:63"
                      }
                    ]
                  },
                  "id": 27353,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "23087:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27339,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27332,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "23096:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27353,
                        "src": "23091:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27331,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "23091:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27334,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "23105:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27353,
                        "src": "23100:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27333,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23100:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27336,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "23114:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27353,
                        "src": "23109:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27335,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "23109:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27338,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "23123:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27353,
                        "src": "23118:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27337,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23118:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23090:36:63"
                  },
                  "returnParameters": {
                    "id": 27340,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23141:0:63"
                  },
                  "scope": 32437,
                  "src": "23078:155:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27375,
                    "nodeType": "Block",
                    "src": "23302:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c75696e742c6164647265737329",
                                  "id": 27367,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "23346:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_4f40058ea8927b23c60661eeb28f54d3ce10f5f6cdd8e3ce445d34409ceb50a3",
                                    "typeString": "literal_string \"log(uint,bool,uint,address)\""
                                  },
                                  "value": "log(uint,bool,uint,address)"
                                },
                                {
                                  "id": 27368,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27355,
                                  "src": "23377:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27369,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27357,
                                  "src": "23381:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27370,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27359,
                                  "src": "23385:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27371,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27361,
                                  "src": "23389:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_4f40058ea8927b23c60661eeb28f54d3ce10f5f6cdd8e3ce445d34409ceb50a3",
                                    "typeString": "literal_string \"log(uint,bool,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 27365,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "23322:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27366,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "23322:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "23322:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27364,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "23306:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23306:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27374,
                        "nodeType": "ExpressionStatement",
                        "src": "23306:87:63"
                      }
                    ]
                  },
                  "id": 27376,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "23245:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27362,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27355,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "23254:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27376,
                        "src": "23249:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27354,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "23249:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27357,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "23263:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27376,
                        "src": "23258:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27356,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23258:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27359,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "23272:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27376,
                        "src": "23267:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27358,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "23267:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27361,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "23284:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27376,
                        "src": "23276:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27360,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23276:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23248:39:63"
                  },
                  "returnParameters": {
                    "id": 27363,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23302:0:63"
                  },
                  "scope": 32437,
                  "src": "23236:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27398,
                    "nodeType": "Block",
                    "src": "23472:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c737472696e672c75696e7429",
                                  "id": 27390,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "23516:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_915fdb28841654f5e04882ad0aa4f5de28bd90db1a700dae8b1eb5e67e36a012",
                                    "typeString": "literal_string \"log(uint,bool,string,uint)\""
                                  },
                                  "value": "log(uint,bool,string,uint)"
                                },
                                {
                                  "id": 27391,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27378,
                                  "src": "23546:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27392,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27380,
                                  "src": "23550:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27393,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27382,
                                  "src": "23554:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27394,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27384,
                                  "src": "23558:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_915fdb28841654f5e04882ad0aa4f5de28bd90db1a700dae8b1eb5e67e36a012",
                                    "typeString": "literal_string \"log(uint,bool,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 27388,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "23492:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27389,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "23492:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27395,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "23492:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27387,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "23476:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23476:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27397,
                        "nodeType": "ExpressionStatement",
                        "src": "23476:86:63"
                      }
                    ]
                  },
                  "id": 27399,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "23409:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27385,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27378,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "23418:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27399,
                        "src": "23413:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27377,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "23413:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27380,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "23427:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27399,
                        "src": "23422:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27379,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23422:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27382,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "23445:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27399,
                        "src": "23431:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27381,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "23431:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27384,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "23454:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27399,
                        "src": "23449:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27383,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "23449:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23412:45:63"
                  },
                  "returnParameters": {
                    "id": 27386,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23472:0:63"
                  },
                  "scope": 32437,
                  "src": "23400:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27421,
                    "nodeType": "Block",
                    "src": "23650:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c737472696e672c737472696e6729",
                                  "id": 27413,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "23694:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a433fcfd538cd0e077747fbb2c5a6453c1804c6ad4af653273e0d14ab4a0566a",
                                    "typeString": "literal_string \"log(uint,bool,string,string)\""
                                  },
                                  "value": "log(uint,bool,string,string)"
                                },
                                {
                                  "id": 27414,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27401,
                                  "src": "23726:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27415,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27403,
                                  "src": "23730:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27416,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27405,
                                  "src": "23734:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27417,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27407,
                                  "src": "23738:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a433fcfd538cd0e077747fbb2c5a6453c1804c6ad4af653273e0d14ab4a0566a",
                                    "typeString": "literal_string \"log(uint,bool,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 27411,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "23670:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27412,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "23670:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27418,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "23670:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27410,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "23654:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27419,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23654:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27420,
                        "nodeType": "ExpressionStatement",
                        "src": "23654:88:63"
                      }
                    ]
                  },
                  "id": 27422,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "23578:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27408,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27401,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "23587:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27422,
                        "src": "23582:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27400,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "23582:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27403,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "23596:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27422,
                        "src": "23591:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27402,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23591:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27405,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "23614:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27422,
                        "src": "23600:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27404,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "23600:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27407,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "23632:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27422,
                        "src": "23618:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27406,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "23618:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23581:54:63"
                  },
                  "returnParameters": {
                    "id": 27409,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23650:0:63"
                  },
                  "scope": 32437,
                  "src": "23569:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27444,
                    "nodeType": "Block",
                    "src": "23821:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c737472696e672c626f6f6c29",
                                  "id": 27436,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "23865:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_346eb8c74221bcb2c0a69b8dde628b7e6175c4f090782c8f07996b251212e22d",
                                    "typeString": "literal_string \"log(uint,bool,string,bool)\""
                                  },
                                  "value": "log(uint,bool,string,bool)"
                                },
                                {
                                  "id": 27437,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27424,
                                  "src": "23895:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27438,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27426,
                                  "src": "23899:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27439,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27428,
                                  "src": "23903:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27440,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27430,
                                  "src": "23907:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_346eb8c74221bcb2c0a69b8dde628b7e6175c4f090782c8f07996b251212e22d",
                                    "typeString": "literal_string \"log(uint,bool,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 27434,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "23841:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27435,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "23841:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27441,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "23841:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27433,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "23825:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23825:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27443,
                        "nodeType": "ExpressionStatement",
                        "src": "23825:86:63"
                      }
                    ]
                  },
                  "id": 27445,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "23758:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27431,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27424,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "23767:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27445,
                        "src": "23762:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27423,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "23762:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27426,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "23776:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27445,
                        "src": "23771:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27425,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23771:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27428,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "23794:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27445,
                        "src": "23780:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27427,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "23780:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27430,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "23803:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27445,
                        "src": "23798:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27429,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23798:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23761:45:63"
                  },
                  "returnParameters": {
                    "id": 27432,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23821:0:63"
                  },
                  "scope": 32437,
                  "src": "23749:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27467,
                    "nodeType": "Block",
                    "src": "23993:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c737472696e672c6164647265737329",
                                  "id": 27459,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24037:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_496e2bb45f5cdd3680c3e807c53955b9de163e898851c7844433c0a9c91dcd9d",
                                    "typeString": "literal_string \"log(uint,bool,string,address)\""
                                  },
                                  "value": "log(uint,bool,string,address)"
                                },
                                {
                                  "id": 27460,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27447,
                                  "src": "24070:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27461,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27449,
                                  "src": "24074:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27462,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27451,
                                  "src": "24078:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27463,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27453,
                                  "src": "24082:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_496e2bb45f5cdd3680c3e807c53955b9de163e898851c7844433c0a9c91dcd9d",
                                    "typeString": "literal_string \"log(uint,bool,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 27457,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "24013:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27458,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "24013:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24013:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27456,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "23997:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23997:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27466,
                        "nodeType": "ExpressionStatement",
                        "src": "23997:89:63"
                      }
                    ]
                  },
                  "id": 27468,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "23927:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27454,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27447,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "23936:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27468,
                        "src": "23931:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27446,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "23931:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27449,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "23945:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27468,
                        "src": "23940:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27448,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23940:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27451,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "23963:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27468,
                        "src": "23949:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27450,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "23949:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27453,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "23975:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27468,
                        "src": "23967:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27452,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23967:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23930:48:63"
                  },
                  "returnParameters": {
                    "id": 27455,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "23993:0:63"
                  },
                  "scope": 32437,
                  "src": "23918:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27490,
                    "nodeType": "Block",
                    "src": "24156:92:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c626f6f6c2c75696e7429",
                                  "id": 27482,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24200:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_bd25ad5987e2f3e90d5ff2c9e0dad802782e9040e45e823722ccf598278cf7ed",
                                    "typeString": "literal_string \"log(uint,bool,bool,uint)\""
                                  },
                                  "value": "log(uint,bool,bool,uint)"
                                },
                                {
                                  "id": 27483,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27470,
                                  "src": "24228:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27484,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27472,
                                  "src": "24232:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27485,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27474,
                                  "src": "24236:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27486,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27476,
                                  "src": "24240:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_bd25ad5987e2f3e90d5ff2c9e0dad802782e9040e45e823722ccf598278cf7ed",
                                    "typeString": "literal_string \"log(uint,bool,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 27480,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "24176:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27481,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "24176:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24176:67:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27479,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "24160:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27488,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24160:84:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27489,
                        "nodeType": "ExpressionStatement",
                        "src": "24160:84:63"
                      }
                    ]
                  },
                  "id": 27491,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "24102:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27477,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27470,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "24111:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27491,
                        "src": "24106:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27469,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "24106:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27472,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "24120:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27491,
                        "src": "24115:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27471,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "24115:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27474,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "24129:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27491,
                        "src": "24124:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27473,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "24124:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27476,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "24138:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27491,
                        "src": "24133:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27475,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "24133:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24105:36:63"
                  },
                  "returnParameters": {
                    "id": 27478,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24156:0:63"
                  },
                  "scope": 32437,
                  "src": "24093:155:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27513,
                    "nodeType": "Block",
                    "src": "24323:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c626f6f6c2c737472696e6729",
                                  "id": 27505,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24367:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_318ae59b506d4efe5cd02b34be9f24009f0134ab1136defc4789a09e425a8861",
                                    "typeString": "literal_string \"log(uint,bool,bool,string)\""
                                  },
                                  "value": "log(uint,bool,bool,string)"
                                },
                                {
                                  "id": 27506,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27493,
                                  "src": "24397:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27507,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27495,
                                  "src": "24401:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27508,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27497,
                                  "src": "24405:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27509,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27499,
                                  "src": "24409:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_318ae59b506d4efe5cd02b34be9f24009f0134ab1136defc4789a09e425a8861",
                                    "typeString": "literal_string \"log(uint,bool,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 27503,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "24343:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27504,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "24343:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27510,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24343:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27502,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "24327:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24327:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27512,
                        "nodeType": "ExpressionStatement",
                        "src": "24327:86:63"
                      }
                    ]
                  },
                  "id": 27514,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "24260:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27500,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27493,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "24269:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27514,
                        "src": "24264:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27492,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "24264:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27495,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "24278:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27514,
                        "src": "24273:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27494,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "24273:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27497,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "24287:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27514,
                        "src": "24282:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27496,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "24282:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27499,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "24305:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27514,
                        "src": "24291:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27498,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "24291:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24263:45:63"
                  },
                  "returnParameters": {
                    "id": 27501,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24323:0:63"
                  },
                  "scope": 32437,
                  "src": "24251:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27536,
                    "nodeType": "Block",
                    "src": "24483:92:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c626f6f6c2c626f6f6c29",
                                  "id": 27528,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24527:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_4e6c5315e6998332ba87ae2545bc72447c94349a51e999446a98bfab04167b32",
                                    "typeString": "literal_string \"log(uint,bool,bool,bool)\""
                                  },
                                  "value": "log(uint,bool,bool,bool)"
                                },
                                {
                                  "id": 27529,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27516,
                                  "src": "24555:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27530,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27518,
                                  "src": "24559:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27531,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27520,
                                  "src": "24563:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27532,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27522,
                                  "src": "24567:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_4e6c5315e6998332ba87ae2545bc72447c94349a51e999446a98bfab04167b32",
                                    "typeString": "literal_string \"log(uint,bool,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 27526,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "24503:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27527,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "24503:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24503:67:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27525,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "24487:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24487:84:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27535,
                        "nodeType": "ExpressionStatement",
                        "src": "24487:84:63"
                      }
                    ]
                  },
                  "id": 27537,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "24429:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27523,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27516,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "24438:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27537,
                        "src": "24433:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27515,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "24433:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27518,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "24447:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27537,
                        "src": "24442:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27517,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "24442:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27520,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "24456:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27537,
                        "src": "24451:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27519,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "24451:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27522,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "24465:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27537,
                        "src": "24460:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27521,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "24460:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24432:36:63"
                  },
                  "returnParameters": {
                    "id": 27524,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24483:0:63"
                  },
                  "scope": 32437,
                  "src": "24420:155:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27559,
                    "nodeType": "Block",
                    "src": "24644:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c626f6f6c2c6164647265737329",
                                  "id": 27551,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24688:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5306225d3f6a0c340e12a634d8571b24a659d0fdcb96dd45e3bd062feb68355b",
                                    "typeString": "literal_string \"log(uint,bool,bool,address)\""
                                  },
                                  "value": "log(uint,bool,bool,address)"
                                },
                                {
                                  "id": 27552,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27539,
                                  "src": "24719:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27553,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27541,
                                  "src": "24723:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27554,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27543,
                                  "src": "24727:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27555,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27545,
                                  "src": "24731:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_5306225d3f6a0c340e12a634d8571b24a659d0fdcb96dd45e3bd062feb68355b",
                                    "typeString": "literal_string \"log(uint,bool,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 27549,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "24664:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27550,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "24664:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27556,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24664:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27548,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "24648:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24648:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27558,
                        "nodeType": "ExpressionStatement",
                        "src": "24648:87:63"
                      }
                    ]
                  },
                  "id": 27560,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "24587:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27546,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27539,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "24596:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27560,
                        "src": "24591:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27538,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "24591:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27541,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "24605:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27560,
                        "src": "24600:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27540,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "24600:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27543,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "24614:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27560,
                        "src": "24609:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27542,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "24609:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27545,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "24626:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27560,
                        "src": "24618:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27544,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24618:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24590:39:63"
                  },
                  "returnParameters": {
                    "id": 27547,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24644:0:63"
                  },
                  "scope": 32437,
                  "src": "24578:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27582,
                    "nodeType": "Block",
                    "src": "24808:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c616464726573732c75696e7429",
                                  "id": 27574,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "24852:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_41b5ef3bc57cb6072d9bbab757f04e68fb78a6a8b29741a7b963761abce32fb1",
                                    "typeString": "literal_string \"log(uint,bool,address,uint)\""
                                  },
                                  "value": "log(uint,bool,address,uint)"
                                },
                                {
                                  "id": 27575,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27562,
                                  "src": "24883:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27576,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27564,
                                  "src": "24887:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27577,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27566,
                                  "src": "24891:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27578,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27568,
                                  "src": "24895:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_41b5ef3bc57cb6072d9bbab757f04e68fb78a6a8b29741a7b963761abce32fb1",
                                    "typeString": "literal_string \"log(uint,bool,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 27572,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "24828:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27573,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "24828:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27579,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "24828:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27571,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "24812:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27580,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24812:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27581,
                        "nodeType": "ExpressionStatement",
                        "src": "24812:87:63"
                      }
                    ]
                  },
                  "id": 27583,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "24751:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27569,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27562,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "24760:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27583,
                        "src": "24755:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27561,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "24755:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27564,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "24769:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27583,
                        "src": "24764:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27563,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "24764:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27566,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "24781:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27583,
                        "src": "24773:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27565,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24773:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27568,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "24790:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27583,
                        "src": "24785:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27567,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "24785:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24754:39:63"
                  },
                  "returnParameters": {
                    "id": 27570,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24808:0:63"
                  },
                  "scope": 32437,
                  "src": "24742:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27605,
                    "nodeType": "Block",
                    "src": "24981:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c616464726573732c737472696e6729",
                                  "id": 27597,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "25025:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a230761e3811ae33e11d91e6667cf79e7e0ce8023ec276bdd69859f68587933c",
                                    "typeString": "literal_string \"log(uint,bool,address,string)\""
                                  },
                                  "value": "log(uint,bool,address,string)"
                                },
                                {
                                  "id": 27598,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27585,
                                  "src": "25058:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27599,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27587,
                                  "src": "25062:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27600,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27589,
                                  "src": "25066:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27601,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27591,
                                  "src": "25070:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a230761e3811ae33e11d91e6667cf79e7e0ce8023ec276bdd69859f68587933c",
                                    "typeString": "literal_string \"log(uint,bool,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 27595,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "25001:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27596,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "25001:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27602,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25001:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27594,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "24985:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27603,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "24985:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27604,
                        "nodeType": "ExpressionStatement",
                        "src": "24985:89:63"
                      }
                    ]
                  },
                  "id": 27606,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "24915:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27592,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27585,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "24924:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27606,
                        "src": "24919:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27584,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "24919:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27587,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "24933:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27606,
                        "src": "24928:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27586,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "24928:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27589,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "24945:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27606,
                        "src": "24937:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27588,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "24937:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27591,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "24963:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27606,
                        "src": "24949:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27590,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "24949:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24918:48:63"
                  },
                  "returnParameters": {
                    "id": 27593,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24981:0:63"
                  },
                  "scope": 32437,
                  "src": "24906:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27628,
                    "nodeType": "Block",
                    "src": "25147:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c616464726573732c626f6f6c29",
                                  "id": 27620,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "25191:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_91fb124272873b32f25c28f6935451e3d46ffd78ac8ebaaa0e096a7942db5445",
                                    "typeString": "literal_string \"log(uint,bool,address,bool)\""
                                  },
                                  "value": "log(uint,bool,address,bool)"
                                },
                                {
                                  "id": 27621,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27608,
                                  "src": "25222:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27622,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27610,
                                  "src": "25226:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27623,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27612,
                                  "src": "25230:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27624,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27614,
                                  "src": "25234:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_91fb124272873b32f25c28f6935451e3d46ffd78ac8ebaaa0e096a7942db5445",
                                    "typeString": "literal_string \"log(uint,bool,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 27618,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "25167:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27619,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "25167:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27625,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25167:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27617,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "25151:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25151:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27627,
                        "nodeType": "ExpressionStatement",
                        "src": "25151:87:63"
                      }
                    ]
                  },
                  "id": 27629,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "25090:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27615,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27608,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "25099:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27629,
                        "src": "25094:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27607,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "25094:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27610,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "25108:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27629,
                        "src": "25103:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27609,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "25103:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27612,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "25120:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27629,
                        "src": "25112:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27611,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "25112:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27614,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "25129:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27629,
                        "src": "25124:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27613,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "25124:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25093:39:63"
                  },
                  "returnParameters": {
                    "id": 27616,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "25147:0:63"
                  },
                  "scope": 32437,
                  "src": "25081:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27651,
                    "nodeType": "Block",
                    "src": "25314:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c626f6f6c2c616464726573732c6164647265737329",
                                  "id": 27643,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "25358:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_86edc10cd85187c3b3f180e68e570c794e768808cdffe5158045d6f841ae33f2",
                                    "typeString": "literal_string \"log(uint,bool,address,address)\""
                                  },
                                  "value": "log(uint,bool,address,address)"
                                },
                                {
                                  "id": 27644,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27631,
                                  "src": "25392:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27645,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27633,
                                  "src": "25396:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27646,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27635,
                                  "src": "25400:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27647,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27637,
                                  "src": "25404:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_86edc10cd85187c3b3f180e68e570c794e768808cdffe5158045d6f841ae33f2",
                                    "typeString": "literal_string \"log(uint,bool,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 27641,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "25334:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27642,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "25334:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27648,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25334:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27640,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "25318:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27649,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25318:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27650,
                        "nodeType": "ExpressionStatement",
                        "src": "25318:90:63"
                      }
                    ]
                  },
                  "id": 27652,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "25254:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27638,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27631,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "25263:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27652,
                        "src": "25258:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27630,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "25258:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27633,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "25272:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27652,
                        "src": "25267:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27632,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "25267:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27635,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "25284:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27652,
                        "src": "25276:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27634,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "25276:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27637,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "25296:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27652,
                        "src": "25288:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27636,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "25288:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25257:42:63"
                  },
                  "returnParameters": {
                    "id": 27639,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "25314:0:63"
                  },
                  "scope": 32437,
                  "src": "25245:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27674,
                    "nodeType": "Block",
                    "src": "25481:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c75696e742c75696e7429",
                                  "id": 27666,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "25525:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_ca9a3eb4a61979ee5cc1814fa8df2504ab7831148afaa3d4c17622578eab7412",
                                    "typeString": "literal_string \"log(uint,address,uint,uint)\""
                                  },
                                  "value": "log(uint,address,uint,uint)"
                                },
                                {
                                  "id": 27667,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27654,
                                  "src": "25556:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27668,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27656,
                                  "src": "25560:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27669,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27658,
                                  "src": "25564:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27670,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27660,
                                  "src": "25568:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_ca9a3eb4a61979ee5cc1814fa8df2504ab7831148afaa3d4c17622578eab7412",
                                    "typeString": "literal_string \"log(uint,address,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 27664,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "25501:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27665,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "25501:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27671,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25501:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27663,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "25485:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25485:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27673,
                        "nodeType": "ExpressionStatement",
                        "src": "25485:87:63"
                      }
                    ]
                  },
                  "id": 27675,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "25424:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27661,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27654,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "25433:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27675,
                        "src": "25428:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27653,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "25428:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27656,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "25445:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27675,
                        "src": "25437:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27655,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "25437:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27658,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "25454:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27675,
                        "src": "25449:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27657,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "25449:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27660,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "25463:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27675,
                        "src": "25458:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27659,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "25458:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25427:39:63"
                  },
                  "returnParameters": {
                    "id": 27662,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "25481:0:63"
                  },
                  "scope": 32437,
                  "src": "25415:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27697,
                    "nodeType": "Block",
                    "src": "25654:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c75696e742c737472696e6729",
                                  "id": 27689,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "25698:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_3ed3bd282d1a27244fa4d3668aff783448c1a1864ff920057fa9f1c8144bb10b",
                                    "typeString": "literal_string \"log(uint,address,uint,string)\""
                                  },
                                  "value": "log(uint,address,uint,string)"
                                },
                                {
                                  "id": 27690,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27677,
                                  "src": "25731:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27691,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27679,
                                  "src": "25735:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27692,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27681,
                                  "src": "25739:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27693,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27683,
                                  "src": "25743:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_3ed3bd282d1a27244fa4d3668aff783448c1a1864ff920057fa9f1c8144bb10b",
                                    "typeString": "literal_string \"log(uint,address,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 27687,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "25674:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27688,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "25674:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27694,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25674:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27686,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "25658:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25658:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27696,
                        "nodeType": "ExpressionStatement",
                        "src": "25658:89:63"
                      }
                    ]
                  },
                  "id": 27698,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "25588:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27684,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27677,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "25597:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27698,
                        "src": "25592:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27676,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "25592:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27679,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "25609:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27698,
                        "src": "25601:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27678,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "25601:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27681,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "25618:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27698,
                        "src": "25613:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27680,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "25613:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27683,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "25636:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27698,
                        "src": "25622:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27682,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "25622:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25591:48:63"
                  },
                  "returnParameters": {
                    "id": 27685,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "25654:0:63"
                  },
                  "scope": 32437,
                  "src": "25579:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27720,
                    "nodeType": "Block",
                    "src": "25820:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c75696e742c626f6f6c29",
                                  "id": 27712,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "25864:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_19f67369d42bc0582d07ae744348ad46b79a6c16f354e3d3fb3c6bff2ecfa9f8",
                                    "typeString": "literal_string \"log(uint,address,uint,bool)\""
                                  },
                                  "value": "log(uint,address,uint,bool)"
                                },
                                {
                                  "id": 27713,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27700,
                                  "src": "25895:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27714,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27702,
                                  "src": "25899:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27715,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27704,
                                  "src": "25903:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27716,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27706,
                                  "src": "25907:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_19f67369d42bc0582d07ae744348ad46b79a6c16f354e3d3fb3c6bff2ecfa9f8",
                                    "typeString": "literal_string \"log(uint,address,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 27710,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "25840:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27711,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "25840:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27717,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "25840:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27709,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "25824:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25824:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27719,
                        "nodeType": "ExpressionStatement",
                        "src": "25824:87:63"
                      }
                    ]
                  },
                  "id": 27721,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "25763:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27707,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27700,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "25772:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27721,
                        "src": "25767:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27699,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "25767:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27702,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "25784:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27721,
                        "src": "25776:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27701,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "25776:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27704,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "25793:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27721,
                        "src": "25788:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27703,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "25788:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27706,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "25802:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27721,
                        "src": "25797:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27705,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "25797:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25766:39:63"
                  },
                  "returnParameters": {
                    "id": 27708,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "25820:0:63"
                  },
                  "scope": 32437,
                  "src": "25754:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27743,
                    "nodeType": "Block",
                    "src": "25987:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c75696e742c6164647265737329",
                                  "id": 27735,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "26031:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_fdb2ecd415c75df8f66285a054607fa1335126fb1d8930dfc21744a3de7298e3",
                                    "typeString": "literal_string \"log(uint,address,uint,address)\""
                                  },
                                  "value": "log(uint,address,uint,address)"
                                },
                                {
                                  "id": 27736,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27723,
                                  "src": "26065:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27737,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27725,
                                  "src": "26069:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27738,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27727,
                                  "src": "26073:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27739,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27729,
                                  "src": "26077:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_fdb2ecd415c75df8f66285a054607fa1335126fb1d8930dfc21744a3de7298e3",
                                    "typeString": "literal_string \"log(uint,address,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 27733,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "26007:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27734,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "26007:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27740,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26007:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27732,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "25991:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "25991:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27742,
                        "nodeType": "ExpressionStatement",
                        "src": "25991:90:63"
                      }
                    ]
                  },
                  "id": 27744,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "25927:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27730,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27723,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "25936:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27744,
                        "src": "25931:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27722,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "25931:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27725,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "25948:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27744,
                        "src": "25940:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27724,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "25940:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27727,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "25957:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27744,
                        "src": "25952:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27726,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "25952:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27729,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "25969:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27744,
                        "src": "25961:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27728,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "25961:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "25930:42:63"
                  },
                  "returnParameters": {
                    "id": 27731,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "25987:0:63"
                  },
                  "scope": 32437,
                  "src": "25918:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27766,
                    "nodeType": "Block",
                    "src": "26163:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c737472696e672c75696e7429",
                                  "id": 27758,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "26207:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a0c414e8ba2ea65b865dd0bf68b2357e81261b47f237c68a4a8a63051bbef2eb",
                                    "typeString": "literal_string \"log(uint,address,string,uint)\""
                                  },
                                  "value": "log(uint,address,string,uint)"
                                },
                                {
                                  "id": 27759,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27746,
                                  "src": "26240:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27760,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27748,
                                  "src": "26244:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27761,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27750,
                                  "src": "26248:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27762,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27752,
                                  "src": "26252:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a0c414e8ba2ea65b865dd0bf68b2357e81261b47f237c68a4a8a63051bbef2eb",
                                    "typeString": "literal_string \"log(uint,address,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 27756,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "26183:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "26183:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27763,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26183:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27755,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "26167:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26167:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27765,
                        "nodeType": "ExpressionStatement",
                        "src": "26167:89:63"
                      }
                    ]
                  },
                  "id": 27767,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "26097:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27753,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27746,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "26106:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27767,
                        "src": "26101:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27745,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "26101:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27748,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "26118:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27767,
                        "src": "26110:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27747,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26110:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27750,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "26136:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27767,
                        "src": "26122:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27749,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "26122:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27752,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "26145:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27767,
                        "src": "26140:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27751,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "26140:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26100:48:63"
                  },
                  "returnParameters": {
                    "id": 27754,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "26163:0:63"
                  },
                  "scope": 32437,
                  "src": "26088:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27789,
                    "nodeType": "Block",
                    "src": "26347:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c737472696e672c737472696e6729",
                                  "id": 27781,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "26391:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_8d778624e1d83269ce0415864bb54677b540f778c6b8503cf9035bc7517326f1",
                                    "typeString": "literal_string \"log(uint,address,string,string)\""
                                  },
                                  "value": "log(uint,address,string,string)"
                                },
                                {
                                  "id": 27782,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27769,
                                  "src": "26426:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27783,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27771,
                                  "src": "26430:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27784,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27773,
                                  "src": "26434:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27785,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27775,
                                  "src": "26438:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_8d778624e1d83269ce0415864bb54677b540f778c6b8503cf9035bc7517326f1",
                                    "typeString": "literal_string \"log(uint,address,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 27779,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "26367:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27780,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "26367:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26367:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27778,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "26351:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27787,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26351:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27788,
                        "nodeType": "ExpressionStatement",
                        "src": "26351:91:63"
                      }
                    ]
                  },
                  "id": 27790,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "26272:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27776,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27769,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "26281:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27790,
                        "src": "26276:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27768,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "26276:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27771,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "26293:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27790,
                        "src": "26285:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27770,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26285:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27773,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "26311:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27790,
                        "src": "26297:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27772,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "26297:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27775,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "26329:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27790,
                        "src": "26315:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27774,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "26315:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26275:57:63"
                  },
                  "returnParameters": {
                    "id": 27777,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "26347:0:63"
                  },
                  "scope": 32437,
                  "src": "26263:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27812,
                    "nodeType": "Block",
                    "src": "26524:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c737472696e672c626f6f6c29",
                                  "id": 27804,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "26568:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_22a479a660b74b7598155f369ed227a5a93527fbdb04ff6f78fbf35fa23aacbf",
                                    "typeString": "literal_string \"log(uint,address,string,bool)\""
                                  },
                                  "value": "log(uint,address,string,bool)"
                                },
                                {
                                  "id": 27805,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27792,
                                  "src": "26601:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27806,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27794,
                                  "src": "26605:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27807,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27796,
                                  "src": "26609:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27808,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27798,
                                  "src": "26613:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_22a479a660b74b7598155f369ed227a5a93527fbdb04ff6f78fbf35fa23aacbf",
                                    "typeString": "literal_string \"log(uint,address,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 27802,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "26544:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27803,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "26544:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27809,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26544:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27801,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "26528:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27810,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26528:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27811,
                        "nodeType": "ExpressionStatement",
                        "src": "26528:89:63"
                      }
                    ]
                  },
                  "id": 27813,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "26458:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27799,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27792,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "26467:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27813,
                        "src": "26462:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27791,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "26462:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27794,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "26479:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27813,
                        "src": "26471:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27793,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26471:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27796,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "26497:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27813,
                        "src": "26483:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27795,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "26483:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27798,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "26506:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27813,
                        "src": "26501:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27797,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "26501:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26461:48:63"
                  },
                  "returnParameters": {
                    "id": 27800,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "26524:0:63"
                  },
                  "scope": 32437,
                  "src": "26449:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27835,
                    "nodeType": "Block",
                    "src": "26702:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c737472696e672c6164647265737329",
                                  "id": 27827,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "26746:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_cbe58efddc067d74914c3479914810966ae688ac66ca2bbcae69cd9d0395796f",
                                    "typeString": "literal_string \"log(uint,address,string,address)\""
                                  },
                                  "value": "log(uint,address,string,address)"
                                },
                                {
                                  "id": 27828,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27815,
                                  "src": "26782:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27829,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27817,
                                  "src": "26786:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27830,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27819,
                                  "src": "26790:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 27831,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27821,
                                  "src": "26794:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_cbe58efddc067d74914c3479914810966ae688ac66ca2bbcae69cd9d0395796f",
                                    "typeString": "literal_string \"log(uint,address,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 27825,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "26722:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "26722:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27832,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26722:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27824,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "26706:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27833,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26706:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27834,
                        "nodeType": "ExpressionStatement",
                        "src": "26706:92:63"
                      }
                    ]
                  },
                  "id": 27836,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "26633:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27822,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27815,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "26642:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27836,
                        "src": "26637:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27814,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "26637:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27817,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "26654:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27836,
                        "src": "26646:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27816,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26646:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27819,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "26672:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27836,
                        "src": "26658:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27818,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "26658:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27821,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "26684:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27836,
                        "src": "26676:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27820,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26676:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26636:51:63"
                  },
                  "returnParameters": {
                    "id": 27823,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "26702:0:63"
                  },
                  "scope": 32437,
                  "src": "26624:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27858,
                    "nodeType": "Block",
                    "src": "26871:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c626f6f6c2c75696e7429",
                                  "id": 27850,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "26915:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_7b08e8ebd6be8a04c54551194ba5143f1a555d43fe60d53843383a9915eeccb2",
                                    "typeString": "literal_string \"log(uint,address,bool,uint)\""
                                  },
                                  "value": "log(uint,address,bool,uint)"
                                },
                                {
                                  "id": 27851,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27838,
                                  "src": "26946:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27852,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27840,
                                  "src": "26950:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27853,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27842,
                                  "src": "26954:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27854,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27844,
                                  "src": "26958:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_7b08e8ebd6be8a04c54551194ba5143f1a555d43fe60d53843383a9915eeccb2",
                                    "typeString": "literal_string \"log(uint,address,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 27848,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "26891:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27849,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "26891:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27855,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "26891:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27847,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "26875:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27856,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26875:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27857,
                        "nodeType": "ExpressionStatement",
                        "src": "26875:87:63"
                      }
                    ]
                  },
                  "id": 27859,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "26814:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27845,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27838,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "26823:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27859,
                        "src": "26818:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27837,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "26818:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27840,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "26835:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27859,
                        "src": "26827:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27839,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26827:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27842,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "26844:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27859,
                        "src": "26839:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27841,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "26839:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27844,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "26853:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27859,
                        "src": "26848:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27843,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "26848:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26817:39:63"
                  },
                  "returnParameters": {
                    "id": 27846,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "26871:0:63"
                  },
                  "scope": 32437,
                  "src": "26805:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27881,
                    "nodeType": "Block",
                    "src": "27044:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c626f6f6c2c737472696e6729",
                                  "id": 27873,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "27088:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_63f0e24221aeb6c531ea500a191ac35497bf48695fb29864fe57726a12d605c6",
                                    "typeString": "literal_string \"log(uint,address,bool,string)\""
                                  },
                                  "value": "log(uint,address,bool,string)"
                                },
                                {
                                  "id": 27874,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27861,
                                  "src": "27121:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27875,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27863,
                                  "src": "27125:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27876,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27865,
                                  "src": "27129:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27877,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27867,
                                  "src": "27133:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_63f0e24221aeb6c531ea500a191ac35497bf48695fb29864fe57726a12d605c6",
                                    "typeString": "literal_string \"log(uint,address,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 27871,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "27064:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27872,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "27064:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "27064:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27870,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "27048:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27879,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27048:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27880,
                        "nodeType": "ExpressionStatement",
                        "src": "27048:89:63"
                      }
                    ]
                  },
                  "id": 27882,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "26978:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27868,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27861,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "26987:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27882,
                        "src": "26982:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27860,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "26982:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27863,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "26999:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27882,
                        "src": "26991:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27862,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26991:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27865,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "27008:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27882,
                        "src": "27003:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27864,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "27003:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27867,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "27026:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27882,
                        "src": "27012:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27866,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "27012:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26981:48:63"
                  },
                  "returnParameters": {
                    "id": 27869,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27044:0:63"
                  },
                  "scope": 32437,
                  "src": "26969:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27904,
                    "nodeType": "Block",
                    "src": "27210:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c626f6f6c2c626f6f6c29",
                                  "id": 27896,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "27254:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_7e27410dc86ab22a92f2a269c9cf538b707bde3ac248f933df1f4d0b76947d32",
                                    "typeString": "literal_string \"log(uint,address,bool,bool)\""
                                  },
                                  "value": "log(uint,address,bool,bool)"
                                },
                                {
                                  "id": 27897,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27884,
                                  "src": "27285:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27898,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27886,
                                  "src": "27289:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27899,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27888,
                                  "src": "27293:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27900,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27890,
                                  "src": "27297:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_7e27410dc86ab22a92f2a269c9cf538b707bde3ac248f933df1f4d0b76947d32",
                                    "typeString": "literal_string \"log(uint,address,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 27894,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "27230:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27895,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "27230:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27901,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "27230:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27893,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "27214:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27902,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27214:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27903,
                        "nodeType": "ExpressionStatement",
                        "src": "27214:87:63"
                      }
                    ]
                  },
                  "id": 27905,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "27153:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27891,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27884,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "27162:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27905,
                        "src": "27157:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27883,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "27157:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27886,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "27174:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27905,
                        "src": "27166:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27885,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27166:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27888,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "27183:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27905,
                        "src": "27178:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27887,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "27178:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27890,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "27192:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27905,
                        "src": "27187:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27889,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "27187:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27156:39:63"
                  },
                  "returnParameters": {
                    "id": 27892,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27210:0:63"
                  },
                  "scope": 32437,
                  "src": "27144:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27927,
                    "nodeType": "Block",
                    "src": "27377:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c626f6f6c2c6164647265737329",
                                  "id": 27919,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "27421:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_b6313094a820841f3156e32d271c63cceded7f62875d471e1e87ef33ec252789",
                                    "typeString": "literal_string \"log(uint,address,bool,address)\""
                                  },
                                  "value": "log(uint,address,bool,address)"
                                },
                                {
                                  "id": 27920,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27907,
                                  "src": "27455:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27921,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27909,
                                  "src": "27459:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27922,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27911,
                                  "src": "27463:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 27923,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27913,
                                  "src": "27467:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_b6313094a820841f3156e32d271c63cceded7f62875d471e1e87ef33ec252789",
                                    "typeString": "literal_string \"log(uint,address,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 27917,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "27397:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27918,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "27397:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27924,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "27397:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27916,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "27381:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27925,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27381:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27926,
                        "nodeType": "ExpressionStatement",
                        "src": "27381:90:63"
                      }
                    ]
                  },
                  "id": 27928,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "27317:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27914,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27907,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "27326:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27928,
                        "src": "27321:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27906,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "27321:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27909,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "27338:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27928,
                        "src": "27330:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27908,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27330:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27911,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "27347:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27928,
                        "src": "27342:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27910,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "27342:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27913,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "27359:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27928,
                        "src": "27351:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27912,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27351:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27320:42:63"
                  },
                  "returnParameters": {
                    "id": 27915,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27377:0:63"
                  },
                  "scope": 32437,
                  "src": "27308:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27950,
                    "nodeType": "Block",
                    "src": "27547:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c616464726573732c75696e7429",
                                  "id": 27942,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "27591:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9a3cbf9603c94c357c6f62b7a32789d9ca5caa81518d1277c9ca986a5650734b",
                                    "typeString": "literal_string \"log(uint,address,address,uint)\""
                                  },
                                  "value": "log(uint,address,address,uint)"
                                },
                                {
                                  "id": 27943,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27930,
                                  "src": "27625:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27944,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27932,
                                  "src": "27629:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27945,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27934,
                                  "src": "27633:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27946,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27936,
                                  "src": "27637:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_9a3cbf9603c94c357c6f62b7a32789d9ca5caa81518d1277c9ca986a5650734b",
                                    "typeString": "literal_string \"log(uint,address,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 27940,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "27567:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27941,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "27567:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27947,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "27567:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27939,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "27551:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27551:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27949,
                        "nodeType": "ExpressionStatement",
                        "src": "27551:90:63"
                      }
                    ]
                  },
                  "id": 27951,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "27487:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27937,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27930,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "27496:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27951,
                        "src": "27491:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27929,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "27491:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27932,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "27508:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27951,
                        "src": "27500:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27931,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27500:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27934,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "27520:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27951,
                        "src": "27512:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27933,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27512:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27936,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "27529:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27951,
                        "src": "27524:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27935,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "27524:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27490:42:63"
                  },
                  "returnParameters": {
                    "id": 27938,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27547:0:63"
                  },
                  "scope": 32437,
                  "src": "27478:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27973,
                    "nodeType": "Block",
                    "src": "27726:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c616464726573732c737472696e6729",
                                  "id": 27965,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "27770:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_7943dc6627d308affd474fe50b563bcfbf09518236383b806f11730459213622",
                                    "typeString": "literal_string \"log(uint,address,address,string)\""
                                  },
                                  "value": "log(uint,address,address,string)"
                                },
                                {
                                  "id": 27966,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27953,
                                  "src": "27806:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27967,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27955,
                                  "src": "27810:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27968,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27957,
                                  "src": "27814:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27969,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27959,
                                  "src": "27818:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_7943dc6627d308affd474fe50b563bcfbf09518236383b806f11730459213622",
                                    "typeString": "literal_string \"log(uint,address,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 27963,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "27746:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27964,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "27746:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27970,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "27746:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27962,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "27730:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27971,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27730:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27972,
                        "nodeType": "ExpressionStatement",
                        "src": "27730:92:63"
                      }
                    ]
                  },
                  "id": 27974,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "27657:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27960,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27953,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "27666:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27974,
                        "src": "27661:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27952,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "27661:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27955,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "27678:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27974,
                        "src": "27670:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27954,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27670:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27957,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "27690:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27974,
                        "src": "27682:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27956,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27682:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27959,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "27708:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27974,
                        "src": "27694:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 27958,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "27694:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27660:51:63"
                  },
                  "returnParameters": {
                    "id": 27961,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27726:0:63"
                  },
                  "scope": 32437,
                  "src": "27648:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 27996,
                    "nodeType": "Block",
                    "src": "27898:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c616464726573732c626f6f6c29",
                                  "id": 27988,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "27942:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_01550b04ea9916da7bc495d1b5ca5c4bd8d92ef3a98e2cca5a948cec5011f38c",
                                    "typeString": "literal_string \"log(uint,address,address,bool)\""
                                  },
                                  "value": "log(uint,address,address,bool)"
                                },
                                {
                                  "id": 27989,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27976,
                                  "src": "27976:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 27990,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27978,
                                  "src": "27980:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27991,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27980,
                                  "src": "27984:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 27992,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27982,
                                  "src": "27988:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_01550b04ea9916da7bc495d1b5ca5c4bd8d92ef3a98e2cca5a948cec5011f38c",
                                    "typeString": "literal_string \"log(uint,address,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 27986,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "27918:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 27987,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "27918:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 27993,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "27918:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 27985,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "27902:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 27994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27902:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 27995,
                        "nodeType": "ExpressionStatement",
                        "src": "27902:90:63"
                      }
                    ]
                  },
                  "id": 27997,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "27838:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27983,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27976,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "27847:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27997,
                        "src": "27842:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27975,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "27842:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27978,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "27859:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27997,
                        "src": "27851:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27977,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27851:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27980,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "27871:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27997,
                        "src": "27863:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 27979,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27863:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 27982,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "27880:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 27997,
                        "src": "27875:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 27981,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "27875:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27841:42:63"
                  },
                  "returnParameters": {
                    "id": 27984,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27898:0:63"
                  },
                  "scope": 32437,
                  "src": "27829:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28019,
                    "nodeType": "Block",
                    "src": "28071:101:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f672875696e742c616464726573732c616464726573732c6164647265737329",
                                  "id": 28011,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "28115:35:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_554745f9e6550eea6000ea2febc94de95d453100d5d60359e62cd398b366bfc4",
                                    "typeString": "literal_string \"log(uint,address,address,address)\""
                                  },
                                  "value": "log(uint,address,address,address)"
                                },
                                {
                                  "id": 28012,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 27999,
                                  "src": "28152:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28013,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28001,
                                  "src": "28156:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 28014,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28003,
                                  "src": "28160:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 28015,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28005,
                                  "src": "28164:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_554745f9e6550eea6000ea2febc94de95d453100d5d60359e62cd398b366bfc4",
                                    "typeString": "literal_string \"log(uint,address,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 28009,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "28091:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28010,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "28091:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28016,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28091:76:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28008,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "28075:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28017,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28075:93:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28018,
                        "nodeType": "ExpressionStatement",
                        "src": "28075:93:63"
                      }
                    ]
                  },
                  "id": 28020,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "28008:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28006,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 27999,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "28017:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28020,
                        "src": "28012:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 27998,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "28012:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28001,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "28029:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28020,
                        "src": "28021:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28000,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "28021:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28003,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "28041:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28020,
                        "src": "28033:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28002,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "28033:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28005,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "28053:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28020,
                        "src": "28045:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28004,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "28045:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28011:45:63"
                  },
                  "returnParameters": {
                    "id": 28007,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "28071:0:63"
                  },
                  "scope": 32437,
                  "src": "27999:173:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28042,
                    "nodeType": "Block",
                    "src": "28247:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c75696e742c75696e7429",
                                  "id": 28034,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "28291:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_08ee5666d6bd329d27af528e563bb238dedf631fe471effe31c7123dcb5164f2",
                                    "typeString": "literal_string \"log(string,uint,uint,uint)\""
                                  },
                                  "value": "log(string,uint,uint,uint)"
                                },
                                {
                                  "id": 28035,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28022,
                                  "src": "28321:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28036,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28024,
                                  "src": "28325:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28037,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28026,
                                  "src": "28329:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28038,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28028,
                                  "src": "28333:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_08ee5666d6bd329d27af528e563bb238dedf631fe471effe31c7123dcb5164f2",
                                    "typeString": "literal_string \"log(string,uint,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 28032,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "28267:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28033,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "28267:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28039,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28267:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28031,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "28251:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28251:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28041,
                        "nodeType": "ExpressionStatement",
                        "src": "28251:86:63"
                      }
                    ]
                  },
                  "id": 28043,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "28184:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28029,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28022,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "28202:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28043,
                        "src": "28188:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28021,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "28188:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28024,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "28211:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28043,
                        "src": "28206:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28023,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "28206:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28026,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "28220:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28043,
                        "src": "28215:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28025,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "28215:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28028,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "28229:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28043,
                        "src": "28224:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28027,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "28224:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28187:45:63"
                  },
                  "returnParameters": {
                    "id": 28030,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "28247:0:63"
                  },
                  "scope": 32437,
                  "src": "28175:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28065,
                    "nodeType": "Block",
                    "src": "28425:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c75696e742c737472696e6729",
                                  "id": 28057,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "28469:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a54ed4bdd39588715cd10f1b9730ac9f0db064013c8dc11e216fa2ef3a5948b8",
                                    "typeString": "literal_string \"log(string,uint,uint,string)\""
                                  },
                                  "value": "log(string,uint,uint,string)"
                                },
                                {
                                  "id": 28058,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28045,
                                  "src": "28501:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28059,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28047,
                                  "src": "28505:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28060,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28049,
                                  "src": "28509:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28061,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28051,
                                  "src": "28513:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a54ed4bdd39588715cd10f1b9730ac9f0db064013c8dc11e216fa2ef3a5948b8",
                                    "typeString": "literal_string \"log(string,uint,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 28055,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "28445:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "28445:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28062,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28445:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28054,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "28429:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28429:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28064,
                        "nodeType": "ExpressionStatement",
                        "src": "28429:88:63"
                      }
                    ]
                  },
                  "id": 28066,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "28353:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28052,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28045,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "28371:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28066,
                        "src": "28357:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28044,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "28357:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28047,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "28380:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28066,
                        "src": "28375:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28046,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "28375:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28049,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "28389:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28066,
                        "src": "28384:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28048,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "28384:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28051,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "28407:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28066,
                        "src": "28393:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28050,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "28393:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28356:54:63"
                  },
                  "returnParameters": {
                    "id": 28053,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "28425:0:63"
                  },
                  "scope": 32437,
                  "src": "28344:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28088,
                    "nodeType": "Block",
                    "src": "28596:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c75696e742c626f6f6c29",
                                  "id": 28080,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "28640:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f73c7e3dc5b5cecd5787e08e359612e609c17649291b138c8f184ee441526f2d",
                                    "typeString": "literal_string \"log(string,uint,uint,bool)\""
                                  },
                                  "value": "log(string,uint,uint,bool)"
                                },
                                {
                                  "id": 28081,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28068,
                                  "src": "28670:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28082,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28070,
                                  "src": "28674:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28083,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28072,
                                  "src": "28678:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28084,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28074,
                                  "src": "28682:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_f73c7e3dc5b5cecd5787e08e359612e609c17649291b138c8f184ee441526f2d",
                                    "typeString": "literal_string \"log(string,uint,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 28078,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "28616:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28079,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "28616:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28085,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28616:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28077,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "28600:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28086,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28600:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28087,
                        "nodeType": "ExpressionStatement",
                        "src": "28600:86:63"
                      }
                    ]
                  },
                  "id": 28089,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "28533:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28075,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28068,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "28551:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28089,
                        "src": "28537:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28067,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "28537:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28070,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "28560:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28089,
                        "src": "28555:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28069,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "28555:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28072,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "28569:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28089,
                        "src": "28564:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28071,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "28564:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28074,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "28578:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28089,
                        "src": "28573:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28073,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "28573:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28536:45:63"
                  },
                  "returnParameters": {
                    "id": 28076,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "28596:0:63"
                  },
                  "scope": 32437,
                  "src": "28524:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28111,
                    "nodeType": "Block",
                    "src": "28768:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c75696e742c6164647265737329",
                                  "id": 28103,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "28812:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_bed728bf5bf9afc41a2cff142cfc289808bbba64cbab683d8e6689e6f6f14abc",
                                    "typeString": "literal_string \"log(string,uint,uint,address)\""
                                  },
                                  "value": "log(string,uint,uint,address)"
                                },
                                {
                                  "id": 28104,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28091,
                                  "src": "28845:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28105,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28093,
                                  "src": "28849:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28106,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28095,
                                  "src": "28853:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28107,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28097,
                                  "src": "28857:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_bed728bf5bf9afc41a2cff142cfc289808bbba64cbab683d8e6689e6f6f14abc",
                                    "typeString": "literal_string \"log(string,uint,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 28101,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "28788:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28102,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "28788:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28108,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28788:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28100,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "28772:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28772:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28110,
                        "nodeType": "ExpressionStatement",
                        "src": "28772:89:63"
                      }
                    ]
                  },
                  "id": 28112,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "28702:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28098,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28091,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "28720:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28112,
                        "src": "28706:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28090,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "28706:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28093,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "28729:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28112,
                        "src": "28724:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28092,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "28724:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28095,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "28738:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28112,
                        "src": "28733:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28094,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "28733:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28097,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "28750:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28112,
                        "src": "28742:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28096,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "28742:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28705:48:63"
                  },
                  "returnParameters": {
                    "id": 28099,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "28768:0:63"
                  },
                  "scope": 32437,
                  "src": "28693:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28134,
                    "nodeType": "Block",
                    "src": "28949:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c737472696e672c75696e7429",
                                  "id": 28126,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "28993:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a0c4b225a555b1198e8b1e32117070e759cad9a7266d99901b8a7fd2482d0e2f",
                                    "typeString": "literal_string \"log(string,uint,string,uint)\""
                                  },
                                  "value": "log(string,uint,string,uint)"
                                },
                                {
                                  "id": 28127,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28114,
                                  "src": "29025:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28128,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28116,
                                  "src": "29029:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28129,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28118,
                                  "src": "29033:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28130,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28120,
                                  "src": "29037:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a0c4b225a555b1198e8b1e32117070e759cad9a7266d99901b8a7fd2482d0e2f",
                                    "typeString": "literal_string \"log(string,uint,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 28124,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "28969:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28125,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "28969:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "28969:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28123,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "28953:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28953:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28133,
                        "nodeType": "ExpressionStatement",
                        "src": "28953:88:63"
                      }
                    ]
                  },
                  "id": 28135,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "28877:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28121,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28114,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "28895:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28135,
                        "src": "28881:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28113,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "28881:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28116,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "28904:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28135,
                        "src": "28899:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28115,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "28899:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28118,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "28922:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28135,
                        "src": "28908:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28117,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "28908:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28120,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "28931:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28135,
                        "src": "28926:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28119,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "28926:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28880:54:63"
                  },
                  "returnParameters": {
                    "id": 28122,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "28949:0:63"
                  },
                  "scope": 32437,
                  "src": "28868:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28157,
                    "nodeType": "Block",
                    "src": "29138:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c737472696e672c737472696e6729",
                                  "id": 28149,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29182:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6c98dae27db048edb14bb31b4326832aa1fb54be52caaf49d1cecb59aa297c07",
                                    "typeString": "literal_string \"log(string,uint,string,string)\""
                                  },
                                  "value": "log(string,uint,string,string)"
                                },
                                {
                                  "id": 28150,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28137,
                                  "src": "29216:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28151,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28139,
                                  "src": "29220:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28152,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28141,
                                  "src": "29224:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28153,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28143,
                                  "src": "29228:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_6c98dae27db048edb14bb31b4326832aa1fb54be52caaf49d1cecb59aa297c07",
                                    "typeString": "literal_string \"log(string,uint,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 28147,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "29158:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28148,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "29158:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28154,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "29158:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28146,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "29142:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28155,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29142:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28156,
                        "nodeType": "ExpressionStatement",
                        "src": "29142:90:63"
                      }
                    ]
                  },
                  "id": 28158,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "29057:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28144,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28137,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "29075:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28158,
                        "src": "29061:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28136,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "29061:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28139,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "29084:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28158,
                        "src": "29079:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28138,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "29079:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28141,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "29102:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28158,
                        "src": "29088:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28140,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "29088:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28143,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "29120:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28158,
                        "src": "29106:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28142,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "29106:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29060:63:63"
                  },
                  "returnParameters": {
                    "id": 28145,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "29138:0:63"
                  },
                  "scope": 32437,
                  "src": "29048:188:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28180,
                    "nodeType": "Block",
                    "src": "29320:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c737472696e672c626f6f6c29",
                                  "id": 28172,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29364:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e99f82cf29cb9d7551a843a55617f00569395570d3a9816be530f7c6197ec7c8",
                                    "typeString": "literal_string \"log(string,uint,string,bool)\""
                                  },
                                  "value": "log(string,uint,string,bool)"
                                },
                                {
                                  "id": 28173,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28160,
                                  "src": "29396:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28174,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28162,
                                  "src": "29400:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28175,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28164,
                                  "src": "29404:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28176,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28166,
                                  "src": "29408:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_e99f82cf29cb9d7551a843a55617f00569395570d3a9816be530f7c6197ec7c8",
                                    "typeString": "literal_string \"log(string,uint,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 28170,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "29340:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "29340:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28177,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "29340:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28169,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "29324:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28178,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29324:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28179,
                        "nodeType": "ExpressionStatement",
                        "src": "29324:88:63"
                      }
                    ]
                  },
                  "id": 28181,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "29248:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28167,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28160,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "29266:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28181,
                        "src": "29252:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28159,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "29252:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28162,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "29275:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28181,
                        "src": "29270:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28161,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "29270:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28164,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "29293:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28181,
                        "src": "29279:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28163,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "29279:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28166,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "29302:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28181,
                        "src": "29297:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28165,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "29297:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29251:54:63"
                  },
                  "returnParameters": {
                    "id": 28168,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "29320:0:63"
                  },
                  "scope": 32437,
                  "src": "29239:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28203,
                    "nodeType": "Block",
                    "src": "29503:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c737472696e672c6164647265737329",
                                  "id": 28195,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29547:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_bb7235e9977380af5de9932c5c28e18d22806b4b0a15ac7e98086e795e59b31c",
                                    "typeString": "literal_string \"log(string,uint,string,address)\""
                                  },
                                  "value": "log(string,uint,string,address)"
                                },
                                {
                                  "id": 28196,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28183,
                                  "src": "29582:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28197,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28185,
                                  "src": "29586:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28198,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28187,
                                  "src": "29590:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28199,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28189,
                                  "src": "29594:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_bb7235e9977380af5de9932c5c28e18d22806b4b0a15ac7e98086e795e59b31c",
                                    "typeString": "literal_string \"log(string,uint,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 28193,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "29523:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "29523:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28200,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "29523:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28192,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "29507:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29507:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28202,
                        "nodeType": "ExpressionStatement",
                        "src": "29507:91:63"
                      }
                    ]
                  },
                  "id": 28204,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "29428:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28190,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28183,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "29446:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28204,
                        "src": "29432:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28182,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "29432:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28185,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "29455:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28204,
                        "src": "29450:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28184,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "29450:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28187,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "29473:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28204,
                        "src": "29459:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28186,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "29459:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28189,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "29485:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28204,
                        "src": "29477:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28188,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "29477:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29431:57:63"
                  },
                  "returnParameters": {
                    "id": 28191,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "29503:0:63"
                  },
                  "scope": 32437,
                  "src": "29419:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28226,
                    "nodeType": "Block",
                    "src": "29677:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c626f6f6c2c75696e7429",
                                  "id": 28218,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29721:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_550e6ef516f1b3b5be9432b068022af744a919b7f9554b6605ddb59dad27875f",
                                    "typeString": "literal_string \"log(string,uint,bool,uint)\""
                                  },
                                  "value": "log(string,uint,bool,uint)"
                                },
                                {
                                  "id": 28219,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28206,
                                  "src": "29751:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28220,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28208,
                                  "src": "29755:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28221,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28210,
                                  "src": "29759:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28222,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28212,
                                  "src": "29763:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_550e6ef516f1b3b5be9432b068022af744a919b7f9554b6605ddb59dad27875f",
                                    "typeString": "literal_string \"log(string,uint,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 28216,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "29697:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28217,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "29697:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28223,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "29697:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28215,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "29681:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29681:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28225,
                        "nodeType": "ExpressionStatement",
                        "src": "29681:86:63"
                      }
                    ]
                  },
                  "id": 28227,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "29614:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28213,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28206,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "29632:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28227,
                        "src": "29618:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28205,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "29618:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28208,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "29641:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28227,
                        "src": "29636:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28207,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "29636:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28210,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "29650:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28227,
                        "src": "29645:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28209,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "29645:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28212,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "29659:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28227,
                        "src": "29654:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28211,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "29654:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29617:45:63"
                  },
                  "returnParameters": {
                    "id": 28214,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "29677:0:63"
                  },
                  "scope": 32437,
                  "src": "29605:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28249,
                    "nodeType": "Block",
                    "src": "29855:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c626f6f6c2c737472696e6729",
                                  "id": 28241,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "29899:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_76cc6064a225b36730abdd64aa9dcb74a19c97e79a6eaa7e7a7381b59d8b3f68",
                                    "typeString": "literal_string \"log(string,uint,bool,string)\""
                                  },
                                  "value": "log(string,uint,bool,string)"
                                },
                                {
                                  "id": 28242,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28229,
                                  "src": "29931:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28243,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28231,
                                  "src": "29935:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28244,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28233,
                                  "src": "29939:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28245,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28235,
                                  "src": "29943:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_76cc6064a225b36730abdd64aa9dcb74a19c97e79a6eaa7e7a7381b59d8b3f68",
                                    "typeString": "literal_string \"log(string,uint,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 28239,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "29875:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28240,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "29875:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28246,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "29875:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28238,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "29859:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29859:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28248,
                        "nodeType": "ExpressionStatement",
                        "src": "29859:88:63"
                      }
                    ]
                  },
                  "id": 28250,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "29783:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28236,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28229,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "29801:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28250,
                        "src": "29787:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28228,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "29787:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28231,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "29810:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28250,
                        "src": "29805:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28230,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "29805:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28233,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "29819:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28250,
                        "src": "29814:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28232,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "29814:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28235,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "29837:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28250,
                        "src": "29823:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28234,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "29823:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29786:54:63"
                  },
                  "returnParameters": {
                    "id": 28237,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "29855:0:63"
                  },
                  "scope": 32437,
                  "src": "29774:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28272,
                    "nodeType": "Block",
                    "src": "30026:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c626f6f6c2c626f6f6c29",
                                  "id": 28264,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "30070:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e37ff3d07873d5117abd74fe9be70fdadf355b74510a6f7507b0edd4a0032d7f",
                                    "typeString": "literal_string \"log(string,uint,bool,bool)\""
                                  },
                                  "value": "log(string,uint,bool,bool)"
                                },
                                {
                                  "id": 28265,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28252,
                                  "src": "30100:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28266,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28254,
                                  "src": "30104:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28267,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28256,
                                  "src": "30108:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28268,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28258,
                                  "src": "30112:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_e37ff3d07873d5117abd74fe9be70fdadf355b74510a6f7507b0edd4a0032d7f",
                                    "typeString": "literal_string \"log(string,uint,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 28262,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "30046:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28263,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "30046:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28269,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "30046:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28261,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "30030:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30030:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28271,
                        "nodeType": "ExpressionStatement",
                        "src": "30030:86:63"
                      }
                    ]
                  },
                  "id": 28273,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "29963:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28259,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28252,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "29981:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28273,
                        "src": "29967:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28251,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "29967:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28254,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "29990:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28273,
                        "src": "29985:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28253,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "29985:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28256,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "29999:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28273,
                        "src": "29994:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28255,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "29994:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28258,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "30008:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28273,
                        "src": "30003:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28257,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "30003:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29966:45:63"
                  },
                  "returnParameters": {
                    "id": 28260,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "30026:0:63"
                  },
                  "scope": 32437,
                  "src": "29954:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28295,
                    "nodeType": "Block",
                    "src": "30198:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c626f6f6c2c6164647265737329",
                                  "id": 28287,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "30242:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e5549d91ec2998207f70463fe94a71d0edc39b13b219ff8feb87dd990a616539",
                                    "typeString": "literal_string \"log(string,uint,bool,address)\""
                                  },
                                  "value": "log(string,uint,bool,address)"
                                },
                                {
                                  "id": 28288,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28275,
                                  "src": "30275:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28289,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28277,
                                  "src": "30279:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28290,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28279,
                                  "src": "30283:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28291,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28281,
                                  "src": "30287:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_e5549d91ec2998207f70463fe94a71d0edc39b13b219ff8feb87dd990a616539",
                                    "typeString": "literal_string \"log(string,uint,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 28285,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "30218:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28286,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "30218:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "30218:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28284,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "30202:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30202:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28294,
                        "nodeType": "ExpressionStatement",
                        "src": "30202:89:63"
                      }
                    ]
                  },
                  "id": 28296,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "30132:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28282,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28275,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "30150:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28296,
                        "src": "30136:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28274,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "30136:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28277,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "30159:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28296,
                        "src": "30154:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28276,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "30154:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28279,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "30168:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28296,
                        "src": "30163:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28278,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "30163:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28281,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "30180:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28296,
                        "src": "30172:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28280,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "30172:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30135:48:63"
                  },
                  "returnParameters": {
                    "id": 28283,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "30198:0:63"
                  },
                  "scope": 32437,
                  "src": "30123:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28318,
                    "nodeType": "Block",
                    "src": "30373:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c616464726573732c75696e7429",
                                  "id": 28310,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "30417:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_58497afe9e509136f5cf2fb1db9876437d9cbd769be5985b518ff094427e4f75",
                                    "typeString": "literal_string \"log(string,uint,address,uint)\""
                                  },
                                  "value": "log(string,uint,address,uint)"
                                },
                                {
                                  "id": 28311,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28298,
                                  "src": "30450:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28312,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28300,
                                  "src": "30454:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28313,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28302,
                                  "src": "30458:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 28314,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28304,
                                  "src": "30462:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_58497afe9e509136f5cf2fb1db9876437d9cbd769be5985b518ff094427e4f75",
                                    "typeString": "literal_string \"log(string,uint,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 28308,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "30393:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28309,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "30393:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28315,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "30393:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28307,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "30377:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30377:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28317,
                        "nodeType": "ExpressionStatement",
                        "src": "30377:89:63"
                      }
                    ]
                  },
                  "id": 28319,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "30307:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28305,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28298,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "30325:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28319,
                        "src": "30311:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28297,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "30311:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28300,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "30334:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28319,
                        "src": "30329:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28299,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "30329:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28302,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "30346:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28319,
                        "src": "30338:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28301,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "30338:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28304,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "30355:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28319,
                        "src": "30350:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28303,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "30350:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30310:48:63"
                  },
                  "returnParameters": {
                    "id": 28306,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "30373:0:63"
                  },
                  "scope": 32437,
                  "src": "30298:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28341,
                    "nodeType": "Block",
                    "src": "30557:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c616464726573732c737472696e6729",
                                  "id": 28333,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "30601:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_3254c2e85e824e7dd0b3e2e602f95218ed23a331406e197386693086d91053c0",
                                    "typeString": "literal_string \"log(string,uint,address,string)\""
                                  },
                                  "value": "log(string,uint,address,string)"
                                },
                                {
                                  "id": 28334,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28321,
                                  "src": "30636:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28335,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28323,
                                  "src": "30640:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28336,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28325,
                                  "src": "30644:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 28337,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28327,
                                  "src": "30648:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_3254c2e85e824e7dd0b3e2e602f95218ed23a331406e197386693086d91053c0",
                                    "typeString": "literal_string \"log(string,uint,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 28331,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "30577:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28332,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "30577:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28338,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "30577:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28330,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "30561:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30561:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28340,
                        "nodeType": "ExpressionStatement",
                        "src": "30561:91:63"
                      }
                    ]
                  },
                  "id": 28342,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "30482:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28328,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28321,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "30500:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28342,
                        "src": "30486:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28320,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "30486:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28323,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "30509:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28342,
                        "src": "30504:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28322,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "30504:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28325,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "30521:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28342,
                        "src": "30513:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28324,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "30513:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28327,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "30539:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28342,
                        "src": "30525:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28326,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "30525:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30485:57:63"
                  },
                  "returnParameters": {
                    "id": 28329,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "30557:0:63"
                  },
                  "scope": 32437,
                  "src": "30473:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28364,
                    "nodeType": "Block",
                    "src": "30734:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c616464726573732c626f6f6c29",
                                  "id": 28356,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "30778:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_1106a8f7a9fdb0743cc8f33bcf28da92f358b488bfc5eb2426dcc116571bae10",
                                    "typeString": "literal_string \"log(string,uint,address,bool)\""
                                  },
                                  "value": "log(string,uint,address,bool)"
                                },
                                {
                                  "id": 28357,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28344,
                                  "src": "30811:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28358,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28346,
                                  "src": "30815:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28359,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28348,
                                  "src": "30819:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 28360,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28350,
                                  "src": "30823:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_1106a8f7a9fdb0743cc8f33bcf28da92f358b488bfc5eb2426dcc116571bae10",
                                    "typeString": "literal_string \"log(string,uint,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 28354,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "30754:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28355,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "30754:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28361,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "30754:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28353,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "30738:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30738:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28363,
                        "nodeType": "ExpressionStatement",
                        "src": "30738:89:63"
                      }
                    ]
                  },
                  "id": 28365,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "30668:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28351,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28344,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "30686:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28365,
                        "src": "30672:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28343,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "30672:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28346,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "30695:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28365,
                        "src": "30690:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28345,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "30690:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28348,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "30707:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28365,
                        "src": "30699:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28347,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "30699:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28350,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "30716:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28365,
                        "src": "30711:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28349,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "30711:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30671:48:63"
                  },
                  "returnParameters": {
                    "id": 28352,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "30734:0:63"
                  },
                  "scope": 32437,
                  "src": "30659:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28387,
                    "nodeType": "Block",
                    "src": "30912:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c75696e742c616464726573732c6164647265737329",
                                  "id": 28379,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "30956:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_eac892812ad5b43e056a005de5f4269f3430ecb19d3374f0e27d055022fbb381",
                                    "typeString": "literal_string \"log(string,uint,address,address)\""
                                  },
                                  "value": "log(string,uint,address,address)"
                                },
                                {
                                  "id": 28380,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28367,
                                  "src": "30992:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28381,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28369,
                                  "src": "30996:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28382,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28371,
                                  "src": "31000:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 28383,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28373,
                                  "src": "31004:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_eac892812ad5b43e056a005de5f4269f3430ecb19d3374f0e27d055022fbb381",
                                    "typeString": "literal_string \"log(string,uint,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 28377,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "30932:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "30932:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "30932:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28376,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "30916:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30916:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28386,
                        "nodeType": "ExpressionStatement",
                        "src": "30916:92:63"
                      }
                    ]
                  },
                  "id": 28388,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "30843:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28374,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28367,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "30861:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28388,
                        "src": "30847:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28366,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "30847:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28369,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "30870:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28388,
                        "src": "30865:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28368,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "30865:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28371,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "30882:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28388,
                        "src": "30874:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28370,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "30874:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28373,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "30894:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28388,
                        "src": "30886:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28372,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "30886:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30846:51:63"
                  },
                  "returnParameters": {
                    "id": 28375,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "30912:0:63"
                  },
                  "scope": 32437,
                  "src": "30834:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28410,
                    "nodeType": "Block",
                    "src": "31096:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c75696e742c75696e7429",
                                  "id": 28402,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "31140:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_d5cf17d093c9068e0703e037cea1f6c3048599508dc7985106a94aa34c08c926",
                                    "typeString": "literal_string \"log(string,string,uint,uint)\""
                                  },
                                  "value": "log(string,string,uint,uint)"
                                },
                                {
                                  "id": 28403,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28390,
                                  "src": "31172:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28404,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28392,
                                  "src": "31176:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28405,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28394,
                                  "src": "31180:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28406,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28396,
                                  "src": "31184:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_d5cf17d093c9068e0703e037cea1f6c3048599508dc7985106a94aa34c08c926",
                                    "typeString": "literal_string \"log(string,string,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 28400,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "31116:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28401,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "31116:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28407,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31116:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28399,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "31100:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31100:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28409,
                        "nodeType": "ExpressionStatement",
                        "src": "31100:88:63"
                      }
                    ]
                  },
                  "id": 28411,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "31024:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28397,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28390,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "31042:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28411,
                        "src": "31028:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28389,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "31028:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28392,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "31060:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28411,
                        "src": "31046:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28391,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "31046:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28394,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "31069:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28411,
                        "src": "31064:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28393,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "31064:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28396,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "31078:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28411,
                        "src": "31073:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28395,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "31073:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31027:54:63"
                  },
                  "returnParameters": {
                    "id": 28398,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "31096:0:63"
                  },
                  "scope": 32437,
                  "src": "31015:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28433,
                    "nodeType": "Block",
                    "src": "31285:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c75696e742c737472696e6729",
                                  "id": 28425,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "31329:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_8d142cdddf40ab944834474e14a37534e67dcf2f6ffd68fd3d894f907fb76a0a",
                                    "typeString": "literal_string \"log(string,string,uint,string)\""
                                  },
                                  "value": "log(string,string,uint,string)"
                                },
                                {
                                  "id": 28426,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28413,
                                  "src": "31363:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28427,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28415,
                                  "src": "31367:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28428,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28417,
                                  "src": "31371:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28429,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28419,
                                  "src": "31375:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_8d142cdddf40ab944834474e14a37534e67dcf2f6ffd68fd3d894f907fb76a0a",
                                    "typeString": "literal_string \"log(string,string,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 28423,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "31305:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28424,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "31305:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28430,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31305:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28422,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "31289:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28431,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31289:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28432,
                        "nodeType": "ExpressionStatement",
                        "src": "31289:90:63"
                      }
                    ]
                  },
                  "id": 28434,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "31204:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28420,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28413,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "31222:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28434,
                        "src": "31208:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28412,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "31208:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28415,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "31240:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28434,
                        "src": "31226:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28414,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "31226:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28417,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "31249:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28434,
                        "src": "31244:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28416,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "31244:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28419,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "31267:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28434,
                        "src": "31253:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28418,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "31253:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31207:63:63"
                  },
                  "returnParameters": {
                    "id": 28421,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "31285:0:63"
                  },
                  "scope": 32437,
                  "src": "31195:188:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28456,
                    "nodeType": "Block",
                    "src": "31467:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c75696e742c626f6f6c29",
                                  "id": 28448,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "31511:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e65658ca6578795ac405c3487ab68ec21d76f9a79d734a9ab869db5d96b4556b",
                                    "typeString": "literal_string \"log(string,string,uint,bool)\""
                                  },
                                  "value": "log(string,string,uint,bool)"
                                },
                                {
                                  "id": 28449,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28436,
                                  "src": "31543:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28450,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28438,
                                  "src": "31547:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28451,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28440,
                                  "src": "31551:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28452,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28442,
                                  "src": "31555:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_e65658ca6578795ac405c3487ab68ec21d76f9a79d734a9ab869db5d96b4556b",
                                    "typeString": "literal_string \"log(string,string,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 28446,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "31487:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28447,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "31487:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28453,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31487:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28445,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "31471:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28454,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31471:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28455,
                        "nodeType": "ExpressionStatement",
                        "src": "31471:88:63"
                      }
                    ]
                  },
                  "id": 28457,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "31395:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28443,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28436,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "31413:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28457,
                        "src": "31399:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28435,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "31399:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28438,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "31431:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28457,
                        "src": "31417:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28437,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "31417:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28440,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "31440:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28457,
                        "src": "31435:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28439,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "31435:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28442,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "31449:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28457,
                        "src": "31444:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28441,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "31444:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31398:54:63"
                  },
                  "returnParameters": {
                    "id": 28444,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "31467:0:63"
                  },
                  "scope": 32437,
                  "src": "31386:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28479,
                    "nodeType": "Block",
                    "src": "31650:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c75696e742c6164647265737329",
                                  "id": 28471,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "31694:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5d4f46805293f3e84ba6dbfe353f76b3d1f1cfb2ff1e8024fb2adb45e2b7a128",
                                    "typeString": "literal_string \"log(string,string,uint,address)\""
                                  },
                                  "value": "log(string,string,uint,address)"
                                },
                                {
                                  "id": 28472,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28459,
                                  "src": "31729:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28473,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28461,
                                  "src": "31733:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28474,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28463,
                                  "src": "31737:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28475,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28465,
                                  "src": "31741:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_5d4f46805293f3e84ba6dbfe353f76b3d1f1cfb2ff1e8024fb2adb45e2b7a128",
                                    "typeString": "literal_string \"log(string,string,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 28469,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "31670:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28470,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "31670:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28476,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31670:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28468,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "31654:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28477,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31654:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28478,
                        "nodeType": "ExpressionStatement",
                        "src": "31654:91:63"
                      }
                    ]
                  },
                  "id": 28480,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "31575:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28466,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28459,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "31593:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28480,
                        "src": "31579:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28458,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "31579:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28461,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "31611:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28480,
                        "src": "31597:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28460,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "31597:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28463,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "31620:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28480,
                        "src": "31615:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28462,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "31615:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28465,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "31632:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28480,
                        "src": "31624:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28464,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "31624:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31578:57:63"
                  },
                  "returnParameters": {
                    "id": 28467,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "31650:0:63"
                  },
                  "scope": 32437,
                  "src": "31566:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28502,
                    "nodeType": "Block",
                    "src": "31842:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c737472696e672c75696e7429",
                                  "id": 28494,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "31886:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9fd009f5f31a16d665d9be327a4a2b17dc428108ae31e46ab875e747b5ee155f",
                                    "typeString": "literal_string \"log(string,string,string,uint)\""
                                  },
                                  "value": "log(string,string,string,uint)"
                                },
                                {
                                  "id": 28495,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28482,
                                  "src": "31920:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28496,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28484,
                                  "src": "31924:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28497,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28486,
                                  "src": "31928:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28498,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28488,
                                  "src": "31932:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_9fd009f5f31a16d665d9be327a4a2b17dc428108ae31e46ab875e747b5ee155f",
                                    "typeString": "literal_string \"log(string,string,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 28492,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "31862:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28493,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "31862:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28499,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31862:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28491,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "31846:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28500,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31846:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28501,
                        "nodeType": "ExpressionStatement",
                        "src": "31846:90:63"
                      }
                    ]
                  },
                  "id": 28503,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "31761:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28489,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28482,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "31779:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28503,
                        "src": "31765:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28481,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "31765:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28484,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "31797:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28503,
                        "src": "31783:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28483,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "31783:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28486,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "31815:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28503,
                        "src": "31801:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28485,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "31801:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28488,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "31824:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28503,
                        "src": "31819:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28487,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "31819:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31764:63:63"
                  },
                  "returnParameters": {
                    "id": 28490,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "31842:0:63"
                  },
                  "scope": 32437,
                  "src": "31752:188:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28525,
                    "nodeType": "Block",
                    "src": "32042:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c737472696e672c737472696e6729",
                                  "id": 28517,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "32086:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_de68f20a8e88f68d54c5aa294860ee37b58680632686e2f1101e4e042a2cbcbe",
                                    "typeString": "literal_string \"log(string,string,string,string)\""
                                  },
                                  "value": "log(string,string,string,string)"
                                },
                                {
                                  "id": 28518,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28505,
                                  "src": "32122:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28519,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28507,
                                  "src": "32126:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28520,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28509,
                                  "src": "32130:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28521,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28511,
                                  "src": "32134:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_de68f20a8e88f68d54c5aa294860ee37b58680632686e2f1101e4e042a2cbcbe",
                                    "typeString": "literal_string \"log(string,string,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 28515,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "32062:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28516,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "32062:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "32062:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28514,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "32046:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "32046:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28524,
                        "nodeType": "ExpressionStatement",
                        "src": "32046:92:63"
                      }
                    ]
                  },
                  "id": 28526,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "31952:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28512,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28505,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "31970:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28526,
                        "src": "31956:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28504,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "31956:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28507,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "31988:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28526,
                        "src": "31974:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28506,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "31974:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28509,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "32006:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28526,
                        "src": "31992:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28508,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "31992:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28511,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "32024:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28526,
                        "src": "32010:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28510,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "32010:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31955:72:63"
                  },
                  "returnParameters": {
                    "id": 28513,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "32042:0:63"
                  },
                  "scope": 32437,
                  "src": "31943:199:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28548,
                    "nodeType": "Block",
                    "src": "32235:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c737472696e672c626f6f6c29",
                                  "id": 28540,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "32279:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_2c1754ed9d3bc50669c3e71e3115dc4403f3cff35aa9b6b58799f80b5496f332",
                                    "typeString": "literal_string \"log(string,string,string,bool)\""
                                  },
                                  "value": "log(string,string,string,bool)"
                                },
                                {
                                  "id": 28541,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28528,
                                  "src": "32313:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28542,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28530,
                                  "src": "32317:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28543,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28532,
                                  "src": "32321:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28544,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28534,
                                  "src": "32325:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_2c1754ed9d3bc50669c3e71e3115dc4403f3cff35aa9b6b58799f80b5496f332",
                                    "typeString": "literal_string \"log(string,string,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 28538,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "32255:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28539,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "32255:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28545,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "32255:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28537,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "32239:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "32239:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28547,
                        "nodeType": "ExpressionStatement",
                        "src": "32239:90:63"
                      }
                    ]
                  },
                  "id": 28549,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "32154:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28535,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28528,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "32172:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28549,
                        "src": "32158:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28527,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "32158:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28530,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "32190:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28549,
                        "src": "32176:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28529,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "32176:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28532,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "32208:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28549,
                        "src": "32194:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28531,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "32194:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28534,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "32217:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28549,
                        "src": "32212:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28533,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "32212:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32157:63:63"
                  },
                  "returnParameters": {
                    "id": 28536,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "32235:0:63"
                  },
                  "scope": 32437,
                  "src": "32145:188:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28571,
                    "nodeType": "Block",
                    "src": "32429:101:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c737472696e672c6164647265737329",
                                  "id": 28563,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "32473:35:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6d572f449cf1e446ea3ace51a34ce30628f4f1588a39dc5d550cefb210c5bb16",
                                    "typeString": "literal_string \"log(string,string,string,address)\""
                                  },
                                  "value": "log(string,string,string,address)"
                                },
                                {
                                  "id": 28564,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28551,
                                  "src": "32510:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28565,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28553,
                                  "src": "32514:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28566,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28555,
                                  "src": "32518:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28567,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28557,
                                  "src": "32522:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_6d572f449cf1e446ea3ace51a34ce30628f4f1588a39dc5d550cefb210c5bb16",
                                    "typeString": "literal_string \"log(string,string,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 28561,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "32449:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28562,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "32449:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "32449:76:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28560,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "32433:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "32433:93:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28570,
                        "nodeType": "ExpressionStatement",
                        "src": "32433:93:63"
                      }
                    ]
                  },
                  "id": 28572,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "32345:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28558,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28551,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "32363:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28572,
                        "src": "32349:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28550,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "32349:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28553,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "32381:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28572,
                        "src": "32367:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28552,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "32367:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28555,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "32399:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28572,
                        "src": "32385:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28554,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "32385:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28557,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "32411:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28572,
                        "src": "32403:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28556,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "32403:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32348:66:63"
                  },
                  "returnParameters": {
                    "id": 28559,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "32429:0:63"
                  },
                  "scope": 32437,
                  "src": "32336:194:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28594,
                    "nodeType": "Block",
                    "src": "32614:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c626f6f6c2c75696e7429",
                                  "id": 28586,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "32658:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_86818a7aa9bc994aa800ce554e865f0047fd8aaa8799a458e8fea2db0986c5c1",
                                    "typeString": "literal_string \"log(string,string,bool,uint)\""
                                  },
                                  "value": "log(string,string,bool,uint)"
                                },
                                {
                                  "id": 28587,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28574,
                                  "src": "32690:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28588,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28576,
                                  "src": "32694:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28589,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28578,
                                  "src": "32698:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28590,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28580,
                                  "src": "32702:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_86818a7aa9bc994aa800ce554e865f0047fd8aaa8799a458e8fea2db0986c5c1",
                                    "typeString": "literal_string \"log(string,string,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 28584,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "32634:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28585,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "32634:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "32634:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28583,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "32618:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28592,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "32618:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28593,
                        "nodeType": "ExpressionStatement",
                        "src": "32618:88:63"
                      }
                    ]
                  },
                  "id": 28595,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "32542:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28581,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28574,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "32560:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28595,
                        "src": "32546:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28573,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "32546:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28576,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "32578:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28595,
                        "src": "32564:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28575,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "32564:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28578,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "32587:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28595,
                        "src": "32582:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28577,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "32582:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28580,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "32596:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28595,
                        "src": "32591:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28579,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "32591:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32545:54:63"
                  },
                  "returnParameters": {
                    "id": 28582,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "32614:0:63"
                  },
                  "scope": 32437,
                  "src": "32533:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28617,
                    "nodeType": "Block",
                    "src": "32803:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c626f6f6c2c737472696e6729",
                                  "id": 28609,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "32847:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5e84b0ea51a130c3c7e1443097f28cb5c541ea8487836ae7cb1ca9c6e683699b",
                                    "typeString": "literal_string \"log(string,string,bool,string)\""
                                  },
                                  "value": "log(string,string,bool,string)"
                                },
                                {
                                  "id": 28610,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28597,
                                  "src": "32881:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28611,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28599,
                                  "src": "32885:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28612,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28601,
                                  "src": "32889:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28613,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28603,
                                  "src": "32893:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_5e84b0ea51a130c3c7e1443097f28cb5c541ea8487836ae7cb1ca9c6e683699b",
                                    "typeString": "literal_string \"log(string,string,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 28607,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "32823:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28608,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "32823:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28614,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "32823:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28606,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "32807:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28615,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "32807:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28616,
                        "nodeType": "ExpressionStatement",
                        "src": "32807:90:63"
                      }
                    ]
                  },
                  "id": 28618,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "32722:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28604,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28597,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "32740:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28618,
                        "src": "32726:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28596,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "32726:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28599,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "32758:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28618,
                        "src": "32744:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28598,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "32744:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28601,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "32767:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28618,
                        "src": "32762:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28600,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "32762:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28603,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "32785:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28618,
                        "src": "32771:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28602,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "32771:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32725:63:63"
                  },
                  "returnParameters": {
                    "id": 28605,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "32803:0:63"
                  },
                  "scope": 32437,
                  "src": "32713:188:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28640,
                    "nodeType": "Block",
                    "src": "32985:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c626f6f6c2c626f6f6c29",
                                  "id": 28632,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "33029:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_40785869c0ea63ca2ccbcf7415552989c2f1ce04f151eb3b2bd695c64d21af10",
                                    "typeString": "literal_string \"log(string,string,bool,bool)\""
                                  },
                                  "value": "log(string,string,bool,bool)"
                                },
                                {
                                  "id": 28633,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28620,
                                  "src": "33061:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28634,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28622,
                                  "src": "33065:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28635,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28624,
                                  "src": "33069:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28636,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28626,
                                  "src": "33073:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_40785869c0ea63ca2ccbcf7415552989c2f1ce04f151eb3b2bd695c64d21af10",
                                    "typeString": "literal_string \"log(string,string,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 28630,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "33005:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28631,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "33005:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "33005:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28629,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "32989:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28638,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "32989:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28639,
                        "nodeType": "ExpressionStatement",
                        "src": "32989:88:63"
                      }
                    ]
                  },
                  "id": 28641,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "32913:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28627,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28620,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "32931:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28641,
                        "src": "32917:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28619,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "32917:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28622,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "32949:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28641,
                        "src": "32935:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28621,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "32935:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28624,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "32958:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28641,
                        "src": "32953:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28623,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "32953:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28626,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "32967:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28641,
                        "src": "32962:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28625,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "32962:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32916:54:63"
                  },
                  "returnParameters": {
                    "id": 28628,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "32985:0:63"
                  },
                  "scope": 32437,
                  "src": "32904:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28663,
                    "nodeType": "Block",
                    "src": "33168:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c626f6f6c2c6164647265737329",
                                  "id": 28655,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "33212:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c371c7db0a4b104babdbdf00d079eb75cb5aa1d401c4fb726c8e5559029df84d",
                                    "typeString": "literal_string \"log(string,string,bool,address)\""
                                  },
                                  "value": "log(string,string,bool,address)"
                                },
                                {
                                  "id": 28656,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28643,
                                  "src": "33247:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28657,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28645,
                                  "src": "33251:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28658,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28647,
                                  "src": "33255:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28659,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28649,
                                  "src": "33259:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c371c7db0a4b104babdbdf00d079eb75cb5aa1d401c4fb726c8e5559029df84d",
                                    "typeString": "literal_string \"log(string,string,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 28653,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "33188:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28654,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "33188:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28660,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "33188:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28652,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "33172:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "33172:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28662,
                        "nodeType": "ExpressionStatement",
                        "src": "33172:91:63"
                      }
                    ]
                  },
                  "id": 28664,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "33093:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28650,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28643,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "33111:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28664,
                        "src": "33097:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28642,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "33097:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28645,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "33129:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28664,
                        "src": "33115:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28644,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "33115:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28647,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "33138:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28664,
                        "src": "33133:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28646,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "33133:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28649,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "33150:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28664,
                        "src": "33142:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28648,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "33142:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "33096:57:63"
                  },
                  "returnParameters": {
                    "id": 28651,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "33168:0:63"
                  },
                  "scope": 32437,
                  "src": "33084:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28686,
                    "nodeType": "Block",
                    "src": "33354:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c616464726573732c75696e7429",
                                  "id": 28678,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "33398:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_4a81a56a33247069679e8b6a463a3b29deb4b1020ce6e03b978132074cad28c2",
                                    "typeString": "literal_string \"log(string,string,address,uint)\""
                                  },
                                  "value": "log(string,string,address,uint)"
                                },
                                {
                                  "id": 28679,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28666,
                                  "src": "33433:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28680,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28668,
                                  "src": "33437:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28681,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28670,
                                  "src": "33441:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 28682,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28672,
                                  "src": "33445:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_4a81a56a33247069679e8b6a463a3b29deb4b1020ce6e03b978132074cad28c2",
                                    "typeString": "literal_string \"log(string,string,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 28676,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "33374:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28677,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "33374:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28683,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "33374:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28675,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "33358:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28684,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "33358:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28685,
                        "nodeType": "ExpressionStatement",
                        "src": "33358:91:63"
                      }
                    ]
                  },
                  "id": 28687,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "33279:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28673,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28666,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "33297:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28687,
                        "src": "33283:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28665,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "33283:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28668,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "33315:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28687,
                        "src": "33301:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28667,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "33301:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28670,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "33327:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28687,
                        "src": "33319:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28669,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "33319:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28672,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "33336:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28687,
                        "src": "33331:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28671,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "33331:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "33282:57:63"
                  },
                  "returnParameters": {
                    "id": 28674,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "33354:0:63"
                  },
                  "scope": 32437,
                  "src": "33270:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28709,
                    "nodeType": "Block",
                    "src": "33549:101:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c616464726573732c737472696e6729",
                                  "id": 28701,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "33593:35:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_eb1bff805ef136c60bfed230c7b932a14c6f7a62608edeaf56f8f2c0575d25b6",
                                    "typeString": "literal_string \"log(string,string,address,string)\""
                                  },
                                  "value": "log(string,string,address,string)"
                                },
                                {
                                  "id": 28702,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28689,
                                  "src": "33630:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28703,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28691,
                                  "src": "33634:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28704,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28693,
                                  "src": "33638:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 28705,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28695,
                                  "src": "33642:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_eb1bff805ef136c60bfed230c7b932a14c6f7a62608edeaf56f8f2c0575d25b6",
                                    "typeString": "literal_string \"log(string,string,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 28699,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "33569:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28700,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "33569:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28706,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "33569:76:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28698,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "33553:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "33553:93:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28708,
                        "nodeType": "ExpressionStatement",
                        "src": "33553:93:63"
                      }
                    ]
                  },
                  "id": 28710,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "33465:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28696,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28689,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "33483:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28710,
                        "src": "33469:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28688,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "33469:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28691,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "33501:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28710,
                        "src": "33487:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28690,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "33487:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28693,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "33513:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28710,
                        "src": "33505:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28692,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "33505:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28695,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "33531:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28710,
                        "src": "33517:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28694,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "33517:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "33468:66:63"
                  },
                  "returnParameters": {
                    "id": 28697,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "33549:0:63"
                  },
                  "scope": 32437,
                  "src": "33456:194:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28732,
                    "nodeType": "Block",
                    "src": "33737:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c616464726573732c626f6f6c29",
                                  "id": 28724,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "33781:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5ccd4e373eb6ae26626c8607ae861c55cda5fd321363edde7e6328e09072ba63",
                                    "typeString": "literal_string \"log(string,string,address,bool)\""
                                  },
                                  "value": "log(string,string,address,bool)"
                                },
                                {
                                  "id": 28725,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28712,
                                  "src": "33816:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28726,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28714,
                                  "src": "33820:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28727,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28716,
                                  "src": "33824:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 28728,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28718,
                                  "src": "33828:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_5ccd4e373eb6ae26626c8607ae861c55cda5fd321363edde7e6328e09072ba63",
                                    "typeString": "literal_string \"log(string,string,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 28722,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "33757:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28723,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "33757:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28729,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "33757:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28721,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "33741:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "33741:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28731,
                        "nodeType": "ExpressionStatement",
                        "src": "33741:91:63"
                      }
                    ]
                  },
                  "id": 28733,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "33662:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28719,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28712,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "33680:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28733,
                        "src": "33666:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28711,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "33666:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28714,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "33698:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28733,
                        "src": "33684:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28713,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "33684:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28716,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "33710:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28733,
                        "src": "33702:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28715,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "33702:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28718,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "33719:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28733,
                        "src": "33714:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28717,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "33714:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "33665:57:63"
                  },
                  "returnParameters": {
                    "id": 28720,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "33737:0:63"
                  },
                  "scope": 32437,
                  "src": "33653:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28755,
                    "nodeType": "Block",
                    "src": "33926:102:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c737472696e672c616464726573732c6164647265737329",
                                  "id": 28747,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "33970:36:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_439c7befd1b6bfcb9bd001c1f3a991ef43c070f0ace0c190dd9f16d7ae338a5d",
                                    "typeString": "literal_string \"log(string,string,address,address)\""
                                  },
                                  "value": "log(string,string,address,address)"
                                },
                                {
                                  "id": 28748,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28735,
                                  "src": "34008:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28749,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28737,
                                  "src": "34012:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28750,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28739,
                                  "src": "34016:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 28751,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28741,
                                  "src": "34020:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_439c7befd1b6bfcb9bd001c1f3a991ef43c070f0ace0c190dd9f16d7ae338a5d",
                                    "typeString": "literal_string \"log(string,string,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 28745,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "33946:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28746,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "33946:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "33946:77:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28744,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "33930:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28753,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "33930:94:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28754,
                        "nodeType": "ExpressionStatement",
                        "src": "33930:94:63"
                      }
                    ]
                  },
                  "id": 28756,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "33848:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28742,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28735,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "33866:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28756,
                        "src": "33852:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28734,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "33852:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28737,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "33884:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28756,
                        "src": "33870:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28736,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "33870:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28739,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "33896:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28756,
                        "src": "33888:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28738,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "33888:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28741,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "33908:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28756,
                        "src": "33900:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28740,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "33900:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "33851:60:63"
                  },
                  "returnParameters": {
                    "id": 28743,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "33926:0:63"
                  },
                  "scope": 32437,
                  "src": "33839:189:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28778,
                    "nodeType": "Block",
                    "src": "34103:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c75696e742c75696e7429",
                                  "id": 28770,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "34147:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5dbff038873b5f716761e9dcaab0713a903ceaebb2ba8c30b199c4dc534f7701",
                                    "typeString": "literal_string \"log(string,bool,uint,uint)\""
                                  },
                                  "value": "log(string,bool,uint,uint)"
                                },
                                {
                                  "id": 28771,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28758,
                                  "src": "34177:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28772,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28760,
                                  "src": "34181:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28773,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28762,
                                  "src": "34185:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28774,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28764,
                                  "src": "34189:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_5dbff038873b5f716761e9dcaab0713a903ceaebb2ba8c30b199c4dc534f7701",
                                    "typeString": "literal_string \"log(string,bool,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 28768,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "34123:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28769,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "34123:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28775,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "34123:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28767,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "34107:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34107:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28777,
                        "nodeType": "ExpressionStatement",
                        "src": "34107:86:63"
                      }
                    ]
                  },
                  "id": 28779,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "34040:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28765,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28758,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "34058:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28779,
                        "src": "34044:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28757,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "34044:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28760,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "34067:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28779,
                        "src": "34062:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28759,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "34062:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28762,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "34076:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28779,
                        "src": "34071:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28761,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "34071:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28764,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "34085:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28779,
                        "src": "34080:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28763,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "34080:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34043:45:63"
                  },
                  "returnParameters": {
                    "id": 28766,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "34103:0:63"
                  },
                  "scope": 32437,
                  "src": "34031:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28801,
                    "nodeType": "Block",
                    "src": "34281:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c75696e742c737472696e6729",
                                  "id": 28793,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "34325:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_42b9a2274d0e9ab9211da679bc79f433c4055060036260a350e95cf10b9004ee",
                                    "typeString": "literal_string \"log(string,bool,uint,string)\""
                                  },
                                  "value": "log(string,bool,uint,string)"
                                },
                                {
                                  "id": 28794,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28781,
                                  "src": "34357:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28795,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28783,
                                  "src": "34361:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28796,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28785,
                                  "src": "34365:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28797,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28787,
                                  "src": "34369:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_42b9a2274d0e9ab9211da679bc79f433c4055060036260a350e95cf10b9004ee",
                                    "typeString": "literal_string \"log(string,bool,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 28791,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "34301:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28792,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "34301:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28798,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "34301:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28790,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "34285:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28799,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34285:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28800,
                        "nodeType": "ExpressionStatement",
                        "src": "34285:88:63"
                      }
                    ]
                  },
                  "id": 28802,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "34209:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28788,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28781,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "34227:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28802,
                        "src": "34213:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28780,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "34213:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28783,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "34236:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28802,
                        "src": "34231:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28782,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "34231:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28785,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "34245:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28802,
                        "src": "34240:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28784,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "34240:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28787,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "34263:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28802,
                        "src": "34249:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28786,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "34249:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34212:54:63"
                  },
                  "returnParameters": {
                    "id": 28789,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "34281:0:63"
                  },
                  "scope": 32437,
                  "src": "34200:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28824,
                    "nodeType": "Block",
                    "src": "34452:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c75696e742c626f6f6c29",
                                  "id": 28816,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "34496:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_3cc5b5d38fa67d61ad4f760e2dab344ea54d36d39a7b72ff747c1e117e2289bb",
                                    "typeString": "literal_string \"log(string,bool,uint,bool)\""
                                  },
                                  "value": "log(string,bool,uint,bool)"
                                },
                                {
                                  "id": 28817,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28804,
                                  "src": "34526:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28818,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28806,
                                  "src": "34530:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28819,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28808,
                                  "src": "34534:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28820,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28810,
                                  "src": "34538:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_3cc5b5d38fa67d61ad4f760e2dab344ea54d36d39a7b72ff747c1e117e2289bb",
                                    "typeString": "literal_string \"log(string,bool,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 28814,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "34472:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28815,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "34472:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28821,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "34472:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28813,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "34456:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34456:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28823,
                        "nodeType": "ExpressionStatement",
                        "src": "34456:86:63"
                      }
                    ]
                  },
                  "id": 28825,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "34389:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28811,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28804,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "34407:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28825,
                        "src": "34393:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28803,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "34393:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28806,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "34416:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28825,
                        "src": "34411:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28805,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "34411:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28808,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "34425:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28825,
                        "src": "34420:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28807,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "34420:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28810,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "34434:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28825,
                        "src": "34429:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28809,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "34429:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34392:45:63"
                  },
                  "returnParameters": {
                    "id": 28812,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "34452:0:63"
                  },
                  "scope": 32437,
                  "src": "34380:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28847,
                    "nodeType": "Block",
                    "src": "34624:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c75696e742c6164647265737329",
                                  "id": 28839,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "34668:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_71d3850da171f493bcf1bd9faa0694f71484214d8459bca427251a9ad3e9bbd6",
                                    "typeString": "literal_string \"log(string,bool,uint,address)\""
                                  },
                                  "value": "log(string,bool,uint,address)"
                                },
                                {
                                  "id": 28840,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28827,
                                  "src": "34701:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28841,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28829,
                                  "src": "34705:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28842,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28831,
                                  "src": "34709:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 28843,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28833,
                                  "src": "34713:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_71d3850da171f493bcf1bd9faa0694f71484214d8459bca427251a9ad3e9bbd6",
                                    "typeString": "literal_string \"log(string,bool,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 28837,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "34644:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28838,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "34644:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28844,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "34644:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28836,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "34628:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34628:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28846,
                        "nodeType": "ExpressionStatement",
                        "src": "34628:89:63"
                      }
                    ]
                  },
                  "id": 28848,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "34558:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28834,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28827,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "34576:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28848,
                        "src": "34562:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28826,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "34562:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28829,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "34585:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28848,
                        "src": "34580:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28828,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "34580:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28831,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "34594:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28848,
                        "src": "34589:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28830,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "34589:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28833,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "34606:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28848,
                        "src": "34598:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28832,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "34598:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34561:48:63"
                  },
                  "returnParameters": {
                    "id": 28835,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "34624:0:63"
                  },
                  "scope": 32437,
                  "src": "34549:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28870,
                    "nodeType": "Block",
                    "src": "34805:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c737472696e672c75696e7429",
                                  "id": 28862,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "34849:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_34cb308d42fc37e3a239bcd0d717cf3713a336733737bee1d82ac9061e969d72",
                                    "typeString": "literal_string \"log(string,bool,string,uint)\""
                                  },
                                  "value": "log(string,bool,string,uint)"
                                },
                                {
                                  "id": 28863,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28850,
                                  "src": "34881:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28864,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28852,
                                  "src": "34885:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28865,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28854,
                                  "src": "34889:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28866,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28856,
                                  "src": "34893:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_34cb308d42fc37e3a239bcd0d717cf3713a336733737bee1d82ac9061e969d72",
                                    "typeString": "literal_string \"log(string,bool,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 28860,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "34825:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28861,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "34825:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "34825:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28859,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "34809:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28868,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34809:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28869,
                        "nodeType": "ExpressionStatement",
                        "src": "34809:88:63"
                      }
                    ]
                  },
                  "id": 28871,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "34733:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28857,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28850,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "34751:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28871,
                        "src": "34737:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28849,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "34737:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28852,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "34760:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28871,
                        "src": "34755:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28851,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "34755:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28854,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "34778:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28871,
                        "src": "34764:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28853,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "34764:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28856,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "34787:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28871,
                        "src": "34782:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28855,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "34782:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34736:54:63"
                  },
                  "returnParameters": {
                    "id": 28858,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "34805:0:63"
                  },
                  "scope": 32437,
                  "src": "34724:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28893,
                    "nodeType": "Block",
                    "src": "34994:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c737472696e672c737472696e6729",
                                  "id": 28885,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "35038:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a826caebc65f4a71211c1c7fd8dc9bdd856d7ef7dbeef42d8af156e9f73bc47d",
                                    "typeString": "literal_string \"log(string,bool,string,string)\""
                                  },
                                  "value": "log(string,bool,string,string)"
                                },
                                {
                                  "id": 28886,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28873,
                                  "src": "35072:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28887,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28875,
                                  "src": "35076:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28888,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28877,
                                  "src": "35080:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28889,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28879,
                                  "src": "35084:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a826caebc65f4a71211c1c7fd8dc9bdd856d7ef7dbeef42d8af156e9f73bc47d",
                                    "typeString": "literal_string \"log(string,bool,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 28883,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "35014:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28884,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "35014:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28890,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "35014:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28882,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "34998:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28891,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "34998:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28892,
                        "nodeType": "ExpressionStatement",
                        "src": "34998:90:63"
                      }
                    ]
                  },
                  "id": 28894,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "34913:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28880,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28873,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "34931:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28894,
                        "src": "34917:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28872,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "34917:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28875,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "34940:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28894,
                        "src": "34935:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28874,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "34935:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28877,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "34958:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28894,
                        "src": "34944:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28876,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "34944:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28879,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "34976:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28894,
                        "src": "34962:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28878,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "34962:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34916:63:63"
                  },
                  "returnParameters": {
                    "id": 28881,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "34994:0:63"
                  },
                  "scope": 32437,
                  "src": "34904:188:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28916,
                    "nodeType": "Block",
                    "src": "35176:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c737472696e672c626f6f6c29",
                                  "id": 28908,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "35220:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_3f8a701d00386d6ad9c7b7a930805b985bcbbe108e894a7d5cb9493e87e57e8b",
                                    "typeString": "literal_string \"log(string,bool,string,bool)\""
                                  },
                                  "value": "log(string,bool,string,bool)"
                                },
                                {
                                  "id": 28909,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28896,
                                  "src": "35252:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28910,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28898,
                                  "src": "35256:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28911,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28900,
                                  "src": "35260:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28912,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28902,
                                  "src": "35264:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_3f8a701d00386d6ad9c7b7a930805b985bcbbe108e894a7d5cb9493e87e57e8b",
                                    "typeString": "literal_string \"log(string,bool,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 28906,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "35196:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28907,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "35196:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28913,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "35196:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28905,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "35180:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28914,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35180:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28915,
                        "nodeType": "ExpressionStatement",
                        "src": "35180:88:63"
                      }
                    ]
                  },
                  "id": 28917,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "35104:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28903,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28896,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "35122:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28917,
                        "src": "35108:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28895,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "35108:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28898,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "35131:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28917,
                        "src": "35126:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28897,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "35126:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28900,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "35149:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28917,
                        "src": "35135:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28899,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "35135:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28902,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "35158:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28917,
                        "src": "35153:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28901,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "35153:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "35107:54:63"
                  },
                  "returnParameters": {
                    "id": 28904,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "35176:0:63"
                  },
                  "scope": 32437,
                  "src": "35095:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28939,
                    "nodeType": "Block",
                    "src": "35359:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c737472696e672c6164647265737329",
                                  "id": 28931,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "35403:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e0625b292fa5cbc865b55f61713cbbe0ce7abb244ec2df45291ea19c30ddfaf8",
                                    "typeString": "literal_string \"log(string,bool,string,address)\""
                                  },
                                  "value": "log(string,bool,string,address)"
                                },
                                {
                                  "id": 28932,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28919,
                                  "src": "35438:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28933,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28921,
                                  "src": "35442:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28934,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28923,
                                  "src": "35446:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28935,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28925,
                                  "src": "35450:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_e0625b292fa5cbc865b55f61713cbbe0ce7abb244ec2df45291ea19c30ddfaf8",
                                    "typeString": "literal_string \"log(string,bool,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 28929,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "35379:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28930,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "35379:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28936,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "35379:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28928,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "35363:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35363:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28938,
                        "nodeType": "ExpressionStatement",
                        "src": "35363:91:63"
                      }
                    ]
                  },
                  "id": 28940,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "35284:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28926,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28919,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "35302:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28940,
                        "src": "35288:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28918,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "35288:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28921,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "35311:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28940,
                        "src": "35306:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28920,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "35306:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28923,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "35329:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28940,
                        "src": "35315:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28922,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "35315:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28925,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "35341:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28940,
                        "src": "35333:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 28924,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "35333:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "35287:57:63"
                  },
                  "returnParameters": {
                    "id": 28927,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "35359:0:63"
                  },
                  "scope": 32437,
                  "src": "35275:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28962,
                    "nodeType": "Block",
                    "src": "35533:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c626f6f6c2c75696e7429",
                                  "id": 28954,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "35577:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_807531e8eafdd7a15a803e586dd9a01b2aa8ae2cdd52f093775c0dcb0c977edf",
                                    "typeString": "literal_string \"log(string,bool,bool,uint)\""
                                  },
                                  "value": "log(string,bool,bool,uint)"
                                },
                                {
                                  "id": 28955,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28942,
                                  "src": "35607:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28956,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28944,
                                  "src": "35611:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28957,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28946,
                                  "src": "35615:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28958,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28948,
                                  "src": "35619:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_807531e8eafdd7a15a803e586dd9a01b2aa8ae2cdd52f093775c0dcb0c977edf",
                                    "typeString": "literal_string \"log(string,bool,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 28952,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "35553:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28953,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "35553:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28959,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "35553:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28951,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "35537:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35537:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28961,
                        "nodeType": "ExpressionStatement",
                        "src": "35537:86:63"
                      }
                    ]
                  },
                  "id": 28963,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "35470:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28949,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28942,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "35488:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28963,
                        "src": "35474:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28941,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "35474:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28944,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "35497:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28963,
                        "src": "35492:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28943,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "35492:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28946,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "35506:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28963,
                        "src": "35501:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28945,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "35501:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28948,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "35515:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28963,
                        "src": "35510:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28947,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "35510:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "35473:45:63"
                  },
                  "returnParameters": {
                    "id": 28950,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "35533:0:63"
                  },
                  "scope": 32437,
                  "src": "35461:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 28985,
                    "nodeType": "Block",
                    "src": "35711:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c626f6f6c2c737472696e6729",
                                  "id": 28977,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "35755:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9d22d5dd5fa6b44920526f32944af8a0b12651bcfe7d5e4d9330573146eaf058",
                                    "typeString": "literal_string \"log(string,bool,bool,string)\""
                                  },
                                  "value": "log(string,bool,bool,string)"
                                },
                                {
                                  "id": 28978,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28965,
                                  "src": "35787:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 28979,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28967,
                                  "src": "35791:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28980,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28969,
                                  "src": "35795:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 28981,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28971,
                                  "src": "35799:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_9d22d5dd5fa6b44920526f32944af8a0b12651bcfe7d5e4d9330573146eaf058",
                                    "typeString": "literal_string \"log(string,bool,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 28975,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "35731:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28976,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "35731:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 28982,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "35731:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28974,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "35715:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 28983,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35715:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 28984,
                        "nodeType": "ExpressionStatement",
                        "src": "35715:88:63"
                      }
                    ]
                  },
                  "id": 28986,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "35639:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28972,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28965,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "35657:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28986,
                        "src": "35643:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28964,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "35643:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28967,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "35666:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28986,
                        "src": "35661:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28966,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "35661:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28969,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "35675:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28986,
                        "src": "35670:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28968,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "35670:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28971,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "35693:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 28986,
                        "src": "35679:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28970,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "35679:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "35642:54:63"
                  },
                  "returnParameters": {
                    "id": 28973,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "35711:0:63"
                  },
                  "scope": 32437,
                  "src": "35630:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29008,
                    "nodeType": "Block",
                    "src": "35882:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c626f6f6c2c626f6f6c29",
                                  "id": 29000,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "35926:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_895af8c5b50078ceec3119054e20583155eeb3e1a8f56b8ed56efbec57456ad2",
                                    "typeString": "literal_string \"log(string,bool,bool,bool)\""
                                  },
                                  "value": "log(string,bool,bool,bool)"
                                },
                                {
                                  "id": 29001,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28988,
                                  "src": "35956:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29002,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28990,
                                  "src": "35960:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29003,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28992,
                                  "src": "35964:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29004,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 28994,
                                  "src": "35968:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_895af8c5b50078ceec3119054e20583155eeb3e1a8f56b8ed56efbec57456ad2",
                                    "typeString": "literal_string \"log(string,bool,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 28998,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "35902:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 28999,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "35902:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29005,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "35902:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 28997,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "35886:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29006,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "35886:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29007,
                        "nodeType": "ExpressionStatement",
                        "src": "35886:86:63"
                      }
                    ]
                  },
                  "id": 29009,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "35819:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 28995,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 28988,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "35837:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29009,
                        "src": "35823:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 28987,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "35823:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28990,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "35846:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29009,
                        "src": "35841:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28989,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "35841:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28992,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "35855:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29009,
                        "src": "35850:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28991,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "35850:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 28994,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "35864:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29009,
                        "src": "35859:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 28993,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "35859:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "35822:45:63"
                  },
                  "returnParameters": {
                    "id": 28996,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "35882:0:63"
                  },
                  "scope": 32437,
                  "src": "35810:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29031,
                    "nodeType": "Block",
                    "src": "36054:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c626f6f6c2c6164647265737329",
                                  "id": 29023,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "36098:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_7190a529624f3e9168945b9053b9648f6439313f31cad0801b50f9dc38a45d4d",
                                    "typeString": "literal_string \"log(string,bool,bool,address)\""
                                  },
                                  "value": "log(string,bool,bool,address)"
                                },
                                {
                                  "id": 29024,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29011,
                                  "src": "36131:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29025,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29013,
                                  "src": "36135:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29026,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29015,
                                  "src": "36139:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29027,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29017,
                                  "src": "36143:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_7190a529624f3e9168945b9053b9648f6439313f31cad0801b50f9dc38a45d4d",
                                    "typeString": "literal_string \"log(string,bool,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 29021,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "36074:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29022,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "36074:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29028,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "36074:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29020,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "36058:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29029,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "36058:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29030,
                        "nodeType": "ExpressionStatement",
                        "src": "36058:89:63"
                      }
                    ]
                  },
                  "id": 29032,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "35988:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29018,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29011,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "36006:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29032,
                        "src": "35992:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29010,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "35992:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29013,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "36015:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29032,
                        "src": "36010:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29012,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "36010:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29015,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "36024:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29032,
                        "src": "36019:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29014,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "36019:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29017,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "36036:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29032,
                        "src": "36028:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29016,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "36028:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "35991:48:63"
                  },
                  "returnParameters": {
                    "id": 29019,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "36054:0:63"
                  },
                  "scope": 32437,
                  "src": "35979:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29054,
                    "nodeType": "Block",
                    "src": "36229:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c616464726573732c75696e7429",
                                  "id": 29046,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "36273:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_28df4e96d50017c69e64253ea877c992512b689fb9fed17cf6af78f104f1200b",
                                    "typeString": "literal_string \"log(string,bool,address,uint)\""
                                  },
                                  "value": "log(string,bool,address,uint)"
                                },
                                {
                                  "id": 29047,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29034,
                                  "src": "36306:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29048,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29036,
                                  "src": "36310:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29049,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29038,
                                  "src": "36314:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29050,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29040,
                                  "src": "36318:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_28df4e96d50017c69e64253ea877c992512b689fb9fed17cf6af78f104f1200b",
                                    "typeString": "literal_string \"log(string,bool,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 29044,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "36249:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29045,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "36249:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29051,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "36249:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29043,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "36233:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29052,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "36233:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29053,
                        "nodeType": "ExpressionStatement",
                        "src": "36233:89:63"
                      }
                    ]
                  },
                  "id": 29055,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "36163:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29041,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29034,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "36181:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29055,
                        "src": "36167:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29033,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "36167:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29036,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "36190:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29055,
                        "src": "36185:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29035,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "36185:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29038,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "36202:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29055,
                        "src": "36194:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29037,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "36194:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29040,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "36211:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29055,
                        "src": "36206:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29039,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "36206:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "36166:48:63"
                  },
                  "returnParameters": {
                    "id": 29042,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "36229:0:63"
                  },
                  "scope": 32437,
                  "src": "36154:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29077,
                    "nodeType": "Block",
                    "src": "36413:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c616464726573732c737472696e6729",
                                  "id": 29069,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "36457:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_2d8e33a4e52268aad313274a8446eec6f40466a28da2456a8f12d83b298c13ef",
                                    "typeString": "literal_string \"log(string,bool,address,string)\""
                                  },
                                  "value": "log(string,bool,address,string)"
                                },
                                {
                                  "id": 29070,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29057,
                                  "src": "36492:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29071,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29059,
                                  "src": "36496:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29072,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29061,
                                  "src": "36500:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29073,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29063,
                                  "src": "36504:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_2d8e33a4e52268aad313274a8446eec6f40466a28da2456a8f12d83b298c13ef",
                                    "typeString": "literal_string \"log(string,bool,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 29067,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "36433:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29068,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "36433:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29074,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "36433:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29066,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "36417:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "36417:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29076,
                        "nodeType": "ExpressionStatement",
                        "src": "36417:91:63"
                      }
                    ]
                  },
                  "id": 29078,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "36338:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29064,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29057,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "36356:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29078,
                        "src": "36342:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29056,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "36342:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29059,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "36365:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29078,
                        "src": "36360:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29058,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "36360:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29061,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "36377:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29078,
                        "src": "36369:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29060,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "36369:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29063,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "36395:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29078,
                        "src": "36381:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29062,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "36381:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "36341:57:63"
                  },
                  "returnParameters": {
                    "id": 29065,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "36413:0:63"
                  },
                  "scope": 32437,
                  "src": "36329:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29100,
                    "nodeType": "Block",
                    "src": "36590:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c616464726573732c626f6f6c29",
                                  "id": 29092,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "36634:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_958c28c6e7bd79de7ce7f6f112cbcb194d9e383764dfb947492ee1374ff5c482",
                                    "typeString": "literal_string \"log(string,bool,address,bool)\""
                                  },
                                  "value": "log(string,bool,address,bool)"
                                },
                                {
                                  "id": 29093,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29080,
                                  "src": "36667:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29094,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29082,
                                  "src": "36671:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29095,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29084,
                                  "src": "36675:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29096,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29086,
                                  "src": "36679:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_958c28c6e7bd79de7ce7f6f112cbcb194d9e383764dfb947492ee1374ff5c482",
                                    "typeString": "literal_string \"log(string,bool,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 29090,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "36610:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29091,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "36610:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29097,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "36610:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29089,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "36594:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29098,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "36594:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29099,
                        "nodeType": "ExpressionStatement",
                        "src": "36594:89:63"
                      }
                    ]
                  },
                  "id": 29101,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "36524:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29087,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29080,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "36542:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29101,
                        "src": "36528:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29079,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "36528:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29082,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "36551:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29101,
                        "src": "36546:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29081,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "36546:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29084,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "36563:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29101,
                        "src": "36555:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29083,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "36555:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29086,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "36572:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29101,
                        "src": "36567:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29085,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "36567:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "36527:48:63"
                  },
                  "returnParameters": {
                    "id": 29088,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "36590:0:63"
                  },
                  "scope": 32437,
                  "src": "36515:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29123,
                    "nodeType": "Block",
                    "src": "36768:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c626f6f6c2c616464726573732c6164647265737329",
                                  "id": 29115,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "36812:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_33e9dd1deb33816160eb59d86987de501b214bedbbe3c70103eff4092834b53d",
                                    "typeString": "literal_string \"log(string,bool,address,address)\""
                                  },
                                  "value": "log(string,bool,address,address)"
                                },
                                {
                                  "id": 29116,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29103,
                                  "src": "36848:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29117,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29105,
                                  "src": "36852:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29118,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29107,
                                  "src": "36856:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29119,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29109,
                                  "src": "36860:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_33e9dd1deb33816160eb59d86987de501b214bedbbe3c70103eff4092834b53d",
                                    "typeString": "literal_string \"log(string,bool,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 29113,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "36788:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29114,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "36788:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29120,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "36788:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29112,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "36772:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "36772:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29122,
                        "nodeType": "ExpressionStatement",
                        "src": "36772:92:63"
                      }
                    ]
                  },
                  "id": 29124,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "36699:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29110,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29103,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "36717:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29124,
                        "src": "36703:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29102,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "36703:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29105,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "36726:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29124,
                        "src": "36721:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29104,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "36721:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29107,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "36738:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29124,
                        "src": "36730:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29106,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "36730:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29109,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "36750:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29124,
                        "src": "36742:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29108,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "36742:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "36702:51:63"
                  },
                  "returnParameters": {
                    "id": 29111,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "36768:0:63"
                  },
                  "scope": 32437,
                  "src": "36690:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29146,
                    "nodeType": "Block",
                    "src": "36946:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c75696e742c75696e7429",
                                  "id": 29138,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "36990:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_daa394bd4914eaece965f4173c7699746dff411e470b03385f052bd7b13f1bd3",
                                    "typeString": "literal_string \"log(string,address,uint,uint)\""
                                  },
                                  "value": "log(string,address,uint,uint)"
                                },
                                {
                                  "id": 29139,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29126,
                                  "src": "37023:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29140,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29128,
                                  "src": "37027:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29141,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29130,
                                  "src": "37031:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29142,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29132,
                                  "src": "37035:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_daa394bd4914eaece965f4173c7699746dff411e470b03385f052bd7b13f1bd3",
                                    "typeString": "literal_string \"log(string,address,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 29136,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "36966:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29137,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "36966:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "36966:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29135,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "36950:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29144,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "36950:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29145,
                        "nodeType": "ExpressionStatement",
                        "src": "36950:89:63"
                      }
                    ]
                  },
                  "id": 29147,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "36880:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29133,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29126,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "36898:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29147,
                        "src": "36884:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29125,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "36884:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29128,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "36910:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29147,
                        "src": "36902:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29127,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "36902:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29130,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "36919:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29147,
                        "src": "36914:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29129,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "36914:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29132,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "36928:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29147,
                        "src": "36923:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29131,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "36923:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "36883:48:63"
                  },
                  "returnParameters": {
                    "id": 29134,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "36946:0:63"
                  },
                  "scope": 32437,
                  "src": "36871:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29169,
                    "nodeType": "Block",
                    "src": "37130:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c75696e742c737472696e6729",
                                  "id": 29161,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "37174:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_4c55f234d048f08e770926729ee5d8a9c70d6b9a607ce037165c7e0f36155a98",
                                    "typeString": "literal_string \"log(string,address,uint,string)\""
                                  },
                                  "value": "log(string,address,uint,string)"
                                },
                                {
                                  "id": 29162,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29149,
                                  "src": "37209:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29163,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29151,
                                  "src": "37213:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29164,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29153,
                                  "src": "37217:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29165,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29155,
                                  "src": "37221:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_4c55f234d048f08e770926729ee5d8a9c70d6b9a607ce037165c7e0f36155a98",
                                    "typeString": "literal_string \"log(string,address,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 29159,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "37150:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29160,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "37150:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29166,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "37150:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29158,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "37134:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29167,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "37134:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29168,
                        "nodeType": "ExpressionStatement",
                        "src": "37134:91:63"
                      }
                    ]
                  },
                  "id": 29170,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "37055:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29156,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29149,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "37073:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29170,
                        "src": "37059:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29148,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "37059:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29151,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "37085:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29170,
                        "src": "37077:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29150,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "37077:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29153,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "37094:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29170,
                        "src": "37089:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29152,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "37089:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29155,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "37112:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29170,
                        "src": "37098:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29154,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "37098:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "37058:57:63"
                  },
                  "returnParameters": {
                    "id": 29157,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "37130:0:63"
                  },
                  "scope": 32437,
                  "src": "37046:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29192,
                    "nodeType": "Block",
                    "src": "37307:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c75696e742c626f6f6c29",
                                  "id": 29184,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "37351:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5ac1c13c91f65a91284d9d77ba7484e75b0a3dd9b57a01fd497babb7d6ebc554",
                                    "typeString": "literal_string \"log(string,address,uint,bool)\""
                                  },
                                  "value": "log(string,address,uint,bool)"
                                },
                                {
                                  "id": 29185,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29172,
                                  "src": "37384:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29186,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29174,
                                  "src": "37388:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29187,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29176,
                                  "src": "37392:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29188,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29178,
                                  "src": "37396:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_5ac1c13c91f65a91284d9d77ba7484e75b0a3dd9b57a01fd497babb7d6ebc554",
                                    "typeString": "literal_string \"log(string,address,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 29182,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "37327:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29183,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "37327:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "37327:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29181,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "37311:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "37311:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29191,
                        "nodeType": "ExpressionStatement",
                        "src": "37311:89:63"
                      }
                    ]
                  },
                  "id": 29193,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "37241:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29179,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29172,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "37259:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29193,
                        "src": "37245:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29171,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "37245:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29174,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "37271:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29193,
                        "src": "37263:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29173,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "37263:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29176,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "37280:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29193,
                        "src": "37275:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29175,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "37275:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29178,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "37289:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29193,
                        "src": "37284:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29177,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "37284:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "37244:48:63"
                  },
                  "returnParameters": {
                    "id": 29180,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "37307:0:63"
                  },
                  "scope": 32437,
                  "src": "37232:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29215,
                    "nodeType": "Block",
                    "src": "37485:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c75696e742c6164647265737329",
                                  "id": 29207,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "37529:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a366ec808c8af1aa091e8102642939a99436cf04d3dfac2ae23c299404f821b2",
                                    "typeString": "literal_string \"log(string,address,uint,address)\""
                                  },
                                  "value": "log(string,address,uint,address)"
                                },
                                {
                                  "id": 29208,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29195,
                                  "src": "37565:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29209,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29197,
                                  "src": "37569:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29210,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29199,
                                  "src": "37573:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29211,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29201,
                                  "src": "37577:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a366ec808c8af1aa091e8102642939a99436cf04d3dfac2ae23c299404f821b2",
                                    "typeString": "literal_string \"log(string,address,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 29205,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "37505:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29206,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "37505:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29212,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "37505:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29204,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "37489:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "37489:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29214,
                        "nodeType": "ExpressionStatement",
                        "src": "37489:92:63"
                      }
                    ]
                  },
                  "id": 29216,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "37416:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29202,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29195,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "37434:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29216,
                        "src": "37420:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29194,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "37420:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29197,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "37446:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29216,
                        "src": "37438:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29196,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "37438:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29199,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "37455:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29216,
                        "src": "37450:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29198,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "37450:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29201,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "37467:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29216,
                        "src": "37459:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29200,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "37459:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "37419:51:63"
                  },
                  "returnParameters": {
                    "id": 29203,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "37485:0:63"
                  },
                  "scope": 32437,
                  "src": "37407:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29238,
                    "nodeType": "Block",
                    "src": "37672:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c737472696e672c75696e7429",
                                  "id": 29230,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "37716:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_8f624be9ea3983abac9c65ced8f562a492ebb84e6f74cd40f35387eff4d66349",
                                    "typeString": "literal_string \"log(string,address,string,uint)\""
                                  },
                                  "value": "log(string,address,string,uint)"
                                },
                                {
                                  "id": 29231,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29218,
                                  "src": "37751:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29232,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29220,
                                  "src": "37755:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29233,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29222,
                                  "src": "37759:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29234,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29224,
                                  "src": "37763:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_8f624be9ea3983abac9c65ced8f562a492ebb84e6f74cd40f35387eff4d66349",
                                    "typeString": "literal_string \"log(string,address,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 29228,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "37692:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29229,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "37692:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29235,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "37692:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29227,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "37676:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29236,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "37676:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29237,
                        "nodeType": "ExpressionStatement",
                        "src": "37676:91:63"
                      }
                    ]
                  },
                  "id": 29239,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "37597:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29225,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29218,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "37615:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29239,
                        "src": "37601:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29217,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "37601:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29220,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "37627:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29239,
                        "src": "37619:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29219,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "37619:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29222,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "37645:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29239,
                        "src": "37631:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29221,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "37631:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29224,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "37654:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29239,
                        "src": "37649:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29223,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "37649:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "37600:57:63"
                  },
                  "returnParameters": {
                    "id": 29226,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "37672:0:63"
                  },
                  "scope": 32437,
                  "src": "37588:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29261,
                    "nodeType": "Block",
                    "src": "37867:101:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c737472696e672c737472696e6729",
                                  "id": 29253,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "37911:35:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_245986f22170901865e76245a48ee28ce0127ca357f6ad576a72190e1d358797",
                                    "typeString": "literal_string \"log(string,address,string,string)\""
                                  },
                                  "value": "log(string,address,string,string)"
                                },
                                {
                                  "id": 29254,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29241,
                                  "src": "37948:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29255,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29243,
                                  "src": "37952:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29256,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29245,
                                  "src": "37956:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29257,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29247,
                                  "src": "37960:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_245986f22170901865e76245a48ee28ce0127ca357f6ad576a72190e1d358797",
                                    "typeString": "literal_string \"log(string,address,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 29251,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "37887:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29252,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "37887:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29258,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "37887:76:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29250,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "37871:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "37871:93:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29260,
                        "nodeType": "ExpressionStatement",
                        "src": "37871:93:63"
                      }
                    ]
                  },
                  "id": 29262,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "37783:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29248,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29241,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "37801:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29262,
                        "src": "37787:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29240,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "37787:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29243,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "37813:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29262,
                        "src": "37805:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29242,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "37805:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29245,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "37831:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29262,
                        "src": "37817:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29244,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "37817:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29247,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "37849:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29262,
                        "src": "37835:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29246,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "37835:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "37786:66:63"
                  },
                  "returnParameters": {
                    "id": 29249,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "37867:0:63"
                  },
                  "scope": 32437,
                  "src": "37774:194:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29284,
                    "nodeType": "Block",
                    "src": "38055:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c737472696e672c626f6f6c29",
                                  "id": 29276,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "38099:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5f15d28c15ddff15fba1c00f6a4975ae6af8b36c9b2a875bf59bd45049046154",
                                    "typeString": "literal_string \"log(string,address,string,bool)\""
                                  },
                                  "value": "log(string,address,string,bool)"
                                },
                                {
                                  "id": 29277,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29264,
                                  "src": "38134:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29278,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29266,
                                  "src": "38138:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29279,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29268,
                                  "src": "38142:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29280,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29270,
                                  "src": "38146:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_5f15d28c15ddff15fba1c00f6a4975ae6af8b36c9b2a875bf59bd45049046154",
                                    "typeString": "literal_string \"log(string,address,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 29274,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "38075:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29275,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "38075:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29281,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "38075:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29273,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "38059:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38059:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29283,
                        "nodeType": "ExpressionStatement",
                        "src": "38059:91:63"
                      }
                    ]
                  },
                  "id": 29285,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "37980:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29271,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29264,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "37998:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29285,
                        "src": "37984:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29263,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "37984:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29266,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "38010:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29285,
                        "src": "38002:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29265,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "38002:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29268,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "38028:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29285,
                        "src": "38014:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29267,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "38014:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29270,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "38037:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29285,
                        "src": "38032:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29269,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "38032:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "37983:57:63"
                  },
                  "returnParameters": {
                    "id": 29272,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "38055:0:63"
                  },
                  "scope": 32437,
                  "src": "37971:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29307,
                    "nodeType": "Block",
                    "src": "38244:102:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c737472696e672c6164647265737329",
                                  "id": 29299,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "38288:36:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_aabc9a311ab49789834b120d81155a7fee846a9f0d4f740bbeb970770190c82d",
                                    "typeString": "literal_string \"log(string,address,string,address)\""
                                  },
                                  "value": "log(string,address,string,address)"
                                },
                                {
                                  "id": 29300,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29287,
                                  "src": "38326:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29301,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29289,
                                  "src": "38330:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29302,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29291,
                                  "src": "38334:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29303,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29293,
                                  "src": "38338:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_aabc9a311ab49789834b120d81155a7fee846a9f0d4f740bbeb970770190c82d",
                                    "typeString": "literal_string \"log(string,address,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 29297,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "38264:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29298,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "38264:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "38264:77:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29296,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "38248:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38248:94:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29306,
                        "nodeType": "ExpressionStatement",
                        "src": "38248:94:63"
                      }
                    ]
                  },
                  "id": 29308,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "38166:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29294,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29287,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "38184:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29308,
                        "src": "38170:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29286,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "38170:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29289,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "38196:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29308,
                        "src": "38188:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29288,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "38188:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29291,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "38214:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29308,
                        "src": "38200:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29290,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "38200:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29293,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "38226:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29308,
                        "src": "38218:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29292,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "38218:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "38169:60:63"
                  },
                  "returnParameters": {
                    "id": 29295,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "38244:0:63"
                  },
                  "scope": 32437,
                  "src": "38157:189:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29330,
                    "nodeType": "Block",
                    "src": "38424:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c626f6f6c2c75696e7429",
                                  "id": 29322,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "38468:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c5d1bb8ba57e795e9925065473f653a381a99be37bdcfbeaf49f38097f35af7f",
                                    "typeString": "literal_string \"log(string,address,bool,uint)\""
                                  },
                                  "value": "log(string,address,bool,uint)"
                                },
                                {
                                  "id": 29323,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29310,
                                  "src": "38501:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29324,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29312,
                                  "src": "38505:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29325,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29314,
                                  "src": "38509:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29326,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29316,
                                  "src": "38513:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c5d1bb8ba57e795e9925065473f653a381a99be37bdcfbeaf49f38097f35af7f",
                                    "typeString": "literal_string \"log(string,address,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 29320,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "38444:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29321,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "38444:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "38444:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29319,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "38428:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38428:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29329,
                        "nodeType": "ExpressionStatement",
                        "src": "38428:89:63"
                      }
                    ]
                  },
                  "id": 29331,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "38358:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29317,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29310,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "38376:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29331,
                        "src": "38362:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29309,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "38362:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29312,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "38388:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29331,
                        "src": "38380:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29311,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "38380:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29314,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "38397:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29331,
                        "src": "38392:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29313,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "38392:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29316,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "38406:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29331,
                        "src": "38401:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29315,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "38401:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "38361:48:63"
                  },
                  "returnParameters": {
                    "id": 29318,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "38424:0:63"
                  },
                  "scope": 32437,
                  "src": "38349:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29353,
                    "nodeType": "Block",
                    "src": "38608:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c626f6f6c2c737472696e6729",
                                  "id": 29345,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "38652:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_0454c0793d4a41e5f630eb9a887926f8a67ff9e817a5feb968698354ac9d22fb",
                                    "typeString": "literal_string \"log(string,address,bool,string)\""
                                  },
                                  "value": "log(string,address,bool,string)"
                                },
                                {
                                  "id": 29346,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29333,
                                  "src": "38687:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29347,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29335,
                                  "src": "38691:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29348,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29337,
                                  "src": "38695:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29349,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29339,
                                  "src": "38699:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_0454c0793d4a41e5f630eb9a887926f8a67ff9e817a5feb968698354ac9d22fb",
                                    "typeString": "literal_string \"log(string,address,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 29343,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "38628:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29344,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "38628:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29350,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "38628:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29342,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "38612:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29351,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38612:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29352,
                        "nodeType": "ExpressionStatement",
                        "src": "38612:91:63"
                      }
                    ]
                  },
                  "id": 29354,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "38533:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29340,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29333,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "38551:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29354,
                        "src": "38537:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29332,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "38537:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29335,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "38563:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29354,
                        "src": "38555:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29334,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "38555:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29337,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "38572:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29354,
                        "src": "38567:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29336,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "38567:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29339,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "38590:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29354,
                        "src": "38576:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29338,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "38576:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "38536:57:63"
                  },
                  "returnParameters": {
                    "id": 29341,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "38608:0:63"
                  },
                  "scope": 32437,
                  "src": "38524:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29376,
                    "nodeType": "Block",
                    "src": "38785:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c626f6f6c2c626f6f6c29",
                                  "id": 29368,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "38829:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_79884c2bc85eb73c854df1610df373a05f191b834f79cd47a7ab28be2308c039",
                                    "typeString": "literal_string \"log(string,address,bool,bool)\""
                                  },
                                  "value": "log(string,address,bool,bool)"
                                },
                                {
                                  "id": 29369,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29356,
                                  "src": "38862:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29370,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29358,
                                  "src": "38866:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29371,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29360,
                                  "src": "38870:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29372,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29362,
                                  "src": "38874:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_79884c2bc85eb73c854df1610df373a05f191b834f79cd47a7ab28be2308c039",
                                    "typeString": "literal_string \"log(string,address,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 29366,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "38805:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29367,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "38805:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29373,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "38805:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29365,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "38789:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29374,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38789:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29375,
                        "nodeType": "ExpressionStatement",
                        "src": "38789:89:63"
                      }
                    ]
                  },
                  "id": 29377,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "38719:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29363,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29356,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "38737:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29377,
                        "src": "38723:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29355,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "38723:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29358,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "38749:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29377,
                        "src": "38741:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29357,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "38741:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29360,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "38758:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29377,
                        "src": "38753:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29359,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "38753:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29362,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "38767:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29377,
                        "src": "38762:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29361,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "38762:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "38722:48:63"
                  },
                  "returnParameters": {
                    "id": 29364,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "38785:0:63"
                  },
                  "scope": 32437,
                  "src": "38710:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29399,
                    "nodeType": "Block",
                    "src": "38963:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c626f6f6c2c6164647265737329",
                                  "id": 29391,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "39007:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_223603bd064d72559a7d519ad0f1c6a8da707a49f5718dfa23a5ccb01bf9ab76",
                                    "typeString": "literal_string \"log(string,address,bool,address)\""
                                  },
                                  "value": "log(string,address,bool,address)"
                                },
                                {
                                  "id": 29392,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29379,
                                  "src": "39043:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29393,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29381,
                                  "src": "39047:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29394,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29383,
                                  "src": "39051:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29395,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29385,
                                  "src": "39055:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_223603bd064d72559a7d519ad0f1c6a8da707a49f5718dfa23a5ccb01bf9ab76",
                                    "typeString": "literal_string \"log(string,address,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 29389,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "38983:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29390,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "38983:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29396,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "38983:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29388,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "38967:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38967:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29398,
                        "nodeType": "ExpressionStatement",
                        "src": "38967:92:63"
                      }
                    ]
                  },
                  "id": 29400,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "38894:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29386,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29379,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "38912:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29400,
                        "src": "38898:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29378,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "38898:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29381,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "38924:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29400,
                        "src": "38916:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29380,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "38916:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29383,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "38933:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29400,
                        "src": "38928:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29382,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "38928:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29385,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "38945:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29400,
                        "src": "38937:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29384,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "38937:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "38897:51:63"
                  },
                  "returnParameters": {
                    "id": 29387,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "38963:0:63"
                  },
                  "scope": 32437,
                  "src": "38885:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29422,
                    "nodeType": "Block",
                    "src": "39144:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c616464726573732c75696e7429",
                                  "id": 29414,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "39188:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6eb7943d4272e495e7f5cdeb25ef89b9c3c1042d5c1e0e6e11a8fdc842ff5e02",
                                    "typeString": "literal_string \"log(string,address,address,uint)\""
                                  },
                                  "value": "log(string,address,address,uint)"
                                },
                                {
                                  "id": 29415,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29402,
                                  "src": "39224:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29416,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29404,
                                  "src": "39228:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29417,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29406,
                                  "src": "39232:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29418,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29408,
                                  "src": "39236:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_6eb7943d4272e495e7f5cdeb25ef89b9c3c1042d5c1e0e6e11a8fdc842ff5e02",
                                    "typeString": "literal_string \"log(string,address,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 29412,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "39164:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29413,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "39164:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29419,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "39164:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29411,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "39148:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29420,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "39148:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29421,
                        "nodeType": "ExpressionStatement",
                        "src": "39148:92:63"
                      }
                    ]
                  },
                  "id": 29423,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "39075:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29409,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29402,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "39093:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29423,
                        "src": "39079:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29401,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "39079:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29404,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "39105:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29423,
                        "src": "39097:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29403,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "39097:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29406,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "39117:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29423,
                        "src": "39109:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29405,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "39109:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29408,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "39126:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29423,
                        "src": "39121:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29407,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "39121:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "39078:51:63"
                  },
                  "returnParameters": {
                    "id": 29410,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "39144:0:63"
                  },
                  "scope": 32437,
                  "src": "39066:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29445,
                    "nodeType": "Block",
                    "src": "39334:102:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c616464726573732c737472696e6729",
                                  "id": 29437,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "39378:36:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_800a1c6756a402b6162ca8653fd8e87e2c52d1c019c876e92eb2980479636a76",
                                    "typeString": "literal_string \"log(string,address,address,string)\""
                                  },
                                  "value": "log(string,address,address,string)"
                                },
                                {
                                  "id": 29438,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29425,
                                  "src": "39416:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29439,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29427,
                                  "src": "39420:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29440,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29429,
                                  "src": "39424:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29441,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29431,
                                  "src": "39428:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_800a1c6756a402b6162ca8653fd8e87e2c52d1c019c876e92eb2980479636a76",
                                    "typeString": "literal_string \"log(string,address,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 29435,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "39354:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29436,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "39354:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29442,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "39354:77:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29434,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "39338:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29443,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "39338:94:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29444,
                        "nodeType": "ExpressionStatement",
                        "src": "39338:94:63"
                      }
                    ]
                  },
                  "id": 29446,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "39256:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29432,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29425,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "39274:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29446,
                        "src": "39260:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29424,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "39260:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29427,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "39286:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29446,
                        "src": "39278:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29426,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "39278:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29429,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "39298:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29446,
                        "src": "39290:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29428,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "39290:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29431,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "39316:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29446,
                        "src": "39302:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29430,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "39302:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "39259:60:63"
                  },
                  "returnParameters": {
                    "id": 29433,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "39334:0:63"
                  },
                  "scope": 32437,
                  "src": "39247:189:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29468,
                    "nodeType": "Block",
                    "src": "39517:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c616464726573732c626f6f6c29",
                                  "id": 29460,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "39561:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_b59dbd60587b4eeae521d5427cbc88bff32729f88aff059e7deb0a3a4320aaf4",
                                    "typeString": "literal_string \"log(string,address,address,bool)\""
                                  },
                                  "value": "log(string,address,address,bool)"
                                },
                                {
                                  "id": 29461,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29448,
                                  "src": "39597:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29462,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29450,
                                  "src": "39601:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29463,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29452,
                                  "src": "39605:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29464,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29454,
                                  "src": "39609:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_b59dbd60587b4eeae521d5427cbc88bff32729f88aff059e7deb0a3a4320aaf4",
                                    "typeString": "literal_string \"log(string,address,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 29458,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "39537:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29459,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "39537:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29465,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "39537:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29457,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "39521:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "39521:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29467,
                        "nodeType": "ExpressionStatement",
                        "src": "39521:92:63"
                      }
                    ]
                  },
                  "id": 29469,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "39448:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29455,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29448,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "39466:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29469,
                        "src": "39452:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29447,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "39452:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29450,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "39478:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29469,
                        "src": "39470:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29449,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "39470:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29452,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "39490:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29469,
                        "src": "39482:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29451,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "39482:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29454,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "39499:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29469,
                        "src": "39494:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29453,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "39494:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "39451:51:63"
                  },
                  "returnParameters": {
                    "id": 29456,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "39517:0:63"
                  },
                  "scope": 32437,
                  "src": "39439:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29491,
                    "nodeType": "Block",
                    "src": "39701:103:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728737472696e672c616464726573732c616464726573732c6164647265737329",
                                  "id": 29483,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "39745:37:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_ed8f28f6f4b5d54b1d37f705e543f556805f28b9d1bb3aef0ef7e57ef4992d15",
                                    "typeString": "literal_string \"log(string,address,address,address)\""
                                  },
                                  "value": "log(string,address,address,address)"
                                },
                                {
                                  "id": 29484,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29471,
                                  "src": "39784:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29485,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29473,
                                  "src": "39788:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29486,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29475,
                                  "src": "39792:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29487,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29477,
                                  "src": "39796:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_ed8f28f6f4b5d54b1d37f705e543f556805f28b9d1bb3aef0ef7e57ef4992d15",
                                    "typeString": "literal_string \"log(string,address,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 29481,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "39721:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29482,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "39721:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29488,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "39721:78:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29480,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "39705:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "39705:95:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29490,
                        "nodeType": "ExpressionStatement",
                        "src": "39705:95:63"
                      }
                    ]
                  },
                  "id": 29492,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "39629:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29478,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29471,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "39647:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29492,
                        "src": "39633:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29470,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "39633:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29473,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "39659:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29492,
                        "src": "39651:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29472,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "39651:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29475,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "39671:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29492,
                        "src": "39663:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29474,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "39663:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29477,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "39683:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29492,
                        "src": "39675:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29476,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "39675:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "39632:54:63"
                  },
                  "returnParameters": {
                    "id": 29479,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "39701:0:63"
                  },
                  "scope": 32437,
                  "src": "39620:184:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29514,
                    "nodeType": "Block",
                    "src": "39870:92:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c75696e742c75696e7429",
                                  "id": 29506,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "39914:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_32dfa524f720faf836764864b46011dc5eb74e494d57e12b294a68048585d558",
                                    "typeString": "literal_string \"log(bool,uint,uint,uint)\""
                                  },
                                  "value": "log(bool,uint,uint,uint)"
                                },
                                {
                                  "id": 29507,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29494,
                                  "src": "39942:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29508,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29496,
                                  "src": "39946:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29509,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29498,
                                  "src": "39950:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29510,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29500,
                                  "src": "39954:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_32dfa524f720faf836764864b46011dc5eb74e494d57e12b294a68048585d558",
                                    "typeString": "literal_string \"log(bool,uint,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 29504,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "39890:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29505,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "39890:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29511,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "39890:67:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29503,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "39874:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29512,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "39874:84:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29513,
                        "nodeType": "ExpressionStatement",
                        "src": "39874:84:63"
                      }
                    ]
                  },
                  "id": 29515,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "39816:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29501,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29494,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "39825:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29515,
                        "src": "39820:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29493,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "39820:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29496,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "39834:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29515,
                        "src": "39829:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29495,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "39829:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29498,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "39843:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29515,
                        "src": "39838:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29497,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "39838:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29500,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "39852:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29515,
                        "src": "39847:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29499,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "39847:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "39819:36:63"
                  },
                  "returnParameters": {
                    "id": 29502,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "39870:0:63"
                  },
                  "scope": 32437,
                  "src": "39807:155:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29537,
                    "nodeType": "Block",
                    "src": "40037:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c75696e742c737472696e6729",
                                  "id": 29529,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "40081:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_da0666c89b01999f5c8980ce90fe9d0a367a350fd8d2ec7d1f94587b6281ebd3",
                                    "typeString": "literal_string \"log(bool,uint,uint,string)\""
                                  },
                                  "value": "log(bool,uint,uint,string)"
                                },
                                {
                                  "id": 29530,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29517,
                                  "src": "40111:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29531,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29519,
                                  "src": "40115:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29532,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29521,
                                  "src": "40119:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29533,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29523,
                                  "src": "40123:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_da0666c89b01999f5c8980ce90fe9d0a367a350fd8d2ec7d1f94587b6281ebd3",
                                    "typeString": "literal_string \"log(bool,uint,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 29527,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "40057:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29528,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "40057:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29534,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "40057:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29526,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "40041:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29535,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "40041:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29536,
                        "nodeType": "ExpressionStatement",
                        "src": "40041:86:63"
                      }
                    ]
                  },
                  "id": 29538,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "39974:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29524,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29517,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "39983:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29538,
                        "src": "39978:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29516,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "39978:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29519,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "39992:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29538,
                        "src": "39987:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29518,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "39987:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29521,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "40001:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29538,
                        "src": "39996:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29520,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "39996:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29523,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "40019:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29538,
                        "src": "40005:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29522,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "40005:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "39977:45:63"
                  },
                  "returnParameters": {
                    "id": 29525,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "40037:0:63"
                  },
                  "scope": 32437,
                  "src": "39965:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29560,
                    "nodeType": "Block",
                    "src": "40197:92:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c75696e742c626f6f6c29",
                                  "id": 29552,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "40241:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a41d81dec511172fa866e067fea22fe074eb6260a116ec078e2e0e79a7fd8ef2",
                                    "typeString": "literal_string \"log(bool,uint,uint,bool)\""
                                  },
                                  "value": "log(bool,uint,uint,bool)"
                                },
                                {
                                  "id": 29553,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29540,
                                  "src": "40269:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29554,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29542,
                                  "src": "40273:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29555,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29544,
                                  "src": "40277:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29556,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29546,
                                  "src": "40281:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a41d81dec511172fa866e067fea22fe074eb6260a116ec078e2e0e79a7fd8ef2",
                                    "typeString": "literal_string \"log(bool,uint,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 29550,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "40217:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29551,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "40217:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29557,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "40217:67:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29549,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "40201:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29558,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "40201:84:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29559,
                        "nodeType": "ExpressionStatement",
                        "src": "40201:84:63"
                      }
                    ]
                  },
                  "id": 29561,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "40143:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29547,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29540,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "40152:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29561,
                        "src": "40147:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29539,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "40147:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29542,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "40161:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29561,
                        "src": "40156:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29541,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "40156:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29544,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "40170:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29561,
                        "src": "40165:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29543,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "40165:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29546,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "40179:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29561,
                        "src": "40174:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29545,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "40174:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "40146:36:63"
                  },
                  "returnParameters": {
                    "id": 29548,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "40197:0:63"
                  },
                  "scope": 32437,
                  "src": "40134:155:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29583,
                    "nodeType": "Block",
                    "src": "40358:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c75696e742c6164647265737329",
                                  "id": 29575,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "40402:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f161b2216765f7746c6d62a843721a4e56fa83880464de0ff958770fd9704e33",
                                    "typeString": "literal_string \"log(bool,uint,uint,address)\""
                                  },
                                  "value": "log(bool,uint,uint,address)"
                                },
                                {
                                  "id": 29576,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29563,
                                  "src": "40433:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29577,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29565,
                                  "src": "40437:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29578,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29567,
                                  "src": "40441:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29579,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29569,
                                  "src": "40445:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_f161b2216765f7746c6d62a843721a4e56fa83880464de0ff958770fd9704e33",
                                    "typeString": "literal_string \"log(bool,uint,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 29573,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "40378:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29574,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "40378:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29580,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "40378:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29572,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "40362:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29581,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "40362:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29582,
                        "nodeType": "ExpressionStatement",
                        "src": "40362:87:63"
                      }
                    ]
                  },
                  "id": 29584,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "40301:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29570,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29563,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "40310:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29584,
                        "src": "40305:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29562,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "40305:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29565,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "40319:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29584,
                        "src": "40314:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29564,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "40314:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29567,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "40328:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29584,
                        "src": "40323:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29566,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "40323:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29569,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "40340:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29584,
                        "src": "40332:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29568,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "40332:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "40304:39:63"
                  },
                  "returnParameters": {
                    "id": 29571,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "40358:0:63"
                  },
                  "scope": 32437,
                  "src": "40292:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29606,
                    "nodeType": "Block",
                    "src": "40528:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c737472696e672c75696e7429",
                                  "id": 29598,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "40572:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_4180011b79de474cdb825b6c4cfbc6d05927b06d92ab7c90ba7ff48d251e1813",
                                    "typeString": "literal_string \"log(bool,uint,string,uint)\""
                                  },
                                  "value": "log(bool,uint,string,uint)"
                                },
                                {
                                  "id": 29599,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29586,
                                  "src": "40602:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29600,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29588,
                                  "src": "40606:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29601,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29590,
                                  "src": "40610:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29602,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29592,
                                  "src": "40614:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_4180011b79de474cdb825b6c4cfbc6d05927b06d92ab7c90ba7ff48d251e1813",
                                    "typeString": "literal_string \"log(bool,uint,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 29596,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "40548:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29597,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "40548:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "40548:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29595,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "40532:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29604,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "40532:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29605,
                        "nodeType": "ExpressionStatement",
                        "src": "40532:86:63"
                      }
                    ]
                  },
                  "id": 29607,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "40465:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29593,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29586,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "40474:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29607,
                        "src": "40469:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29585,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "40469:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29588,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "40483:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29607,
                        "src": "40478:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29587,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "40478:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29590,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "40501:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29607,
                        "src": "40487:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29589,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "40487:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29592,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "40510:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29607,
                        "src": "40505:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29591,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "40505:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "40468:45:63"
                  },
                  "returnParameters": {
                    "id": 29594,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "40528:0:63"
                  },
                  "scope": 32437,
                  "src": "40456:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29629,
                    "nodeType": "Block",
                    "src": "40706:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c737472696e672c737472696e6729",
                                  "id": 29621,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "40750:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_d32a654812cf9bc5514c83d6adb00987a26a725c531c254b4dfe4eef4cdfc8ee",
                                    "typeString": "literal_string \"log(bool,uint,string,string)\""
                                  },
                                  "value": "log(bool,uint,string,string)"
                                },
                                {
                                  "id": 29622,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29609,
                                  "src": "40782:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29623,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29611,
                                  "src": "40786:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29624,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29613,
                                  "src": "40790:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29625,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29615,
                                  "src": "40794:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_d32a654812cf9bc5514c83d6adb00987a26a725c531c254b4dfe4eef4cdfc8ee",
                                    "typeString": "literal_string \"log(bool,uint,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 29619,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "40726:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29620,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "40726:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29626,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "40726:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29618,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "40710:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "40710:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29628,
                        "nodeType": "ExpressionStatement",
                        "src": "40710:88:63"
                      }
                    ]
                  },
                  "id": 29630,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "40634:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29616,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29609,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "40643:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29630,
                        "src": "40638:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29608,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "40638:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29611,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "40652:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29630,
                        "src": "40647:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29610,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "40647:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29613,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "40670:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29630,
                        "src": "40656:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29612,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "40656:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29615,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "40688:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29630,
                        "src": "40674:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29614,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "40674:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "40637:54:63"
                  },
                  "returnParameters": {
                    "id": 29617,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "40706:0:63"
                  },
                  "scope": 32437,
                  "src": "40625:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29652,
                    "nodeType": "Block",
                    "src": "40877:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c737472696e672c626f6f6c29",
                                  "id": 29644,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "40921:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_91d2f813beb255a90e7ea595fb27355b60d93c3f818aac6b4c27388d34e0ea16",
                                    "typeString": "literal_string \"log(bool,uint,string,bool)\""
                                  },
                                  "value": "log(bool,uint,string,bool)"
                                },
                                {
                                  "id": 29645,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29632,
                                  "src": "40951:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29646,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29634,
                                  "src": "40955:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29647,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29636,
                                  "src": "40959:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29648,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29638,
                                  "src": "40963:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_91d2f813beb255a90e7ea595fb27355b60d93c3f818aac6b4c27388d34e0ea16",
                                    "typeString": "literal_string \"log(bool,uint,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 29642,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "40897:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29643,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "40897:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29649,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "40897:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29641,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "40881:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29650,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "40881:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29651,
                        "nodeType": "ExpressionStatement",
                        "src": "40881:86:63"
                      }
                    ]
                  },
                  "id": 29653,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "40814:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29639,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29632,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "40823:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29653,
                        "src": "40818:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29631,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "40818:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29634,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "40832:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29653,
                        "src": "40827:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29633,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "40827:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29636,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "40850:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29653,
                        "src": "40836:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29635,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "40836:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29638,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "40859:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29653,
                        "src": "40854:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29637,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "40854:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "40817:45:63"
                  },
                  "returnParameters": {
                    "id": 29640,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "40877:0:63"
                  },
                  "scope": 32437,
                  "src": "40805:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29675,
                    "nodeType": "Block",
                    "src": "41049:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c737472696e672c6164647265737329",
                                  "id": 29667,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "41093:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a5c70d29969a9ad21bdf8986348e5dc44eea151f64e0f90231a45219c4d0e3d5",
                                    "typeString": "literal_string \"log(bool,uint,string,address)\""
                                  },
                                  "value": "log(bool,uint,string,address)"
                                },
                                {
                                  "id": 29668,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29655,
                                  "src": "41126:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29669,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29657,
                                  "src": "41130:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29670,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29659,
                                  "src": "41134:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29671,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29661,
                                  "src": "41138:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a5c70d29969a9ad21bdf8986348e5dc44eea151f64e0f90231a45219c4d0e3d5",
                                    "typeString": "literal_string \"log(bool,uint,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 29665,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "41069:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29666,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "41069:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29672,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "41069:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29664,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "41053:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29673,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "41053:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29674,
                        "nodeType": "ExpressionStatement",
                        "src": "41053:89:63"
                      }
                    ]
                  },
                  "id": 29676,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "40983:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29662,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29655,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "40992:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29676,
                        "src": "40987:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29654,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "40987:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29657,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "41001:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29676,
                        "src": "40996:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29656,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "40996:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29659,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "41019:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29676,
                        "src": "41005:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29658,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "41005:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29661,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "41031:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29676,
                        "src": "41023:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29660,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "41023:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "40986:48:63"
                  },
                  "returnParameters": {
                    "id": 29663,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "41049:0:63"
                  },
                  "scope": 32437,
                  "src": "40974:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29698,
                    "nodeType": "Block",
                    "src": "41212:92:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c626f6f6c2c75696e7429",
                                  "id": 29690,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "41256:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_d3de5593988099d08808f80d2a972ea3da18ecd746f0a3e437c530efaad65aa0",
                                    "typeString": "literal_string \"log(bool,uint,bool,uint)\""
                                  },
                                  "value": "log(bool,uint,bool,uint)"
                                },
                                {
                                  "id": 29691,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29678,
                                  "src": "41284:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29692,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29680,
                                  "src": "41288:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29693,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29682,
                                  "src": "41292:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29694,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29684,
                                  "src": "41296:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_d3de5593988099d08808f80d2a972ea3da18ecd746f0a3e437c530efaad65aa0",
                                    "typeString": "literal_string \"log(bool,uint,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 29688,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "41232:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29689,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "41232:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29695,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "41232:67:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29687,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "41216:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "41216:84:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29697,
                        "nodeType": "ExpressionStatement",
                        "src": "41216:84:63"
                      }
                    ]
                  },
                  "id": 29699,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "41158:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29685,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29678,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "41167:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29699,
                        "src": "41162:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29677,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "41162:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29680,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "41176:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29699,
                        "src": "41171:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29679,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "41171:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29682,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "41185:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29699,
                        "src": "41180:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29681,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "41180:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29684,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "41194:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29699,
                        "src": "41189:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29683,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "41189:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "41161:36:63"
                  },
                  "returnParameters": {
                    "id": 29686,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "41212:0:63"
                  },
                  "scope": 32437,
                  "src": "41149:155:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29721,
                    "nodeType": "Block",
                    "src": "41379:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c626f6f6c2c737472696e6729",
                                  "id": 29713,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "41423:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_b6d569d433e69694879a799e3777d59bc29ee89dcbaf739de9b283882fd259ad",
                                    "typeString": "literal_string \"log(bool,uint,bool,string)\""
                                  },
                                  "value": "log(bool,uint,bool,string)"
                                },
                                {
                                  "id": 29714,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29701,
                                  "src": "41453:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29715,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29703,
                                  "src": "41457:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29716,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29705,
                                  "src": "41461:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29717,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29707,
                                  "src": "41465:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_b6d569d433e69694879a799e3777d59bc29ee89dcbaf739de9b283882fd259ad",
                                    "typeString": "literal_string \"log(bool,uint,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 29711,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "41399:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29712,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "41399:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "41399:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29710,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "41383:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29719,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "41383:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29720,
                        "nodeType": "ExpressionStatement",
                        "src": "41383:86:63"
                      }
                    ]
                  },
                  "id": 29722,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "41316:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29708,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29701,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "41325:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29722,
                        "src": "41320:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29700,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "41320:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29703,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "41334:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29722,
                        "src": "41329:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29702,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "41329:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29705,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "41343:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29722,
                        "src": "41338:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29704,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "41338:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29707,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "41361:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29722,
                        "src": "41347:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29706,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "41347:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "41319:45:63"
                  },
                  "returnParameters": {
                    "id": 29709,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "41379:0:63"
                  },
                  "scope": 32437,
                  "src": "41307:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29744,
                    "nodeType": "Block",
                    "src": "41539:92:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c626f6f6c2c626f6f6c29",
                                  "id": 29736,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "41583:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9e01f7417c5ff66a2399364b03788fbf8437045d38acf377fab727a3440df7be",
                                    "typeString": "literal_string \"log(bool,uint,bool,bool)\""
                                  },
                                  "value": "log(bool,uint,bool,bool)"
                                },
                                {
                                  "id": 29737,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29724,
                                  "src": "41611:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29738,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29726,
                                  "src": "41615:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29739,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29728,
                                  "src": "41619:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29740,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29730,
                                  "src": "41623:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_9e01f7417c5ff66a2399364b03788fbf8437045d38acf377fab727a3440df7be",
                                    "typeString": "literal_string \"log(bool,uint,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 29734,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "41559:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29735,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "41559:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29741,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "41559:67:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29733,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "41543:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "41543:84:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29743,
                        "nodeType": "ExpressionStatement",
                        "src": "41543:84:63"
                      }
                    ]
                  },
                  "id": 29745,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "41485:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29731,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29724,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "41494:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29745,
                        "src": "41489:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29723,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "41489:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29726,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "41503:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29745,
                        "src": "41498:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29725,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "41498:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29728,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "41512:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29745,
                        "src": "41507:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29727,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "41507:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29730,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "41521:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29745,
                        "src": "41516:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29729,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "41516:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "41488:36:63"
                  },
                  "returnParameters": {
                    "id": 29732,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "41539:0:63"
                  },
                  "scope": 32437,
                  "src": "41476:155:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29767,
                    "nodeType": "Block",
                    "src": "41700:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c626f6f6c2c6164647265737329",
                                  "id": 29759,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "41744:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_4267c7f8f9987b1bc934e31e016f4d182f67ab95e55c5567fbc71b4f01a83f4b",
                                    "typeString": "literal_string \"log(bool,uint,bool,address)\""
                                  },
                                  "value": "log(bool,uint,bool,address)"
                                },
                                {
                                  "id": 29760,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29747,
                                  "src": "41775:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29761,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29749,
                                  "src": "41779:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29762,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29751,
                                  "src": "41783:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29763,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29753,
                                  "src": "41787:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_4267c7f8f9987b1bc934e31e016f4d182f67ab95e55c5567fbc71b4f01a83f4b",
                                    "typeString": "literal_string \"log(bool,uint,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 29757,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "41720:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "41720:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29764,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "41720:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29756,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "41704:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29765,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "41704:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29766,
                        "nodeType": "ExpressionStatement",
                        "src": "41704:87:63"
                      }
                    ]
                  },
                  "id": 29768,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "41643:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29754,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29747,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "41652:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29768,
                        "src": "41647:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29746,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "41647:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29749,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "41661:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29768,
                        "src": "41656:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29748,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "41656:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29751,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "41670:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29768,
                        "src": "41665:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29750,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "41665:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29753,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "41682:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29768,
                        "src": "41674:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29752,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "41674:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "41646:39:63"
                  },
                  "returnParameters": {
                    "id": 29755,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "41700:0:63"
                  },
                  "scope": 32437,
                  "src": "41634:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29790,
                    "nodeType": "Block",
                    "src": "41864:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c616464726573732c75696e7429",
                                  "id": 29782,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "41908:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_caa5236acb25f4f5a01ec5f570d99d895d397c7e9fd20ed31c9c33fa8a17f26d",
                                    "typeString": "literal_string \"log(bool,uint,address,uint)\""
                                  },
                                  "value": "log(bool,uint,address,uint)"
                                },
                                {
                                  "id": 29783,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29770,
                                  "src": "41939:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29784,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29772,
                                  "src": "41943:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29785,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29774,
                                  "src": "41947:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29786,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29776,
                                  "src": "41951:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_caa5236acb25f4f5a01ec5f570d99d895d397c7e9fd20ed31c9c33fa8a17f26d",
                                    "typeString": "literal_string \"log(bool,uint,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 29780,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "41884:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29781,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "41884:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29787,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "41884:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29779,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "41868:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29788,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "41868:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29789,
                        "nodeType": "ExpressionStatement",
                        "src": "41868:87:63"
                      }
                    ]
                  },
                  "id": 29791,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "41807:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29777,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29770,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "41816:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29791,
                        "src": "41811:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29769,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "41811:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29772,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "41825:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29791,
                        "src": "41820:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29771,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "41820:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29774,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "41837:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29791,
                        "src": "41829:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29773,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "41829:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29776,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "41846:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29791,
                        "src": "41841:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29775,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "41841:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "41810:39:63"
                  },
                  "returnParameters": {
                    "id": 29778,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "41864:0:63"
                  },
                  "scope": 32437,
                  "src": "41798:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29813,
                    "nodeType": "Block",
                    "src": "42037:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c616464726573732c737472696e6729",
                                  "id": 29805,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "42081:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_180913415ccbde45e0d2184e3dd2387bed86df0066bd73fcb896bc02a6226689",
                                    "typeString": "literal_string \"log(bool,uint,address,string)\""
                                  },
                                  "value": "log(bool,uint,address,string)"
                                },
                                {
                                  "id": 29806,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29793,
                                  "src": "42114:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29807,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29795,
                                  "src": "42118:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29808,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29797,
                                  "src": "42122:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29809,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29799,
                                  "src": "42126:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_180913415ccbde45e0d2184e3dd2387bed86df0066bd73fcb896bc02a6226689",
                                    "typeString": "literal_string \"log(bool,uint,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 29803,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "42057:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29804,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "42057:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29810,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "42057:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29802,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "42041:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29811,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "42041:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29812,
                        "nodeType": "ExpressionStatement",
                        "src": "42041:89:63"
                      }
                    ]
                  },
                  "id": 29814,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "41971:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29800,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29793,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "41980:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29814,
                        "src": "41975:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29792,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "41975:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29795,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "41989:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29814,
                        "src": "41984:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29794,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "41984:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29797,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "42001:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29814,
                        "src": "41993:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29796,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "41993:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29799,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "42019:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29814,
                        "src": "42005:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29798,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "42005:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "41974:48:63"
                  },
                  "returnParameters": {
                    "id": 29801,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "42037:0:63"
                  },
                  "scope": 32437,
                  "src": "41962:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29836,
                    "nodeType": "Block",
                    "src": "42203:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c616464726573732c626f6f6c29",
                                  "id": 29828,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "42247:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_65adf4082cd731bd1252f957eddeecdbdcf11e48975b5ac20d902fcb218153fa",
                                    "typeString": "literal_string \"log(bool,uint,address,bool)\""
                                  },
                                  "value": "log(bool,uint,address,bool)"
                                },
                                {
                                  "id": 29829,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29816,
                                  "src": "42278:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29830,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29818,
                                  "src": "42282:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29831,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29820,
                                  "src": "42286:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29832,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29822,
                                  "src": "42290:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_65adf4082cd731bd1252f957eddeecdbdcf11e48975b5ac20d902fcb218153fa",
                                    "typeString": "literal_string \"log(bool,uint,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 29826,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "42223:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29827,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "42223:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29833,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "42223:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29825,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "42207:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29834,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "42207:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29835,
                        "nodeType": "ExpressionStatement",
                        "src": "42207:87:63"
                      }
                    ]
                  },
                  "id": 29837,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "42146:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29823,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29816,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "42155:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29837,
                        "src": "42150:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29815,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "42150:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29818,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "42164:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29837,
                        "src": "42159:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29817,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "42159:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29820,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "42176:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29837,
                        "src": "42168:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29819,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "42168:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29822,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "42185:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29837,
                        "src": "42180:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29821,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "42180:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "42149:39:63"
                  },
                  "returnParameters": {
                    "id": 29824,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "42203:0:63"
                  },
                  "scope": 32437,
                  "src": "42137:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29859,
                    "nodeType": "Block",
                    "src": "42370:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c75696e742c616464726573732c6164647265737329",
                                  "id": 29851,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "42414:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_8a2f90aa07fc9781ea213028ce9aef0a44d6a31a77e2f4d54d97a0d808348d5d",
                                    "typeString": "literal_string \"log(bool,uint,address,address)\""
                                  },
                                  "value": "log(bool,uint,address,address)"
                                },
                                {
                                  "id": 29852,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29839,
                                  "src": "42448:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29853,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29841,
                                  "src": "42452:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29854,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29843,
                                  "src": "42456:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 29855,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29845,
                                  "src": "42460:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_8a2f90aa07fc9781ea213028ce9aef0a44d6a31a77e2f4d54d97a0d808348d5d",
                                    "typeString": "literal_string \"log(bool,uint,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 29849,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "42390:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29850,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "42390:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29856,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "42390:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29848,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "42374:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "42374:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29858,
                        "nodeType": "ExpressionStatement",
                        "src": "42374:90:63"
                      }
                    ]
                  },
                  "id": 29860,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "42310:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29846,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29839,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "42319:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29860,
                        "src": "42314:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29838,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "42314:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29841,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "42328:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29860,
                        "src": "42323:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29840,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "42323:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29843,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "42340:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29860,
                        "src": "42332:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29842,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "42332:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29845,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "42352:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29860,
                        "src": "42344:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29844,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "42344:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "42313:42:63"
                  },
                  "returnParameters": {
                    "id": 29847,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "42370:0:63"
                  },
                  "scope": 32437,
                  "src": "42301:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29882,
                    "nodeType": "Block",
                    "src": "42543:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c75696e742c75696e7429",
                                  "id": 29874,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "42587:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_8e4ae86e71c7c77322d634e39fba7bc2a7e4fbe918bce10fe47326050a13b7c9",
                                    "typeString": "literal_string \"log(bool,string,uint,uint)\""
                                  },
                                  "value": "log(bool,string,uint,uint)"
                                },
                                {
                                  "id": 29875,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29862,
                                  "src": "42617:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29876,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29864,
                                  "src": "42621:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29877,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29866,
                                  "src": "42625:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29878,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29868,
                                  "src": "42629:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_8e4ae86e71c7c77322d634e39fba7bc2a7e4fbe918bce10fe47326050a13b7c9",
                                    "typeString": "literal_string \"log(bool,string,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 29872,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "42563:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29873,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "42563:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29879,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "42563:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29871,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "42547:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29880,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "42547:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29881,
                        "nodeType": "ExpressionStatement",
                        "src": "42547:86:63"
                      }
                    ]
                  },
                  "id": 29883,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "42480:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29869,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29862,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "42489:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29883,
                        "src": "42484:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29861,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "42484:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29864,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "42507:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29883,
                        "src": "42493:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29863,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "42493:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29866,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "42516:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29883,
                        "src": "42511:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29865,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "42511:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29868,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "42525:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29883,
                        "src": "42520:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29867,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "42520:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "42483:45:63"
                  },
                  "returnParameters": {
                    "id": 29870,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "42543:0:63"
                  },
                  "scope": 32437,
                  "src": "42471:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29905,
                    "nodeType": "Block",
                    "src": "42721:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c75696e742c737472696e6729",
                                  "id": 29897,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "42765:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_77a1abed9f9fbc44023408083dd5c1cf42b0b566799470c6ab535b12d0f8f649",
                                    "typeString": "literal_string \"log(bool,string,uint,string)\""
                                  },
                                  "value": "log(bool,string,uint,string)"
                                },
                                {
                                  "id": 29898,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29885,
                                  "src": "42797:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29899,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29887,
                                  "src": "42801:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29900,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29889,
                                  "src": "42805:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29901,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29891,
                                  "src": "42809:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_77a1abed9f9fbc44023408083dd5c1cf42b0b566799470c6ab535b12d0f8f649",
                                    "typeString": "literal_string \"log(bool,string,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 29895,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "42741:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29896,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "42741:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29902,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "42741:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29894,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "42725:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "42725:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29904,
                        "nodeType": "ExpressionStatement",
                        "src": "42725:88:63"
                      }
                    ]
                  },
                  "id": 29906,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "42649:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29892,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29885,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "42658:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29906,
                        "src": "42653:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29884,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "42653:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29887,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "42676:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29906,
                        "src": "42662:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29886,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "42662:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29889,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "42685:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29906,
                        "src": "42680:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29888,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "42680:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29891,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "42703:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29906,
                        "src": "42689:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29890,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "42689:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "42652:54:63"
                  },
                  "returnParameters": {
                    "id": 29893,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "42721:0:63"
                  },
                  "scope": 32437,
                  "src": "42640:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29928,
                    "nodeType": "Block",
                    "src": "42892:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c75696e742c626f6f6c29",
                                  "id": 29920,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "42936:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_20bbc9af7c6bae926ffd73678c9130310d497610a5c76e6e2ae48edff96f38a8",
                                    "typeString": "literal_string \"log(bool,string,uint,bool)\""
                                  },
                                  "value": "log(bool,string,uint,bool)"
                                },
                                {
                                  "id": 29921,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29908,
                                  "src": "42966:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29922,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29910,
                                  "src": "42970:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29923,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29912,
                                  "src": "42974:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29924,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29914,
                                  "src": "42978:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_20bbc9af7c6bae926ffd73678c9130310d497610a5c76e6e2ae48edff96f38a8",
                                    "typeString": "literal_string \"log(bool,string,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 29918,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "42912:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29919,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "42912:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "42912:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29917,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "42896:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "42896:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29927,
                        "nodeType": "ExpressionStatement",
                        "src": "42896:86:63"
                      }
                    ]
                  },
                  "id": 29929,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "42829:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29915,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29908,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "42838:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29929,
                        "src": "42833:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29907,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "42833:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29910,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "42856:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29929,
                        "src": "42842:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29909,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "42842:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29912,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "42865:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29929,
                        "src": "42860:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29911,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "42860:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29914,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "42874:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29929,
                        "src": "42869:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29913,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "42869:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "42832:45:63"
                  },
                  "returnParameters": {
                    "id": 29916,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "42892:0:63"
                  },
                  "scope": 32437,
                  "src": "42820:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29951,
                    "nodeType": "Block",
                    "src": "43064:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c75696e742c6164647265737329",
                                  "id": 29943,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "43108:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5b22b938264abfc98de8ea025ac5bd87df03cbffd23b96cdfe194e0ef6fb136a",
                                    "typeString": "literal_string \"log(bool,string,uint,address)\""
                                  },
                                  "value": "log(bool,string,uint,address)"
                                },
                                {
                                  "id": 29944,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29931,
                                  "src": "43141:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29945,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29933,
                                  "src": "43145:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29946,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29935,
                                  "src": "43149:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 29947,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29937,
                                  "src": "43153:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_5b22b938264abfc98de8ea025ac5bd87df03cbffd23b96cdfe194e0ef6fb136a",
                                    "typeString": "literal_string \"log(bool,string,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 29941,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "43084:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29942,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "43084:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29948,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "43084:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29940,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "43068:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29949,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "43068:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29950,
                        "nodeType": "ExpressionStatement",
                        "src": "43068:89:63"
                      }
                    ]
                  },
                  "id": 29952,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "42998:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29938,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29931,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "43007:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29952,
                        "src": "43002:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29930,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "43002:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29933,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "43025:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29952,
                        "src": "43011:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29932,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "43011:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29935,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "43034:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29952,
                        "src": "43029:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29934,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "43029:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29937,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "43046:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29952,
                        "src": "43038:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 29936,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "43038:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "43001:48:63"
                  },
                  "returnParameters": {
                    "id": 29939,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "43064:0:63"
                  },
                  "scope": 32437,
                  "src": "42989:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29974,
                    "nodeType": "Block",
                    "src": "43245:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c737472696e672c75696e7429",
                                  "id": 29966,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "43289:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5ddb259214a75c0fc75757e8e19b1cf1c4ec17a5eef635b4715f04b86884d5df",
                                    "typeString": "literal_string \"log(bool,string,string,uint)\""
                                  },
                                  "value": "log(bool,string,string,uint)"
                                },
                                {
                                  "id": 29967,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29954,
                                  "src": "43321:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29968,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29956,
                                  "src": "43325:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29969,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29958,
                                  "src": "43329:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29970,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29960,
                                  "src": "43333:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_5ddb259214a75c0fc75757e8e19b1cf1c4ec17a5eef635b4715f04b86884d5df",
                                    "typeString": "literal_string \"log(bool,string,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 29964,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "43265:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29965,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "43265:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "43265:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29963,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "43249:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "43249:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29973,
                        "nodeType": "ExpressionStatement",
                        "src": "43249:88:63"
                      }
                    ]
                  },
                  "id": 29975,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "43173:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29961,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29954,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "43182:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29975,
                        "src": "43177:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29953,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "43177:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29956,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "43200:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29975,
                        "src": "43186:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29955,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "43186:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29958,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "43218:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29975,
                        "src": "43204:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29957,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "43204:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29960,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "43227:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29975,
                        "src": "43222:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 29959,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "43222:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "43176:54:63"
                  },
                  "returnParameters": {
                    "id": 29962,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "43245:0:63"
                  },
                  "scope": 32437,
                  "src": "43164:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 29997,
                    "nodeType": "Block",
                    "src": "43434:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c737472696e672c737472696e6729",
                                  "id": 29989,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "43478:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_1762e32af9fa924f818d8f4a6c92011d30129df73749081e0b95feea819a17c9",
                                    "typeString": "literal_string \"log(bool,string,string,string)\""
                                  },
                                  "value": "log(bool,string,string,string)"
                                },
                                {
                                  "id": 29990,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29977,
                                  "src": "43512:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 29991,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29979,
                                  "src": "43516:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29992,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29981,
                                  "src": "43520:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 29993,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 29983,
                                  "src": "43524:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_1762e32af9fa924f818d8f4a6c92011d30129df73749081e0b95feea819a17c9",
                                    "typeString": "literal_string \"log(bool,string,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 29987,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "43454:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 29988,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "43454:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 29994,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "43454:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 29986,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "43438:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 29995,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "43438:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 29996,
                        "nodeType": "ExpressionStatement",
                        "src": "43438:90:63"
                      }
                    ]
                  },
                  "id": 29998,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "43353:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 29984,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29977,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "43362:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29998,
                        "src": "43357:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29976,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "43357:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29979,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "43380:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29998,
                        "src": "43366:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29978,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "43366:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29981,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "43398:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29998,
                        "src": "43384:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29980,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "43384:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 29983,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "43416:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 29998,
                        "src": "43402:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 29982,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "43402:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "43356:63:63"
                  },
                  "returnParameters": {
                    "id": 29985,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "43434:0:63"
                  },
                  "scope": 32437,
                  "src": "43344:188:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30020,
                    "nodeType": "Block",
                    "src": "43616:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c737472696e672c626f6f6c29",
                                  "id": 30012,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "43660:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_1e4b87e52d13efc5b368defba0463e423637ec55125c6230945d005f817198d1",
                                    "typeString": "literal_string \"log(bool,string,string,bool)\""
                                  },
                                  "value": "log(bool,string,string,bool)"
                                },
                                {
                                  "id": 30013,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30000,
                                  "src": "43692:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30014,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30002,
                                  "src": "43696:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30015,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30004,
                                  "src": "43700:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30016,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30006,
                                  "src": "43704:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_1e4b87e52d13efc5b368defba0463e423637ec55125c6230945d005f817198d1",
                                    "typeString": "literal_string \"log(bool,string,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 30010,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "43636:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30011,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "43636:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "43636:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30009,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "43620:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30018,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "43620:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30019,
                        "nodeType": "ExpressionStatement",
                        "src": "43620:88:63"
                      }
                    ]
                  },
                  "id": 30021,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "43544:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30007,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30000,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "43553:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30021,
                        "src": "43548:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 29999,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "43548:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30002,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "43571:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30021,
                        "src": "43557:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30001,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "43557:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30004,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "43589:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30021,
                        "src": "43575:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30003,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "43575:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30006,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "43598:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30021,
                        "src": "43593:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30005,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "43593:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "43547:54:63"
                  },
                  "returnParameters": {
                    "id": 30008,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "43616:0:63"
                  },
                  "scope": 32437,
                  "src": "43535:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30043,
                    "nodeType": "Block",
                    "src": "43799:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c737472696e672c6164647265737329",
                                  "id": 30035,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "43843:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_97d394d89551bd441d1340d1c3dcc3b6160871bf042c6884bcb4049b2fa2bdb5",
                                    "typeString": "literal_string \"log(bool,string,string,address)\""
                                  },
                                  "value": "log(bool,string,string,address)"
                                },
                                {
                                  "id": 30036,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30023,
                                  "src": "43878:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30037,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30025,
                                  "src": "43882:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30038,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30027,
                                  "src": "43886:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30039,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30029,
                                  "src": "43890:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_97d394d89551bd441d1340d1c3dcc3b6160871bf042c6884bcb4049b2fa2bdb5",
                                    "typeString": "literal_string \"log(bool,string,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 30033,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "43819:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30034,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "43819:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30040,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "43819:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30032,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "43803:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "43803:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30042,
                        "nodeType": "ExpressionStatement",
                        "src": "43803:91:63"
                      }
                    ]
                  },
                  "id": 30044,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "43724:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30030,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30023,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "43733:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30044,
                        "src": "43728:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30022,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "43728:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30025,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "43751:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30044,
                        "src": "43737:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30024,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "43737:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30027,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "43769:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30044,
                        "src": "43755:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30026,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "43755:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30029,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "43781:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30044,
                        "src": "43773:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30028,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "43773:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "43727:57:63"
                  },
                  "returnParameters": {
                    "id": 30031,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "43799:0:63"
                  },
                  "scope": 32437,
                  "src": "43715:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30066,
                    "nodeType": "Block",
                    "src": "43973:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c626f6f6c2c75696e7429",
                                  "id": 30058,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "44017:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_8d6f9ca539d16169f184b68d5f2cbc34ada538d6737083559aa5a96068582055",
                                    "typeString": "literal_string \"log(bool,string,bool,uint)\""
                                  },
                                  "value": "log(bool,string,bool,uint)"
                                },
                                {
                                  "id": 30059,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30046,
                                  "src": "44047:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30060,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30048,
                                  "src": "44051:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30061,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30050,
                                  "src": "44055:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30062,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30052,
                                  "src": "44059:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_8d6f9ca539d16169f184b68d5f2cbc34ada538d6737083559aa5a96068582055",
                                    "typeString": "literal_string \"log(bool,string,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 30056,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "43993:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30057,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "43993:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30063,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "43993:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30055,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "43977:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "43977:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30065,
                        "nodeType": "ExpressionStatement",
                        "src": "43977:86:63"
                      }
                    ]
                  },
                  "id": 30067,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "43910:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30053,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30046,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "43919:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30067,
                        "src": "43914:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30045,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "43914:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30048,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "43937:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30067,
                        "src": "43923:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30047,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "43923:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30050,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "43946:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30067,
                        "src": "43941:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30049,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "43941:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30052,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "43955:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30067,
                        "src": "43950:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30051,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "43950:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "43913:45:63"
                  },
                  "returnParameters": {
                    "id": 30054,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "43973:0:63"
                  },
                  "scope": 32437,
                  "src": "43901:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30089,
                    "nodeType": "Block",
                    "src": "44151:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c626f6f6c2c737472696e6729",
                                  "id": 30081,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "44195:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_483d0416329d0c81c68975a0cac822497c590c00f8ae8be66af490d0f9215468",
                                    "typeString": "literal_string \"log(bool,string,bool,string)\""
                                  },
                                  "value": "log(bool,string,bool,string)"
                                },
                                {
                                  "id": 30082,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30069,
                                  "src": "44227:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30083,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30071,
                                  "src": "44231:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30084,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30073,
                                  "src": "44235:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30085,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30075,
                                  "src": "44239:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_483d0416329d0c81c68975a0cac822497c590c00f8ae8be66af490d0f9215468",
                                    "typeString": "literal_string \"log(bool,string,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 30079,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "44171:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30080,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "44171:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30086,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "44171:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30078,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "44155:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "44155:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30088,
                        "nodeType": "ExpressionStatement",
                        "src": "44155:88:63"
                      }
                    ]
                  },
                  "id": 30090,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "44079:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30076,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30069,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "44088:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30090,
                        "src": "44083:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30068,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "44083:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30071,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "44106:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30090,
                        "src": "44092:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30070,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "44092:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30073,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "44115:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30090,
                        "src": "44110:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30072,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "44110:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30075,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "44133:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30090,
                        "src": "44119:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30074,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "44119:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "44082:54:63"
                  },
                  "returnParameters": {
                    "id": 30077,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "44151:0:63"
                  },
                  "scope": 32437,
                  "src": "44070:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30112,
                    "nodeType": "Block",
                    "src": "44322:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c626f6f6c2c626f6f6c29",
                                  "id": 30104,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "44366:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_dc5e935b9ccf45ff13b5900aeaf3a593df3e9479fc07e9c213f5fcaa0951e91f",
                                    "typeString": "literal_string \"log(bool,string,bool,bool)\""
                                  },
                                  "value": "log(bool,string,bool,bool)"
                                },
                                {
                                  "id": 30105,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30092,
                                  "src": "44396:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30106,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30094,
                                  "src": "44400:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30107,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30096,
                                  "src": "44404:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30108,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30098,
                                  "src": "44408:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_dc5e935b9ccf45ff13b5900aeaf3a593df3e9479fc07e9c213f5fcaa0951e91f",
                                    "typeString": "literal_string \"log(bool,string,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 30102,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "44342:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30103,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "44342:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30109,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "44342:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30101,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "44326:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30110,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "44326:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30111,
                        "nodeType": "ExpressionStatement",
                        "src": "44326:86:63"
                      }
                    ]
                  },
                  "id": 30113,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "44259:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30099,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30092,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "44268:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30113,
                        "src": "44263:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30091,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "44263:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30094,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "44286:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30113,
                        "src": "44272:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30093,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "44272:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30096,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "44295:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30113,
                        "src": "44290:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30095,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "44290:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30098,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "44304:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30113,
                        "src": "44299:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30097,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "44299:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "44262:45:63"
                  },
                  "returnParameters": {
                    "id": 30100,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "44322:0:63"
                  },
                  "scope": 32437,
                  "src": "44250:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30135,
                    "nodeType": "Block",
                    "src": "44494:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c626f6f6c2c6164647265737329",
                                  "id": 30127,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "44538:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_538e06ab06366b189ea53da7c11628ee5730bc373b0bc64719bea1a2afab03c5",
                                    "typeString": "literal_string \"log(bool,string,bool,address)\""
                                  },
                                  "value": "log(bool,string,bool,address)"
                                },
                                {
                                  "id": 30128,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30115,
                                  "src": "44571:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30129,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30117,
                                  "src": "44575:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30130,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30119,
                                  "src": "44579:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30131,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30121,
                                  "src": "44583:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_538e06ab06366b189ea53da7c11628ee5730bc373b0bc64719bea1a2afab03c5",
                                    "typeString": "literal_string \"log(bool,string,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 30125,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "44514:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30126,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "44514:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "44514:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30124,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "44498:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30133,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "44498:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30134,
                        "nodeType": "ExpressionStatement",
                        "src": "44498:89:63"
                      }
                    ]
                  },
                  "id": 30136,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "44428:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30122,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30115,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "44437:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30136,
                        "src": "44432:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30114,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "44432:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30117,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "44455:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30136,
                        "src": "44441:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30116,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "44441:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30119,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "44464:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30136,
                        "src": "44459:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30118,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "44459:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30121,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "44476:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30136,
                        "src": "44468:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30120,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "44468:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "44431:48:63"
                  },
                  "returnParameters": {
                    "id": 30123,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "44494:0:63"
                  },
                  "scope": 32437,
                  "src": "44419:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30158,
                    "nodeType": "Block",
                    "src": "44669:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c616464726573732c75696e7429",
                                  "id": 30150,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "44713:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_1b0b955b558cd224468bb20ba92b23519cb59fe363a105b00d7a815c1673c4ca",
                                    "typeString": "literal_string \"log(bool,string,address,uint)\""
                                  },
                                  "value": "log(bool,string,address,uint)"
                                },
                                {
                                  "id": 30151,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30138,
                                  "src": "44746:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30152,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30140,
                                  "src": "44750:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30153,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30142,
                                  "src": "44754:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30154,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30144,
                                  "src": "44758:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_1b0b955b558cd224468bb20ba92b23519cb59fe363a105b00d7a815c1673c4ca",
                                    "typeString": "literal_string \"log(bool,string,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 30148,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "44689:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30149,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "44689:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30155,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "44689:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30147,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "44673:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "44673:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30157,
                        "nodeType": "ExpressionStatement",
                        "src": "44673:89:63"
                      }
                    ]
                  },
                  "id": 30159,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "44603:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30145,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30138,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "44612:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30159,
                        "src": "44607:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30137,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "44607:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30140,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "44630:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30159,
                        "src": "44616:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30139,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "44616:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30142,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "44642:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30159,
                        "src": "44634:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30141,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "44634:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30144,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "44651:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30159,
                        "src": "44646:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30143,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "44646:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "44606:48:63"
                  },
                  "returnParameters": {
                    "id": 30146,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "44669:0:63"
                  },
                  "scope": 32437,
                  "src": "44594:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30181,
                    "nodeType": "Block",
                    "src": "44853:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c616464726573732c737472696e6729",
                                  "id": 30173,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "44897:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_12d6c788fea4d6144f2607e1e8821bec55a5c2dfdc4cece41a536f7b7831e7a7",
                                    "typeString": "literal_string \"log(bool,string,address,string)\""
                                  },
                                  "value": "log(bool,string,address,string)"
                                },
                                {
                                  "id": 30174,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30161,
                                  "src": "44932:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30175,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30163,
                                  "src": "44936:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30176,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30165,
                                  "src": "44940:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30177,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30167,
                                  "src": "44944:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_12d6c788fea4d6144f2607e1e8821bec55a5c2dfdc4cece41a536f7b7831e7a7",
                                    "typeString": "literal_string \"log(bool,string,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 30171,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "44873:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30172,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "44873:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30178,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "44873:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30170,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "44857:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "44857:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30180,
                        "nodeType": "ExpressionStatement",
                        "src": "44857:91:63"
                      }
                    ]
                  },
                  "id": 30182,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "44778:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30168,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30161,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "44787:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30182,
                        "src": "44782:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30160,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "44782:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30163,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "44805:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30182,
                        "src": "44791:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30162,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "44791:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30165,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "44817:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30182,
                        "src": "44809:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30164,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "44809:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30167,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "44835:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30182,
                        "src": "44821:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30166,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "44821:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "44781:57:63"
                  },
                  "returnParameters": {
                    "id": 30169,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "44853:0:63"
                  },
                  "scope": 32437,
                  "src": "44769:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30204,
                    "nodeType": "Block",
                    "src": "45030:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c616464726573732c626f6f6c29",
                                  "id": 30196,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "45074:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6dd434ca1fa26d491bcd72b7fe69eb72d41cae8eadbda5a7f985734e1b80c67d",
                                    "typeString": "literal_string \"log(bool,string,address,bool)\""
                                  },
                                  "value": "log(bool,string,address,bool)"
                                },
                                {
                                  "id": 30197,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30184,
                                  "src": "45107:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30198,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30186,
                                  "src": "45111:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30199,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30188,
                                  "src": "45115:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30200,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30190,
                                  "src": "45119:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_6dd434ca1fa26d491bcd72b7fe69eb72d41cae8eadbda5a7f985734e1b80c67d",
                                    "typeString": "literal_string \"log(bool,string,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 30194,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "45050:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30195,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "45050:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30201,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "45050:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30193,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "45034:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "45034:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30203,
                        "nodeType": "ExpressionStatement",
                        "src": "45034:89:63"
                      }
                    ]
                  },
                  "id": 30205,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "44964:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30191,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30184,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "44973:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30205,
                        "src": "44968:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30183,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "44968:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30186,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "44991:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30205,
                        "src": "44977:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30185,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "44977:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30188,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "45003:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30205,
                        "src": "44995:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30187,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "44995:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30190,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "45012:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30205,
                        "src": "45007:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30189,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "45007:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "44967:48:63"
                  },
                  "returnParameters": {
                    "id": 30192,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "45030:0:63"
                  },
                  "scope": 32437,
                  "src": "44955:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30227,
                    "nodeType": "Block",
                    "src": "45208:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c737472696e672c616464726573732c6164647265737329",
                                  "id": 30219,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "45252:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_2b2b18dc50ecc75180f201de41eca533fbda0c7bf525c06b5b8e87bc1d010822",
                                    "typeString": "literal_string \"log(bool,string,address,address)\""
                                  },
                                  "value": "log(bool,string,address,address)"
                                },
                                {
                                  "id": 30220,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30207,
                                  "src": "45288:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30221,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30209,
                                  "src": "45292:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30222,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30211,
                                  "src": "45296:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30223,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30213,
                                  "src": "45300:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_2b2b18dc50ecc75180f201de41eca533fbda0c7bf525c06b5b8e87bc1d010822",
                                    "typeString": "literal_string \"log(bool,string,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 30217,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "45228:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30218,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "45228:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30224,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "45228:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30216,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "45212:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "45212:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30226,
                        "nodeType": "ExpressionStatement",
                        "src": "45212:92:63"
                      }
                    ]
                  },
                  "id": 30228,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "45139:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30214,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30207,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "45148:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30228,
                        "src": "45143:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30206,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "45143:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30209,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "45166:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30228,
                        "src": "45152:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30208,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "45152:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30211,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "45178:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30228,
                        "src": "45170:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30210,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "45170:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30213,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "45190:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30228,
                        "src": "45182:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30212,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "45182:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "45142:51:63"
                  },
                  "returnParameters": {
                    "id": 30215,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "45208:0:63"
                  },
                  "scope": 32437,
                  "src": "45130:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30250,
                    "nodeType": "Block",
                    "src": "45374:92:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c75696e742c75696e7429",
                                  "id": 30242,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "45418:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_4667de8ece32e91ade336fb6d8a14a500512d40e1162a34636a5bca908b16e6a",
                                    "typeString": "literal_string \"log(bool,bool,uint,uint)\""
                                  },
                                  "value": "log(bool,bool,uint,uint)"
                                },
                                {
                                  "id": 30243,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30230,
                                  "src": "45446:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30244,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30232,
                                  "src": "45450:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30245,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30234,
                                  "src": "45454:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 30246,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30236,
                                  "src": "45458:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_4667de8ece32e91ade336fb6d8a14a500512d40e1162a34636a5bca908b16e6a",
                                    "typeString": "literal_string \"log(bool,bool,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 30240,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "45394:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30241,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "45394:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30247,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "45394:67:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30239,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "45378:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "45378:84:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30249,
                        "nodeType": "ExpressionStatement",
                        "src": "45378:84:63"
                      }
                    ]
                  },
                  "id": 30251,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "45320:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30237,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30230,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "45329:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30251,
                        "src": "45324:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30229,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "45324:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30232,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "45338:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30251,
                        "src": "45333:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30231,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "45333:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30234,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "45347:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30251,
                        "src": "45342:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30233,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "45342:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30236,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "45356:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30251,
                        "src": "45351:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30235,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "45351:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "45323:36:63"
                  },
                  "returnParameters": {
                    "id": 30238,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "45374:0:63"
                  },
                  "scope": 32437,
                  "src": "45311:155:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30273,
                    "nodeType": "Block",
                    "src": "45541:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c75696e742c737472696e6729",
                                  "id": 30265,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "45585:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_50618937639b3b1cb3bbe247efb1fae4eb9a85d1e66ac66dfc77c62561966adc",
                                    "typeString": "literal_string \"log(bool,bool,uint,string)\""
                                  },
                                  "value": "log(bool,bool,uint,string)"
                                },
                                {
                                  "id": 30266,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30253,
                                  "src": "45615:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30267,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30255,
                                  "src": "45619:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30268,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30257,
                                  "src": "45623:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 30269,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30259,
                                  "src": "45627:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_50618937639b3b1cb3bbe247efb1fae4eb9a85d1e66ac66dfc77c62561966adc",
                                    "typeString": "literal_string \"log(bool,bool,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 30263,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "45561:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30264,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "45561:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30270,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "45561:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30262,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "45545:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "45545:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30272,
                        "nodeType": "ExpressionStatement",
                        "src": "45545:86:63"
                      }
                    ]
                  },
                  "id": 30274,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "45478:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30260,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30253,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "45487:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30274,
                        "src": "45482:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30252,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "45482:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30255,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "45496:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30274,
                        "src": "45491:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30254,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "45491:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30257,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "45505:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30274,
                        "src": "45500:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30256,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "45500:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30259,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "45523:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30274,
                        "src": "45509:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30258,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "45509:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "45481:45:63"
                  },
                  "returnParameters": {
                    "id": 30261,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "45541:0:63"
                  },
                  "scope": 32437,
                  "src": "45469:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30296,
                    "nodeType": "Block",
                    "src": "45701:92:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c75696e742c626f6f6c29",
                                  "id": 30288,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "45745:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_ab5cc1c47d926d79461c86216768f32b6ec0ac12d51c1eb543ea3bd1cfec0110",
                                    "typeString": "literal_string \"log(bool,bool,uint,bool)\""
                                  },
                                  "value": "log(bool,bool,uint,bool)"
                                },
                                {
                                  "id": 30289,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30276,
                                  "src": "45773:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30290,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30278,
                                  "src": "45777:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30291,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30280,
                                  "src": "45781:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 30292,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30282,
                                  "src": "45785:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_ab5cc1c47d926d79461c86216768f32b6ec0ac12d51c1eb543ea3bd1cfec0110",
                                    "typeString": "literal_string \"log(bool,bool,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 30286,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "45721:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30287,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "45721:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "45721:67:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30285,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "45705:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30294,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "45705:84:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30295,
                        "nodeType": "ExpressionStatement",
                        "src": "45705:84:63"
                      }
                    ]
                  },
                  "id": 30297,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "45647:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30283,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30276,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "45656:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30297,
                        "src": "45651:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30275,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "45651:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30278,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "45665:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30297,
                        "src": "45660:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30277,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "45660:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30280,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "45674:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30297,
                        "src": "45669:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30279,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "45669:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30282,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "45683:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30297,
                        "src": "45678:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30281,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "45678:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "45650:36:63"
                  },
                  "returnParameters": {
                    "id": 30284,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "45701:0:63"
                  },
                  "scope": 32437,
                  "src": "45638:155:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30319,
                    "nodeType": "Block",
                    "src": "45862:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c75696e742c6164647265737329",
                                  "id": 30311,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "45906:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_0bff950dc175e3e278946e4adb75fffc4ee67cda33555121dd293b95b27a39a7",
                                    "typeString": "literal_string \"log(bool,bool,uint,address)\""
                                  },
                                  "value": "log(bool,bool,uint,address)"
                                },
                                {
                                  "id": 30312,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30299,
                                  "src": "45937:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30313,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30301,
                                  "src": "45941:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30314,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30303,
                                  "src": "45945:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 30315,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30305,
                                  "src": "45949:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_0bff950dc175e3e278946e4adb75fffc4ee67cda33555121dd293b95b27a39a7",
                                    "typeString": "literal_string \"log(bool,bool,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 30309,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "45882:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30310,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "45882:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30316,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "45882:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30308,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "45866:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30317,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "45866:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30318,
                        "nodeType": "ExpressionStatement",
                        "src": "45866:87:63"
                      }
                    ]
                  },
                  "id": 30320,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "45805:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30306,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30299,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "45814:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30320,
                        "src": "45809:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30298,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "45809:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30301,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "45823:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30320,
                        "src": "45818:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30300,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "45818:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30303,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "45832:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30320,
                        "src": "45827:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30302,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "45827:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30305,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "45844:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30320,
                        "src": "45836:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30304,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "45836:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "45808:39:63"
                  },
                  "returnParameters": {
                    "id": 30307,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "45862:0:63"
                  },
                  "scope": 32437,
                  "src": "45796:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30342,
                    "nodeType": "Block",
                    "src": "46032:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c737472696e672c75696e7429",
                                  "id": 30334,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "46076:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_178b4685db1dff62c4ee472c2e6bf50abba0dc230768235e43c6259152d1244e",
                                    "typeString": "literal_string \"log(bool,bool,string,uint)\""
                                  },
                                  "value": "log(bool,bool,string,uint)"
                                },
                                {
                                  "id": 30335,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30322,
                                  "src": "46106:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30336,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30324,
                                  "src": "46110:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30337,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30326,
                                  "src": "46114:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30338,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30328,
                                  "src": "46118:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_178b4685db1dff62c4ee472c2e6bf50abba0dc230768235e43c6259152d1244e",
                                    "typeString": "literal_string \"log(bool,bool,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 30332,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "46052:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30333,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "46052:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "46052:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30331,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "46036:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "46036:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30341,
                        "nodeType": "ExpressionStatement",
                        "src": "46036:86:63"
                      }
                    ]
                  },
                  "id": 30343,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "45969:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30329,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30322,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "45978:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30343,
                        "src": "45973:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30321,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "45973:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30324,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "45987:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30343,
                        "src": "45982:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30323,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "45982:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30326,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "46005:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30343,
                        "src": "45991:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30325,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "45991:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30328,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "46014:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30343,
                        "src": "46009:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30327,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "46009:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "45972:45:63"
                  },
                  "returnParameters": {
                    "id": 30330,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "46032:0:63"
                  },
                  "scope": 32437,
                  "src": "45960:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30365,
                    "nodeType": "Block",
                    "src": "46210:96:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c737472696e672c737472696e6729",
                                  "id": 30357,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "46254:30:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6d1e87518c98344bc3efd52648f61de340bda51607aec409d641f3467caafaaf",
                                    "typeString": "literal_string \"log(bool,bool,string,string)\""
                                  },
                                  "value": "log(bool,bool,string,string)"
                                },
                                {
                                  "id": 30358,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30345,
                                  "src": "46286:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30359,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30347,
                                  "src": "46290:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30360,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30349,
                                  "src": "46294:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30361,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30351,
                                  "src": "46298:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_6d1e87518c98344bc3efd52648f61de340bda51607aec409d641f3467caafaaf",
                                    "typeString": "literal_string \"log(bool,bool,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 30355,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "46230:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30356,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "46230:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30362,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "46230:71:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30354,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "46214:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "46214:88:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30364,
                        "nodeType": "ExpressionStatement",
                        "src": "46214:88:63"
                      }
                    ]
                  },
                  "id": 30366,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "46138:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30352,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30345,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "46147:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30366,
                        "src": "46142:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30344,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "46142:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30347,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "46156:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30366,
                        "src": "46151:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30346,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "46151:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30349,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "46174:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30366,
                        "src": "46160:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30348,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "46160:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30351,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "46192:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30366,
                        "src": "46178:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30350,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "46178:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "46141:54:63"
                  },
                  "returnParameters": {
                    "id": 30353,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "46210:0:63"
                  },
                  "scope": 32437,
                  "src": "46129:177:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30388,
                    "nodeType": "Block",
                    "src": "46381:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c737472696e672c626f6f6c29",
                                  "id": 30380,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "46425:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_b857163a2b7b8273ed53cefa410aa148f1833bdfc22da11e1e2fb89c6e625d02",
                                    "typeString": "literal_string \"log(bool,bool,string,bool)\""
                                  },
                                  "value": "log(bool,bool,string,bool)"
                                },
                                {
                                  "id": 30381,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30368,
                                  "src": "46455:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30382,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30370,
                                  "src": "46459:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30383,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30372,
                                  "src": "46463:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30384,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30374,
                                  "src": "46467:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_b857163a2b7b8273ed53cefa410aa148f1833bdfc22da11e1e2fb89c6e625d02",
                                    "typeString": "literal_string \"log(bool,bool,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 30378,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "46401:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30379,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "46401:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30385,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "46401:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30377,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "46385:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30386,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "46385:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30387,
                        "nodeType": "ExpressionStatement",
                        "src": "46385:86:63"
                      }
                    ]
                  },
                  "id": 30389,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "46318:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30375,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30368,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "46327:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30389,
                        "src": "46322:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30367,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "46322:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30370,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "46336:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30389,
                        "src": "46331:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30369,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "46331:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30372,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "46354:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30389,
                        "src": "46340:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30371,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "46340:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30374,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "46363:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30389,
                        "src": "46358:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30373,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "46358:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "46321:45:63"
                  },
                  "returnParameters": {
                    "id": 30376,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "46381:0:63"
                  },
                  "scope": 32437,
                  "src": "46309:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30411,
                    "nodeType": "Block",
                    "src": "46553:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c737472696e672c6164647265737329",
                                  "id": 30403,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "46597:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f9ad2b893873fa31c02b102aa30743b2e44c102daa588ea9d1eb1f2baf23d202",
                                    "typeString": "literal_string \"log(bool,bool,string,address)\""
                                  },
                                  "value": "log(bool,bool,string,address)"
                                },
                                {
                                  "id": 30404,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30391,
                                  "src": "46630:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30405,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30393,
                                  "src": "46634:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30406,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30395,
                                  "src": "46638:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30407,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30397,
                                  "src": "46642:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_f9ad2b893873fa31c02b102aa30743b2e44c102daa588ea9d1eb1f2baf23d202",
                                    "typeString": "literal_string \"log(bool,bool,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 30401,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "46573:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30402,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "46573:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "46573:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30400,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "46557:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30409,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "46557:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30410,
                        "nodeType": "ExpressionStatement",
                        "src": "46557:89:63"
                      }
                    ]
                  },
                  "id": 30412,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "46487:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30398,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30391,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "46496:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30412,
                        "src": "46491:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30390,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "46491:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30393,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "46505:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30412,
                        "src": "46500:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30392,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "46500:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30395,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "46523:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30412,
                        "src": "46509:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30394,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "46509:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30397,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "46535:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30412,
                        "src": "46527:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30396,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "46527:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "46490:48:63"
                  },
                  "returnParameters": {
                    "id": 30399,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "46553:0:63"
                  },
                  "scope": 32437,
                  "src": "46478:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30434,
                    "nodeType": "Block",
                    "src": "46716:92:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c626f6f6c2c75696e7429",
                                  "id": 30426,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "46760:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c248834dff84ca4bcbda9cf249a0d5da3bd0a58b4562085082654d4d9851b501",
                                    "typeString": "literal_string \"log(bool,bool,bool,uint)\""
                                  },
                                  "value": "log(bool,bool,bool,uint)"
                                },
                                {
                                  "id": 30427,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30414,
                                  "src": "46788:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30428,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30416,
                                  "src": "46792:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30429,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30418,
                                  "src": "46796:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30430,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30420,
                                  "src": "46800:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c248834dff84ca4bcbda9cf249a0d5da3bd0a58b4562085082654d4d9851b501",
                                    "typeString": "literal_string \"log(bool,bool,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 30424,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "46736:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30425,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "46736:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30431,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "46736:67:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30423,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "46720:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "46720:84:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30433,
                        "nodeType": "ExpressionStatement",
                        "src": "46720:84:63"
                      }
                    ]
                  },
                  "id": 30435,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "46662:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30421,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30414,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "46671:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30435,
                        "src": "46666:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30413,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "46666:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30416,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "46680:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30435,
                        "src": "46675:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30415,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "46675:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30418,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "46689:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30435,
                        "src": "46684:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30417,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "46684:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30420,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "46698:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30435,
                        "src": "46693:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30419,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "46693:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "46665:36:63"
                  },
                  "returnParameters": {
                    "id": 30422,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "46716:0:63"
                  },
                  "scope": 32437,
                  "src": "46653:155:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30457,
                    "nodeType": "Block",
                    "src": "46883:94:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c626f6f6c2c737472696e6729",
                                  "id": 30449,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "46927:28:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_2ae408d4d030305a0361ad07c397f2b9653613b220d82459c7aeb9a6bab96c15",
                                    "typeString": "literal_string \"log(bool,bool,bool,string)\""
                                  },
                                  "value": "log(bool,bool,bool,string)"
                                },
                                {
                                  "id": 30450,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30437,
                                  "src": "46957:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30451,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30439,
                                  "src": "46961:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30452,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30441,
                                  "src": "46965:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30453,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30443,
                                  "src": "46969:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_2ae408d4d030305a0361ad07c397f2b9653613b220d82459c7aeb9a6bab96c15",
                                    "typeString": "literal_string \"log(bool,bool,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 30447,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "46903:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30448,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "46903:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30454,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "46903:69:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30446,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "46887:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "46887:86:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30456,
                        "nodeType": "ExpressionStatement",
                        "src": "46887:86:63"
                      }
                    ]
                  },
                  "id": 30458,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "46820:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30444,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30437,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "46829:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30458,
                        "src": "46824:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30436,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "46824:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30439,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "46838:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30458,
                        "src": "46833:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30438,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "46833:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30441,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "46847:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30458,
                        "src": "46842:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30440,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "46842:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30443,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "46865:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30458,
                        "src": "46851:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30442,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "46851:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "46823:45:63"
                  },
                  "returnParameters": {
                    "id": 30445,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "46883:0:63"
                  },
                  "scope": 32437,
                  "src": "46811:166:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30480,
                    "nodeType": "Block",
                    "src": "47043:92:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c626f6f6c2c626f6f6c29",
                                  "id": 30472,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "47087:26:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_3b2a5ce0ddf7b166153a4354c81efba12a817983a38c6bc3b58fd91ce816d99f",
                                    "typeString": "literal_string \"log(bool,bool,bool,bool)\""
                                  },
                                  "value": "log(bool,bool,bool,bool)"
                                },
                                {
                                  "id": 30473,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30460,
                                  "src": "47115:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30474,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30462,
                                  "src": "47119:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30475,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30464,
                                  "src": "47123:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30476,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30466,
                                  "src": "47127:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_3b2a5ce0ddf7b166153a4354c81efba12a817983a38c6bc3b58fd91ce816d99f",
                                    "typeString": "literal_string \"log(bool,bool,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 30470,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "47063:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30471,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "47063:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30477,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "47063:67:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30469,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "47047:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "47047:84:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30479,
                        "nodeType": "ExpressionStatement",
                        "src": "47047:84:63"
                      }
                    ]
                  },
                  "id": 30481,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "46989:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30467,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30460,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "46998:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30481,
                        "src": "46993:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30459,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "46993:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30462,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "47007:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30481,
                        "src": "47002:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30461,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "47002:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30464,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "47016:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30481,
                        "src": "47011:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30463,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "47011:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30466,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "47025:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30481,
                        "src": "47020:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30465,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "47020:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "46992:36:63"
                  },
                  "returnParameters": {
                    "id": 30468,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "47043:0:63"
                  },
                  "scope": 32437,
                  "src": "46980:155:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30503,
                    "nodeType": "Block",
                    "src": "47204:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c626f6f6c2c6164647265737329",
                                  "id": 30495,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "47248:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_8c329b1a1752dedfc6b781d23096b49b7f905d62405e6e3f0ab0344786ff69f4",
                                    "typeString": "literal_string \"log(bool,bool,bool,address)\""
                                  },
                                  "value": "log(bool,bool,bool,address)"
                                },
                                {
                                  "id": 30496,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30483,
                                  "src": "47279:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30497,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30485,
                                  "src": "47283:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30498,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30487,
                                  "src": "47287:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30499,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30489,
                                  "src": "47291:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_8c329b1a1752dedfc6b781d23096b49b7f905d62405e6e3f0ab0344786ff69f4",
                                    "typeString": "literal_string \"log(bool,bool,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 30493,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "47224:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30494,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "47224:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30500,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "47224:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30492,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "47208:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "47208:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30502,
                        "nodeType": "ExpressionStatement",
                        "src": "47208:87:63"
                      }
                    ]
                  },
                  "id": 30504,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "47147:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30490,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30483,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "47156:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30504,
                        "src": "47151:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30482,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "47151:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30485,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "47165:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30504,
                        "src": "47160:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30484,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "47160:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30487,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "47174:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30504,
                        "src": "47169:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30486,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "47169:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30489,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "47186:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30504,
                        "src": "47178:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30488,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "47178:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "47150:39:63"
                  },
                  "returnParameters": {
                    "id": 30491,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "47204:0:63"
                  },
                  "scope": 32437,
                  "src": "47138:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30526,
                    "nodeType": "Block",
                    "src": "47368:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c616464726573732c75696e7429",
                                  "id": 30518,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "47412:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_609386e78fd5b0eaf4b919077203f18b1606ddf72247d9e5eef9238918f7cf5e",
                                    "typeString": "literal_string \"log(bool,bool,address,uint)\""
                                  },
                                  "value": "log(bool,bool,address,uint)"
                                },
                                {
                                  "id": 30519,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30506,
                                  "src": "47443:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30520,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30508,
                                  "src": "47447:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30521,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30510,
                                  "src": "47451:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30522,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30512,
                                  "src": "47455:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_609386e78fd5b0eaf4b919077203f18b1606ddf72247d9e5eef9238918f7cf5e",
                                    "typeString": "literal_string \"log(bool,bool,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 30516,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "47388:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30517,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "47388:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30523,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "47388:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30515,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "47372:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "47372:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30525,
                        "nodeType": "ExpressionStatement",
                        "src": "47372:87:63"
                      }
                    ]
                  },
                  "id": 30527,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "47311:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30513,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30506,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "47320:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30527,
                        "src": "47315:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30505,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "47315:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30508,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "47329:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30527,
                        "src": "47324:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30507,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "47324:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30510,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "47341:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30527,
                        "src": "47333:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30509,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "47333:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30512,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "47350:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30527,
                        "src": "47345:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30511,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "47345:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "47314:39:63"
                  },
                  "returnParameters": {
                    "id": 30514,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "47368:0:63"
                  },
                  "scope": 32437,
                  "src": "47302:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30549,
                    "nodeType": "Block",
                    "src": "47541:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c616464726573732c737472696e6729",
                                  "id": 30541,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "47585:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a0a479635c05dee438b610769de0f667f2e93ee267e4cd4badf3dd44eb6271d2",
                                    "typeString": "literal_string \"log(bool,bool,address,string)\""
                                  },
                                  "value": "log(bool,bool,address,string)"
                                },
                                {
                                  "id": 30542,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30529,
                                  "src": "47618:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30543,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30531,
                                  "src": "47622:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30544,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30533,
                                  "src": "47626:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30545,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30535,
                                  "src": "47630:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a0a479635c05dee438b610769de0f667f2e93ee267e4cd4badf3dd44eb6271d2",
                                    "typeString": "literal_string \"log(bool,bool,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 30539,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "47561:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30540,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "47561:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30546,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "47561:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30538,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "47545:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "47545:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30548,
                        "nodeType": "ExpressionStatement",
                        "src": "47545:89:63"
                      }
                    ]
                  },
                  "id": 30550,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "47475:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30536,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30529,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "47484:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30550,
                        "src": "47479:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30528,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "47479:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30531,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "47493:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30550,
                        "src": "47488:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30530,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "47488:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30533,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "47505:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30550,
                        "src": "47497:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30532,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "47497:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30535,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "47523:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30550,
                        "src": "47509:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30534,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "47509:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "47478:48:63"
                  },
                  "returnParameters": {
                    "id": 30537,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "47541:0:63"
                  },
                  "scope": 32437,
                  "src": "47466:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30572,
                    "nodeType": "Block",
                    "src": "47707:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c616464726573732c626f6f6c29",
                                  "id": 30564,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "47751:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c0a302d8f11e8919127c20f396068f7014b94967efb042778db9b27b68ee1eaf",
                                    "typeString": "literal_string \"log(bool,bool,address,bool)\""
                                  },
                                  "value": "log(bool,bool,address,bool)"
                                },
                                {
                                  "id": 30565,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30552,
                                  "src": "47782:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30566,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30554,
                                  "src": "47786:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30567,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30556,
                                  "src": "47790:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30568,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30558,
                                  "src": "47794:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c0a302d8f11e8919127c20f396068f7014b94967efb042778db9b27b68ee1eaf",
                                    "typeString": "literal_string \"log(bool,bool,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 30562,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "47727:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30563,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "47727:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30569,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "47727:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30561,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "47711:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "47711:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30571,
                        "nodeType": "ExpressionStatement",
                        "src": "47711:87:63"
                      }
                    ]
                  },
                  "id": 30573,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "47650:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30559,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30552,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "47659:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30573,
                        "src": "47654:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30551,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "47654:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30554,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "47668:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30573,
                        "src": "47663:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30553,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "47663:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30556,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "47680:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30573,
                        "src": "47672:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30555,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "47672:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30558,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "47689:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30573,
                        "src": "47684:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30557,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "47684:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "47653:39:63"
                  },
                  "returnParameters": {
                    "id": 30560,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "47707:0:63"
                  },
                  "scope": 32437,
                  "src": "47641:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30595,
                    "nodeType": "Block",
                    "src": "47874:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c626f6f6c2c616464726573732c6164647265737329",
                                  "id": 30587,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "47918:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f4880ea4063b4f7e3c68468bb4a7a3f1502aa7497bce4fb0ba02ec0450f047f4",
                                    "typeString": "literal_string \"log(bool,bool,address,address)\""
                                  },
                                  "value": "log(bool,bool,address,address)"
                                },
                                {
                                  "id": 30588,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30575,
                                  "src": "47952:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30589,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30577,
                                  "src": "47956:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30590,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30579,
                                  "src": "47960:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30591,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30581,
                                  "src": "47964:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_f4880ea4063b4f7e3c68468bb4a7a3f1502aa7497bce4fb0ba02ec0450f047f4",
                                    "typeString": "literal_string \"log(bool,bool,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 30585,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "47894:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30586,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "47894:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30592,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "47894:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30584,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "47878:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30593,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "47878:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30594,
                        "nodeType": "ExpressionStatement",
                        "src": "47878:90:63"
                      }
                    ]
                  },
                  "id": 30596,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "47814:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30582,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30575,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "47823:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30596,
                        "src": "47818:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30574,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "47818:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30577,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "47832:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30596,
                        "src": "47827:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30576,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "47827:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30579,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "47844:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30596,
                        "src": "47836:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30578,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "47836:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30581,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "47856:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30596,
                        "src": "47848:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30580,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "47848:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "47817:42:63"
                  },
                  "returnParameters": {
                    "id": 30583,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "47874:0:63"
                  },
                  "scope": 32437,
                  "src": "47805:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30618,
                    "nodeType": "Block",
                    "src": "48041:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c75696e742c75696e7429",
                                  "id": 30610,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "48085:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9bfe72bcae17311bf78638487cb2635e8b5b6f81761042494681e890b65ae4df",
                                    "typeString": "literal_string \"log(bool,address,uint,uint)\""
                                  },
                                  "value": "log(bool,address,uint,uint)"
                                },
                                {
                                  "id": 30611,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30598,
                                  "src": "48116:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30612,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30600,
                                  "src": "48120:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30613,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30602,
                                  "src": "48124:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 30614,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30604,
                                  "src": "48128:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_9bfe72bcae17311bf78638487cb2635e8b5b6f81761042494681e890b65ae4df",
                                    "typeString": "literal_string \"log(bool,address,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 30608,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "48061:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30609,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "48061:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30615,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "48061:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30607,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "48045:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "48045:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30617,
                        "nodeType": "ExpressionStatement",
                        "src": "48045:87:63"
                      }
                    ]
                  },
                  "id": 30619,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "47984:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30605,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30598,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "47993:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30619,
                        "src": "47988:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30597,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "47988:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30600,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "48005:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30619,
                        "src": "47997:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30599,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "47997:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30602,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "48014:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30619,
                        "src": "48009:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30601,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "48009:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30604,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "48023:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30619,
                        "src": "48018:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30603,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "48018:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "47987:39:63"
                  },
                  "returnParameters": {
                    "id": 30606,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "48041:0:63"
                  },
                  "scope": 32437,
                  "src": "47975:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30641,
                    "nodeType": "Block",
                    "src": "48214:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c75696e742c737472696e6729",
                                  "id": 30633,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "48258:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a0685833a55270d98fa68e8c0a0f64fe3e03f6cdaeaebd8f87342de905392f45",
                                    "typeString": "literal_string \"log(bool,address,uint,string)\""
                                  },
                                  "value": "log(bool,address,uint,string)"
                                },
                                {
                                  "id": 30634,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30621,
                                  "src": "48291:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30635,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30623,
                                  "src": "48295:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30636,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30625,
                                  "src": "48299:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 30637,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30627,
                                  "src": "48303:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a0685833a55270d98fa68e8c0a0f64fe3e03f6cdaeaebd8f87342de905392f45",
                                    "typeString": "literal_string \"log(bool,address,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 30631,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "48234:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30632,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "48234:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30638,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "48234:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30630,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "48218:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "48218:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30640,
                        "nodeType": "ExpressionStatement",
                        "src": "48218:89:63"
                      }
                    ]
                  },
                  "id": 30642,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "48148:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30628,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30621,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "48157:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30642,
                        "src": "48152:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30620,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "48152:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30623,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "48169:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30642,
                        "src": "48161:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30622,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "48161:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30625,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "48178:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30642,
                        "src": "48173:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30624,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "48173:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30627,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "48196:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30642,
                        "src": "48182:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30626,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "48182:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "48151:48:63"
                  },
                  "returnParameters": {
                    "id": 30629,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "48214:0:63"
                  },
                  "scope": 32437,
                  "src": "48139:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30664,
                    "nodeType": "Block",
                    "src": "48380:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c75696e742c626f6f6c29",
                                  "id": 30656,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "48424:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_ee8d8672273fdba9089296874ea62335af7f94273edab558dd69c0c81ad5275f",
                                    "typeString": "literal_string \"log(bool,address,uint,bool)\""
                                  },
                                  "value": "log(bool,address,uint,bool)"
                                },
                                {
                                  "id": 30657,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30644,
                                  "src": "48455:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30658,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30646,
                                  "src": "48459:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30659,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30648,
                                  "src": "48463:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 30660,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30650,
                                  "src": "48467:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_ee8d8672273fdba9089296874ea62335af7f94273edab558dd69c0c81ad5275f",
                                    "typeString": "literal_string \"log(bool,address,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 30654,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "48400:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30655,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "48400:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30661,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "48400:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30653,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "48384:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30662,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "48384:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30663,
                        "nodeType": "ExpressionStatement",
                        "src": "48384:87:63"
                      }
                    ]
                  },
                  "id": 30665,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "48323:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30651,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30644,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "48332:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30665,
                        "src": "48327:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30643,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "48327:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30646,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "48344:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30665,
                        "src": "48336:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30645,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "48336:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30648,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "48353:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30665,
                        "src": "48348:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30647,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "48348:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30650,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "48362:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30665,
                        "src": "48357:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30649,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "48357:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "48326:39:63"
                  },
                  "returnParameters": {
                    "id": 30652,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "48380:0:63"
                  },
                  "scope": 32437,
                  "src": "48314:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30687,
                    "nodeType": "Block",
                    "src": "48547:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c75696e742c6164647265737329",
                                  "id": 30679,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "48591:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_68f158b5f9bd826807d19c20c2d71bd298a10503195154a299bf8d64baa18687",
                                    "typeString": "literal_string \"log(bool,address,uint,address)\""
                                  },
                                  "value": "log(bool,address,uint,address)"
                                },
                                {
                                  "id": 30680,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30667,
                                  "src": "48625:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30681,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30669,
                                  "src": "48629:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30682,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30671,
                                  "src": "48633:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 30683,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30673,
                                  "src": "48637:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_68f158b5f9bd826807d19c20c2d71bd298a10503195154a299bf8d64baa18687",
                                    "typeString": "literal_string \"log(bool,address,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 30677,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "48567:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30678,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "48567:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30684,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "48567:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30676,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "48551:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30685,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "48551:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30686,
                        "nodeType": "ExpressionStatement",
                        "src": "48551:90:63"
                      }
                    ]
                  },
                  "id": 30688,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "48487:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30674,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30667,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "48496:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30688,
                        "src": "48491:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30666,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "48491:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30669,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "48508:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30688,
                        "src": "48500:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30668,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "48500:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30671,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "48517:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30688,
                        "src": "48512:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30670,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "48512:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30673,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "48529:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30688,
                        "src": "48521:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30672,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "48521:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "48490:42:63"
                  },
                  "returnParameters": {
                    "id": 30675,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "48547:0:63"
                  },
                  "scope": 32437,
                  "src": "48478:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30710,
                    "nodeType": "Block",
                    "src": "48723:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c737472696e672c75696e7429",
                                  "id": 30702,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "48767:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_0b99fc2207222410afd35c7faf7feba54ff2367ba89f893584c27ce75693de6e",
                                    "typeString": "literal_string \"log(bool,address,string,uint)\""
                                  },
                                  "value": "log(bool,address,string,uint)"
                                },
                                {
                                  "id": 30703,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30690,
                                  "src": "48800:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30704,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30692,
                                  "src": "48804:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30705,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30694,
                                  "src": "48808:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30706,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30696,
                                  "src": "48812:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_0b99fc2207222410afd35c7faf7feba54ff2367ba89f893584c27ce75693de6e",
                                    "typeString": "literal_string \"log(bool,address,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 30700,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "48743:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30701,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "48743:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30707,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "48743:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30699,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "48727:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "48727:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30709,
                        "nodeType": "ExpressionStatement",
                        "src": "48727:89:63"
                      }
                    ]
                  },
                  "id": 30711,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "48657:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30697,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30690,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "48666:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30711,
                        "src": "48661:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30689,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "48661:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30692,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "48678:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30711,
                        "src": "48670:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30691,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "48670:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30694,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "48696:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30711,
                        "src": "48682:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30693,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "48682:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30696,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "48705:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30711,
                        "src": "48700:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30695,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "48700:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "48660:48:63"
                  },
                  "returnParameters": {
                    "id": 30698,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "48723:0:63"
                  },
                  "scope": 32437,
                  "src": "48648:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30733,
                    "nodeType": "Block",
                    "src": "48907:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c737472696e672c737472696e6729",
                                  "id": 30725,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "48951:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a73c1db639dbf1382c9113eacdf5b14a7ccd81fc001ac60393623936011bf49d",
                                    "typeString": "literal_string \"log(bool,address,string,string)\""
                                  },
                                  "value": "log(bool,address,string,string)"
                                },
                                {
                                  "id": 30726,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30713,
                                  "src": "48986:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30727,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30715,
                                  "src": "48990:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30728,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30717,
                                  "src": "48994:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30729,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30719,
                                  "src": "48998:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a73c1db639dbf1382c9113eacdf5b14a7ccd81fc001ac60393623936011bf49d",
                                    "typeString": "literal_string \"log(bool,address,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 30723,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "48927:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30724,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "48927:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30730,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "48927:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30722,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "48911:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30731,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "48911:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30732,
                        "nodeType": "ExpressionStatement",
                        "src": "48911:91:63"
                      }
                    ]
                  },
                  "id": 30734,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "48832:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30720,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30713,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "48841:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30734,
                        "src": "48836:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30712,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "48836:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30715,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "48853:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30734,
                        "src": "48845:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30714,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "48845:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30717,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "48871:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30734,
                        "src": "48857:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30716,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "48857:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30719,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "48889:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30734,
                        "src": "48875:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30718,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "48875:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "48835:57:63"
                  },
                  "returnParameters": {
                    "id": 30721,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "48907:0:63"
                  },
                  "scope": 32437,
                  "src": "48823:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30756,
                    "nodeType": "Block",
                    "src": "49084:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c737472696e672c626f6f6c29",
                                  "id": 30748,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "49128:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e2bfd60b4f6acdab0603dda631b69bf37ab7cbf71bc5953f9ed72c1f2a76f7dc",
                                    "typeString": "literal_string \"log(bool,address,string,bool)\""
                                  },
                                  "value": "log(bool,address,string,bool)"
                                },
                                {
                                  "id": 30749,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30736,
                                  "src": "49161:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30750,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30738,
                                  "src": "49165:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30751,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30740,
                                  "src": "49169:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30752,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30742,
                                  "src": "49173:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_e2bfd60b4f6acdab0603dda631b69bf37ab7cbf71bc5953f9ed72c1f2a76f7dc",
                                    "typeString": "literal_string \"log(bool,address,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 30746,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "49104:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30747,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "49104:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30753,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "49104:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30745,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "49088:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "49088:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30755,
                        "nodeType": "ExpressionStatement",
                        "src": "49088:89:63"
                      }
                    ]
                  },
                  "id": 30757,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "49018:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30743,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30736,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "49027:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30757,
                        "src": "49022:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30735,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "49022:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30738,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "49039:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30757,
                        "src": "49031:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30737,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "49031:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30740,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "49057:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30757,
                        "src": "49043:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30739,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "49043:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30742,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "49066:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30757,
                        "src": "49061:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30741,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "49061:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "49021:48:63"
                  },
                  "returnParameters": {
                    "id": 30744,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "49084:0:63"
                  },
                  "scope": 32437,
                  "src": "49009:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30779,
                    "nodeType": "Block",
                    "src": "49262:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c737472696e672c6164647265737329",
                                  "id": 30771,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "49306:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6f7c603e9035cbc7959bb3d44ec862ddc6711eecebd67d54ceb0010f42f85654",
                                    "typeString": "literal_string \"log(bool,address,string,address)\""
                                  },
                                  "value": "log(bool,address,string,address)"
                                },
                                {
                                  "id": 30772,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30759,
                                  "src": "49342:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30773,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30761,
                                  "src": "49346:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30774,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30763,
                                  "src": "49350:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 30775,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30765,
                                  "src": "49354:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_6f7c603e9035cbc7959bb3d44ec862ddc6711eecebd67d54ceb0010f42f85654",
                                    "typeString": "literal_string \"log(bool,address,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 30769,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "49282:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30770,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "49282:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30776,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "49282:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30768,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "49266:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "49266:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30778,
                        "nodeType": "ExpressionStatement",
                        "src": "49266:92:63"
                      }
                    ]
                  },
                  "id": 30780,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "49193:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30766,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30759,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "49202:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30780,
                        "src": "49197:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30758,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "49197:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30761,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "49214:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30780,
                        "src": "49206:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30760,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "49206:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30763,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "49232:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30780,
                        "src": "49218:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30762,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "49218:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30765,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "49244:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30780,
                        "src": "49236:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30764,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "49236:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "49196:51:63"
                  },
                  "returnParameters": {
                    "id": 30767,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "49262:0:63"
                  },
                  "scope": 32437,
                  "src": "49184:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30802,
                    "nodeType": "Block",
                    "src": "49431:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c626f6f6c2c75696e7429",
                                  "id": 30794,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "49475:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_4cb60fd1171fb665e1565124463601e5c451a362c8efbc6e1fcfbffbbb9850d9",
                                    "typeString": "literal_string \"log(bool,address,bool,uint)\""
                                  },
                                  "value": "log(bool,address,bool,uint)"
                                },
                                {
                                  "id": 30795,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30782,
                                  "src": "49506:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30796,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30784,
                                  "src": "49510:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30797,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30786,
                                  "src": "49514:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30798,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30788,
                                  "src": "49518:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_4cb60fd1171fb665e1565124463601e5c451a362c8efbc6e1fcfbffbbb9850d9",
                                    "typeString": "literal_string \"log(bool,address,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 30792,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "49451:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30793,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "49451:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30799,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "49451:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30791,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "49435:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "49435:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30801,
                        "nodeType": "ExpressionStatement",
                        "src": "49435:87:63"
                      }
                    ]
                  },
                  "id": 30803,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "49374:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30789,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30782,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "49383:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30803,
                        "src": "49378:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30781,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "49378:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30784,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "49395:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30803,
                        "src": "49387:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30783,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "49387:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30786,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "49404:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30803,
                        "src": "49399:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30785,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "49399:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30788,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "49413:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30803,
                        "src": "49408:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30787,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "49408:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "49377:39:63"
                  },
                  "returnParameters": {
                    "id": 30790,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "49431:0:63"
                  },
                  "scope": 32437,
                  "src": "49365:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30825,
                    "nodeType": "Block",
                    "src": "49604:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c626f6f6c2c737472696e6729",
                                  "id": 30817,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "49648:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_4a66cb34796065525d301a5b87b440b55f1936e34dd66e2f2039307bc4e3ea59",
                                    "typeString": "literal_string \"log(bool,address,bool,string)\""
                                  },
                                  "value": "log(bool,address,bool,string)"
                                },
                                {
                                  "id": 30818,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30805,
                                  "src": "49681:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30819,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30807,
                                  "src": "49685:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30820,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30809,
                                  "src": "49689:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30821,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30811,
                                  "src": "49693:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_4a66cb34796065525d301a5b87b440b55f1936e34dd66e2f2039307bc4e3ea59",
                                    "typeString": "literal_string \"log(bool,address,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 30815,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "49624:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30816,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "49624:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30822,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "49624:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30814,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "49608:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30823,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "49608:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30824,
                        "nodeType": "ExpressionStatement",
                        "src": "49608:89:63"
                      }
                    ]
                  },
                  "id": 30826,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "49538:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30812,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30805,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "49547:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30826,
                        "src": "49542:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30804,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "49542:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30807,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "49559:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30826,
                        "src": "49551:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30806,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "49551:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30809,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "49568:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30826,
                        "src": "49563:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30808,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "49563:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30811,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "49586:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30826,
                        "src": "49572:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30810,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "49572:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "49541:48:63"
                  },
                  "returnParameters": {
                    "id": 30813,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "49604:0:63"
                  },
                  "scope": 32437,
                  "src": "49529:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30848,
                    "nodeType": "Block",
                    "src": "49770:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c626f6f6c2c626f6f6c29",
                                  "id": 30840,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "49814:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6a9c478bc98300d44308882e2e0b5864f2536a2939cb77105f503738b5832577",
                                    "typeString": "literal_string \"log(bool,address,bool,bool)\""
                                  },
                                  "value": "log(bool,address,bool,bool)"
                                },
                                {
                                  "id": 30841,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30828,
                                  "src": "49845:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30842,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30830,
                                  "src": "49849:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30843,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30832,
                                  "src": "49853:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30844,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30834,
                                  "src": "49857:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_6a9c478bc98300d44308882e2e0b5864f2536a2939cb77105f503738b5832577",
                                    "typeString": "literal_string \"log(bool,address,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 30838,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "49790:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30839,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "49790:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30845,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "49790:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30837,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "49774:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "49774:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30847,
                        "nodeType": "ExpressionStatement",
                        "src": "49774:87:63"
                      }
                    ]
                  },
                  "id": 30849,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "49713:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30835,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30828,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "49722:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30849,
                        "src": "49717:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30827,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "49717:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30830,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "49734:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30849,
                        "src": "49726:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30829,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "49726:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30832,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "49743:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30849,
                        "src": "49738:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30831,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "49738:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30834,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "49752:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30849,
                        "src": "49747:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30833,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "49747:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "49716:39:63"
                  },
                  "returnParameters": {
                    "id": 30836,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "49770:0:63"
                  },
                  "scope": 32437,
                  "src": "49704:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30871,
                    "nodeType": "Block",
                    "src": "49937:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c626f6f6c2c6164647265737329",
                                  "id": 30863,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "49981:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_1c41a336759f1c2fe1d8b137296b2dfbdcfe7114fc53f203852c2835c09f8870",
                                    "typeString": "literal_string \"log(bool,address,bool,address)\""
                                  },
                                  "value": "log(bool,address,bool,address)"
                                },
                                {
                                  "id": 30864,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30851,
                                  "src": "50015:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30865,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30853,
                                  "src": "50019:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30866,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30855,
                                  "src": "50023:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30867,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30857,
                                  "src": "50027:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_1c41a336759f1c2fe1d8b137296b2dfbdcfe7114fc53f203852c2835c09f8870",
                                    "typeString": "literal_string \"log(bool,address,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 30861,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "49957:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30862,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "49957:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30868,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "49957:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30860,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "49941:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30869,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "49941:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30870,
                        "nodeType": "ExpressionStatement",
                        "src": "49941:90:63"
                      }
                    ]
                  },
                  "id": 30872,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "49877:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30858,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30851,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "49886:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30872,
                        "src": "49881:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30850,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "49881:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30853,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "49898:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30872,
                        "src": "49890:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30852,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "49890:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30855,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "49907:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30872,
                        "src": "49902:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30854,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "49902:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30857,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "49919:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30872,
                        "src": "49911:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30856,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "49911:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "49880:42:63"
                  },
                  "returnParameters": {
                    "id": 30859,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "49937:0:63"
                  },
                  "scope": 32437,
                  "src": "49868:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30894,
                    "nodeType": "Block",
                    "src": "50107:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c616464726573732c75696e7429",
                                  "id": 30886,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "50151:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5284bd6c2d02d32d79d43dcd0793be5ced63bf4e51bea38208974f6d8ca5def7",
                                    "typeString": "literal_string \"log(bool,address,address,uint)\""
                                  },
                                  "value": "log(bool,address,address,uint)"
                                },
                                {
                                  "id": 30887,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30874,
                                  "src": "50185:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30888,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30876,
                                  "src": "50189:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30889,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30878,
                                  "src": "50193:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30890,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30880,
                                  "src": "50197:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_5284bd6c2d02d32d79d43dcd0793be5ced63bf4e51bea38208974f6d8ca5def7",
                                    "typeString": "literal_string \"log(bool,address,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 30884,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "50127:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30885,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "50127:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30891,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "50127:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30883,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "50111:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "50111:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30893,
                        "nodeType": "ExpressionStatement",
                        "src": "50111:90:63"
                      }
                    ]
                  },
                  "id": 30895,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "50047:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30881,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30874,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "50056:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30895,
                        "src": "50051:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30873,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "50051:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30876,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "50068:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30895,
                        "src": "50060:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30875,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "50060:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30878,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "50080:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30895,
                        "src": "50072:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30877,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "50072:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30880,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "50089:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30895,
                        "src": "50084:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30879,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "50084:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "50050:42:63"
                  },
                  "returnParameters": {
                    "id": 30882,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "50107:0:63"
                  },
                  "scope": 32437,
                  "src": "50038:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30917,
                    "nodeType": "Block",
                    "src": "50286:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c616464726573732c737472696e6729",
                                  "id": 30909,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "50330:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_d812a167fb7ec8cf55a11f06ff411238f0a431de331592d8a735c8c8481f7432",
                                    "typeString": "literal_string \"log(bool,address,address,string)\""
                                  },
                                  "value": "log(bool,address,address,string)"
                                },
                                {
                                  "id": 30910,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30897,
                                  "src": "50366:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30911,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30899,
                                  "src": "50370:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30912,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30901,
                                  "src": "50374:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30913,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30903,
                                  "src": "50378:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_d812a167fb7ec8cf55a11f06ff411238f0a431de331592d8a735c8c8481f7432",
                                    "typeString": "literal_string \"log(bool,address,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 30907,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "50306:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30908,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "50306:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30914,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "50306:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30906,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "50290:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "50290:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30916,
                        "nodeType": "ExpressionStatement",
                        "src": "50290:92:63"
                      }
                    ]
                  },
                  "id": 30918,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "50217:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30904,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30897,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "50226:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30918,
                        "src": "50221:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30896,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "50221:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30899,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "50238:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30918,
                        "src": "50230:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30898,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "50230:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30901,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "50250:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30918,
                        "src": "50242:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30900,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "50242:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30903,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "50268:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30918,
                        "src": "50254:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30902,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "50254:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "50220:51:63"
                  },
                  "returnParameters": {
                    "id": 30905,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "50286:0:63"
                  },
                  "scope": 32437,
                  "src": "50208:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30940,
                    "nodeType": "Block",
                    "src": "50458:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c616464726573732c626f6f6c29",
                                  "id": 30932,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "50502:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_46600be071bbf2a7e3a3cb4fd0e6efe39e86453e4c4a27c400470867be7afd9e",
                                    "typeString": "literal_string \"log(bool,address,address,bool)\""
                                  },
                                  "value": "log(bool,address,address,bool)"
                                },
                                {
                                  "id": 30933,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30920,
                                  "src": "50536:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30934,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30922,
                                  "src": "50540:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30935,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30924,
                                  "src": "50544:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30936,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30926,
                                  "src": "50548:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_46600be071bbf2a7e3a3cb4fd0e6efe39e86453e4c4a27c400470867be7afd9e",
                                    "typeString": "literal_string \"log(bool,address,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 30930,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "50478:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30931,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "50478:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30937,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "50478:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30929,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "50462:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "50462:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30939,
                        "nodeType": "ExpressionStatement",
                        "src": "50462:90:63"
                      }
                    ]
                  },
                  "id": 30941,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "50398:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30927,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30920,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "50407:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30941,
                        "src": "50402:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30919,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "50402:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30922,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "50419:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30941,
                        "src": "50411:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30921,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "50411:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30924,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "50431:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30941,
                        "src": "50423:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30923,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "50423:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30926,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "50440:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30941,
                        "src": "50435:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30925,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "50435:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "50401:42:63"
                  },
                  "returnParameters": {
                    "id": 30928,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "50458:0:63"
                  },
                  "scope": 32437,
                  "src": "50389:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30963,
                    "nodeType": "Block",
                    "src": "50631:101:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728626f6f6c2c616464726573732c616464726573732c6164647265737329",
                                  "id": 30955,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "50675:35:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_1d14d00189540d88098b9fe614aa8c0efbe231c1a0fee05e7d705c0342377123",
                                    "typeString": "literal_string \"log(bool,address,address,address)\""
                                  },
                                  "value": "log(bool,address,address,address)"
                                },
                                {
                                  "id": 30956,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30943,
                                  "src": "50712:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 30957,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30945,
                                  "src": "50716:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30958,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30947,
                                  "src": "50720:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30959,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30949,
                                  "src": "50724:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_1d14d00189540d88098b9fe614aa8c0efbe231c1a0fee05e7d705c0342377123",
                                    "typeString": "literal_string \"log(bool,address,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 30953,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "50651:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30954,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "50651:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30960,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "50651:76:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30952,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "50635:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30961,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "50635:93:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30962,
                        "nodeType": "ExpressionStatement",
                        "src": "50635:93:63"
                      }
                    ]
                  },
                  "id": 30964,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "50568:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30950,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30943,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "50577:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30964,
                        "src": "50572:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 30942,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "50572:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30945,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "50589:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30964,
                        "src": "50581:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30944,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "50581:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30947,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "50601:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30964,
                        "src": "50593:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30946,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "50593:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30949,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "50613:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30964,
                        "src": "50605:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30948,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "50605:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "50571:45:63"
                  },
                  "returnParameters": {
                    "id": 30951,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "50631:0:63"
                  },
                  "scope": 32437,
                  "src": "50559:173:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 30986,
                    "nodeType": "Block",
                    "src": "50801:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c75696e742c75696e7429",
                                  "id": 30978,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "50845:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_3d0e9de46a80fe11d0044e9599dfddd0e8b842cabe189638f7090f19867918c1",
                                    "typeString": "literal_string \"log(address,uint,uint,uint)\""
                                  },
                                  "value": "log(address,uint,uint,uint)"
                                },
                                {
                                  "id": 30979,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30966,
                                  "src": "50876:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 30980,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30968,
                                  "src": "50880:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 30981,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30970,
                                  "src": "50884:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 30982,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30972,
                                  "src": "50888:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_3d0e9de46a80fe11d0044e9599dfddd0e8b842cabe189638f7090f19867918c1",
                                    "typeString": "literal_string \"log(address,uint,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 30976,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "50821:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 30977,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "50821:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 30983,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "50821:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30975,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "50805:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 30984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "50805:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 30985,
                        "nodeType": "ExpressionStatement",
                        "src": "50805:87:63"
                      }
                    ]
                  },
                  "id": 30987,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "50744:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30973,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30966,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "50756:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30987,
                        "src": "50748:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30965,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "50748:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30968,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "50765:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30987,
                        "src": "50760:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30967,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "50760:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30970,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "50774:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30987,
                        "src": "50769:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30969,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "50769:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30972,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "50783:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 30987,
                        "src": "50778:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30971,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "50778:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "50747:39:63"
                  },
                  "returnParameters": {
                    "id": 30974,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "50801:0:63"
                  },
                  "scope": 32437,
                  "src": "50735:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31009,
                    "nodeType": "Block",
                    "src": "50974:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c75696e742c737472696e6729",
                                  "id": 31001,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "51018:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_89340dab4d23e956541beb32775ccfee8376ba263886dd811a646420a3a403a3",
                                    "typeString": "literal_string \"log(address,uint,uint,string)\""
                                  },
                                  "value": "log(address,uint,uint,string)"
                                },
                                {
                                  "id": 31002,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30989,
                                  "src": "51051:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31003,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30991,
                                  "src": "51055:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31004,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30993,
                                  "src": "51059:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31005,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 30995,
                                  "src": "51063:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_89340dab4d23e956541beb32775ccfee8376ba263886dd811a646420a3a403a3",
                                    "typeString": "literal_string \"log(address,uint,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 30999,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "50994:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31000,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "50994:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31006,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "50994:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 30998,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "50978:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "50978:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31008,
                        "nodeType": "ExpressionStatement",
                        "src": "50978:89:63"
                      }
                    ]
                  },
                  "id": 31010,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "50908:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 30996,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 30989,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "50920:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31010,
                        "src": "50912:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 30988,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "50912:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30991,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "50929:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31010,
                        "src": "50924:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30990,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "50924:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30993,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "50938:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31010,
                        "src": "50933:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 30992,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "50933:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 30995,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "50956:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31010,
                        "src": "50942:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 30994,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "50942:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "50911:48:63"
                  },
                  "returnParameters": {
                    "id": 30997,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "50974:0:63"
                  },
                  "scope": 32437,
                  "src": "50899:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31032,
                    "nodeType": "Block",
                    "src": "51140:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c75696e742c626f6f6c29",
                                  "id": 31024,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "51184:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_ec4ba8a24543362f628480c68bc2d6749e97ab33d46530db336a528c77e48393",
                                    "typeString": "literal_string \"log(address,uint,uint,bool)\""
                                  },
                                  "value": "log(address,uint,uint,bool)"
                                },
                                {
                                  "id": 31025,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31012,
                                  "src": "51215:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31026,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31014,
                                  "src": "51219:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31027,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31016,
                                  "src": "51223:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31028,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31018,
                                  "src": "51227:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_ec4ba8a24543362f628480c68bc2d6749e97ab33d46530db336a528c77e48393",
                                    "typeString": "literal_string \"log(address,uint,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 31022,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "51160:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31023,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "51160:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31029,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "51160:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31021,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "51144:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "51144:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31031,
                        "nodeType": "ExpressionStatement",
                        "src": "51144:87:63"
                      }
                    ]
                  },
                  "id": 31033,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "51083:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31019,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31012,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "51095:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31033,
                        "src": "51087:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31011,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "51087:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31014,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "51104:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31033,
                        "src": "51099:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31013,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "51099:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31016,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "51113:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31033,
                        "src": "51108:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31015,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "51108:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31018,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "51122:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31033,
                        "src": "51117:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31017,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "51117:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "51086:39:63"
                  },
                  "returnParameters": {
                    "id": 31020,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "51140:0:63"
                  },
                  "scope": 32437,
                  "src": "51074:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31055,
                    "nodeType": "Block",
                    "src": "51307:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c75696e742c6164647265737329",
                                  "id": 31047,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "51351:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_1ef634347c2e4a2aa1a4e4e13d33bf0169f02bc4d10ff6168ca604cf3134d957",
                                    "typeString": "literal_string \"log(address,uint,uint,address)\""
                                  },
                                  "value": "log(address,uint,uint,address)"
                                },
                                {
                                  "id": 31048,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31035,
                                  "src": "51385:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31049,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31037,
                                  "src": "51389:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31050,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31039,
                                  "src": "51393:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31051,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31041,
                                  "src": "51397:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_1ef634347c2e4a2aa1a4e4e13d33bf0169f02bc4d10ff6168ca604cf3134d957",
                                    "typeString": "literal_string \"log(address,uint,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 31045,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "51327:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31046,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "51327:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "51327:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31044,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "51311:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31053,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "51311:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31054,
                        "nodeType": "ExpressionStatement",
                        "src": "51311:90:63"
                      }
                    ]
                  },
                  "id": 31056,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "51247:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31042,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31035,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "51259:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31056,
                        "src": "51251:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31034,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "51251:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31037,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "51268:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31056,
                        "src": "51263:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31036,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "51263:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31039,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "51277:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31056,
                        "src": "51272:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31038,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "51272:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31041,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "51289:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31056,
                        "src": "51281:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31040,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "51281:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "51250:42:63"
                  },
                  "returnParameters": {
                    "id": 31043,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "51307:0:63"
                  },
                  "scope": 32437,
                  "src": "51238:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31078,
                    "nodeType": "Block",
                    "src": "51483:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c737472696e672c75696e7429",
                                  "id": 31070,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "51527:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f512cf9b6f6b16313e82164dab4a017b25c36dde729112fd1b69de438557701b",
                                    "typeString": "literal_string \"log(address,uint,string,uint)\""
                                  },
                                  "value": "log(address,uint,string,uint)"
                                },
                                {
                                  "id": 31071,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31058,
                                  "src": "51560:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31072,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31060,
                                  "src": "51564:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31073,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31062,
                                  "src": "51568:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31074,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31064,
                                  "src": "51572:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_f512cf9b6f6b16313e82164dab4a017b25c36dde729112fd1b69de438557701b",
                                    "typeString": "literal_string \"log(address,uint,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 31068,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "51503:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31069,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "51503:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31075,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "51503:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31067,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "51487:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "51487:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31077,
                        "nodeType": "ExpressionStatement",
                        "src": "51487:89:63"
                      }
                    ]
                  },
                  "id": 31079,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "51417:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31065,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31058,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "51429:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31079,
                        "src": "51421:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31057,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "51421:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31060,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "51438:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31079,
                        "src": "51433:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31059,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "51433:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31062,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "51456:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31079,
                        "src": "51442:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31061,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "51442:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31064,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "51465:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31079,
                        "src": "51460:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31063,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "51460:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "51420:48:63"
                  },
                  "returnParameters": {
                    "id": 31066,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "51483:0:63"
                  },
                  "scope": 32437,
                  "src": "51408:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31101,
                    "nodeType": "Block",
                    "src": "51667:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c737472696e672c737472696e6729",
                                  "id": 31093,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "51711:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_7e56c693294848e354fd0e0f30db9c459984681d518306ec606cfd6f328a5ba0",
                                    "typeString": "literal_string \"log(address,uint,string,string)\""
                                  },
                                  "value": "log(address,uint,string,string)"
                                },
                                {
                                  "id": 31094,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31081,
                                  "src": "51746:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31095,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31083,
                                  "src": "51750:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31096,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31085,
                                  "src": "51754:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31097,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31087,
                                  "src": "51758:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_7e56c693294848e354fd0e0f30db9c459984681d518306ec606cfd6f328a5ba0",
                                    "typeString": "literal_string \"log(address,uint,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 31091,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "51687:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31092,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "51687:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31098,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "51687:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31090,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "51671:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "51671:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31100,
                        "nodeType": "ExpressionStatement",
                        "src": "51671:91:63"
                      }
                    ]
                  },
                  "id": 31102,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "51592:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31088,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31081,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "51604:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31102,
                        "src": "51596:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31080,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "51596:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31083,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "51613:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31102,
                        "src": "51608:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31082,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "51608:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31085,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "51631:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31102,
                        "src": "51617:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31084,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "51617:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31087,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "51649:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31102,
                        "src": "51635:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31086,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "51635:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "51595:57:63"
                  },
                  "returnParameters": {
                    "id": 31089,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "51667:0:63"
                  },
                  "scope": 32437,
                  "src": "51583:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31124,
                    "nodeType": "Block",
                    "src": "51844:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c737472696e672c626f6f6c29",
                                  "id": 31116,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "51888:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a4024f1195637e9b9bd0fa746905cf1693b1e0cd3e1c717a1cbc5279763b256a",
                                    "typeString": "literal_string \"log(address,uint,string,bool)\""
                                  },
                                  "value": "log(address,uint,string,bool)"
                                },
                                {
                                  "id": 31117,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31104,
                                  "src": "51921:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31118,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31106,
                                  "src": "51925:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31119,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31108,
                                  "src": "51929:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31120,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31110,
                                  "src": "51933:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a4024f1195637e9b9bd0fa746905cf1693b1e0cd3e1c717a1cbc5279763b256a",
                                    "typeString": "literal_string \"log(address,uint,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 31114,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "51864:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31115,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "51864:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31121,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "51864:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31113,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "51848:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "51848:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31123,
                        "nodeType": "ExpressionStatement",
                        "src": "51848:89:63"
                      }
                    ]
                  },
                  "id": 31125,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "51778:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31111,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31104,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "51790:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31125,
                        "src": "51782:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31103,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "51782:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31106,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "51799:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31125,
                        "src": "51794:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31105,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "51794:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31108,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "51817:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31125,
                        "src": "51803:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31107,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "51803:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31110,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "51826:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31125,
                        "src": "51821:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31109,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "51821:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "51781:48:63"
                  },
                  "returnParameters": {
                    "id": 31112,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "51844:0:63"
                  },
                  "scope": 32437,
                  "src": "51769:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31147,
                    "nodeType": "Block",
                    "src": "52022:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c737472696e672c6164647265737329",
                                  "id": 31139,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "52066:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_dc792604099307de53721f0c554f3059214ac3d8d1f6cd01cd16cf188835e809",
                                    "typeString": "literal_string \"log(address,uint,string,address)\""
                                  },
                                  "value": "log(address,uint,string,address)"
                                },
                                {
                                  "id": 31140,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31127,
                                  "src": "52102:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31141,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31129,
                                  "src": "52106:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31142,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31131,
                                  "src": "52110:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31143,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31133,
                                  "src": "52114:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_dc792604099307de53721f0c554f3059214ac3d8d1f6cd01cd16cf188835e809",
                                    "typeString": "literal_string \"log(address,uint,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 31137,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "52042:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31138,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "52042:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "52042:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31136,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "52026:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "52026:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31146,
                        "nodeType": "ExpressionStatement",
                        "src": "52026:92:63"
                      }
                    ]
                  },
                  "id": 31148,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "51953:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31134,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31127,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "51965:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31148,
                        "src": "51957:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31126,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "51957:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31129,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "51974:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31148,
                        "src": "51969:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31128,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "51969:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31131,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "51992:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31148,
                        "src": "51978:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31130,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "51978:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31133,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "52004:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31148,
                        "src": "51996:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31132,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "51996:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "51956:51:63"
                  },
                  "returnParameters": {
                    "id": 31135,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "52022:0:63"
                  },
                  "scope": 32437,
                  "src": "51944:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31170,
                    "nodeType": "Block",
                    "src": "52191:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c626f6f6c2c75696e7429",
                                  "id": 31162,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "52235:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_698f43923a9354f67c861ae1c111970990b11c7f948743e5f44d6ea901e7f1a2",
                                    "typeString": "literal_string \"log(address,uint,bool,uint)\""
                                  },
                                  "value": "log(address,uint,bool,uint)"
                                },
                                {
                                  "id": 31163,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31150,
                                  "src": "52266:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31164,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31152,
                                  "src": "52270:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31165,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31154,
                                  "src": "52274:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31166,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31156,
                                  "src": "52278:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_698f43923a9354f67c861ae1c111970990b11c7f948743e5f44d6ea901e7f1a2",
                                    "typeString": "literal_string \"log(address,uint,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 31160,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "52211:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31161,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "52211:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31167,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "52211:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31159,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "52195:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "52195:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31169,
                        "nodeType": "ExpressionStatement",
                        "src": "52195:87:63"
                      }
                    ]
                  },
                  "id": 31171,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "52134:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31157,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31150,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "52146:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31171,
                        "src": "52138:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31149,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "52138:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31152,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "52155:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31171,
                        "src": "52150:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31151,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "52150:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31154,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "52164:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31171,
                        "src": "52159:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31153,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "52159:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31156,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "52173:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31171,
                        "src": "52168:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31155,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "52168:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "52137:39:63"
                  },
                  "returnParameters": {
                    "id": 31158,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "52191:0:63"
                  },
                  "scope": 32437,
                  "src": "52125:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31193,
                    "nodeType": "Block",
                    "src": "52364:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c626f6f6c2c737472696e6729",
                                  "id": 31185,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "52408:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_8e8e4e75a8ccb3f0e11ad74335eebf7a17a78463e99c3b077ff34193a8918f3f",
                                    "typeString": "literal_string \"log(address,uint,bool,string)\""
                                  },
                                  "value": "log(address,uint,bool,string)"
                                },
                                {
                                  "id": 31186,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31173,
                                  "src": "52441:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31187,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31175,
                                  "src": "52445:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31188,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31177,
                                  "src": "52449:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31189,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31179,
                                  "src": "52453:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_8e8e4e75a8ccb3f0e11ad74335eebf7a17a78463e99c3b077ff34193a8918f3f",
                                    "typeString": "literal_string \"log(address,uint,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 31183,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "52384:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31184,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "52384:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31190,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "52384:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31182,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "52368:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "52368:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31192,
                        "nodeType": "ExpressionStatement",
                        "src": "52368:89:63"
                      }
                    ]
                  },
                  "id": 31194,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "52298:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31180,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31173,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "52310:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31194,
                        "src": "52302:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31172,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "52302:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31175,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "52319:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31194,
                        "src": "52314:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31174,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "52314:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31177,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "52328:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31194,
                        "src": "52323:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31176,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "52323:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31179,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "52346:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31194,
                        "src": "52332:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31178,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "52332:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "52301:48:63"
                  },
                  "returnParameters": {
                    "id": 31181,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "52364:0:63"
                  },
                  "scope": 32437,
                  "src": "52289:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31216,
                    "nodeType": "Block",
                    "src": "52530:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c626f6f6c2c626f6f6c29",
                                  "id": 31208,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "52574:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_fea1d55aec42c422504acea77de45574d2fa3abd9dc9c6288741e19c3bd9849b",
                                    "typeString": "literal_string \"log(address,uint,bool,bool)\""
                                  },
                                  "value": "log(address,uint,bool,bool)"
                                },
                                {
                                  "id": 31209,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31196,
                                  "src": "52605:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31210,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31198,
                                  "src": "52609:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31211,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31200,
                                  "src": "52613:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31212,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31202,
                                  "src": "52617:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_fea1d55aec42c422504acea77de45574d2fa3abd9dc9c6288741e19c3bd9849b",
                                    "typeString": "literal_string \"log(address,uint,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 31206,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "52550:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31207,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "52550:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "52550:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31205,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "52534:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "52534:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31215,
                        "nodeType": "ExpressionStatement",
                        "src": "52534:87:63"
                      }
                    ]
                  },
                  "id": 31217,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "52473:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31203,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31196,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "52485:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31217,
                        "src": "52477:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31195,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "52477:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31198,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "52494:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31217,
                        "src": "52489:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31197,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "52489:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31200,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "52503:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31217,
                        "src": "52498:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31199,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "52498:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31202,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "52512:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31217,
                        "src": "52507:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31201,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "52507:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "52476:39:63"
                  },
                  "returnParameters": {
                    "id": 31204,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "52530:0:63"
                  },
                  "scope": 32437,
                  "src": "52464:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31239,
                    "nodeType": "Block",
                    "src": "52697:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c626f6f6c2c6164647265737329",
                                  "id": 31231,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "52741:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_23e5497254e625e6c33a3fa3eb47ff18f6bac3345da52f847bd5571820febf2d",
                                    "typeString": "literal_string \"log(address,uint,bool,address)\""
                                  },
                                  "value": "log(address,uint,bool,address)"
                                },
                                {
                                  "id": 31232,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31219,
                                  "src": "52775:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31233,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31221,
                                  "src": "52779:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31234,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31223,
                                  "src": "52783:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31235,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31225,
                                  "src": "52787:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_23e5497254e625e6c33a3fa3eb47ff18f6bac3345da52f847bd5571820febf2d",
                                    "typeString": "literal_string \"log(address,uint,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 31229,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "52717:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31230,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "52717:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31236,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "52717:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31228,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "52701:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "52701:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31238,
                        "nodeType": "ExpressionStatement",
                        "src": "52701:90:63"
                      }
                    ]
                  },
                  "id": 31240,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "52637:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31226,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31219,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "52649:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31240,
                        "src": "52641:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31218,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "52641:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31221,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "52658:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31240,
                        "src": "52653:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31220,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "52653:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31223,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "52667:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31240,
                        "src": "52662:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31222,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "52662:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31225,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "52679:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31240,
                        "src": "52671:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31224,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "52671:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "52640:42:63"
                  },
                  "returnParameters": {
                    "id": 31227,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "52697:0:63"
                  },
                  "scope": 32437,
                  "src": "52628:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31262,
                    "nodeType": "Block",
                    "src": "52867:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c616464726573732c75696e7429",
                                  "id": 31254,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "52911:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a5d98768f8145ad77f2cf1b1f44790c3edb28c68feadee43b01883b75311ac0e",
                                    "typeString": "literal_string \"log(address,uint,address,uint)\""
                                  },
                                  "value": "log(address,uint,address,uint)"
                                },
                                {
                                  "id": 31255,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31242,
                                  "src": "52945:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31256,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31244,
                                  "src": "52949:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31257,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31246,
                                  "src": "52953:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31258,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31248,
                                  "src": "52957:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a5d98768f8145ad77f2cf1b1f44790c3edb28c68feadee43b01883b75311ac0e",
                                    "typeString": "literal_string \"log(address,uint,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 31252,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "52887:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31253,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "52887:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "52887:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31251,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "52871:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "52871:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31261,
                        "nodeType": "ExpressionStatement",
                        "src": "52871:90:63"
                      }
                    ]
                  },
                  "id": 31263,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "52807:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31249,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31242,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "52819:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31263,
                        "src": "52811:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31241,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "52811:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31244,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "52828:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31263,
                        "src": "52823:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31243,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "52823:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31246,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "52840:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31263,
                        "src": "52832:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31245,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "52832:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31248,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "52849:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31263,
                        "src": "52844:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31247,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "52844:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "52810:42:63"
                  },
                  "returnParameters": {
                    "id": 31250,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "52867:0:63"
                  },
                  "scope": 32437,
                  "src": "52798:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31285,
                    "nodeType": "Block",
                    "src": "53046:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c616464726573732c737472696e6729",
                                  "id": 31277,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "53090:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5d71f39ef468709ab1c82c125aa1311ff96f65f56794c27c7babe5651379e4b4",
                                    "typeString": "literal_string \"log(address,uint,address,string)\""
                                  },
                                  "value": "log(address,uint,address,string)"
                                },
                                {
                                  "id": 31278,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31265,
                                  "src": "53126:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31279,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31267,
                                  "src": "53130:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31280,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31269,
                                  "src": "53134:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31281,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31271,
                                  "src": "53138:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_5d71f39ef468709ab1c82c125aa1311ff96f65f56794c27c7babe5651379e4b4",
                                    "typeString": "literal_string \"log(address,uint,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 31275,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "53066:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31276,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "53066:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31282,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "53066:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31274,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "53050:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "53050:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31284,
                        "nodeType": "ExpressionStatement",
                        "src": "53050:92:63"
                      }
                    ]
                  },
                  "id": 31286,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "52977:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31272,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31265,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "52989:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31286,
                        "src": "52981:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31264,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "52981:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31267,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "52998:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31286,
                        "src": "52993:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31266,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "52993:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31269,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "53010:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31286,
                        "src": "53002:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31268,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "53002:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31271,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "53028:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31286,
                        "src": "53014:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31270,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "53014:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "52980:51:63"
                  },
                  "returnParameters": {
                    "id": 31273,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "53046:0:63"
                  },
                  "scope": 32437,
                  "src": "52968:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31308,
                    "nodeType": "Block",
                    "src": "53218:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c616464726573732c626f6f6c29",
                                  "id": 31300,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "53262:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f181a1e98aefbb6e5d63ca72f24da9aa3686f47d72314c12e70fa7843b309ee6",
                                    "typeString": "literal_string \"log(address,uint,address,bool)\""
                                  },
                                  "value": "log(address,uint,address,bool)"
                                },
                                {
                                  "id": 31301,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31288,
                                  "src": "53296:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31302,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31290,
                                  "src": "53300:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31303,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31292,
                                  "src": "53304:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31304,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31294,
                                  "src": "53308:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_f181a1e98aefbb6e5d63ca72f24da9aa3686f47d72314c12e70fa7843b309ee6",
                                    "typeString": "literal_string \"log(address,uint,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 31298,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "53238:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31299,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "53238:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31305,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "53238:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31297,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "53222:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "53222:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31307,
                        "nodeType": "ExpressionStatement",
                        "src": "53222:90:63"
                      }
                    ]
                  },
                  "id": 31309,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "53158:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31295,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31288,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "53170:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31309,
                        "src": "53162:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31287,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "53162:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31290,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "53179:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31309,
                        "src": "53174:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31289,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "53174:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31292,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "53191:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31309,
                        "src": "53183:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31291,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "53183:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31294,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "53200:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31309,
                        "src": "53195:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31293,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "53195:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "53161:42:63"
                  },
                  "returnParameters": {
                    "id": 31296,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "53218:0:63"
                  },
                  "scope": 32437,
                  "src": "53149:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31331,
                    "nodeType": "Block",
                    "src": "53391:101:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c75696e742c616464726573732c6164647265737329",
                                  "id": 31323,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "53435:35:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_ec24846f1ed52bfa5dc64139c1bf8b03f991fdd5156eccb50dfe44ca5a2ca40e",
                                    "typeString": "literal_string \"log(address,uint,address,address)\""
                                  },
                                  "value": "log(address,uint,address,address)"
                                },
                                {
                                  "id": 31324,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31311,
                                  "src": "53472:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31325,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31313,
                                  "src": "53476:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31326,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31315,
                                  "src": "53480:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31327,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31317,
                                  "src": "53484:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_ec24846f1ed52bfa5dc64139c1bf8b03f991fdd5156eccb50dfe44ca5a2ca40e",
                                    "typeString": "literal_string \"log(address,uint,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 31321,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "53411:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31322,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "53411:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31328,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "53411:76:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31320,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "53395:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "53395:93:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31330,
                        "nodeType": "ExpressionStatement",
                        "src": "53395:93:63"
                      }
                    ]
                  },
                  "id": 31332,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "53328:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31318,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31311,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "53340:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31332,
                        "src": "53332:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31310,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "53332:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31313,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "53349:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31332,
                        "src": "53344:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31312,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "53344:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31315,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "53361:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31332,
                        "src": "53353:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31314,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "53353:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31317,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "53373:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31332,
                        "src": "53365:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31316,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "53365:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "53331:45:63"
                  },
                  "returnParameters": {
                    "id": 31319,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "53391:0:63"
                  },
                  "scope": 32437,
                  "src": "53319:173:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31354,
                    "nodeType": "Block",
                    "src": "53570:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c75696e742c75696e7429",
                                  "id": 31346,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "53614:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a4c92a60ad8c7136a44d442238a838fba251b421248205a77f1a522d55c988af",
                                    "typeString": "literal_string \"log(address,string,uint,uint)\""
                                  },
                                  "value": "log(address,string,uint,uint)"
                                },
                                {
                                  "id": 31347,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31334,
                                  "src": "53647:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31348,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31336,
                                  "src": "53651:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31349,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31338,
                                  "src": "53655:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31350,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31340,
                                  "src": "53659:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a4c92a60ad8c7136a44d442238a838fba251b421248205a77f1a522d55c988af",
                                    "typeString": "literal_string \"log(address,string,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 31344,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "53590:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31345,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "53590:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31351,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "53590:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31343,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "53574:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "53574:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31353,
                        "nodeType": "ExpressionStatement",
                        "src": "53574:89:63"
                      }
                    ]
                  },
                  "id": 31355,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "53504:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31341,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31334,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "53516:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31355,
                        "src": "53508:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31333,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "53508:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31336,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "53534:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31355,
                        "src": "53520:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31335,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "53520:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31338,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "53543:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31355,
                        "src": "53538:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31337,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "53538:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31340,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "53552:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31355,
                        "src": "53547:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31339,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "53547:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "53507:48:63"
                  },
                  "returnParameters": {
                    "id": 31342,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "53570:0:63"
                  },
                  "scope": 32437,
                  "src": "53495:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31377,
                    "nodeType": "Block",
                    "src": "53754:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c75696e742c737472696e6729",
                                  "id": 31369,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "53798:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5d1365c94e45374e792b786edc547d0277c401db24a4303b5dd1e8a93df0829e",
                                    "typeString": "literal_string \"log(address,string,uint,string)\""
                                  },
                                  "value": "log(address,string,uint,string)"
                                },
                                {
                                  "id": 31370,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31357,
                                  "src": "53833:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31371,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31359,
                                  "src": "53837:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31372,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "53841:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31373,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31363,
                                  "src": "53845:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_5d1365c94e45374e792b786edc547d0277c401db24a4303b5dd1e8a93df0829e",
                                    "typeString": "literal_string \"log(address,string,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 31367,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "53774:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31368,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "53774:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31374,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "53774:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31366,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "53758:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "53758:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31376,
                        "nodeType": "ExpressionStatement",
                        "src": "53758:91:63"
                      }
                    ]
                  },
                  "id": 31378,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "53679:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31364,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31357,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "53691:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31378,
                        "src": "53683:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31356,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "53683:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31359,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "53709:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31378,
                        "src": "53695:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31358,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "53695:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31361,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "53718:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31378,
                        "src": "53713:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31360,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "53713:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31363,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "53736:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31378,
                        "src": "53722:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31362,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "53722:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "53682:57:63"
                  },
                  "returnParameters": {
                    "id": 31365,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "53754:0:63"
                  },
                  "scope": 32437,
                  "src": "53670:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31400,
                    "nodeType": "Block",
                    "src": "53931:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c75696e742c626f6f6c29",
                                  "id": 31392,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "53975:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_7e250d5bf3975165268961c2b6dbe143f053bed03d903630f547f1fbab28b895",
                                    "typeString": "literal_string \"log(address,string,uint,bool)\""
                                  },
                                  "value": "log(address,string,uint,bool)"
                                },
                                {
                                  "id": 31393,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31380,
                                  "src": "54008:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31394,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31382,
                                  "src": "54012:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31395,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31384,
                                  "src": "54016:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31396,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31386,
                                  "src": "54020:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_7e250d5bf3975165268961c2b6dbe143f053bed03d903630f547f1fbab28b895",
                                    "typeString": "literal_string \"log(address,string,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 31390,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "53951:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31391,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "53951:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31397,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "53951:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31389,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "53935:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "53935:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31399,
                        "nodeType": "ExpressionStatement",
                        "src": "53935:89:63"
                      }
                    ]
                  },
                  "id": 31401,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "53865:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31387,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31380,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "53877:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31401,
                        "src": "53869:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31379,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "53869:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31382,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "53895:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31401,
                        "src": "53881:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31381,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "53881:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31384,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "53904:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31401,
                        "src": "53899:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31383,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "53899:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31386,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "53913:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31401,
                        "src": "53908:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31385,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "53908:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "53868:48:63"
                  },
                  "returnParameters": {
                    "id": 31388,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "53931:0:63"
                  },
                  "scope": 32437,
                  "src": "53856:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31423,
                    "nodeType": "Block",
                    "src": "54109:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c75696e742c6164647265737329",
                                  "id": 31415,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "54153:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_dfd7d80b4150ea6b0b2772758d6e66d8c7f141bfd7de11119a8fee2a703664e4",
                                    "typeString": "literal_string \"log(address,string,uint,address)\""
                                  },
                                  "value": "log(address,string,uint,address)"
                                },
                                {
                                  "id": 31416,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31403,
                                  "src": "54189:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31417,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31405,
                                  "src": "54193:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31418,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31407,
                                  "src": "54197:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31419,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31409,
                                  "src": "54201:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_dfd7d80b4150ea6b0b2772758d6e66d8c7f141bfd7de11119a8fee2a703664e4",
                                    "typeString": "literal_string \"log(address,string,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 31413,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "54129:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31414,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "54129:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31420,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "54129:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31412,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "54113:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31421,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "54113:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31422,
                        "nodeType": "ExpressionStatement",
                        "src": "54113:92:63"
                      }
                    ]
                  },
                  "id": 31424,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "54040:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31410,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31403,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "54052:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31424,
                        "src": "54044:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31402,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "54044:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31405,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "54070:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31424,
                        "src": "54056:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31404,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "54056:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31407,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "54079:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31424,
                        "src": "54074:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31406,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "54074:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31409,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "54091:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31424,
                        "src": "54083:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31408,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "54083:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "54043:51:63"
                  },
                  "returnParameters": {
                    "id": 31411,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "54109:0:63"
                  },
                  "scope": 32437,
                  "src": "54031:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31446,
                    "nodeType": "Block",
                    "src": "54296:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c737472696e672c75696e7429",
                                  "id": 31438,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "54340:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a14fd039ae37435afa9d1674d6d48b37ffbd5da4cd9166a3f673f5f0db01a4c5",
                                    "typeString": "literal_string \"log(address,string,string,uint)\""
                                  },
                                  "value": "log(address,string,string,uint)"
                                },
                                {
                                  "id": 31439,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31426,
                                  "src": "54375:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31440,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31428,
                                  "src": "54379:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31441,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31430,
                                  "src": "54383:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31442,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31432,
                                  "src": "54387:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a14fd039ae37435afa9d1674d6d48b37ffbd5da4cd9166a3f673f5f0db01a4c5",
                                    "typeString": "literal_string \"log(address,string,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 31436,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "54316:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31437,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "54316:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31443,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "54316:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31435,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "54300:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "54300:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31445,
                        "nodeType": "ExpressionStatement",
                        "src": "54300:91:63"
                      }
                    ]
                  },
                  "id": 31447,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "54221:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31433,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31426,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "54233:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31447,
                        "src": "54225:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31425,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "54225:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31428,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "54251:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31447,
                        "src": "54237:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31427,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "54237:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31430,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "54269:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31447,
                        "src": "54255:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31429,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "54255:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31432,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "54278:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31447,
                        "src": "54273:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31431,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "54273:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "54224:57:63"
                  },
                  "returnParameters": {
                    "id": 31434,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "54296:0:63"
                  },
                  "scope": 32437,
                  "src": "54212:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31469,
                    "nodeType": "Block",
                    "src": "54491:101:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c737472696e672c737472696e6729",
                                  "id": 31461,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "54535:35:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5d02c50b371ad9a1f5c638dc99b5e9b545011f148f0be5233c530a4b2a12665c",
                                    "typeString": "literal_string \"log(address,string,string,string)\""
                                  },
                                  "value": "log(address,string,string,string)"
                                },
                                {
                                  "id": 31462,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31449,
                                  "src": "54572:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31463,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31451,
                                  "src": "54576:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31464,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31453,
                                  "src": "54580:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31465,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31455,
                                  "src": "54584:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_5d02c50b371ad9a1f5c638dc99b5e9b545011f148f0be5233c530a4b2a12665c",
                                    "typeString": "literal_string \"log(address,string,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 31459,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "54511:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31460,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "54511:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31466,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "54511:76:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31458,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "54495:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "54495:93:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31468,
                        "nodeType": "ExpressionStatement",
                        "src": "54495:93:63"
                      }
                    ]
                  },
                  "id": 31470,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "54407:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31456,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31449,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "54419:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31470,
                        "src": "54411:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31448,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "54411:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31451,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "54437:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31470,
                        "src": "54423:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31450,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "54423:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31453,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "54455:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31470,
                        "src": "54441:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31452,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "54441:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31455,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "54473:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31470,
                        "src": "54459:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31454,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "54459:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "54410:66:63"
                  },
                  "returnParameters": {
                    "id": 31457,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "54491:0:63"
                  },
                  "scope": 32437,
                  "src": "54398:194:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31492,
                    "nodeType": "Block",
                    "src": "54679:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c737472696e672c626f6f6c29",
                                  "id": 31484,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "54723:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_35a5071fa9f4610e50772083182f21e949e7a02301a3936e315dd1c4fc39a9ed",
                                    "typeString": "literal_string \"log(address,string,string,bool)\""
                                  },
                                  "value": "log(address,string,string,bool)"
                                },
                                {
                                  "id": 31485,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31472,
                                  "src": "54758:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31486,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31474,
                                  "src": "54762:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31487,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31476,
                                  "src": "54766:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31488,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31478,
                                  "src": "54770:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_35a5071fa9f4610e50772083182f21e949e7a02301a3936e315dd1c4fc39a9ed",
                                    "typeString": "literal_string \"log(address,string,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 31482,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "54699:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31483,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "54699:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31489,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "54699:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31481,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "54683:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "54683:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31491,
                        "nodeType": "ExpressionStatement",
                        "src": "54683:91:63"
                      }
                    ]
                  },
                  "id": 31493,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "54604:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31479,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31472,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "54616:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31493,
                        "src": "54608:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31471,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "54608:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31474,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "54634:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31493,
                        "src": "54620:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31473,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "54620:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31476,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "54652:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31493,
                        "src": "54638:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31475,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "54638:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31478,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "54661:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31493,
                        "src": "54656:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31477,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "54656:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "54607:57:63"
                  },
                  "returnParameters": {
                    "id": 31480,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "54679:0:63"
                  },
                  "scope": 32437,
                  "src": "54595:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31515,
                    "nodeType": "Block",
                    "src": "54868:102:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c737472696e672c6164647265737329",
                                  "id": 31507,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "54912:36:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a04e2f87a739673cc9223810c24b00b35c6b2c9f3ef123cc82866752e1fa816f",
                                    "typeString": "literal_string \"log(address,string,string,address)\""
                                  },
                                  "value": "log(address,string,string,address)"
                                },
                                {
                                  "id": 31508,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31495,
                                  "src": "54950:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31509,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31497,
                                  "src": "54954:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31510,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31499,
                                  "src": "54958:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31511,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31501,
                                  "src": "54962:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a04e2f87a739673cc9223810c24b00b35c6b2c9f3ef123cc82866752e1fa816f",
                                    "typeString": "literal_string \"log(address,string,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 31505,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "54888:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31506,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "54888:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31512,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "54888:77:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31504,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "54872:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "54872:94:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31514,
                        "nodeType": "ExpressionStatement",
                        "src": "54872:94:63"
                      }
                    ]
                  },
                  "id": 31516,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "54790:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31502,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31495,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "54802:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31516,
                        "src": "54794:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31494,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "54794:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31497,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "54820:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31516,
                        "src": "54806:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31496,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "54806:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31499,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "54838:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31516,
                        "src": "54824:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31498,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "54824:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31501,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "54850:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31516,
                        "src": "54842:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31500,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "54842:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "54793:60:63"
                  },
                  "returnParameters": {
                    "id": 31503,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "54868:0:63"
                  },
                  "scope": 32437,
                  "src": "54781:189:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31538,
                    "nodeType": "Block",
                    "src": "55048:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c626f6f6c2c75696e7429",
                                  "id": 31530,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "55092:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_e720521cc58e36659b0c45689a38054bd7300ff30d5ec0cfec7bae3dc2e9689a",
                                    "typeString": "literal_string \"log(address,string,bool,uint)\""
                                  },
                                  "value": "log(address,string,bool,uint)"
                                },
                                {
                                  "id": 31531,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31518,
                                  "src": "55125:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31532,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31520,
                                  "src": "55129:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31533,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31522,
                                  "src": "55133:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31534,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31524,
                                  "src": "55137:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_e720521cc58e36659b0c45689a38054bd7300ff30d5ec0cfec7bae3dc2e9689a",
                                    "typeString": "literal_string \"log(address,string,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 31528,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "55068:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31529,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "55068:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31535,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "55068:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31527,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "55052:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "55052:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31537,
                        "nodeType": "ExpressionStatement",
                        "src": "55052:89:63"
                      }
                    ]
                  },
                  "id": 31539,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "54982:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31525,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31518,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "54994:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31539,
                        "src": "54986:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31517,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "54986:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31520,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "55012:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31539,
                        "src": "54998:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31519,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "54998:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31522,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "55021:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31539,
                        "src": "55016:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31521,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "55016:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31524,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "55030:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31539,
                        "src": "55025:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31523,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "55025:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "54985:48:63"
                  },
                  "returnParameters": {
                    "id": 31526,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "55048:0:63"
                  },
                  "scope": 32437,
                  "src": "54973:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31561,
                    "nodeType": "Block",
                    "src": "55232:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c626f6f6c2c737472696e6729",
                                  "id": 31553,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "55276:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_bc0b61fe9497b47eb6a51a5a6a4bf26b32ddcbc9407ccae8cc7de64b3e3d84cc",
                                    "typeString": "literal_string \"log(address,string,bool,string)\""
                                  },
                                  "value": "log(address,string,bool,string)"
                                },
                                {
                                  "id": 31554,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31541,
                                  "src": "55311:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31555,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31543,
                                  "src": "55315:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31556,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31545,
                                  "src": "55319:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31557,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31547,
                                  "src": "55323:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_bc0b61fe9497b47eb6a51a5a6a4bf26b32ddcbc9407ccae8cc7de64b3e3d84cc",
                                    "typeString": "literal_string \"log(address,string,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 31551,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "55252:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31552,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "55252:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31558,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "55252:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31550,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "55236:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31559,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "55236:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31560,
                        "nodeType": "ExpressionStatement",
                        "src": "55236:91:63"
                      }
                    ]
                  },
                  "id": 31562,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "55157:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31548,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31541,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "55169:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31562,
                        "src": "55161:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31540,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "55161:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31543,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "55187:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31562,
                        "src": "55173:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31542,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "55173:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31545,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "55196:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31562,
                        "src": "55191:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31544,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "55191:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31547,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "55214:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31562,
                        "src": "55200:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31546,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "55200:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "55160:57:63"
                  },
                  "returnParameters": {
                    "id": 31549,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "55232:0:63"
                  },
                  "scope": 32437,
                  "src": "55148:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31584,
                    "nodeType": "Block",
                    "src": "55409:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c626f6f6c2c626f6f6c29",
                                  "id": 31576,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "55453:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_5f1d5c9f0de8c048364058d1d6842804ada33dbc34bf9eaff8f2be978f384e08",
                                    "typeString": "literal_string \"log(address,string,bool,bool)\""
                                  },
                                  "value": "log(address,string,bool,bool)"
                                },
                                {
                                  "id": 31577,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31564,
                                  "src": "55486:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31578,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31566,
                                  "src": "55490:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31579,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31568,
                                  "src": "55494:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31580,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31570,
                                  "src": "55498:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_5f1d5c9f0de8c048364058d1d6842804ada33dbc34bf9eaff8f2be978f384e08",
                                    "typeString": "literal_string \"log(address,string,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 31574,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "55429:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31575,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "55429:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31581,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "55429:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31573,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "55413:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31582,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "55413:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31583,
                        "nodeType": "ExpressionStatement",
                        "src": "55413:89:63"
                      }
                    ]
                  },
                  "id": 31585,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "55343:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31571,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31564,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "55355:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31585,
                        "src": "55347:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31563,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "55347:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31566,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "55373:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31585,
                        "src": "55359:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31565,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "55359:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31568,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "55382:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31585,
                        "src": "55377:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31567,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "55377:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31570,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "55391:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31585,
                        "src": "55386:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31569,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "55386:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "55346:48:63"
                  },
                  "returnParameters": {
                    "id": 31572,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "55409:0:63"
                  },
                  "scope": 32437,
                  "src": "55334:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31607,
                    "nodeType": "Block",
                    "src": "55587:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c626f6f6c2c6164647265737329",
                                  "id": 31599,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "55631:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_205871c2f2d320acdd350939b5fc035cc20b1a9cc058fb26f1c9fb3d2ba59970",
                                    "typeString": "literal_string \"log(address,string,bool,address)\""
                                  },
                                  "value": "log(address,string,bool,address)"
                                },
                                {
                                  "id": 31600,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31587,
                                  "src": "55667:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31601,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31589,
                                  "src": "55671:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31602,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31591,
                                  "src": "55675:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31603,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31593,
                                  "src": "55679:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_205871c2f2d320acdd350939b5fc035cc20b1a9cc058fb26f1c9fb3d2ba59970",
                                    "typeString": "literal_string \"log(address,string,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 31597,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "55607:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "55607:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31604,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "55607:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31596,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "55591:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31605,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "55591:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31606,
                        "nodeType": "ExpressionStatement",
                        "src": "55591:92:63"
                      }
                    ]
                  },
                  "id": 31608,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "55518:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31594,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31587,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "55530:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31608,
                        "src": "55522:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31586,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "55522:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31589,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "55548:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31608,
                        "src": "55534:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31588,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "55534:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31591,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "55557:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31608,
                        "src": "55552:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31590,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "55552:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31593,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "55569:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31608,
                        "src": "55561:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31592,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "55561:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "55521:51:63"
                  },
                  "returnParameters": {
                    "id": 31595,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "55587:0:63"
                  },
                  "scope": 32437,
                  "src": "55509:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31630,
                    "nodeType": "Block",
                    "src": "55768:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c616464726573732c75696e7429",
                                  "id": 31622,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "55812:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_8c1933a9a9c61e3dc8d3ebdfa929712b21dab3dcf7188e7d35cbf8aaaf476582",
                                    "typeString": "literal_string \"log(address,string,address,uint)\""
                                  },
                                  "value": "log(address,string,address,uint)"
                                },
                                {
                                  "id": 31623,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31610,
                                  "src": "55848:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31624,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31612,
                                  "src": "55852:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31625,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31614,
                                  "src": "55856:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31626,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31616,
                                  "src": "55860:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_8c1933a9a9c61e3dc8d3ebdfa929712b21dab3dcf7188e7d35cbf8aaaf476582",
                                    "typeString": "literal_string \"log(address,string,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 31620,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "55788:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31621,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "55788:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31627,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "55788:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31619,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "55772:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "55772:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31629,
                        "nodeType": "ExpressionStatement",
                        "src": "55772:92:63"
                      }
                    ]
                  },
                  "id": 31631,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "55699:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31617,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31610,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "55711:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31631,
                        "src": "55703:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31609,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "55703:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31612,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "55729:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31631,
                        "src": "55715:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31611,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "55715:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31614,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "55741:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31631,
                        "src": "55733:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31613,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "55733:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31616,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "55750:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31631,
                        "src": "55745:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31615,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "55745:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "55702:51:63"
                  },
                  "returnParameters": {
                    "id": 31618,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "55768:0:63"
                  },
                  "scope": 32437,
                  "src": "55690:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31653,
                    "nodeType": "Block",
                    "src": "55958:102:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c616464726573732c737472696e6729",
                                  "id": 31645,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "56002:36:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f7e3624510fc5618feb98a49f5d4404e3749dacbdc916c267fea7b2051a08dea",
                                    "typeString": "literal_string \"log(address,string,address,string)\""
                                  },
                                  "value": "log(address,string,address,string)"
                                },
                                {
                                  "id": 31646,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31633,
                                  "src": "56040:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31647,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31635,
                                  "src": "56044:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31648,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31637,
                                  "src": "56048:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31649,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31639,
                                  "src": "56052:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_f7e3624510fc5618feb98a49f5d4404e3749dacbdc916c267fea7b2051a08dea",
                                    "typeString": "literal_string \"log(address,string,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 31643,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "55978:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31644,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "55978:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31650,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "55978:77:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31642,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "55962:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "55962:94:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31652,
                        "nodeType": "ExpressionStatement",
                        "src": "55962:94:63"
                      }
                    ]
                  },
                  "id": 31654,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "55880:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31640,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31633,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "55892:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31654,
                        "src": "55884:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31632,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "55884:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31635,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "55910:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31654,
                        "src": "55896:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31634,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "55896:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31637,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "55922:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31654,
                        "src": "55914:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31636,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "55914:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31639,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "55940:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31654,
                        "src": "55926:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31638,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "55926:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "55883:60:63"
                  },
                  "returnParameters": {
                    "id": 31641,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "55958:0:63"
                  },
                  "scope": 32437,
                  "src": "55871:189:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31676,
                    "nodeType": "Block",
                    "src": "56141:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c616464726573732c626f6f6c29",
                                  "id": 31668,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "56185:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_0df12b7620e0bad204ac79fe9930fef9b9a40702161764a681594d50d657b081",
                                    "typeString": "literal_string \"log(address,string,address,bool)\""
                                  },
                                  "value": "log(address,string,address,bool)"
                                },
                                {
                                  "id": 31669,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31656,
                                  "src": "56221:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31670,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31658,
                                  "src": "56225:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31671,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31660,
                                  "src": "56229:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31672,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31662,
                                  "src": "56233:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_0df12b7620e0bad204ac79fe9930fef9b9a40702161764a681594d50d657b081",
                                    "typeString": "literal_string \"log(address,string,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 31666,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "56161:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31667,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "56161:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31673,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "56161:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31665,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "56145:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31674,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "56145:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31675,
                        "nodeType": "ExpressionStatement",
                        "src": "56145:92:63"
                      }
                    ]
                  },
                  "id": 31677,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "56072:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31663,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31656,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "56084:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31677,
                        "src": "56076:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31655,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "56076:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31658,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "56102:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31677,
                        "src": "56088:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31657,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "56088:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31660,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "56114:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31677,
                        "src": "56106:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31659,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "56106:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31662,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "56123:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31677,
                        "src": "56118:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31661,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "56118:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "56075:51:63"
                  },
                  "returnParameters": {
                    "id": 31664,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "56141:0:63"
                  },
                  "scope": 32437,
                  "src": "56063:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31699,
                    "nodeType": "Block",
                    "src": "56325:103:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c737472696e672c616464726573732c6164647265737329",
                                  "id": 31691,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "56369:37:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_0d36fa2022fafb45586a59914be3ad4c57b76e89535385dcff89c28c80605121",
                                    "typeString": "literal_string \"log(address,string,address,address)\""
                                  },
                                  "value": "log(address,string,address,address)"
                                },
                                {
                                  "id": 31692,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31679,
                                  "src": "56408:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31693,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31681,
                                  "src": "56412:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31694,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31683,
                                  "src": "56416:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31695,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31685,
                                  "src": "56420:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_0d36fa2022fafb45586a59914be3ad4c57b76e89535385dcff89c28c80605121",
                                    "typeString": "literal_string \"log(address,string,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 31689,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "56345:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31690,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "56345:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31696,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "56345:78:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31688,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "56329:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "56329:95:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31698,
                        "nodeType": "ExpressionStatement",
                        "src": "56329:95:63"
                      }
                    ]
                  },
                  "id": 31700,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "56253:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31686,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31679,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "56265:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31700,
                        "src": "56257:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31678,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "56257:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31681,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "56283:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31700,
                        "src": "56269:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31680,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "56269:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31683,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "56295:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31700,
                        "src": "56287:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31682,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "56287:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31685,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "56307:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31700,
                        "src": "56299:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31684,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "56299:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "56256:54:63"
                  },
                  "returnParameters": {
                    "id": 31687,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "56325:0:63"
                  },
                  "scope": 32437,
                  "src": "56244:184:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31722,
                    "nodeType": "Block",
                    "src": "56497:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c75696e742c75696e7429",
                                  "id": 31714,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "56541:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c210a01e60a7d88137859e75abc2d14430087408747ac6787f0acb2f0f8bfd59",
                                    "typeString": "literal_string \"log(address,bool,uint,uint)\""
                                  },
                                  "value": "log(address,bool,uint,uint)"
                                },
                                {
                                  "id": 31715,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31702,
                                  "src": "56572:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31716,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31704,
                                  "src": "56576:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31717,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31706,
                                  "src": "56580:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31718,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31708,
                                  "src": "56584:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c210a01e60a7d88137859e75abc2d14430087408747ac6787f0acb2f0f8bfd59",
                                    "typeString": "literal_string \"log(address,bool,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 31712,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "56517:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31713,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "56517:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31719,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "56517:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31711,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "56501:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "56501:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31721,
                        "nodeType": "ExpressionStatement",
                        "src": "56501:87:63"
                      }
                    ]
                  },
                  "id": 31723,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "56440:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31709,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31702,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "56452:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31723,
                        "src": "56444:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31701,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "56444:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31704,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "56461:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31723,
                        "src": "56456:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31703,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "56456:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31706,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "56470:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31723,
                        "src": "56465:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31705,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "56465:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31708,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "56479:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31723,
                        "src": "56474:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31707,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "56474:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "56443:39:63"
                  },
                  "returnParameters": {
                    "id": 31710,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "56497:0:63"
                  },
                  "scope": 32437,
                  "src": "56431:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31745,
                    "nodeType": "Block",
                    "src": "56670:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c75696e742c737472696e6729",
                                  "id": 31737,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "56714:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9b588eccef132ec49572951d33e9b0d1b814d54c82133831f78cdc5d923bc6e6",
                                    "typeString": "literal_string \"log(address,bool,uint,string)\""
                                  },
                                  "value": "log(address,bool,uint,string)"
                                },
                                {
                                  "id": 31738,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31725,
                                  "src": "56747:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31739,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31727,
                                  "src": "56751:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31740,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31729,
                                  "src": "56755:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31741,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31731,
                                  "src": "56759:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_9b588eccef132ec49572951d33e9b0d1b814d54c82133831f78cdc5d923bc6e6",
                                    "typeString": "literal_string \"log(address,bool,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 31735,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "56690:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31736,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "56690:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "56690:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31734,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "56674:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31743,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "56674:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31744,
                        "nodeType": "ExpressionStatement",
                        "src": "56674:89:63"
                      }
                    ]
                  },
                  "id": 31746,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "56604:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31732,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31725,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "56616:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31746,
                        "src": "56608:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31724,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "56608:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31727,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "56625:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31746,
                        "src": "56620:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31726,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "56620:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31729,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "56634:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31746,
                        "src": "56629:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31728,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "56629:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31731,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "56652:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31746,
                        "src": "56638:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31730,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "56638:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "56607:48:63"
                  },
                  "returnParameters": {
                    "id": 31733,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "56670:0:63"
                  },
                  "scope": 32437,
                  "src": "56595:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31768,
                    "nodeType": "Block",
                    "src": "56836:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c75696e742c626f6f6c29",
                                  "id": 31760,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "56880:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_85cdc5af22f2a2b52749c228b5bc379bac815d0d3575c2899b6657bce00fab33",
                                    "typeString": "literal_string \"log(address,bool,uint,bool)\""
                                  },
                                  "value": "log(address,bool,uint,bool)"
                                },
                                {
                                  "id": 31761,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31748,
                                  "src": "56911:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31762,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31750,
                                  "src": "56915:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31763,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31752,
                                  "src": "56919:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31764,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31754,
                                  "src": "56923:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_85cdc5af22f2a2b52749c228b5bc379bac815d0d3575c2899b6657bce00fab33",
                                    "typeString": "literal_string \"log(address,bool,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 31758,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "56856:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31759,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "56856:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31765,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "56856:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31757,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "56840:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31766,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "56840:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31767,
                        "nodeType": "ExpressionStatement",
                        "src": "56840:87:63"
                      }
                    ]
                  },
                  "id": 31769,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "56779:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31755,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31748,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "56791:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31769,
                        "src": "56783:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31747,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "56783:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31750,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "56800:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31769,
                        "src": "56795:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31749,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "56795:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31752,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "56809:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31769,
                        "src": "56804:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31751,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "56804:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31754,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "56818:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31769,
                        "src": "56813:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31753,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "56813:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "56782:39:63"
                  },
                  "returnParameters": {
                    "id": 31756,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "56836:0:63"
                  },
                  "scope": 32437,
                  "src": "56770:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31791,
                    "nodeType": "Block",
                    "src": "57003:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c75696e742c6164647265737329",
                                  "id": 31783,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "57047:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_0d8ce61ee7d058fd1e588343a35fb1aff71b8e7f74d553220d0e20088cb908bf",
                                    "typeString": "literal_string \"log(address,bool,uint,address)\""
                                  },
                                  "value": "log(address,bool,uint,address)"
                                },
                                {
                                  "id": 31784,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31771,
                                  "src": "57081:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31785,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31773,
                                  "src": "57085:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31786,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31775,
                                  "src": "57089:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 31787,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31777,
                                  "src": "57093:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_0d8ce61ee7d058fd1e588343a35fb1aff71b8e7f74d553220d0e20088cb908bf",
                                    "typeString": "literal_string \"log(address,bool,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 31781,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "57023:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31782,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "57023:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31788,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "57023:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31780,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "57007:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "57007:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31790,
                        "nodeType": "ExpressionStatement",
                        "src": "57007:90:63"
                      }
                    ]
                  },
                  "id": 31792,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "56943:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31778,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31771,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "56955:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31792,
                        "src": "56947:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31770,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "56947:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31773,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "56964:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31792,
                        "src": "56959:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31772,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "56959:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31775,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "56973:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31792,
                        "src": "56968:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31774,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "56968:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31777,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "56985:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31792,
                        "src": "56977:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31776,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "56977:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "56946:42:63"
                  },
                  "returnParameters": {
                    "id": 31779,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "57003:0:63"
                  },
                  "scope": 32437,
                  "src": "56934:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31814,
                    "nodeType": "Block",
                    "src": "57179:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c737472696e672c75696e7429",
                                  "id": 31806,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "57223:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9e127b6e4348bc33b3ea7f05f6479d3e1b1fe2b3727e1f4ba94b6a36e7abac9b",
                                    "typeString": "literal_string \"log(address,bool,string,uint)\""
                                  },
                                  "value": "log(address,bool,string,uint)"
                                },
                                {
                                  "id": 31807,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31794,
                                  "src": "57256:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31808,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31796,
                                  "src": "57260:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31809,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31798,
                                  "src": "57264:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31810,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31800,
                                  "src": "57268:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_9e127b6e4348bc33b3ea7f05f6479d3e1b1fe2b3727e1f4ba94b6a36e7abac9b",
                                    "typeString": "literal_string \"log(address,bool,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 31804,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "57199:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31805,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "57199:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31811,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "57199:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31803,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "57183:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31812,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "57183:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31813,
                        "nodeType": "ExpressionStatement",
                        "src": "57183:89:63"
                      }
                    ]
                  },
                  "id": 31815,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "57113:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31801,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31794,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "57125:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31815,
                        "src": "57117:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31793,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "57117:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31796,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "57134:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31815,
                        "src": "57129:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31795,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "57129:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31798,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "57152:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31815,
                        "src": "57138:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31797,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "57138:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31800,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "57161:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31815,
                        "src": "57156:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31799,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "57156:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "57116:48:63"
                  },
                  "returnParameters": {
                    "id": 31802,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "57179:0:63"
                  },
                  "scope": 32437,
                  "src": "57104:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31837,
                    "nodeType": "Block",
                    "src": "57363:99:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c737472696e672c737472696e6729",
                                  "id": 31829,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "57407:33:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_475c5c33f91155b7a0e86c9fac7985c60ab58f4bfb411ee9b31d994a7fc95d1f",
                                    "typeString": "literal_string \"log(address,bool,string,string)\""
                                  },
                                  "value": "log(address,bool,string,string)"
                                },
                                {
                                  "id": 31830,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31817,
                                  "src": "57442:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31831,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31819,
                                  "src": "57446:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31832,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31821,
                                  "src": "57450:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31833,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31823,
                                  "src": "57454:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_475c5c33f91155b7a0e86c9fac7985c60ab58f4bfb411ee9b31d994a7fc95d1f",
                                    "typeString": "literal_string \"log(address,bool,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 31827,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "57383:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31828,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "57383:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31834,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "57383:74:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31826,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "57367:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31835,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "57367:91:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31836,
                        "nodeType": "ExpressionStatement",
                        "src": "57367:91:63"
                      }
                    ]
                  },
                  "id": 31838,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "57288:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31824,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31817,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "57300:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31838,
                        "src": "57292:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31816,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "57292:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31819,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "57309:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31838,
                        "src": "57304:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31818,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "57304:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31821,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "57327:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31838,
                        "src": "57313:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31820,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "57313:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31823,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "57345:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31838,
                        "src": "57331:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31822,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "57331:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "57291:57:63"
                  },
                  "returnParameters": {
                    "id": 31825,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "57363:0:63"
                  },
                  "scope": 32437,
                  "src": "57279:183:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31860,
                    "nodeType": "Block",
                    "src": "57540:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c737472696e672c626f6f6c29",
                                  "id": 31852,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "57584:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_50ad461db24803fc9b2ba76f072192e0a4d8fbb3667a50c400f504443380890f",
                                    "typeString": "literal_string \"log(address,bool,string,bool)\""
                                  },
                                  "value": "log(address,bool,string,bool)"
                                },
                                {
                                  "id": 31853,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31840,
                                  "src": "57617:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31854,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31842,
                                  "src": "57621:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31855,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31844,
                                  "src": "57625:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31856,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31846,
                                  "src": "57629:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_50ad461db24803fc9b2ba76f072192e0a4d8fbb3667a50c400f504443380890f",
                                    "typeString": "literal_string \"log(address,bool,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 31850,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "57560:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31851,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "57560:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31857,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "57560:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31849,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "57544:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31858,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "57544:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31859,
                        "nodeType": "ExpressionStatement",
                        "src": "57544:89:63"
                      }
                    ]
                  },
                  "id": 31861,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "57474:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31847,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31840,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "57486:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31861,
                        "src": "57478:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31839,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "57478:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31842,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "57495:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31861,
                        "src": "57490:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31841,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "57490:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31844,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "57513:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31861,
                        "src": "57499:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31843,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "57499:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31846,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "57522:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31861,
                        "src": "57517:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31845,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "57517:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "57477:48:63"
                  },
                  "returnParameters": {
                    "id": 31848,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "57540:0:63"
                  },
                  "scope": 32437,
                  "src": "57465:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31883,
                    "nodeType": "Block",
                    "src": "57718:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c737472696e672c6164647265737329",
                                  "id": 31875,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "57762:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_19fd495659df511498cf8dde03672830bd109ef2d9b9bec18e72190917c328bc",
                                    "typeString": "literal_string \"log(address,bool,string,address)\""
                                  },
                                  "value": "log(address,bool,string,address)"
                                },
                                {
                                  "id": 31876,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31863,
                                  "src": "57798:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31877,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31865,
                                  "src": "57802:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31878,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31867,
                                  "src": "57806:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 31879,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31869,
                                  "src": "57810:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_19fd495659df511498cf8dde03672830bd109ef2d9b9bec18e72190917c328bc",
                                    "typeString": "literal_string \"log(address,bool,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 31873,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "57738:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31874,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "57738:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31880,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "57738:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31872,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "57722:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31881,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "57722:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31882,
                        "nodeType": "ExpressionStatement",
                        "src": "57722:92:63"
                      }
                    ]
                  },
                  "id": 31884,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "57649:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31870,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31863,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "57661:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31884,
                        "src": "57653:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31862,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "57653:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31865,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "57670:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31884,
                        "src": "57665:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31864,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "57665:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31867,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "57688:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31884,
                        "src": "57674:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31866,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "57674:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31869,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "57700:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31884,
                        "src": "57692:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31868,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "57692:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "57652:51:63"
                  },
                  "returnParameters": {
                    "id": 31871,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "57718:0:63"
                  },
                  "scope": 32437,
                  "src": "57640:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31906,
                    "nodeType": "Block",
                    "src": "57887:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c626f6f6c2c75696e7429",
                                  "id": 31898,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "57931:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_cfb587569c9e063cd7daed07e27d9193980aad24c48787cb6531c47fa694e463",
                                    "typeString": "literal_string \"log(address,bool,bool,uint)\""
                                  },
                                  "value": "log(address,bool,bool,uint)"
                                },
                                {
                                  "id": 31899,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31886,
                                  "src": "57962:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31900,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31888,
                                  "src": "57966:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31901,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31890,
                                  "src": "57970:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31902,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31892,
                                  "src": "57974:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_cfb587569c9e063cd7daed07e27d9193980aad24c48787cb6531c47fa694e463",
                                    "typeString": "literal_string \"log(address,bool,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 31896,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "57907:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31897,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "57907:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31903,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "57907:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31895,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "57891:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31904,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "57891:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31905,
                        "nodeType": "ExpressionStatement",
                        "src": "57891:87:63"
                      }
                    ]
                  },
                  "id": 31907,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "57830:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31893,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31886,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "57842:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31907,
                        "src": "57834:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31885,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "57834:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31888,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "57851:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31907,
                        "src": "57846:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31887,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "57846:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31890,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "57860:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31907,
                        "src": "57855:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31889,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "57855:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31892,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "57869:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31907,
                        "src": "57864:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31891,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "57864:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "57833:39:63"
                  },
                  "returnParameters": {
                    "id": 31894,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "57887:0:63"
                  },
                  "scope": 32437,
                  "src": "57821:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31929,
                    "nodeType": "Block",
                    "src": "58060:97:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c626f6f6c2c737472696e6729",
                                  "id": 31921,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "58104:31:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_dfc4a2e8c56809b44edbbc6d92d0a8441e551ad5387596bf8b629c56d9a91300",
                                    "typeString": "literal_string \"log(address,bool,bool,string)\""
                                  },
                                  "value": "log(address,bool,bool,string)"
                                },
                                {
                                  "id": 31922,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31909,
                                  "src": "58137:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31923,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31911,
                                  "src": "58141:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31924,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31913,
                                  "src": "58145:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31925,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31915,
                                  "src": "58149:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_dfc4a2e8c56809b44edbbc6d92d0a8441e551ad5387596bf8b629c56d9a91300",
                                    "typeString": "literal_string \"log(address,bool,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 31919,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "58080:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31920,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "58080:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31926,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "58080:72:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31918,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "58064:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31927,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "58064:89:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31928,
                        "nodeType": "ExpressionStatement",
                        "src": "58064:89:63"
                      }
                    ]
                  },
                  "id": 31930,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "57994:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31916,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31909,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "58006:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31930,
                        "src": "57998:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31908,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "57998:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31911,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "58015:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31930,
                        "src": "58010:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31910,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "58010:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31913,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "58024:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31930,
                        "src": "58019:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31912,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "58019:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31915,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "58042:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31930,
                        "src": "58028:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 31914,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "58028:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "57997:48:63"
                  },
                  "returnParameters": {
                    "id": 31917,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "58060:0:63"
                  },
                  "scope": 32437,
                  "src": "57985:172:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31952,
                    "nodeType": "Block",
                    "src": "58226:95:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c626f6f6c2c626f6f6c29",
                                  "id": 31944,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "58270:29:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_cac434792b973db16714db96d2aeda353b2253f27255abe42b9960b2dc550634",
                                    "typeString": "literal_string \"log(address,bool,bool,bool)\""
                                  },
                                  "value": "log(address,bool,bool,bool)"
                                },
                                {
                                  "id": 31945,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31932,
                                  "src": "58301:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31946,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31934,
                                  "src": "58305:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31947,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31936,
                                  "src": "58309:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31948,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31938,
                                  "src": "58313:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_cac434792b973db16714db96d2aeda353b2253f27255abe42b9960b2dc550634",
                                    "typeString": "literal_string \"log(address,bool,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 31942,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "58246:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31943,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "58246:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31949,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "58246:70:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31941,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "58230:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31950,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "58230:87:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31951,
                        "nodeType": "ExpressionStatement",
                        "src": "58230:87:63"
                      }
                    ]
                  },
                  "id": 31953,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "58169:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31939,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31932,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "58181:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31953,
                        "src": "58173:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31931,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "58173:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31934,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "58190:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31953,
                        "src": "58185:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31933,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "58185:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31936,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "58199:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31953,
                        "src": "58194:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31935,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "58194:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31938,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "58208:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31953,
                        "src": "58203:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31937,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "58203:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "58172:39:63"
                  },
                  "returnParameters": {
                    "id": 31940,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "58226:0:63"
                  },
                  "scope": 32437,
                  "src": "58160:161:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31975,
                    "nodeType": "Block",
                    "src": "58393:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c626f6f6c2c6164647265737329",
                                  "id": 31967,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "58437:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_cf394485abbd1f04b85b0f2c1a2cfc07e3d51c1c6f28386bf16d9e45161e8953",
                                    "typeString": "literal_string \"log(address,bool,bool,address)\""
                                  },
                                  "value": "log(address,bool,bool,address)"
                                },
                                {
                                  "id": 31968,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31955,
                                  "src": "58471:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31969,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31957,
                                  "src": "58475:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31970,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31959,
                                  "src": "58479:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31971,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31961,
                                  "src": "58483:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_cf394485abbd1f04b85b0f2c1a2cfc07e3d51c1c6f28386bf16d9e45161e8953",
                                    "typeString": "literal_string \"log(address,bool,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 31965,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "58413:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31966,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "58413:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31972,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "58413:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31964,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "58397:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31973,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "58397:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31974,
                        "nodeType": "ExpressionStatement",
                        "src": "58397:90:63"
                      }
                    ]
                  },
                  "id": 31976,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "58333:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31962,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31955,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "58345:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31976,
                        "src": "58337:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31954,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "58337:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31957,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "58354:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31976,
                        "src": "58349:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31956,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "58349:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31959,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "58363:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31976,
                        "src": "58358:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31958,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "58358:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31961,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "58375:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31976,
                        "src": "58367:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31960,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "58367:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "58336:42:63"
                  },
                  "returnParameters": {
                    "id": 31963,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "58393:0:63"
                  },
                  "scope": 32437,
                  "src": "58324:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31998,
                    "nodeType": "Block",
                    "src": "58563:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c616464726573732c75696e7429",
                                  "id": 31990,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "58607:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_dc7116d2e67ccd625262e6814a6f82f2367beea9919409c81fcbb94bea1b6b84",
                                    "typeString": "literal_string \"log(address,bool,address,uint)\""
                                  },
                                  "value": "log(address,bool,address,uint)"
                                },
                                {
                                  "id": 31991,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31978,
                                  "src": "58641:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31992,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31980,
                                  "src": "58645:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 31993,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31982,
                                  "src": "58649:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 31994,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31984,
                                  "src": "58653:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_dc7116d2e67ccd625262e6814a6f82f2367beea9919409c81fcbb94bea1b6b84",
                                    "typeString": "literal_string \"log(address,bool,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 31988,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "58583:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 31989,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "58583:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 31995,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "58583:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 31987,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "58567:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 31996,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "58567:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 31997,
                        "nodeType": "ExpressionStatement",
                        "src": "58567:90:63"
                      }
                    ]
                  },
                  "id": 31999,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "58503:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 31985,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 31978,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "58515:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31999,
                        "src": "58507:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31977,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "58507:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31980,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "58524:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31999,
                        "src": "58519:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 31979,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "58519:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31982,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "58536:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31999,
                        "src": "58528:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 31981,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "58528:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 31984,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "58545:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 31999,
                        "src": "58540:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 31983,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "58540:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "58506:42:63"
                  },
                  "returnParameters": {
                    "id": 31986,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "58563:0:63"
                  },
                  "scope": 32437,
                  "src": "58494:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32021,
                    "nodeType": "Block",
                    "src": "58742:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c616464726573732c737472696e6729",
                                  "id": 32013,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "58786:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_2dd778e616be9386b5911da1a074bbaf979640681783fca6396ea75c8caf6453",
                                    "typeString": "literal_string \"log(address,bool,address,string)\""
                                  },
                                  "value": "log(address,bool,address,string)"
                                },
                                {
                                  "id": 32014,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32001,
                                  "src": "58822:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32015,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32003,
                                  "src": "58826:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 32016,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32005,
                                  "src": "58830:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32017,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32007,
                                  "src": "58834:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_2dd778e616be9386b5911da1a074bbaf979640681783fca6396ea75c8caf6453",
                                    "typeString": "literal_string \"log(address,bool,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 32011,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "58762:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 32012,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "58762:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 32018,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "58762:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32010,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "58746:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 32019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "58746:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32020,
                        "nodeType": "ExpressionStatement",
                        "src": "58746:92:63"
                      }
                    ]
                  },
                  "id": 32022,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "58673:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32008,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32001,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "58685:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32022,
                        "src": "58677:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32000,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "58677:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32003,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "58694:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32022,
                        "src": "58689:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 32002,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "58689:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32005,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "58706:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32022,
                        "src": "58698:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32004,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "58698:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32007,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "58724:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32022,
                        "src": "58710:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 32006,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "58710:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "58676:51:63"
                  },
                  "returnParameters": {
                    "id": 32009,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "58742:0:63"
                  },
                  "scope": 32437,
                  "src": "58664:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32044,
                    "nodeType": "Block",
                    "src": "58914:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c616464726573732c626f6f6c29",
                                  "id": 32036,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "58958:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_a6f50b0f122c916fe81861751b94bdddb5e453947768e8af206397bb510790b1",
                                    "typeString": "literal_string \"log(address,bool,address,bool)\""
                                  },
                                  "value": "log(address,bool,address,bool)"
                                },
                                {
                                  "id": 32037,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32024,
                                  "src": "58992:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32038,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32026,
                                  "src": "58996:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 32039,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32028,
                                  "src": "59000:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32040,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32030,
                                  "src": "59004:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_a6f50b0f122c916fe81861751b94bdddb5e453947768e8af206397bb510790b1",
                                    "typeString": "literal_string \"log(address,bool,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 32034,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "58934:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 32035,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "58934:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 32041,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "58934:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32033,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "58918:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 32042,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "58918:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32043,
                        "nodeType": "ExpressionStatement",
                        "src": "58918:90:63"
                      }
                    ]
                  },
                  "id": 32045,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "58854:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32031,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32024,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "58866:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32045,
                        "src": "58858:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32023,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "58858:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32026,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "58875:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32045,
                        "src": "58870:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 32025,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "58870:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32028,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "58887:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32045,
                        "src": "58879:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32027,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "58879:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32030,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "58896:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32045,
                        "src": "58891:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 32029,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "58891:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "58857:42:63"
                  },
                  "returnParameters": {
                    "id": 32032,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "58914:0:63"
                  },
                  "scope": 32437,
                  "src": "58845:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32067,
                    "nodeType": "Block",
                    "src": "59087:101:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c626f6f6c2c616464726573732c6164647265737329",
                                  "id": 32059,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "59131:35:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_660375ddb58761b4ce952ec7e1ae63efe9f8e9e69831fd72875968fec9046e35",
                                    "typeString": "literal_string \"log(address,bool,address,address)\""
                                  },
                                  "value": "log(address,bool,address,address)"
                                },
                                {
                                  "id": 32060,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32047,
                                  "src": "59168:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32061,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32049,
                                  "src": "59172:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 32062,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32051,
                                  "src": "59176:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32063,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32053,
                                  "src": "59180:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_660375ddb58761b4ce952ec7e1ae63efe9f8e9e69831fd72875968fec9046e35",
                                    "typeString": "literal_string \"log(address,bool,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 32057,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "59107:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 32058,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "59107:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 32064,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "59107:76:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32056,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "59091:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 32065,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "59091:93:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32066,
                        "nodeType": "ExpressionStatement",
                        "src": "59091:93:63"
                      }
                    ]
                  },
                  "id": 32068,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "59024:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32054,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32047,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "59036:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32068,
                        "src": "59028:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32046,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "59028:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32049,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "59045:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32068,
                        "src": "59040:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 32048,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "59040:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32051,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "59057:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32068,
                        "src": "59049:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32050,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "59049:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32053,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "59069:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32068,
                        "src": "59061:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32052,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "59061:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "59027:45:63"
                  },
                  "returnParameters": {
                    "id": 32055,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "59087:0:63"
                  },
                  "scope": 32437,
                  "src": "59015:173:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32090,
                    "nodeType": "Block",
                    "src": "59260:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c75696e742c75696e7429",
                                  "id": 32082,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "59304:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_54fdf3e4fb94f9bebc9a1c60d5b71090f9817e68730b5af20b69dff283044ed6",
                                    "typeString": "literal_string \"log(address,address,uint,uint)\""
                                  },
                                  "value": "log(address,address,uint,uint)"
                                },
                                {
                                  "id": 32083,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32070,
                                  "src": "59338:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32084,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32072,
                                  "src": "59342:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32085,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32074,
                                  "src": "59346:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 32086,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32076,
                                  "src": "59350:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_54fdf3e4fb94f9bebc9a1c60d5b71090f9817e68730b5af20b69dff283044ed6",
                                    "typeString": "literal_string \"log(address,address,uint,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 32080,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "59280:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 32081,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "59280:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 32087,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "59280:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32079,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "59264:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 32088,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "59264:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32089,
                        "nodeType": "ExpressionStatement",
                        "src": "59264:90:63"
                      }
                    ]
                  },
                  "id": 32091,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "59200:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32077,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32070,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "59212:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32091,
                        "src": "59204:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32069,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "59204:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32072,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "59224:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32091,
                        "src": "59216:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32071,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "59216:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32074,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "59233:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32091,
                        "src": "59228:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32073,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "59228:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32076,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "59242:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32091,
                        "src": "59237:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32075,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "59237:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "59203:42:63"
                  },
                  "returnParameters": {
                    "id": 32078,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "59260:0:63"
                  },
                  "scope": 32437,
                  "src": "59191:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32113,
                    "nodeType": "Block",
                    "src": "59439:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c75696e742c737472696e6729",
                                  "id": 32105,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "59483:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9dd12eadc51edb79b050f95e9310706b305e500a52025b74b024df3cbcb53815",
                                    "typeString": "literal_string \"log(address,address,uint,string)\""
                                  },
                                  "value": "log(address,address,uint,string)"
                                },
                                {
                                  "id": 32106,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32093,
                                  "src": "59519:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32107,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32095,
                                  "src": "59523:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32108,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32097,
                                  "src": "59527:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 32109,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32099,
                                  "src": "59531:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_9dd12eadc51edb79b050f95e9310706b305e500a52025b74b024df3cbcb53815",
                                    "typeString": "literal_string \"log(address,address,uint,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 32103,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "59459:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 32104,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "59459:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 32110,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "59459:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32102,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "59443:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 32111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "59443:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32112,
                        "nodeType": "ExpressionStatement",
                        "src": "59443:92:63"
                      }
                    ]
                  },
                  "id": 32114,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "59370:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32100,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32093,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "59382:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32114,
                        "src": "59374:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32092,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "59374:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32095,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "59394:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32114,
                        "src": "59386:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32094,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "59386:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32097,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "59403:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32114,
                        "src": "59398:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32096,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "59398:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32099,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "59421:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32114,
                        "src": "59407:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 32098,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "59407:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "59373:51:63"
                  },
                  "returnParameters": {
                    "id": 32101,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "59439:0:63"
                  },
                  "scope": 32437,
                  "src": "59361:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32136,
                    "nodeType": "Block",
                    "src": "59611:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c75696e742c626f6f6c29",
                                  "id": 32128,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "59655:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c2f688eccc5824e4375e54ae0df7ae9f757b0758319e26fa7dcc6a4450e1d411",
                                    "typeString": "literal_string \"log(address,address,uint,bool)\""
                                  },
                                  "value": "log(address,address,uint,bool)"
                                },
                                {
                                  "id": 32129,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32116,
                                  "src": "59689:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32130,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32118,
                                  "src": "59693:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32131,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32120,
                                  "src": "59697:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 32132,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32122,
                                  "src": "59701:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_c2f688eccc5824e4375e54ae0df7ae9f757b0758319e26fa7dcc6a4450e1d411",
                                    "typeString": "literal_string \"log(address,address,uint,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 32126,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "59631:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 32127,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "59631:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 32133,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "59631:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32125,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "59615:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 32134,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "59615:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32135,
                        "nodeType": "ExpressionStatement",
                        "src": "59615:90:63"
                      }
                    ]
                  },
                  "id": 32137,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "59551:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32123,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32116,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "59563:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32137,
                        "src": "59555:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32115,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "59555:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32118,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "59575:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32137,
                        "src": "59567:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32117,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "59567:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32120,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "59584:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32137,
                        "src": "59579:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32119,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "59579:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32122,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "59593:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32137,
                        "src": "59588:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 32121,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "59588:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "59554:42:63"
                  },
                  "returnParameters": {
                    "id": 32124,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "59611:0:63"
                  },
                  "scope": 32437,
                  "src": "59542:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32159,
                    "nodeType": "Block",
                    "src": "59784:101:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c75696e742c6164647265737329",
                                  "id": 32151,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "59828:35:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_d6c65276d9b81968c5dbc7d91412af8260979b88b9036d81153645629a214556",
                                    "typeString": "literal_string \"log(address,address,uint,address)\""
                                  },
                                  "value": "log(address,address,uint,address)"
                                },
                                {
                                  "id": 32152,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32139,
                                  "src": "59865:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32153,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32141,
                                  "src": "59869:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32154,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32143,
                                  "src": "59873:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 32155,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32145,
                                  "src": "59877:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_d6c65276d9b81968c5dbc7d91412af8260979b88b9036d81153645629a214556",
                                    "typeString": "literal_string \"log(address,address,uint,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 32149,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "59804:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 32150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "59804:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 32156,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "59804:76:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32148,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "59788:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 32157,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "59788:93:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32158,
                        "nodeType": "ExpressionStatement",
                        "src": "59788:93:63"
                      }
                    ]
                  },
                  "id": 32160,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "59721:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32146,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32139,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "59733:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32160,
                        "src": "59725:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32138,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "59725:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32141,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "59745:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32160,
                        "src": "59737:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32140,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "59737:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32143,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "59754:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32160,
                        "src": "59749:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32142,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "59749:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32145,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "59766:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32160,
                        "src": "59758:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32144,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "59758:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "59724:45:63"
                  },
                  "returnParameters": {
                    "id": 32147,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "59784:0:63"
                  },
                  "scope": 32437,
                  "src": "59712:173:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32182,
                    "nodeType": "Block",
                    "src": "59966:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c737472696e672c75696e7429",
                                  "id": 32174,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "60010:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_04289300eaed00bb9d0d7894f7439ff06a8c4040945c0625e94f6f0c87fb11ba",
                                    "typeString": "literal_string \"log(address,address,string,uint)\""
                                  },
                                  "value": "log(address,address,string,uint)"
                                },
                                {
                                  "id": 32175,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32162,
                                  "src": "60046:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32176,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32164,
                                  "src": "60050:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32177,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32166,
                                  "src": "60054:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 32178,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32168,
                                  "src": "60058:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_04289300eaed00bb9d0d7894f7439ff06a8c4040945c0625e94f6f0c87fb11ba",
                                    "typeString": "literal_string \"log(address,address,string,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 32172,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "59986:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 32173,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "59986:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 32179,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "59986:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32171,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "59970:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 32180,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "59970:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32181,
                        "nodeType": "ExpressionStatement",
                        "src": "59970:92:63"
                      }
                    ]
                  },
                  "id": 32183,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "59897:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32169,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32162,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "59909:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32183,
                        "src": "59901:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32161,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "59901:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32164,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "59921:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32183,
                        "src": "59913:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32163,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "59913:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32166,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "59939:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32183,
                        "src": "59925:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 32165,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "59925:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32168,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "59948:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32183,
                        "src": "59943:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32167,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "59943:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "59900:51:63"
                  },
                  "returnParameters": {
                    "id": 32170,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "59966:0:63"
                  },
                  "scope": 32437,
                  "src": "59888:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32205,
                    "nodeType": "Block",
                    "src": "60156:102:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c737472696e672c737472696e6729",
                                  "id": 32197,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "60200:36:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_21bdaf25c85279ffda21e4e2b9f685ff585c62a37c0ebe7ae25670fd06df3aa1",
                                    "typeString": "literal_string \"log(address,address,string,string)\""
                                  },
                                  "value": "log(address,address,string,string)"
                                },
                                {
                                  "id": 32198,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32185,
                                  "src": "60238:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32199,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32187,
                                  "src": "60242:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32200,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32189,
                                  "src": "60246:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 32201,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32191,
                                  "src": "60250:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_21bdaf25c85279ffda21e4e2b9f685ff585c62a37c0ebe7ae25670fd06df3aa1",
                                    "typeString": "literal_string \"log(address,address,string,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 32195,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "60176:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 32196,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "60176:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 32202,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "60176:77:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32194,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "60160:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 32203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "60160:94:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32204,
                        "nodeType": "ExpressionStatement",
                        "src": "60160:94:63"
                      }
                    ]
                  },
                  "id": 32206,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "60078:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32192,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32185,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "60090:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32206,
                        "src": "60082:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32184,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "60082:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32187,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "60102:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32206,
                        "src": "60094:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32186,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "60094:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32189,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "60120:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32206,
                        "src": "60106:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 32188,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "60106:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32191,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "60138:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32206,
                        "src": "60124:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 32190,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "60124:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "60081:60:63"
                  },
                  "returnParameters": {
                    "id": 32193,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "60156:0:63"
                  },
                  "scope": 32437,
                  "src": "60069:189:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32228,
                    "nodeType": "Block",
                    "src": "60339:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c737472696e672c626f6f6c29",
                                  "id": 32220,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "60383:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_6f1a594e70810560eaae5bbc82bc991f1120ac326ec142f6fb212682169447fd",
                                    "typeString": "literal_string \"log(address,address,string,bool)\""
                                  },
                                  "value": "log(address,address,string,bool)"
                                },
                                {
                                  "id": 32221,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32208,
                                  "src": "60419:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32222,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32210,
                                  "src": "60423:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32223,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32212,
                                  "src": "60427:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 32224,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32214,
                                  "src": "60431:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_6f1a594e70810560eaae5bbc82bc991f1120ac326ec142f6fb212682169447fd",
                                    "typeString": "literal_string \"log(address,address,string,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 32218,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "60359:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 32219,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "60359:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 32225,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "60359:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32217,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "60343:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 32226,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "60343:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32227,
                        "nodeType": "ExpressionStatement",
                        "src": "60343:92:63"
                      }
                    ]
                  },
                  "id": 32229,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "60270:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32215,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32208,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "60282:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32229,
                        "src": "60274:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32207,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "60274:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32210,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "60294:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32229,
                        "src": "60286:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32209,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "60286:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32212,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "60312:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32229,
                        "src": "60298:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 32211,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "60298:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32214,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "60321:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32229,
                        "src": "60316:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 32213,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "60316:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "60273:51:63"
                  },
                  "returnParameters": {
                    "id": 32216,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "60339:0:63"
                  },
                  "scope": 32437,
                  "src": "60261:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32251,
                    "nodeType": "Block",
                    "src": "60523:103:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c737472696e672c6164647265737329",
                                  "id": 32243,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "60567:37:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_8f736d1685010d3a1ac02ed96109cdd5141fd92077c14203bc63442ad9b6a687",
                                    "typeString": "literal_string \"log(address,address,string,address)\""
                                  },
                                  "value": "log(address,address,string,address)"
                                },
                                {
                                  "id": 32244,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32231,
                                  "src": "60606:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32245,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32233,
                                  "src": "60610:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32246,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32235,
                                  "src": "60614:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "id": 32247,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32237,
                                  "src": "60618:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_8f736d1685010d3a1ac02ed96109cdd5141fd92077c14203bc63442ad9b6a687",
                                    "typeString": "literal_string \"log(address,address,string,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 32241,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "60543:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 32242,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "60543:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 32248,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "60543:78:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32240,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "60527:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 32249,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "60527:95:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32250,
                        "nodeType": "ExpressionStatement",
                        "src": "60527:95:63"
                      }
                    ]
                  },
                  "id": 32252,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "60451:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32238,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32231,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "60463:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32252,
                        "src": "60455:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32230,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "60455:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32233,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "60475:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32252,
                        "src": "60467:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32232,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "60467:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32235,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "60493:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32252,
                        "src": "60479:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 32234,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "60479:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32237,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "60505:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32252,
                        "src": "60497:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32236,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "60497:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "60454:54:63"
                  },
                  "returnParameters": {
                    "id": 32239,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "60523:0:63"
                  },
                  "scope": 32437,
                  "src": "60442:184:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32274,
                    "nodeType": "Block",
                    "src": "60698:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c626f6f6c2c75696e7429",
                                  "id": 32266,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "60742:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_95d65f110e4042ee84d162cfc6d17a44c2f2784259e33c97679d21e7a95a841e",
                                    "typeString": "literal_string \"log(address,address,bool,uint)\""
                                  },
                                  "value": "log(address,address,bool,uint)"
                                },
                                {
                                  "id": 32267,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32254,
                                  "src": "60776:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32268,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32256,
                                  "src": "60780:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32269,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32258,
                                  "src": "60784:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 32270,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32260,
                                  "src": "60788:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_95d65f110e4042ee84d162cfc6d17a44c2f2784259e33c97679d21e7a95a841e",
                                    "typeString": "literal_string \"log(address,address,bool,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 32264,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "60718:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 32265,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "60718:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 32271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "60718:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32263,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "60702:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 32272,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "60702:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32273,
                        "nodeType": "ExpressionStatement",
                        "src": "60702:90:63"
                      }
                    ]
                  },
                  "id": 32275,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "60638:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32261,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32254,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "60650:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32275,
                        "src": "60642:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32253,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "60642:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32256,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "60662:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32275,
                        "src": "60654:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32255,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "60654:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32258,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "60671:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32275,
                        "src": "60666:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 32257,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "60666:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32260,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "60680:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32275,
                        "src": "60675:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32259,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "60675:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "60641:42:63"
                  },
                  "returnParameters": {
                    "id": 32262,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "60698:0:63"
                  },
                  "scope": 32437,
                  "src": "60629:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32297,
                    "nodeType": "Block",
                    "src": "60877:100:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c626f6f6c2c737472696e6729",
                                  "id": 32289,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "60921:34:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_aa6540c8e9a40f69e022e01a14ab22c94aae4999f1d7a246236f464d7c933b88",
                                    "typeString": "literal_string \"log(address,address,bool,string)\""
                                  },
                                  "value": "log(address,address,bool,string)"
                                },
                                {
                                  "id": 32290,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32277,
                                  "src": "60957:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32291,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32279,
                                  "src": "60961:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32292,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32281,
                                  "src": "60965:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 32293,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32283,
                                  "src": "60969:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_aa6540c8e9a40f69e022e01a14ab22c94aae4999f1d7a246236f464d7c933b88",
                                    "typeString": "literal_string \"log(address,address,bool,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 32287,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "60897:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 32288,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "60897:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 32294,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "60897:75:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32286,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "60881:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 32295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "60881:92:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32296,
                        "nodeType": "ExpressionStatement",
                        "src": "60881:92:63"
                      }
                    ]
                  },
                  "id": 32298,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "60808:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32284,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32277,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "60820:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32298,
                        "src": "60812:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32276,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "60812:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32279,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "60832:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32298,
                        "src": "60824:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32278,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "60824:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32281,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "60841:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32298,
                        "src": "60836:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 32280,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "60836:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32283,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "60859:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32298,
                        "src": "60845:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 32282,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "60845:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "60811:51:63"
                  },
                  "returnParameters": {
                    "id": 32285,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "60877:0:63"
                  },
                  "scope": 32437,
                  "src": "60799:178:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32320,
                    "nodeType": "Block",
                    "src": "61049:98:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c626f6f6c2c626f6f6c29",
                                  "id": 32312,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "61093:32:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_2cd4134aedbc2cd722f2b9715dc3acb74b16b253590361dd98a4d6cb66119b65",
                                    "typeString": "literal_string \"log(address,address,bool,bool)\""
                                  },
                                  "value": "log(address,address,bool,bool)"
                                },
                                {
                                  "id": 32313,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32300,
                                  "src": "61127:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32314,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32302,
                                  "src": "61131:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32315,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32304,
                                  "src": "61135:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 32316,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32306,
                                  "src": "61139:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_2cd4134aedbc2cd722f2b9715dc3acb74b16b253590361dd98a4d6cb66119b65",
                                    "typeString": "literal_string \"log(address,address,bool,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 32310,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "61069:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 32311,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "61069:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 32317,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "61069:73:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32309,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "61053:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 32318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "61053:90:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32319,
                        "nodeType": "ExpressionStatement",
                        "src": "61053:90:63"
                      }
                    ]
                  },
                  "id": 32321,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "60989:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32307,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32300,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "61001:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32321,
                        "src": "60993:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32299,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "60993:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32302,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "61013:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32321,
                        "src": "61005:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32301,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "61005:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32304,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "61022:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32321,
                        "src": "61017:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 32303,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "61017:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32306,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "61031:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32321,
                        "src": "61026:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 32305,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "61026:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "60992:42:63"
                  },
                  "returnParameters": {
                    "id": 32308,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "61049:0:63"
                  },
                  "scope": 32437,
                  "src": "60980:167:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32343,
                    "nodeType": "Block",
                    "src": "61222:101:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c626f6f6c2c6164647265737329",
                                  "id": 32335,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "61266:35:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_9f1bc36e6c1a1385bfe3a230338e478ee5447b81d25d35962aff021b2c578b9c",
                                    "typeString": "literal_string \"log(address,address,bool,address)\""
                                  },
                                  "value": "log(address,address,bool,address)"
                                },
                                {
                                  "id": 32336,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32323,
                                  "src": "61303:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32337,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32325,
                                  "src": "61307:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32338,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32327,
                                  "src": "61311:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 32339,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32329,
                                  "src": "61315:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_9f1bc36e6c1a1385bfe3a230338e478ee5447b81d25d35962aff021b2c578b9c",
                                    "typeString": "literal_string \"log(address,address,bool,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 32333,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "61242:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 32334,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "61242:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 32340,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "61242:76:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32332,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "61226:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 32341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "61226:93:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32342,
                        "nodeType": "ExpressionStatement",
                        "src": "61226:93:63"
                      }
                    ]
                  },
                  "id": 32344,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "61159:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32330,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32323,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "61171:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32344,
                        "src": "61163:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32322,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "61163:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32325,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "61183:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32344,
                        "src": "61175:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32324,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "61175:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32327,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "61192:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32344,
                        "src": "61187:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 32326,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "61187:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32329,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "61204:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32344,
                        "src": "61196:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32328,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "61196:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "61162:45:63"
                  },
                  "returnParameters": {
                    "id": 32331,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "61222:0:63"
                  },
                  "scope": 32437,
                  "src": "61150:173:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32366,
                    "nodeType": "Block",
                    "src": "61398:101:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c616464726573732c75696e7429",
                                  "id": 32358,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "61442:35:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_ed5eac8706392442fff9f76d5de4d50b9cc22387f3f19d447470771094406028",
                                    "typeString": "literal_string \"log(address,address,address,uint)\""
                                  },
                                  "value": "log(address,address,address,uint)"
                                },
                                {
                                  "id": 32359,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32346,
                                  "src": "61479:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32360,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32348,
                                  "src": "61483:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32361,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32350,
                                  "src": "61487:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32362,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32352,
                                  "src": "61491:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_ed5eac8706392442fff9f76d5de4d50b9cc22387f3f19d447470771094406028",
                                    "typeString": "literal_string \"log(address,address,address,uint)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 32356,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "61418:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 32357,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "61418:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 32363,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "61418:76:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32355,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "61402:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 32364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "61402:93:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32365,
                        "nodeType": "ExpressionStatement",
                        "src": "61402:93:63"
                      }
                    ]
                  },
                  "id": 32367,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "61335:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32353,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32346,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "61347:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32367,
                        "src": "61339:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32345,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "61339:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32348,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "61359:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32367,
                        "src": "61351:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32347,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "61351:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32350,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "61371:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32367,
                        "src": "61363:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32349,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "61363:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32352,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "61380:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32367,
                        "src": "61375:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 32351,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "61375:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "61338:45:63"
                  },
                  "returnParameters": {
                    "id": 32354,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "61398:0:63"
                  },
                  "scope": 32437,
                  "src": "61326:173:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32389,
                    "nodeType": "Block",
                    "src": "61583:103:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c616464726573732c737472696e6729",
                                  "id": 32381,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "61627:37:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_f808da2086fed855c3e15d9dbfed3b17a93ed9a59947aae6ab05b7e18576f025",
                                    "typeString": "literal_string \"log(address,address,address,string)\""
                                  },
                                  "value": "log(address,address,address,string)"
                                },
                                {
                                  "id": 32382,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32369,
                                  "src": "61666:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32383,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32371,
                                  "src": "61670:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32384,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32373,
                                  "src": "61674:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32385,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32375,
                                  "src": "61678:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_f808da2086fed855c3e15d9dbfed3b17a93ed9a59947aae6ab05b7e18576f025",
                                    "typeString": "literal_string \"log(address,address,address,string)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 32379,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "61603:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 32380,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "61603:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 32386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "61603:78:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32378,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "61587:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 32387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "61587:95:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32388,
                        "nodeType": "ExpressionStatement",
                        "src": "61587:95:63"
                      }
                    ]
                  },
                  "id": 32390,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "61511:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32376,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32369,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "61523:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32390,
                        "src": "61515:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32368,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "61515:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32371,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "61535:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32390,
                        "src": "61527:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32370,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "61527:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32373,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "61547:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32390,
                        "src": "61539:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32372,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "61539:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32375,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "61565:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32390,
                        "src": "61551:16:63",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 32374,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "61551:6:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "61514:54:63"
                  },
                  "returnParameters": {
                    "id": 32377,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "61583:0:63"
                  },
                  "scope": 32437,
                  "src": "61502:184:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32412,
                    "nodeType": "Block",
                    "src": "61761:101:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c616464726573732c626f6f6c29",
                                  "id": 32404,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "61805:35:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_0e378994a4cd2663acfd73a7ad4e09d196e4fb7ee05b7cdf0708eb30271e2afb",
                                    "typeString": "literal_string \"log(address,address,address,bool)\""
                                  },
                                  "value": "log(address,address,address,bool)"
                                },
                                {
                                  "id": 32405,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32392,
                                  "src": "61842:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32406,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32394,
                                  "src": "61846:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32407,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32396,
                                  "src": "61850:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32408,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32398,
                                  "src": "61854:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_0e378994a4cd2663acfd73a7ad4e09d196e4fb7ee05b7cdf0708eb30271e2afb",
                                    "typeString": "literal_string \"log(address,address,address,bool)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "expression": {
                                  "id": 32402,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "61781:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 32403,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "61781:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 32409,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "61781:76:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32401,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "61765:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 32410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "61765:93:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32411,
                        "nodeType": "ExpressionStatement",
                        "src": "61765:93:63"
                      }
                    ]
                  },
                  "id": 32413,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "61698:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32399,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32392,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "61710:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32413,
                        "src": "61702:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32391,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "61702:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32394,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "61722:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32413,
                        "src": "61714:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32393,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "61714:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32396,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "61734:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32413,
                        "src": "61726:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32395,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "61726:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32398,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "61743:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32413,
                        "src": "61738:7:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 32397,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "61738:4:63",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "61701:45:63"
                  },
                  "returnParameters": {
                    "id": 32400,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "61761:0:63"
                  },
                  "scope": 32437,
                  "src": "61689:173:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 32435,
                    "nodeType": "Block",
                    "src": "61940:104:63",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "6c6f6728616464726573732c616464726573732c616464726573732c6164647265737329",
                                  "id": 32427,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "61984:38:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_665bf1345e006aa321c0b6b71bed55ce0d6cdd812632f8c43114f62c55ffa0b5",
                                    "typeString": "literal_string \"log(address,address,address,address)\""
                                  },
                                  "value": "log(address,address,address,address)"
                                },
                                {
                                  "id": 32428,
                                  "name": "p0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32415,
                                  "src": "62024:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32429,
                                  "name": "p1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32417,
                                  "src": "62028:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32430,
                                  "name": "p2",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32419,
                                  "src": "62032:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 32431,
                                  "name": "p3",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 32421,
                                  "src": "62036:2:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_665bf1345e006aa321c0b6b71bed55ce0d6cdd812632f8c43114f62c55ffa0b5",
                                    "typeString": "literal_string \"log(address,address,address,address)\""
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 32425,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "61960:3:63",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 32426,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSignature",
                                "nodeType": "MemberAccess",
                                "src": "61960:23:63",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (string memory) pure returns (bytes memory)"
                                }
                              },
                              "id": 32432,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "61960:79:63",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 32424,
                            "name": "_sendLogPayload",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24397,
                            "src": "61944:15:63",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory) view"
                            }
                          },
                          "id": 32433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "61944:96:63",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 32434,
                        "nodeType": "ExpressionStatement",
                        "src": "61944:96:63"
                      }
                    ]
                  },
                  "id": 32436,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "log",
                  "nameLocation": "61874:3:63",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 32422,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 32415,
                        "mutability": "mutable",
                        "name": "p0",
                        "nameLocation": "61886:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32436,
                        "src": "61878:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32414,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "61878:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32417,
                        "mutability": "mutable",
                        "name": "p1",
                        "nameLocation": "61898:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32436,
                        "src": "61890:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32416,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "61890:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32419,
                        "mutability": "mutable",
                        "name": "p2",
                        "nameLocation": "61910:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32436,
                        "src": "61902:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32418,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "61902:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 32421,
                        "mutability": "mutable",
                        "name": "p3",
                        "nameLocation": "61922:2:63",
                        "nodeType": "VariableDeclaration",
                        "scope": 32436,
                        "src": "61914:10:63",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 32420,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "61914:7:63",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "61877:48:63"
                  },
                  "returnParameters": {
                    "id": 32423,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "61940:0:63"
                  },
                  "scope": 32437,
                  "src": "61865:179:63",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 32438,
              "src": "67:61980:63",
              "usedErrors": []
            }
          ],
          "src": "32:62016:63"
        },
        "id": 63
      }
    }
  }
}
